react-native-builder-bob 0.40.5 → 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 +1 -15
- package/babel-preset.js +5 -1
- package/lib/__tests__/babel.test.js +5 -4
- package/lib/__tests__/babel.test.js.map +1 -1
- package/lib/__tests__/init.test.js +19 -17
- package/lib/__tests__/init.test.js.map +1 -1
- package/lib/init.js +4 -8
- package/lib/init.js.map +1 -1
- package/lib/schema.js +1 -1
- package/lib/schema.js.map +1 -1
- package/lib/targets/codegen/index.js +5 -2
- package/lib/targets/codegen/index.js.map +1 -1
- package/lib/targets/codegen/patches/patchCodegenAndroidPackage.test.js +12 -12
- package/lib/targets/codegen/patches/patchCodegenAndroidPackage.test.js.map +1 -1
- package/lib/targets/codegen/patches/removeCodegenAppLevelCode.js +13 -0
- package/lib/targets/codegen/patches/removeCodegenAppLevelCode.js.map +1 -1
- package/lib/targets/codegen/patches/removeCodegenAppLevelCode.test.js +10 -10
- package/lib/targets/codegen/patches/removeCodegenAppLevelCode.test.js.map +1 -1
- package/metro-config.js +4 -46
- package/package.json +7 -13
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
|
|
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
|
|
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
|
-
|
|
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', [
|
|
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,
|
|
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":["
|
|
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
|
|
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
|
|
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
|
-
|
|
11
|
-
|
|
12
|
-
|
|
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,
|
|
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,
|
|
52
|
+
(0, _vitest.afterEach)(() => {
|
|
51
53
|
io?.restore();
|
|
52
54
|
_mockFs.default.restore();
|
|
53
|
-
|
|
55
|
+
_vitest.vi.restoreAllMocks();
|
|
54
56
|
});
|
|
55
|
-
(0,
|
|
56
|
-
|
|
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,
|
|
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,
|
|
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,
|
|
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,
|
|
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,
|
|
79
|
-
(0,
|
|
80
|
-
(0,
|
|
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":["
|
|
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":"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","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,
|
|
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":[]}
|
|
@@ -33,11 +33,14 @@ async function build({
|
|
|
33
33
|
throw new Error("Couldn't find the 'type' value in 'codegenConfig'. Please check your package.json's 'codegenConfig' property and make sure 'type' is defined. https://reactnative.dev/docs/the-new-architecture/using-codegen#configuring-codegen");
|
|
34
34
|
}
|
|
35
35
|
try {
|
|
36
|
-
await (0,
|
|
36
|
+
const codegenCLISupportsSource = await (0, _removeCodegenAppLevelCode.getCodegenCLISourceSupport)();
|
|
37
|
+
await (0, _spawn.spawn)('npx', ['@react-native-community/cli', 'codegen', ...(codegenCLISupportsSource ? ['--source', 'library'] : [])]);
|
|
37
38
|
if (codegenType === 'modules' || codegenType === 'all') {
|
|
38
39
|
await (0, _patchCodegenAndroidPackage.patchCodegenAndroidPackage)(root, packageJson, report);
|
|
39
40
|
}
|
|
40
|
-
|
|
41
|
+
if (!codegenCLISupportsSource) {
|
|
42
|
+
await (0, _removeCodegenAppLevelCode.removeCodegenAppLevelCode)(root, packageJson);
|
|
43
|
+
}
|
|
41
44
|
report.success('Generated native code with codegen');
|
|
42
45
|
} catch (e) {
|
|
43
46
|
if (e != null && typeof e === 'object') {
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"index.js","names":["_kleur","_interopRequireDefault","require","_patchCodegenAndroidPackage","_fsExtra","_path","_del","_removeCodegenAppLevelCode","_spawn","e","__esModule","default","build","root","report","packageJsonPath","path","resolve","packageJson","fs","readJson","codegenIosPath","codegenConfig","outputDir","ios","info","kleur","blue","relative","del","codegenAndroidPath","android","codegenType","type","undefined","Error","spawn","patchCodegenAndroidPackage","removeCodegenAppLevelCode","success","stdout","error","toString","message","includes","cause"],"sources":["../../../src/targets/codegen/index.ts"],"sourcesContent":["import kleur from 'kleur';\nimport type { Input } from '../../types';\nimport { patchCodegenAndroidPackage } from './patches/patchCodegenAndroidPackage';\nimport fs from 'fs-extra';\nimport path from 'path';\nimport del from 'del';\nimport {
|
|
1
|
+
{"version":3,"file":"index.js","names":["_kleur","_interopRequireDefault","require","_patchCodegenAndroidPackage","_fsExtra","_path","_del","_removeCodegenAppLevelCode","_spawn","e","__esModule","default","build","root","report","packageJsonPath","path","resolve","packageJson","fs","readJson","codegenIosPath","codegenConfig","outputDir","ios","info","kleur","blue","relative","del","codegenAndroidPath","android","codegenType","type","undefined","Error","codegenCLISupportsSource","getCodegenCLISourceSupport","spawn","patchCodegenAndroidPackage","removeCodegenAppLevelCode","success","stdout","error","toString","message","includes","cause"],"sources":["../../../src/targets/codegen/index.ts"],"sourcesContent":["import kleur from 'kleur';\nimport type { Input } from '../../types';\nimport { patchCodegenAndroidPackage } from './patches/patchCodegenAndroidPackage';\nimport fs from 'fs-extra';\nimport path from 'path';\nimport del from 'del';\nimport {\n getCodegenCLISourceSupport,\n removeCodegenAppLevelCode,\n} from './patches/removeCodegenAppLevelCode';\nimport { spawn } from '../../utils/spawn';\n\ntype Options = Omit<Input, 'output'>;\n\nexport default async function build({ root, report }: Options) {\n const packageJsonPath = path.resolve(root, 'package.json');\n const packageJson = await fs.readJson(packageJsonPath);\n\n const codegenIosPath = packageJson.codegenConfig?.outputDir?.ios;\n if (codegenIosPath != null) {\n report.info(\n `Cleaning up previous iOS codegen native code at ${kleur.blue(\n path.relative(root, codegenIosPath)\n )}`\n );\n await del([codegenIosPath]);\n }\n\n const codegenAndroidPath = packageJson.codegenConfig?.outputDir?.android;\n if (codegenAndroidPath != null) {\n report.info(\n `Cleaning up previous Android codegen native code at ${kleur.blue(\n path.relative(root, codegenAndroidPath)\n )}`\n );\n await del([codegenAndroidPath]);\n }\n\n const codegenType = packageJson.codegenConfig?.type;\n\n if (codegenType === undefined) {\n throw new Error(\n \"Couldn't find the 'type' value in 'codegenConfig'. Please check your package.json's 'codegenConfig' property and make sure 'type' is defined. https://reactnative.dev/docs/the-new-architecture/using-codegen#configuring-codegen\"\n );\n }\n\n try {\n const codegenCLISupportsSource = await getCodegenCLISourceSupport();\n\n await spawn('npx', [\n '@react-native-community/cli',\n 'codegen',\n ...(codegenCLISupportsSource ? ['--source', 'library'] : []),\n ]);\n\n if (codegenType === 'modules' || codegenType === 'all') {\n await patchCodegenAndroidPackage(root, packageJson, report);\n }\n\n if (!codegenCLISupportsSource) {\n await removeCodegenAppLevelCode(root, packageJson);\n }\n\n report.success('Generated native code with codegen');\n } catch (e: unknown) {\n if (e != null && typeof e === 'object') {\n if ('stdout' in e && e.stdout != null) {\n report.error(\n `Errors found while running codegen:\\n\\n${e.stdout.toString()}`\n );\n } else if ('message' in e && typeof e.message === 'string') {\n if (\n e.message.includes(\n \"Error: Cannot find module '@react-native-community/cli/package.json'\"\n )\n ) {\n report.error(\n \"You don't have `@react-native-community/cli` in your root package's dev dependencies. Please install it and make sure it uses the same version as your application.\"\n );\n }\n }\n }\n\n throw new Error('Failed to run codegen.', { cause: e });\n }\n}\n"],"mappings":"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","ignoreList":[]}
|
|
@@ -1,6 +1,6 @@
|
|
|
1
1
|
"use strict";
|
|
2
2
|
|
|
3
|
-
var
|
|
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,
|
|
54
|
-
(0,
|
|
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,
|
|
64
|
+
(0, _vitest.afterEach)(() => {
|
|
65
65
|
_mockFs.default.restore();
|
|
66
66
|
});
|
|
67
|
-
(0,
|
|
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,
|
|
70
|
+
(0, _vitest.expect)(await _fsExtra.default.pathExists(expectedDir)).toBe(true);
|
|
71
71
|
});
|
|
72
|
-
(0,
|
|
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,
|
|
77
|
+
(0, _vitest.expect)(fileContent).toContain('package com.bobtest;');
|
|
78
78
|
});
|
|
79
|
-
(0,
|
|
79
|
+
(0, _vitest.test)('removes the old package dir', async () => {
|
|
80
80
|
await (0, _patchCodegenAndroidPackage.patchCodegenAndroidPackage)(mockProjectPath, mockPackageJson, mockReport);
|
|
81
|
-
(0,
|
|
81
|
+
(0, _vitest.expect)(await _fsExtra.default.pathExists(mockCodegenModuleSpecsPath)).toBe(false);
|
|
82
82
|
});
|
|
83
|
-
(0,
|
|
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,
|
|
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":["
|
|
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":";;AAAA,IAAAA,OAAA,GAAAC,OAAA;AACA,IAAAC,QAAA,GAAAC,sBAAA,CAAAF,OAAA;AACA,IAAAG,SAAA,GAAAD,sBAAA,CAAAF,OAAA;AACA,IAAAI,2BAAA,GAAAJ,OAAA;AACA,IAAAK,OAAA,GAAAH,sBAAA,CAAAF,OAAA;AAA6B,SAAAE,uBAAAI,CAAA,WAAAA,CAAA,IAAAA,CAAA,CAAAC,UAAA,GAAAD,CAAA,KAAAE,OAAA,EAAAF,CAAA;AAG7B,MAAMG,eAAe,GAAG;EACtBC,aAAa,EAAE;IACbC,SAAS,EAAE;MACTC,OAAO,EAAE;IACX,CAAC;IACDA,OAAO,EAAE;MACPC,eAAe,EAAE;IACnB;EACF;AACF,CAAC;AAED,MAAMC,UAAkB,GAAG;EACzBC,IAAI,EAAEC,OAAO,CAACC,GAAG;EACjBC,IAAI,EAAEF,OAAO,CAACC,GAAG;EACjBE,KAAK,EAAEH,OAAO,CAACG,KAAK;EACpBC,OAAO,EAAEJ,OAAO,CAACC;AACnB,CAAC;AAED,MAAMI,kBAAkB,GAAG;AAC3B;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,EAAE;AAEF,MAAMC,gBAAgB,GAAG;AACzB;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,CAAC;AAED,MAAMC,eAAe,GAAGC,iBAAI,CAACC,OAAO,CAACC,SAAS,EAAE,aAAa,CAAC;AAC9D,MAAMC,0BAA0B,GAAGH,iBAAI,CAACC,OAAO,CAC7CF,eAAe,EACf,mDACF,CAAC;AACD,MAAMK,wBAAwB,GAAGJ,iBAAI,CAACC,OAAO,CAC3CF,eAAe,EACf,wDACF,CAAC;AAED,IAAAM,gBAAQ,EAAC,4BAA4B,EAAE,MAAM;EAC3C,IAAAC,kBAAU,EAAC,MAAM;IACf,IAAAC,eAAM,EAAC;MACL,CAACR,eAAe,GAAG;QACjB,cAAc,EAAES,IAAI,CAACC,SAAS,CAACxB,eAAe;MAChD,CAAC;MACD,CAACkB,0BAA0B,GAAG;QAC5B,wBAAwB,EAAEN;MAC5B;IACF,CAAC,CAAC;EACJ,CAAC,CAAC;EAEF,IAAAa,iBAAS,EAAC,MAAM;IACdH,eAAM,CAACI,OAAO,CAAC,CAAC;EAClB,CAAC,CAAC;EAEF,IAAAC,YAAI,EAAC,gCAAgC,EAAE,YAAY;IACjD,MAAM,IAAAC,sDAA0B,EAC9Bd,eAAe,EACfd,eAAe,EACfK,UACF,CAAC;IAED,MAAMwB,WAAW,GAAGd,iBAAI,CAACC,OAAO,CAC9BF,eAAe,EACf,oCACF,CAAC;IAED,IAAAgB,cAAM,EAAC,MAAMC,gBAAE,CAACC,UAAU,CAACH,WAAW,CAAC,CAAC,CAACI,IAAI,CAAC,IAAI,CAAC;EACrD,CAAC,CAAC;EAEF,IAAAN,YAAI,EAAC,wCAAwC,EAAE,YAAY;IACzD,MAAM,IAAAC,sDAA0B,EAC9Bd,eAAe,EACfd,eAAe,EACfK,UACF,CAAC;IAED,MAAMwB,WAAW,GAAGd,iBAAI,CAACC,OAAO,CAC9BF,eAAe,EACf,oCACF,CAAC;IAED,MAAMoB,YAAY,GAAGnB,iBAAI,CAACC,OAAO,CAACa,WAAW,EAAE,wBAAwB,CAAC;IAExE,MAAMM,WAAW,GAAG,MAAMJ,gBAAE,CAACK,QAAQ,CAACF,YAAY,EAAE,MAAM,CAAC;IAE3D,IAAAJ,cAAM,EAACK,WAAW,CAAC,CAACE,SAAS,CAAC,sBAAsB,CAAC;EACvD,CAAC,CAAC;EAEF,IAAAV,YAAI,EAAC,6BAA6B,EAAE,YAAY;IAC9C,MAAM,IAAAC,sDAA0B,EAC9Bd,eAAe,EACfd,eAAe,EACfK,UACF,CAAC;IAED,IAAAyB,cAAM,EAAC,MAAMC,gBAAE,CAACC,UAAU,CAACd,0BAA0B,CAAC,CAAC,CAACe,IAAI,CAAC,KAAK,CAAC;EACrE,CAAC,CAAC;EAEF,IAAAN,YAAI,EAAC,uCAAuC,EAAE,YAAY;IACxD,MAAMW,0BAA0B,GAAG;MACjC,GAAGtC,eAAe;MAClBC,aAAa,EAAE;QACb,GAAGD,eAAe,CAACC,aAAa;QAChCsC,IAAI,EAAE;MACR;IACF,CAAC;IAED,IAAAjB,eAAM,EAAC;MACL,CAACR,eAAe,GAAG;QACjB,cAAc,EAAES,IAAI,CAACC,SAAS,CAACc,0BAA0B;MAC3D,CAAC;MACD,CAACpB,0BAA0B,GAAG;QAC5B,wBAAwB,EAAEN;MAC5B,CAAC;MACD,CAACO,wBAAwB,GAAG;QAC1B,kCAAkC,EAAEN;MACtC;IACF,CAAC,CAAC;IAEF,MAAM,IAAAe,sDAA0B,EAC9Bd,eAAe,EACfwB,0BAA0B,EAC1BjC,UACF,CAAC;IAED,IAAAyB,cAAM,EACJ,MAAMC,gBAAE,CAACC,UAAU,CACjBjB,iBAAI,CAACyB,IAAI,CAACrB,wBAAwB,EAAE,kCAAkC,CACxE,CACF,CAAC,CAACsB,UAAU,CAAC,CAAC;EAChB,CAAC,CAAC;AACJ,CAAC,CAAC","ignoreList":[]}
|
|
@@ -3,10 +3,12 @@
|
|
|
3
3
|
Object.defineProperty(exports, "__esModule", {
|
|
4
4
|
value: true
|
|
5
5
|
});
|
|
6
|
+
exports.getCodegenCLISourceSupport = getCodegenCLISourceSupport;
|
|
6
7
|
exports.removeCodegenAppLevelCode = removeCodegenAppLevelCode;
|
|
7
8
|
var _fsExtra = _interopRequireDefault(require("fs-extra"));
|
|
8
9
|
var _path = _interopRequireDefault(require("path"));
|
|
9
10
|
var _patchCodegenAndroidPackage = require("./patchCodegenAndroidPackage");
|
|
11
|
+
var _spawn = require("../../../utils/spawn");
|
|
10
12
|
function _interopRequireDefault(e) { return e && e.__esModule ? e : { default: e }; }
|
|
11
13
|
const FILES_TO_REMOVE = ['RCTAppDependencyProvider.h', 'RCTAppDependencyProvider.mm', 'RCTModulesConformingToProtocolsProvider.h', 'RCTModulesConformingToProtocolsProvider.mm', 'RCTThirdPartyComponentsProvider.h', 'RCTThirdPartyComponentsProvider.mm', 'ReactAppDependencyProvider.podspec'];
|
|
12
14
|
|
|
@@ -41,4 +43,15 @@ packageJson) {
|
|
|
41
43
|
const iosPromises = FILES_TO_REMOVE.map(fileName => _fsExtra.default.rm(_path.default.join(codegenIosPath, fileName)));
|
|
42
44
|
await Promise.allSettled([...androidPromises, ...iosPromises]);
|
|
43
45
|
}
|
|
46
|
+
|
|
47
|
+
/**
|
|
48
|
+
* Codegen generates a different set of files if the target is an app instead.
|
|
49
|
+
* The following commit adds support for a --source argument to support calling codegen as a library:
|
|
50
|
+
* https://github.com/facebook/react-native/commit/98b8f178110472e5fed97de80766c03b0b5e988c
|
|
51
|
+
* Here we just check if the --source argument is supported.
|
|
52
|
+
*/
|
|
53
|
+
async function getCodegenCLISourceSupport() {
|
|
54
|
+
const codegenCLIHelpOutput = await (0, _spawn.spawn)('npx', ['@react-native-community/cli', 'codegen', '--help']);
|
|
55
|
+
return codegenCLIHelpOutput.includes('--source');
|
|
56
|
+
}
|
|
44
57
|
//# sourceMappingURL=removeCodegenAppLevelCode.js.map
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"removeCodegenAppLevelCode.js","names":["_fsExtra","_interopRequireDefault","require","_path","_patchCodegenAndroidPackage","e","__esModule","default","FILES_TO_REMOVE","removeCodegenAppLevelCode","projectPath","packageJson","codegenAndroidPathSetting","codegenConfig","outputDir","android","Error","CODEGEN_DOCS","codegenAndroidPath","path","resolve","fs","pathExists","codegenIosPathSetting","ios","codegenIosPath","androidPromises","map","fileName","rm","join","iosPromises","Promise","allSettled"],"sources":["../../../../src/targets/codegen/patches/removeCodegenAppLevelCode.ts"],"sourcesContent":["import fs from 'fs-extra';\nimport path from 'path';\nimport { CODEGEN_DOCS } from './patchCodegenAndroidPackage';\n\nconst FILES_TO_REMOVE = [\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 * With React Native 0.77, calling `@react-native-community/cli codegen` generates\n * some app level source files such as `RCTAppDependencyProvider.mm`.\n * These files are supposed to be only generated for apps\n * but the cli misbehaves and generates them for all sorts of projects.\n * You can find the relevant PR here: https://github.com/facebook/react-native/pull/47650\n * This patch can be removed when this gets fixed in React Native.\n */\nexport async function removeCodegenAppLevelCode(\n projectPath: string,\n // eslint-disable-next-line @typescript-eslint/no-explicit-any\n packageJson: any\n) {\n const codegenAndroidPathSetting: string | undefined =\n packageJson.codegenConfig?.outputDir?.android;\n if (!codegenAndroidPathSetting) {\n throw new Error(\n `Your package.json doesn't contain codegenConfig.outputDir.android. Please see ${CODEGEN_DOCS}`\n );\n }\n const codegenAndroidPath = path.resolve(\n projectPath,\n codegenAndroidPathSetting\n );\n\n if (!(await fs.pathExists(codegenAndroidPath))) {\n throw new Error(\n `The codegen android path defined in your package.json: ${codegenAndroidPath} doesnt' exist.`\n );\n }\n\n const codegenIosPathSetting: string | undefined =\n packageJson.codegenConfig?.outputDir?.ios;\n if (!codegenIosPathSetting) {\n throw new Error(\n `Your package.json doesn't contain codegenConfig.outputDir.ios. Please see ${CODEGEN_DOCS}`\n );\n }\n const codegenIosPath = path.resolve(projectPath, codegenIosPathSetting);\n\n if (!(await fs.pathExists(codegenAndroidPath))) {\n throw new Error(\n `The codegen iOS path defined in your package.json: ${codegenIosPathSetting} doesnt' exist.`\n );\n }\n\n const androidPromises = FILES_TO_REMOVE.map((fileName) =>\n fs.rm(path.join(codegenAndroidPath, fileName))\n );\n\n const iosPromises = FILES_TO_REMOVE.map((fileName) =>\n fs.rm(path.join(codegenIosPath, fileName))\n );\n\n await Promise.allSettled([...androidPromises, ...iosPromises]);\n}\n"],"mappings":"
|
|
1
|
+
{"version":3,"file":"removeCodegenAppLevelCode.js","names":["_fsExtra","_interopRequireDefault","require","_path","_patchCodegenAndroidPackage","_spawn","e","__esModule","default","FILES_TO_REMOVE","removeCodegenAppLevelCode","projectPath","packageJson","codegenAndroidPathSetting","codegenConfig","outputDir","android","Error","CODEGEN_DOCS","codegenAndroidPath","path","resolve","fs","pathExists","codegenIosPathSetting","ios","codegenIosPath","androidPromises","map","fileName","rm","join","iosPromises","Promise","allSettled","getCodegenCLISourceSupport","codegenCLIHelpOutput","spawn","includes"],"sources":["../../../../src/targets/codegen/patches/removeCodegenAppLevelCode.ts"],"sourcesContent":["import fs from 'fs-extra';\nimport path from 'path';\nimport { CODEGEN_DOCS } from './patchCodegenAndroidPackage';\nimport { spawn } from '../../../utils/spawn';\n\nconst FILES_TO_REMOVE = [\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 * With React Native 0.77, calling `@react-native-community/cli codegen` generates\n * some app level source files such as `RCTAppDependencyProvider.mm`.\n * These files are supposed to be only generated for apps\n * but the cli misbehaves and generates them for all sorts of projects.\n * You can find the relevant PR here: https://github.com/facebook/react-native/pull/47650\n * This patch can be removed when this gets fixed in React Native.\n */\nexport async function removeCodegenAppLevelCode(\n projectPath: string,\n // eslint-disable-next-line @typescript-eslint/no-explicit-any\n packageJson: any\n) {\n const codegenAndroidPathSetting: string | undefined =\n packageJson.codegenConfig?.outputDir?.android;\n if (!codegenAndroidPathSetting) {\n throw new Error(\n `Your package.json doesn't contain codegenConfig.outputDir.android. Please see ${CODEGEN_DOCS}`\n );\n }\n const codegenAndroidPath = path.resolve(\n projectPath,\n codegenAndroidPathSetting\n );\n\n if (!(await fs.pathExists(codegenAndroidPath))) {\n throw new Error(\n `The codegen android path defined in your package.json: ${codegenAndroidPath} doesnt' exist.`\n );\n }\n\n const codegenIosPathSetting: string | undefined =\n packageJson.codegenConfig?.outputDir?.ios;\n if (!codegenIosPathSetting) {\n throw new Error(\n `Your package.json doesn't contain codegenConfig.outputDir.ios. Please see ${CODEGEN_DOCS}`\n );\n }\n const codegenIosPath = path.resolve(projectPath, codegenIosPathSetting);\n\n if (!(await fs.pathExists(codegenAndroidPath))) {\n throw new Error(\n `The codegen iOS path defined in your package.json: ${codegenIosPathSetting} doesnt' exist.`\n );\n }\n\n const androidPromises = FILES_TO_REMOVE.map((fileName) =>\n fs.rm(path.join(codegenAndroidPath, fileName))\n );\n\n const iosPromises = FILES_TO_REMOVE.map((fileName) =>\n fs.rm(path.join(codegenIosPath, fileName))\n );\n\n await Promise.allSettled([...androidPromises, ...iosPromises]);\n}\n\n/**\n * Codegen generates a different set of files if the target is an app instead.\n * The following commit adds support for a --source argument to support calling codegen as a library:\n * https://github.com/facebook/react-native/commit/98b8f178110472e5fed97de80766c03b0b5e988c\n * Here we just check if the --source argument is supported.\n */\nexport async function getCodegenCLISourceSupport(): Promise<boolean> {\n const codegenCLIHelpOutput = await spawn('npx', [\n '@react-native-community/cli',\n 'codegen',\n '--help',\n ]);\n return codegenCLIHelpOutput.includes('--source');\n}\n"],"mappings":";;;;;;;AAAA,IAAAA,QAAA,GAAAC,sBAAA,CAAAC,OAAA;AACA,IAAAC,KAAA,GAAAF,sBAAA,CAAAC,OAAA;AACA,IAAAE,2BAAA,GAAAF,OAAA;AACA,IAAAG,MAAA,GAAAH,OAAA;AAA6C,SAAAD,uBAAAK,CAAA,WAAAA,CAAA,IAAAA,CAAA,CAAAC,UAAA,GAAAD,CAAA,KAAAE,OAAA,EAAAF,CAAA;AAE7C,MAAMG,eAAe,GAAG,CACtB,4BAA4B,EAC5B,6BAA6B,EAC7B,2CAA2C,EAC3C,4CAA4C,EAC5C,mCAAmC,EACnC,oCAAoC,EACpC,oCAAoC,CACrC;;AAED;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACO,eAAeC,yBAAyBA,CAC7CC,WAAmB;AACnB;AACAC,WAAgB,EAChB;EACA,MAAMC,yBAA6C,GACjDD,WAAW,CAACE,aAAa,EAAEC,SAAS,EAAEC,OAAO;EAC/C,IAAI,CAACH,yBAAyB,EAAE;IAC9B,MAAM,IAAII,KAAK,CACb,iFAAiFC,wCAAY,EAC/F,CAAC;EACH;EACA,MAAMC,kBAAkB,GAAGC,aAAI,CAACC,OAAO,CACrCV,WAAW,EACXE,yBACF,CAAC;EAED,IAAI,EAAE,MAAMS,gBAAE,CAACC,UAAU,CAACJ,kBAAkB,CAAC,CAAC,EAAE;IAC9C,MAAM,IAAIF,KAAK,CACb,0DAA0DE,kBAAkB,iBAC9E,CAAC;EACH;EAEA,MAAMK,qBAAyC,GAC7CZ,WAAW,CAACE,aAAa,EAAEC,SAAS,EAAEU,GAAG;EAC3C,IAAI,CAACD,qBAAqB,EAAE;IAC1B,MAAM,IAAIP,KAAK,CACb,6EAA6EC,wCAAY,EAC3F,CAAC;EACH;EACA,MAAMQ,cAAc,GAAGN,aAAI,CAACC,OAAO,CAACV,WAAW,EAAEa,qBAAqB,CAAC;EAEvE,IAAI,EAAE,MAAMF,gBAAE,CAACC,UAAU,CAACJ,kBAAkB,CAAC,CAAC,EAAE;IAC9C,MAAM,IAAIF,KAAK,CACb,sDAAsDO,qBAAqB,iBAC7E,CAAC;EACH;EAEA,MAAMG,eAAe,GAAGlB,eAAe,CAACmB,GAAG,CAAEC,QAAQ,IACnDP,gBAAE,CAACQ,EAAE,CAACV,aAAI,CAACW,IAAI,CAACZ,kBAAkB,EAAEU,QAAQ,CAAC,CAC/C,CAAC;EAED,MAAMG,WAAW,GAAGvB,eAAe,CAACmB,GAAG,CAAEC,QAAQ,IAC/CP,gBAAE,CAACQ,EAAE,CAACV,aAAI,CAACW,IAAI,CAACL,cAAc,EAAEG,QAAQ,CAAC,CAC3C,CAAC;EAED,MAAMI,OAAO,CAACC,UAAU,CAAC,CAAC,GAAGP,eAAe,EAAE,GAAGK,WAAW,CAAC,CAAC;AAChE;;AAEA;AACA;AACA;AACA;AACA;AACA;AACO,eAAeG,0BAA0BA,CAAA,EAAqB;EACnE,MAAMC,oBAAoB,GAAG,MAAM,IAAAC,YAAK,EAAC,KAAK,EAAE,CAC9C,6BAA6B,EAC7B,SAAS,EACT,QAAQ,CACT,CAAC;EACF,OAAOD,oBAAoB,CAACE,QAAQ,CAAC,UAAU,CAAC;AAClD","ignoreList":[]}
|
|
@@ -1,6 +1,6 @@
|
|
|
1
1
|
"use strict";
|
|
2
2
|
|
|
3
|
-
var
|
|
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,
|
|
19
|
-
(0,
|
|
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,
|
|
48
|
+
(0, _vitest.afterEach)(() => {
|
|
49
49
|
_mockFs.default.restore();
|
|
50
50
|
});
|
|
51
|
-
(0,
|
|
51
|
+
(0, _vitest.test)('removes the duplicate iOS files', async () => {
|
|
52
52
|
await (0, _removeCodegenAppLevelCode.removeCodegenAppLevelCode)(mockProjectPath, mockPackageJson);
|
|
53
|
-
(0,
|
|
53
|
+
(0, _vitest.expect)((await _fsExtra.default.promises.readdir(_nodePath.default.join(mockProjectPath, 'ios', 'generated'))).length).toBe(0);
|
|
54
54
|
});
|
|
55
|
-
(0,
|
|
55
|
+
(0, _vitest.test)('removes the unnecessary Android files', async () => {
|
|
56
56
|
await (0, _removeCodegenAppLevelCode.removeCodegenAppLevelCode)(mockProjectPath, mockPackageJson);
|
|
57
|
-
(0,
|
|
57
|
+
(0, _vitest.expect)((await _fsExtra.default.promises.readdir(_nodePath.default.join(mockProjectPath, 'android', 'generated'))).length).toBe(0);
|
|
58
58
|
});
|
|
59
|
-
(0,
|
|
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,
|
|
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":["
|
|
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
|
|
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}
|
|
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
|
-
|
|
20
|
-
|
|
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.
|
|
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": "
|
|
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-
|
|
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": "
|
|
85
|
+
"gitHead": "92fad2c26ca1bb44088285163068d1dc220224cc"
|
|
92
86
|
}
|