react-native-builder-bob 0.40.6 → 0.40.7

This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
package/babel-config.js CHANGED
@@ -14,7 +14,7 @@ const { loadConfig } = require('./lib/utils/loadConfig');
14
14
  * @param {object} options.pkg Content of package.json of the library
15
15
  * @returns {import('@babel/core').TransformOptions} Babel configuration
16
16
  */
17
- const getConfig = (defaultConfig, { root, pkg }) => {
17
+ const getConfig = (defaultConfig, { root }) => {
18
18
  const result = loadConfig(root);
19
19
 
20
20
  if (result == null) {
@@ -33,20 +33,6 @@ const getConfig = (defaultConfig, { root, pkg }) => {
33
33
  ...defaultConfig,
34
34
  overrides: [
35
35
  ...(defaultConfig.overrides == null ? [] : defaultConfig.overrides),
36
- {
37
- exclude: /\/node_modules\//,
38
- plugins: [
39
- [
40
- require.resolve('babel-plugin-module-resolver'),
41
- {
42
- extensions: ['.tsx', '.ts', '.jsx', '.js', '.json'],
43
- alias: {
44
- [pkg.name]: path.join(root, pkg.source),
45
- },
46
- },
47
- ],
48
- ],
49
- },
50
36
  {
51
37
  include: path.join(root, source),
52
38
  presets: [
package/babel-preset.js CHANGED
@@ -50,10 +50,14 @@ module.exports = function (api, options, cwd) {
50
50
  },
51
51
  ],
52
52
  require.resolve('@babel/preset-typescript'),
53
- require.resolve('@babel/preset-flow'),
54
53
  ],
55
54
  plugins: [
56
55
  require.resolve('@babel/plugin-transform-strict-mode'),
56
+ [
57
+ require.resolve('babel-plugin-syntax-hermes-parser'),
58
+ { parseLangTypes: 'flow' },
59
+ ],
60
+ require.resolve('@babel/plugin-transform-flow-strip-types'),
57
61
  [
58
62
  require.resolve('./lib/babel'),
59
63
  {
@@ -1,11 +1,12 @@
1
1
  "use strict";
2
2
 
3
- var _globals = require("@jest/globals");
3
+ var _vitest = require("vitest");
4
4
  var _core = require("@babel/core");
5
5
  var _nodeFs = _interopRequireDefault(require("node:fs"));
6
6
  var _nodePath = _interopRequireDefault(require("node:path"));
7
+ var _babel = _interopRequireDefault(require("../babel"));
7
8
  function _interopRequireDefault(e) { return e && e.__esModule ? e : { default: e }; }
8
- _globals.test.each(['imports', 'exports'])(`adds extension to %s`, async name => {
9
+ _vitest.test.each(['imports', 'exports'])(`adds extension to %s`, async name => {
9
10
  const filepath = _nodePath.default.resolve(__dirname, `../__fixtures__/project/code/$${name}-input.ts`);
10
11
  const result = await (0, _core.transformFileAsync)(filepath, {
11
12
  caller: {
@@ -17,11 +18,11 @@ _globals.test.each(['imports', 'exports'])(`adds extension to %s`, async name =>
17
18
  },
18
19
  configFile: false,
19
20
  babelrc: false,
20
- plugins: ['@babel/plugin-syntax-typescript', [require.resolve('../babel.ts'), {
21
+ plugins: ['@babel/plugin-syntax-typescript', [_babel.default, {
21
22
  extension: 'mjs'
22
23
  }]]
23
24
  });
24
25
  const expected = await _nodeFs.default.promises.readFile(_nodePath.default.resolve(__dirname, `../__fixtures__/project/code/$${name}-output.ts`), 'utf8');
25
- (0, _globals.expect)(result?.code).toEqual(expected.trim());
26
+ (0, _vitest.expect)(result?.code).toEqual(expected.trim());
26
27
  });
27
28
  //# sourceMappingURL=babel.test.js.map
@@ -1 +1 @@
1
- {"version":3,"file":"babel.test.js","names":["_globals","require","_core","_nodeFs","_interopRequireDefault","_nodePath","e","__esModule","default","test","each","name","filepath","path","resolve","__dirname","result","transformFileAsync","caller","supportsStaticESM","rewriteImportExtensions","jsxRuntime","codegenEnabled","configFile","babelrc","plugins","extension","expected","fs","promises","readFile","expect","code","toEqual","trim"],"sources":["../../src/__tests__/babel.test.ts"],"sourcesContent":["import { expect, test } from '@jest/globals';\nimport { transformFileAsync } from '@babel/core';\nimport fs from 'node:fs';\nimport path from 'node:path';\n\ntest.each(['imports', 'exports'])(`adds extension to %s`, async (name) => {\n const filepath = path.resolve(\n __dirname,\n `../__fixtures__/project/code/$${name}-input.ts`\n );\n\n const result = await transformFileAsync(filepath, {\n caller: {\n name: 'test',\n supportsStaticESM: false,\n rewriteImportExtensions: true,\n jsxRuntime: 'automatic',\n codegenEnabled: true,\n },\n configFile: false,\n babelrc: false,\n plugins: [\n '@babel/plugin-syntax-typescript',\n [require.resolve('../babel.ts'), { extension: 'mjs' }],\n ],\n });\n\n const expected = await fs.promises.readFile(\n path.resolve(__dirname, `../__fixtures__/project/code/$${name}-output.ts`),\n 'utf8'\n );\n\n expect(result?.code).toEqual(expected.trim());\n});\n"],"mappings":";;AAAA,IAAAA,QAAA,GAAAC,OAAA;AACA,IAAAC,KAAA,GAAAD,OAAA;AACA,IAAAE,OAAA,GAAAC,sBAAA,CAAAH,OAAA;AACA,IAAAI,SAAA,GAAAD,sBAAA,CAAAH,OAAA;AAA6B,SAAAG,uBAAAE,CAAA,WAAAA,CAAA,IAAAA,CAAA,CAAAC,UAAA,GAAAD,CAAA,KAAAE,OAAA,EAAAF,CAAA;AAE7BG,aAAI,CAACC,IAAI,CAAC,CAAC,SAAS,EAAE,SAAS,CAAC,CAAC,CAAC,sBAAsB,EAAE,MAAOC,IAAI,IAAK;EACxE,MAAMC,QAAQ,GAAGC,iBAAI,CAACC,OAAO,CAC3BC,SAAS,EACT,iCAAiCJ,IAAI,WACvC,CAAC;EAED,MAAMK,MAAM,GAAG,MAAM,IAAAC,wBAAkB,EAACL,QAAQ,EAAE;IAChDM,MAAM,EAAE;MACNP,IAAI,EAAE,MAAM;MACZQ,iBAAiB,EAAE,KAAK;MACxBC,uBAAuB,EAAE,IAAI;MAC7BC,UAAU,EAAE,WAAW;MACvBC,cAAc,EAAE;IAClB,CAAC;IACDC,UAAU,EAAE,KAAK;IACjBC,OAAO,EAAE,KAAK;IACdC,OAAO,EAAE,CACP,iCAAiC,EACjC,CAACxB,OAAO,CAACa,OAAO,CAAC,aAAa,CAAC,EAAE;MAAEY,SAAS,EAAE;IAAM,CAAC,CAAC;EAE1D,CAAC,CAAC;EAEF,MAAMC,QAAQ,GAAG,MAAMC,eAAE,CAACC,QAAQ,CAACC,QAAQ,CACzCjB,iBAAI,CAACC,OAAO,CAACC,SAAS,EAAE,iCAAiCJ,IAAI,YAAY,CAAC,EAC1E,MACF,CAAC;EAED,IAAAoB,eAAM,EAACf,MAAM,EAAEgB,IAAI,CAAC,CAACC,OAAO,CAACN,QAAQ,CAACO,IAAI,CAAC,CAAC,CAAC;AAC/C,CAAC,CAAC","ignoreList":[]}
1
+ {"version":3,"file":"babel.test.js","names":["_vitest","require","_core","_nodeFs","_interopRequireDefault","_nodePath","_babel","e","__esModule","default","test","each","name","filepath","path","resolve","__dirname","result","transformFileAsync","caller","supportsStaticESM","rewriteImportExtensions","jsxRuntime","codegenEnabled","configFile","babelrc","plugins","plugin","extension","expected","fs","promises","readFile","expect","code","toEqual","trim"],"sources":["../../src/__tests__/babel.test.ts"],"sourcesContent":["import { expect, test } from 'vitest';\nimport { transformFileAsync } from '@babel/core';\nimport fs from 'node:fs';\nimport path from 'node:path';\nimport plugin from '../babel';\n\ntest.each(['imports', 'exports'])(`adds extension to %s`, async (name) => {\n const filepath = path.resolve(\n __dirname,\n `../__fixtures__/project/code/$${name}-input.ts`\n );\n\n const result = await transformFileAsync(filepath, {\n caller: {\n name: 'test',\n supportsStaticESM: false,\n rewriteImportExtensions: true,\n jsxRuntime: 'automatic',\n codegenEnabled: true,\n },\n configFile: false,\n babelrc: false,\n plugins: [\n '@babel/plugin-syntax-typescript',\n [plugin, { extension: 'mjs' }],\n ],\n });\n\n const expected = await fs.promises.readFile(\n path.resolve(__dirname, `../__fixtures__/project/code/$${name}-output.ts`),\n 'utf8'\n );\n\n expect(result?.code).toEqual(expected.trim());\n});\n"],"mappings":";;AAAA,IAAAA,OAAA,GAAAC,OAAA;AACA,IAAAC,KAAA,GAAAD,OAAA;AACA,IAAAE,OAAA,GAAAC,sBAAA,CAAAH,OAAA;AACA,IAAAI,SAAA,GAAAD,sBAAA,CAAAH,OAAA;AACA,IAAAK,MAAA,GAAAF,sBAAA,CAAAH,OAAA;AAA8B,SAAAG,uBAAAG,CAAA,WAAAA,CAAA,IAAAA,CAAA,CAAAC,UAAA,GAAAD,CAAA,KAAAE,OAAA,EAAAF,CAAA;AAE9BG,YAAI,CAACC,IAAI,CAAC,CAAC,SAAS,EAAE,SAAS,CAAC,CAAC,CAAC,sBAAsB,EAAE,MAAOC,IAAI,IAAK;EACxE,MAAMC,QAAQ,GAAGC,iBAAI,CAACC,OAAO,CAC3BC,SAAS,EACT,iCAAiCJ,IAAI,WACvC,CAAC;EAED,MAAMK,MAAM,GAAG,MAAM,IAAAC,wBAAkB,EAACL,QAAQ,EAAE;IAChDM,MAAM,EAAE;MACNP,IAAI,EAAE,MAAM;MACZQ,iBAAiB,EAAE,KAAK;MACxBC,uBAAuB,EAAE,IAAI;MAC7BC,UAAU,EAAE,WAAW;MACvBC,cAAc,EAAE;IAClB,CAAC;IACDC,UAAU,EAAE,KAAK;IACjBC,OAAO,EAAE,KAAK;IACdC,OAAO,EAAE,CACP,iCAAiC,EACjC,CAACC,cAAM,EAAE;MAAEC,SAAS,EAAE;IAAM,CAAC,CAAC;EAElC,CAAC,CAAC;EAEF,MAAMC,QAAQ,GAAG,MAAMC,eAAE,CAACC,QAAQ,CAACC,QAAQ,CACzClB,iBAAI,CAACC,OAAO,CAACC,SAAS,EAAE,iCAAiCJ,IAAI,YAAY,CAAC,EAC1E,MACF,CAAC;EAED,IAAAqB,cAAM,EAAChB,MAAM,EAAEiB,IAAI,CAAC,CAACC,OAAO,CAACN,QAAQ,CAACO,IAAI,CAAC,CAAC,CAAC;AAC/C,CAAC,CAAC","ignoreList":[]}
@@ -1,15 +1,17 @@
1
1
  "use strict";
2
2
 
3
- var _globals = require("@jest/globals");
3
+ var _vitest = require("vitest");
4
4
  var _fsExtra = require("fs-extra");
5
5
  var _mockFs = _interopRequireDefault(require("mock-fs"));
6
6
  var _mockStdin = require("mock-stdin");
7
- var _path = require("path");
7
+ var _nodePath = require("node:path");
8
8
  var _init = require("../init");
9
9
  function _interopRequireDefault(e) { return e && e.__esModule ? e : { default: e }; }
10
- _globals.jest.mock('../../package.json', () => ({
11
- name: 'react-native-builder-bob',
12
- version: '0.5.0'
10
+ _vitest.vi.mock('../../package.json', () => ({
11
+ default: {
12
+ name: 'react-native-builder-bob',
13
+ version: '0.5.0'
14
+ }
13
15
  }));
14
16
  let io;
15
17
  const root = '/path/to/library';
@@ -33,7 +35,7 @@ const waitFor = async callback => {
33
35
  }, interval);
34
36
  });
35
37
  };
36
- (0, _globals.beforeEach)(() => {
38
+ (0, _vitest.beforeEach)(() => {
37
39
  io = (0, _mockStdin.stdin)();
38
40
  (0, _mockFs.default)({
39
41
  [root]: {
@@ -47,13 +49,13 @@ const waitFor = async callback => {
47
49
  }
48
50
  });
49
51
  });
50
- (0, _globals.afterEach)(() => {
52
+ (0, _vitest.afterEach)(() => {
51
53
  io?.restore();
52
54
  _mockFs.default.restore();
53
- _globals.jest.restoreAllMocks();
55
+ _vitest.vi.restoreAllMocks();
54
56
  });
55
- (0, _globals.test)('initializes the configuration', async () => {
56
- _globals.jest.spyOn(process.stdout, 'write').mockImplementation(() => true);
57
+ (0, _vitest.test)('initializes the configuration', async () => {
58
+ _vitest.vi.spyOn(process.stdout, 'write').mockImplementation(() => true);
57
59
  process.chdir(root);
58
60
  const run = async () => {
59
61
  await waitFor(() => {
@@ -65,18 +67,18 @@ const waitFor = async callback => {
65
67
  io?.send('y');
66
68
  }
67
69
  });
68
- await waitFor(() => (0, _globals.expect)(process.stdout.write).toHaveBeenLastCalledWith(_globals.expect.stringMatching('Where are your source files?')));
70
+ await waitFor(() => (0, _vitest.expect)(process.stdout.write).toHaveBeenLastCalledWith(_vitest.expect.stringMatching('Where are your source files?')));
69
71
  io?.send(enter);
70
- await waitFor(() => (0, _globals.expect)(process.stdout.write).toHaveBeenLastCalledWith(_globals.expect.stringMatching('Where do you want to generate the output files?')));
72
+ await waitFor(() => (0, _vitest.expect)(process.stdout.write).toHaveBeenLastCalledWith(_vitest.expect.stringMatching('Where do you want to generate the output files?')));
71
73
  io?.send(enter);
72
- await waitFor(() => (0, _globals.expect)(process.stdout.write).toHaveBeenLastCalledWith(_globals.expect.stringMatching('Which targets do you want to build?')));
74
+ await waitFor(() => (0, _vitest.expect)(process.stdout.write).toHaveBeenLastCalledWith(_vitest.expect.stringMatching('Which targets do you want to build?')));
73
75
  io?.send(enter);
74
- await waitFor(() => (0, _globals.expect)(process.stdout.write).toHaveBeenLastCalledWith(_globals.expect.stringMatching("You have enabled 'typescript' compilation, but we couldn't find a 'tsconfig.json' in project root")));
76
+ await waitFor(() => (0, _vitest.expect)(process.stdout.write).toHaveBeenLastCalledWith(_vitest.expect.stringMatching("You have enabled 'typescript' compilation, but we couldn't find a 'tsconfig.json' in project root")));
75
77
  io?.send(enter);
76
78
  };
77
79
  await Promise.all([run(), (0, _init.init)()]);
78
- (0, _globals.expect)(process.stdout.write).toHaveBeenLastCalledWith(_globals.expect.stringMatching('configured successfully!'));
79
- (0, _globals.expect)(await (0, _fsExtra.readFile)((0, _path.join)(root, 'package.json'), 'utf8')).toMatchSnapshot();
80
- (0, _globals.expect)(await (0, _fsExtra.readFile)((0, _path.join)(root, 'tsconfig.json'), 'utf8')).toMatchSnapshot();
80
+ (0, _vitest.expect)(process.stdout.write).toHaveBeenLastCalledWith(_vitest.expect.stringMatching('configured successfully!'));
81
+ (0, _vitest.expect)(await (0, _fsExtra.readFile)((0, _nodePath.join)(root, 'package.json'), 'utf8')).toMatchSnapshot();
82
+ (0, _vitest.expect)(await (0, _fsExtra.readFile)((0, _nodePath.join)(root, 'tsconfig.json'), 'utf8')).toMatchSnapshot();
81
83
  });
82
84
  //# sourceMappingURL=init.test.js.map
@@ -1 +1 @@
1
- {"version":3,"file":"init.test.js","names":["_globals","require","_fsExtra","_mockFs","_interopRequireDefault","_mockStdin","_path","_init","e","__esModule","default","jest","mock","name","version","io","root","enter","waitFor","callback","interval","timeout","Promise","resolve","reject","intervalId","setInterval","clearInterval","undefined","error","beforeEach","stdin","mockFs","JSON","stringify","afterEach","restore","restoreAllMocks","test","spyOn","process","stdout","mockImplementation","chdir","run","lastCall","write","Error","String","send","expect","toHaveBeenLastCalledWith","stringMatching","all","init","readFile","join","toMatchSnapshot"],"sources":["../../src/__tests__/init.test.ts"],"sourcesContent":["import { afterEach, beforeEach, expect, test, jest } from '@jest/globals';\nimport { readFile } from 'fs-extra';\nimport mockFs from 'mock-fs';\nimport { stdin } from 'mock-stdin';\nimport { join } from 'path';\nimport { init } from '../init';\n\njest.mock('../../package.json', () => ({\n name: 'react-native-builder-bob',\n version: '0.5.0',\n}));\n\nlet io: ReturnType<typeof stdin> | undefined;\n\nconst root = '/path/to/library';\n\nconst enter = '\\x0D';\n\nconst waitFor = async (callback: () => void) => {\n const interval = 10;\n\n let timeout = 50;\n\n return new Promise((resolve, reject) => {\n const intervalId = setInterval(() => {\n try {\n callback();\n clearInterval(intervalId);\n resolve(undefined);\n } catch (error) {\n if (timeout <= 0) {\n clearInterval(intervalId);\n reject(error);\n }\n\n timeout -= interval;\n }\n }, interval);\n });\n};\n\nbeforeEach(() => {\n io = stdin();\n\n mockFs({\n [root]: {\n 'package.json': JSON.stringify({\n name: 'library',\n version: '1.0.0',\n }),\n 'src': {\n 'index.ts': \"export default 'hello world';\",\n },\n },\n });\n});\n\nafterEach(() => {\n io?.restore();\n mockFs.restore();\n jest.restoreAllMocks();\n});\n\ntest('initializes the configuration', async () => {\n jest.spyOn(process.stdout, 'write').mockImplementation(() => true);\n\n process.chdir(root);\n\n const run = async () => {\n await waitFor(() => {\n const lastCall = (process.stdout.write as jest.Mock).mock.lastCall;\n\n if (lastCall == null) {\n throw new Error('No output');\n }\n\n if (/The working directory is not clean/.test(String(lastCall[0]))) {\n io?.send('y');\n }\n });\n\n await waitFor(() =>\n expect(process.stdout.write).toHaveBeenLastCalledWith(\n expect.stringMatching('Where are your source files?')\n )\n );\n\n io?.send(enter);\n\n await waitFor(() =>\n expect(process.stdout.write).toHaveBeenLastCalledWith(\n expect.stringMatching('Where do you want to generate the output files?')\n )\n );\n\n io?.send(enter);\n\n await waitFor(() =>\n expect(process.stdout.write).toHaveBeenLastCalledWith(\n expect.stringMatching('Which targets do you want to build?')\n )\n );\n\n io?.send(enter);\n\n await waitFor(() =>\n expect(process.stdout.write).toHaveBeenLastCalledWith(\n expect.stringMatching(\n \"You have enabled 'typescript' compilation, but we couldn't find a 'tsconfig.json' in project root\"\n )\n )\n );\n\n io?.send(enter);\n };\n\n await Promise.all([run(), init()]);\n\n expect(process.stdout.write).toHaveBeenLastCalledWith(\n expect.stringMatching('configured successfully!')\n );\n\n expect(await readFile(join(root, 'package.json'), 'utf8')).toMatchSnapshot();\n\n expect(await readFile(join(root, 'tsconfig.json'), 'utf8')).toMatchSnapshot();\n});\n"],"mappings":"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","ignoreList":[]}
1
+ {"version":3,"file":"init.test.js","names":["_vitest","require","_fsExtra","_mockFs","_interopRequireDefault","_mockStdin","_nodePath","_init","e","__esModule","default","vi","mock","name","version","io","root","enter","waitFor","callback","interval","timeout","Promise","resolve","reject","intervalId","setInterval","clearInterval","undefined","error","beforeEach","stdin","mockFs","JSON","stringify","afterEach","restore","restoreAllMocks","test","spyOn","process","stdout","mockImplementation","chdir","run","lastCall","write","Error","String","send","expect","toHaveBeenLastCalledWith","stringMatching","all","init","readFile","join","toMatchSnapshot"],"sources":["../../src/__tests__/init.test.ts"],"sourcesContent":["import { afterEach, beforeEach, expect, test, vi, type Mock } from 'vitest';\nimport { readFile } from 'fs-extra';\nimport mockFs from 'mock-fs';\nimport { stdin } from 'mock-stdin';\nimport { join } from 'node:path';\nimport { init } from '../init';\n\nvi.mock('../../package.json', () => ({\n default: {\n name: 'react-native-builder-bob',\n version: '0.5.0',\n },\n}));\n\nlet io: ReturnType<typeof stdin> | undefined;\n\nconst root = '/path/to/library';\n\nconst enter = '\\x0D';\n\nconst waitFor = async (callback: () => void) => {\n const interval = 10;\n\n let timeout = 50;\n\n return new Promise((resolve, reject) => {\n const intervalId = setInterval(() => {\n try {\n callback();\n clearInterval(intervalId);\n resolve(undefined);\n } catch (error) {\n if (timeout <= 0) {\n clearInterval(intervalId);\n reject(error);\n }\n\n timeout -= interval;\n }\n }, interval);\n });\n};\n\nbeforeEach(() => {\n io = stdin();\n\n mockFs({\n [root]: {\n 'package.json': JSON.stringify({\n name: 'library',\n version: '1.0.0',\n }),\n 'src': {\n 'index.ts': \"export default 'hello world';\",\n },\n },\n });\n});\n\nafterEach(() => {\n io?.restore();\n mockFs.restore();\n vi.restoreAllMocks();\n});\n\ntest('initializes the configuration', async () => {\n vi.spyOn(process.stdout, 'write').mockImplementation(() => true);\n\n process.chdir(root);\n\n const run = async () => {\n await waitFor(() => {\n const lastCall = (process.stdout.write as Mock).mock.lastCall;\n\n if (lastCall == null) {\n throw new Error('No output');\n }\n\n if (/The working directory is not clean/.test(String(lastCall[0]))) {\n io?.send('y');\n }\n });\n\n await waitFor(() =>\n expect(process.stdout.write).toHaveBeenLastCalledWith(\n expect.stringMatching('Where are your source files?')\n )\n );\n\n io?.send(enter);\n\n await waitFor(() =>\n expect(process.stdout.write).toHaveBeenLastCalledWith(\n expect.stringMatching('Where do you want to generate the output files?')\n )\n );\n\n io?.send(enter);\n\n await waitFor(() =>\n expect(process.stdout.write).toHaveBeenLastCalledWith(\n expect.stringMatching('Which targets do you want to build?')\n )\n );\n\n io?.send(enter);\n\n await waitFor(() =>\n expect(process.stdout.write).toHaveBeenLastCalledWith(\n expect.stringMatching(\n \"You have enabled 'typescript' compilation, but we couldn't find a 'tsconfig.json' in project root\"\n )\n )\n );\n\n io?.send(enter);\n };\n\n await Promise.all([run(), init()]);\n\n expect(process.stdout.write).toHaveBeenLastCalledWith(\n expect.stringMatching('configured successfully!')\n );\n\n expect(await readFile(join(root, 'package.json'), 'utf8')).toMatchSnapshot();\n\n expect(await readFile(join(root, 'tsconfig.json'), 'utf8')).toMatchSnapshot();\n});\n"],"mappings":";;AAAA,IAAAA,OAAA,GAAAC,OAAA;AACA,IAAAC,QAAA,GAAAD,OAAA;AACA,IAAAE,OAAA,GAAAC,sBAAA,CAAAH,OAAA;AACA,IAAAI,UAAA,GAAAJ,OAAA;AACA,IAAAK,SAAA,GAAAL,OAAA;AACA,IAAAM,KAAA,GAAAN,OAAA;AAA+B,SAAAG,uBAAAI,CAAA,WAAAA,CAAA,IAAAA,CAAA,CAAAC,UAAA,GAAAD,CAAA,KAAAE,OAAA,EAAAF,CAAA;AAE/BG,UAAE,CAACC,IAAI,CAAC,oBAAoB,EAAE,OAAO;EACnCF,OAAO,EAAE;IACPG,IAAI,EAAE,0BAA0B;IAChCC,OAAO,EAAE;EACX;AACF,CAAC,CAAC,CAAC;AAEH,IAAIC,EAAwC;AAE5C,MAAMC,IAAI,GAAG,kBAAkB;AAE/B,MAAMC,KAAK,GAAG,MAAM;AAEpB,MAAMC,OAAO,GAAG,MAAOC,QAAoB,IAAK;EAC9C,MAAMC,QAAQ,GAAG,EAAE;EAEnB,IAAIC,OAAO,GAAG,EAAE;EAEhB,OAAO,IAAIC,OAAO,CAAC,CAACC,OAAO,EAAEC,MAAM,KAAK;IACtC,MAAMC,UAAU,GAAGC,WAAW,CAAC,MAAM;MACnC,IAAI;QACFP,QAAQ,CAAC,CAAC;QACVQ,aAAa,CAACF,UAAU,CAAC;QACzBF,OAAO,CAACK,SAAS,CAAC;MACpB,CAAC,CAAC,OAAOC,KAAK,EAAE;QACd,IAAIR,OAAO,IAAI,CAAC,EAAE;UAChBM,aAAa,CAACF,UAAU,CAAC;UACzBD,MAAM,CAACK,KAAK,CAAC;QACf;QAEAR,OAAO,IAAID,QAAQ;MACrB;IACF,CAAC,EAAEA,QAAQ,CAAC;EACd,CAAC,CAAC;AACJ,CAAC;AAED,IAAAU,kBAAU,EAAC,MAAM;EACff,EAAE,GAAG,IAAAgB,gBAAK,EAAC,CAAC;EAEZ,IAAAC,eAAM,EAAC;IACL,CAAChB,IAAI,GAAG;MACN,cAAc,EAAEiB,IAAI,CAACC,SAAS,CAAC;QAC7BrB,IAAI,EAAE,SAAS;QACfC,OAAO,EAAE;MACX,CAAC,CAAC;MACF,KAAK,EAAE;QACL,UAAU,EAAE;MACd;IACF;EACF,CAAC,CAAC;AACJ,CAAC,CAAC;AAEF,IAAAqB,iBAAS,EAAC,MAAM;EACdpB,EAAE,EAAEqB,OAAO,CAAC,CAAC;EACbJ,eAAM,CAACI,OAAO,CAAC,CAAC;EAChBzB,UAAE,CAAC0B,eAAe,CAAC,CAAC;AACtB,CAAC,CAAC;AAEF,IAAAC,YAAI,EAAC,+BAA+B,EAAE,YAAY;EAChD3B,UAAE,CAAC4B,KAAK,CAACC,OAAO,CAACC,MAAM,EAAE,OAAO,CAAC,CAACC,kBAAkB,CAAC,MAAM,IAAI,CAAC;EAEhEF,OAAO,CAACG,KAAK,CAAC3B,IAAI,CAAC;EAEnB,MAAM4B,GAAG,GAAG,MAAAA,CAAA,KAAY;IACtB,MAAM1B,OAAO,CAAC,MAAM;MAClB,MAAM2B,QAAQ,GAAIL,OAAO,CAACC,MAAM,CAACK,KAAK,CAAUlC,IAAI,CAACiC,QAAQ;MAE7D,IAAIA,QAAQ,IAAI,IAAI,EAAE;QACpB,MAAM,IAAIE,KAAK,CAAC,WAAW,CAAC;MAC9B;MAEA,IAAI,oCAAoC,CAACT,IAAI,CAACU,MAAM,CAACH,QAAQ,CAAC,CAAC,CAAC,CAAC,CAAC,EAAE;QAClE9B,EAAE,EAAEkC,IAAI,CAAC,GAAG,CAAC;MACf;IACF,CAAC,CAAC;IAEF,MAAM/B,OAAO,CAAC,MACZ,IAAAgC,cAAM,EAACV,OAAO,CAACC,MAAM,CAACK,KAAK,CAAC,CAACK,wBAAwB,CACnDD,cAAM,CAACE,cAAc,CAAC,8BAA8B,CACtD,CACF,CAAC;IAEDrC,EAAE,EAAEkC,IAAI,CAAChC,KAAK,CAAC;IAEf,MAAMC,OAAO,CAAC,MACZ,IAAAgC,cAAM,EAACV,OAAO,CAACC,MAAM,CAACK,KAAK,CAAC,CAACK,wBAAwB,CACnDD,cAAM,CAACE,cAAc,CAAC,iDAAiD,CACzE,CACF,CAAC;IAEDrC,EAAE,EAAEkC,IAAI,CAAChC,KAAK,CAAC;IAEf,MAAMC,OAAO,CAAC,MACZ,IAAAgC,cAAM,EAACV,OAAO,CAACC,MAAM,CAACK,KAAK,CAAC,CAACK,wBAAwB,CACnDD,cAAM,CAACE,cAAc,CAAC,qCAAqC,CAC7D,CACF,CAAC;IAEDrC,EAAE,EAAEkC,IAAI,CAAChC,KAAK,CAAC;IAEf,MAAMC,OAAO,CAAC,MACZ,IAAAgC,cAAM,EAACV,OAAO,CAACC,MAAM,CAACK,KAAK,CAAC,CAACK,wBAAwB,CACnDD,cAAM,CAACE,cAAc,CACnB,mGACF,CACF,CACF,CAAC;IAEDrC,EAAE,EAAEkC,IAAI,CAAChC,KAAK,CAAC;EACjB,CAAC;EAED,MAAMK,OAAO,CAAC+B,GAAG,CAAC,CAACT,GAAG,CAAC,CAAC,EAAE,IAAAU,UAAI,EAAC,CAAC,CAAC,CAAC;EAElC,IAAAJ,cAAM,EAACV,OAAO,CAACC,MAAM,CAACK,KAAK,CAAC,CAACK,wBAAwB,CACnDD,cAAM,CAACE,cAAc,CAAC,0BAA0B,CAClD,CAAC;EAED,IAAAF,cAAM,EAAC,MAAM,IAAAK,iBAAQ,EAAC,IAAAC,cAAI,EAACxC,IAAI,EAAE,cAAc,CAAC,EAAE,MAAM,CAAC,CAAC,CAACyC,eAAe,CAAC,CAAC;EAE5E,IAAAP,cAAM,EAAC,MAAM,IAAAK,iBAAQ,EAAC,IAAAC,cAAI,EAACxC,IAAI,EAAE,eAAe,CAAC,EAAE,MAAM,CAAC,CAAC,CAACyC,eAAe,CAAC,CAAC;AAC/E,CAAC,CAAC","ignoreList":[]}
package/lib/init.js CHANGED
@@ -11,12 +11,8 @@ var _dedent = _interopRequireDefault(require("dedent"));
11
11
  var _isGitDirty = _interopRequireDefault(require("is-git-dirty"));
12
12
  var _prompts = _interopRequireDefault(require("./utils/prompts"));
13
13
  var _loadConfig = require("./utils/loadConfig");
14
+ var _package = _interopRequireDefault(require("../package.json"));
14
15
  function _interopRequireDefault(e) { return e && e.__esModule ? e : { default: e }; }
15
- // eslint-disable-next-line @typescript-eslint/no-require-imports,import-x/no-commonjs
16
- const {
17
- name,
18
- version
19
- } = require('../package.json');
20
16
  const FLOW_PRGAMA_REGEX = /\*?\s*@(flow)\b/m;
21
17
  async function init() {
22
18
  const root = process.cwd();
@@ -39,7 +35,7 @@ async function init() {
39
35
  }
40
36
  const pkg = JSON.parse(await _fsExtra.default.readFile(projectPackagePath, 'utf-8'));
41
37
  const result = (0, _loadConfig.loadConfig)(root);
42
- if (result?.config && pkg.devDependencies && name in pkg.devDependencies) {
38
+ if (result?.config && pkg.devDependencies && _package.default.name in pkg.devDependencies) {
43
39
  const {
44
40
  shouldContinue
45
41
  } = await (0, _prompts.default)({
@@ -72,7 +68,7 @@ async function init() {
72
68
  if (!entryFile) {
73
69
  throw new Error(`Couldn't find a 'index.js'. 'index.ts' or 'index.tsx' file under '${source}'.\n Please re-run the CLI after creating it.`);
74
70
  }
75
- pkg.devDependencies = Object.fromEntries([...Object.entries(pkg.devDependencies || {}), [name, `^${version}`]].sort(([a], [b]) => a.localeCompare(b)));
71
+ pkg.devDependencies = Object.fromEntries([...Object.entries(pkg.devDependencies || {}), [_package.default.name, `^${_package.default.version}`]].sort(([a], [b]) => a.localeCompare(b)));
76
72
  const questions = [{
77
73
  type: 'text',
78
74
  name: 'output',
@@ -305,7 +301,7 @@ async function init() {
305
301
  } else {
306
302
  pkg.files = files;
307
303
  }
308
- pkg[name] = {
304
+ pkg[_package.default.name] = {
309
305
  source,
310
306
  output,
311
307
  targets: targets.map(t => {
package/lib/init.js.map CHANGED
@@ -1 +1 @@
1
- {"version":3,"file":"init.js","names":["_path","_interopRequireDefault","require","_fsExtra","_kleur","_dedent","_isGitDirty","_prompts","_loadConfig","e","__esModule","default","name","version","FLOW_PRGAMA_REGEX","init","root","process","cwd","projectPackagePath","path","resolve","isGitDirty","shouldContinue","prompts","type","message","initial","exit","fs","pathExists","Error","pkg","JSON","parse","readFile","result","loadConfig","config","devDependencies","source","validate","input","Boolean","entryFile","join","Object","fromEntries","entries","sort","a","b","localeCompare","questions","choices","title","value","selected","test","length","endsWith","push","keys","includes","output","targets","flow","target","undefined","esm","module","commonjs","types","import","tsconfig","writeJSON","compilerOptions","rootDir","allowUnreachableCode","allowUnusedLabels","esModuleInterop","forceConsistentCasingInFileNames","jsx","lib","moduleResolution","noFallthroughCasesInSwitch","noImplicitReturns","noImplicitUseStrict","noStrictGenericChecks","noUncheckedIndexedAccess","noUnusedLocals","noUnusedParameters","resolveJsonModule","skipLibCheck","strict","verbatimModuleSyntax","spaces","prepare","files","replace","exportsField","importField","requireField","exports","stringify","entryFields","main","key","entry","startsWith","remove","scripts","pkgFiles","some","file","update","filter","map","t","copyFlow","jest","modulePathIgnorePatterns","eslintIgnore","ignorefiles","ignorefile","content","split","writeFile","packageManager","stdout","write","dedent","kleur","yellow","magenta","bold","gray"],"sources":["../src/init.ts"],"sourcesContent":["import path from 'path';\nimport fs from 'fs-extra';\nimport kleur from 'kleur';\nimport dedent from 'dedent';\nimport isGitDirty from 'is-git-dirty';\nimport prompts, { type PromptObject } from './utils/prompts';\nimport { loadConfig } from './utils/loadConfig';\n\n// eslint-disable-next-line @typescript-eslint/no-require-imports,import-x/no-commonjs\nconst { name, version } = require('../package.json');\n\nconst FLOW_PRGAMA_REGEX = /\\*?\\s*@(flow)\\b/m;\n\nexport async function init() {\n const root = process.cwd();\n const projectPackagePath = path.resolve(root, 'package.json');\n\n if (isGitDirty()) {\n const { shouldContinue } = await prompts({\n type: 'confirm',\n name: 'shouldContinue',\n message: `The working directory is not clean.\\n You should commit or stash your changes before configuring bob.\\n Continue anyway?`,\n initial: false,\n });\n\n if (!shouldContinue) {\n process.exit(0);\n }\n }\n\n if (!(await fs.pathExists(projectPackagePath))) {\n throw new Error(\n `Couldn't find a 'package.json' file in '${root}'.\\n Are you in a project folder?`\n );\n }\n\n const pkg = JSON.parse(await fs.readFile(projectPackagePath, 'utf-8'));\n const result = loadConfig(root);\n\n if (result?.config && pkg.devDependencies && name in pkg.devDependencies) {\n const { shouldContinue } = await prompts({\n type: 'confirm',\n name: 'shouldContinue',\n message: `The project seems to be already configured with bob.\\n Do you want to overwrite the existing configuration?`,\n initial: false,\n });\n\n if (!shouldContinue) {\n process.exit(0);\n }\n }\n\n const { source } = await prompts({\n type: 'text',\n name: 'source',\n message: 'Where are your source files?',\n initial: 'src',\n validate: (input) => Boolean(input),\n });\n\n let entryFile;\n\n if (await fs.pathExists(path.join(root, source, 'index.js'))) {\n entryFile = 'index.js';\n } else if (await fs.pathExists(path.join(root, source, 'index.ts'))) {\n entryFile = 'index.ts';\n } else if (await fs.pathExists(path.join(root, source, 'index.tsx'))) {\n entryFile = 'index.tsx';\n }\n\n if (!entryFile) {\n throw new Error(\n `Couldn't find a 'index.js'. 'index.ts' or 'index.tsx' file under '${source}'.\\n Please re-run the CLI after creating it.`\n );\n }\n\n pkg.devDependencies = Object.fromEntries(\n [...Object.entries(pkg.devDependencies || {}), [name, `^${version}`]].sort(\n ([a], [b]) => a.localeCompare(b)\n )\n );\n\n const questions: PromptObject[] = [\n {\n type: 'text',\n name: 'output',\n message: 'Where do you want to generate the output files?',\n initial: 'lib',\n validate: (input: string) => Boolean(input),\n },\n {\n type: 'multiselect',\n name: 'targets',\n message: 'Which targets do you want to build?',\n choices: [\n {\n title: 'module - for modern setups',\n value: 'module',\n selected: true,\n },\n {\n title: 'commonjs - for legacy setups (Node.js < 20)',\n value: 'commonjs',\n selected: false,\n },\n {\n title: 'typescript - declaration files for typechecking',\n value: 'typescript',\n selected: /\\.tsx?$/.test(entryFile),\n },\n ],\n validate: (input: string) => Boolean(input.length),\n },\n ];\n\n if (\n entryFile.endsWith('.js') &&\n FLOW_PRGAMA_REGEX.test(\n await fs.readFile(path.join(root, source, entryFile), 'utf-8')\n )\n ) {\n questions.push({\n type: 'confirm',\n name: 'flow',\n message: 'Do you want to publish definitions for flow?',\n initial: Object.keys(pkg.devDependencies || {}).includes('flow-bin'),\n });\n }\n\n const { output, targets, flow } = await prompts(questions);\n\n const target =\n targets[0] === 'commonjs' || targets[0] === 'module'\n ? targets[0]\n : undefined;\n\n const entries: {\n [key in 'source' | 'commonjs' | 'module']?: string;\n } = {\n source: `./${path.join(source, entryFile)}`,\n };\n\n let esm = false;\n\n if (targets.includes('module')) {\n esm = true;\n entries.module = `./${path.join(output, 'module', 'index.js')}`;\n }\n\n if (targets.includes('commonjs')) {\n entries.commonjs = `./${path.join(output, 'commonjs', 'index.js')}`;\n }\n\n const types: {\n [key in 'require' | 'import']?: string;\n } = {};\n\n if (targets.includes('typescript')) {\n if (targets.includes('commonjs') && targets.includes('module')) {\n types.require = `./${path.join(\n output,\n 'typescript',\n 'commonjs',\n source,\n 'index.d.ts'\n )}`;\n\n types.import = `./${path.join(\n output,\n 'typescript',\n 'module',\n source,\n 'index.d.ts'\n )}`;\n } else {\n types.require = `./${path.join(\n output,\n 'typescript',\n source,\n 'index.d.ts'\n )}`;\n\n types.import = types.require;\n }\n\n if (!(await fs.pathExists(path.join(root, 'tsconfig.json')))) {\n const { tsconfig } = await prompts({\n type: 'confirm',\n name: 'tsconfig',\n message: `You have enabled 'typescript' compilation, but we couldn't find a 'tsconfig.json' in project root.\\n Generate one?`,\n initial: true,\n });\n\n if (tsconfig) {\n await fs.writeJSON(\n path.join(root, 'tsconfig.json'),\n {\n compilerOptions: {\n rootDir: '.',\n allowUnreachableCode: false,\n allowUnusedLabels: false,\n esModuleInterop: true,\n forceConsistentCasingInFileNames: true,\n jsx: 'react-jsx',\n lib: ['ESNext'],\n module: 'ESNext',\n moduleResolution: 'bundler',\n noFallthroughCasesInSwitch: true,\n noImplicitReturns: true,\n noImplicitUseStrict: false,\n noStrictGenericChecks: false,\n noUncheckedIndexedAccess: true,\n noUnusedLocals: true,\n noUnusedParameters: true,\n resolveJsonModule: true,\n skipLibCheck: true,\n strict: true,\n target: 'ESNext',\n verbatimModuleSyntax: true,\n },\n },\n { spaces: 2 }\n );\n }\n }\n }\n\n const prepare = 'bob build';\n const files = [\n source,\n output,\n '!**/__tests__',\n '!**/__fixtures__',\n '!**/__mocks__',\n ];\n\n if (esm) {\n let replace = false;\n\n const exportsField = {\n '.': {},\n './package.json': './package.json',\n };\n\n const importField = {\n ...(types.import ? { types: types.import } : null),\n ...(entries.module ? { default: entries.module } : null),\n };\n\n const requireField = {\n ...(types.require ? { types: types.require } : null),\n ...(entries.commonjs ? { default: entries.commonjs } : null),\n };\n\n if (targets.includes('commonjs') && targets.includes('module')) {\n exportsField['.'] = {\n import: importField,\n require: requireField,\n };\n } else if (targets.includes('commonjs')) {\n exportsField['.'] = requireField;\n } else if (targets.includes('module')) {\n exportsField['.'] = importField;\n }\n\n if (\n pkg.exports &&\n JSON.stringify(pkg.exports) !== JSON.stringify(exportsField)\n ) {\n replace = (\n await prompts({\n type: 'confirm',\n name: 'replace',\n message: `Your package.json has 'exports' field set.\\n Do you want to replace it?`,\n initial: true,\n })\n ).replace;\n } else {\n replace = true;\n }\n\n if (replace) {\n pkg.exports = exportsField;\n }\n }\n\n const entryFields: {\n [key in 'source' | 'main' | 'module' | 'types']?: string;\n } = {\n source: entries.source,\n };\n\n if (targets.includes('commonjs') && targets.includes('module')) {\n entryFields.main = entries.commonjs;\n entryFields.module = entries.module;\n\n if (targets.includes('typescript')) {\n entryFields.types = types.require;\n }\n } else if (targets.includes('commonjs')) {\n entryFields.main = entries.commonjs;\n\n if (targets.includes('typescript')) {\n entryFields.types = types.require;\n }\n } else if (targets.includes('module')) {\n entryFields.main = entries.module;\n\n if (targets.includes('typescript')) {\n entryFields.types = types.import;\n }\n }\n\n for (const key in entryFields) {\n const entry = entryFields[key as keyof typeof entryFields];\n\n if (pkg[key] && pkg[key] !== entry) {\n const { replace } = await prompts({\n type: 'confirm',\n name: 'replace',\n message: `Your package.json has the '${key}' field set to '${pkg[key]}'.\\n Do you want to replace it with '${entry}'?`,\n initial: true,\n });\n\n if (replace) {\n pkg[key] = entry;\n }\n } else {\n pkg[key] = entry;\n }\n }\n\n if (\n pkg['react-native'] &&\n (pkg['react-native'].startsWith(source) ||\n pkg['react-native'].startsWith(`./${source}`))\n ) {\n const { remove } = await prompts({\n type: 'confirm',\n name: 'remove',\n message: `Your package.json has the 'react-native' field pointing to source code.\\n This can cause problems when customizing babel configuration.\\n Do you want to remove it?`,\n initial: true,\n });\n\n if (remove) {\n delete pkg['react-native'];\n }\n }\n\n if (pkg.scripts?.prepare && pkg.scripts.prepare !== prepare) {\n const { replace } = await prompts({\n type: 'confirm',\n name: 'replace',\n message: `Your package.json has the 'scripts.prepare' field set to '${pkg.scripts.prepare}'.\\n Do you want to replace it with '${prepare}'?`,\n initial: true,\n });\n\n if (replace) {\n pkg.scripts.prepare = prepare;\n }\n } else {\n pkg.scripts = pkg.scripts || {};\n pkg.scripts.prepare = prepare;\n }\n\n if (pkg.files) {\n const pkgFiles = pkg.files;\n\n if (files?.some((file) => !pkgFiles.includes(file))) {\n const { update } = await prompts({\n type: 'confirm',\n name: 'update',\n message: `Your package.json already has a 'files' field.\\n Do you want to update it?`,\n initial: true,\n });\n\n if (update) {\n pkg.files = [\n ...files,\n ...pkg.files.filter((file: string) => !files.includes(file)),\n ];\n }\n }\n } else {\n pkg.files = files;\n }\n\n pkg[name] = {\n source,\n output,\n targets: targets.map((t: string) => {\n if (t === target && flow) {\n return [t, { copyFlow: true }];\n }\n\n if (t === 'commonjs' || t === 'module') {\n return [t, { esm }];\n }\n\n return t;\n }),\n };\n\n if (pkg.jest) {\n const entry = `<rootDir>/${output}/`;\n\n if (pkg.jest.modulePathIgnorePatterns) {\n const { modulePathIgnorePatterns } = pkg.jest;\n\n if (!modulePathIgnorePatterns.includes(entry)) {\n modulePathIgnorePatterns.push(entry);\n }\n } else {\n pkg.jest.modulePathIgnorePatterns = [entry];\n }\n }\n\n pkg.eslintIgnore = pkg.eslintIgnore || ['node_modules/'];\n\n if (!pkg.eslintIgnore.includes(`${output}/`)) {\n pkg.eslintIgnore.push(`${output}/`);\n }\n\n await fs.writeJSON(projectPackagePath, pkg, {\n spaces: 2,\n });\n\n const ignorefiles = [\n path.join(root, '.gitignore'),\n path.join(root, '.eslintignore'),\n ];\n\n for (const ignorefile of ignorefiles) {\n if (await fs.pathExists(ignorefile)) {\n const content = await fs.readFile(ignorefile, 'utf-8');\n\n if (!content.split('\\n').includes(`${output}/`)) {\n await fs.writeFile(\n ignorefile,\n `${content}\\n# generated by bob\\n${output}/\\n`\n );\n }\n }\n }\n\n const packageManager = (await fs.pathExists(path.join(root, 'yarn.lock')))\n ? 'yarn'\n : 'npm';\n\n process.stdout.write(\n dedent(`\n Project ${kleur.yellow(pkg.name)} configured successfully!\n\n ${kleur.magenta(\n `${kleur.bold('Perform last steps')} by running`\n )}${kleur.gray(':')}\n\n ${kleur.gray('$')} ${packageManager} install\n\n ${kleur.yellow('Good luck!')}\n `)\n );\n}\n"],"mappings":"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","ignoreList":[]}
1
+ {"version":3,"file":"init.js","names":["_path","_interopRequireDefault","require","_fsExtra","_kleur","_dedent","_isGitDirty","_prompts","_loadConfig","_package","e","__esModule","default","FLOW_PRGAMA_REGEX","init","root","process","cwd","projectPackagePath","path","resolve","isGitDirty","shouldContinue","prompts","type","name","message","initial","exit","fs","pathExists","Error","pkg","JSON","parse","readFile","result","loadConfig","config","devDependencies","pack","source","validate","input","Boolean","entryFile","join","Object","fromEntries","entries","version","sort","a","b","localeCompare","questions","choices","title","value","selected","test","length","endsWith","push","keys","includes","output","targets","flow","target","undefined","esm","module","commonjs","types","import","tsconfig","writeJSON","compilerOptions","rootDir","allowUnreachableCode","allowUnusedLabels","esModuleInterop","forceConsistentCasingInFileNames","jsx","lib","moduleResolution","noFallthroughCasesInSwitch","noImplicitReturns","noImplicitUseStrict","noStrictGenericChecks","noUncheckedIndexedAccess","noUnusedLocals","noUnusedParameters","resolveJsonModule","skipLibCheck","strict","verbatimModuleSyntax","spaces","prepare","files","replace","exportsField","importField","requireField","exports","stringify","entryFields","main","key","entry","startsWith","remove","scripts","pkgFiles","some","file","update","filter","map","t","copyFlow","jest","modulePathIgnorePatterns","eslintIgnore","ignorefiles","ignorefile","content","split","writeFile","packageManager","stdout","write","dedent","kleur","yellow","magenta","bold","gray"],"sources":["../src/init.ts"],"sourcesContent":["import path from 'path';\nimport fs from 'fs-extra';\nimport kleur from 'kleur';\nimport dedent from 'dedent';\nimport isGitDirty from 'is-git-dirty';\nimport prompts, { type PromptObject } from './utils/prompts';\nimport { loadConfig } from './utils/loadConfig';\nimport pack from '../package.json';\n\nconst FLOW_PRGAMA_REGEX = /\\*?\\s*@(flow)\\b/m;\n\nexport async function init() {\n const root = process.cwd();\n const projectPackagePath = path.resolve(root, 'package.json');\n\n if (isGitDirty()) {\n const { shouldContinue } = await prompts({\n type: 'confirm',\n name: 'shouldContinue',\n message: `The working directory is not clean.\\n You should commit or stash your changes before configuring bob.\\n Continue anyway?`,\n initial: false,\n });\n\n if (!shouldContinue) {\n process.exit(0);\n }\n }\n\n if (!(await fs.pathExists(projectPackagePath))) {\n throw new Error(\n `Couldn't find a 'package.json' file in '${root}'.\\n Are you in a project folder?`\n );\n }\n\n const pkg = JSON.parse(await fs.readFile(projectPackagePath, 'utf-8'));\n const result = loadConfig(root);\n\n if (\n result?.config &&\n pkg.devDependencies &&\n pack.name in pkg.devDependencies\n ) {\n const { shouldContinue } = await prompts({\n type: 'confirm',\n name: 'shouldContinue',\n message: `The project seems to be already configured with bob.\\n Do you want to overwrite the existing configuration?`,\n initial: false,\n });\n\n if (!shouldContinue) {\n process.exit(0);\n }\n }\n\n const { source } = await prompts({\n type: 'text',\n name: 'source',\n message: 'Where are your source files?',\n initial: 'src',\n validate: (input) => Boolean(input),\n });\n\n let entryFile;\n\n if (await fs.pathExists(path.join(root, source, 'index.js'))) {\n entryFile = 'index.js';\n } else if (await fs.pathExists(path.join(root, source, 'index.ts'))) {\n entryFile = 'index.ts';\n } else if (await fs.pathExists(path.join(root, source, 'index.tsx'))) {\n entryFile = 'index.tsx';\n }\n\n if (!entryFile) {\n throw new Error(\n `Couldn't find a 'index.js'. 'index.ts' or 'index.tsx' file under '${source}'.\\n Please re-run the CLI after creating it.`\n );\n }\n\n pkg.devDependencies = Object.fromEntries(\n [\n ...Object.entries(pkg.devDependencies || {}),\n [pack.name, `^${pack.version}`],\n ].sort(([a], [b]) => a.localeCompare(b))\n );\n\n const questions: PromptObject[] = [\n {\n type: 'text',\n name: 'output',\n message: 'Where do you want to generate the output files?',\n initial: 'lib',\n validate: (input: string) => Boolean(input),\n },\n {\n type: 'multiselect',\n name: 'targets',\n message: 'Which targets do you want to build?',\n choices: [\n {\n title: 'module - for modern setups',\n value: 'module',\n selected: true,\n },\n {\n title: 'commonjs - for legacy setups (Node.js < 20)',\n value: 'commonjs',\n selected: false,\n },\n {\n title: 'typescript - declaration files for typechecking',\n value: 'typescript',\n selected: /\\.tsx?$/.test(entryFile),\n },\n ],\n validate: (input: string) => Boolean(input.length),\n },\n ];\n\n if (\n entryFile.endsWith('.js') &&\n FLOW_PRGAMA_REGEX.test(\n await fs.readFile(path.join(root, source, entryFile), 'utf-8')\n )\n ) {\n questions.push({\n type: 'confirm',\n name: 'flow',\n message: 'Do you want to publish definitions for flow?',\n initial: Object.keys(pkg.devDependencies || {}).includes('flow-bin'),\n });\n }\n\n const { output, targets, flow } = await prompts(questions);\n\n const target =\n targets[0] === 'commonjs' || targets[0] === 'module'\n ? targets[0]\n : undefined;\n\n const entries: {\n [key in 'source' | 'commonjs' | 'module']?: string;\n } = {\n source: `./${path.join(source, entryFile)}`,\n };\n\n let esm = false;\n\n if (targets.includes('module')) {\n esm = true;\n entries.module = `./${path.join(output, 'module', 'index.js')}`;\n }\n\n if (targets.includes('commonjs')) {\n entries.commonjs = `./${path.join(output, 'commonjs', 'index.js')}`;\n }\n\n const types: {\n [key in 'require' | 'import']?: string;\n } = {};\n\n if (targets.includes('typescript')) {\n if (targets.includes('commonjs') && targets.includes('module')) {\n types.require = `./${path.join(\n output,\n 'typescript',\n 'commonjs',\n source,\n 'index.d.ts'\n )}`;\n\n types.import = `./${path.join(\n output,\n 'typescript',\n 'module',\n source,\n 'index.d.ts'\n )}`;\n } else {\n types.require = `./${path.join(\n output,\n 'typescript',\n source,\n 'index.d.ts'\n )}`;\n\n types.import = types.require;\n }\n\n if (!(await fs.pathExists(path.join(root, 'tsconfig.json')))) {\n const { tsconfig } = await prompts({\n type: 'confirm',\n name: 'tsconfig',\n message: `You have enabled 'typescript' compilation, but we couldn't find a 'tsconfig.json' in project root.\\n Generate one?`,\n initial: true,\n });\n\n if (tsconfig) {\n await fs.writeJSON(\n path.join(root, 'tsconfig.json'),\n {\n compilerOptions: {\n rootDir: '.',\n allowUnreachableCode: false,\n allowUnusedLabels: false,\n esModuleInterop: true,\n forceConsistentCasingInFileNames: true,\n jsx: 'react-jsx',\n lib: ['ESNext'],\n module: 'ESNext',\n moduleResolution: 'bundler',\n noFallthroughCasesInSwitch: true,\n noImplicitReturns: true,\n noImplicitUseStrict: false,\n noStrictGenericChecks: false,\n noUncheckedIndexedAccess: true,\n noUnusedLocals: true,\n noUnusedParameters: true,\n resolveJsonModule: true,\n skipLibCheck: true,\n strict: true,\n target: 'ESNext',\n verbatimModuleSyntax: true,\n },\n },\n { spaces: 2 }\n );\n }\n }\n }\n\n const prepare = 'bob build';\n const files = [\n source,\n output,\n '!**/__tests__',\n '!**/__fixtures__',\n '!**/__mocks__',\n ];\n\n if (esm) {\n let replace = false;\n\n const exportsField = {\n '.': {},\n './package.json': './package.json',\n };\n\n const importField = {\n ...(types.import ? { types: types.import } : null),\n ...(entries.module ? { default: entries.module } : null),\n };\n\n const requireField = {\n ...(types.require ? { types: types.require } : null),\n ...(entries.commonjs ? { default: entries.commonjs } : null),\n };\n\n if (targets.includes('commonjs') && targets.includes('module')) {\n exportsField['.'] = {\n import: importField,\n require: requireField,\n };\n } else if (targets.includes('commonjs')) {\n exportsField['.'] = requireField;\n } else if (targets.includes('module')) {\n exportsField['.'] = importField;\n }\n\n if (\n pkg.exports &&\n JSON.stringify(pkg.exports) !== JSON.stringify(exportsField)\n ) {\n replace = (\n await prompts({\n type: 'confirm',\n name: 'replace',\n message: `Your package.json has 'exports' field set.\\n Do you want to replace it?`,\n initial: true,\n })\n ).replace;\n } else {\n replace = true;\n }\n\n if (replace) {\n pkg.exports = exportsField;\n }\n }\n\n const entryFields: {\n [key in 'source' | 'main' | 'module' | 'types']?: string;\n } = {\n source: entries.source,\n };\n\n if (targets.includes('commonjs') && targets.includes('module')) {\n entryFields.main = entries.commonjs;\n entryFields.module = entries.module;\n\n if (targets.includes('typescript')) {\n entryFields.types = types.require;\n }\n } else if (targets.includes('commonjs')) {\n entryFields.main = entries.commonjs;\n\n if (targets.includes('typescript')) {\n entryFields.types = types.require;\n }\n } else if (targets.includes('module')) {\n entryFields.main = entries.module;\n\n if (targets.includes('typescript')) {\n entryFields.types = types.import;\n }\n }\n\n for (const key in entryFields) {\n const entry = entryFields[key as keyof typeof entryFields];\n\n if (pkg[key] && pkg[key] !== entry) {\n const { replace } = await prompts({\n type: 'confirm',\n name: 'replace',\n message: `Your package.json has the '${key}' field set to '${pkg[key]}'.\\n Do you want to replace it with '${entry}'?`,\n initial: true,\n });\n\n if (replace) {\n pkg[key] = entry;\n }\n } else {\n pkg[key] = entry;\n }\n }\n\n if (\n pkg['react-native'] &&\n (pkg['react-native'].startsWith(source) ||\n pkg['react-native'].startsWith(`./${source}`))\n ) {\n const { remove } = await prompts({\n type: 'confirm',\n name: 'remove',\n message: `Your package.json has the 'react-native' field pointing to source code.\\n This can cause problems when customizing babel configuration.\\n Do you want to remove it?`,\n initial: true,\n });\n\n if (remove) {\n delete pkg['react-native'];\n }\n }\n\n if (pkg.scripts?.prepare && pkg.scripts.prepare !== prepare) {\n const { replace } = await prompts({\n type: 'confirm',\n name: 'replace',\n message: `Your package.json has the 'scripts.prepare' field set to '${pkg.scripts.prepare}'.\\n Do you want to replace it with '${prepare}'?`,\n initial: true,\n });\n\n if (replace) {\n pkg.scripts.prepare = prepare;\n }\n } else {\n pkg.scripts = pkg.scripts || {};\n pkg.scripts.prepare = prepare;\n }\n\n if (pkg.files) {\n const pkgFiles = pkg.files;\n\n if (files?.some((file) => !pkgFiles.includes(file))) {\n const { update } = await prompts({\n type: 'confirm',\n name: 'update',\n message: `Your package.json already has a 'files' field.\\n Do you want to update it?`,\n initial: true,\n });\n\n if (update) {\n pkg.files = [\n ...files,\n ...pkg.files.filter((file: string) => !files.includes(file)),\n ];\n }\n }\n } else {\n pkg.files = files;\n }\n\n pkg[pack.name] = {\n source,\n output,\n targets: targets.map((t: string) => {\n if (t === target && flow) {\n return [t, { copyFlow: true }];\n }\n\n if (t === 'commonjs' || t === 'module') {\n return [t, { esm }];\n }\n\n return t;\n }),\n };\n\n if (pkg.jest) {\n const entry = `<rootDir>/${output}/`;\n\n if (pkg.jest.modulePathIgnorePatterns) {\n const { modulePathIgnorePatterns } = pkg.jest;\n\n if (!modulePathIgnorePatterns.includes(entry)) {\n modulePathIgnorePatterns.push(entry);\n }\n } else {\n pkg.jest.modulePathIgnorePatterns = [entry];\n }\n }\n\n pkg.eslintIgnore = pkg.eslintIgnore || ['node_modules/'];\n\n if (!pkg.eslintIgnore.includes(`${output}/`)) {\n pkg.eslintIgnore.push(`${output}/`);\n }\n\n await fs.writeJSON(projectPackagePath, pkg, {\n spaces: 2,\n });\n\n const ignorefiles = [\n path.join(root, '.gitignore'),\n path.join(root, '.eslintignore'),\n ];\n\n for (const ignorefile of ignorefiles) {\n if (await fs.pathExists(ignorefile)) {\n const content = await fs.readFile(ignorefile, 'utf-8');\n\n if (!content.split('\\n').includes(`${output}/`)) {\n await fs.writeFile(\n ignorefile,\n `${content}\\n# generated by bob\\n${output}/\\n`\n );\n }\n }\n }\n\n const packageManager = (await fs.pathExists(path.join(root, 'yarn.lock')))\n ? 'yarn'\n : 'npm';\n\n process.stdout.write(\n dedent(`\n Project ${kleur.yellow(pkg.name)} configured successfully!\n\n ${kleur.magenta(\n `${kleur.bold('Perform last steps')} by running`\n )}${kleur.gray(':')}\n\n ${kleur.gray('$')} ${packageManager} install\n\n ${kleur.yellow('Good luck!')}\n `)\n );\n}\n"],"mappings":"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","ignoreList":[]}
package/lib/schema.js CHANGED
@@ -10,7 +10,7 @@ const _module = {
10
10
  options: (0, _arktype.type)({
11
11
  esm: (0, _arktype.type)('boolean').default(false),
12
12
  babelrc: (0, _arktype.type)('boolean').default(false),
13
- configFile: (0, _arktype.type)('boolean').default(false),
13
+ configFile: (0, _arktype.type)('boolean | string').default(false),
14
14
  sourceMaps: (0, _arktype.type)('boolean').default(true),
15
15
  copyFlow: (0, _arktype.type)('boolean').default(false),
16
16
  jsxRuntime: (0, _arktype.type)('"automatic" | "classic"').default('automatic')
package/lib/schema.js.map CHANGED
@@ -1 +1 @@
1
- {"version":3,"file":"schema.js","names":["_arktype","require","module","name","options","type","esm","default","babelrc","configFile","sourceMaps","copyFlow","jsxRuntime","commonjs","typescript","project","tsc","codegen","custom","script","clean","target","or","config","exports","source","output","targets","array","moreThanLength","exclude","string","onDeepUndeclaredKey"],"sources":["../src/schema.ts"],"sourcesContent":["import { type } from 'arktype';\n\nconst module = {\n name: '\"module\"',\n options: type({\n esm: type('boolean').default(false),\n babelrc: type('boolean').default(false),\n configFile: type('boolean').default(false),\n sourceMaps: type('boolean').default(true),\n copyFlow: type('boolean').default(false),\n jsxRuntime: type('\"automatic\" | \"classic\"').default('automatic'),\n }),\n} as const;\n\nconst commonjs = {\n name: '\"commonjs\"',\n options: module.options,\n} as const;\n\nconst typescript = {\n name: '\"typescript\"',\n options: type({\n project: 'string?',\n tsc: 'string?',\n }),\n} as const;\n\nconst codegen = {\n name: '\"codegen\"',\n} as const;\n\nconst custom = {\n name: '\"custom\"',\n options: type({\n script: 'string',\n clean: 'string?',\n }),\n} as const;\n\n// eslint-disable-next-line @typescript-eslint/no-unused-vars\nconst target = type.or(\n commonjs.name,\n module.name,\n typescript.name,\n codegen.name,\n custom.name\n);\n\nexport const config = type({\n source: 'string',\n output: 'string',\n targets: type\n .or(\n type.or(module.name, [module.name], [module.name, module.options]),\n type.or(\n commonjs.name,\n [commonjs.name],\n [commonjs.name, commonjs.options]\n ),\n type.or(\n typescript.name,\n [typescript.name],\n [typescript.name, typescript.options]\n ),\n type.or(codegen.name, [codegen.name]),\n [custom.name, custom.options]\n )\n .array()\n .moreThanLength(0),\n exclude: type.string.default('**/{__tests__,__fixtures__,__mocks__}/**'),\n}).onDeepUndeclaredKey('reject');\n\nexport type Config = typeof config.infer;\n\nexport type Target = typeof target.infer;\n\nexport type TargetOptions<T extends Target> = T extends typeof commonjs.name\n ? typeof commonjs.options.infer\n : T extends typeof module.name\n ? typeof module.options.infer\n : T extends typeof typescript.name\n ? typeof typescript.options.infer\n : T extends typeof custom.name\n ? typeof custom.options.infer\n : T extends typeof codegen.name\n ? undefined\n : never;\n"],"mappings":";;;;;;AAAA,IAAAA,QAAA,GAAAC,OAAA;AAEA,MAAMC,OAAM,GAAG;EACbC,IAAI,EAAE,UAAU;EAChBC,OAAO,EAAE,IAAAC,aAAI,EAAC;IACZC,GAAG,EAAE,IAAAD,aAAI,EAAC,SAAS,CAAC,CAACE,OAAO,CAAC,KAAK,CAAC;IACnCC,OAAO,EAAE,IAAAH,aAAI,EAAC,SAAS,CAAC,CAACE,OAAO,CAAC,KAAK,CAAC;IACvCE,UAAU,EAAE,IAAAJ,aAAI,EAAC,SAAS,CAAC,CAACE,OAAO,CAAC,KAAK,CAAC;IAC1CG,UAAU,EAAE,IAAAL,aAAI,EAAC,SAAS,CAAC,CAACE,OAAO,CAAC,IAAI,CAAC;IACzCI,QAAQ,EAAE,IAAAN,aAAI,EAAC,SAAS,CAAC,CAACE,OAAO,CAAC,KAAK,CAAC;IACxCK,UAAU,EAAE,IAAAP,aAAI,EAAC,yBAAyB,CAAC,CAACE,OAAO,CAAC,WAAW;EACjE,CAAC;AACH,CAAU;AAEV,MAAMM,QAAQ,GAAG;EACfV,IAAI,EAAE,YAAY;EAClBC,OAAO,EAAEF,OAAM,CAACE;AAClB,CAAU;AAEV,MAAMU,UAAU,GAAG;EACjBX,IAAI,EAAE,cAAc;EACpBC,OAAO,EAAE,IAAAC,aAAI,EAAC;IACZU,OAAO,EAAE,SAAS;IAClBC,GAAG,EAAE;EACP,CAAC;AACH,CAAU;AAEV,MAAMC,OAAO,GAAG;EACdd,IAAI,EAAE;AACR,CAAU;AAEV,MAAMe,MAAM,GAAG;EACbf,IAAI,EAAE,UAAU;EAChBC,OAAO,EAAE,IAAAC,aAAI,EAAC;IACZc,MAAM,EAAE,QAAQ;IAChBC,KAAK,EAAE;EACT,CAAC;AACH,CAAU;;AAEV;AACA,MAAMC,MAAM,GAAGhB,aAAI,CAACiB,EAAE,CACpBT,QAAQ,CAACV,IAAI,EACbD,OAAM,CAACC,IAAI,EACXW,UAAU,CAACX,IAAI,EACfc,OAAO,CAACd,IAAI,EACZe,MAAM,CAACf,IACT,CAAC;AAEM,MAAMoB,MAAM,GAAAC,OAAA,CAAAD,MAAA,GAAG,IAAAlB,aAAI,EAAC;EACzBoB,MAAM,EAAE,QAAQ;EAChBC,MAAM,EAAE,QAAQ;EAChBC,OAAO,EAAEtB,aAAI,CACViB,EAAE,CACDjB,aAAI,CAACiB,EAAE,CAACpB,OAAM,CAACC,IAAI,EAAE,CAACD,OAAM,CAACC,IAAI,CAAC,EAAE,CAACD,OAAM,CAACC,IAAI,EAAED,OAAM,CAACE,OAAO,CAAC,CAAC,EAClEC,aAAI,CAACiB,EAAE,CACLT,QAAQ,CAACV,IAAI,EACb,CAACU,QAAQ,CAACV,IAAI,CAAC,EACf,CAACU,QAAQ,CAACV,IAAI,EAAEU,QAAQ,CAACT,OAAO,CAClC,CAAC,EACDC,aAAI,CAACiB,EAAE,CACLR,UAAU,CAACX,IAAI,EACf,CAACW,UAAU,CAACX,IAAI,CAAC,EACjB,CAACW,UAAU,CAACX,IAAI,EAAEW,UAAU,CAACV,OAAO,CACtC,CAAC,EACDC,aAAI,CAACiB,EAAE,CAACL,OAAO,CAACd,IAAI,EAAE,CAACc,OAAO,CAACd,IAAI,CAAC,CAAC,EACrC,CAACe,MAAM,CAACf,IAAI,EAAEe,MAAM,CAACd,OAAO,CAC9B,CAAC,CACAwB,KAAK,CAAC,CAAC,CACPC,cAAc,CAAC,CAAC,CAAC;EACpBC,OAAO,EAAEzB,aAAI,CAAC0B,MAAM,CAACxB,OAAO,CAAC,0CAA0C;AACzE,CAAC,CAAC,CAACyB,mBAAmB,CAAC,QAAQ,CAAC","ignoreList":[]}
1
+ {"version":3,"file":"schema.js","names":["_arktype","require","module","name","options","type","esm","default","babelrc","configFile","sourceMaps","copyFlow","jsxRuntime","commonjs","typescript","project","tsc","codegen","custom","script","clean","target","or","config","exports","source","output","targets","array","moreThanLength","exclude","string","onDeepUndeclaredKey"],"sources":["../src/schema.ts"],"sourcesContent":["import { type } from 'arktype';\n\nconst module = {\n name: '\"module\"',\n options: type({\n esm: type('boolean').default(false),\n babelrc: type('boolean').default(false),\n configFile: type('boolean | string').default(false),\n sourceMaps: type('boolean').default(true),\n copyFlow: type('boolean').default(false),\n jsxRuntime: type('\"automatic\" | \"classic\"').default('automatic'),\n }),\n} as const;\n\nconst commonjs = {\n name: '\"commonjs\"',\n options: module.options,\n} as const;\n\nconst typescript = {\n name: '\"typescript\"',\n options: type({\n project: 'string?',\n tsc: 'string?',\n }),\n} as const;\n\nconst codegen = {\n name: '\"codegen\"',\n} as const;\n\nconst custom = {\n name: '\"custom\"',\n options: type({\n script: 'string',\n clean: 'string?',\n }),\n} as const;\n\n// eslint-disable-next-line @typescript-eslint/no-unused-vars\nconst target = type.or(\n commonjs.name,\n module.name,\n typescript.name,\n codegen.name,\n custom.name\n);\n\nexport const config = type({\n source: 'string',\n output: 'string',\n targets: type\n .or(\n type.or(module.name, [module.name], [module.name, module.options]),\n type.or(\n commonjs.name,\n [commonjs.name],\n [commonjs.name, commonjs.options]\n ),\n type.or(\n typescript.name,\n [typescript.name],\n [typescript.name, typescript.options]\n ),\n type.or(codegen.name, [codegen.name]),\n [custom.name, custom.options]\n )\n .array()\n .moreThanLength(0),\n exclude: type.string.default('**/{__tests__,__fixtures__,__mocks__}/**'),\n}).onDeepUndeclaredKey('reject');\n\nexport type Config = typeof config.infer;\n\nexport type Target = typeof target.infer;\n\nexport type TargetOptions<T extends Target> = T extends typeof commonjs.name\n ? typeof commonjs.options.infer\n : T extends typeof module.name\n ? typeof module.options.infer\n : T extends typeof typescript.name\n ? typeof typescript.options.infer\n : T extends typeof custom.name\n ? typeof custom.options.infer\n : T extends typeof codegen.name\n ? undefined\n : never;\n"],"mappings":";;;;;;AAAA,IAAAA,QAAA,GAAAC,OAAA;AAEA,MAAMC,OAAM,GAAG;EACbC,IAAI,EAAE,UAAU;EAChBC,OAAO,EAAE,IAAAC,aAAI,EAAC;IACZC,GAAG,EAAE,IAAAD,aAAI,EAAC,SAAS,CAAC,CAACE,OAAO,CAAC,KAAK,CAAC;IACnCC,OAAO,EAAE,IAAAH,aAAI,EAAC,SAAS,CAAC,CAACE,OAAO,CAAC,KAAK,CAAC;IACvCE,UAAU,EAAE,IAAAJ,aAAI,EAAC,kBAAkB,CAAC,CAACE,OAAO,CAAC,KAAK,CAAC;IACnDG,UAAU,EAAE,IAAAL,aAAI,EAAC,SAAS,CAAC,CAACE,OAAO,CAAC,IAAI,CAAC;IACzCI,QAAQ,EAAE,IAAAN,aAAI,EAAC,SAAS,CAAC,CAACE,OAAO,CAAC,KAAK,CAAC;IACxCK,UAAU,EAAE,IAAAP,aAAI,EAAC,yBAAyB,CAAC,CAACE,OAAO,CAAC,WAAW;EACjE,CAAC;AACH,CAAU;AAEV,MAAMM,QAAQ,GAAG;EACfV,IAAI,EAAE,YAAY;EAClBC,OAAO,EAAEF,OAAM,CAACE;AAClB,CAAU;AAEV,MAAMU,UAAU,GAAG;EACjBX,IAAI,EAAE,cAAc;EACpBC,OAAO,EAAE,IAAAC,aAAI,EAAC;IACZU,OAAO,EAAE,SAAS;IAClBC,GAAG,EAAE;EACP,CAAC;AACH,CAAU;AAEV,MAAMC,OAAO,GAAG;EACdd,IAAI,EAAE;AACR,CAAU;AAEV,MAAMe,MAAM,GAAG;EACbf,IAAI,EAAE,UAAU;EAChBC,OAAO,EAAE,IAAAC,aAAI,EAAC;IACZc,MAAM,EAAE,QAAQ;IAChBC,KAAK,EAAE;EACT,CAAC;AACH,CAAU;;AAEV;AACA,MAAMC,MAAM,GAAGhB,aAAI,CAACiB,EAAE,CACpBT,QAAQ,CAACV,IAAI,EACbD,OAAM,CAACC,IAAI,EACXW,UAAU,CAACX,IAAI,EACfc,OAAO,CAACd,IAAI,EACZe,MAAM,CAACf,IACT,CAAC;AAEM,MAAMoB,MAAM,GAAAC,OAAA,CAAAD,MAAA,GAAG,IAAAlB,aAAI,EAAC;EACzBoB,MAAM,EAAE,QAAQ;EAChBC,MAAM,EAAE,QAAQ;EAChBC,OAAO,EAAEtB,aAAI,CACViB,EAAE,CACDjB,aAAI,CAACiB,EAAE,CAACpB,OAAM,CAACC,IAAI,EAAE,CAACD,OAAM,CAACC,IAAI,CAAC,EAAE,CAACD,OAAM,CAACC,IAAI,EAAED,OAAM,CAACE,OAAO,CAAC,CAAC,EAClEC,aAAI,CAACiB,EAAE,CACLT,QAAQ,CAACV,IAAI,EACb,CAACU,QAAQ,CAACV,IAAI,CAAC,EACf,CAACU,QAAQ,CAACV,IAAI,EAAEU,QAAQ,CAACT,OAAO,CAClC,CAAC,EACDC,aAAI,CAACiB,EAAE,CACLR,UAAU,CAACX,IAAI,EACf,CAACW,UAAU,CAACX,IAAI,CAAC,EACjB,CAACW,UAAU,CAACX,IAAI,EAAEW,UAAU,CAACV,OAAO,CACtC,CAAC,EACDC,aAAI,CAACiB,EAAE,CAACL,OAAO,CAACd,IAAI,EAAE,CAACc,OAAO,CAACd,IAAI,CAAC,CAAC,EACrC,CAACe,MAAM,CAACf,IAAI,EAAEe,MAAM,CAACd,OAAO,CAC9B,CAAC,CACAwB,KAAK,CAAC,CAAC,CACPC,cAAc,CAAC,CAAC,CAAC;EACpBC,OAAO,EAAEzB,aAAI,CAAC0B,MAAM,CAACxB,OAAO,CAAC,0CAA0C;AACzE,CAAC,CAAC,CAACyB,mBAAmB,CAAC,QAAQ,CAAC","ignoreList":[]}
@@ -1,6 +1,6 @@
1
1
  "use strict";
2
2
 
3
- var _globals = require("@jest/globals");
3
+ var _vitest = require("vitest");
4
4
  var _fsExtra = _interopRequireDefault(require("fs-extra"));
5
5
  var _nodePath = _interopRequireDefault(require("node:path"));
6
6
  var _patchCodegenAndroidPackage = require("./patchCodegenAndroidPackage");
@@ -50,8 +50,8 @@ public interface SomeInterface<T extends View> {
50
50
  const mockProjectPath = _nodePath.default.resolve(__dirname, 'mockProject');
51
51
  const mockCodegenModuleSpecsPath = _nodePath.default.resolve(mockProjectPath, 'android/generated/java/com/facebook/fbreact/specs');
52
52
  const mockCodegenViewSpecsPath = _nodePath.default.resolve(mockProjectPath, 'android/generated/java/com/facebook/react/viewmanagers');
53
- (0, _globals.describe)('patchCodegenAndroidPackage', () => {
54
- (0, _globals.beforeEach)(() => {
53
+ (0, _vitest.describe)('patchCodegenAndroidPackage', () => {
54
+ (0, _vitest.beforeEach)(() => {
55
55
  (0, _mockFs.default)({
56
56
  [mockProjectPath]: {
57
57
  'package.json': JSON.stringify(mockPackageJson)
@@ -61,26 +61,26 @@ const mockCodegenViewSpecsPath = _nodePath.default.resolve(mockProjectPath, 'and
61
61
  }
62
62
  });
63
63
  });
64
- (0, _globals.afterEach)(() => {
64
+ (0, _vitest.afterEach)(() => {
65
65
  _mockFs.default.restore();
66
66
  });
67
- (0, _globals.test)('moves the files to correct dir', async () => {
67
+ (0, _vitest.test)('moves the files to correct dir', async () => {
68
68
  await (0, _patchCodegenAndroidPackage.patchCodegenAndroidPackage)(mockProjectPath, mockPackageJson, mockReport);
69
69
  const expectedDir = _nodePath.default.resolve(mockProjectPath, 'android/generated/java/com/bobtest');
70
- (0, _globals.expect)(await _fsExtra.default.pathExists(expectedDir)).toBe(true);
70
+ (0, _vitest.expect)(await _fsExtra.default.pathExists(expectedDir)).toBe(true);
71
71
  });
72
- (0, _globals.test)('replaces the package name in the files', async () => {
72
+ (0, _vitest.test)('replaces the package name in the files', async () => {
73
73
  await (0, _patchCodegenAndroidPackage.patchCodegenAndroidPackage)(mockProjectPath, mockPackageJson, mockReport);
74
74
  const expectedDir = _nodePath.default.resolve(mockProjectPath, 'android/generated/java/com/bobtest');
75
75
  const expectedFile = _nodePath.default.resolve(expectedDir, 'NativeBobtestSpec.java');
76
76
  const fileContent = await _fsExtra.default.readFile(expectedFile, 'utf8');
77
- (0, _globals.expect)(fileContent).toContain('package com.bobtest;');
77
+ (0, _vitest.expect)(fileContent).toContain('package com.bobtest;');
78
78
  });
79
- (0, _globals.test)('removes the old package dir', async () => {
79
+ (0, _vitest.test)('removes the old package dir', async () => {
80
80
  await (0, _patchCodegenAndroidPackage.patchCodegenAndroidPackage)(mockProjectPath, mockPackageJson, mockReport);
81
- (0, _globals.expect)(await _fsExtra.default.pathExists(mockCodegenModuleSpecsPath)).toBe(false);
81
+ (0, _vitest.expect)(await _fsExtra.default.pathExists(mockCodegenModuleSpecsPath)).toBe(false);
82
82
  });
83
- (0, _globals.test)("doesn't delete the view manager specs", async () => {
83
+ (0, _vitest.test)("doesn't delete the view manager specs", async () => {
84
84
  const mockPackageJsonWithTypeAll = {
85
85
  ...mockPackageJson,
86
86
  codegenConfig: {
@@ -100,7 +100,7 @@ const mockCodegenViewSpecsPath = _nodePath.default.resolve(mockProjectPath, 'and
100
100
  }
101
101
  });
102
102
  await (0, _patchCodegenAndroidPackage.patchCodegenAndroidPackage)(mockProjectPath, mockPackageJsonWithTypeAll, mockReport);
103
- (0, _globals.expect)(await _fsExtra.default.pathExists(_nodePath.default.join(mockCodegenViewSpecsPath, 'BobtestViewManagerInterface.java'))).toBeTruthy();
103
+ (0, _vitest.expect)(await _fsExtra.default.pathExists(_nodePath.default.join(mockCodegenViewSpecsPath, 'BobtestViewManagerInterface.java'))).toBeTruthy();
104
104
  });
105
105
  });
106
106
  //# sourceMappingURL=patchCodegenAndroidPackage.test.js.map
@@ -1 +1 @@
1
- {"version":3,"file":"patchCodegenAndroidPackage.test.js","names":["_globals","require","_fsExtra","_interopRequireDefault","_nodePath","_patchCodegenAndroidPackage","_mockFs","e","__esModule","default","mockPackageJson","codegenConfig","outputDir","android","javaPackageName","mockReport","info","console","log","warn","error","success","mockJavaModuleSpec","mockJavaViewSpec","mockProjectPath","path","resolve","__dirname","mockCodegenModuleSpecsPath","mockCodegenViewSpecsPath","describe","beforeEach","mockfs","JSON","stringify","afterEach","restore","test","patchCodegenAndroidPackage","expectedDir","expect","fs","pathExists","toBe","expectedFile","fileContent","readFile","toContain","mockPackageJsonWithTypeAll","type","join","toBeTruthy"],"sources":["../../../../src/targets/codegen/patches/patchCodegenAndroidPackage.test.ts"],"sourcesContent":["import { expect, test, describe, beforeEach, afterEach } from '@jest/globals';\nimport fs from 'fs-extra';\nimport path from 'node:path';\nimport { patchCodegenAndroidPackage } from './patchCodegenAndroidPackage';\nimport mockfs from 'mock-fs';\nimport type { Report } from '../../../types';\n\nconst mockPackageJson = {\n codegenConfig: {\n outputDir: {\n android: 'android/generated',\n },\n android: {\n javaPackageName: 'com.bobtest',\n },\n },\n};\n\nconst mockReport: Report = {\n info: console.log,\n warn: console.log,\n error: console.error,\n success: console.log,\n};\n\nconst mockJavaModuleSpec = `\n/**\n * Some comment\n */\n\npackage com.facebook.fbreact.specs;\n\nimport com.example.exampleimport;\n\nclass SomeClass {\n public void someMethod() {\n // some code\n }\n}`;\n\nconst mockJavaViewSpec = `\n/**\n * Some comment\n */\n\npackage com.facebook.react.viewmanagers;\n\npublic interface SomeInterface<T extends View> {\n void setColor(T view, @Nullable String value);\n}\n`;\n\nconst mockProjectPath = path.resolve(__dirname, 'mockProject');\nconst mockCodegenModuleSpecsPath = path.resolve(\n mockProjectPath,\n 'android/generated/java/com/facebook/fbreact/specs'\n);\nconst mockCodegenViewSpecsPath = path.resolve(\n mockProjectPath,\n 'android/generated/java/com/facebook/react/viewmanagers'\n);\n\ndescribe('patchCodegenAndroidPackage', () => {\n beforeEach(() => {\n mockfs({\n [mockProjectPath]: {\n 'package.json': JSON.stringify(mockPackageJson),\n },\n [mockCodegenModuleSpecsPath]: {\n 'NativeBobtestSpec.java': mockJavaModuleSpec,\n },\n });\n });\n\n afterEach(() => {\n mockfs.restore();\n });\n\n test('moves the files to correct dir', async () => {\n await patchCodegenAndroidPackage(\n mockProjectPath,\n mockPackageJson,\n mockReport\n );\n\n const expectedDir = path.resolve(\n mockProjectPath,\n 'android/generated/java/com/bobtest'\n );\n\n expect(await fs.pathExists(expectedDir)).toBe(true);\n });\n\n test('replaces the package name in the files', async () => {\n await patchCodegenAndroidPackage(\n mockProjectPath,\n mockPackageJson,\n mockReport\n );\n\n const expectedDir = path.resolve(\n mockProjectPath,\n 'android/generated/java/com/bobtest'\n );\n\n const expectedFile = path.resolve(expectedDir, 'NativeBobtestSpec.java');\n\n const fileContent = await fs.readFile(expectedFile, 'utf8');\n\n expect(fileContent).toContain('package com.bobtest;');\n });\n\n test('removes the old package dir', async () => {\n await patchCodegenAndroidPackage(\n mockProjectPath,\n mockPackageJson,\n mockReport\n );\n\n expect(await fs.pathExists(mockCodegenModuleSpecsPath)).toBe(false);\n });\n\n test(\"doesn't delete the view manager specs\", async () => {\n const mockPackageJsonWithTypeAll = {\n ...mockPackageJson,\n codegenConfig: {\n ...mockPackageJson.codegenConfig,\n type: 'all',\n },\n };\n\n mockfs({\n [mockProjectPath]: {\n 'package.json': JSON.stringify(mockPackageJsonWithTypeAll),\n },\n [mockCodegenModuleSpecsPath]: {\n 'NativeBobtestSpec.java': mockJavaModuleSpec,\n },\n [mockCodegenViewSpecsPath]: {\n 'BobtestViewManagerInterface.java': mockJavaViewSpec,\n },\n });\n\n await patchCodegenAndroidPackage(\n mockProjectPath,\n mockPackageJsonWithTypeAll,\n mockReport\n );\n\n expect(\n await fs.pathExists(\n path.join(mockCodegenViewSpecsPath, 'BobtestViewManagerInterface.java')\n )\n ).toBeTruthy();\n });\n});\n"],"mappings":"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","ignoreList":[]}
1
+ {"version":3,"file":"patchCodegenAndroidPackage.test.js","names":["_vitest","require","_fsExtra","_interopRequireDefault","_nodePath","_patchCodegenAndroidPackage","_mockFs","e","__esModule","default","mockPackageJson","codegenConfig","outputDir","android","javaPackageName","mockReport","info","console","log","warn","error","success","mockJavaModuleSpec","mockJavaViewSpec","mockProjectPath","path","resolve","__dirname","mockCodegenModuleSpecsPath","mockCodegenViewSpecsPath","describe","beforeEach","mockfs","JSON","stringify","afterEach","restore","test","patchCodegenAndroidPackage","expectedDir","expect","fs","pathExists","toBe","expectedFile","fileContent","readFile","toContain","mockPackageJsonWithTypeAll","type","join","toBeTruthy"],"sources":["../../../../src/targets/codegen/patches/patchCodegenAndroidPackage.test.ts"],"sourcesContent":["import { expect, test, describe, beforeEach, afterEach } from 'vitest';\nimport fs from 'fs-extra';\nimport path from 'node:path';\nimport { patchCodegenAndroidPackage } from './patchCodegenAndroidPackage';\nimport mockfs from 'mock-fs';\nimport type { Report } from '../../../types';\n\nconst mockPackageJson = {\n codegenConfig: {\n outputDir: {\n android: 'android/generated',\n },\n android: {\n javaPackageName: 'com.bobtest',\n },\n },\n};\n\nconst mockReport: Report = {\n info: console.log,\n warn: console.log,\n error: console.error,\n success: console.log,\n};\n\nconst mockJavaModuleSpec = `\n/**\n * Some comment\n */\n\npackage com.facebook.fbreact.specs;\n\nimport com.example.exampleimport;\n\nclass SomeClass {\n public void someMethod() {\n // some code\n }\n}`;\n\nconst mockJavaViewSpec = `\n/**\n * Some comment\n */\n\npackage com.facebook.react.viewmanagers;\n\npublic interface SomeInterface<T extends View> {\n void setColor(T view, @Nullable String value);\n}\n`;\n\nconst mockProjectPath = path.resolve(__dirname, 'mockProject');\nconst mockCodegenModuleSpecsPath = path.resolve(\n mockProjectPath,\n 'android/generated/java/com/facebook/fbreact/specs'\n);\nconst mockCodegenViewSpecsPath = path.resolve(\n mockProjectPath,\n 'android/generated/java/com/facebook/react/viewmanagers'\n);\n\ndescribe('patchCodegenAndroidPackage', () => {\n beforeEach(() => {\n mockfs({\n [mockProjectPath]: {\n 'package.json': JSON.stringify(mockPackageJson),\n },\n [mockCodegenModuleSpecsPath]: {\n 'NativeBobtestSpec.java': mockJavaModuleSpec,\n },\n });\n });\n\n afterEach(() => {\n mockfs.restore();\n });\n\n test('moves the files to correct dir', async () => {\n await patchCodegenAndroidPackage(\n mockProjectPath,\n mockPackageJson,\n mockReport\n );\n\n const expectedDir = path.resolve(\n mockProjectPath,\n 'android/generated/java/com/bobtest'\n );\n\n expect(await fs.pathExists(expectedDir)).toBe(true);\n });\n\n test('replaces the package name in the files', async () => {\n await patchCodegenAndroidPackage(\n mockProjectPath,\n mockPackageJson,\n mockReport\n );\n\n const expectedDir = path.resolve(\n mockProjectPath,\n 'android/generated/java/com/bobtest'\n );\n\n const expectedFile = path.resolve(expectedDir, 'NativeBobtestSpec.java');\n\n const fileContent = await fs.readFile(expectedFile, 'utf8');\n\n expect(fileContent).toContain('package com.bobtest;');\n });\n\n test('removes the old package dir', async () => {\n await patchCodegenAndroidPackage(\n mockProjectPath,\n mockPackageJson,\n mockReport\n );\n\n expect(await fs.pathExists(mockCodegenModuleSpecsPath)).toBe(false);\n });\n\n test(\"doesn't delete the view manager specs\", async () => {\n const mockPackageJsonWithTypeAll = {\n ...mockPackageJson,\n codegenConfig: {\n ...mockPackageJson.codegenConfig,\n type: 'all',\n },\n };\n\n mockfs({\n [mockProjectPath]: {\n 'package.json': JSON.stringify(mockPackageJsonWithTypeAll),\n },\n [mockCodegenModuleSpecsPath]: {\n 'NativeBobtestSpec.java': mockJavaModuleSpec,\n },\n [mockCodegenViewSpecsPath]: {\n 'BobtestViewManagerInterface.java': mockJavaViewSpec,\n },\n });\n\n await patchCodegenAndroidPackage(\n mockProjectPath,\n mockPackageJsonWithTypeAll,\n mockReport\n );\n\n expect(\n await fs.pathExists(\n path.join(mockCodegenViewSpecsPath, 'BobtestViewManagerInterface.java')\n )\n ).toBeTruthy();\n });\n});\n"],"mappings":"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","ignoreList":[]}
@@ -1,6 +1,6 @@
1
1
  "use strict";
2
2
 
3
- var _globals = require("@jest/globals");
3
+ var _vitest = require("vitest");
4
4
  var _fsExtra = _interopRequireDefault(require("fs-extra"));
5
5
  var _nodePath = _interopRequireDefault(require("node:path"));
6
6
  var _removeCodegenAppLevelCode = require("./removeCodegenAppLevelCode");
@@ -15,8 +15,8 @@ const mockPackageJson = {
15
15
  }
16
16
  };
17
17
  const mockProjectPath = _nodePath.default.resolve(__dirname, 'mockProject');
18
- (0, _globals.describe)('patchCodegenAndroidPackage', () => {
19
- (0, _globals.beforeEach)(() => {
18
+ (0, _vitest.describe)('patchCodegenAndroidPackage', () => {
19
+ (0, _vitest.beforeEach)(() => {
20
20
  (0, _mockFs.default)({
21
21
  [mockProjectPath]: {
22
22
  'package.json': JSON.stringify(mockPackageJson),
@@ -45,18 +45,18 @@ const mockProjectPath = _nodePath.default.resolve(__dirname, 'mockProject');
45
45
  }
46
46
  });
47
47
  });
48
- (0, _globals.afterEach)(() => {
48
+ (0, _vitest.afterEach)(() => {
49
49
  _mockFs.default.restore();
50
50
  });
51
- (0, _globals.test)('removes the duplicate iOS files', async () => {
51
+ (0, _vitest.test)('removes the duplicate iOS files', async () => {
52
52
  await (0, _removeCodegenAppLevelCode.removeCodegenAppLevelCode)(mockProjectPath, mockPackageJson);
53
- (0, _globals.expect)((await _fsExtra.default.promises.readdir(_nodePath.default.join(mockProjectPath, 'ios', 'generated'))).length).toBe(0);
53
+ (0, _vitest.expect)((await _fsExtra.default.promises.readdir(_nodePath.default.join(mockProjectPath, 'ios', 'generated'))).length).toBe(0);
54
54
  });
55
- (0, _globals.test)('removes the unnecessary Android files', async () => {
55
+ (0, _vitest.test)('removes the unnecessary Android files', async () => {
56
56
  await (0, _removeCodegenAppLevelCode.removeCodegenAppLevelCode)(mockProjectPath, mockPackageJson);
57
- (0, _globals.expect)((await _fsExtra.default.promises.readdir(_nodePath.default.join(mockProjectPath, 'android', 'generated'))).length).toBe(0);
57
+ (0, _vitest.expect)((await _fsExtra.default.promises.readdir(_nodePath.default.join(mockProjectPath, 'android', 'generated'))).length).toBe(0);
58
58
  });
59
- (0, _globals.test)("doesn't crash the process when there are no files to remove", async () => {
59
+ (0, _vitest.test)("doesn't crash the process when there are no files to remove", async () => {
60
60
  (0, _mockFs.default)({
61
61
  [mockProjectPath]: {
62
62
  'package.json': JSON.stringify(mockPackageJson),
@@ -72,7 +72,7 @@ const mockProjectPath = _nodePath.default.resolve(__dirname, 'mockProject');
72
72
  }
73
73
  }
74
74
  });
75
- await (0, _globals.expect)((0, _removeCodegenAppLevelCode.removeCodegenAppLevelCode)(mockProjectPath, mockPackageJson)).resolves.not.toThrow();
75
+ await (0, _vitest.expect)((0, _removeCodegenAppLevelCode.removeCodegenAppLevelCode)(mockProjectPath, mockPackageJson)).resolves.not.toThrow();
76
76
  });
77
77
  });
78
78
  //# sourceMappingURL=removeCodegenAppLevelCode.test.js.map
@@ -1 +1 @@
1
- {"version":3,"file":"removeCodegenAppLevelCode.test.js","names":["_globals","require","_fsExtra","_interopRequireDefault","_nodePath","_removeCodegenAppLevelCode","_mockFs","e","__esModule","default","mockPackageJson","codegenConfig","outputDir","android","ios","mockProjectPath","path","resolve","__dirname","describe","beforeEach","mockfs","JSON","stringify","generated","afterEach","restore","test","removeCodegenAppLevelCode","expect","fs","promises","readdir","join","length","toBe","someRandomFile","resolves","not","toThrow"],"sources":["../../../../src/targets/codegen/patches/removeCodegenAppLevelCode.test.ts"],"sourcesContent":["import { expect, test, describe, beforeEach, afterEach } from '@jest/globals';\nimport fs from 'fs-extra';\nimport path from 'node:path';\nimport { removeCodegenAppLevelCode } from './removeCodegenAppLevelCode';\nimport mockfs from 'mock-fs';\n\nconst mockPackageJson = {\n codegenConfig: {\n outputDir: {\n android: 'android/generated',\n ios: 'ios/generated',\n },\n },\n};\n\nconst mockProjectPath = path.resolve(__dirname, 'mockProject');\n\ndescribe('patchCodegenAndroidPackage', () => {\n beforeEach(() => {\n mockfs({\n [mockProjectPath]: {\n 'package.json': JSON.stringify(mockPackageJson),\n 'ios': {\n generated: {\n 'RCTAppDependencyProvider.h': '',\n 'RCTAppDependencyProvider.mm': '',\n 'RCTModulesConformingToProtocolsProvider.h': '',\n 'RCTModulesConformingToProtocolsProvider.mm': '',\n 'RCTThirdPartyComponentsProvider.h': '',\n 'RCTThirdPartyComponentsProvider.mm': '',\n 'ReactAppDependencyProvider.podspec': '',\n },\n },\n 'android': {\n generated: {\n 'RCTAppDependencyProvider.h': '',\n 'RCTAppDependencyProvider.mm': '',\n 'RCTModulesConformingToProtocolsProvider.h': '',\n 'RCTModulesConformingToProtocolsProvider.mm': '',\n 'RCTThirdPartyComponentsProvider.h': '',\n 'RCTThirdPartyComponentsProvider.mm': '',\n 'ReactAppDependencyProvider.podspec': '',\n },\n },\n },\n });\n });\n\n afterEach(() => {\n mockfs.restore();\n });\n\n test('removes the duplicate iOS files', async () => {\n await removeCodegenAppLevelCode(mockProjectPath, mockPackageJson);\n\n expect(\n (\n await fs.promises.readdir(\n path.join(mockProjectPath, 'ios', 'generated')\n )\n ).length\n ).toBe(0);\n });\n\n test('removes the unnecessary Android files', async () => {\n await removeCodegenAppLevelCode(mockProjectPath, mockPackageJson);\n\n expect(\n (\n await fs.promises.readdir(\n path.join(mockProjectPath, 'android', 'generated')\n )\n ).length\n ).toBe(0);\n });\n\n test(\"doesn't crash the process when there are no files to remove\", async () => {\n mockfs({\n [mockProjectPath]: {\n 'package.json': JSON.stringify(mockPackageJson),\n 'ios': {\n generated: {\n someRandomFile: '',\n },\n },\n 'android': {\n generated: {\n someRandomFile: '',\n },\n },\n },\n });\n\n await expect(\n removeCodegenAppLevelCode(mockProjectPath, mockPackageJson)\n ).resolves.not.toThrow();\n });\n});\n"],"mappings":"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","ignoreList":[]}
1
+ {"version":3,"file":"removeCodegenAppLevelCode.test.js","names":["_vitest","require","_fsExtra","_interopRequireDefault","_nodePath","_removeCodegenAppLevelCode","_mockFs","e","__esModule","default","mockPackageJson","codegenConfig","outputDir","android","ios","mockProjectPath","path","resolve","__dirname","describe","beforeEach","mockfs","JSON","stringify","generated","afterEach","restore","test","removeCodegenAppLevelCode","expect","fs","promises","readdir","join","length","toBe","someRandomFile","resolves","not","toThrow"],"sources":["../../../../src/targets/codegen/patches/removeCodegenAppLevelCode.test.ts"],"sourcesContent":["import { expect, describe, beforeEach, afterEach, test } from 'vitest';\nimport fs from 'fs-extra';\nimport path from 'node:path';\nimport { removeCodegenAppLevelCode } from './removeCodegenAppLevelCode';\nimport mockfs from 'mock-fs';\n\nconst mockPackageJson = {\n codegenConfig: {\n outputDir: {\n android: 'android/generated',\n ios: 'ios/generated',\n },\n },\n};\n\nconst mockProjectPath = path.resolve(__dirname, 'mockProject');\n\ndescribe('patchCodegenAndroidPackage', () => {\n beforeEach(() => {\n mockfs({\n [mockProjectPath]: {\n 'package.json': JSON.stringify(mockPackageJson),\n 'ios': {\n generated: {\n 'RCTAppDependencyProvider.h': '',\n 'RCTAppDependencyProvider.mm': '',\n 'RCTModulesConformingToProtocolsProvider.h': '',\n 'RCTModulesConformingToProtocolsProvider.mm': '',\n 'RCTThirdPartyComponentsProvider.h': '',\n 'RCTThirdPartyComponentsProvider.mm': '',\n 'ReactAppDependencyProvider.podspec': '',\n },\n },\n 'android': {\n generated: {\n 'RCTAppDependencyProvider.h': '',\n 'RCTAppDependencyProvider.mm': '',\n 'RCTModulesConformingToProtocolsProvider.h': '',\n 'RCTModulesConformingToProtocolsProvider.mm': '',\n 'RCTThirdPartyComponentsProvider.h': '',\n 'RCTThirdPartyComponentsProvider.mm': '',\n 'ReactAppDependencyProvider.podspec': '',\n },\n },\n },\n });\n });\n\n afterEach(() => {\n mockfs.restore();\n });\n\n test('removes the duplicate iOS files', async () => {\n await removeCodegenAppLevelCode(mockProjectPath, mockPackageJson);\n\n expect(\n (\n await fs.promises.readdir(\n path.join(mockProjectPath, 'ios', 'generated')\n )\n ).length\n ).toBe(0);\n });\n\n test('removes the unnecessary Android files', async () => {\n await removeCodegenAppLevelCode(mockProjectPath, mockPackageJson);\n\n expect(\n (\n await fs.promises.readdir(\n path.join(mockProjectPath, 'android', 'generated')\n )\n ).length\n ).toBe(0);\n });\n\n test(\"doesn't crash the process when there are no files to remove\", async () => {\n mockfs({\n [mockProjectPath]: {\n 'package.json': JSON.stringify(mockPackageJson),\n 'ios': {\n generated: {\n someRandomFile: '',\n },\n },\n 'android': {\n generated: {\n someRandomFile: '',\n },\n },\n },\n });\n\n await expect(\n removeCodegenAppLevelCode(mockProjectPath, mockPackageJson)\n ).resolves.not.toThrow();\n });\n});\n"],"mappings":"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","ignoreList":[]}
package/metro-config.js CHANGED
@@ -1,59 +1,17 @@
1
1
  /* eslint-disable @typescript-eslint/no-require-imports, import-x/no-commonjs, no-undef */
2
2
 
3
- const path = require('path');
4
- const escape = require('escape-string-regexp');
5
- const exclusionList = require('metro-config/src/defaults/exclusionList');
3
+ const { withMetroConfig } = require('react-native-monorepo-config');
6
4
 
7
5
  /**
8
6
  * Get Metro configuration for the example project.
9
7
  * This sets up appropriate root and watch folders for the library.
10
8
  * It also excludes conflicting modules and aliases them to the correct place.
11
9
  *
12
- * @param {import('metro-config').MetroConfig} defaultConfig Default Metro configuration
10
+ * @param {import('metro-config').MetroConfig} baseConfig Base Metro configuration
13
11
  * @param {object} options Options to customize the configuration
14
12
  * @param {string} options.root Root directory of the monorepo
15
- * @param {object} options.pkg Content of package.json of the library
16
13
  * @param {string} options.project Directory containing the example project
17
14
  * @returns {import('metro-config').MetroConfig} Metro configuration
18
15
  */
19
- const getConfig = (defaultConfig, { root, pkg, project }) => {
20
- const modules = [
21
- // AssetsRegistry is used internally by React Native to handle asset imports
22
- // This needs to be a singleton so all assets are registered to a single registry
23
- '@react-native/assets-registry',
24
- ...Object.keys({ ...pkg.peerDependencies }),
25
- ];
26
-
27
- /**
28
- * Metro configuration
29
- * https://facebook.github.io/metro/docs/configuration
30
- *
31
- * @type {import('metro-config').MetroConfig}
32
- */
33
- return {
34
- ...defaultConfig,
35
-
36
- projectRoot: project,
37
- watchFolders: [root],
38
-
39
- // We need to make sure that only one version is loaded for peerDependencies
40
- // So we block them at the root, and alias them to the versions in example project's node_modules
41
- resolver: {
42
- ...defaultConfig.resolver,
43
-
44
- blacklistRE: exclusionList(
45
- modules.map(
46
- (m) =>
47
- new RegExp(`^${escape(path.join(root, 'node_modules', m))}\\/.*$`)
48
- )
49
- ),
50
-
51
- extraNodeModules: modules.reduce((acc, name) => {
52
- acc[name] = path.join(project, 'node_modules', name);
53
- return acc;
54
- }, {}),
55
- },
56
- };
57
- };
58
-
59
- exports.getConfig = getConfig;
16
+ exports.getConfig = (baseConfig, { root, project }) =>
17
+ withMetroConfig(baseConfig, { root, dirname: project });
package/package.json CHANGED
@@ -1,6 +1,6 @@
1
1
  {
2
2
  "name": "react-native-builder-bob",
3
- "version": "0.40.6",
3
+ "version": "0.40.7",
4
4
  "description": "CLI to build JavaScript files for React Native libraries",
5
5
  "keywords": [
6
6
  "react-native",
@@ -37,22 +37,17 @@
37
37
  },
38
38
  "scripts": {
39
39
  "prepare": "babel --extensions .ts,.tsx src --out-dir lib --source-maps --delete-dir-on-start",
40
- "test": "jest"
41
- },
42
- "jest": {
43
- "testPathIgnorePatterns": [
44
- "/lib/"
45
- ]
40
+ "test": "vitest"
46
41
  },
47
42
  "dependencies": {
48
43
  "@babel/core": "^7.25.2",
44
+ "@babel/plugin-transform-flow-strip-types": "^7.26.5",
49
45
  "@babel/plugin-transform-strict-mode": "^7.24.7",
50
46
  "@babel/preset-env": "^7.25.2",
51
- "@babel/preset-flow": "^7.24.7",
52
47
  "@babel/preset-react": "^7.24.7",
53
48
  "@babel/preset-typescript": "^7.24.7",
54
49
  "arktype": "^2.1.15",
55
- "babel-plugin-module-resolver": "^5.0.2",
50
+ "babel-plugin-syntax-hermes-parser": "^0.28.0",
56
51
  "browserslist": "^4.20.4",
57
52
  "cross-spawn": "^7.0.3",
58
53
  "dedent": "^0.7.0",
@@ -70,7 +65,6 @@
70
65
  },
71
66
  "devDependencies": {
72
67
  "@babel/cli": "^7.24.8",
73
- "@jest/globals": "^29.7.0",
74
68
  "@types/babel__core": "^7.1.19",
75
69
  "@types/browserslist": "^4.15.0",
76
70
  "@types/cross-spawn": "^6.0.2",
@@ -84,9 +78,9 @@
84
78
  "@types/which": "^2.0.1",
85
79
  "@types/yargs": "^17.0.10",
86
80
  "concurrently": "^7.2.2",
87
- "jest": "^29.7.0",
88
81
  "mock-fs": "^5.2.0",
89
- "mock-stdin": "^1.0.0"
82
+ "mock-stdin": "^1.0.0",
83
+ "vitest": "^3.1.1"
90
84
  },
91
- "gitHead": "2fbd8700f66d1e13667c6557cf5fa5f4822069a8"
85
+ "gitHead": "92fad2c26ca1bb44088285163068d1dc220224cc"
92
86
  }