react-native-builder-bob 0.40.18 → 0.42.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/bin/bob +1 -1
- package/lib/package.json +93 -0
- package/lib/src/__tests__/babel.test.d.ts +1 -0
- package/lib/src/__tests__/babel.test.js +26 -0
- package/lib/src/__tests__/babel.test.js.map +1 -0
- package/lib/src/__tests__/init.test.d.ts +1 -0
- package/lib/src/__tests__/init.test.js +93 -0
- package/lib/src/__tests__/init.test.js.map +1 -0
- package/lib/src/__tests__/resolveModuleSpecifier.test.d.ts +1 -0
- package/lib/src/__tests__/resolveModuleSpecifier.test.js +95 -0
- package/lib/src/__tests__/resolveModuleSpecifier.test.js.map +1 -0
- package/lib/src/__tests__/typescript-declarations.test.d.ts +1 -0
- package/lib/src/__tests__/typescript-declarations.test.js +193 -0
- package/lib/src/__tests__/typescript-declarations.test.js.map +1 -0
- package/lib/src/__tests__/typescript.test.d.ts +1 -0
- package/lib/src/__tests__/typescript.test.js +243 -0
- package/lib/src/__tests__/typescript.test.js.map +1 -0
- package/lib/src/__tests__/updateSourceMap.test.d.ts +1 -0
- package/lib/src/__tests__/updateSourceMap.test.js +84 -0
- package/lib/src/__tests__/updateSourceMap.test.js.map +1 -0
- package/lib/src/babel.d.ts +19 -0
- package/lib/src/babel.js +58 -0
- package/lib/src/babel.js.map +1 -0
- package/lib/src/build.d.ts +14 -0
- package/lib/src/build.js +122 -0
- package/lib/src/build.js.map +1 -0
- package/lib/src/configs/babel-config.cjs +46 -0
- package/lib/src/configs/babel-config.cjs.map +1 -0
- package/lib/src/configs/babel-config.d.cts +15 -0
- package/lib/src/configs/babel-preset.cjs +66 -0
- package/lib/src/configs/babel-preset.cjs.map +1 -0
- package/lib/src/configs/babel-preset.d.cts +19 -0
- package/lib/src/configs/metro-config.d.mts +4 -0
- package/{metro-config.js → lib/src/configs/metro-config.mjs} +3 -7
- package/lib/src/configs/metro-config.mjs.map +1 -0
- package/lib/src/configs/vite-config.d.mts +2 -0
- package/lib/src/configs/vite-config.mjs +59 -0
- package/lib/src/configs/vite-config.mjs.map +1 -0
- package/lib/src/index.d.ts +1 -0
- package/lib/src/index.js +18 -0
- package/lib/src/index.js.map +1 -0
- package/lib/src/init.d.ts +1 -0
- package/lib/src/init.js +370 -0
- package/lib/src/init.js.map +1 -0
- package/lib/src/schema.d.ts +70 -0
- package/lib/src/schema.js +45 -0
- package/lib/src/schema.js.map +1 -0
- package/lib/src/targets/codegen/index.d.ts +4 -0
- package/lib/src/targets/codegen/index.js +54 -0
- package/lib/src/targets/codegen/index.js.map +1 -0
- package/lib/src/targets/codegen/patches/patchCodegenAndroidPackage.d.ts +11 -0
- package/lib/src/targets/codegen/patches/patchCodegenAndroidPackage.js +63 -0
- package/lib/src/targets/codegen/patches/patchCodegenAndroidPackage.js.map +1 -0
- package/lib/src/targets/codegen/patches/patchCodegenAndroidPackage.test.d.ts +1 -0
- package/lib/src/targets/codegen/patches/patchCodegenAndroidPackage.test.js +103 -0
- package/lib/src/targets/codegen/patches/patchCodegenAndroidPackage.test.js.map +1 -0
- package/lib/src/targets/codegen/patches/removeCodegenAppLevelCode.d.ts +16 -0
- package/lib/src/targets/codegen/patches/removeCodegenAppLevelCode.js +59 -0
- package/lib/src/targets/codegen/patches/removeCodegenAppLevelCode.js.map +1 -0
- package/lib/src/targets/codegen/patches/removeCodegenAppLevelCode.test.d.ts +1 -0
- package/lib/src/targets/codegen/patches/removeCodegenAppLevelCode.test.js +75 -0
- package/lib/src/targets/codegen/patches/removeCodegenAppLevelCode.test.js.map +1 -0
- package/lib/src/targets/commonjs.d.ts +9 -0
- package/lib/src/targets/commonjs.js +19 -0
- package/lib/src/targets/commonjs.js.map +1 -0
- package/lib/src/targets/custom.d.ts +9 -0
- package/lib/src/targets/custom.js +30 -0
- package/lib/src/targets/custom.js.map +1 -0
- package/lib/src/targets/module.d.ts +9 -0
- package/lib/src/targets/module.js +19 -0
- package/lib/src/targets/module.js.map +1 -0
- package/lib/src/targets/typescript.d.ts +12 -0
- package/lib/src/targets/typescript.js +387 -0
- package/lib/src/targets/typescript.js.map +1 -0
- package/lib/src/types.d.ts +24 -0
- package/lib/src/types.js +2 -0
- package/lib/src/types.js.map +1 -0
- package/lib/src/utils/androidAssemble.d.ts +8 -0
- package/lib/src/utils/androidAssemble.js +17 -0
- package/lib/src/utils/androidAssemble.js.map +1 -0
- package/lib/src/utils/compile.d.ts +16 -0
- package/lib/src/utils/compile.js +211 -0
- package/lib/src/utils/compile.js.map +1 -0
- package/lib/src/utils/isCodegenSpec.d.ts +1 -0
- package/lib/src/utils/isCodegenSpec.js +14 -0
- package/lib/src/utils/isCodegenSpec.js.map +1 -0
- package/lib/src/utils/isGitDirty.d.ts +1 -0
- package/lib/src/utils/isGitDirty.js +14 -0
- package/lib/src/utils/isGitDirty.js.map +1 -0
- package/lib/src/utils/loadConfig.d.ts +4 -0
- package/lib/src/utils/loadConfig.js +59 -0
- package/lib/src/utils/loadConfig.js.map +1 -0
- package/lib/src/utils/logger.d.ts +10 -0
- package/lib/src/utils/logger.js +30 -0
- package/lib/src/utils/logger.js.map +1 -0
- package/lib/src/utils/prompts.d.ts +3 -0
- package/lib/src/utils/prompts.js +10 -0
- package/lib/src/utils/prompts.js.map +1 -0
- package/lib/src/utils/resolveModuleSpecifier.d.ts +21 -0
- package/lib/src/utils/resolveModuleSpecifier.js +57 -0
- package/lib/src/utils/resolveModuleSpecifier.js.map +1 -0
- package/lib/src/utils/spawn.d.ts +2 -0
- package/lib/src/utils/spawn.js +41 -0
- package/lib/src/utils/spawn.js.map +1 -0
- package/lib/src/utils/updateSourceMap.d.ts +11 -0
- package/lib/src/utils/updateSourceMap.js +56 -0
- package/lib/src/utils/updateSourceMap.js.map +1 -0
- package/lib/src/utils/workerize.d.ts +15 -0
- package/lib/src/utils/workerize.js +75 -0
- package/lib/src/utils/workerize.js.map +1 -0
- package/package.json +49 -42
- package/babel-config.js +0 -55
- package/babel-preset.js +0 -71
- package/lib/__fixtures__/project/MyNativeComponent.js +0 -8
- package/lib/__fixtures__/project/MyNativeComponent.js.map +0 -1
- package/lib/__fixtures__/project/NativeMyLib.js +0 -2
- package/lib/__fixtures__/project/NativeMyLib.js.map +0 -1
- package/lib/__fixtures__/project/code/$exports-input.js +0 -122
- package/lib/__fixtures__/project/code/$exports-input.js.map +0 -1
- package/lib/__fixtures__/project/code/$exports-output.js +0 -122
- package/lib/__fixtures__/project/code/$exports-output.js.map +0 -1
- package/lib/__fixtures__/project/code/$imports-input.js +0 -24
- package/lib/__fixtures__/project/code/$imports-input.js.map +0 -1
- package/lib/__fixtures__/project/code/$imports-output.js +0 -20
- package/lib/__fixtures__/project/code/$imports-output.js.map +0 -1
- package/lib/__fixtures__/project/code/MyNativeComponent.js +0 -8
- package/lib/__fixtures__/project/code/MyNativeComponent.js.map +0 -1
- package/lib/__fixtures__/project/code/NativeMyLib.js +0 -2
- package/lib/__fixtures__/project/code/NativeMyLib.js.map +0 -1
- package/lib/__fixtures__/project/code/a.js +0 -2
- package/lib/__fixtures__/project/code/a.js.map +0 -1
- package/lib/__fixtures__/project/code/b.js +0 -2
- package/lib/__fixtures__/project/code/b.js.map +0 -1
- package/lib/__fixtures__/project/code/e.story.js +0 -2
- package/lib/__fixtures__/project/code/e.story.js.map +0 -1
- package/lib/__fixtures__/project/f.js +0 -2
- package/lib/__fixtures__/project/f.js.map +0 -1
- package/lib/__fixtures__/project/index.js +0 -2
- package/lib/__fixtures__/project/index.js.map +0 -1
- package/lib/__tests__/babel.test.js +0 -28
- package/lib/__tests__/babel.test.js.map +0 -1
- package/lib/__tests__/init.test.js +0 -93
- package/lib/__tests__/init.test.js.map +0 -1
- package/lib/babel.js +0 -92
- package/lib/babel.js.map +0 -1
- package/lib/build.js +0 -142
- package/lib/build.js.map +0 -1
- package/lib/index.js +0 -16
- package/lib/index.js.map +0 -1
- package/lib/init.js +0 -371
- package/lib/init.js.map +0 -1
- package/lib/schema.js +0 -49
- package/lib/schema.js.map +0 -1
- package/lib/targets/codegen/index.js +0 -60
- package/lib/targets/codegen/index.js.map +0 -1
- package/lib/targets/codegen/patches/patchCodegenAndroidPackage.js +0 -74
- package/lib/targets/codegen/patches/patchCodegenAndroidPackage.js.map +0 -1
- package/lib/targets/codegen/patches/patchCodegenAndroidPackage.test.js +0 -106
- package/lib/targets/codegen/patches/patchCodegenAndroidPackage.test.js.map +0 -1
- package/lib/targets/codegen/patches/removeCodegenAppLevelCode.js +0 -57
- package/lib/targets/codegen/patches/removeCodegenAppLevelCode.js.map +0 -1
- package/lib/targets/codegen/patches/removeCodegenAppLevelCode.test.js +0 -78
- package/lib/targets/codegen/patches/removeCodegenAppLevelCode.test.js.map +0 -1
- package/lib/targets/commonjs.js +0 -34
- package/lib/targets/commonjs.js.map +0 -1
- package/lib/targets/custom.js +0 -40
- package/lib/targets/custom.js.map +0 -1
- package/lib/targets/module.js +0 -34
- package/lib/targets/module.js.map +0 -1
- package/lib/targets/typescript.js +0 -219
- package/lib/targets/typescript.js.map +0 -1
- package/lib/types.js +0 -6
- package/lib/types.js.map +0 -1
- package/lib/utils/androidAssemble.js +0 -29
- package/lib/utils/androidAssemble.js.map +0 -1
- package/lib/utils/compile.js +0 -218
- package/lib/utils/compile.js.map +0 -1
- package/lib/utils/isCodegenSpec.js +0 -22
- package/lib/utils/isCodegenSpec.js.map +0 -1
- package/lib/utils/loadConfig.js +0 -56
- package/lib/utils/loadConfig.js.map +0 -1
- package/lib/utils/logger.js +0 -35
- package/lib/utils/logger.js.map +0 -1
- package/lib/utils/prompts.js +0 -17
- package/lib/utils/prompts.js.map +0 -1
- package/lib/utils/spawn.js +0 -48
- package/lib/utils/spawn.js.map +0 -1
- package/lib/utils/workerize.js +0 -102
- package/lib/utils/workerize.js.map +0 -1
|
@@ -0,0 +1,70 @@
|
|
|
1
|
+
declare const module: {
|
|
2
|
+
readonly name: "\"module\"";
|
|
3
|
+
readonly options: import("arktype/internal/variants/object.ts").ObjectType<{
|
|
4
|
+
esm: import("arktype/internal/attributes.ts").Default<boolean, false>;
|
|
5
|
+
babelrc: import("arktype/internal/attributes.ts").Default<boolean, false>;
|
|
6
|
+
configFile: import("arktype/internal/attributes.ts").Default<string | boolean, false>;
|
|
7
|
+
sourceMaps: import("arktype/internal/attributes.ts").Default<boolean, true>;
|
|
8
|
+
copyFlow: import("arktype/internal/attributes.ts").Default<boolean, false>;
|
|
9
|
+
jsxRuntime: import("arktype/internal/attributes.ts").Default<"automatic" | "classic", "automatic">;
|
|
10
|
+
}, {}>;
|
|
11
|
+
};
|
|
12
|
+
declare const commonjs: {
|
|
13
|
+
readonly name: "\"commonjs\"";
|
|
14
|
+
readonly options: import("arktype/internal/variants/object.ts").ObjectType<{
|
|
15
|
+
esm: import("arktype/internal/attributes.ts").Default<boolean, false>;
|
|
16
|
+
babelrc: import("arktype/internal/attributes.ts").Default<boolean, false>;
|
|
17
|
+
configFile: import("arktype/internal/attributes.ts").Default<string | boolean, false>;
|
|
18
|
+
sourceMaps: import("arktype/internal/attributes.ts").Default<boolean, true>;
|
|
19
|
+
copyFlow: import("arktype/internal/attributes.ts").Default<boolean, false>;
|
|
20
|
+
jsxRuntime: import("arktype/internal/attributes.ts").Default<"automatic" | "classic", "automatic">;
|
|
21
|
+
}, {}>;
|
|
22
|
+
};
|
|
23
|
+
declare const typescript: {
|
|
24
|
+
readonly name: "\"typescript\"";
|
|
25
|
+
readonly options: import("arktype/internal/variants/object.ts").ObjectType<{
|
|
26
|
+
project?: string | undefined;
|
|
27
|
+
tsc?: string | undefined;
|
|
28
|
+
}, {}>;
|
|
29
|
+
};
|
|
30
|
+
declare const codegen: {
|
|
31
|
+
readonly name: "\"codegen\"";
|
|
32
|
+
};
|
|
33
|
+
declare const custom: {
|
|
34
|
+
readonly name: "\"custom\"";
|
|
35
|
+
readonly options: import("arktype/internal/variants/object.ts").ObjectType<{
|
|
36
|
+
script: string;
|
|
37
|
+
clean?: string | undefined;
|
|
38
|
+
}, {}>;
|
|
39
|
+
};
|
|
40
|
+
declare const target: import("arktype/internal/variants/string.ts").StringType<"module" | "commonjs" | "typescript" | "codegen" | "custom", {}>;
|
|
41
|
+
export declare const config: import("arktype/internal/variants/object.ts").ObjectType<{
|
|
42
|
+
source: string;
|
|
43
|
+
output: string;
|
|
44
|
+
targets: ("module" | "commonjs" | "typescript" | "codegen" | ["commonjs"] | ["module"] | ["typescript"] | ["codegen"] | ["module", {
|
|
45
|
+
esm: import("arktype/internal/attributes.ts").Default<boolean, false>;
|
|
46
|
+
babelrc: import("arktype/internal/attributes.ts").Default<boolean, false>;
|
|
47
|
+
configFile: import("arktype/internal/attributes.ts").Default<string | boolean, false>;
|
|
48
|
+
sourceMaps: import("arktype/internal/attributes.ts").Default<boolean, true>;
|
|
49
|
+
copyFlow: import("arktype/internal/attributes.ts").Default<boolean, false>;
|
|
50
|
+
jsxRuntime: import("arktype/internal/attributes.ts").Default<"automatic" | "classic", "automatic">;
|
|
51
|
+
}] | ["commonjs", {
|
|
52
|
+
esm: import("arktype/internal/attributes.ts").Default<boolean, false>;
|
|
53
|
+
babelrc: import("arktype/internal/attributes.ts").Default<boolean, false>;
|
|
54
|
+
configFile: import("arktype/internal/attributes.ts").Default<string | boolean, false>;
|
|
55
|
+
sourceMaps: import("arktype/internal/attributes.ts").Default<boolean, true>;
|
|
56
|
+
copyFlow: import("arktype/internal/attributes.ts").Default<boolean, false>;
|
|
57
|
+
jsxRuntime: import("arktype/internal/attributes.ts").Default<"automatic" | "classic", "automatic">;
|
|
58
|
+
}] | ["typescript", {
|
|
59
|
+
project?: string | undefined;
|
|
60
|
+
tsc?: string | undefined;
|
|
61
|
+
}] | ["custom", {
|
|
62
|
+
script: string;
|
|
63
|
+
clean?: string | undefined;
|
|
64
|
+
}])[];
|
|
65
|
+
exclude: import("arktype/internal/attributes.ts").Default<string, "**/{__tests__,__fixtures__,__mocks__}/**">;
|
|
66
|
+
}, {}>;
|
|
67
|
+
export type Config = typeof config.infer;
|
|
68
|
+
export type Target = typeof target.infer;
|
|
69
|
+
export type TargetOptions<T extends Target> = T extends typeof commonjs.name ? typeof commonjs.options.infer : T extends typeof module.name ? typeof module.options.infer : T extends typeof typescript.name ? typeof typescript.options.infer : T extends typeof custom.name ? typeof custom.options.infer : T extends typeof codegen.name ? undefined : never;
|
|
70
|
+
export {};
|
|
@@ -0,0 +1,45 @@
|
|
|
1
|
+
import { type } from 'arktype';
|
|
2
|
+
const module = {
|
|
3
|
+
name: '"module"',
|
|
4
|
+
options: type({
|
|
5
|
+
esm: type('boolean').default(false),
|
|
6
|
+
babelrc: type('boolean').default(false),
|
|
7
|
+
configFile: type('boolean | string').default(false),
|
|
8
|
+
sourceMaps: type('boolean').default(true),
|
|
9
|
+
copyFlow: type('boolean').default(false),
|
|
10
|
+
jsxRuntime: type('"automatic" | "classic"').default('automatic'),
|
|
11
|
+
}),
|
|
12
|
+
};
|
|
13
|
+
const commonjs = {
|
|
14
|
+
name: '"commonjs"',
|
|
15
|
+
options: module.options,
|
|
16
|
+
};
|
|
17
|
+
const typescript = {
|
|
18
|
+
name: '"typescript"',
|
|
19
|
+
options: type({
|
|
20
|
+
project: 'string?',
|
|
21
|
+
tsc: 'string?',
|
|
22
|
+
}),
|
|
23
|
+
};
|
|
24
|
+
const codegen = {
|
|
25
|
+
name: '"codegen"',
|
|
26
|
+
};
|
|
27
|
+
const custom = {
|
|
28
|
+
name: '"custom"',
|
|
29
|
+
options: type({
|
|
30
|
+
script: 'string',
|
|
31
|
+
clean: 'string?',
|
|
32
|
+
}),
|
|
33
|
+
};
|
|
34
|
+
// eslint-disable-next-line @typescript-eslint/no-unused-vars
|
|
35
|
+
const target = type.or(commonjs.name, module.name, typescript.name, codegen.name, custom.name);
|
|
36
|
+
export const config = type({
|
|
37
|
+
source: 'string',
|
|
38
|
+
output: 'string',
|
|
39
|
+
targets: type
|
|
40
|
+
.or(type.or(module.name, [module.name], [module.name, module.options]), type.or(commonjs.name, [commonjs.name], [commonjs.name, commonjs.options]), type.or(typescript.name, [typescript.name], [typescript.name, typescript.options]), type.or(codegen.name, [codegen.name]), [custom.name, custom.options])
|
|
41
|
+
.array()
|
|
42
|
+
.moreThanLength(0),
|
|
43
|
+
exclude: type.string.default('**/{__tests__,__fixtures__,__mocks__}/**'),
|
|
44
|
+
}).onDeepUndeclaredKey('reject');
|
|
45
|
+
//# sourceMappingURL=schema.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"schema.js","sourceRoot":"","sources":["../../src/schema.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,IAAI,EAAE,MAAM,SAAS,CAAC;AAE/B,MAAM,MAAM,GAAG;IACb,IAAI,EAAE,UAAU;IAChB,OAAO,EAAE,IAAI,CAAC;QACZ,GAAG,EAAE,IAAI,CAAC,SAAS,CAAC,CAAC,OAAO,CAAC,KAAK,CAAC;QACnC,OAAO,EAAE,IAAI,CAAC,SAAS,CAAC,CAAC,OAAO,CAAC,KAAK,CAAC;QACvC,UAAU,EAAE,IAAI,CAAC,kBAAkB,CAAC,CAAC,OAAO,CAAC,KAAK,CAAC;QACnD,UAAU,EAAE,IAAI,CAAC,SAAS,CAAC,CAAC,OAAO,CAAC,IAAI,CAAC;QACzC,QAAQ,EAAE,IAAI,CAAC,SAAS,CAAC,CAAC,OAAO,CAAC,KAAK,CAAC;QACxC,UAAU,EAAE,IAAI,CAAC,yBAAyB,CAAC,CAAC,OAAO,CAAC,WAAW,CAAC;KACjE,CAAC;CACM,CAAC;AAEX,MAAM,QAAQ,GAAG;IACf,IAAI,EAAE,YAAY;IAClB,OAAO,EAAE,MAAM,CAAC,OAAO;CACf,CAAC;AAEX,MAAM,UAAU,GAAG;IACjB,IAAI,EAAE,cAAc;IACpB,OAAO,EAAE,IAAI,CAAC;QACZ,OAAO,EAAE,SAAS;QAClB,GAAG,EAAE,SAAS;KACf,CAAC;CACM,CAAC;AAEX,MAAM,OAAO,GAAG;IACd,IAAI,EAAE,WAAW;CACT,CAAC;AAEX,MAAM,MAAM,GAAG;IACb,IAAI,EAAE,UAAU;IAChB,OAAO,EAAE,IAAI,CAAC;QACZ,MAAM,EAAE,QAAQ;QAChB,KAAK,EAAE,SAAS;KACjB,CAAC;CACM,CAAC;AAEX,6DAA6D;AAC7D,MAAM,MAAM,GAAG,IAAI,CAAC,EAAE,CACpB,QAAQ,CAAC,IAAI,EACb,MAAM,CAAC,IAAI,EACX,UAAU,CAAC,IAAI,EACf,OAAO,CAAC,IAAI,EACZ,MAAM,CAAC,IAAI,CACZ,CAAC;AAEF,MAAM,CAAC,MAAM,MAAM,GAAG,IAAI,CAAC;IACzB,MAAM,EAAE,QAAQ;IAChB,MAAM,EAAE,QAAQ;IAChB,OAAO,EAAE,IAAI;SACV,EAAE,CACD,IAAI,CAAC,EAAE,CAAC,MAAM,CAAC,IAAI,EAAE,CAAC,MAAM,CAAC,IAAI,CAAC,EAAE,CAAC,MAAM,CAAC,IAAI,EAAE,MAAM,CAAC,OAAO,CAAC,CAAC,EAClE,IAAI,CAAC,EAAE,CACL,QAAQ,CAAC,IAAI,EACb,CAAC,QAAQ,CAAC,IAAI,CAAC,EACf,CAAC,QAAQ,CAAC,IAAI,EAAE,QAAQ,CAAC,OAAO,CAAC,CAClC,EACD,IAAI,CAAC,EAAE,CACL,UAAU,CAAC,IAAI,EACf,CAAC,UAAU,CAAC,IAAI,CAAC,EACjB,CAAC,UAAU,CAAC,IAAI,EAAE,UAAU,CAAC,OAAO,CAAC,CACtC,EACD,IAAI,CAAC,EAAE,CAAC,OAAO,CAAC,IAAI,EAAE,CAAC,OAAO,CAAC,IAAI,CAAC,CAAC,EACrC,CAAC,MAAM,CAAC,IAAI,EAAE,MAAM,CAAC,OAAO,CAAC,CAC9B;SACA,KAAK,EAAE;SACP,cAAc,CAAC,CAAC,CAAC;IACpB,OAAO,EAAE,IAAI,CAAC,MAAM,CAAC,OAAO,CAAC,0CAA0C,CAAC;CACzE,CAAC,CAAC,mBAAmB,CAAC,QAAQ,CAAC,CAAC"}
|
|
@@ -0,0 +1,54 @@
|
|
|
1
|
+
import path from 'node:path';
|
|
2
|
+
import { deleteAsync } from 'del';
|
|
3
|
+
import fs from 'fs-extra';
|
|
4
|
+
import kleur from 'kleur';
|
|
5
|
+
import { spawn } from "../../utils/spawn.js";
|
|
6
|
+
import { patchCodegenAndroidPackage } from "./patches/patchCodegenAndroidPackage.js";
|
|
7
|
+
import { getCodegenCLISourceSupport, removeCodegenAppLevelCode, } from "./patches/removeCodegenAppLevelCode.js";
|
|
8
|
+
export default async function build({ root, report }) {
|
|
9
|
+
const packageJsonPath = path.resolve(root, 'package.json');
|
|
10
|
+
const packageJson = await fs.readJson(packageJsonPath);
|
|
11
|
+
const codegenIosPath = packageJson.codegenConfig?.outputDir?.ios;
|
|
12
|
+
if (codegenIosPath != null) {
|
|
13
|
+
report.info(`Cleaning up previous iOS codegen native code at ${kleur.blue(path.relative(root, codegenIosPath))}`);
|
|
14
|
+
await deleteAsync([codegenIosPath]);
|
|
15
|
+
}
|
|
16
|
+
const codegenAndroidPath = packageJson.codegenConfig?.outputDir?.android;
|
|
17
|
+
if (codegenAndroidPath != null) {
|
|
18
|
+
report.info(`Cleaning up previous Android codegen native code at ${kleur.blue(path.relative(root, codegenAndroidPath))}`);
|
|
19
|
+
await deleteAsync([codegenAndroidPath]);
|
|
20
|
+
}
|
|
21
|
+
const codegenType = packageJson.codegenConfig?.type;
|
|
22
|
+
if (codegenType === undefined) {
|
|
23
|
+
throw new Error("Couldn't find the 'type' value in 'codegenConfig'. Please check your package.json's 'codegenConfig' property and make sure 'type' is defined. https://reactnative.dev/docs/the-new-architecture/using-codegen#configuring-codegen");
|
|
24
|
+
}
|
|
25
|
+
try {
|
|
26
|
+
const codegenCLISupportsSource = await getCodegenCLISourceSupport();
|
|
27
|
+
await spawn('npx', [
|
|
28
|
+
'@react-native-community/cli',
|
|
29
|
+
'codegen',
|
|
30
|
+
...(codegenCLISupportsSource ? ['--source', 'library'] : []),
|
|
31
|
+
]);
|
|
32
|
+
if (codegenType === 'modules' || codegenType === 'all') {
|
|
33
|
+
await patchCodegenAndroidPackage(root, packageJson, report);
|
|
34
|
+
}
|
|
35
|
+
if (!codegenCLISupportsSource) {
|
|
36
|
+
await removeCodegenAppLevelCode(root, packageJson);
|
|
37
|
+
}
|
|
38
|
+
report.success('Generated native code with codegen');
|
|
39
|
+
}
|
|
40
|
+
catch (e) {
|
|
41
|
+
if (e != null && typeof e === 'object') {
|
|
42
|
+
if ('stdout' in e && e.stdout != null) {
|
|
43
|
+
report.error(`Errors found while running codegen:\n\n${e.stdout.toString()}`);
|
|
44
|
+
}
|
|
45
|
+
else if ('message' in e && typeof e.message === 'string') {
|
|
46
|
+
if (e.message.includes("Error: Cannot find module '@react-native-community/cli/package.json'")) {
|
|
47
|
+
report.error("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.");
|
|
48
|
+
}
|
|
49
|
+
}
|
|
50
|
+
}
|
|
51
|
+
throw new Error('Failed to run codegen.', { cause: e });
|
|
52
|
+
}
|
|
53
|
+
}
|
|
54
|
+
//# sourceMappingURL=index.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"index.js","sourceRoot":"","sources":["../../../../src/targets/codegen/index.ts"],"names":[],"mappings":"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"}
|
|
@@ -0,0 +1,11 @@
|
|
|
1
|
+
import type { Report } from '../../../types.ts';
|
|
2
|
+
export declare const CODEGEN_DOCS = "https://reactnative.dev/docs/the-new-architecture/using-codegen#configuring-codegen";
|
|
3
|
+
/**
|
|
4
|
+
* Currently, running react-native codegen generates java files with package name `com.facebook.fbreact.specs`.
|
|
5
|
+
* This is a known issue in react-native itself.
|
|
6
|
+
* 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.
|
|
7
|
+
* To workaround, this function renames the package name to the one provided in the codegenConfig.
|
|
8
|
+
* @throws if codegenConfig.outputDir.android or codegenConfig.android.javaPackageName is not defined in package.json
|
|
9
|
+
* @throws if the codegenAndroidPath does not exist
|
|
10
|
+
*/
|
|
11
|
+
export declare function patchCodegenAndroidPackage(projectPath: string, packageJson: any, report: Report): Promise<void>;
|
|
@@ -0,0 +1,63 @@
|
|
|
1
|
+
import path from 'node:path';
|
|
2
|
+
import fs from 'fs-extra';
|
|
3
|
+
import kleur from 'kleur';
|
|
4
|
+
export const CODEGEN_DOCS = 'https://reactnative.dev/docs/the-new-architecture/using-codegen#configuring-codegen';
|
|
5
|
+
/**
|
|
6
|
+
* Currently, running react-native codegen generates java files with package name `com.facebook.fbreact.specs`.
|
|
7
|
+
* This is a known issue in react-native itself.
|
|
8
|
+
* 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.
|
|
9
|
+
* To workaround, this function renames the package name to the one provided in the codegenConfig.
|
|
10
|
+
* @throws if codegenConfig.outputDir.android or codegenConfig.android.javaPackageName is not defined in package.json
|
|
11
|
+
* @throws if the codegenAndroidPath does not exist
|
|
12
|
+
*/
|
|
13
|
+
export async function patchCodegenAndroidPackage(projectPath,
|
|
14
|
+
// eslint-disable-next-line @typescript-eslint/no-explicit-any
|
|
15
|
+
packageJson, report) {
|
|
16
|
+
let codegenAndroidPath = packageJson.codegenConfig?.outputDir?.android;
|
|
17
|
+
if (!codegenAndroidPath) {
|
|
18
|
+
throw new Error(`Your package.json doesn't contain codegenConfig.outputDir.android. Please see ${CODEGEN_DOCS}`);
|
|
19
|
+
}
|
|
20
|
+
codegenAndroidPath = path.resolve(projectPath, codegenAndroidPath);
|
|
21
|
+
if (!(await fs.pathExists(codegenAndroidPath))) {
|
|
22
|
+
throw new Error(`The codegen android path defined in your package.json: ${codegenAndroidPath} doesn't exist.`);
|
|
23
|
+
}
|
|
24
|
+
const codegenJavaPackageName = packageJson.codegenConfig.android.javaPackageName;
|
|
25
|
+
if (!codegenJavaPackageName) {
|
|
26
|
+
throw new Error(`Your package.json doesn't contain codegenConfig.android.javaPackageName. Please see ${CODEGEN_DOCS}`);
|
|
27
|
+
}
|
|
28
|
+
const codegenJavaPath = path.resolve(codegenAndroidPath, `java/com/facebook/fbreact/specs`);
|
|
29
|
+
// If this issue is ever fixed in react-native, this check will prevent the patching from running.
|
|
30
|
+
if (!(await fs.pathExists(codegenJavaPath))) {
|
|
31
|
+
report.info(`Could not find ${kleur.blue(path.relative(projectPath, codegenJavaPath))}. Skipping patching codegen java files.`);
|
|
32
|
+
return;
|
|
33
|
+
}
|
|
34
|
+
const javaFiles = await fs.readdir(codegenJavaPath);
|
|
35
|
+
await Promise.all(javaFiles.map(async (file) => {
|
|
36
|
+
const filePath = path.resolve(codegenJavaPath, file);
|
|
37
|
+
const fileContent = await fs.readFile(filePath, 'utf8');
|
|
38
|
+
const newFileContent = fileContent.replace('package com.facebook.fbreact.specs', `package ${codegenJavaPackageName}`);
|
|
39
|
+
await fs.writeFile(filePath, newFileContent);
|
|
40
|
+
}));
|
|
41
|
+
const newPackagePath = path.resolve(codegenAndroidPath, 'java', codegenJavaPackageName.replace(/\./g, path.sep));
|
|
42
|
+
if (!(await fs.pathExists(newPackagePath))) {
|
|
43
|
+
await fs.mkdir(newPackagePath, { recursive: true });
|
|
44
|
+
}
|
|
45
|
+
await Promise.all(javaFiles.map(async (file) => {
|
|
46
|
+
const filePath = path.resolve(codegenJavaPath, file);
|
|
47
|
+
const newFilePath = path.resolve(newPackagePath, file);
|
|
48
|
+
await fs.rename(filePath, newFilePath);
|
|
49
|
+
}));
|
|
50
|
+
if (await fs.pathExists(path.resolve(codegenAndroidPath, 'java/com/facebook/react/viewmanagers'))) {
|
|
51
|
+
// Keep the view managers
|
|
52
|
+
await fs.rm(path.resolve(codegenAndroidPath, 'java/com/facebook/fbreact'), {
|
|
53
|
+
recursive: true,
|
|
54
|
+
});
|
|
55
|
+
}
|
|
56
|
+
else {
|
|
57
|
+
// Delete the entire facebook namespace
|
|
58
|
+
await fs.rm(path.resolve(codegenAndroidPath, 'java/com/facebook'), {
|
|
59
|
+
recursive: true,
|
|
60
|
+
});
|
|
61
|
+
}
|
|
62
|
+
}
|
|
63
|
+
//# sourceMappingURL=patchCodegenAndroidPackage.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"patchCodegenAndroidPackage.js","sourceRoot":"","sources":["../../../../../src/targets/codegen/patches/patchCodegenAndroidPackage.ts"],"names":[],"mappings":"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"}
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
export {};
|
|
@@ -0,0 +1,103 @@
|
|
|
1
|
+
import path from 'node:path';
|
|
2
|
+
import { afterEach, beforeEach, describe, expect, test } from 'vitest';
|
|
3
|
+
import fs from 'fs-extra';
|
|
4
|
+
import mockfs from 'mock-fs';
|
|
5
|
+
import { patchCodegenAndroidPackage } from "./patchCodegenAndroidPackage.js";
|
|
6
|
+
const mockPackageJson = {
|
|
7
|
+
codegenConfig: {
|
|
8
|
+
outputDir: {
|
|
9
|
+
android: 'android/generated',
|
|
10
|
+
},
|
|
11
|
+
android: {
|
|
12
|
+
javaPackageName: 'com.bobtest',
|
|
13
|
+
},
|
|
14
|
+
},
|
|
15
|
+
};
|
|
16
|
+
const mockReport = {
|
|
17
|
+
info: console.log,
|
|
18
|
+
warn: console.log,
|
|
19
|
+
error: console.error,
|
|
20
|
+
success: console.log,
|
|
21
|
+
};
|
|
22
|
+
const mockJavaModuleSpec = `
|
|
23
|
+
/**
|
|
24
|
+
* Some comment
|
|
25
|
+
*/
|
|
26
|
+
|
|
27
|
+
package com.facebook.fbreact.specs;
|
|
28
|
+
|
|
29
|
+
import com.example.exampleimport;
|
|
30
|
+
|
|
31
|
+
class SomeClass {
|
|
32
|
+
public void someMethod() {
|
|
33
|
+
// some code
|
|
34
|
+
}
|
|
35
|
+
}`;
|
|
36
|
+
const mockJavaViewSpec = `
|
|
37
|
+
/**
|
|
38
|
+
* Some comment
|
|
39
|
+
*/
|
|
40
|
+
|
|
41
|
+
package com.facebook.react.viewmanagers;
|
|
42
|
+
|
|
43
|
+
public interface SomeInterface<T extends View> {
|
|
44
|
+
void setColor(T view, @Nullable String value);
|
|
45
|
+
}
|
|
46
|
+
`;
|
|
47
|
+
const mockProjectPath = path.resolve(import.meta.dirname, 'mockProject');
|
|
48
|
+
const mockCodegenModuleSpecsPath = path.resolve(mockProjectPath, 'android/generated/java/com/facebook/fbreact/specs');
|
|
49
|
+
const mockCodegenViewSpecsPath = path.resolve(mockProjectPath, 'android/generated/java/com/facebook/react/viewmanagers');
|
|
50
|
+
describe('patchCodegenAndroidPackage', () => {
|
|
51
|
+
beforeEach(() => {
|
|
52
|
+
mockfs({
|
|
53
|
+
[mockProjectPath]: {
|
|
54
|
+
'package.json': JSON.stringify(mockPackageJson),
|
|
55
|
+
},
|
|
56
|
+
[mockCodegenModuleSpecsPath]: {
|
|
57
|
+
'NativeBobtestSpec.java': mockJavaModuleSpec,
|
|
58
|
+
},
|
|
59
|
+
});
|
|
60
|
+
});
|
|
61
|
+
afterEach(() => {
|
|
62
|
+
mockfs.restore();
|
|
63
|
+
});
|
|
64
|
+
test('moves the files to correct dir', async () => {
|
|
65
|
+
await patchCodegenAndroidPackage(mockProjectPath, mockPackageJson, mockReport);
|
|
66
|
+
const expectedDir = path.resolve(mockProjectPath, 'android/generated/java/com/bobtest');
|
|
67
|
+
expect(await fs.pathExists(expectedDir)).toBe(true);
|
|
68
|
+
});
|
|
69
|
+
test('replaces the package name in the files', async () => {
|
|
70
|
+
await patchCodegenAndroidPackage(mockProjectPath, mockPackageJson, mockReport);
|
|
71
|
+
const expectedDir = path.resolve(mockProjectPath, 'android/generated/java/com/bobtest');
|
|
72
|
+
const expectedFile = path.resolve(expectedDir, 'NativeBobtestSpec.java');
|
|
73
|
+
const fileContent = await fs.readFile(expectedFile, 'utf8');
|
|
74
|
+
expect(fileContent).toContain('package com.bobtest;');
|
|
75
|
+
});
|
|
76
|
+
test('removes the old package dir', async () => {
|
|
77
|
+
await patchCodegenAndroidPackage(mockProjectPath, mockPackageJson, mockReport);
|
|
78
|
+
expect(await fs.pathExists(mockCodegenModuleSpecsPath)).toBe(false);
|
|
79
|
+
});
|
|
80
|
+
test("doesn't delete the view manager specs", async () => {
|
|
81
|
+
const mockPackageJsonWithTypeAll = {
|
|
82
|
+
...mockPackageJson,
|
|
83
|
+
codegenConfig: {
|
|
84
|
+
...mockPackageJson.codegenConfig,
|
|
85
|
+
type: 'all',
|
|
86
|
+
},
|
|
87
|
+
};
|
|
88
|
+
mockfs({
|
|
89
|
+
[mockProjectPath]: {
|
|
90
|
+
'package.json': JSON.stringify(mockPackageJsonWithTypeAll),
|
|
91
|
+
},
|
|
92
|
+
[mockCodegenModuleSpecsPath]: {
|
|
93
|
+
'NativeBobtestSpec.java': mockJavaModuleSpec,
|
|
94
|
+
},
|
|
95
|
+
[mockCodegenViewSpecsPath]: {
|
|
96
|
+
'BobtestViewManagerInterface.java': mockJavaViewSpec,
|
|
97
|
+
},
|
|
98
|
+
});
|
|
99
|
+
await patchCodegenAndroidPackage(mockProjectPath, mockPackageJsonWithTypeAll, mockReport);
|
|
100
|
+
expect(await fs.pathExists(path.join(mockCodegenViewSpecsPath, 'BobtestViewManagerInterface.java'))).toBeTruthy();
|
|
101
|
+
});
|
|
102
|
+
});
|
|
103
|
+
//# sourceMappingURL=patchCodegenAndroidPackage.test.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"patchCodegenAndroidPackage.test.js","sourceRoot":"","sources":["../../../../../src/targets/codegen/patches/patchCodegenAndroidPackage.test.ts"],"names":[],"mappings":"AAAA,OAAO,IAAI,MAAM,WAAW,CAAC;AAC7B,OAAO,EAAE,SAAS,EAAE,UAAU,EAAE,QAAQ,EAAE,MAAM,EAAE,IAAI,EAAE,MAAM,QAAQ,CAAC;AACvE,OAAO,EAAE,MAAM,UAAU,CAAC;AAC1B,OAAO,MAAM,MAAM,SAAS,CAAC;AAE7B,OAAO,EAAE,0BAA0B,EAAE,MAAM,iCAAiC,CAAC;AAE7E,MAAM,eAAe,GAAG;IACtB,aAAa,EAAE;QACb,SAAS,EAAE;YACT,OAAO,EAAE,mBAAmB;SAC7B;QACD,OAAO,EAAE;YACP,eAAe,EAAE,aAAa;SAC/B;KACF;CACF,CAAC;AAEF,MAAM,UAAU,GAAW;IACzB,IAAI,EAAE,OAAO,CAAC,GAAG;IACjB,IAAI,EAAE,OAAO,CAAC,GAAG;IACjB,KAAK,EAAE,OAAO,CAAC,KAAK;IACpB,OAAO,EAAE,OAAO,CAAC,GAAG;CACrB,CAAC;AAEF,MAAM,kBAAkB,GAAG;;;;;;;;;;;;;EAazB,CAAC;AAEH,MAAM,gBAAgB,GAAG;;;;;;;;;;CAUxB,CAAC;AAEF,MAAM,eAAe,GAAG,IAAI,CAAC,OAAO,CAAC,MAAM,CAAC,IAAI,CAAC,OAAO,EAAE,aAAa,CAAC,CAAC;AACzE,MAAM,0BAA0B,GAAG,IAAI,CAAC,OAAO,CAC7C,eAAe,EACf,mDAAmD,CACpD,CAAC;AACF,MAAM,wBAAwB,GAAG,IAAI,CAAC,OAAO,CAC3C,eAAe,EACf,wDAAwD,CACzD,CAAC;AAEF,QAAQ,CAAC,4BAA4B,EAAE,GAAG,EAAE;IAC1C,UAAU,CAAC,GAAG,EAAE;QACd,MAAM,CAAC;YACL,CAAC,eAAe,CAAC,EAAE;gBACjB,cAAc,EAAE,IAAI,CAAC,SAAS,CAAC,eAAe,CAAC;aAChD;YACD,CAAC,0BAA0B,CAAC,EAAE;gBAC5B,wBAAwB,EAAE,kBAAkB;aAC7C;SACF,CAAC,CAAC;IACL,CAAC,CAAC,CAAC;IAEH,SAAS,CAAC,GAAG,EAAE;QACb,MAAM,CAAC,OAAO,EAAE,CAAC;IACnB,CAAC,CAAC,CAAC;IAEH,IAAI,CAAC,gCAAgC,EAAE,KAAK,IAAI,EAAE;QAChD,MAAM,0BAA0B,CAC9B,eAAe,EACf,eAAe,EACf,UAAU,CACX,CAAC;QAEF,MAAM,WAAW,GAAG,IAAI,CAAC,OAAO,CAC9B,eAAe,EACf,oCAAoC,CACrC,CAAC;QAEF,MAAM,CAAC,MAAM,EAAE,CAAC,UAAU,CAAC,WAAW,CAAC,CAAC,CAAC,IAAI,CAAC,IAAI,CAAC,CAAC;IACtD,CAAC,CAAC,CAAC;IAEH,IAAI,CAAC,wCAAwC,EAAE,KAAK,IAAI,EAAE;QACxD,MAAM,0BAA0B,CAC9B,eAAe,EACf,eAAe,EACf,UAAU,CACX,CAAC;QAEF,MAAM,WAAW,GAAG,IAAI,CAAC,OAAO,CAC9B,eAAe,EACf,oCAAoC,CACrC,CAAC;QAEF,MAAM,YAAY,GAAG,IAAI,CAAC,OAAO,CAAC,WAAW,EAAE,wBAAwB,CAAC,CAAC;QAEzE,MAAM,WAAW,GAAG,MAAM,EAAE,CAAC,QAAQ,CAAC,YAAY,EAAE,MAAM,CAAC,CAAC;QAE5D,MAAM,CAAC,WAAW,CAAC,CAAC,SAAS,CAAC,sBAAsB,CAAC,CAAC;IACxD,CAAC,CAAC,CAAC;IAEH,IAAI,CAAC,6BAA6B,EAAE,KAAK,IAAI,EAAE;QAC7C,MAAM,0BAA0B,CAC9B,eAAe,EACf,eAAe,EACf,UAAU,CACX,CAAC;QAEF,MAAM,CAAC,MAAM,EAAE,CAAC,UAAU,CAAC,0BAA0B,CAAC,CAAC,CAAC,IAAI,CAAC,KAAK,CAAC,CAAC;IACtE,CAAC,CAAC,CAAC;IAEH,IAAI,CAAC,uCAAuC,EAAE,KAAK,IAAI,EAAE;QACvD,MAAM,0BAA0B,GAAG;YACjC,GAAG,eAAe;YAClB,aAAa,EAAE;gBACb,GAAG,eAAe,CAAC,aAAa;gBAChC,IAAI,EAAE,KAAK;aACZ;SACF,CAAC;QAEF,MAAM,CAAC;YACL,CAAC,eAAe,CAAC,EAAE;gBACjB,cAAc,EAAE,IAAI,CAAC,SAAS,CAAC,0BAA0B,CAAC;aAC3D;YACD,CAAC,0BAA0B,CAAC,EAAE;gBAC5B,wBAAwB,EAAE,kBAAkB;aAC7C;YACD,CAAC,wBAAwB,CAAC,EAAE;gBAC1B,kCAAkC,EAAE,gBAAgB;aACrD;SACF,CAAC,CAAC;QAEH,MAAM,0BAA0B,CAC9B,eAAe,EACf,0BAA0B,EAC1B,UAAU,CACX,CAAC;QAEF,MAAM,CACJ,MAAM,EAAE,CAAC,UAAU,CACjB,IAAI,CAAC,IAAI,CAAC,wBAAwB,EAAE,kCAAkC,CAAC,CACxE,CACF,CAAC,UAAU,EAAE,CAAC;IACjB,CAAC,CAAC,CAAC;AACL,CAAC,CAAC,CAAC"}
|
|
@@ -0,0 +1,16 @@
|
|
|
1
|
+
/**
|
|
2
|
+
* With React Native 0.77, calling `@react-native-community/cli codegen` generates
|
|
3
|
+
* some app level source files such as `RCTAppDependencyProvider.mm`.
|
|
4
|
+
* These files are supposed to be only generated for apps
|
|
5
|
+
* but the cli misbehaves and generates them for all sorts of projects.
|
|
6
|
+
* You can find the relevant PR here: https://github.com/facebook/react-native/pull/47650
|
|
7
|
+
* This patch can be removed when this gets fixed in React Native.
|
|
8
|
+
*/
|
|
9
|
+
export declare function removeCodegenAppLevelCode(projectPath: string, packageJson: any): Promise<void>;
|
|
10
|
+
/**
|
|
11
|
+
* Codegen generates a different set of files if the target is an app instead.
|
|
12
|
+
* The following commit adds support for a --source argument to support calling codegen as a library:
|
|
13
|
+
* https://github.com/facebook/react-native/commit/98b8f178110472e5fed97de80766c03b0b5e988c
|
|
14
|
+
* Here we just check if the --source argument is supported.
|
|
15
|
+
*/
|
|
16
|
+
export declare function getCodegenCLISourceSupport(): Promise<boolean>;
|
|
@@ -0,0 +1,59 @@
|
|
|
1
|
+
import path from 'node:path';
|
|
2
|
+
import fs from 'fs-extra';
|
|
3
|
+
import { spawn } from "../../../utils/spawn.js";
|
|
4
|
+
import { CODEGEN_DOCS } from "./patchCodegenAndroidPackage.js";
|
|
5
|
+
const FILES_TO_REMOVE = [
|
|
6
|
+
'RCTAppDependencyProvider.h',
|
|
7
|
+
'RCTAppDependencyProvider.mm',
|
|
8
|
+
'RCTModulesConformingToProtocolsProvider.h',
|
|
9
|
+
'RCTModulesConformingToProtocolsProvider.mm',
|
|
10
|
+
'RCTThirdPartyComponentsProvider.h',
|
|
11
|
+
'RCTThirdPartyComponentsProvider.mm',
|
|
12
|
+
'ReactAppDependencyProvider.podspec',
|
|
13
|
+
];
|
|
14
|
+
/**
|
|
15
|
+
* With React Native 0.77, calling `@react-native-community/cli codegen` generates
|
|
16
|
+
* some app level source files such as `RCTAppDependencyProvider.mm`.
|
|
17
|
+
* These files are supposed to be only generated for apps
|
|
18
|
+
* but the cli misbehaves and generates them for all sorts of projects.
|
|
19
|
+
* You can find the relevant PR here: https://github.com/facebook/react-native/pull/47650
|
|
20
|
+
* This patch can be removed when this gets fixed in React Native.
|
|
21
|
+
*/
|
|
22
|
+
export async function removeCodegenAppLevelCode(projectPath,
|
|
23
|
+
// eslint-disable-next-line @typescript-eslint/no-explicit-any
|
|
24
|
+
packageJson) {
|
|
25
|
+
const codegenAndroidPathSetting = packageJson.codegenConfig?.outputDir?.android;
|
|
26
|
+
if (!codegenAndroidPathSetting) {
|
|
27
|
+
throw new Error(`Your package.json doesn't contain codegenConfig.outputDir.android. Please see ${CODEGEN_DOCS}`);
|
|
28
|
+
}
|
|
29
|
+
const codegenAndroidPath = path.resolve(projectPath, codegenAndroidPathSetting);
|
|
30
|
+
if (!(await fs.pathExists(codegenAndroidPath))) {
|
|
31
|
+
throw new Error(`The codegen android path defined in your package.json: ${codegenAndroidPath} doesnt' exist.`);
|
|
32
|
+
}
|
|
33
|
+
const codegenIosPathSetting = packageJson.codegenConfig?.outputDir?.ios;
|
|
34
|
+
if (!codegenIosPathSetting) {
|
|
35
|
+
throw new Error(`Your package.json doesn't contain codegenConfig.outputDir.ios. Please see ${CODEGEN_DOCS}`);
|
|
36
|
+
}
|
|
37
|
+
const codegenIosPath = path.resolve(projectPath, codegenIosPathSetting);
|
|
38
|
+
if (!(await fs.pathExists(codegenAndroidPath))) {
|
|
39
|
+
throw new Error(`The codegen iOS path defined in your package.json: ${codegenIosPathSetting} doesnt' exist.`);
|
|
40
|
+
}
|
|
41
|
+
const androidPromises = FILES_TO_REMOVE.map(async (fileName) => fs.rm(path.join(codegenAndroidPath, fileName)));
|
|
42
|
+
const iosPromises = FILES_TO_REMOVE.map(async (fileName) => fs.rm(path.join(codegenIosPath, fileName)));
|
|
43
|
+
await Promise.allSettled([...androidPromises, ...iosPromises]);
|
|
44
|
+
}
|
|
45
|
+
/**
|
|
46
|
+
* Codegen generates a different set of files if the target is an app instead.
|
|
47
|
+
* The following commit adds support for a --source argument to support calling codegen as a library:
|
|
48
|
+
* https://github.com/facebook/react-native/commit/98b8f178110472e5fed97de80766c03b0b5e988c
|
|
49
|
+
* Here we just check if the --source argument is supported.
|
|
50
|
+
*/
|
|
51
|
+
export async function getCodegenCLISourceSupport() {
|
|
52
|
+
const codegenCLIHelpOutput = await spawn('npx', [
|
|
53
|
+
'@react-native-community/cli',
|
|
54
|
+
'codegen',
|
|
55
|
+
'--help',
|
|
56
|
+
]);
|
|
57
|
+
return codegenCLIHelpOutput.includes('--source');
|
|
58
|
+
}
|
|
59
|
+
//# sourceMappingURL=removeCodegenAppLevelCode.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"removeCodegenAppLevelCode.js","sourceRoot":"","sources":["../../../../../src/targets/codegen/patches/removeCodegenAppLevelCode.ts"],"names":[],"mappings":"AAAA,OAAO,IAAI,MAAM,WAAW,CAAC;AAC7B,OAAO,EAAE,MAAM,UAAU,CAAC;AAC1B,OAAO,EAAE,KAAK,EAAE,MAAM,yBAAyB,CAAC;AAChD,OAAO,EAAE,YAAY,EAAE,MAAM,iCAAiC,CAAC;AAE/D,MAAM,eAAe,GAAG;IACtB,4BAA4B;IAC5B,6BAA6B;IAC7B,2CAA2C;IAC3C,4CAA4C;IAC5C,mCAAmC;IACnC,oCAAoC;IACpC,oCAAoC;CACrC,CAAC;AAEF;;;;;;;GAOG;AACH,MAAM,CAAC,KAAK,UAAU,yBAAyB,CAC7C,WAAmB;AACnB,8DAA8D;AAC9D,WAAgB;IAEhB,MAAM,yBAAyB,GAC7B,WAAW,CAAC,aAAa,EAAE,SAAS,EAAE,OAAO,CAAC;IAChD,IAAI,CAAC,yBAAyB,EAAE,CAAC;QAC/B,MAAM,IAAI,KAAK,CACb,iFAAiF,YAAY,EAAE,CAChG,CAAC;IACJ,CAAC;IACD,MAAM,kBAAkB,GAAG,IAAI,CAAC,OAAO,CACrC,WAAW,EACX,yBAAyB,CAC1B,CAAC;IAEF,IAAI,CAAC,CAAC,MAAM,EAAE,CAAC,UAAU,CAAC,kBAAkB,CAAC,CAAC,EAAE,CAAC;QAC/C,MAAM,IAAI,KAAK,CACb,0DAA0D,kBAAkB,iBAAiB,CAC9F,CAAC;IACJ,CAAC;IAED,MAAM,qBAAqB,GACzB,WAAW,CAAC,aAAa,EAAE,SAAS,EAAE,GAAG,CAAC;IAC5C,IAAI,CAAC,qBAAqB,EAAE,CAAC;QAC3B,MAAM,IAAI,KAAK,CACb,6EAA6E,YAAY,EAAE,CAC5F,CAAC;IACJ,CAAC;IACD,MAAM,cAAc,GAAG,IAAI,CAAC,OAAO,CAAC,WAAW,EAAE,qBAAqB,CAAC,CAAC;IAExE,IAAI,CAAC,CAAC,MAAM,EAAE,CAAC,UAAU,CAAC,kBAAkB,CAAC,CAAC,EAAE,CAAC;QAC/C,MAAM,IAAI,KAAK,CACb,sDAAsD,qBAAqB,iBAAiB,CAC7F,CAAC;IACJ,CAAC;IAED,MAAM,eAAe,GAAG,eAAe,CAAC,GAAG,CAAC,KAAK,EAAE,QAAQ,EAAE,EAAE,CAC7D,EAAE,CAAC,EAAE,CAAC,IAAI,CAAC,IAAI,CAAC,kBAAkB,EAAE,QAAQ,CAAC,CAAC,CAC/C,CAAC;IAEF,MAAM,WAAW,GAAG,eAAe,CAAC,GAAG,CAAC,KAAK,EAAE,QAAQ,EAAE,EAAE,CACzD,EAAE,CAAC,EAAE,CAAC,IAAI,CAAC,IAAI,CAAC,cAAc,EAAE,QAAQ,CAAC,CAAC,CAC3C,CAAC;IAEF,MAAM,OAAO,CAAC,UAAU,CAAC,CAAC,GAAG,eAAe,EAAE,GAAG,WAAW,CAAC,CAAC,CAAC;AACjE,CAAC;AAED;;;;;GAKG;AACH,MAAM,CAAC,KAAK,UAAU,0BAA0B;IAC9C,MAAM,oBAAoB,GAAG,MAAM,KAAK,CAAC,KAAK,EAAE;QAC9C,6BAA6B;QAC7B,SAAS;QACT,QAAQ;KACT,CAAC,CAAC;IACH,OAAO,oBAAoB,CAAC,QAAQ,CAAC,UAAU,CAAC,CAAC;AACnD,CAAC"}
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
export {};
|
|
@@ -0,0 +1,75 @@
|
|
|
1
|
+
import path from 'node:path';
|
|
2
|
+
import { afterEach, beforeEach, describe, expect, test } from 'vitest';
|
|
3
|
+
import fs from 'fs-extra';
|
|
4
|
+
import mockfs from 'mock-fs';
|
|
5
|
+
import { removeCodegenAppLevelCode } from "./removeCodegenAppLevelCode.js";
|
|
6
|
+
const mockPackageJson = {
|
|
7
|
+
codegenConfig: {
|
|
8
|
+
outputDir: {
|
|
9
|
+
android: 'android/generated',
|
|
10
|
+
ios: 'ios/generated',
|
|
11
|
+
},
|
|
12
|
+
},
|
|
13
|
+
};
|
|
14
|
+
const mockProjectPath = path.resolve(import.meta.dirname, 'mockProject');
|
|
15
|
+
describe('patchCodegenAndroidPackage', () => {
|
|
16
|
+
beforeEach(() => {
|
|
17
|
+
mockfs({
|
|
18
|
+
[mockProjectPath]: {
|
|
19
|
+
'package.json': JSON.stringify(mockPackageJson),
|
|
20
|
+
ios: {
|
|
21
|
+
generated: {
|
|
22
|
+
'RCTAppDependencyProvider.h': '',
|
|
23
|
+
'RCTAppDependencyProvider.mm': '',
|
|
24
|
+
'RCTModulesConformingToProtocolsProvider.h': '',
|
|
25
|
+
'RCTModulesConformingToProtocolsProvider.mm': '',
|
|
26
|
+
'RCTThirdPartyComponentsProvider.h': '',
|
|
27
|
+
'RCTThirdPartyComponentsProvider.mm': '',
|
|
28
|
+
'ReactAppDependencyProvider.podspec': '',
|
|
29
|
+
},
|
|
30
|
+
},
|
|
31
|
+
android: {
|
|
32
|
+
generated: {
|
|
33
|
+
'RCTAppDependencyProvider.h': '',
|
|
34
|
+
'RCTAppDependencyProvider.mm': '',
|
|
35
|
+
'RCTModulesConformingToProtocolsProvider.h': '',
|
|
36
|
+
'RCTModulesConformingToProtocolsProvider.mm': '',
|
|
37
|
+
'RCTThirdPartyComponentsProvider.h': '',
|
|
38
|
+
'RCTThirdPartyComponentsProvider.mm': '',
|
|
39
|
+
'ReactAppDependencyProvider.podspec': '',
|
|
40
|
+
},
|
|
41
|
+
},
|
|
42
|
+
},
|
|
43
|
+
});
|
|
44
|
+
});
|
|
45
|
+
afterEach(() => {
|
|
46
|
+
mockfs.restore();
|
|
47
|
+
});
|
|
48
|
+
test('removes the duplicate iOS files', async () => {
|
|
49
|
+
await removeCodegenAppLevelCode(mockProjectPath, mockPackageJson);
|
|
50
|
+
expect((await fs.promises.readdir(path.join(mockProjectPath, 'ios', 'generated'))).length).toBe(0);
|
|
51
|
+
});
|
|
52
|
+
test('removes the unnecessary Android files', async () => {
|
|
53
|
+
await removeCodegenAppLevelCode(mockProjectPath, mockPackageJson);
|
|
54
|
+
expect((await fs.promises.readdir(path.join(mockProjectPath, 'android', 'generated'))).length).toBe(0);
|
|
55
|
+
});
|
|
56
|
+
test("doesn't crash the process when there are no files to remove", async () => {
|
|
57
|
+
mockfs({
|
|
58
|
+
[mockProjectPath]: {
|
|
59
|
+
'package.json': JSON.stringify(mockPackageJson),
|
|
60
|
+
ios: {
|
|
61
|
+
generated: {
|
|
62
|
+
someRandomFile: '',
|
|
63
|
+
},
|
|
64
|
+
},
|
|
65
|
+
android: {
|
|
66
|
+
generated: {
|
|
67
|
+
someRandomFile: '',
|
|
68
|
+
},
|
|
69
|
+
},
|
|
70
|
+
},
|
|
71
|
+
});
|
|
72
|
+
await expect(removeCodegenAppLevelCode(mockProjectPath, mockPackageJson)).resolves.not.toThrow();
|
|
73
|
+
});
|
|
74
|
+
});
|
|
75
|
+
//# sourceMappingURL=removeCodegenAppLevelCode.test.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"removeCodegenAppLevelCode.test.js","sourceRoot":"","sources":["../../../../../src/targets/codegen/patches/removeCodegenAppLevelCode.test.ts"],"names":[],"mappings":"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"}
|
|
@@ -0,0 +1,9 @@
|
|
|
1
|
+
import type { Input, Variants } from '../types.ts';
|
|
2
|
+
import { type CompileOptions } from '../utils/compile.ts';
|
|
3
|
+
type Options = Input & {
|
|
4
|
+
options?: CompileOptions;
|
|
5
|
+
variants: Variants;
|
|
6
|
+
exclude: string;
|
|
7
|
+
};
|
|
8
|
+
export default function build({ root, source, output, exclude, options, variants, report, }: Options): Promise<void>;
|
|
9
|
+
export {};
|
|
@@ -0,0 +1,19 @@
|
|
|
1
|
+
import path from 'node:path';
|
|
2
|
+
import { deleteAsync } from 'del';
|
|
3
|
+
import kleur from 'kleur';
|
|
4
|
+
import compile, {} from "../utils/compile.js";
|
|
5
|
+
export default async function build({ root, source, output, exclude, options, variants, report, }) {
|
|
6
|
+
report.info(`Cleaning up previous build at ${kleur.blue(path.relative(root, output))}`);
|
|
7
|
+
await deleteAsync([output]);
|
|
8
|
+
await compile({
|
|
9
|
+
...options,
|
|
10
|
+
variants,
|
|
11
|
+
root,
|
|
12
|
+
source,
|
|
13
|
+
output,
|
|
14
|
+
exclude,
|
|
15
|
+
modules: 'commonjs',
|
|
16
|
+
report,
|
|
17
|
+
});
|
|
18
|
+
}
|
|
19
|
+
//# sourceMappingURL=commonjs.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"commonjs.js","sourceRoot":"","sources":["../../../src/targets/commonjs.ts"],"names":[],"mappings":"AAAA,OAAO,IAAI,MAAM,WAAW,CAAC;AAC7B,OAAO,EAAE,WAAW,EAAE,MAAM,KAAK,CAAC;AAClC,OAAO,KAAK,MAAM,OAAO,CAAC;AAE1B,OAAO,OAAO,EAAE,EAAuB,MAAM,qBAAqB,CAAC;AAQnE,MAAM,CAAC,OAAO,CAAC,KAAK,UAAU,KAAK,CAAC,EAClC,IAAI,EACJ,MAAM,EACN,MAAM,EACN,OAAO,EACP,OAAO,EACP,QAAQ,EACR,MAAM,GACE;IACR,MAAM,CAAC,IAAI,CACT,iCAAiC,KAAK,CAAC,IAAI,CAAC,IAAI,CAAC,QAAQ,CAAC,IAAI,EAAE,MAAM,CAAC,CAAC,EAAE,CAC3E,CAAC;IAEF,MAAM,WAAW,CAAC,CAAC,MAAM,CAAC,CAAC,CAAC;IAE5B,MAAM,OAAO,CAAC;QACZ,GAAG,OAAO;QACV,QAAQ;QACR,IAAI;QACJ,MAAM;QACN,MAAM;QACN,OAAO;QACP,OAAO,EAAE,UAAU;QACnB,MAAM;KACP,CAAC,CAAC;AACL,CAAC"}
|
|
@@ -0,0 +1,30 @@
|
|
|
1
|
+
import path from 'node:path';
|
|
2
|
+
import { deleteAsync } from 'del';
|
|
3
|
+
import fs from 'fs-extra';
|
|
4
|
+
import kleur from 'kleur';
|
|
5
|
+
import { spawn } from "../utils/spawn.js";
|
|
6
|
+
export default async function customTarget({ options, root, report }) {
|
|
7
|
+
if (options?.script == null) {
|
|
8
|
+
throw new Error(`No 'script' was provided with the custom target. Example: ${kleur.green('{["custom", { "script": "generateTypes" }}')}`);
|
|
9
|
+
}
|
|
10
|
+
const pathToClean = options.clean
|
|
11
|
+
? path.relative(root, options.clean)
|
|
12
|
+
: undefined;
|
|
13
|
+
if (pathToClean) {
|
|
14
|
+
report.info(`Cleaning up ${kleur.blue(pathToClean)}`);
|
|
15
|
+
await deleteAsync([path.resolve(root, pathToClean)]);
|
|
16
|
+
}
|
|
17
|
+
const packageManagerExecutable = process.env.npm_execpath ?? 'npm';
|
|
18
|
+
const packageManagerArgs = ['run', options.script];
|
|
19
|
+
// usr/bin/yarn -> yarn
|
|
20
|
+
const packageManagerName = path.basename(packageManagerExecutable);
|
|
21
|
+
report.info(`Running ${kleur.blue(packageManagerName)} ${kleur.blue(packageManagerArgs.join(' '))}`);
|
|
22
|
+
await spawn(packageManagerExecutable, packageManagerArgs, {
|
|
23
|
+
stdio: ['ignore', 'ignore', 'inherit'],
|
|
24
|
+
});
|
|
25
|
+
report.success(`Ran the ${kleur.blue(options.script)} script succesfully`);
|
|
26
|
+
if (options.clean && pathToClean && !(await fs.pathExists(pathToClean))) {
|
|
27
|
+
report.warn(`Custom target with the ${kleur.blue(options.script)} script has ${kleur.blue(options.clean)} as the ${kleur.bold('clean')} option but this path wasn't created after running the script. Are you sure you've defined the ${kleur.bold('clean')} path correctly?`);
|
|
28
|
+
}
|
|
29
|
+
}
|
|
30
|
+
//# sourceMappingURL=custom.js.map
|