const packageJson = require('./package');

const ignoreList = [
  /^\/\.idea($|\/)/,
  /^\/\.vscode($|\/)/,

  /^\/\.nyc_output($|\/)/,
  /^\/declarations($|\/)/,
  /^\/mocks($|\/)/,
  /^\/templates($|\/)/,
  /^\/test-paths($|\/)/,
  /^\/types($|\/)/,
  /^\/workspace($|\/)/,

  /^\/\.editorconfig/,
  /^\/\.eslintignore/,
  /^\/\.eslintrc\.json/,
  /^\/\.gitignore/,
  /^\/\.mocharc\.yml/,
  /^\/\.nycrc\.yml/,
  /^\/\.prettierrc\.yml/,
  /^\/buildfile\.js/,
  /^\/CONTRIBUTING\.md/,
  /^\/electron-version\.js/,
  /^\/forge\.config\.js/,
  /^\/ormconfig\.yml/,
  /^\/package-lock\.json/,
  /^\/tsconfig\.json/,
  /^\/webpack\.config\.js/,

  /^\/node_modules\/\.cache($|\/)/,
  // test and mock files:
  /^.*\.(spec|mock)\.(ts|js(\.map)?)/,
  /^\/src\/.*\/test\/.*$/,
  // original typescript source and generated source map files:
  /^\/src\/.*\.(ts|js\.map)/,
  /^\/src\/.*\.eslintrc\.json/,
];

const name = packageJson.productName;

if(name !== 'Renai') {
  throw new TypeError(`The product name "${name}" in package.json is not "Renai"! Change it before building but do not commit it.`)
}

module.exports = {
  packagerConfig: {
    icon: 'resources/icon',
    ignore: ignoreList,
    name: name,
  },
  electronRebuildConfig: {
    force: true,
  },
  makers: [
    {
      name: '@electron-forge/maker-squirrel',
      config: {
        name: name,
      },
    },
  ],
};
