react-native-builder-bob 0.38.4 → 0.39.0
This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
- package/babel-config.js +13 -25
- package/babel-preset.js +1 -1
- package/lib/__tests__/babel.test.js +1 -1
- package/lib/__tests__/babel.test.js.map +1 -1
- package/lib/__tests__/init.test.js +1 -1
- package/lib/__tests__/init.test.js.map +1 -1
- package/lib/build.js +15 -34
- package/lib/build.js.map +1 -1
- package/lib/index.js +2 -0
- package/lib/index.js.map +1 -1
- package/lib/init.js +4 -9
- package/lib/init.js.map +1 -1
- package/lib/targets/codegen/index.js +4 -11
- package/lib/targets/codegen/index.js.map +1 -1
- package/lib/targets/codegen/patches/patchCodegenAndroidPackage.js +2 -1
- package/lib/targets/codegen/patches/patchCodegenAndroidPackage.js.map +1 -1
- package/lib/targets/codegen/patches/patchCodegenAndroidPackage.test.js +4 -4
- package/lib/targets/codegen/patches/patchCodegenAndroidPackage.test.js.map +1 -1
- package/lib/targets/codegen/patches/removeCodegenAppLevelCode.test.js +3 -3
- package/lib/targets/codegen/patches/removeCodegenAppLevelCode.test.js.map +1 -1
- package/lib/targets/custom.js +4 -12
- package/lib/targets/custom.js.map +1 -1
- package/lib/targets/typescript.js +2 -2
- package/lib/targets/typescript.js.map +1 -1
- package/lib/utils/loadConfig.js +47 -12
- package/lib/utils/loadConfig.js.map +1 -1
- package/lib/utils/workerize.js +101 -0
- package/lib/utils/workerize.js.map +1 -0
- package/metro-config.js +1 -1
- package/package.json +3 -4
|
@@ -1 +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} doesn't 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 if (\n await fs.pathExists(\n path.resolve(codegenAndroidPath, 'java/com/facebook/react/viewmanagers')\n )\n ) {\n // Keep the view managers\n await fs.rm(path.resolve(codegenAndroidPath, 'java/com/facebook/fbreact'), {\n recursive: true,\n });\n } else {\n // Delete the entire facebook namespace\n await fs.rm(path.resolve(codegenAndroidPath, 'java/com/facebook'), {\n recursive: true,\n });\n }\n}\n"],"mappings":";;;;;;;AAAA,IAAAA,QAAA,GAAAC,sBAAA,CAAAC,OAAA;AACA,IAAAC,KAAA,GAAAF,sBAAA,CAAAC,OAAA;
|
|
1
|
+
{"version":3,"file":"patchCodegenAndroidPackage.js","names":["_fsExtra","_interopRequireDefault","require","_path","_kleur","e","__esModule","default","CODEGEN_DOCS","exports","patchCodegenAndroidPackage","projectPath","packageJson","report","codegenAndroidPath","codegenConfig","outputDir","android","Error","path","resolve","fs","pathExists","codegenJavaPackageName","javaPackageName","codegenJavaPath","info","kleur","blue","relative","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';\nimport kleur from 'kleur';\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} doesn't 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 ${kleur.blue(\n path.relative(projectPath, codegenJavaPath)\n )}. 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 if (\n await fs.pathExists(\n path.resolve(codegenAndroidPath, 'java/com/facebook/react/viewmanagers')\n )\n ) {\n // Keep the view managers\n await fs.rm(path.resolve(codegenAndroidPath, 'java/com/facebook/fbreact'), {\n recursive: true,\n });\n } else {\n // Delete the entire facebook namespace\n await fs.rm(path.resolve(codegenAndroidPath, 'java/com/facebook'), {\n recursive: true,\n });\n }\n}\n"],"mappings":"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","ignoreList":[]}
|
|
@@ -64,23 +64,23 @@ const mockCodegenViewSpecsPath = _nodePath.default.resolve(mockProjectPath, 'and
|
|
|
64
64
|
(0, _globals.afterEach)(() => {
|
|
65
65
|
_mockFs.default.restore();
|
|
66
66
|
});
|
|
67
|
-
(0, _globals.
|
|
67
|
+
(0, _globals.test)('moves the files to correct dir', async () => {
|
|
68
68
|
await (0, _patchCodegenAndroidPackage.patchCodegenAndroidPackage)(mockProjectPath, mockPackageJson, mockReport);
|
|
69
69
|
const expectedDir = _nodePath.default.resolve(mockProjectPath, 'android/generated/java/com/bobtest');
|
|
70
70
|
(0, _globals.expect)(await _fsExtra.default.pathExists(expectedDir)).toBe(true);
|
|
71
71
|
});
|
|
72
|
-
(0, _globals.
|
|
72
|
+
(0, _globals.test)('replaces the package name in the files', async () => {
|
|
73
73
|
await (0, _patchCodegenAndroidPackage.patchCodegenAndroidPackage)(mockProjectPath, mockPackageJson, mockReport);
|
|
74
74
|
const expectedDir = _nodePath.default.resolve(mockProjectPath, 'android/generated/java/com/bobtest');
|
|
75
75
|
const expectedFile = _nodePath.default.resolve(expectedDir, 'NativeBobtestSpec.java');
|
|
76
76
|
const fileContent = await _fsExtra.default.readFile(expectedFile, 'utf8');
|
|
77
77
|
(0, _globals.expect)(fileContent).toContain('package com.bobtest;');
|
|
78
78
|
});
|
|
79
|
-
(0, _globals.
|
|
79
|
+
(0, _globals.test)('removes the old package dir', async () => {
|
|
80
80
|
await (0, _patchCodegenAndroidPackage.patchCodegenAndroidPackage)(mockProjectPath, mockPackageJson, mockReport);
|
|
81
81
|
(0, _globals.expect)(await _fsExtra.default.pathExists(mockCodegenModuleSpecsPath)).toBe(false);
|
|
82
82
|
});
|
|
83
|
-
(0, _globals.
|
|
83
|
+
(0, _globals.test)("doesn't delete the view manager specs", async () => {
|
|
84
84
|
const mockPackageJsonWithTypeAll = {
|
|
85
85
|
...mockPackageJson,
|
|
86
86
|
codegenConfig: {
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"patchCodegenAndroidPackage.test.js","names":["_globals","require","_fsExtra","_interopRequireDefault","_nodePath","_patchCodegenAndroidPackage","_mockFs","e","__esModule","default","mockPackageJson","codegenConfig","outputDir","android","javaPackageName","mockReport","info","console","log","warn","error","success","mockJavaModuleSpec","mockJavaViewSpec","mockProjectPath","path","resolve","__dirname","mockCodegenModuleSpecsPath","mockCodegenViewSpecsPath","describe","beforeEach","mockfs","JSON","stringify","afterEach","restore","
|
|
1
|
+
{"version":3,"file":"patchCodegenAndroidPackage.test.js","names":["_globals","require","_fsExtra","_interopRequireDefault","_nodePath","_patchCodegenAndroidPackage","_mockFs","e","__esModule","default","mockPackageJson","codegenConfig","outputDir","android","javaPackageName","mockReport","info","console","log","warn","error","success","mockJavaModuleSpec","mockJavaViewSpec","mockProjectPath","path","resolve","__dirname","mockCodegenModuleSpecsPath","mockCodegenViewSpecsPath","describe","beforeEach","mockfs","JSON","stringify","afterEach","restore","test","patchCodegenAndroidPackage","expectedDir","expect","fs","pathExists","toBe","expectedFile","fileContent","readFile","toContain","mockPackageJsonWithTypeAll","type","join","toBeTruthy"],"sources":["../../../../src/targets/codegen/patches/patchCodegenAndroidPackage.test.ts"],"sourcesContent":["import { expect, test, describe, beforeEach, afterEach } from '@jest/globals';\nimport fs from 'fs-extra';\nimport path from 'node:path';\nimport { patchCodegenAndroidPackage } from './patchCodegenAndroidPackage';\nimport mockfs from 'mock-fs';\nimport type { Report } from '../../../types';\n\nconst mockPackageJson = {\n codegenConfig: {\n outputDir: {\n android: 'android/generated',\n },\n android: {\n javaPackageName: 'com.bobtest',\n },\n },\n};\n\nconst mockReport: Report = {\n info: console.log,\n warn: console.log,\n error: console.error,\n success: console.log,\n};\n\nconst mockJavaModuleSpec = `\n/**\n * Some comment\n */\n\npackage com.facebook.fbreact.specs;\n\nimport com.example.exampleimport;\n\nclass SomeClass {\n public void someMethod() {\n // some code\n }\n}`;\n\nconst mockJavaViewSpec = `\n/**\n * Some comment\n */\n\npackage com.facebook.react.viewmanagers;\n\npublic interface SomeInterface<T extends View> {\n void setColor(T view, @Nullable String value);\n}\n`;\n\nconst mockProjectPath = path.resolve(__dirname, 'mockProject');\nconst mockCodegenModuleSpecsPath = path.resolve(\n mockProjectPath,\n 'android/generated/java/com/facebook/fbreact/specs'\n);\nconst mockCodegenViewSpecsPath = path.resolve(\n mockProjectPath,\n 'android/generated/java/com/facebook/react/viewmanagers'\n);\n\ndescribe('patchCodegenAndroidPackage', () => {\n beforeEach(() => {\n mockfs({\n [mockProjectPath]: {\n 'package.json': JSON.stringify(mockPackageJson),\n },\n [mockCodegenModuleSpecsPath]: {\n 'NativeBobtestSpec.java': mockJavaModuleSpec,\n },\n });\n });\n\n afterEach(() => {\n mockfs.restore();\n });\n\n test('moves the files to correct dir', async () => {\n await patchCodegenAndroidPackage(\n mockProjectPath,\n mockPackageJson,\n mockReport\n );\n\n const expectedDir = path.resolve(\n mockProjectPath,\n 'android/generated/java/com/bobtest'\n );\n\n expect(await fs.pathExists(expectedDir)).toBe(true);\n });\n\n test('replaces the package name in the files', async () => {\n await patchCodegenAndroidPackage(\n mockProjectPath,\n mockPackageJson,\n mockReport\n );\n\n const expectedDir = path.resolve(\n mockProjectPath,\n 'android/generated/java/com/bobtest'\n );\n\n const expectedFile = path.resolve(expectedDir, 'NativeBobtestSpec.java');\n\n const fileContent = await fs.readFile(expectedFile, 'utf8');\n\n expect(fileContent).toContain('package com.bobtest;');\n });\n\n test('removes the old package dir', async () => {\n await patchCodegenAndroidPackage(\n mockProjectPath,\n mockPackageJson,\n mockReport\n );\n\n expect(await fs.pathExists(mockCodegenModuleSpecsPath)).toBe(false);\n });\n\n test(\"doesn't delete the view manager specs\", async () => {\n const mockPackageJsonWithTypeAll = {\n ...mockPackageJson,\n codegenConfig: {\n ...mockPackageJson.codegenConfig,\n type: 'all',\n },\n };\n\n mockfs({\n [mockProjectPath]: {\n 'package.json': JSON.stringify(mockPackageJsonWithTypeAll),\n },\n [mockCodegenModuleSpecsPath]: {\n 'NativeBobtestSpec.java': mockJavaModuleSpec,\n },\n [mockCodegenViewSpecsPath]: {\n 'BobtestViewManagerInterface.java': mockJavaViewSpec,\n },\n });\n\n await patchCodegenAndroidPackage(\n mockProjectPath,\n mockPackageJsonWithTypeAll,\n mockReport\n );\n\n expect(\n await fs.pathExists(\n path.join(mockCodegenViewSpecsPath, 'BobtestViewManagerInterface.java')\n )\n ).toBeTruthy();\n });\n});\n"],"mappings":"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","ignoreList":[]}
|
|
@@ -48,15 +48,15 @@ const mockProjectPath = _nodePath.default.resolve(__dirname, 'mockProject');
|
|
|
48
48
|
(0, _globals.afterEach)(() => {
|
|
49
49
|
_mockFs.default.restore();
|
|
50
50
|
});
|
|
51
|
-
(0, _globals.
|
|
51
|
+
(0, _globals.test)('removes the duplicate iOS files', async () => {
|
|
52
52
|
await (0, _removeCodegenAppLevelCode.removeCodegenAppLevelCode)(mockProjectPath, mockPackageJson);
|
|
53
53
|
(0, _globals.expect)((await _fsExtra.default.promises.readdir(_nodePath.default.join(mockProjectPath, 'ios', 'generated'))).length).toBe(0);
|
|
54
54
|
});
|
|
55
|
-
(0, _globals.
|
|
55
|
+
(0, _globals.test)('removes the unnecessary Android files', async () => {
|
|
56
56
|
await (0, _removeCodegenAppLevelCode.removeCodegenAppLevelCode)(mockProjectPath, mockPackageJson);
|
|
57
57
|
(0, _globals.expect)((await _fsExtra.default.promises.readdir(_nodePath.default.join(mockProjectPath, 'android', 'generated'))).length).toBe(0);
|
|
58
58
|
});
|
|
59
|
-
(0, _globals.
|
|
59
|
+
(0, _globals.test)("doesn't crash the process when there are no files to remove", async () => {
|
|
60
60
|
(0, _mockFs.default)({
|
|
61
61
|
[mockProjectPath]: {
|
|
62
62
|
'package.json': JSON.stringify(mockPackageJson),
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"removeCodegenAppLevelCode.test.js","names":["_globals","require","_fsExtra","_interopRequireDefault","_nodePath","_removeCodegenAppLevelCode","_mockFs","e","__esModule","default","mockPackageJson","codegenConfig","outputDir","android","ios","mockProjectPath","path","resolve","__dirname","describe","beforeEach","mockfs","JSON","stringify","generated","afterEach","restore","
|
|
1
|
+
{"version":3,"file":"removeCodegenAppLevelCode.test.js","names":["_globals","require","_fsExtra","_interopRequireDefault","_nodePath","_removeCodegenAppLevelCode","_mockFs","e","__esModule","default","mockPackageJson","codegenConfig","outputDir","android","ios","mockProjectPath","path","resolve","__dirname","describe","beforeEach","mockfs","JSON","stringify","generated","afterEach","restore","test","removeCodegenAppLevelCode","expect","fs","promises","readdir","join","length","toBe","someRandomFile","resolves","not","toThrow"],"sources":["../../../../src/targets/codegen/patches/removeCodegenAppLevelCode.test.ts"],"sourcesContent":["import { expect, test, describe, beforeEach, afterEach } from '@jest/globals';\nimport fs from 'fs-extra';\nimport path from 'node:path';\nimport { removeCodegenAppLevelCode } from './removeCodegenAppLevelCode';\nimport mockfs from 'mock-fs';\n\nconst mockPackageJson = {\n codegenConfig: {\n outputDir: {\n android: 'android/generated',\n ios: 'ios/generated',\n },\n },\n};\n\nconst mockProjectPath = path.resolve(__dirname, 'mockProject');\n\ndescribe('patchCodegenAndroidPackage', () => {\n beforeEach(() => {\n mockfs({\n [mockProjectPath]: {\n 'package.json': JSON.stringify(mockPackageJson),\n 'ios': {\n generated: {\n 'RCTAppDependencyProvider.h': '',\n 'RCTAppDependencyProvider.mm': '',\n 'RCTModulesConformingToProtocolsProvider.h': '',\n 'RCTModulesConformingToProtocolsProvider.mm': '',\n 'RCTThirdPartyComponentsProvider.h': '',\n 'RCTThirdPartyComponentsProvider.mm': '',\n 'ReactAppDependencyProvider.podspec': '',\n },\n },\n 'android': {\n generated: {\n 'RCTAppDependencyProvider.h': '',\n 'RCTAppDependencyProvider.mm': '',\n 'RCTModulesConformingToProtocolsProvider.h': '',\n 'RCTModulesConformingToProtocolsProvider.mm': '',\n 'RCTThirdPartyComponentsProvider.h': '',\n 'RCTThirdPartyComponentsProvider.mm': '',\n 'ReactAppDependencyProvider.podspec': '',\n },\n },\n },\n });\n });\n\n afterEach(() => {\n mockfs.restore();\n });\n\n test('removes the duplicate iOS files', async () => {\n await removeCodegenAppLevelCode(mockProjectPath, mockPackageJson);\n\n expect(\n (\n await fs.promises.readdir(\n path.join(mockProjectPath, 'ios', 'generated')\n )\n ).length\n ).toBe(0);\n });\n\n test('removes the unnecessary Android files', async () => {\n await removeCodegenAppLevelCode(mockProjectPath, mockPackageJson);\n\n expect(\n (\n await fs.promises.readdir(\n path.join(mockProjectPath, 'android', 'generated')\n )\n ).length\n ).toBe(0);\n });\n\n test(\"doesn't crash the process when there are no files to remove\", async () => {\n mockfs({\n [mockProjectPath]: {\n 'package.json': JSON.stringify(mockPackageJson),\n 'ios': {\n generated: {\n someRandomFile: '',\n },\n },\n 'android': {\n generated: {\n someRandomFile: '',\n },\n },\n },\n });\n\n await expect(\n removeCodegenAppLevelCode(mockProjectPath, mockPackageJson)\n ).resolves.not.toThrow();\n });\n});\n"],"mappings":"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","ignoreList":[]}
|
package/lib/targets/custom.js
CHANGED
|
@@ -8,7 +8,6 @@ var _kleur = _interopRequireDefault(require("kleur"));
|
|
|
8
8
|
var _path = _interopRequireDefault(require("path"));
|
|
9
9
|
var _fsExtra = _interopRequireDefault(require("fs-extra"));
|
|
10
10
|
var _spawn = require("../utils/spawn");
|
|
11
|
-
var _dedent = _interopRequireDefault(require("dedent"));
|
|
12
11
|
var _del = _interopRequireDefault(require("del"));
|
|
13
12
|
function _interopRequireDefault(e) { return e && e.__esModule ? e : { default: e }; }
|
|
14
13
|
async function customTarget({
|
|
@@ -17,9 +16,7 @@ async function customTarget({
|
|
|
17
16
|
report
|
|
18
17
|
}) {
|
|
19
18
|
if (options?.script == null) {
|
|
20
|
-
|
|
21
|
-
Example: ${_kleur.default.green('{["custom", { "script": "generateTypes" }}')}`));
|
|
22
|
-
process.exit(1);
|
|
19
|
+
throw new Error(`No 'script' was provided with the custom target. Example: ${_kleur.default.green('{["custom", { "script": "generateTypes" }}')}`);
|
|
23
20
|
}
|
|
24
21
|
const pathToClean = options.clean ? _path.default.relative(root, options.clean) : undefined;
|
|
25
22
|
if (pathToClean) {
|
|
@@ -32,14 +29,9 @@ async function customTarget({
|
|
|
32
29
|
// usr/bin/yarn -> yarn
|
|
33
30
|
const packageManagerName = _path.default.basename(packageManagerExecutable);
|
|
34
31
|
report.info(`Running ${_kleur.default.blue(packageManagerName)} ${_kleur.default.blue(packageManagerArgs.join(' '))}`);
|
|
35
|
-
|
|
36
|
-
|
|
37
|
-
|
|
38
|
-
});
|
|
39
|
-
} catch (e) {
|
|
40
|
-
report.error(`An error occurred when running ${_kleur.default.blue(options.script)}`);
|
|
41
|
-
process.exit(1);
|
|
42
|
-
}
|
|
32
|
+
await (0, _spawn.spawn)(packageManagerExecutable, packageManagerArgs, {
|
|
33
|
+
stdio: ['ignore', 'ignore', 'inherit']
|
|
34
|
+
});
|
|
43
35
|
report.success(`Ran the ${_kleur.default.blue(options.script)} script succesfully`);
|
|
44
36
|
if (options.clean && pathToClean && !(await _fsExtra.default.pathExists(pathToClean))) {
|
|
45
37
|
report.warn(`Custom target with the ${_kleur.default.blue(options.script)} script has ${_kleur.default.blue(options.clean)} as the ${_kleur.default.bold('clean')} option but this path wasn't created after running the script. Are you sure you've defined the ${_kleur.default.bold('clean')} path correctly?`);
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"custom.js","names":["_kleur","_interopRequireDefault","require","_path","_fsExtra","_spawn","
|
|
1
|
+
{"version":3,"file":"custom.js","names":["_kleur","_interopRequireDefault","require","_path","_fsExtra","_spawn","_del","e","__esModule","default","customTarget","options","root","report","script","Error","kleur","green","pathToClean","clean","path","relative","undefined","info","blue","del","resolve","packageManagerExecutable","process","env","npm_execpath","packageManagerArgs","packageManagerName","basename","join","spawn","stdio","success","fs","pathExists","warn","bold"],"sources":["../../src/targets/custom.ts"],"sourcesContent":["import kleur from 'kleur';\nimport path from 'path';\nimport fs from 'fs-extra';\nimport type { Input } from '../types';\nimport { spawn } from '../utils/spawn';\nimport del from 'del';\n\ntype Options = Omit<Input, 'output'> & {\n options?: {\n script?: string;\n clean?: string;\n };\n};\n\nexport default async function customTarget({ options, root, report }: Options) {\n if (options?.script == null) {\n throw new Error(\n `No 'script' was provided with the custom target. Example: ${kleur.green(\n '{[\"custom\", { \"script\": \"generateTypes\" }}'\n )}`\n );\n }\n\n const pathToClean = options.clean\n ? path.relative(root, options.clean)\n : undefined;\n\n if (pathToClean) {\n report.info(`Cleaning up ${kleur.blue(pathToClean)}`);\n\n await del([path.resolve(root, pathToClean)]);\n }\n\n const packageManagerExecutable = process.env.npm_execpath ?? 'npm';\n const packageManagerArgs = ['run', options.script];\n\n // usr/bin/yarn -> yarn\n const packageManagerName = path.basename(packageManagerExecutable);\n report.info(\n `Running ${kleur.blue(packageManagerName)} ${kleur.blue(\n packageManagerArgs.join(' ')\n )}`\n );\n\n await spawn(packageManagerExecutable, packageManagerArgs, {\n stdio: ['ignore', 'ignore', 'inherit'],\n });\n\n report.success(`Ran the ${kleur.blue(options.script)} script succesfully`);\n\n if (options.clean && pathToClean && !(await fs.pathExists(pathToClean))) {\n report.warn(\n `Custom target with the ${kleur.blue(\n options.script\n )} script has ${kleur.blue(options.clean)} as the ${kleur.bold(\n 'clean'\n )} option but this path wasn't created after running the script. Are you sure you've defined the ${kleur.bold(\n 'clean'\n )} path correctly?`\n );\n }\n}\n"],"mappings":";;;;;;AAAA,IAAAA,MAAA,GAAAC,sBAAA,CAAAC,OAAA;AACA,IAAAC,KAAA,GAAAF,sBAAA,CAAAC,OAAA;AACA,IAAAE,QAAA,GAAAH,sBAAA,CAAAC,OAAA;AAEA,IAAAG,MAAA,GAAAH,OAAA;AACA,IAAAI,IAAA,GAAAL,sBAAA,CAAAC,OAAA;AAAsB,SAAAD,uBAAAM,CAAA,WAAAA,CAAA,IAAAA,CAAA,CAAAC,UAAA,GAAAD,CAAA,KAAAE,OAAA,EAAAF,CAAA;AASP,eAAeG,YAAYA,CAAC;EAAEC,OAAO;EAAEC,IAAI;EAAEC;AAAgB,CAAC,EAAE;EAC7E,IAAIF,OAAO,EAAEG,MAAM,IAAI,IAAI,EAAE;IAC3B,MAAM,IAAIC,KAAK,CACb,6DAA6DC,cAAK,CAACC,KAAK,CACtE,4CACF,CAAC,EACH,CAAC;EACH;EAEA,MAAMC,WAAW,GAAGP,OAAO,CAACQ,KAAK,GAC7BC,aAAI,CAACC,QAAQ,CAACT,IAAI,EAAED,OAAO,CAACQ,KAAK,CAAC,GAClCG,SAAS;EAEb,IAAIJ,WAAW,EAAE;IACfL,MAAM,CAACU,IAAI,CAAC,eAAeP,cAAK,CAACQ,IAAI,CAACN,WAAW,CAAC,EAAE,CAAC;IAErD,MAAM,IAAAO,YAAG,EAAC,CAACL,aAAI,CAACM,OAAO,CAACd,IAAI,EAAEM,WAAW,CAAC,CAAC,CAAC;EAC9C;EAEA,MAAMS,wBAAwB,GAAGC,OAAO,CAACC,GAAG,CAACC,YAAY,IAAI,KAAK;EAClE,MAAMC,kBAAkB,GAAG,CAAC,KAAK,EAAEpB,OAAO,CAACG,MAAM,CAAC;;EAElD;EACA,MAAMkB,kBAAkB,GAAGZ,aAAI,CAACa,QAAQ,CAACN,wBAAwB,CAAC;EAClEd,MAAM,CAACU,IAAI,CACT,WAAWP,cAAK,CAACQ,IAAI,CAACQ,kBAAkB,CAAC,IAAIhB,cAAK,CAACQ,IAAI,CACrDO,kBAAkB,CAACG,IAAI,CAAC,GAAG,CAC7B,CAAC,EACH,CAAC;EAED,MAAM,IAAAC,YAAK,EAACR,wBAAwB,EAAEI,kBAAkB,EAAE;IACxDK,KAAK,EAAE,CAAC,QAAQ,EAAE,QAAQ,EAAE,SAAS;EACvC,CAAC,CAAC;EAEFvB,MAAM,CAACwB,OAAO,CAAC,WAAWrB,cAAK,CAACQ,IAAI,CAACb,OAAO,CAACG,MAAM,CAAC,qBAAqB,CAAC;EAE1E,IAAIH,OAAO,CAACQ,KAAK,IAAID,WAAW,IAAI,EAAE,MAAMoB,gBAAE,CAACC,UAAU,CAACrB,WAAW,CAAC,CAAC,EAAE;IACvEL,MAAM,CAAC2B,IAAI,CACT,0BAA0BxB,cAAK,CAACQ,IAAI,CAClCb,OAAO,CAACG,MACV,CAAC,eAAeE,cAAK,CAACQ,IAAI,CAACb,OAAO,CAACQ,KAAK,CAAC,WAAWH,cAAK,CAACyB,IAAI,CAC5D,OACF,CAAC,kGAAkGzB,cAAK,CAACyB,IAAI,CAC3G,OACF,CAAC,kBACH,CAAC;EACH;AACF","ignoreList":[]}
|
|
@@ -44,10 +44,10 @@ async function build({
|
|
|
44
44
|
}
|
|
45
45
|
}
|
|
46
46
|
} catch (e) {
|
|
47
|
-
report.warn(`Couldn't parse
|
|
47
|
+
report.warn(`Couldn't parse ${_kleur.default.blue(project)}. There might be validation errors.`);
|
|
48
48
|
}
|
|
49
49
|
} else {
|
|
50
|
-
throw new Error(`Couldn't find a ${_kleur.default.blue(
|
|
50
|
+
throw new Error(`Couldn't find a ${_kleur.default.blue(project)} in the project root.`);
|
|
51
51
|
}
|
|
52
52
|
let tsc;
|
|
53
53
|
if (options?.tsc) {
|
|
@@ -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","variants","esm","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","commonjs","module","tsbuildinfo","replace","status","copy","writeJSON","type","success","pkg","JSON","fields","name","value","types","error","message","undefined","exports","Boolean","import","getGeneratedTypesPath","field","indexDTsName","basename","potentialPaths","dirname","potentialPath","invalidFieldNames","Promise","all","map","startsWith","test","generatedTypesPath","filter","validFields","every","suggestedTypesPaths","i","self","indexOf","toString"],"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, Variants } from '../types';\n\ntype Options = Input & {\n options?: {\n project?: string;\n tsc?: string;\n };\n esm: boolean;\n variants: Variants;\n};\n\ntype Field = {\n name: string;\n value: string | undefined;\n output: string | undefined;\n error: boolean;\n message: string | undefined;\n};\n\nexport default async function build({\n source,\n root,\n output,\n report,\n options,\n variants,\n esm,\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: { commonjs?: string; module?: string } = {};\n\n if (esm && variants.commonjs && variants.module) {\n outputs.commonjs = path.join(output, 'commonjs');\n outputs.module = path.join(output, 'module');\n } else if (variants.commonjs) {\n outputs.commonjs = output;\n } else {\n outputs.module = output;\n }\n\n const outDir = outputs.commonjs ?? outputs.module;\n\n if (outDir == null) {\n throw new Error('Neither commonjs nor module output is enabled.');\n }\n\n const tsbuildinfo = path.join(\n outDir,\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 outDir,\n ],\n {\n stdio: 'inherit',\n cwd: root,\n }\n );\n\n if (result.status === 0) {\n await del([tsbuildinfo]);\n\n if (esm) {\n if (outputs?.commonjs && outputs?.module) {\n // When ESM compatible output is enabled and commonjs build is present, 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 } else if (outputs?.commonjs) {\n await fs.writeJSON(path.join(outputs.commonjs, 'package.json'), {\n type: 'commonjs',\n });\n } else if (outputs?.module) {\n await fs.writeJSON(path.join(outputs.module, 'package.json'), {\n type: 'module',\n });\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 message: undefined,\n },\n ...(pkg.exports?.['.']?.types\n ? [\n {\n name: \"exports['.'].types\",\n value: pkg.exports?.['.']?.types,\n output: outDir,\n error: Boolean(esm && variants.commonjs && variants.module),\n message: `using both ${kleur.blue('commonjs')} and ${kleur.blue(\n 'module'\n )} targets with ${kleur.blue(\n 'esm'\n )} option enabled. Specify ${kleur.blue(\n \"exports['.'].import.types\"\n )} and ${kleur.blue(\"exports['.'].require.types\")} instead.`,\n },\n ]\n : []),\n {\n name: \"exports['.'].import.types\",\n value: pkg.exports?.['.']?.import?.types,\n output: outputs.module,\n error: !esm,\n message: `the ${kleur.blue(\n 'esm'\n )} option is not enabled for the ${kleur.blue('module')} target`,\n },\n {\n name: \"exports['.'].require.types\",\n value: pkg.exports?.['.']?.require?.types,\n output: outputs.commonjs,\n error: false,\n message: undefined,\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 ${field.message}.`\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","variants","esm","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","commonjs","module","tsbuildinfo","replace","status","copy","writeJSON","type","success","pkg","JSON","fields","name","value","types","error","message","undefined","exports","Boolean","import","getGeneratedTypesPath","field","indexDTsName","basename","potentialPaths","dirname","potentialPath","invalidFieldNames","Promise","all","map","startsWith","test","generatedTypesPath","filter","validFields","every","suggestedTypesPaths","i","self","indexOf","toString"],"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, Variants } from '../types';\n\ntype Options = Input & {\n options?: {\n project?: string;\n tsc?: string;\n };\n esm: boolean;\n variants: Variants;\n};\n\ntype Field = {\n name: string;\n value: string | undefined;\n output: string | undefined;\n error: boolean;\n message: string | undefined;\n};\n\nexport default async function build({\n source,\n root,\n output,\n report,\n options,\n variants,\n esm,\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 ${kleur.blue(\n project\n )}. There might be validation errors.`\n );\n }\n } else {\n throw new Error(\n `Couldn't find a ${kleur.blue(project)} 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: { commonjs?: string; module?: string } = {};\n\n if (esm && variants.commonjs && variants.module) {\n outputs.commonjs = path.join(output, 'commonjs');\n outputs.module = path.join(output, 'module');\n } else if (variants.commonjs) {\n outputs.commonjs = output;\n } else {\n outputs.module = output;\n }\n\n const outDir = outputs.commonjs ?? outputs.module;\n\n if (outDir == null) {\n throw new Error('Neither commonjs nor module output is enabled.');\n }\n\n const tsbuildinfo = path.join(\n outDir,\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 outDir,\n ],\n {\n stdio: 'inherit',\n cwd: root,\n }\n );\n\n if (result.status === 0) {\n await del([tsbuildinfo]);\n\n if (esm) {\n if (outputs?.commonjs && outputs?.module) {\n // When ESM compatible output is enabled and commonjs build is present, 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 } else if (outputs?.commonjs) {\n await fs.writeJSON(path.join(outputs.commonjs, 'package.json'), {\n type: 'commonjs',\n });\n } else if (outputs?.module) {\n await fs.writeJSON(path.join(outputs.module, 'package.json'), {\n type: 'module',\n });\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 message: undefined,\n },\n ...(pkg.exports?.['.']?.types\n ? [\n {\n name: \"exports['.'].types\",\n value: pkg.exports?.['.']?.types,\n output: outDir,\n error: Boolean(esm && variants.commonjs && variants.module),\n message: `using both ${kleur.blue('commonjs')} and ${kleur.blue(\n 'module'\n )} targets with ${kleur.blue(\n 'esm'\n )} option enabled. Specify ${kleur.blue(\n \"exports['.'].import.types\"\n )} and ${kleur.blue(\"exports['.'].require.types\")} instead.`,\n },\n ]\n : []),\n {\n name: \"exports['.'].import.types\",\n value: pkg.exports?.['.']?.import?.types,\n output: outputs.module,\n error: !esm,\n message: `the ${kleur.blue(\n 'esm'\n )} option is not enabled for the ${kleur.blue('module')} target`,\n },\n {\n name: \"exports['.'].require.types\",\n value: pkg.exports?.['.']?.require?.types,\n output: outputs.commonjs,\n error: false,\n message: undefined,\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 ${field.message}.`\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":[]}
|
package/lib/utils/loadConfig.js
CHANGED
|
@@ -4,18 +4,53 @@ Object.defineProperty(exports, "__esModule", {
|
|
|
4
4
|
value: true
|
|
5
5
|
});
|
|
6
6
|
exports.loadConfig = void 0;
|
|
7
|
-
var
|
|
8
|
-
|
|
9
|
-
const
|
|
10
|
-
|
|
11
|
-
|
|
12
|
-
const
|
|
13
|
-
|
|
14
|
-
|
|
15
|
-
|
|
16
|
-
|
|
17
|
-
|
|
18
|
-
|
|
7
|
+
var _path = require("path");
|
|
8
|
+
var _package = require("../../package.json");
|
|
9
|
+
const searchPlaces = ['bob.config.mjs', 'bob.config.cjs', 'bob.config.js', 'package.json'];
|
|
10
|
+
const loadConfig = root => {
|
|
11
|
+
for (const filename of searchPlaces) {
|
|
12
|
+
const result = requireConfig(root, filename);
|
|
13
|
+
if (filename === 'package.json' && result != null) {
|
|
14
|
+
if (result.content[_package.name] != null) {
|
|
15
|
+
return {
|
|
16
|
+
filepath: result.filepath,
|
|
17
|
+
config: result.content[_package.name]
|
|
18
|
+
};
|
|
19
|
+
}
|
|
20
|
+
}
|
|
21
|
+
if (result != null) {
|
|
22
|
+
const content = result.content;
|
|
23
|
+
if (content?.__esModule) {
|
|
24
|
+
return {
|
|
25
|
+
filepath: result.filepath,
|
|
26
|
+
config: content.default
|
|
27
|
+
};
|
|
28
|
+
}
|
|
29
|
+
return {
|
|
30
|
+
filepath: result.filepath,
|
|
31
|
+
config: content
|
|
32
|
+
};
|
|
33
|
+
}
|
|
34
|
+
}
|
|
35
|
+
return undefined;
|
|
19
36
|
};
|
|
20
37
|
exports.loadConfig = loadConfig;
|
|
38
|
+
const requireConfig = (root, filename) => {
|
|
39
|
+
const filepath = (0, _path.join)(root, filename);
|
|
40
|
+
try {
|
|
41
|
+
// eslint-disable-next-line @typescript-eslint/no-require-imports
|
|
42
|
+
const content = require(filepath);
|
|
43
|
+
return {
|
|
44
|
+
filepath,
|
|
45
|
+
content
|
|
46
|
+
};
|
|
47
|
+
} catch (e) {
|
|
48
|
+
if (typeof e === 'object' && e != null && 'code' in e && e.code === 'MODULE_NOT_FOUND') {
|
|
49
|
+
// We expect that some of the config files won't exist
|
|
50
|
+
// So we just return undefined in that case
|
|
51
|
+
return undefined;
|
|
52
|
+
}
|
|
53
|
+
throw e;
|
|
54
|
+
}
|
|
55
|
+
};
|
|
21
56
|
//# sourceMappingURL=loadConfig.js.map
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"loadConfig.js","names":["
|
|
1
|
+
{"version":3,"file":"loadConfig.js","names":["_path","require","_package","searchPlaces","loadConfig","root","filename","result","requireConfig","content","name","filepath","config","__esModule","default","undefined","exports","join","e","code"],"sources":["../../src/utils/loadConfig.ts"],"sourcesContent":["import { join } from 'path';\nimport { name } from '../../package.json';\n\nconst searchPlaces = [\n 'bob.config.mjs',\n 'bob.config.cjs',\n 'bob.config.js',\n 'package.json',\n];\n\nexport const loadConfig = (root: string) => {\n for (const filename of searchPlaces) {\n const result = requireConfig(root, filename);\n\n if (filename === 'package.json' && result != null) {\n if (result.content[name] != null) {\n return {\n filepath: result.filepath,\n config: result.content[name],\n };\n }\n }\n\n if (result != null) {\n const content = result.content;\n\n if (content?.__esModule) {\n return {\n filepath: result.filepath,\n config: content.default,\n };\n }\n\n return {\n filepath: result.filepath,\n config: content,\n };\n }\n }\n\n return undefined;\n};\n\nconst requireConfig = (root: string, filename: string) => {\n const filepath = join(root, filename);\n\n try {\n // eslint-disable-next-line @typescript-eslint/no-require-imports\n const content = require(filepath);\n\n return {\n filepath,\n content,\n };\n } catch (e) {\n if (\n typeof e === 'object' &&\n e != null &&\n 'code' in e &&\n e.code === 'MODULE_NOT_FOUND'\n ) {\n // We expect that some of the config files won't exist\n // So we just return undefined in that case\n return undefined;\n }\n\n throw e;\n }\n};\n"],"mappings":";;;;;;AAAA,IAAAA,KAAA,GAAAC,OAAA;AACA,IAAAC,QAAA,GAAAD,OAAA;AAEA,MAAME,YAAY,GAAG,CACnB,gBAAgB,EAChB,gBAAgB,EAChB,eAAe,EACf,cAAc,CACf;AAEM,MAAMC,UAAU,GAAIC,IAAY,IAAK;EAC1C,KAAK,MAAMC,QAAQ,IAAIH,YAAY,EAAE;IACnC,MAAMI,MAAM,GAAGC,aAAa,CAACH,IAAI,EAAEC,QAAQ,CAAC;IAE5C,IAAIA,QAAQ,KAAK,cAAc,IAAIC,MAAM,IAAI,IAAI,EAAE;MACjD,IAAIA,MAAM,CAACE,OAAO,CAACC,aAAI,CAAC,IAAI,IAAI,EAAE;QAChC,OAAO;UACLC,QAAQ,EAAEJ,MAAM,CAACI,QAAQ;UACzBC,MAAM,EAAEL,MAAM,CAACE,OAAO,CAACC,aAAI;QAC7B,CAAC;MACH;IACF;IAEA,IAAIH,MAAM,IAAI,IAAI,EAAE;MAClB,MAAME,OAAO,GAAGF,MAAM,CAACE,OAAO;MAE9B,IAAIA,OAAO,EAAEI,UAAU,EAAE;QACvB,OAAO;UACLF,QAAQ,EAAEJ,MAAM,CAACI,QAAQ;UACzBC,MAAM,EAAEH,OAAO,CAACK;QAClB,CAAC;MACH;MAEA,OAAO;QACLH,QAAQ,EAAEJ,MAAM,CAACI,QAAQ;QACzBC,MAAM,EAAEH;MACV,CAAC;IACH;EACF;EAEA,OAAOM,SAAS;AAClB,CAAC;AAACC,OAAA,CAAAZ,UAAA,GAAAA,UAAA;AAEF,MAAMI,aAAa,GAAGA,CAACH,IAAY,EAAEC,QAAgB,KAAK;EACxD,MAAMK,QAAQ,GAAG,IAAAM,UAAI,EAACZ,IAAI,EAAEC,QAAQ,CAAC;EAErC,IAAI;IACF;IACA,MAAMG,OAAO,GAAGR,OAAO,CAACU,QAAQ,CAAC;IAEjC,OAAO;MACLA,QAAQ;MACRF;IACF,CAAC;EACH,CAAC,CAAC,OAAOS,CAAC,EAAE;IACV,IACE,OAAOA,CAAC,KAAK,QAAQ,IACrBA,CAAC,IAAI,IAAI,IACT,MAAM,IAAIA,CAAC,IACXA,CAAC,CAACC,IAAI,KAAK,kBAAkB,EAC7B;MACA;MACA;MACA,OAAOJ,SAAS;IAClB;IAEA,MAAMG,CAAC;EACT;AACF,CAAC","ignoreList":[]}
|
|
@@ -0,0 +1,101 @@
|
|
|
1
|
+
"use strict";
|
|
2
|
+
|
|
3
|
+
Object.defineProperty(exports, "__esModule", {
|
|
4
|
+
value: true
|
|
5
|
+
});
|
|
6
|
+
exports.run = void 0;
|
|
7
|
+
var _kleur = _interopRequireDefault(require("kleur"));
|
|
8
|
+
var _nodeWorker_threads = require("node:worker_threads");
|
|
9
|
+
var _codegen = _interopRequireDefault(require("../targets/codegen"));
|
|
10
|
+
var _commonjs = _interopRequireDefault(require("../targets/commonjs"));
|
|
11
|
+
var _custom = _interopRequireDefault(require("../targets/custom"));
|
|
12
|
+
var _module2 = _interopRequireDefault(require("../targets/module"));
|
|
13
|
+
var _typescript = _interopRequireDefault(require("../targets/typescript"));
|
|
14
|
+
function _interopRequireDefault(e) { return e && e.__esModule ? e : { default: e }; }
|
|
15
|
+
const targets = {
|
|
16
|
+
commonjs: _commonjs.default,
|
|
17
|
+
module: _module2.default,
|
|
18
|
+
typescript: _typescript.default,
|
|
19
|
+
codegen: _codegen.default,
|
|
20
|
+
custom: _custom.default
|
|
21
|
+
};
|
|
22
|
+
const run = async (target, {
|
|
23
|
+
report,
|
|
24
|
+
...data
|
|
25
|
+
}) => {
|
|
26
|
+
if (!_nodeWorker_threads.isMainThread) {
|
|
27
|
+
throw new Error('Worker can only be run from the main thread');
|
|
28
|
+
}
|
|
29
|
+
const worker = new _nodeWorker_threads.Worker(__filename, {
|
|
30
|
+
workerData: {
|
|
31
|
+
target,
|
|
32
|
+
data
|
|
33
|
+
},
|
|
34
|
+
env: {
|
|
35
|
+
...process.env,
|
|
36
|
+
FORCE_COLOR: process.stdout.isTTY ? '1' : '0'
|
|
37
|
+
}
|
|
38
|
+
});
|
|
39
|
+
worker.on('message', message => {
|
|
40
|
+
switch (message.type) {
|
|
41
|
+
case 'info':
|
|
42
|
+
report.info(message.message);
|
|
43
|
+
break;
|
|
44
|
+
case 'warn':
|
|
45
|
+
report.warn(message.message);
|
|
46
|
+
break;
|
|
47
|
+
case 'error':
|
|
48
|
+
report.error(message.message);
|
|
49
|
+
break;
|
|
50
|
+
case 'success':
|
|
51
|
+
report.success(message.message);
|
|
52
|
+
break;
|
|
53
|
+
}
|
|
54
|
+
});
|
|
55
|
+
worker.on('error', error => {
|
|
56
|
+
report.error(error.message);
|
|
57
|
+
});
|
|
58
|
+
worker.on('exit', code => {
|
|
59
|
+
if (code !== 0) {
|
|
60
|
+
report.error(`exited with code ${_kleur.default.red(code)}`);
|
|
61
|
+
}
|
|
62
|
+
});
|
|
63
|
+
};
|
|
64
|
+
exports.run = run;
|
|
65
|
+
if (!_nodeWorker_threads.isMainThread) {
|
|
66
|
+
const {
|
|
67
|
+
target,
|
|
68
|
+
data
|
|
69
|
+
} = _nodeWorker_threads.workerData;
|
|
70
|
+
const report = {
|
|
71
|
+
info: message => _nodeWorker_threads.parentPort?.postMessage({
|
|
72
|
+
type: 'info',
|
|
73
|
+
message
|
|
74
|
+
}),
|
|
75
|
+
warn: message => _nodeWorker_threads.parentPort?.postMessage({
|
|
76
|
+
type: 'warn',
|
|
77
|
+
message
|
|
78
|
+
}),
|
|
79
|
+
error: message => _nodeWorker_threads.parentPort?.postMessage({
|
|
80
|
+
type: 'error',
|
|
81
|
+
message
|
|
82
|
+
}),
|
|
83
|
+
success: message => _nodeWorker_threads.parentPort?.postMessage({
|
|
84
|
+
type: 'success',
|
|
85
|
+
message
|
|
86
|
+
})
|
|
87
|
+
};
|
|
88
|
+
if (target in targets) {
|
|
89
|
+
// @ts-expect-error - typescript doesn't support correlated union types https://github.com/microsoft/TypeScript/issues/30581
|
|
90
|
+
targets[target]({
|
|
91
|
+
...data,
|
|
92
|
+
report
|
|
93
|
+
}).catch(error => {
|
|
94
|
+
console.log(error);
|
|
95
|
+
process.exit(1);
|
|
96
|
+
});
|
|
97
|
+
} else {
|
|
98
|
+
throw new Error(`Unknown target: ${target}`);
|
|
99
|
+
}
|
|
100
|
+
}
|
|
101
|
+
//# sourceMappingURL=workerize.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"workerize.js","names":["_kleur","_interopRequireDefault","require","_nodeWorker_threads","_codegen","_commonjs","_custom","_module2","_typescript","e","__esModule","default","targets","commonjs","module","typescript","codegen","custom","run","target","report","data","isMainThread","Error","worker","Worker","__filename","workerData","env","process","FORCE_COLOR","stdout","isTTY","on","message","type","info","warn","error","success","code","kleur","red","exports","parentPort","postMessage","catch","console","log","exit"],"sources":["../../src/utils/workerize.ts"],"sourcesContent":["import kleur from 'kleur';\nimport {\n Worker,\n isMainThread,\n parentPort,\n workerData,\n} from 'node:worker_threads';\nimport codegen from '../targets/codegen';\nimport commonjs from '../targets/commonjs';\nimport custom from '../targets/custom';\nimport module from '../targets/module';\nimport typescript from '../targets/typescript';\nimport type { Report, Target } from '../types';\n\ntype WorkerData<T extends Target> = {\n target: T;\n data: Omit<Parameters<(typeof targets)[T]>[0], 'report'>;\n};\n\nconst targets = {\n commonjs,\n module,\n typescript,\n codegen,\n custom,\n} as const;\n\nexport const run = async <T extends Target>(\n target: T,\n { report, ...data }: Parameters<(typeof targets)[T]>[0]\n) => {\n if (!isMainThread) {\n throw new Error('Worker can only be run from the main thread');\n }\n\n const worker = new Worker(__filename, {\n workerData: {\n target,\n data,\n } satisfies WorkerData<T>,\n env: {\n ...process.env,\n FORCE_COLOR: process.stdout.isTTY ? '1' : '0',\n },\n });\n\n worker.on('message', (message) => {\n switch (message.type) {\n case 'info':\n report.info(message.message);\n break;\n case 'warn':\n report.warn(message.message);\n break;\n case 'error':\n report.error(message.message);\n break;\n case 'success':\n report.success(message.message);\n break;\n }\n });\n\n worker.on('error', (error) => {\n report.error(error.message);\n });\n\n worker.on('exit', (code) => {\n if (code !== 0) {\n report.error(`exited with code ${kleur.red(code)}`);\n }\n });\n};\n\nif (!isMainThread) {\n const { target, data } = workerData as WorkerData<Target>;\n\n const report: Report = {\n info: (message) => parentPort?.postMessage({ type: 'info', message }),\n warn: (message) => parentPort?.postMessage({ type: 'warn', message }),\n error: (message) => parentPort?.postMessage({ type: 'error', message }),\n success: (message) => parentPort?.postMessage({ type: 'success', message }),\n };\n\n if (target in targets) {\n // @ts-expect-error - typescript doesn't support correlated union types https://github.com/microsoft/TypeScript/issues/30581\n targets[target]({ ...data, report }).catch((error) => {\n console.log(error);\n process.exit(1);\n });\n } else {\n throw new Error(`Unknown target: ${target}`);\n }\n}\n"],"mappings":"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","ignoreList":[]}
|
package/metro-config.js
CHANGED
package/package.json
CHANGED
|
@@ -1,6 +1,6 @@
|
|
|
1
1
|
{
|
|
2
2
|
"name": "react-native-builder-bob",
|
|
3
|
-
"version": "0.
|
|
3
|
+
"version": "0.39.0",
|
|
4
4
|
"description": "CLI to build JavaScript files for React Native libraries",
|
|
5
5
|
"keywords": [
|
|
6
6
|
"react-native",
|
|
@@ -29,7 +29,7 @@
|
|
|
29
29
|
"babel-config.js"
|
|
30
30
|
],
|
|
31
31
|
"engines": {
|
|
32
|
-
"node": ">= 20.
|
|
32
|
+
"node": ">= 20.19.0"
|
|
33
33
|
},
|
|
34
34
|
"publishConfig": {
|
|
35
35
|
"access": "public",
|
|
@@ -53,7 +53,6 @@
|
|
|
53
53
|
"@babel/preset-typescript": "^7.24.7",
|
|
54
54
|
"babel-plugin-module-resolver": "^5.0.2",
|
|
55
55
|
"browserslist": "^4.20.4",
|
|
56
|
-
"cosmiconfig": "^9.0.0",
|
|
57
56
|
"cross-spawn": "^7.0.3",
|
|
58
57
|
"dedent": "^0.7.0",
|
|
59
58
|
"del": "^6.1.1",
|
|
@@ -88,5 +87,5 @@
|
|
|
88
87
|
"mock-fs": "^5.2.0",
|
|
89
88
|
"mock-stdin": "^1.0.0"
|
|
90
89
|
},
|
|
91
|
-
"gitHead": "
|
|
90
|
+
"gitHead": "c9af25bf214b96a001382a61014b7e22e90cad2d"
|
|
92
91
|
}
|