react-native-builder-bob 0.33.1 → 0.33.3
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/lib/__tests__/{patchCodegen.test.js → patchCodegenAndroidPackage.test.js} +6 -6
- package/lib/__tests__/patchCodegenAndroidPackage.test.js.map +1 -0
- package/lib/targets/codegen.js +9 -2
- package/lib/targets/codegen.js.map +1 -1
- package/lib/targets/typescript.js +6 -6
- package/lib/targets/typescript.js.map +1 -1
- package/lib/utils/{patchCodegen.js → patchCodegenAndroidPackage.js} +3 -3
- package/lib/utils/patchCodegenAndroidPackage.js.map +1 -0
- package/package.json +2 -2
- package/lib/__tests__/patchCodegen.test.js.map +0 -1
- package/lib/utils/patchCodegen.js.map +0 -1
|
@@ -3,7 +3,7 @@
|
|
|
3
3
|
var _globals = require("@jest/globals");
|
|
4
4
|
var _fsExtra = _interopRequireDefault(require("fs-extra"));
|
|
5
5
|
var _nodePath = _interopRequireDefault(require("node:path"));
|
|
6
|
-
var
|
|
6
|
+
var _patchCodegenAndroidPackage = require("../utils/patchCodegenAndroidPackage");
|
|
7
7
|
var _mockFs = _interopRequireDefault(require("mock-fs"));
|
|
8
8
|
function _interopRequireDefault(e) { return e && e.__esModule ? e : { default: e }; }
|
|
9
9
|
const mockPackageJson = {
|
|
@@ -38,7 +38,7 @@ class SomeClass {
|
|
|
38
38
|
}`;
|
|
39
39
|
const mockProjectPath = _nodePath.default.resolve(__dirname, 'mockProject');
|
|
40
40
|
const mockCodegenSpecsPath = _nodePath.default.resolve(mockProjectPath, 'android/generated/java/com/facebook/fbreact/specs');
|
|
41
|
-
(0, _globals.describe)('
|
|
41
|
+
(0, _globals.describe)('patchCodegenAndroidPackage', () => {
|
|
42
42
|
(0, _globals.beforeEach)(() => {
|
|
43
43
|
(0, _mockFs.default)({
|
|
44
44
|
[mockProjectPath]: {
|
|
@@ -53,20 +53,20 @@ const mockCodegenSpecsPath = _nodePath.default.resolve(mockProjectPath, 'android
|
|
|
53
53
|
_mockFs.default.restore();
|
|
54
54
|
});
|
|
55
55
|
(0, _globals.it)('moves the files to correct dir', async () => {
|
|
56
|
-
await (0,
|
|
56
|
+
await (0, _patchCodegenAndroidPackage.patchCodegenAndroidPackage)(mockProjectPath, mockPackageJson, mockReport);
|
|
57
57
|
const expectedDir = _nodePath.default.resolve(mockProjectPath, 'android/generated/java/com/bobtest');
|
|
58
58
|
(0, _globals.expect)(await _fsExtra.default.pathExists(expectedDir)).toBe(true);
|
|
59
59
|
});
|
|
60
60
|
(0, _globals.it)('replaces the package name in the files', async () => {
|
|
61
|
-
await (0,
|
|
61
|
+
await (0, _patchCodegenAndroidPackage.patchCodegenAndroidPackage)(mockProjectPath, mockPackageJson, mockReport);
|
|
62
62
|
const expectedDir = _nodePath.default.resolve(mockProjectPath, 'android/generated/java/com/bobtest');
|
|
63
63
|
const expectedFile = _nodePath.default.resolve(expectedDir, 'NativeBobtestSpec.java');
|
|
64
64
|
const fileContent = await _fsExtra.default.readFile(expectedFile, 'utf8');
|
|
65
65
|
(0, _globals.expect)(fileContent).toContain('package com.bobtest;');
|
|
66
66
|
});
|
|
67
67
|
(0, _globals.it)('removes the old package dir', async () => {
|
|
68
|
-
await (0,
|
|
68
|
+
await (0, _patchCodegenAndroidPackage.patchCodegenAndroidPackage)(mockProjectPath, mockPackageJson, mockReport);
|
|
69
69
|
(0, _globals.expect)(await _fsExtra.default.pathExists(mockCodegenSpecsPath)).toBe(false);
|
|
70
70
|
});
|
|
71
71
|
});
|
|
72
|
-
//# sourceMappingURL=
|
|
72
|
+
//# sourceMappingURL=patchCodegenAndroidPackage.test.js.map
|
|
@@ -0,0 +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","mockJavaSpec","mockProjectPath","path","resolve","__dirname","mockCodegenSpecsPath","describe","beforeEach","mockfs","JSON","stringify","afterEach","restore","it","patchCodegenAndroidPackage","expectedDir","expect","fs","pathExists","toBe","expectedFile","fileContent","readFile","toContain"],"sources":["../../src/__tests__/patchCodegenAndroidPackage.test.ts"],"sourcesContent":["import { expect, it, describe, beforeEach, afterEach } from '@jest/globals';\nimport fs from 'fs-extra';\nimport path from 'node:path';\nimport { patchCodegenAndroidPackage } from '../utils/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.log,\n success: console.log,\n};\n\nconst mockJavaSpec = `\n/**\n * Some comment\n */\n\npackage com.bobtest;\n\nimport com.example.exampleimport;\n\nclass SomeClass {\n public void someMethod() {\n // some code\n }\n}`;\n\nconst mockProjectPath = path.resolve(__dirname, 'mockProject');\nconst mockCodegenSpecsPath = path.resolve(\n mockProjectPath,\n 'android/generated/java/com/facebook/fbreact/specs'\n);\n\ndescribe('patchCodegenAndroidPackage', () => {\n beforeEach(() => {\n mockfs({\n [mockProjectPath]: {\n 'package.json': JSON.stringify(mockPackageJson),\n },\n [mockCodegenSpecsPath]: {\n 'NativeBobtestSpec.java': mockJavaSpec,\n },\n });\n });\n\n afterEach(() => {\n mockfs.restore();\n });\n\n it('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 it('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 it('removes the old package dir', async () => {\n await patchCodegenAndroidPackage(\n mockProjectPath,\n mockPackageJson,\n mockReport\n );\n\n expect(await fs.pathExists(mockCodegenSpecsPath)).toBe(false);\n });\n});\n"],"mappings":";;AAAA,IAAAA,QAAA,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,CAACC,GAAG;EAClBG,OAAO,EAAEJ,OAAO,CAACC;AACnB,CAAC;AAED,MAAMI,YAAY,GAAG;AACrB;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,EAAE;AAEF,MAAMC,eAAe,GAAGC,iBAAI,CAACC,OAAO,CAACC,SAAS,EAAE,aAAa,CAAC;AAC9D,MAAMC,oBAAoB,GAAGH,iBAAI,CAACC,OAAO,CACvCF,eAAe,EACf,mDACF,CAAC;AAED,IAAAK,iBAAQ,EAAC,4BAA4B,EAAE,MAAM;EAC3C,IAAAC,mBAAU,EAAC,MAAM;IACf,IAAAC,eAAM,EAAC;MACL,CAACP,eAAe,GAAG;QACjB,cAAc,EAAEQ,IAAI,CAACC,SAAS,CAACtB,eAAe;MAChD,CAAC;MACD,CAACiB,oBAAoB,GAAG;QACtB,wBAAwB,EAAEL;MAC5B;IACF,CAAC,CAAC;EACJ,CAAC,CAAC;EAEF,IAAAW,kBAAS,EAAC,MAAM;IACdH,eAAM,CAACI,OAAO,CAAC,CAAC;EAClB,CAAC,CAAC;EAEF,IAAAC,WAAE,EAAC,gCAAgC,EAAE,YAAY;IAC/C,MAAM,IAAAC,sDAA0B,EAC9Bb,eAAe,EACfb,eAAe,EACfK,UACF,CAAC;IAED,MAAMsB,WAAW,GAAGb,iBAAI,CAACC,OAAO,CAC9BF,eAAe,EACf,oCACF,CAAC;IAED,IAAAe,eAAM,EAAC,MAAMC,gBAAE,CAACC,UAAU,CAACH,WAAW,CAAC,CAAC,CAACI,IAAI,CAAC,IAAI,CAAC;EACrD,CAAC,CAAC;EAEF,IAAAN,WAAE,EAAC,wCAAwC,EAAE,YAAY;IACvD,MAAM,IAAAC,sDAA0B,EAC9Bb,eAAe,EACfb,eAAe,EACfK,UACF,CAAC;IAED,MAAMsB,WAAW,GAAGb,iBAAI,CAACC,OAAO,CAC9BF,eAAe,EACf,oCACF,CAAC;IAED,MAAMmB,YAAY,GAAGlB,iBAAI,CAACC,OAAO,CAACY,WAAW,EAAE,wBAAwB,CAAC;IAExE,MAAMM,WAAW,GAAG,MAAMJ,gBAAE,CAACK,QAAQ,CAACF,YAAY,EAAE,MAAM,CAAC;IAE3D,IAAAJ,eAAM,EAACK,WAAW,CAAC,CAACE,SAAS,CAAC,sBAAsB,CAAC;EACvD,CAAC,CAAC;EAEF,IAAAV,WAAE,EAAC,6BAA6B,EAAE,YAAY;IAC5C,MAAM,IAAAC,sDAA0B,EAC9Bb,eAAe,EACfb,eAAe,EACfK,UACF,CAAC;IAED,IAAAuB,eAAM,EAAC,MAAMC,gBAAE,CAACC,UAAU,CAACb,oBAAoB,CAAC,CAAC,CAACc,IAAI,CAAC,KAAK,CAAC;EAC/D,CAAC,CAAC;AACJ,CAAC,CAAC","ignoreList":[]}
|
package/lib/targets/codegen.js
CHANGED
|
@@ -5,7 +5,7 @@ Object.defineProperty(exports, "__esModule", {
|
|
|
5
5
|
});
|
|
6
6
|
exports.default = build;
|
|
7
7
|
var _kleur = _interopRequireDefault(require("kleur"));
|
|
8
|
-
var
|
|
8
|
+
var _patchCodegenAndroidPackage = require("../utils/patchCodegenAndroidPackage");
|
|
9
9
|
var _fsExtra = _interopRequireDefault(require("fs-extra"));
|
|
10
10
|
var _path = _interopRequireDefault(require("path"));
|
|
11
11
|
var _del = _interopRequireDefault(require("del"));
|
|
@@ -27,9 +27,16 @@ async function build({
|
|
|
27
27
|
report.info(`Cleaning up previous Android codegen native code at ${_kleur.default.blue(_path.default.relative(root, codegenAndroidPath))}`);
|
|
28
28
|
await (0, _del.default)([codegenAndroidPath]);
|
|
29
29
|
}
|
|
30
|
+
const codegenType = packageJson.codegenConfig?.type;
|
|
31
|
+
if (codegenType === undefined) {
|
|
32
|
+
report.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");
|
|
33
|
+
process.exit(1);
|
|
34
|
+
}
|
|
30
35
|
try {
|
|
31
36
|
await (0, _runRNCCli.runRNCCli)(['codegen']);
|
|
32
|
-
|
|
37
|
+
if (codegenType === 'modules' || codegenType === 'all') {
|
|
38
|
+
await (0, _patchCodegenAndroidPackage.patchCodegenAndroidPackage)(root, packageJson, report);
|
|
39
|
+
}
|
|
33
40
|
report.success('Generated native code with codegen');
|
|
34
41
|
} catch (e) {
|
|
35
42
|
if (e != null && typeof e === 'object') {
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"codegen.js","names":["_kleur","_interopRequireDefault","require","
|
|
1
|
+
{"version":3,"file":"codegen.js","names":["_kleur","_interopRequireDefault","require","_patchCodegenAndroidPackage","_fsExtra","_path","_del","_runRNCCli","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","process","exit","runRNCCli","patchCodegenAndroidPackage","success","stdout","toString","message","includes"],"sources":["../../src/targets/codegen.ts"],"sourcesContent":["import kleur from 'kleur';\nimport type { Input } from '../types';\nimport { patchCodegenAndroidPackage } from '../utils/patchCodegenAndroidPackage';\nimport fs from 'fs-extra';\nimport path from 'path';\nimport del from 'del';\nimport { runRNCCli } from '../utils/runRNCCli';\n\ntype Options = Input;\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 report.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 process.exit(1);\n }\n\n try {\n await runRNCCli(['codegen']);\n\n if (codegenType === 'modules' || codegenType === 'all') {\n await patchCodegenAndroidPackage(root, packageJson, report);\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 generating codegen files:\\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 } else {\n report.error(e.message);\n }\n } else {\n throw e;\n }\n } else {\n throw e;\n }\n\n process.exit(1);\n }\n}\n"],"mappings":"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","ignoreList":[]}
|
|
@@ -83,18 +83,18 @@ async function build({
|
|
|
83
83
|
if (tsc == null || !(await _fsExtra.default.pathExists(tsc))) {
|
|
84
84
|
throw new Error(`The ${_kleur.default.blue('tsc')} binary doesn't seem to be installed under ${_kleur.default.blue('node_modules')} or present in $PATH. Make sure you have added ${_kleur.default.blue('typescript')} to your ${_kleur.default.blue('devDependencies')} or specify the ${_kleur.default.blue('tsc')} option for typescript.`);
|
|
85
85
|
}
|
|
86
|
-
const tsbuildinfo = _path.default.join(output, project.replace(/\.json$/, '.tsbuildinfo'));
|
|
87
|
-
try {
|
|
88
|
-
await (0, _del.default)([tsbuildinfo]);
|
|
89
|
-
} catch (e) {
|
|
90
|
-
// Ignore
|
|
91
|
-
}
|
|
92
86
|
const outputs = options?.esm ? {
|
|
93
87
|
commonjs: _path.default.join(output, 'commonjs'),
|
|
94
88
|
module: _path.default.join(output, 'module')
|
|
95
89
|
} : {
|
|
96
90
|
commonjs: output
|
|
97
91
|
};
|
|
92
|
+
const tsbuildinfo = _path.default.join(outputs.commonjs, project.replace(/\.json$/, '.tsbuildinfo'));
|
|
93
|
+
try {
|
|
94
|
+
await (0, _del.default)([tsbuildinfo]);
|
|
95
|
+
} catch (e) {
|
|
96
|
+
// Ignore
|
|
97
|
+
}
|
|
98
98
|
const result = _crossSpawn.default.sync(tsc, ['--pretty', '--declaration', '--declarationMap', '--noEmit', 'false', '--emitDeclarationOnly', '--project', project, '--outDir', outputs.commonjs], {
|
|
99
99
|
stdio: 'inherit',
|
|
100
100
|
cwd: root
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"typescript.js","names":["_kleur","_interopRequireDefault","require","_path","_fsExtra","_which","_crossSpawn","_del","_json","_os","e","__esModule","default","build","source","root","output","report","options","info","kleur","blue","path","relative","del","project","tsconfig","join","fs","pathExists","config","JSON5","parse","readFile","compilerOptions","conflicts","declarationDir","push","outDir","length","warn","reduce","acc","curr","gray","yellow","Error","tsc","resolve","execpath","process","env","npm_execpath","cli","split","pop","includes","result","spawn","sync","stdio","encoding","cwd","stdout","trim","platform","endsWith","which","tsbuildinfo","replace","outputs","esm","commonjs","module","status","copy","writeJSON","type","success","pkg","JSON","fields","name","value","types","error","exports","import","getGeneratedTypesPath","field","indexDTsName","basename","potentialPaths","dirname","potentialPath","invalidFieldNames","Promise","all","map","startsWith","test","generatedTypesPath","filter","validFields","every","suggestedTypesPaths","i","self","indexOf","toString","message"],"sources":["../../src/targets/typescript.ts"],"sourcesContent":["import kleur from 'kleur';\nimport path from 'path';\nimport fs from 'fs-extra';\nimport which from 'which';\nimport spawn from 'cross-spawn';\nimport del from 'del';\nimport JSON5 from 'json5';\nimport { platform } from 'os';\nimport type { Input } from '../types';\n\ntype Options = Input & {\n options?: {\n esm?: boolean;\n project?: string;\n tsc?: string;\n };\n};\n\ntype Field = {\n name: string;\n value: string | undefined;\n output: string | undefined;\n error: boolean;\n};\n\nexport default async function build({\n source,\n root,\n output,\n report,\n options,\n}: Options) {\n report.info(\n `Cleaning up previous build at ${kleur.blue(path.relative(root, output))}`\n );\n\n await del([output]);\n\n report.info(`Generating type definitions with ${kleur.blue('tsc')}`);\n\n const project = options?.project ? options.project : 'tsconfig.json';\n const tsconfig = path.join(root, project);\n\n try {\n if (await fs.pathExists(tsconfig)) {\n try {\n const config = JSON5.parse(await fs.readFile(tsconfig, 'utf-8'));\n\n if (config.compilerOptions) {\n const conflicts: string[] = [];\n\n if (config.compilerOptions.declarationDir) {\n conflicts.push('compilerOptions.declarationDir');\n }\n\n if (\n config.compilerOptions.outDir &&\n path.join(root, config.compilerOptions.outDir) !== output\n ) {\n conflicts.push('compilerOptions.outDir');\n }\n\n if (conflicts.length) {\n report.warn(\n `Found following options in the config file which can conflict with the CLI options. Please remove them from ${kleur.blue(\n project\n )}:${conflicts.reduce(\n (acc, curr) =>\n acc + `\\n${kleur.gray('-')} ${kleur.yellow(curr)}`,\n ''\n )}`\n );\n }\n }\n } catch (e) {\n report.warn(\n `Couldn't parse '${project}'. There might be validation errors.`\n );\n }\n } else {\n throw new Error(\n `Couldn't find a ${kleur.blue('tsconfig.json')} in the project root.`\n );\n }\n\n let tsc;\n\n if (options?.tsc) {\n tsc = path.resolve(root, options.tsc);\n\n if (!(await fs.pathExists(tsc))) {\n throw new Error(\n `The ${kleur.blue(\n 'tsc'\n )} binary doesn't seem to be installed at ${kleur.blue(\n tsc\n )}. Please specify the correct path in options or remove it to use the workspace's version.`\n );\n }\n } else {\n const execpath = process.env.npm_execpath;\n const cli = execpath?.split('/').pop()?.includes('yarn') ? 'yarn' : 'npm';\n\n if (cli === 'yarn') {\n const result = spawn.sync('yarn', ['bin', 'tsc'], {\n stdio: 'pipe',\n encoding: 'utf-8',\n cwd: root,\n });\n\n tsc = result.stdout.trim();\n } else {\n tsc = path.resolve(root, 'node_modules', '.bin', 'tsc');\n }\n\n if (platform() === 'win32' && !tsc.endsWith('.cmd')) {\n tsc += '.cmd';\n }\n }\n\n if (!(await fs.pathExists(tsc))) {\n try {\n tsc = await which('tsc');\n\n if (await fs.pathExists(tsc)) {\n report.warn(\n `Failed to locate ${kleur.blue(\n 'tsc'\n )} in the workspace. Falling back to the binary found in ${kleur.blue(\n 'PATH'\n )} at ${kleur.blue(tsc)}. Consider adding ${kleur.blue(\n 'typescript'\n )} to your ${kleur.blue(\n 'devDependencies'\n )} or specifying the ${kleur.blue(\n 'tsc'\n )} option for the typescript target.`\n );\n }\n } catch (e) {\n // Ignore\n }\n }\n\n if (tsc == null || !(await fs.pathExists(tsc))) {\n throw new Error(\n `The ${kleur.blue(\n 'tsc'\n )} binary doesn't seem to be installed under ${kleur.blue(\n 'node_modules'\n )} or present in $PATH. Make sure you have added ${kleur.blue(\n 'typescript'\n )} to your ${kleur.blue('devDependencies')} or specify the ${kleur.blue(\n 'tsc'\n )} option for typescript.`\n );\n }\n\n const tsbuildinfo = path.join(\n output,\n project.replace(/\\.json$/, '.tsbuildinfo')\n );\n\n try {\n await del([tsbuildinfo]);\n } catch (e) {\n // Ignore\n }\n\n const outputs = options?.esm\n ? {\n commonjs: path.join(output, 'commonjs'),\n module: path.join(output, 'module'),\n }\n : { commonjs: output };\n\n const result = spawn.sync(\n tsc,\n [\n '--pretty',\n '--declaration',\n '--declarationMap',\n '--noEmit',\n 'false',\n '--emitDeclarationOnly',\n '--project',\n project,\n '--outDir',\n outputs.commonjs,\n ],\n {\n stdio: 'inherit',\n cwd: root,\n }\n );\n\n if (result.status === 0) {\n await del([tsbuildinfo]);\n\n if (outputs?.module) {\n // When ESM compatible output is enabled, we need to generate 2 builds for commonjs and esm\n // In this case we copy the already generated types, and add `package.json` with `type` field\n await fs.copy(outputs.commonjs, outputs.module);\n await fs.writeJSON(path.join(outputs.commonjs, 'package.json'), {\n type: 'commonjs',\n });\n await fs.writeJSON(path.join(outputs.module, 'package.json'), {\n type: 'module',\n });\n }\n\n report.success(\n `Wrote definition files to ${kleur.blue(path.relative(root, output))}`\n );\n\n const pkg = JSON.parse(\n await fs.readFile(path.join(root, 'package.json'), 'utf-8')\n );\n\n const fields: Field[] = [\n {\n name: 'types',\n value: pkg.types,\n output: outputs.commonjs,\n error: false,\n },\n ...(pkg.exports?.['.']?.types\n ? [\n {\n name: \"exports['.'].types\",\n value: pkg.exports?.['.']?.types,\n output: outputs.commonjs,\n error: options?.esm === true,\n },\n ]\n : []),\n {\n name: \"exports['.'].import.types\",\n value: pkg.exports?.['.']?.import?.types,\n output: outputs.module,\n error: !options?.esm,\n },\n {\n name: \"exports['.'].require.types\",\n value: pkg.exports?.['.']?.require?.types,\n output: outputs.commonjs,\n error: !options?.esm,\n },\n ];\n\n const getGeneratedTypesPath = async (field: Field) => {\n if (!field.output || field.error) {\n return null;\n }\n\n if (pkg.source) {\n const indexDTsName =\n path.basename(pkg.source).replace(/\\.(jsx?|tsx?)$/, '') + '.d.ts';\n\n const potentialPaths = [\n path.join(field.output, path.dirname(pkg.source), indexDTsName),\n path.join(\n field.output,\n path.relative(source, path.join(root, path.dirname(pkg.source))),\n indexDTsName\n ),\n ];\n\n for (const potentialPath of potentialPaths) {\n if (await fs.pathExists(potentialPath)) {\n return path.relative(root, potentialPath);\n }\n }\n }\n\n return null;\n };\n\n const invalidFieldNames = (\n await Promise.all(\n fields.map(async (field) => {\n if (field.error) {\n if (field.value) {\n report.warn(\n `The ${kleur.blue(field.name)} field in ${kleur.blue(\n `package.json`\n )} should not be set when the ${kleur.blue(\n 'esm'\n )} option is ${options?.esm ? 'enabled' : 'disabled'}.`\n );\n }\n\n return null;\n }\n\n if (\n field.name.startsWith('exports') &&\n field.value &&\n !/^\\.\\//.test(field.value)\n ) {\n report.error(\n `The ${kleur.blue(field.name)} field in ${kleur.blue(\n `package.json`\n )} should be a relative path starting with ${kleur.blue(\n './'\n )}. Found: ${kleur.blue(field.value)}`\n );\n\n return field.name;\n }\n\n if (\n field.value &&\n !(await fs.pathExists(path.join(root, field.value)))\n ) {\n const generatedTypesPath = await getGeneratedTypesPath(field);\n\n report.error(\n `The ${kleur.blue(field.name)} field in ${kleur.blue(\n 'package.json'\n )} points to a non-existent file: ${kleur.blue(\n field.value\n )}.\\nVerify the path points to the correct file under ${kleur.blue(\n path.relative(root, output)\n )}${\n generatedTypesPath\n ? ` (found ${kleur.blue(generatedTypesPath)}).`\n : '.'\n }`\n );\n\n return field.name;\n }\n\n return null;\n })\n )\n ).filter((name): name is string => name != null);\n\n if (invalidFieldNames.length) {\n throw new Error(\n `Found errors for fields: ${invalidFieldNames.join(', ')}.`\n );\n }\n\n const validFields = fields.filter((field) => !field.error);\n\n if (validFields.every((field) => field.value == null)) {\n const suggestedTypesPaths = (\n await Promise.all(\n validFields.map((field) => getGeneratedTypesPath(field))\n )\n )\n .filter((path): path is string => path != null)\n .filter((path, i, self) => self.indexOf(path) === i);\n\n report.warn(\n `No ${validFields\n .map((field) => kleur.blue(field.name))\n .join(' or ')} field found in ${kleur.blue(\n 'package.json'\n )}. Consider ${\n suggestedTypesPaths.length\n ? `pointing to ${suggestedTypesPaths\n .map((path) => kleur.blue(path))\n .join(' or ')}`\n : `adding ${validFields.length > 1 ? 'them' : 'it'}`\n } so that consumers of your package can use the typescript definitions.`\n );\n }\n } else {\n throw new Error('Failed to build definition files.');\n }\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 when building definition files:\\n${e.stdout.toString()}`\n );\n } else if ('message' in e && typeof e.message === 'string') {\n report.error(e.message);\n } else {\n throw e;\n }\n } else {\n throw e;\n }\n\n throw new Error('Failed to build definition files.');\n }\n}\n"],"mappings":"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","ignoreList":[]}
|
|
1
|
+
{"version":3,"file":"typescript.js","names":["_kleur","_interopRequireDefault","require","_path","_fsExtra","_which","_crossSpawn","_del","_json","_os","e","__esModule","default","build","source","root","output","report","options","info","kleur","blue","path","relative","del","project","tsconfig","join","fs","pathExists","config","JSON5","parse","readFile","compilerOptions","conflicts","declarationDir","push","outDir","length","warn","reduce","acc","curr","gray","yellow","Error","tsc","resolve","execpath","process","env","npm_execpath","cli","split","pop","includes","result","spawn","sync","stdio","encoding","cwd","stdout","trim","platform","endsWith","which","outputs","esm","commonjs","module","tsbuildinfo","replace","status","copy","writeJSON","type","success","pkg","JSON","fields","name","value","types","error","exports","import","getGeneratedTypesPath","field","indexDTsName","basename","potentialPaths","dirname","potentialPath","invalidFieldNames","Promise","all","map","startsWith","test","generatedTypesPath","filter","validFields","every","suggestedTypesPaths","i","self","indexOf","toString","message"],"sources":["../../src/targets/typescript.ts"],"sourcesContent":["import kleur from 'kleur';\nimport path from 'path';\nimport fs from 'fs-extra';\nimport which from 'which';\nimport spawn from 'cross-spawn';\nimport del from 'del';\nimport JSON5 from 'json5';\nimport { platform } from 'os';\nimport type { Input } from '../types';\n\ntype Options = Input & {\n options?: {\n esm?: boolean;\n project?: string;\n tsc?: string;\n };\n};\n\ntype Field = {\n name: string;\n value: string | undefined;\n output: string | undefined;\n error: boolean;\n};\n\nexport default async function build({\n source,\n root,\n output,\n report,\n options,\n}: Options) {\n report.info(\n `Cleaning up previous build at ${kleur.blue(path.relative(root, output))}`\n );\n\n await del([output]);\n\n report.info(`Generating type definitions with ${kleur.blue('tsc')}`);\n\n const project = options?.project ? options.project : 'tsconfig.json';\n const tsconfig = path.join(root, project);\n\n try {\n if (await fs.pathExists(tsconfig)) {\n try {\n const config = JSON5.parse(await fs.readFile(tsconfig, 'utf-8'));\n\n if (config.compilerOptions) {\n const conflicts: string[] = [];\n\n if (config.compilerOptions.declarationDir) {\n conflicts.push('compilerOptions.declarationDir');\n }\n\n if (\n config.compilerOptions.outDir &&\n path.join(root, config.compilerOptions.outDir) !== output\n ) {\n conflicts.push('compilerOptions.outDir');\n }\n\n if (conflicts.length) {\n report.warn(\n `Found following options in the config file which can conflict with the CLI options. Please remove them from ${kleur.blue(\n project\n )}:${conflicts.reduce(\n (acc, curr) =>\n acc + `\\n${kleur.gray('-')} ${kleur.yellow(curr)}`,\n ''\n )}`\n );\n }\n }\n } catch (e) {\n report.warn(\n `Couldn't parse '${project}'. There might be validation errors.`\n );\n }\n } else {\n throw new Error(\n `Couldn't find a ${kleur.blue('tsconfig.json')} in the project root.`\n );\n }\n\n let tsc;\n\n if (options?.tsc) {\n tsc = path.resolve(root, options.tsc);\n\n if (!(await fs.pathExists(tsc))) {\n throw new Error(\n `The ${kleur.blue(\n 'tsc'\n )} binary doesn't seem to be installed at ${kleur.blue(\n tsc\n )}. Please specify the correct path in options or remove it to use the workspace's version.`\n );\n }\n } else {\n const execpath = process.env.npm_execpath;\n const cli = execpath?.split('/').pop()?.includes('yarn') ? 'yarn' : 'npm';\n\n if (cli === 'yarn') {\n const result = spawn.sync('yarn', ['bin', 'tsc'], {\n stdio: 'pipe',\n encoding: 'utf-8',\n cwd: root,\n });\n\n tsc = result.stdout.trim();\n } else {\n tsc = path.resolve(root, 'node_modules', '.bin', 'tsc');\n }\n\n if (platform() === 'win32' && !tsc.endsWith('.cmd')) {\n tsc += '.cmd';\n }\n }\n\n if (!(await fs.pathExists(tsc))) {\n try {\n tsc = await which('tsc');\n\n if (await fs.pathExists(tsc)) {\n report.warn(\n `Failed to locate ${kleur.blue(\n 'tsc'\n )} in the workspace. Falling back to the binary found in ${kleur.blue(\n 'PATH'\n )} at ${kleur.blue(tsc)}. Consider adding ${kleur.blue(\n 'typescript'\n )} to your ${kleur.blue(\n 'devDependencies'\n )} or specifying the ${kleur.blue(\n 'tsc'\n )} option for the typescript target.`\n );\n }\n } catch (e) {\n // Ignore\n }\n }\n\n if (tsc == null || !(await fs.pathExists(tsc))) {\n throw new Error(\n `The ${kleur.blue(\n 'tsc'\n )} binary doesn't seem to be installed under ${kleur.blue(\n 'node_modules'\n )} or present in $PATH. Make sure you have added ${kleur.blue(\n 'typescript'\n )} to your ${kleur.blue('devDependencies')} or specify the ${kleur.blue(\n 'tsc'\n )} option for typescript.`\n );\n }\n\n const outputs = options?.esm\n ? {\n commonjs: path.join(output, 'commonjs'),\n module: path.join(output, 'module'),\n }\n : { commonjs: output };\n\n const tsbuildinfo = path.join(\n outputs.commonjs,\n project.replace(/\\.json$/, '.tsbuildinfo')\n );\n\n try {\n await del([tsbuildinfo]);\n } catch (e) {\n // Ignore\n }\n\n const result = spawn.sync(\n tsc,\n [\n '--pretty',\n '--declaration',\n '--declarationMap',\n '--noEmit',\n 'false',\n '--emitDeclarationOnly',\n '--project',\n project,\n '--outDir',\n outputs.commonjs,\n ],\n {\n stdio: 'inherit',\n cwd: root,\n }\n );\n\n if (result.status === 0) {\n await del([tsbuildinfo]);\n\n if (outputs?.module) {\n // When ESM compatible output is enabled, we need to generate 2 builds for commonjs and esm\n // In this case we copy the already generated types, and add `package.json` with `type` field\n await fs.copy(outputs.commonjs, outputs.module);\n await fs.writeJSON(path.join(outputs.commonjs, 'package.json'), {\n type: 'commonjs',\n });\n await fs.writeJSON(path.join(outputs.module, 'package.json'), {\n type: 'module',\n });\n }\n\n report.success(\n `Wrote definition files to ${kleur.blue(path.relative(root, output))}`\n );\n\n const pkg = JSON.parse(\n await fs.readFile(path.join(root, 'package.json'), 'utf-8')\n );\n\n const fields: Field[] = [\n {\n name: 'types',\n value: pkg.types,\n output: outputs.commonjs,\n error: false,\n },\n ...(pkg.exports?.['.']?.types\n ? [\n {\n name: \"exports['.'].types\",\n value: pkg.exports?.['.']?.types,\n output: outputs.commonjs,\n error: options?.esm === true,\n },\n ]\n : []),\n {\n name: \"exports['.'].import.types\",\n value: pkg.exports?.['.']?.import?.types,\n output: outputs.module,\n error: !options?.esm,\n },\n {\n name: \"exports['.'].require.types\",\n value: pkg.exports?.['.']?.require?.types,\n output: outputs.commonjs,\n error: !options?.esm,\n },\n ];\n\n const getGeneratedTypesPath = async (field: Field) => {\n if (!field.output || field.error) {\n return null;\n }\n\n if (pkg.source) {\n const indexDTsName =\n path.basename(pkg.source).replace(/\\.(jsx?|tsx?)$/, '') + '.d.ts';\n\n const potentialPaths = [\n path.join(field.output, path.dirname(pkg.source), indexDTsName),\n path.join(\n field.output,\n path.relative(source, path.join(root, path.dirname(pkg.source))),\n indexDTsName\n ),\n ];\n\n for (const potentialPath of potentialPaths) {\n if (await fs.pathExists(potentialPath)) {\n return path.relative(root, potentialPath);\n }\n }\n }\n\n return null;\n };\n\n const invalidFieldNames = (\n await Promise.all(\n fields.map(async (field) => {\n if (field.error) {\n if (field.value) {\n report.warn(\n `The ${kleur.blue(field.name)} field in ${kleur.blue(\n `package.json`\n )} should not be set when the ${kleur.blue(\n 'esm'\n )} option is ${options?.esm ? 'enabled' : 'disabled'}.`\n );\n }\n\n return null;\n }\n\n if (\n field.name.startsWith('exports') &&\n field.value &&\n !/^\\.\\//.test(field.value)\n ) {\n report.error(\n `The ${kleur.blue(field.name)} field in ${kleur.blue(\n `package.json`\n )} should be a relative path starting with ${kleur.blue(\n './'\n )}. Found: ${kleur.blue(field.value)}`\n );\n\n return field.name;\n }\n\n if (\n field.value &&\n !(await fs.pathExists(path.join(root, field.value)))\n ) {\n const generatedTypesPath = await getGeneratedTypesPath(field);\n\n report.error(\n `The ${kleur.blue(field.name)} field in ${kleur.blue(\n 'package.json'\n )} points to a non-existent file: ${kleur.blue(\n field.value\n )}.\\nVerify the path points to the correct file under ${kleur.blue(\n path.relative(root, output)\n )}${\n generatedTypesPath\n ? ` (found ${kleur.blue(generatedTypesPath)}).`\n : '.'\n }`\n );\n\n return field.name;\n }\n\n return null;\n })\n )\n ).filter((name): name is string => name != null);\n\n if (invalidFieldNames.length) {\n throw new Error(\n `Found errors for fields: ${invalidFieldNames.join(', ')}.`\n );\n }\n\n const validFields = fields.filter((field) => !field.error);\n\n if (validFields.every((field) => field.value == null)) {\n const suggestedTypesPaths = (\n await Promise.all(\n validFields.map((field) => getGeneratedTypesPath(field))\n )\n )\n .filter((path): path is string => path != null)\n .filter((path, i, self) => self.indexOf(path) === i);\n\n report.warn(\n `No ${validFields\n .map((field) => kleur.blue(field.name))\n .join(' or ')} field found in ${kleur.blue(\n 'package.json'\n )}. Consider ${\n suggestedTypesPaths.length\n ? `pointing to ${suggestedTypesPaths\n .map((path) => kleur.blue(path))\n .join(' or ')}`\n : `adding ${validFields.length > 1 ? 'them' : 'it'}`\n } so that consumers of your package can use the typescript definitions.`\n );\n }\n } else {\n throw new Error('Failed to build definition files.');\n }\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 when building definition files:\\n${e.stdout.toString()}`\n );\n } else if ('message' in e && typeof e.message === 'string') {\n report.error(e.message);\n } else {\n throw e;\n }\n } else {\n throw e;\n }\n\n throw new Error('Failed to build definition files.');\n }\n}\n"],"mappings":"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","ignoreList":[]}
|
|
@@ -3,7 +3,7 @@
|
|
|
3
3
|
Object.defineProperty(exports, "__esModule", {
|
|
4
4
|
value: true
|
|
5
5
|
});
|
|
6
|
-
exports.
|
|
6
|
+
exports.patchCodegenAndroidPackage = patchCodegenAndroidPackage;
|
|
7
7
|
var _fsExtra = _interopRequireDefault(require("fs-extra"));
|
|
8
8
|
var _path = _interopRequireDefault(require("path"));
|
|
9
9
|
function _interopRequireDefault(e) { return e && e.__esModule ? e : { default: e }; }
|
|
@@ -17,7 +17,7 @@ const CODEGEN_DOCS = 'https://github.com/reactwg/react-native-new-architecture/b
|
|
|
17
17
|
* @throws if codegenConfig.outputDir.android or codegenConfig.android.javaPackageName is not defined in package.json
|
|
18
18
|
* @throws if the codegenAndroidPath does not exist
|
|
19
19
|
*/
|
|
20
|
-
async function
|
|
20
|
+
async function patchCodegenAndroidPackage(projectPath,
|
|
21
21
|
// eslint-disable-next-line @typescript-eslint/no-explicit-any
|
|
22
22
|
packageJson, report) {
|
|
23
23
|
let codegenAndroidPath = packageJson.codegenConfig.outputDir.android;
|
|
@@ -61,4 +61,4 @@ packageJson, report) {
|
|
|
61
61
|
recursive: true
|
|
62
62
|
});
|
|
63
63
|
}
|
|
64
|
-
//# sourceMappingURL=
|
|
64
|
+
//# sourceMappingURL=patchCodegenAndroidPackage.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"patchCodegenAndroidPackage.js","names":["_fsExtra","_interopRequireDefault","require","_path","e","__esModule","default","CODEGEN_DOCS","patchCodegenAndroidPackage","projectPath","packageJson","report","codegenAndroidPath","codegenConfig","outputDir","android","Error","path","resolve","fs","pathExists","codegenJavaPackageName","javaPackageName","codegenJavaPath","info","javaFiles","readdir","Promise","all","map","file","filePath","fileContent","readFile","newFileContent","replace","writeFile","newPackagePath","mkdir","recursive","newFilePath","rename","rm"],"sources":["../../src/utils/patchCodegenAndroidPackage.ts"],"sourcesContent":["import fs from 'fs-extra';\nimport path from 'path';\nimport type { Report } from '../types';\n\nconst CODEGEN_DOCS =\n 'https://github.com/reactwg/react-native-new-architecture/blob/main/docs/enable-libraries-prerequisites.md#configure-codegen';\n\n/**\n * Currently, running react-native codegen generates java files with package name `com.facebook.fbreact.specs`.\n * This is a known issue in react-native itself.\n * You can find the relevant line here: https://github.com/facebook/react-native/blob/dc460147bb00d6f912cc0a829f8040d85faeeb13/packages/react-native/scripts/codegen/generate-artifacts-executor.js#L459.\n * To workaround, this function renames the package name to the one provided in the codegenConfig.\n * @throws if codegenConfig.outputDir.android or codegenConfig.android.javaPackageName is not defined in package.json\n * @throws if the codegenAndroidPath does not exist\n */\nexport async function patchCodegenAndroidPackage(\n projectPath: string,\n // eslint-disable-next-line @typescript-eslint/no-explicit-any\n packageJson: any,\n report: Report\n) {\n let codegenAndroidPath: string | undefined =\n packageJson.codegenConfig.outputDir.android;\n if (!codegenAndroidPath) {\n throw new Error(\n `Your package.json doesn't contain codegenConfig.outputDir.android. Please see ${CODEGEN_DOCS}`\n );\n }\n codegenAndroidPath = path.resolve(projectPath, codegenAndroidPath);\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 codegenJavaPackageName: string | undefined =\n packageJson.codegenConfig.android.javaPackageName;\n if (!codegenJavaPackageName) {\n throw new Error(\n `Your package.json doesn't contain codegenConfig.android.javaPackageName. Please see ${CODEGEN_DOCS}`\n );\n }\n\n const codegenJavaPath = path.resolve(\n codegenAndroidPath,\n `java/com/facebook/fbreact/specs`\n );\n\n // If this issue is ever fixed in react-native, this check will prevent the patching from running.\n if (!(await fs.pathExists(codegenJavaPath))) {\n report.info(\n `Could not find ${codegenJavaPath}. Skipping patching codegen java files.`\n );\n return;\n }\n\n const javaFiles = await fs.readdir(codegenJavaPath);\n\n await Promise.all(\n javaFiles.map(async (file) => {\n const filePath = path.resolve(codegenJavaPath, file);\n const fileContent = await fs.readFile(filePath, 'utf8');\n\n const newFileContent = fileContent.replace(\n 'package com.facebook.fbreact.specs',\n `package ${codegenJavaPackageName}`\n );\n\n await fs.writeFile(filePath, newFileContent);\n })\n );\n\n const newPackagePath = path.resolve(\n codegenAndroidPath,\n `java/${codegenJavaPackageName.replace(/\\./g, '/')}`\n );\n\n if (!(await fs.pathExists(newPackagePath))) {\n await fs.mkdir(newPackagePath, { recursive: true });\n }\n\n await Promise.all(\n javaFiles.map(async (file) => {\n const filePath = path.resolve(codegenJavaPath, file);\n const newFilePath = path.resolve(newPackagePath, file);\n\n await fs.rename(filePath, newFilePath);\n })\n );\n\n await fs.rm(path.resolve(codegenAndroidPath, 'java/com/facebook'), {\n recursive: true,\n });\n}\n"],"mappings":"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","ignoreList":[]}
|
package/package.json
CHANGED
|
@@ -1,6 +1,6 @@
|
|
|
1
1
|
{
|
|
2
2
|
"name": "react-native-builder-bob",
|
|
3
|
-
"version": "0.33.
|
|
3
|
+
"version": "0.33.3",
|
|
4
4
|
"description": "CLI to build JavaScript files for React Native libraries",
|
|
5
5
|
"keywords": [
|
|
6
6
|
"react-native",
|
|
@@ -87,5 +87,5 @@
|
|
|
87
87
|
"jest": "^29.7.0",
|
|
88
88
|
"mock-fs": "^5.2.0"
|
|
89
89
|
},
|
|
90
|
-
"gitHead": "
|
|
90
|
+
"gitHead": "97baa782acf7941b54fbbd351fa2aabc00e99f2e"
|
|
91
91
|
}
|
|
@@ -1 +0,0 @@
|
|
|
1
|
-
{"version":3,"file":"patchCodegen.test.js","names":["_globals","require","_fsExtra","_interopRequireDefault","_nodePath","_patchCodegen","_mockFs","e","__esModule","default","mockPackageJson","codegenConfig","outputDir","android","javaPackageName","mockReport","info","console","log","warn","error","success","mockJavaSpec","mockProjectPath","path","resolve","__dirname","mockCodegenSpecsPath","describe","beforeEach","mockfs","JSON","stringify","afterEach","restore","it","patchCodegen","expectedDir","expect","fs","pathExists","toBe","expectedFile","fileContent","readFile","toContain"],"sources":["../../src/__tests__/patchCodegen.test.ts"],"sourcesContent":["import { expect, it, describe, beforeEach, afterEach } from '@jest/globals';\nimport fs from 'fs-extra';\nimport path from 'node:path';\nimport { patchCodegen } from '../utils/patchCodegen';\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.log,\n success: console.log,\n};\n\nconst mockJavaSpec = `\n/**\n * Some comment\n */\n\npackage com.bobtest;\n\nimport com.example.exampleimport;\n\nclass SomeClass {\n public void someMethod() {\n // some code\n }\n}`;\n\nconst mockProjectPath = path.resolve(__dirname, 'mockProject');\nconst mockCodegenSpecsPath = path.resolve(\n mockProjectPath,\n 'android/generated/java/com/facebook/fbreact/specs'\n);\n\ndescribe('patchCodegen', () => {\n beforeEach(() => {\n mockfs({\n [mockProjectPath]: {\n 'package.json': JSON.stringify(mockPackageJson),\n },\n [mockCodegenSpecsPath]: {\n 'NativeBobtestSpec.java': mockJavaSpec,\n },\n });\n });\n\n afterEach(() => {\n mockfs.restore();\n });\n\n it('moves the files to correct dir', async () => {\n await patchCodegen(mockProjectPath, mockPackageJson, mockReport);\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 it('replaces the package name in the files', async () => {\n await patchCodegen(mockProjectPath, mockPackageJson, mockReport);\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 it('removes the old package dir', async () => {\n await patchCodegen(mockProjectPath, mockPackageJson, mockReport);\n\n expect(await fs.pathExists(mockCodegenSpecsPath)).toBe(false);\n });\n});\n"],"mappings":";;AAAA,IAAAA,QAAA,GAAAC,OAAA;AACA,IAAAC,QAAA,GAAAC,sBAAA,CAAAF,OAAA;AACA,IAAAG,SAAA,GAAAD,sBAAA,CAAAF,OAAA;AACA,IAAAI,aAAA,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,CAACC,GAAG;EAClBG,OAAO,EAAEJ,OAAO,CAACC;AACnB,CAAC;AAED,MAAMI,YAAY,GAAG;AACrB;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,EAAE;AAEF,MAAMC,eAAe,GAAGC,iBAAI,CAACC,OAAO,CAACC,SAAS,EAAE,aAAa,CAAC;AAC9D,MAAMC,oBAAoB,GAAGH,iBAAI,CAACC,OAAO,CACvCF,eAAe,EACf,mDACF,CAAC;AAED,IAAAK,iBAAQ,EAAC,cAAc,EAAE,MAAM;EAC7B,IAAAC,mBAAU,EAAC,MAAM;IACf,IAAAC,eAAM,EAAC;MACL,CAACP,eAAe,GAAG;QACjB,cAAc,EAAEQ,IAAI,CAACC,SAAS,CAACtB,eAAe;MAChD,CAAC;MACD,CAACiB,oBAAoB,GAAG;QACtB,wBAAwB,EAAEL;MAC5B;IACF,CAAC,CAAC;EACJ,CAAC,CAAC;EAEF,IAAAW,kBAAS,EAAC,MAAM;IACdH,eAAM,CAACI,OAAO,CAAC,CAAC;EAClB,CAAC,CAAC;EAEF,IAAAC,WAAE,EAAC,gCAAgC,EAAE,YAAY;IAC/C,MAAM,IAAAC,0BAAY,EAACb,eAAe,EAAEb,eAAe,EAAEK,UAAU,CAAC;IAEhE,MAAMsB,WAAW,GAAGb,iBAAI,CAACC,OAAO,CAC9BF,eAAe,EACf,oCACF,CAAC;IAED,IAAAe,eAAM,EAAC,MAAMC,gBAAE,CAACC,UAAU,CAACH,WAAW,CAAC,CAAC,CAACI,IAAI,CAAC,IAAI,CAAC;EACrD,CAAC,CAAC;EAEF,IAAAN,WAAE,EAAC,wCAAwC,EAAE,YAAY;IACvD,MAAM,IAAAC,0BAAY,EAACb,eAAe,EAAEb,eAAe,EAAEK,UAAU,CAAC;IAEhE,MAAMsB,WAAW,GAAGb,iBAAI,CAACC,OAAO,CAC9BF,eAAe,EACf,oCACF,CAAC;IAED,MAAMmB,YAAY,GAAGlB,iBAAI,CAACC,OAAO,CAACY,WAAW,EAAE,wBAAwB,CAAC;IAExE,MAAMM,WAAW,GAAG,MAAMJ,gBAAE,CAACK,QAAQ,CAACF,YAAY,EAAE,MAAM,CAAC;IAE3D,IAAAJ,eAAM,EAACK,WAAW,CAAC,CAACE,SAAS,CAAC,sBAAsB,CAAC;EACvD,CAAC,CAAC;EAEF,IAAAV,WAAE,EAAC,6BAA6B,EAAE,YAAY;IAC5C,MAAM,IAAAC,0BAAY,EAACb,eAAe,EAAEb,eAAe,EAAEK,UAAU,CAAC;IAEhE,IAAAuB,eAAM,EAAC,MAAMC,gBAAE,CAACC,UAAU,CAACb,oBAAoB,CAAC,CAAC,CAACc,IAAI,CAAC,KAAK,CAAC;EAC/D,CAAC,CAAC;AACJ,CAAC,CAAC","ignoreList":[]}
|
|
@@ -1 +0,0 @@
|
|
|
1
|
-
{"version":3,"file":"patchCodegen.js","names":["_fsExtra","_interopRequireDefault","require","_path","e","__esModule","default","CODEGEN_DOCS","patchCodegen","projectPath","packageJson","report","codegenAndroidPath","codegenConfig","outputDir","android","Error","path","resolve","fs","pathExists","codegenJavaPackageName","javaPackageName","codegenJavaPath","info","javaFiles","readdir","Promise","all","map","file","filePath","fileContent","readFile","newFileContent","replace","writeFile","newPackagePath","mkdir","recursive","newFilePath","rename","rm"],"sources":["../../src/utils/patchCodegen.ts"],"sourcesContent":["import fs from 'fs-extra';\nimport path from 'path';\nimport type { Report } from '../types';\n\nconst CODEGEN_DOCS =\n 'https://github.com/reactwg/react-native-new-architecture/blob/main/docs/enable-libraries-prerequisites.md#configure-codegen';\n\n/**\n * Currently, running react-native codegen generates java files with package name `com.facebook.fbreact.specs`.\n * This is a known issue in react-native itself.\n * You can find the relevant line here: https://github.com/facebook/react-native/blob/dc460147bb00d6f912cc0a829f8040d85faeeb13/packages/react-native/scripts/codegen/generate-artifacts-executor.js#L459.\n * To workaround, this function renames the package name to the one provided in the codegenConfig.\n * @throws if codegenConfig.outputDir.android or codegenConfig.android.javaPackageName is not defined in package.json\n * @throws if the codegenAndroidPath does not exist\n */\nexport async function patchCodegen(\n projectPath: string,\n // eslint-disable-next-line @typescript-eslint/no-explicit-any\n packageJson: any,\n report: Report\n) {\n let codegenAndroidPath: string | undefined =\n packageJson.codegenConfig.outputDir.android;\n if (!codegenAndroidPath) {\n throw new Error(\n `Your package.json doesn't contain codegenConfig.outputDir.android. Please see ${CODEGEN_DOCS}`\n );\n }\n codegenAndroidPath = path.resolve(projectPath, codegenAndroidPath);\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 codegenJavaPackageName: string | undefined =\n packageJson.codegenConfig.android.javaPackageName;\n if (!codegenJavaPackageName) {\n throw new Error(\n `Your package.json doesn't contain codegenConfig.android.javaPackageName. Please see ${CODEGEN_DOCS}`\n );\n }\n\n const codegenJavaPath = path.resolve(\n codegenAndroidPath,\n `java/com/facebook/fbreact/specs`\n );\n\n // If this issue is ever fixed in react-native, this check will prevent the patching from running.\n if (!(await fs.pathExists(codegenJavaPath))) {\n report.info(\n `Could not find ${codegenJavaPath}. Skipping patching codegen java files.`\n );\n return;\n }\n\n const javaFiles = await fs.readdir(codegenJavaPath);\n\n await Promise.all(\n javaFiles.map(async (file) => {\n const filePath = path.resolve(codegenJavaPath, file);\n const fileContent = await fs.readFile(filePath, 'utf8');\n\n const newFileContent = fileContent.replace(\n 'package com.facebook.fbreact.specs',\n `package ${codegenJavaPackageName}`\n );\n\n await fs.writeFile(filePath, newFileContent);\n })\n );\n\n const newPackagePath = path.resolve(\n codegenAndroidPath,\n `java/${codegenJavaPackageName.replace(/\\./g, '/')}`\n );\n\n if (!(await fs.pathExists(newPackagePath))) {\n await fs.mkdir(newPackagePath, { recursive: true });\n }\n\n await Promise.all(\n javaFiles.map(async (file) => {\n const filePath = path.resolve(codegenJavaPath, file);\n const newFilePath = path.resolve(newPackagePath, file);\n\n await fs.rename(filePath, newFilePath);\n })\n );\n\n await fs.rm(path.resolve(codegenAndroidPath, 'java/com/facebook'), {\n recursive: true,\n });\n}\n"],"mappings":"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","ignoreList":[]}
|