react-native-builder-bob 0.35.2 → 0.35.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.
@@ -5,11 +5,12 @@ Object.defineProperty(exports, "__esModule", {
5
5
  });
6
6
  exports.default = build;
7
7
  var _kleur = _interopRequireDefault(require("kleur"));
8
- var _patchCodegenAndroidPackage = require("../utils/patchCodegenAndroidPackage");
8
+ var _patchCodegenAndroidPackage = require("./patches/patchCodegenAndroidPackage");
9
9
  var _fsExtra = _interopRequireDefault(require("fs-extra"));
10
10
  var _path = _interopRequireDefault(require("path"));
11
11
  var _del = _interopRequireDefault(require("del"));
12
- var _runRNCCli = require("../utils/runRNCCli");
12
+ var _runRNCCli = require("../../utils/runRNCCli");
13
+ var _removeCodegenAppLevelCode = require("./patches/removeCodegenAppLevelCode");
13
14
  function _interopRequireDefault(e) { return e && e.__esModule ? e : { default: e }; }
14
15
  async function build({
15
16
  root,
@@ -37,6 +38,7 @@ async function build({
37
38
  if (codegenType === 'modules' || codegenType === 'all') {
38
39
  await (0, _patchCodegenAndroidPackage.patchCodegenAndroidPackage)(root, packageJson, report);
39
40
  }
41
+ await (0, _removeCodegenAppLevelCode.removeCodegenAppLevelCode)(root, packageJson);
40
42
  report.success('Generated native code with codegen');
41
43
  } catch (e) {
42
44
  if (e != null && typeof e === 'object') {
@@ -57,4 +59,4 @@ async function build({
57
59
  process.exit(1);
58
60
  }
59
61
  }
60
- //# sourceMappingURL=codegen.js.map
62
+ //# sourceMappingURL=index.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"index.js","names":["_kleur","_interopRequireDefault","require","_patchCodegenAndroidPackage","_fsExtra","_path","_del","_runRNCCli","_removeCodegenAppLevelCode","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","removeCodegenAppLevelCode","success","stdout","toString","message","includes"],"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 { runRNCCli } from '../../utils/runRNCCli';\nimport { removeCodegenAppLevelCode } from './patches/removeCodegenAppLevelCode';\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 await removeCodegenAppLevelCode(root, packageJson);\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":[]}
@@ -3,11 +3,12 @@
3
3
  Object.defineProperty(exports, "__esModule", {
4
4
  value: true
5
5
  });
6
+ exports.CODEGEN_DOCS = void 0;
6
7
  exports.patchCodegenAndroidPackage = patchCodegenAndroidPackage;
7
8
  var _fsExtra = _interopRequireDefault(require("fs-extra"));
8
9
  var _path = _interopRequireDefault(require("path"));
9
10
  function _interopRequireDefault(e) { return e && e.__esModule ? e : { default: e }; }
10
- const CODEGEN_DOCS = 'https://github.com/reactwg/react-native-new-architecture/blob/main/docs/enable-libraries-prerequisites.md#configure-codegen';
11
+ const CODEGEN_DOCS = exports.CODEGEN_DOCS = 'https://reactnative.dev/docs/the-new-architecture/using-codegen#configuring-codegen';
11
12
 
12
13
  /**
13
14
  * Currently, running react-native codegen generates java files with package name `com.facebook.fbreact.specs`.
@@ -20,7 +21,7 @@ const CODEGEN_DOCS = 'https://github.com/reactwg/react-native-new-architecture/b
20
21
  async function patchCodegenAndroidPackage(projectPath,
21
22
  // eslint-disable-next-line @typescript-eslint/no-explicit-any
22
23
  packageJson, report) {
23
- let codegenAndroidPath = packageJson.codegenConfig.outputDir.android;
24
+ let codegenAndroidPath = packageJson.codegenConfig?.outputDir?.android;
24
25
  if (!codegenAndroidPath) {
25
26
  throw new Error(`Your package.json doesn't contain codegenConfig.outputDir.android. Please see ${CODEGEN_DOCS}`);
26
27
  }
@@ -0,0 +1 @@
1
+ {"version":3,"file":"patchCodegenAndroidPackage.js","names":["_fsExtra","_interopRequireDefault","require","_path","e","__esModule","default","CODEGEN_DOCS","exports","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/targets/codegen/patches/patchCodegenAndroidPackage.ts"],"sourcesContent":["import fs from 'fs-extra';\nimport path from 'path';\nimport type { Report } from '../../../types';\n\nexport const CODEGEN_DOCS =\n 'https://reactnative.dev/docs/the-new-architecture/using-codegen#configuring-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":[]}
@@ -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 _patchCodegenAndroidPackage = require("../utils/patchCodegenAndroidPackage");
6
+ var _patchCodegenAndroidPackage = require("./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 = {
@@ -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/targets/codegen/patches/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 './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":[]}
@@ -0,0 +1,44 @@
1
+ "use strict";
2
+
3
+ Object.defineProperty(exports, "__esModule", {
4
+ value: true
5
+ });
6
+ exports.removeCodegenAppLevelCode = removeCodegenAppLevelCode;
7
+ var _fsExtra = _interopRequireDefault(require("fs-extra"));
8
+ var _path = _interopRequireDefault(require("path"));
9
+ var _patchCodegenAndroidPackage = require("./patchCodegenAndroidPackage");
10
+ function _interopRequireDefault(e) { return e && e.__esModule ? e : { default: e }; }
11
+ const FILES_TO_REMOVE = ['RCTAppDependencyProvider.h', 'RCTAppDependencyProvider.mm', 'RCTModulesConformingToProtocolsProvider.h', 'RCTModulesConformingToProtocolsProvider.mm', 'RCTThirdPartyComponentsProvider.h', 'RCTThirdPartyComponentsProvider.mm', 'ReactAppDependencyProvider.podspec'];
12
+
13
+ /**
14
+ * With React Native 0.77, calling `@react-native-community/cli codegen` generates
15
+ * some app level source files such as `RCTAppDependencyProvider.mm`.
16
+ * These files are supposed to be only generated for apps
17
+ * but the cli misbehaves and generates them for all sorts of projects.
18
+ * You can find the relevant PR here: https://github.com/facebook/react-native/pull/47650
19
+ * This patch can be removed when this gets fixed in React Native.
20
+ */
21
+ async function removeCodegenAppLevelCode(projectPath,
22
+ // eslint-disable-next-line @typescript-eslint/no-explicit-any
23
+ packageJson) {
24
+ const codegenAndroidPathSetting = packageJson.codegenConfig?.outputDir?.android;
25
+ if (!codegenAndroidPathSetting) {
26
+ throw new Error(`Your package.json doesn't contain codegenConfig.outputDir.android. Please see ${_patchCodegenAndroidPackage.CODEGEN_DOCS}`);
27
+ }
28
+ const codegenAndroidPath = _path.default.resolve(projectPath, codegenAndroidPathSetting);
29
+ if (!(await _fsExtra.default.pathExists(codegenAndroidPath))) {
30
+ throw new Error(`The codegen android path defined in your package.json: ${codegenAndroidPath} doesnt' exist.`);
31
+ }
32
+ const codegenIosPathSetting = packageJson.codegenConfig?.outputDir?.ios;
33
+ if (!codegenIosPathSetting) {
34
+ throw new Error(`Your package.json doesn't contain codegenConfig.outputDir.ios. Please see ${_patchCodegenAndroidPackage.CODEGEN_DOCS}`);
35
+ }
36
+ const codegenIosPath = _path.default.resolve(projectPath, codegenIosPathSetting);
37
+ if (!(await _fsExtra.default.pathExists(codegenAndroidPath))) {
38
+ throw new Error(`The codegen iOS path defined in your package.json: ${codegenIosPathSetting} doesnt' exist.`);
39
+ }
40
+ const androidPromises = FILES_TO_REMOVE.map(fileName => _fsExtra.default.rm(_path.default.join(codegenAndroidPath, fileName)));
41
+ const iosPromises = FILES_TO_REMOVE.map(fileName => _fsExtra.default.rm(_path.default.join(codegenIosPath, fileName)));
42
+ await Promise.allSettled([...androidPromises, ...iosPromises]);
43
+ }
44
+ //# sourceMappingURL=removeCodegenAppLevelCode.js.map
@@ -0,0 +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":";;;;;;AAAA,IAAAA,QAAA,GAAAC,sBAAA,CAAAC,OAAA;AACA,IAAAC,KAAA,GAAAF,sBAAA,CAAAC,OAAA;AACA,IAAAE,2BAAA,GAAAF,OAAA;AAA4D,SAAAD,uBAAAI,CAAA,WAAAA,CAAA,IAAAA,CAAA,CAAAC,UAAA,GAAAD,CAAA,KAAAE,OAAA,EAAAF,CAAA;AAE5D,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","ignoreList":[]}
@@ -0,0 +1,78 @@
1
+ "use strict";
2
+
3
+ var _globals = require("@jest/globals");
4
+ var _fsExtra = _interopRequireDefault(require("fs-extra"));
5
+ var _nodePath = _interopRequireDefault(require("node:path"));
6
+ var _removeCodegenAppLevelCode = require("./removeCodegenAppLevelCode");
7
+ var _mockFs = _interopRequireDefault(require("mock-fs"));
8
+ function _interopRequireDefault(e) { return e && e.__esModule ? e : { default: e }; }
9
+ const mockPackageJson = {
10
+ codegenConfig: {
11
+ outputDir: {
12
+ android: 'android/generated',
13
+ ios: 'ios/generated'
14
+ }
15
+ }
16
+ };
17
+ const mockProjectPath = _nodePath.default.resolve(__dirname, 'mockProject');
18
+ (0, _globals.describe)('patchCodegenAndroidPackage', () => {
19
+ (0, _globals.beforeEach)(() => {
20
+ (0, _mockFs.default)({
21
+ [mockProjectPath]: {
22
+ 'package.json': JSON.stringify(mockPackageJson),
23
+ 'ios': {
24
+ generated: {
25
+ 'RCTAppDependencyProvider.h': '',
26
+ 'RCTAppDependencyProvider.mm': '',
27
+ 'RCTModulesConformingToProtocolsProvider.h': '',
28
+ 'RCTModulesConformingToProtocolsProvider.mm': '',
29
+ 'RCTThirdPartyComponentsProvider.h': '',
30
+ 'RCTThirdPartyComponentsProvider.mm': '',
31
+ 'ReactAppDependencyProvider.podspec': ''
32
+ }
33
+ },
34
+ 'android': {
35
+ generated: {
36
+ 'RCTAppDependencyProvider.h': '',
37
+ 'RCTAppDependencyProvider.mm': '',
38
+ 'RCTModulesConformingToProtocolsProvider.h': '',
39
+ 'RCTModulesConformingToProtocolsProvider.mm': '',
40
+ 'RCTThirdPartyComponentsProvider.h': '',
41
+ 'RCTThirdPartyComponentsProvider.mm': '',
42
+ 'ReactAppDependencyProvider.podspec': ''
43
+ }
44
+ }
45
+ }
46
+ });
47
+ });
48
+ (0, _globals.afterEach)(() => {
49
+ _mockFs.default.restore();
50
+ });
51
+ (0, _globals.it)('removes the duplicate iOS files', async () => {
52
+ await (0, _removeCodegenAppLevelCode.removeCodegenAppLevelCode)(mockProjectPath, mockPackageJson);
53
+ (0, _globals.expect)((await _fsExtra.default.promises.readdir(_nodePath.default.join(mockProjectPath, 'ios', 'generated'))).length).toBe(0);
54
+ });
55
+ (0, _globals.it)('removes the unnecessary Android files', async () => {
56
+ await (0, _removeCodegenAppLevelCode.removeCodegenAppLevelCode)(mockProjectPath, mockPackageJson);
57
+ (0, _globals.expect)((await _fsExtra.default.promises.readdir(_nodePath.default.join(mockProjectPath, 'android', 'generated'))).length).toBe(0);
58
+ });
59
+ (0, _globals.it)("doesn't crash the process when there are no files to remove", async () => {
60
+ (0, _mockFs.default)({
61
+ [mockProjectPath]: {
62
+ 'package.json': JSON.stringify(mockPackageJson),
63
+ 'ios': {
64
+ generated: {
65
+ someRandomFile: ''
66
+ }
67
+ },
68
+ 'android': {
69
+ generated: {
70
+ someRandomFile: ''
71
+ }
72
+ }
73
+ }
74
+ });
75
+ await (0, _globals.expect)((0, _removeCodegenAppLevelCode.removeCodegenAppLevelCode)(mockProjectPath, mockPackageJson)).resolves.not.toThrow();
76
+ });
77
+ });
78
+ //# sourceMappingURL=removeCodegenAppLevelCode.test.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"removeCodegenAppLevelCode.test.js","names":["_globals","require","_fsExtra","_interopRequireDefault","_nodePath","_removeCodegenAppLevelCode","_mockFs","e","__esModule","default","mockPackageJson","codegenConfig","outputDir","android","ios","mockProjectPath","path","resolve","__dirname","describe","beforeEach","mockfs","JSON","stringify","generated","afterEach","restore","it","removeCodegenAppLevelCode","expect","fs","promises","readdir","join","length","toBe","someRandomFile","resolves","not","toThrow"],"sources":["../../../../src/targets/codegen/patches/removeCodegenAppLevelCode.test.ts"],"sourcesContent":["import { expect, it, describe, beforeEach, afterEach } from '@jest/globals';\nimport fs from 'fs-extra';\nimport path from 'node:path';\nimport { removeCodegenAppLevelCode } from './removeCodegenAppLevelCode';\nimport mockfs from 'mock-fs';\n\nconst mockPackageJson = {\n codegenConfig: {\n outputDir: {\n android: 'android/generated',\n ios: 'ios/generated',\n },\n },\n};\n\nconst mockProjectPath = path.resolve(__dirname, 'mockProject');\n\ndescribe('patchCodegenAndroidPackage', () => {\n beforeEach(() => {\n mockfs({\n [mockProjectPath]: {\n 'package.json': JSON.stringify(mockPackageJson),\n 'ios': {\n generated: {\n 'RCTAppDependencyProvider.h': '',\n 'RCTAppDependencyProvider.mm': '',\n 'RCTModulesConformingToProtocolsProvider.h': '',\n 'RCTModulesConformingToProtocolsProvider.mm': '',\n 'RCTThirdPartyComponentsProvider.h': '',\n 'RCTThirdPartyComponentsProvider.mm': '',\n 'ReactAppDependencyProvider.podspec': '',\n },\n },\n 'android': {\n generated: {\n 'RCTAppDependencyProvider.h': '',\n 'RCTAppDependencyProvider.mm': '',\n 'RCTModulesConformingToProtocolsProvider.h': '',\n 'RCTModulesConformingToProtocolsProvider.mm': '',\n 'RCTThirdPartyComponentsProvider.h': '',\n 'RCTThirdPartyComponentsProvider.mm': '',\n 'ReactAppDependencyProvider.podspec': '',\n },\n },\n },\n });\n });\n\n afterEach(() => {\n mockfs.restore();\n });\n\n it('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 it('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 it(\"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/package.json CHANGED
@@ -1,6 +1,6 @@
1
1
  {
2
2
  "name": "react-native-builder-bob",
3
- "version": "0.35.2",
3
+ "version": "0.35.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": "9c5638a224d558071ae01f010da8b7a6860f00ee"
90
+ "gitHead": "0bacd58eab2ce56f20be84009aa6f4315dd95c52"
91
91
  }
@@ -1 +0,0 @@
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":[]}
@@ -1 +0,0 @@
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":[]}
@@ -1 +0,0 @@
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":";;;;;;AAAA,IAAAA,QAAA,GAAAC,sBAAA,CAAAC,OAAA;AACA,IAAAC,KAAA,GAAAF,sBAAA,CAAAC,OAAA;AAAwB,SAAAD,uBAAAG,CAAA,WAAAA,CAAA,IAAAA,CAAA,CAAAC,UAAA,GAAAD,CAAA,KAAAE,OAAA,EAAAF,CAAA;AAGxB,MAAMG,YAAY,GAChB,6HAA6H;;AAE/H;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACO,eAAeC,0BAA0BA,CAC9CC,WAAmB;AACnB;AACAC,WAAgB,EAChBC,MAAc,EACd;EACA,IAAIC,kBAAsC,GACxCF,WAAW,CAACG,aAAa,CAACC,SAAS,CAACC,OAAO;EAC7C,IAAI,CAACH,kBAAkB,EAAE;IACvB,MAAM,IAAII,KAAK,CACb,iFAAiFT,YAAY,EAC/F,CAAC;EACH;EACAK,kBAAkB,GAAGK,aAAI,CAACC,OAAO,CAACT,WAAW,EAAEG,kBAAkB,CAAC;EAElE,IAAI,EAAE,MAAMO,gBAAE,CAACC,UAAU,CAACR,kBAAkB,CAAC,CAAC,EAAE;IAC9C,MAAM,IAAII,KAAK,CACb,0DAA0DJ,kBAAkB,iBAC9E,CAAC;EACH;EAEA,MAAMS,sBAA0C,GAC9CX,WAAW,CAACG,aAAa,CAACE,OAAO,CAACO,eAAe;EACnD,IAAI,CAACD,sBAAsB,EAAE;IAC3B,MAAM,IAAIL,KAAK,CACb,uFAAuFT,YAAY,EACrG,CAAC;EACH;EAEA,MAAMgB,eAAe,GAAGN,aAAI,CAACC,OAAO,CAClCN,kBAAkB,EAClB,iCACF,CAAC;;EAED;EACA,IAAI,EAAE,MAAMO,gBAAE,CAACC,UAAU,CAACG,eAAe,CAAC,CAAC,EAAE;IAC3CZ,MAAM,CAACa,IAAI,CACT,kBAAkBD,eAAe,yCACnC,CAAC;IACD;EACF;EAEA,MAAME,SAAS,GAAG,MAAMN,gBAAE,CAACO,OAAO,CAACH,eAAe,CAAC;EAEnD,MAAMI,OAAO,CAACC,GAAG,CACfH,SAAS,CAACI,GAAG,CAAC,MAAOC,IAAI,IAAK;IAC5B,MAAMC,QAAQ,GAAGd,aAAI,CAACC,OAAO,CAACK,eAAe,EAAEO,IAAI,CAAC;IACpD,MAAME,WAAW,GAAG,MAAMb,gBAAE,CAACc,QAAQ,CAACF,QAAQ,EAAE,MAAM,CAAC;IAEvD,MAAMG,cAAc,GAAGF,WAAW,CAACG,OAAO,CACxC,oCAAoC,EACpC,WAAWd,sBAAsB,EACnC,CAAC;IAED,MAAMF,gBAAE,CAACiB,SAAS,CAACL,QAAQ,EAAEG,cAAc,CAAC;EAC9C,CAAC,CACH,CAAC;EAED,MAAMG,cAAc,GAAGpB,aAAI,CAACC,OAAO,CACjCN,kBAAkB,EAClB,QAAQS,sBAAsB,CAACc,OAAO,CAAC,KAAK,EAAE,GAAG,CAAC,EACpD,CAAC;EAED,IAAI,EAAE,MAAMhB,gBAAE,CAACC,UAAU,CAACiB,cAAc,CAAC,CAAC,EAAE;IAC1C,MAAMlB,gBAAE,CAACmB,KAAK,CAACD,cAAc,EAAE;MAAEE,SAAS,EAAE;IAAK,CAAC,CAAC;EACrD;EAEA,MAAMZ,OAAO,CAACC,GAAG,CACfH,SAAS,CAACI,GAAG,CAAC,MAAOC,IAAI,IAAK;IAC5B,MAAMC,QAAQ,GAAGd,aAAI,CAACC,OAAO,CAACK,eAAe,EAAEO,IAAI,CAAC;IACpD,MAAMU,WAAW,GAAGvB,aAAI,CAACC,OAAO,CAACmB,cAAc,EAAEP,IAAI,CAAC;IAEtD,MAAMX,gBAAE,CAACsB,MAAM,CAACV,QAAQ,EAAES,WAAW,CAAC;EACxC,CAAC,CACH,CAAC;EAED,MAAMrB,gBAAE,CAACuB,EAAE,CAACzB,aAAI,CAACC,OAAO,CAACN,kBAAkB,EAAE,mBAAmB,CAAC,EAAE;IACjE2B,SAAS,EAAE;EACb,CAAC,CAAC;AACJ","ignoreList":[]}