react-native-builder-bob 0.41.0 → 0.42.1

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.
Files changed (187) hide show
  1. package/bin/bob +1 -1
  2. package/lib/package.json +93 -0
  3. package/lib/src/__tests__/babel.test.d.ts +1 -0
  4. package/lib/src/__tests__/babel.test.js +26 -0
  5. package/lib/src/__tests__/babel.test.js.map +1 -0
  6. package/lib/src/__tests__/init.test.d.ts +1 -0
  7. package/lib/src/__tests__/init.test.js +93 -0
  8. package/lib/src/__tests__/init.test.js.map +1 -0
  9. package/lib/src/__tests__/resolveModuleSpecifier.test.d.ts +1 -0
  10. package/lib/src/__tests__/resolveModuleSpecifier.test.js +95 -0
  11. package/lib/src/__tests__/resolveModuleSpecifier.test.js.map +1 -0
  12. package/lib/src/__tests__/typescript.test.d.ts +1 -0
  13. package/lib/src/__tests__/typescript.test.js +193 -0
  14. package/lib/src/__tests__/typescript.test.js.map +1 -0
  15. package/lib/src/__tests__/updateSourceMap.test.d.ts +1 -0
  16. package/lib/src/__tests__/updateSourceMap.test.js +84 -0
  17. package/lib/src/__tests__/updateSourceMap.test.js.map +1 -0
  18. package/lib/src/babel.d.ts +19 -0
  19. package/lib/src/babel.js +58 -0
  20. package/lib/src/babel.js.map +1 -0
  21. package/lib/src/build.d.ts +14 -0
  22. package/lib/src/build.js +122 -0
  23. package/lib/src/build.js.map +1 -0
  24. package/lib/src/configs/babel-config.cjs +46 -0
  25. package/lib/src/configs/babel-config.cjs.map +1 -0
  26. package/lib/src/configs/babel-config.d.cts +15 -0
  27. package/lib/src/configs/babel-preset.cjs +66 -0
  28. package/lib/src/configs/babel-preset.cjs.map +1 -0
  29. package/lib/src/configs/babel-preset.d.cts +19 -0
  30. package/lib/src/configs/metro-config.d.mts +4 -0
  31. package/{configs/metro-config.js → lib/src/configs/metro-config.mjs} +3 -6
  32. package/lib/src/configs/metro-config.mjs.map +1 -0
  33. package/lib/src/configs/vite-config.d.mts +2 -0
  34. package/lib/src/configs/vite-config.mjs +59 -0
  35. package/lib/src/configs/vite-config.mjs.map +1 -0
  36. package/lib/src/index.d.ts +1 -0
  37. package/lib/src/index.js +18 -0
  38. package/lib/src/index.js.map +1 -0
  39. package/lib/src/init.d.ts +1 -0
  40. package/lib/src/init.js +370 -0
  41. package/lib/src/init.js.map +1 -0
  42. package/lib/src/schema.d.ts +70 -0
  43. package/lib/src/schema.js +45 -0
  44. package/lib/src/schema.js.map +1 -0
  45. package/lib/src/targets/codegen/index.d.ts +4 -0
  46. package/lib/src/targets/codegen/index.js +54 -0
  47. package/lib/src/targets/codegen/index.js.map +1 -0
  48. package/lib/src/targets/codegen/patches/patchCodegenAndroidPackage.d.ts +11 -0
  49. package/lib/src/targets/codegen/patches/patchCodegenAndroidPackage.js +63 -0
  50. package/lib/src/targets/codegen/patches/patchCodegenAndroidPackage.js.map +1 -0
  51. package/lib/src/targets/codegen/patches/patchCodegenAndroidPackage.test.d.ts +1 -0
  52. package/lib/src/targets/codegen/patches/patchCodegenAndroidPackage.test.js +103 -0
  53. package/lib/src/targets/codegen/patches/patchCodegenAndroidPackage.test.js.map +1 -0
  54. package/lib/src/targets/codegen/patches/removeCodegenAppLevelCode.d.ts +16 -0
  55. package/lib/src/targets/codegen/patches/removeCodegenAppLevelCode.js +59 -0
  56. package/lib/src/targets/codegen/patches/removeCodegenAppLevelCode.js.map +1 -0
  57. package/lib/src/targets/codegen/patches/removeCodegenAppLevelCode.test.d.ts +1 -0
  58. package/lib/src/targets/codegen/patches/removeCodegenAppLevelCode.test.js +75 -0
  59. package/lib/src/targets/codegen/patches/removeCodegenAppLevelCode.test.js.map +1 -0
  60. package/lib/src/targets/commonjs.d.ts +9 -0
  61. package/lib/src/targets/commonjs.js +19 -0
  62. package/lib/src/targets/commonjs.js.map +1 -0
  63. package/lib/src/targets/custom.d.ts +9 -0
  64. package/lib/src/targets/custom.js +30 -0
  65. package/lib/src/targets/custom.js.map +1 -0
  66. package/lib/src/targets/module.d.ts +9 -0
  67. package/lib/src/targets/module.js +19 -0
  68. package/lib/src/targets/module.js.map +1 -0
  69. package/lib/src/targets/typescript.d.ts +11 -0
  70. package/lib/src/targets/typescript.js +340 -0
  71. package/lib/src/targets/typescript.js.map +1 -0
  72. package/lib/src/types.d.ts +24 -0
  73. package/lib/src/types.js +2 -0
  74. package/lib/src/types.js.map +1 -0
  75. package/lib/src/utils/androidAssemble.d.ts +8 -0
  76. package/lib/src/utils/androidAssemble.js +17 -0
  77. package/lib/src/utils/androidAssemble.js.map +1 -0
  78. package/lib/src/utils/compile.d.ts +16 -0
  79. package/lib/src/utils/compile.js +211 -0
  80. package/lib/src/utils/compile.js.map +1 -0
  81. package/lib/src/utils/isCodegenSpec.d.ts +1 -0
  82. package/lib/src/utils/isCodegenSpec.js +14 -0
  83. package/lib/src/utils/isCodegenSpec.js.map +1 -0
  84. package/lib/src/utils/isGitDirty.d.ts +1 -0
  85. package/lib/src/utils/isGitDirty.js +14 -0
  86. package/lib/src/utils/isGitDirty.js.map +1 -0
  87. package/lib/src/utils/loadConfig.d.ts +4 -0
  88. package/lib/src/utils/loadConfig.js +59 -0
  89. package/lib/src/utils/loadConfig.js.map +1 -0
  90. package/lib/src/utils/logger.d.ts +10 -0
  91. package/lib/src/utils/logger.js +30 -0
  92. package/lib/src/utils/logger.js.map +1 -0
  93. package/lib/src/utils/prompts.d.ts +3 -0
  94. package/lib/src/utils/prompts.js +10 -0
  95. package/lib/src/utils/prompts.js.map +1 -0
  96. package/lib/src/utils/resolveModuleSpecifier.d.ts +21 -0
  97. package/lib/src/utils/resolveModuleSpecifier.js +57 -0
  98. package/lib/src/utils/resolveModuleSpecifier.js.map +1 -0
  99. package/lib/src/utils/spawn.d.ts +2 -0
  100. package/lib/src/utils/spawn.js +41 -0
  101. package/lib/src/utils/spawn.js.map +1 -0
  102. package/lib/src/utils/updateSourceMap.d.ts +11 -0
  103. package/lib/src/utils/updateSourceMap.js +56 -0
  104. package/lib/src/utils/updateSourceMap.js.map +1 -0
  105. package/lib/src/utils/workerize.d.ts +15 -0
  106. package/lib/src/utils/workerize.js +75 -0
  107. package/lib/src/utils/workerize.js.map +1 -0
  108. package/package.json +15 -13
  109. package/configs/babel-config.js +0 -54
  110. package/configs/babel-preset.js +0 -69
  111. package/configs/vite-config.mjs +0 -62
  112. package/lib/__fixtures__/project/MyNativeComponent.js +0 -8
  113. package/lib/__fixtures__/project/MyNativeComponent.js.map +0 -1
  114. package/lib/__fixtures__/project/NativeMyLib.js +0 -2
  115. package/lib/__fixtures__/project/NativeMyLib.js.map +0 -1
  116. package/lib/__fixtures__/project/code/$exports-input.js +0 -121
  117. package/lib/__fixtures__/project/code/$exports-input.js.map +0 -1
  118. package/lib/__fixtures__/project/code/$exports-output.js +0 -121
  119. package/lib/__fixtures__/project/code/$exports-output.js.map +0 -1
  120. package/lib/__fixtures__/project/code/$imports-input.js +0 -24
  121. package/lib/__fixtures__/project/code/$imports-input.js.map +0 -1
  122. package/lib/__fixtures__/project/code/$imports-output.js +0 -20
  123. package/lib/__fixtures__/project/code/$imports-output.js.map +0 -1
  124. package/lib/__fixtures__/project/code/MyNativeComponent.js +0 -8
  125. package/lib/__fixtures__/project/code/MyNativeComponent.js.map +0 -1
  126. package/lib/__fixtures__/project/code/NativeMyLib.js +0 -2
  127. package/lib/__fixtures__/project/code/NativeMyLib.js.map +0 -1
  128. package/lib/__fixtures__/project/code/a.js +0 -2
  129. package/lib/__fixtures__/project/code/a.js.map +0 -1
  130. package/lib/__fixtures__/project/code/b.js +0 -2
  131. package/lib/__fixtures__/project/code/b.js.map +0 -1
  132. package/lib/__fixtures__/project/code/e.story.js +0 -2
  133. package/lib/__fixtures__/project/code/e.story.js.map +0 -1
  134. package/lib/__fixtures__/project/f.js +0 -2
  135. package/lib/__fixtures__/project/f.js.map +0 -1
  136. package/lib/__fixtures__/project/index.js +0 -2
  137. package/lib/__fixtures__/project/index.js.map +0 -1
  138. package/lib/__tests__/babel.test.js +0 -28
  139. package/lib/__tests__/babel.test.js.map +0 -1
  140. package/lib/__tests__/init.test.js +0 -93
  141. package/lib/__tests__/init.test.js.map +0 -1
  142. package/lib/babel.js +0 -92
  143. package/lib/babel.js.map +0 -1
  144. package/lib/build.js +0 -141
  145. package/lib/build.js.map +0 -1
  146. package/lib/index.js +0 -16
  147. package/lib/index.js.map +0 -1
  148. package/lib/init.js +0 -371
  149. package/lib/init.js.map +0 -1
  150. package/lib/schema.js +0 -49
  151. package/lib/schema.js.map +0 -1
  152. package/lib/targets/codegen/index.js +0 -60
  153. package/lib/targets/codegen/index.js.map +0 -1
  154. package/lib/targets/codegen/patches/patchCodegenAndroidPackage.js +0 -74
  155. package/lib/targets/codegen/patches/patchCodegenAndroidPackage.js.map +0 -1
  156. package/lib/targets/codegen/patches/patchCodegenAndroidPackage.test.js +0 -106
  157. package/lib/targets/codegen/patches/patchCodegenAndroidPackage.test.js.map +0 -1
  158. package/lib/targets/codegen/patches/removeCodegenAppLevelCode.js +0 -57
  159. package/lib/targets/codegen/patches/removeCodegenAppLevelCode.js.map +0 -1
  160. package/lib/targets/codegen/patches/removeCodegenAppLevelCode.test.js +0 -78
  161. package/lib/targets/codegen/patches/removeCodegenAppLevelCode.test.js.map +0 -1
  162. package/lib/targets/commonjs.js +0 -34
  163. package/lib/targets/commonjs.js.map +0 -1
  164. package/lib/targets/custom.js +0 -40
  165. package/lib/targets/custom.js.map +0 -1
  166. package/lib/targets/module.js +0 -34
  167. package/lib/targets/module.js.map +0 -1
  168. package/lib/targets/typescript.js +0 -219
  169. package/lib/targets/typescript.js.map +0 -1
  170. package/lib/types.js +0 -6
  171. package/lib/types.js.map +0 -1
  172. package/lib/utils/androidAssemble.js +0 -29
  173. package/lib/utils/androidAssemble.js.map +0 -1
  174. package/lib/utils/compile.js +0 -217
  175. package/lib/utils/compile.js.map +0 -1
  176. package/lib/utils/isCodegenSpec.js +0 -22
  177. package/lib/utils/isCodegenSpec.js.map +0 -1
  178. package/lib/utils/loadConfig.js +0 -56
  179. package/lib/utils/loadConfig.js.map +0 -1
  180. package/lib/utils/logger.js +0 -35
  181. package/lib/utils/logger.js.map +0 -1
  182. package/lib/utils/prompts.js +0 -17
  183. package/lib/utils/prompts.js.map +0 -1
  184. package/lib/utils/spawn.js +0 -48
  185. package/lib/utils/spawn.js.map +0 -1
  186. package/lib/utils/workerize.js +0 -102
  187. package/lib/utils/workerize.js.map +0 -1
@@ -0,0 +1,370 @@
1
+ import path from 'node:path';
2
+ import dedent from 'dedent';
3
+ import fs from 'fs-extra';
4
+ import kleur from 'kleur';
5
+ import pack from '../package.json' with { type: 'json' };
6
+ import { isGitDirty } from "./utils/isGitDirty.js";
7
+ import { loadConfig } from "./utils/loadConfig.js";
8
+ import prompts, {} from "./utils/prompts.js";
9
+ const FLOW_PRGAMA_REGEX = /\*?\s*@(flow)\b/m;
10
+ export async function init() {
11
+ const root = process.cwd();
12
+ const projectPackagePath = path.resolve(root, 'package.json');
13
+ if (isGitDirty()) {
14
+ const { shouldContinue } = await prompts({
15
+ type: 'confirm',
16
+ name: 'shouldContinue',
17
+ message: `The working directory is not clean.\n You should commit or stash your changes before configuring bob.\n Continue anyway?`,
18
+ initial: false,
19
+ });
20
+ if (!shouldContinue) {
21
+ process.exit(0);
22
+ }
23
+ }
24
+ if (!(await fs.pathExists(projectPackagePath))) {
25
+ throw new Error(`Couldn't find a 'package.json' file in '${root}'.\n Are you in a project folder?`);
26
+ }
27
+ const pkg = JSON.parse(await fs.readFile(projectPackagePath, 'utf-8'));
28
+ const result = loadConfig(root);
29
+ if (result?.config &&
30
+ pkg.devDependencies &&
31
+ pack.name in pkg.devDependencies) {
32
+ const { shouldContinue } = await prompts({
33
+ type: 'confirm',
34
+ name: 'shouldContinue',
35
+ message: `The project seems to be already configured with bob.\n Do you want to overwrite the existing configuration?`,
36
+ initial: false,
37
+ });
38
+ if (!shouldContinue) {
39
+ process.exit(0);
40
+ }
41
+ }
42
+ // eslint-disable-next-line @typescript-eslint/no-unsafe-type-assertion
43
+ const { source } = (await prompts({
44
+ type: 'text',
45
+ name: 'source',
46
+ message: 'Where are your source files?',
47
+ initial: 'src',
48
+ validate: (input) => Boolean(input),
49
+ }));
50
+ let entryFile;
51
+ if (await fs.pathExists(path.join(root, source, 'index.js'))) {
52
+ entryFile = 'index.js';
53
+ }
54
+ else if (await fs.pathExists(path.join(root, source, 'index.ts'))) {
55
+ entryFile = 'index.ts';
56
+ }
57
+ else if (await fs.pathExists(path.join(root, source, 'index.tsx'))) {
58
+ entryFile = 'index.tsx';
59
+ }
60
+ if (!entryFile) {
61
+ throw new Error(`Couldn't find a 'index.js'. 'index.ts' or 'index.tsx' file under '${source}'.\n Please re-run the CLI after creating it.`);
62
+ }
63
+ pkg.devDependencies = Object.fromEntries([
64
+ ...Object.entries(pkg.devDependencies || {}),
65
+ [pack.name, `^${pack.version}`],
66
+ ].sort(([a], [b]) => a.localeCompare(b)));
67
+ const questions = [
68
+ {
69
+ type: 'text',
70
+ name: 'output',
71
+ message: 'Where do you want to generate the output files?',
72
+ initial: 'lib',
73
+ validate: (input) => Boolean(input),
74
+ },
75
+ {
76
+ type: 'multiselect',
77
+ name: 'targets',
78
+ message: 'Which targets do you want to build?',
79
+ choices: [
80
+ {
81
+ title: 'module - for modern setups',
82
+ value: 'module',
83
+ selected: true,
84
+ },
85
+ {
86
+ title: 'commonjs - for legacy setups (Node.js < 20)',
87
+ value: 'commonjs',
88
+ selected: false,
89
+ },
90
+ {
91
+ title: 'typescript - declaration files for typechecking',
92
+ value: 'typescript',
93
+ selected: /\.tsx?$/.test(entryFile),
94
+ },
95
+ ],
96
+ validate: (input) => Boolean(input.length),
97
+ },
98
+ ];
99
+ if (entryFile.endsWith('.js') &&
100
+ FLOW_PRGAMA_REGEX.test(await fs.readFile(path.join(root, source, entryFile), 'utf-8'))) {
101
+ questions.push({
102
+ type: 'confirm',
103
+ name: 'flow',
104
+ message: 'Do you want to publish definitions for flow?',
105
+ initial: Object.keys(pkg.devDependencies || {}).includes('flow-bin'),
106
+ });
107
+ }
108
+ // eslint-disable-next-line @typescript-eslint/no-unsafe-type-assertion
109
+ const { output, targets, flow } = (await prompts(questions));
110
+ const target = targets[0] === 'commonjs' || targets[0] === 'module'
111
+ ? targets[0]
112
+ : undefined;
113
+ const entries = {
114
+ source: `./${path.join(source, entryFile)}`,
115
+ };
116
+ let esm = false;
117
+ if (targets.includes('module')) {
118
+ esm = true;
119
+ entries.module = `./${path.join(output, 'module', 'index.js')}`;
120
+ }
121
+ if (targets.includes('commonjs')) {
122
+ entries.commonjs = `./${path.join(output, 'commonjs', 'index.js')}`;
123
+ }
124
+ const types = {};
125
+ if (targets.includes('typescript')) {
126
+ if (targets.includes('commonjs') && targets.includes('module')) {
127
+ types.require = `./${path.join(output, 'typescript', 'commonjs', source, 'index.d.ts')}`;
128
+ types.import = `./${path.join(output, 'typescript', 'module', source, 'index.d.ts')}`;
129
+ }
130
+ else {
131
+ types.require = `./${path.join(output, 'typescript', source, 'index.d.ts')}`;
132
+ types.import = types.require;
133
+ }
134
+ if (!(await fs.pathExists(path.join(root, 'tsconfig.json')))) {
135
+ const { tsconfig } = await prompts({
136
+ type: 'confirm',
137
+ name: 'tsconfig',
138
+ message: `You have enabled 'typescript' compilation, but we couldn't find a 'tsconfig.json' in project root.\n Generate one?`,
139
+ initial: true,
140
+ });
141
+ if (tsconfig) {
142
+ await fs.writeJSON(path.join(root, 'tsconfig.json'), {
143
+ compilerOptions: {
144
+ rootDir: '.',
145
+ allowUnreachableCode: false,
146
+ allowUnusedLabels: false,
147
+ esModuleInterop: true,
148
+ forceConsistentCasingInFileNames: true,
149
+ jsx: 'react-jsx',
150
+ lib: ['ESNext'],
151
+ module: 'ESNext',
152
+ moduleResolution: 'bundler',
153
+ noFallthroughCasesInSwitch: true,
154
+ noImplicitReturns: true,
155
+ noImplicitUseStrict: false,
156
+ noStrictGenericChecks: false,
157
+ noUncheckedIndexedAccess: true,
158
+ noUnusedLocals: true,
159
+ noUnusedParameters: true,
160
+ resolveJsonModule: true,
161
+ skipLibCheck: true,
162
+ strict: true,
163
+ target: 'ESNext',
164
+ verbatimModuleSyntax: true,
165
+ },
166
+ }, { spaces: 2 });
167
+ }
168
+ }
169
+ }
170
+ const prepare = 'bob build';
171
+ const files = [
172
+ source,
173
+ output,
174
+ '!**/__tests__',
175
+ '!**/__fixtures__',
176
+ '!**/__mocks__',
177
+ ];
178
+ if (esm) {
179
+ let replace = false;
180
+ const exportsField = {
181
+ '.': {},
182
+ './package.json': './package.json',
183
+ };
184
+ const importField = {
185
+ ...(types.import ? { types: types.import } : null),
186
+ ...(entries.module ? { default: entries.module } : null),
187
+ };
188
+ const requireField = {
189
+ ...(types.require ? { types: types.require } : null),
190
+ ...(entries.commonjs ? { default: entries.commonjs } : null),
191
+ };
192
+ if (targets.includes('commonjs') && targets.includes('module')) {
193
+ exportsField['.'] = {
194
+ source: entries.source,
195
+ import: importField,
196
+ require: requireField,
197
+ };
198
+ }
199
+ else if (targets.includes('commonjs')) {
200
+ exportsField['.'] = {
201
+ source: entries.source,
202
+ ...requireField,
203
+ };
204
+ }
205
+ else if (targets.includes('module')) {
206
+ exportsField['.'] = {
207
+ source: entries.source,
208
+ ...importField,
209
+ };
210
+ }
211
+ if (pkg.exports &&
212
+ JSON.stringify(pkg.exports) !== JSON.stringify(exportsField)) {
213
+ replace = (await prompts({
214
+ type: 'confirm',
215
+ name: 'replace',
216
+ message: `Your package.json has 'exports' field set.\n Do you want to replace it?`,
217
+ initial: true,
218
+ })).replace;
219
+ }
220
+ else {
221
+ replace = true;
222
+ }
223
+ if (replace) {
224
+ pkg.exports = exportsField;
225
+ }
226
+ }
227
+ const entryFields = {};
228
+ if (targets.includes('commonjs') && targets.includes('module')) {
229
+ entryFields.main = entries.commonjs;
230
+ entryFields.module = entries.module;
231
+ if (targets.includes('typescript')) {
232
+ entryFields.types = types.require;
233
+ }
234
+ }
235
+ else if (targets.includes('commonjs')) {
236
+ entryFields.main = entries.commonjs;
237
+ if (targets.includes('typescript')) {
238
+ entryFields.types = types.require;
239
+ }
240
+ }
241
+ else if (targets.includes('module')) {
242
+ entryFields.main = entries.module;
243
+ if (targets.includes('typescript')) {
244
+ entryFields.types = types.import;
245
+ }
246
+ }
247
+ for (const key in entryFields) {
248
+ // eslint-disable-next-line @typescript-eslint/no-unsafe-type-assertion
249
+ const entry = entryFields[key];
250
+ if (pkg[key] && pkg[key] !== entry) {
251
+ const { replace } = await prompts({
252
+ type: 'confirm',
253
+ name: 'replace',
254
+ message: `Your package.json has the '${key}' field set to '${String(pkg[key])}'.\n Do you want to replace it with '${String(entry)}'?`,
255
+ initial: true,
256
+ });
257
+ if (replace) {
258
+ pkg[key] = entry;
259
+ }
260
+ }
261
+ else {
262
+ pkg[key] = entry;
263
+ }
264
+ }
265
+ if (pkg['react-native'] &&
266
+ (pkg['react-native'].startsWith(source) ||
267
+ pkg['react-native'].startsWith(`./${source}`))) {
268
+ const { remove } = await prompts({
269
+ type: 'confirm',
270
+ name: 'remove',
271
+ message: `Your package.json has the 'react-native' field pointing to source code.\n This can cause problems when customizing babel configuration.\n Do you want to remove it?`,
272
+ initial: true,
273
+ });
274
+ if (remove) {
275
+ delete pkg['react-native'];
276
+ }
277
+ }
278
+ if (pkg.scripts?.prepare && pkg.scripts.prepare !== prepare) {
279
+ const { replace } = await prompts({
280
+ type: 'confirm',
281
+ name: 'replace',
282
+ message: `Your package.json has the 'scripts.prepare' field set to '${String(pkg.scripts.prepare)}'.\n Do you want to replace it with '${prepare}'?`,
283
+ initial: true,
284
+ });
285
+ if (replace) {
286
+ pkg.scripts.prepare = prepare;
287
+ }
288
+ }
289
+ else {
290
+ pkg.scripts = pkg.scripts || {};
291
+ pkg.scripts.prepare = prepare;
292
+ }
293
+ if (pkg.files) {
294
+ const pkgFiles = pkg.files;
295
+ if (files?.some((file) => !pkgFiles.includes(file))) {
296
+ const { update } = await prompts({
297
+ type: 'confirm',
298
+ name: 'update',
299
+ message: `Your package.json already has a 'files' field.\n Do you want to update it?`,
300
+ initial: true,
301
+ });
302
+ if (update) {
303
+ pkg.files = [
304
+ ...files,
305
+ ...pkg.files.filter((file) => !files.includes(file)),
306
+ ];
307
+ }
308
+ }
309
+ }
310
+ else {
311
+ pkg.files = files;
312
+ }
313
+ pkg[pack.name] = {
314
+ source,
315
+ output,
316
+ targets: targets.map((t) => {
317
+ if (t === target && flow) {
318
+ return [t, { copyFlow: true }];
319
+ }
320
+ if (t === 'commonjs' || t === 'module') {
321
+ return [t, { esm }];
322
+ }
323
+ return t;
324
+ }),
325
+ };
326
+ if (pkg.jest) {
327
+ const entry = `<rootDir>/${output}/`;
328
+ if (pkg.jest.modulePathIgnorePatterns) {
329
+ const { modulePathIgnorePatterns } = pkg.jest;
330
+ if (!modulePathIgnorePatterns.includes(entry)) {
331
+ modulePathIgnorePatterns.push(entry);
332
+ }
333
+ }
334
+ else {
335
+ pkg.jest.modulePathIgnorePatterns = [entry];
336
+ }
337
+ }
338
+ pkg.eslintIgnore = pkg.eslintIgnore || ['node_modules/'];
339
+ if (!pkg.eslintIgnore.includes(`${output}/`)) {
340
+ pkg.eslintIgnore.push(`${output}/`);
341
+ }
342
+ await fs.writeJSON(projectPackagePath, pkg, {
343
+ spaces: 2,
344
+ });
345
+ const ignorefiles = [
346
+ path.join(root, '.gitignore'),
347
+ path.join(root, '.eslintignore'),
348
+ ];
349
+ for (const ignorefile of ignorefiles) {
350
+ if (await fs.pathExists(ignorefile)) {
351
+ const content = await fs.readFile(ignorefile, 'utf-8');
352
+ if (!content.split('\n').includes(`${output}/`)) {
353
+ await fs.writeFile(ignorefile, `${content}\n# generated by bob\n${output}/\n`);
354
+ }
355
+ }
356
+ }
357
+ const packageManager = (await fs.pathExists(path.join(root, 'yarn.lock')))
358
+ ? 'yarn'
359
+ : 'npm';
360
+ process.stdout.write(dedent(`
361
+ Project ${kleur.yellow(pkg.name)} configured successfully!
362
+
363
+ ${kleur.magenta(`${kleur.bold('Perform last steps')} by running`)}${kleur.gray(':')}
364
+
365
+ ${kleur.gray('$')} ${packageManager} install
366
+
367
+ ${kleur.yellow('Good luck!')}
368
+ `));
369
+ }
370
+ //# sourceMappingURL=init.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"init.js","sourceRoot":"","sources":["../../src/init.ts"],"names":[],"mappings":"AAAA,OAAO,IAAI,MAAM,WAAW,CAAC;AAC7B,OAAO,MAAM,MAAM,QAAQ,CAAC;AAC5B,OAAO,EAAE,MAAM,UAAU,CAAC;AAC1B,OAAO,KAAK,MAAM,OAAO,CAAC;AAC1B,OAAO,IAAI,MAAM,iBAAiB,CAAC,OAAO,IAAI,EAAE,MAAM,EAAE,CAAC;AACzD,OAAO,EAAE,UAAU,EAAE,MAAM,uBAAuB,CAAC;AACnD,OAAO,EAAE,UAAU,EAAE,MAAM,uBAAuB,CAAC;AACnD,OAAO,OAAO,EAAE,EAAqB,MAAM,oBAAoB,CAAC;AAEhE,MAAM,iBAAiB,GAAG,kBAAkB,CAAC;AAE7C,MAAM,CAAC,KAAK,UAAU,IAAI;IACxB,MAAM,IAAI,GAAG,OAAO,CAAC,GAAG,EAAE,CAAC;IAC3B,MAAM,kBAAkB,GAAG,IAAI,CAAC,OAAO,CAAC,IAAI,EAAE,cAAc,CAAC,CAAC;IAE9D,IAAI,UAAU,EAAE,EAAE,CAAC;QACjB,MAAM,EAAE,cAAc,EAAE,GAAG,MAAM,OAAO,CAAC;YACvC,IAAI,EAAE,SAAS;YACf,IAAI,EAAE,gBAAgB;YACtB,OAAO,EAAE,4HAA4H;YACrI,OAAO,EAAE,KAAK;SACf,CAAC,CAAC;QAEH,IAAI,CAAC,cAAc,EAAE,CAAC;YACpB,OAAO,CAAC,IAAI,CAAC,CAAC,CAAC,CAAC;QAClB,CAAC;IACH,CAAC;IAED,IAAI,CAAC,CAAC,MAAM,EAAE,CAAC,UAAU,CAAC,kBAAkB,CAAC,CAAC,EAAE,CAAC;QAC/C,MAAM,IAAI,KAAK,CACb,2CAA2C,IAAI,oCAAoC,CACpF,CAAC;IACJ,CAAC;IAED,MAAM,GAAG,GAAG,IAAI,CAAC,KAAK,CAAC,MAAM,EAAE,CAAC,QAAQ,CAAC,kBAAkB,EAAE,OAAO,CAAC,CAAC,CAAC;IACvE,MAAM,MAAM,GAAG,UAAU,CAAC,IAAI,CAAC,CAAC;IAEhC,IACE,MAAM,EAAE,MAAM;QACd,GAAG,CAAC,eAAe;QACnB,IAAI,CAAC,IAAI,IAAI,GAAG,CAAC,eAAe,EAChC,CAAC;QACD,MAAM,EAAE,cAAc,EAAE,GAAG,MAAM,OAAO,CAAC;YACvC,IAAI,EAAE,SAAS;YACf,IAAI,EAAE,gBAAgB;YACtB,OAAO,EAAE,8GAA8G;YACvH,OAAO,EAAE,KAAK;SACf,CAAC,CAAC;QAEH,IAAI,CAAC,cAAc,EAAE,CAAC;YACpB,OAAO,CAAC,IAAI,CAAC,CAAC,CAAC,CAAC;QAClB,CAAC;IACH,CAAC;IAED,uEAAuE;IACvE,MAAM,EAAE,MAAM,EAAE,GAAG,CAAC,MAAM,OAAO,CAAC;QAChC,IAAI,EAAE,MAAM;QACZ,IAAI,EAAE,QAAQ;QACd,OAAO,EAAE,8BAA8B;QACvC,OAAO,EAAE,KAAK;QACd,QAAQ,EAAE,CAAC,KAAa,EAAE,EAAE,CAAC,OAAO,CAAC,KAAK,CAAC;KAC5C,CAAC,CAAuB,CAAC;IAE1B,IAAI,SAAS,CAAC;IAEd,IAAI,MAAM,EAAE,CAAC,UAAU,CAAC,IAAI,CAAC,IAAI,CAAC,IAAI,EAAE,MAAM,EAAE,UAAU,CAAC,CAAC,EAAE,CAAC;QAC7D,SAAS,GAAG,UAAU,CAAC;IACzB,CAAC;SAAM,IAAI,MAAM,EAAE,CAAC,UAAU,CAAC,IAAI,CAAC,IAAI,CAAC,IAAI,EAAE,MAAM,EAAE,UAAU,CAAC,CAAC,EAAE,CAAC;QACpE,SAAS,GAAG,UAAU,CAAC;IACzB,CAAC;SAAM,IAAI,MAAM,EAAE,CAAC,UAAU,CAAC,IAAI,CAAC,IAAI,CAAC,IAAI,EAAE,MAAM,EAAE,WAAW,CAAC,CAAC,EAAE,CAAC;QACrE,SAAS,GAAG,WAAW,CAAC;IAC1B,CAAC;IAED,IAAI,CAAC,SAAS,EAAE,CAAC;QACf,MAAM,IAAI,KAAK,CACb,qEAAqE,MAAM,gDAAgD,CAC5H,CAAC;IACJ,CAAC;IAED,GAAG,CAAC,eAAe,GAAG,MAAM,CAAC,WAAW,CACtC;QACE,GAAG,MAAM,CAAC,OAAO,CAAC,GAAG,CAAC,eAAe,IAAI,EAAE,CAAC;QAC5C,CAAC,IAAI,CAAC,IAAI,EAAE,IAAI,IAAI,CAAC,OAAO,EAAE,CAAC;KAChC,CAAC,IAAI,CAAC,CAAC,CAAC,CAAC,CAAC,EAAE,CAAC,CAAC,CAAC,EAAE,EAAE,CAAC,CAAC,CAAC,aAAa,CAAC,CAAC,CAAC,CAAC,CACzC,CAAC;IAEF,MAAM,SAAS,GAAmB;QAChC;YACE,IAAI,EAAE,MAAM;YACZ,IAAI,EAAE,QAAQ;YACd,OAAO,EAAE,iDAAiD;YAC1D,OAAO,EAAE,KAAK;YACd,QAAQ,EAAE,CAAC,KAAa,EAAE,EAAE,CAAC,OAAO,CAAC,KAAK,CAAC;SAC5C;QACD;YACE,IAAI,EAAE,aAAa;YACnB,IAAI,EAAE,SAAS;YACf,OAAO,EAAE,qCAAqC;YAC9C,OAAO,EAAE;gBACP;oBACE,KAAK,EAAE,4BAA4B;oBACnC,KAAK,EAAE,QAAQ;oBACf,QAAQ,EAAE,IAAI;iBACf;gBACD;oBACE,KAAK,EAAE,6CAA6C;oBACpD,KAAK,EAAE,UAAU;oBACjB,QAAQ,EAAE,KAAK;iBAChB;gBACD;oBACE,KAAK,EAAE,iDAAiD;oBACxD,KAAK,EAAE,YAAY;oBACnB,QAAQ,EAAE,SAAS,CAAC,IAAI,CAAC,SAAS,CAAC;iBACpC;aACF;YACD,QAAQ,EAAE,CAAC,KAAa,EAAE,EAAE,CAAC,OAAO,CAAC,KAAK,CAAC,MAAM,CAAC;SACnD;KACF,CAAC;IAEF,IACE,SAAS,CAAC,QAAQ,CAAC,KAAK,CAAC;QACzB,iBAAiB,CAAC,IAAI,CACpB,MAAM,EAAE,CAAC,QAAQ,CAAC,IAAI,CAAC,IAAI,CAAC,IAAI,EAAE,MAAM,EAAE,SAAS,CAAC,EAAE,OAAO,CAAC,CAC/D,EACD,CAAC;QACD,SAAS,CAAC,IAAI,CAAC;YACb,IAAI,EAAE,SAAS;YACf,IAAI,EAAE,MAAM;YACZ,OAAO,EAAE,8CAA8C;YACvD,OAAO,EAAE,MAAM,CAAC,IAAI,CAAC,GAAG,CAAC,eAAe,IAAI,EAAE,CAAC,CAAC,QAAQ,CAAC,UAAU,CAAC;SACrE,CAAC,CAAC;IACL,CAAC;IAED,uEAAuE;IACvE,MAAM,EAAE,MAAM,EAAE,OAAO,EAAE,IAAI,EAAE,GAAG,CAAC,MAAM,OAAO,CAAC,SAAS,CAAC,CAI1D,CAAC;IAEF,MAAM,MAAM,GACV,OAAO,CAAC,CAAC,CAAC,KAAK,UAAU,IAAI,OAAO,CAAC,CAAC,CAAC,KAAK,QAAQ;QAClD,CAAC,CAAC,OAAO,CAAC,CAAC,CAAC;QACZ,CAAC,CAAC,SAAS,CAAC;IAEhB,MAAM,OAAO,GAET;QACF,MAAM,EAAE,KAAK,IAAI,CAAC,IAAI,CAAC,MAAM,EAAE,SAAS,CAAC,EAAE;KAC5C,CAAC;IAEF,IAAI,GAAG,GAAG,KAAK,CAAC;IAEhB,IAAI,OAAO,CAAC,QAAQ,CAAC,QAAQ,CAAC,EAAE,CAAC;QAC/B,GAAG,GAAG,IAAI,CAAC;QACX,OAAO,CAAC,MAAM,GAAG,KAAK,IAAI,CAAC,IAAI,CAAC,MAAM,EAAE,QAAQ,EAAE,UAAU,CAAC,EAAE,CAAC;IAClE,CAAC;IAED,IAAI,OAAO,CAAC,QAAQ,CAAC,UAAU,CAAC,EAAE,CAAC;QACjC,OAAO,CAAC,QAAQ,GAAG,KAAK,IAAI,CAAC,IAAI,CAAC,MAAM,EAAE,UAAU,EAAE,UAAU,CAAC,EAAE,CAAC;IACtE,CAAC;IAED,MAAM,KAAK,GAEP,EAAE,CAAC;IAEP,IAAI,OAAO,CAAC,QAAQ,CAAC,YAAY,CAAC,EAAE,CAAC;QACnC,IAAI,OAAO,CAAC,QAAQ,CAAC,UAAU,CAAC,IAAI,OAAO,CAAC,QAAQ,CAAC,QAAQ,CAAC,EAAE,CAAC;YAC/D,KAAK,CAAC,OAAO,GAAG,KAAK,IAAI,CAAC,IAAI,CAC5B,MAAM,EACN,YAAY,EACZ,UAAU,EACV,MAAM,EACN,YAAY,CACb,EAAE,CAAC;YAEJ,KAAK,CAAC,MAAM,GAAG,KAAK,IAAI,CAAC,IAAI,CAC3B,MAAM,EACN,YAAY,EACZ,QAAQ,EACR,MAAM,EACN,YAAY,CACb,EAAE,CAAC;QACN,CAAC;aAAM,CAAC;YACN,KAAK,CAAC,OAAO,GAAG,KAAK,IAAI,CAAC,IAAI,CAC5B,MAAM,EACN,YAAY,EACZ,MAAM,EACN,YAAY,CACb,EAAE,CAAC;YAEJ,KAAK,CAAC,MAAM,GAAG,KAAK,CAAC,OAAO,CAAC;QAC/B,CAAC;QAED,IAAI,CAAC,CAAC,MAAM,EAAE,CAAC,UAAU,CAAC,IAAI,CAAC,IAAI,CAAC,IAAI,EAAE,eAAe,CAAC,CAAC,CAAC,EAAE,CAAC;YAC7D,MAAM,EAAE,QAAQ,EAAE,GAAG,MAAM,OAAO,CAAC;gBACjC,IAAI,EAAE,SAAS;gBACf,IAAI,EAAE,UAAU;gBAChB,OAAO,EAAE,qHAAqH;gBAC9H,OAAO,EAAE,IAAI;aACd,CAAC,CAAC;YAEH,IAAI,QAAQ,EAAE,CAAC;gBACb,MAAM,EAAE,CAAC,SAAS,CAChB,IAAI,CAAC,IAAI,CAAC,IAAI,EAAE,eAAe,CAAC,EAChC;oBACE,eAAe,EAAE;wBACf,OAAO,EAAE,GAAG;wBACZ,oBAAoB,EAAE,KAAK;wBAC3B,iBAAiB,EAAE,KAAK;wBACxB,eAAe,EAAE,IAAI;wBACrB,gCAAgC,EAAE,IAAI;wBACtC,GAAG,EAAE,WAAW;wBAChB,GAAG,EAAE,CAAC,QAAQ,CAAC;wBACf,MAAM,EAAE,QAAQ;wBAChB,gBAAgB,EAAE,SAAS;wBAC3B,0BAA0B,EAAE,IAAI;wBAChC,iBAAiB,EAAE,IAAI;wBACvB,mBAAmB,EAAE,KAAK;wBAC1B,qBAAqB,EAAE,KAAK;wBAC5B,wBAAwB,EAAE,IAAI;wBAC9B,cAAc,EAAE,IAAI;wBACpB,kBAAkB,EAAE,IAAI;wBACxB,iBAAiB,EAAE,IAAI;wBACvB,YAAY,EAAE,IAAI;wBAClB,MAAM,EAAE,IAAI;wBACZ,MAAM,EAAE,QAAQ;wBAChB,oBAAoB,EAAE,IAAI;qBAC3B;iBACF,EACD,EAAE,MAAM,EAAE,CAAC,EAAE,CACd,CAAC;YACJ,CAAC;QACH,CAAC;IACH,CAAC;IAED,MAAM,OAAO,GAAG,WAAW,CAAC;IAC5B,MAAM,KAAK,GAAG;QACZ,MAAM;QACN,MAAM;QACN,eAAe;QACf,kBAAkB;QAClB,eAAe;KAChB,CAAC;IAEF,IAAI,GAAG,EAAE,CAAC;QACR,IAAI,OAAO,GAAG,KAAK,CAAC;QAEpB,MAAM,YAAY,GAAG;YACnB,GAAG,EAAE,EAAE;YACP,gBAAgB,EAAE,gBAAgB;SACnC,CAAC;QAEF,MAAM,WAAW,GAAG;YAClB,GAAG,CAAC,KAAK,CAAC,MAAM,CAAC,CAAC,CAAC,EAAE,KAAK,EAAE,KAAK,CAAC,MAAM,EAAE,CAAC,CAAC,CAAC,IAAI,CAAC;YAClD,GAAG,CAAC,OAAO,CAAC,MAAM,CAAC,CAAC,CAAC,EAAE,OAAO,EAAE,OAAO,CAAC,MAAM,EAAE,CAAC,CAAC,CAAC,IAAI,CAAC;SACzD,CAAC;QAEF,MAAM,YAAY,GAAG;YACnB,GAAG,CAAC,KAAK,CAAC,OAAO,CAAC,CAAC,CAAC,EAAE,KAAK,EAAE,KAAK,CAAC,OAAO,EAAE,CAAC,CAAC,CAAC,IAAI,CAAC;YACpD,GAAG,CAAC,OAAO,CAAC,QAAQ,CAAC,CAAC,CAAC,EAAE,OAAO,EAAE,OAAO,CAAC,QAAQ,EAAE,CAAC,CAAC,CAAC,IAAI,CAAC;SAC7D,CAAC;QAEF,IAAI,OAAO,CAAC,QAAQ,CAAC,UAAU,CAAC,IAAI,OAAO,CAAC,QAAQ,CAAC,QAAQ,CAAC,EAAE,CAAC;YAC/D,YAAY,CAAC,GAAG,CAAC,GAAG;gBAClB,MAAM,EAAE,OAAO,CAAC,MAAM;gBACtB,MAAM,EAAE,WAAW;gBACnB,OAAO,EAAE,YAAY;aACtB,CAAC;QACJ,CAAC;aAAM,IAAI,OAAO,CAAC,QAAQ,CAAC,UAAU,CAAC,EAAE,CAAC;YACxC,YAAY,CAAC,GAAG,CAAC,GAAG;gBAClB,MAAM,EAAE,OAAO,CAAC,MAAM;gBACtB,GAAG,YAAY;aAChB,CAAC;QACJ,CAAC;aAAM,IAAI,OAAO,CAAC,QAAQ,CAAC,QAAQ,CAAC,EAAE,CAAC;YACtC,YAAY,CAAC,GAAG,CAAC,GAAG;gBAClB,MAAM,EAAE,OAAO,CAAC,MAAM;gBACtB,GAAG,WAAW;aACf,CAAC;QACJ,CAAC;QAED,IACE,GAAG,CAAC,OAAO;YACX,IAAI,CAAC,SAAS,CAAC,GAAG,CAAC,OAAO,CAAC,KAAK,IAAI,CAAC,SAAS,CAAC,YAAY,CAAC,EAC5D,CAAC;YACD,OAAO,GAAG,CACR,MAAM,OAAO,CAAC;gBACZ,IAAI,EAAE,SAAS;gBACf,IAAI,EAAE,SAAS;gBACf,OAAO,EAAE,0EAA0E;gBACnF,OAAO,EAAE,IAAI;aACd,CAAC,CACH,CAAC,OAAO,CAAC;QACZ,CAAC;aAAM,CAAC;YACN,OAAO,GAAG,IAAI,CAAC;QACjB,CAAC;QAED,IAAI,OAAO,EAAE,CAAC;YACZ,GAAG,CAAC,OAAO,GAAG,YAAY,CAAC;QAC7B,CAAC;IACH,CAAC;IAED,MAAM,WAAW,GAEb,EAAE,CAAC;IAEP,IAAI,OAAO,CAAC,QAAQ,CAAC,UAAU,CAAC,IAAI,OAAO,CAAC,QAAQ,CAAC,QAAQ,CAAC,EAAE,CAAC;QAC/D,WAAW,CAAC,IAAI,GAAG,OAAO,CAAC,QAAQ,CAAC;QACpC,WAAW,CAAC,MAAM,GAAG,OAAO,CAAC,MAAM,CAAC;QAEpC,IAAI,OAAO,CAAC,QAAQ,CAAC,YAAY,CAAC,EAAE,CAAC;YACnC,WAAW,CAAC,KAAK,GAAG,KAAK,CAAC,OAAO,CAAC;QACpC,CAAC;IACH,CAAC;SAAM,IAAI,OAAO,CAAC,QAAQ,CAAC,UAAU,CAAC,EAAE,CAAC;QACxC,WAAW,CAAC,IAAI,GAAG,OAAO,CAAC,QAAQ,CAAC;QAEpC,IAAI,OAAO,CAAC,QAAQ,CAAC,YAAY,CAAC,EAAE,CAAC;YACnC,WAAW,CAAC,KAAK,GAAG,KAAK,CAAC,OAAO,CAAC;QACpC,CAAC;IACH,CAAC;SAAM,IAAI,OAAO,CAAC,QAAQ,CAAC,QAAQ,CAAC,EAAE,CAAC;QACtC,WAAW,CAAC,IAAI,GAAG,OAAO,CAAC,MAAM,CAAC;QAElC,IAAI,OAAO,CAAC,QAAQ,CAAC,YAAY,CAAC,EAAE,CAAC;YACnC,WAAW,CAAC,KAAK,GAAG,KAAK,CAAC,MAAM,CAAC;QACnC,CAAC;IACH,CAAC;IAED,KAAK,MAAM,GAAG,IAAI,WAAW,EAAE,CAAC;QAC9B,uEAAuE;QACvE,MAAM,KAAK,GAAG,WAAW,CAAC,GAA+B,CAAC,CAAC;QAE3D,IAAI,GAAG,CAAC,GAAG,CAAC,IAAI,GAAG,CAAC,GAAG,CAAC,KAAK,KAAK,EAAE,CAAC;YACnC,MAAM,EAAE,OAAO,EAAE,GAAG,MAAM,OAAO,CAAC;gBAChC,IAAI,EAAE,SAAS;gBACf,IAAI,EAAE,SAAS;gBACf,OAAO,EAAE,8BAA8B,GAAG,mBAAmB,MAAM,CAAC,GAAG,CAAC,GAAG,CAAC,CAAC,yCAAyC,MAAM,CAAC,KAAK,CAAC,IAAI;gBACvI,OAAO,EAAE,IAAI;aACd,CAAC,CAAC;YAEH,IAAI,OAAO,EAAE,CAAC;gBACZ,GAAG,CAAC,GAAG,CAAC,GAAG,KAAK,CAAC;YACnB,CAAC;QACH,CAAC;aAAM,CAAC;YACN,GAAG,CAAC,GAAG,CAAC,GAAG,KAAK,CAAC;QACnB,CAAC;IACH,CAAC;IAED,IACE,GAAG,CAAC,cAAc,CAAC;QACnB,CAAC,GAAG,CAAC,cAAc,CAAC,CAAC,UAAU,CAAC,MAAM,CAAC;YACrC,GAAG,CAAC,cAAc,CAAC,CAAC,UAAU,CAAC,KAAK,MAAM,EAAE,CAAC,CAAC,EAChD,CAAC;QACD,MAAM,EAAE,MAAM,EAAE,GAAG,MAAM,OAAO,CAAC;YAC/B,IAAI,EAAE,SAAS;YACf,IAAI,EAAE,QAAQ;YACd,OAAO,EAAE,uKAAuK;YAChL,OAAO,EAAE,IAAI;SACd,CAAC,CAAC;QAEH,IAAI,MAAM,EAAE,CAAC;YACX,OAAO,GAAG,CAAC,cAAc,CAAC,CAAC;QAC7B,CAAC;IACH,CAAC;IAED,IAAI,GAAG,CAAC,OAAO,EAAE,OAAO,IAAI,GAAG,CAAC,OAAO,CAAC,OAAO,KAAK,OAAO,EAAE,CAAC;QAC5D,MAAM,EAAE,OAAO,EAAE,GAAG,MAAM,OAAO,CAAC;YAChC,IAAI,EAAE,SAAS;YACf,IAAI,EAAE,SAAS;YACf,OAAO,EAAE,6DAA6D,MAAM,CAAC,GAAG,CAAC,OAAO,CAAC,OAAO,CAAC,yCAAyC,OAAO,IAAI;YACrJ,OAAO,EAAE,IAAI;SACd,CAAC,CAAC;QAEH,IAAI,OAAO,EAAE,CAAC;YACZ,GAAG,CAAC,OAAO,CAAC,OAAO,GAAG,OAAO,CAAC;QAChC,CAAC;IACH,CAAC;SAAM,CAAC;QACN,GAAG,CAAC,OAAO,GAAG,GAAG,CAAC,OAAO,IAAI,EAAE,CAAC;QAChC,GAAG,CAAC,OAAO,CAAC,OAAO,GAAG,OAAO,CAAC;IAChC,CAAC;IAED,IAAI,GAAG,CAAC,KAAK,EAAE,CAAC;QACd,MAAM,QAAQ,GAAG,GAAG,CAAC,KAAK,CAAC;QAE3B,IAAI,KAAK,EAAE,IAAI,CAAC,CAAC,IAAI,EAAE,EAAE,CAAC,CAAC,QAAQ,CAAC,QAAQ,CAAC,IAAI,CAAC,CAAC,EAAE,CAAC;YACpD,MAAM,EAAE,MAAM,EAAE,GAAG,MAAM,OAAO,CAAC;gBAC/B,IAAI,EAAE,SAAS;gBACf,IAAI,EAAE,QAAQ;gBACd,OAAO,EAAE,6EAA6E;gBACtF,OAAO,EAAE,IAAI;aACd,CAAC,CAAC;YAEH,IAAI,MAAM,EAAE,CAAC;gBACX,GAAG,CAAC,KAAK,GAAG;oBACV,GAAG,KAAK;oBACR,GAAG,GAAG,CAAC,KAAK,CAAC,MAAM,CAAC,CAAC,IAAY,EAAE,EAAE,CAAC,CAAC,KAAK,CAAC,QAAQ,CAAC,IAAI,CAAC,CAAC;iBAC7D,CAAC;YACJ,CAAC;QACH,CAAC;IACH,CAAC;SAAM,CAAC;QACN,GAAG,CAAC,KAAK,GAAG,KAAK,CAAC;IACpB,CAAC;IAED,GAAG,CAAC,IAAI,CAAC,IAAI,CAAC,GAAG;QACf,MAAM;QACN,MAAM;QACN,OAAO,EAAE,OAAO,CAAC,GAAG,CAAC,CAAC,CAAS,EAAE,EAAE;YACjC,IAAI,CAAC,KAAK,MAAM,IAAI,IAAI,EAAE,CAAC;gBACzB,OAAO,CAAC,CAAC,EAAE,EAAE,QAAQ,EAAE,IAAI,EAAE,CAAC,CAAC;YACjC,CAAC;YAED,IAAI,CAAC,KAAK,UAAU,IAAI,CAAC,KAAK,QAAQ,EAAE,CAAC;gBACvC,OAAO,CAAC,CAAC,EAAE,EAAE,GAAG,EAAE,CAAC,CAAC;YACtB,CAAC;YAED,OAAO,CAAC,CAAC;QACX,CAAC,CAAC;KACH,CAAC;IAEF,IAAI,GAAG,CAAC,IAAI,EAAE,CAAC;QACb,MAAM,KAAK,GAAG,aAAa,MAAM,GAAG,CAAC;QAErC,IAAI,GAAG,CAAC,IAAI,CAAC,wBAAwB,EAAE,CAAC;YACtC,MAAM,EAAE,wBAAwB,EAAE,GAAG,GAAG,CAAC,IAAI,CAAC;YAE9C,IAAI,CAAC,wBAAwB,CAAC,QAAQ,CAAC,KAAK,CAAC,EAAE,CAAC;gBAC9C,wBAAwB,CAAC,IAAI,CAAC,KAAK,CAAC,CAAC;YACvC,CAAC;QACH,CAAC;aAAM,CAAC;YACN,GAAG,CAAC,IAAI,CAAC,wBAAwB,GAAG,CAAC,KAAK,CAAC,CAAC;QAC9C,CAAC;IACH,CAAC;IAED,GAAG,CAAC,YAAY,GAAG,GAAG,CAAC,YAAY,IAAI,CAAC,eAAe,CAAC,CAAC;IAEzD,IAAI,CAAC,GAAG,CAAC,YAAY,CAAC,QAAQ,CAAC,GAAG,MAAM,GAAG,CAAC,EAAE,CAAC;QAC7C,GAAG,CAAC,YAAY,CAAC,IAAI,CAAC,GAAG,MAAM,GAAG,CAAC,CAAC;IACtC,CAAC;IAED,MAAM,EAAE,CAAC,SAAS,CAAC,kBAAkB,EAAE,GAAG,EAAE;QAC1C,MAAM,EAAE,CAAC;KACV,CAAC,CAAC;IAEH,MAAM,WAAW,GAAG;QAClB,IAAI,CAAC,IAAI,CAAC,IAAI,EAAE,YAAY,CAAC;QAC7B,IAAI,CAAC,IAAI,CAAC,IAAI,EAAE,eAAe,CAAC;KACjC,CAAC;IAEF,KAAK,MAAM,UAAU,IAAI,WAAW,EAAE,CAAC;QACrC,IAAI,MAAM,EAAE,CAAC,UAAU,CAAC,UAAU,CAAC,EAAE,CAAC;YACpC,MAAM,OAAO,GAAG,MAAM,EAAE,CAAC,QAAQ,CAAC,UAAU,EAAE,OAAO,CAAC,CAAC;YAEvD,IAAI,CAAC,OAAO,CAAC,KAAK,CAAC,IAAI,CAAC,CAAC,QAAQ,CAAC,GAAG,MAAM,GAAG,CAAC,EAAE,CAAC;gBAChD,MAAM,EAAE,CAAC,SAAS,CAChB,UAAU,EACV,GAAG,OAAO,yBAAyB,MAAM,KAAK,CAC/C,CAAC;YACJ,CAAC;QACH,CAAC;IACH,CAAC;IAED,MAAM,cAAc,GAAG,CAAC,MAAM,EAAE,CAAC,UAAU,CAAC,IAAI,CAAC,IAAI,CAAC,IAAI,EAAE,WAAW,CAAC,CAAC,CAAC;QACxE,CAAC,CAAC,MAAM;QACR,CAAC,CAAC,KAAK,CAAC;IAEV,OAAO,CAAC,MAAM,CAAC,KAAK,CAClB,MAAM,CAAC;cACG,KAAK,CAAC,MAAM,CAAC,GAAG,CAAC,IAAI,CAAC;;MAE9B,KAAK,CAAC,OAAO,CACb,GAAG,KAAK,CAAC,IAAI,CAAC,oBAAoB,CAAC,aAAa,CACjD,GAAG,KAAK,CAAC,IAAI,CAAC,GAAG,CAAC;;QAEf,KAAK,CAAC,IAAI,CAAC,GAAG,CAAC,IAAI,cAAc;;MAEnC,KAAK,CAAC,MAAM,CAAC,YAAY,CAAC;GAC7B,CAAC,CACD,CAAC;AACJ,CAAC"}
@@ -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,4 @@
1
+ import type { Input } from '../../types.ts';
2
+ type Options = Omit<Input, 'output'>;
3
+ export default function build({ root, report }: Options): Promise<void>;
4
+ export {};
@@ -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