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.
Files changed (189) 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-declarations.test.d.ts +1 -0
  13. package/lib/src/__tests__/typescript-declarations.test.js +193 -0
  14. package/lib/src/__tests__/typescript-declarations.test.js.map +1 -0
  15. package/lib/src/__tests__/typescript.test.d.ts +1 -0
  16. package/lib/src/__tests__/typescript.test.js +243 -0
  17. package/lib/src/__tests__/typescript.test.js.map +1 -0
  18. package/lib/src/__tests__/updateSourceMap.test.d.ts +1 -0
  19. package/lib/src/__tests__/updateSourceMap.test.js +84 -0
  20. package/lib/src/__tests__/updateSourceMap.test.js.map +1 -0
  21. package/lib/src/babel.d.ts +19 -0
  22. package/lib/src/babel.js +58 -0
  23. package/lib/src/babel.js.map +1 -0
  24. package/lib/src/build.d.ts +14 -0
  25. package/lib/src/build.js +122 -0
  26. package/lib/src/build.js.map +1 -0
  27. package/lib/src/configs/babel-config.cjs +46 -0
  28. package/lib/src/configs/babel-config.cjs.map +1 -0
  29. package/lib/src/configs/babel-config.d.cts +15 -0
  30. package/lib/src/configs/babel-preset.cjs +66 -0
  31. package/lib/src/configs/babel-preset.cjs.map +1 -0
  32. package/lib/src/configs/babel-preset.d.cts +19 -0
  33. package/lib/src/configs/metro-config.d.mts +4 -0
  34. package/{metro-config.js → lib/src/configs/metro-config.mjs} +3 -7
  35. package/lib/src/configs/metro-config.mjs.map +1 -0
  36. package/lib/src/configs/vite-config.d.mts +2 -0
  37. package/lib/src/configs/vite-config.mjs +59 -0
  38. package/lib/src/configs/vite-config.mjs.map +1 -0
  39. package/lib/src/index.d.ts +1 -0
  40. package/lib/src/index.js +18 -0
  41. package/lib/src/index.js.map +1 -0
  42. package/lib/src/init.d.ts +1 -0
  43. package/lib/src/init.js +370 -0
  44. package/lib/src/init.js.map +1 -0
  45. package/lib/src/schema.d.ts +70 -0
  46. package/lib/src/schema.js +45 -0
  47. package/lib/src/schema.js.map +1 -0
  48. package/lib/src/targets/codegen/index.d.ts +4 -0
  49. package/lib/src/targets/codegen/index.js +54 -0
  50. package/lib/src/targets/codegen/index.js.map +1 -0
  51. package/lib/src/targets/codegen/patches/patchCodegenAndroidPackage.d.ts +11 -0
  52. package/lib/src/targets/codegen/patches/patchCodegenAndroidPackage.js +63 -0
  53. package/lib/src/targets/codegen/patches/patchCodegenAndroidPackage.js.map +1 -0
  54. package/lib/src/targets/codegen/patches/patchCodegenAndroidPackage.test.d.ts +1 -0
  55. package/lib/src/targets/codegen/patches/patchCodegenAndroidPackage.test.js +103 -0
  56. package/lib/src/targets/codegen/patches/patchCodegenAndroidPackage.test.js.map +1 -0
  57. package/lib/src/targets/codegen/patches/removeCodegenAppLevelCode.d.ts +16 -0
  58. package/lib/src/targets/codegen/patches/removeCodegenAppLevelCode.js +59 -0
  59. package/lib/src/targets/codegen/patches/removeCodegenAppLevelCode.js.map +1 -0
  60. package/lib/src/targets/codegen/patches/removeCodegenAppLevelCode.test.d.ts +1 -0
  61. package/lib/src/targets/codegen/patches/removeCodegenAppLevelCode.test.js +75 -0
  62. package/lib/src/targets/codegen/patches/removeCodegenAppLevelCode.test.js.map +1 -0
  63. package/lib/src/targets/commonjs.d.ts +9 -0
  64. package/lib/src/targets/commonjs.js +19 -0
  65. package/lib/src/targets/commonjs.js.map +1 -0
  66. package/lib/src/targets/custom.d.ts +9 -0
  67. package/lib/src/targets/custom.js +30 -0
  68. package/lib/src/targets/custom.js.map +1 -0
  69. package/lib/src/targets/module.d.ts +9 -0
  70. package/lib/src/targets/module.js +19 -0
  71. package/lib/src/targets/module.js.map +1 -0
  72. package/lib/src/targets/typescript.d.ts +12 -0
  73. package/lib/src/targets/typescript.js +387 -0
  74. package/lib/src/targets/typescript.js.map +1 -0
  75. package/lib/src/types.d.ts +24 -0
  76. package/lib/src/types.js +2 -0
  77. package/lib/src/types.js.map +1 -0
  78. package/lib/src/utils/androidAssemble.d.ts +8 -0
  79. package/lib/src/utils/androidAssemble.js +17 -0
  80. package/lib/src/utils/androidAssemble.js.map +1 -0
  81. package/lib/src/utils/compile.d.ts +16 -0
  82. package/lib/src/utils/compile.js +211 -0
  83. package/lib/src/utils/compile.js.map +1 -0
  84. package/lib/src/utils/isCodegenSpec.d.ts +1 -0
  85. package/lib/src/utils/isCodegenSpec.js +14 -0
  86. package/lib/src/utils/isCodegenSpec.js.map +1 -0
  87. package/lib/src/utils/isGitDirty.d.ts +1 -0
  88. package/lib/src/utils/isGitDirty.js +14 -0
  89. package/lib/src/utils/isGitDirty.js.map +1 -0
  90. package/lib/src/utils/loadConfig.d.ts +4 -0
  91. package/lib/src/utils/loadConfig.js +59 -0
  92. package/lib/src/utils/loadConfig.js.map +1 -0
  93. package/lib/src/utils/logger.d.ts +10 -0
  94. package/lib/src/utils/logger.js +30 -0
  95. package/lib/src/utils/logger.js.map +1 -0
  96. package/lib/src/utils/prompts.d.ts +3 -0
  97. package/lib/src/utils/prompts.js +10 -0
  98. package/lib/src/utils/prompts.js.map +1 -0
  99. package/lib/src/utils/resolveModuleSpecifier.d.ts +21 -0
  100. package/lib/src/utils/resolveModuleSpecifier.js +57 -0
  101. package/lib/src/utils/resolveModuleSpecifier.js.map +1 -0
  102. package/lib/src/utils/spawn.d.ts +2 -0
  103. package/lib/src/utils/spawn.js +41 -0
  104. package/lib/src/utils/spawn.js.map +1 -0
  105. package/lib/src/utils/updateSourceMap.d.ts +11 -0
  106. package/lib/src/utils/updateSourceMap.js +56 -0
  107. package/lib/src/utils/updateSourceMap.js.map +1 -0
  108. package/lib/src/utils/workerize.d.ts +15 -0
  109. package/lib/src/utils/workerize.js +75 -0
  110. package/lib/src/utils/workerize.js.map +1 -0
  111. package/package.json +49 -42
  112. package/babel-config.js +0 -55
  113. package/babel-preset.js +0 -71
  114. package/lib/__fixtures__/project/MyNativeComponent.js +0 -8
  115. package/lib/__fixtures__/project/MyNativeComponent.js.map +0 -1
  116. package/lib/__fixtures__/project/NativeMyLib.js +0 -2
  117. package/lib/__fixtures__/project/NativeMyLib.js.map +0 -1
  118. package/lib/__fixtures__/project/code/$exports-input.js +0 -122
  119. package/lib/__fixtures__/project/code/$exports-input.js.map +0 -1
  120. package/lib/__fixtures__/project/code/$exports-output.js +0 -122
  121. package/lib/__fixtures__/project/code/$exports-output.js.map +0 -1
  122. package/lib/__fixtures__/project/code/$imports-input.js +0 -24
  123. package/lib/__fixtures__/project/code/$imports-input.js.map +0 -1
  124. package/lib/__fixtures__/project/code/$imports-output.js +0 -20
  125. package/lib/__fixtures__/project/code/$imports-output.js.map +0 -1
  126. package/lib/__fixtures__/project/code/MyNativeComponent.js +0 -8
  127. package/lib/__fixtures__/project/code/MyNativeComponent.js.map +0 -1
  128. package/lib/__fixtures__/project/code/NativeMyLib.js +0 -2
  129. package/lib/__fixtures__/project/code/NativeMyLib.js.map +0 -1
  130. package/lib/__fixtures__/project/code/a.js +0 -2
  131. package/lib/__fixtures__/project/code/a.js.map +0 -1
  132. package/lib/__fixtures__/project/code/b.js +0 -2
  133. package/lib/__fixtures__/project/code/b.js.map +0 -1
  134. package/lib/__fixtures__/project/code/e.story.js +0 -2
  135. package/lib/__fixtures__/project/code/e.story.js.map +0 -1
  136. package/lib/__fixtures__/project/f.js +0 -2
  137. package/lib/__fixtures__/project/f.js.map +0 -1
  138. package/lib/__fixtures__/project/index.js +0 -2
  139. package/lib/__fixtures__/project/index.js.map +0 -1
  140. package/lib/__tests__/babel.test.js +0 -28
  141. package/lib/__tests__/babel.test.js.map +0 -1
  142. package/lib/__tests__/init.test.js +0 -93
  143. package/lib/__tests__/init.test.js.map +0 -1
  144. package/lib/babel.js +0 -92
  145. package/lib/babel.js.map +0 -1
  146. package/lib/build.js +0 -142
  147. package/lib/build.js.map +0 -1
  148. package/lib/index.js +0 -16
  149. package/lib/index.js.map +0 -1
  150. package/lib/init.js +0 -371
  151. package/lib/init.js.map +0 -1
  152. package/lib/schema.js +0 -49
  153. package/lib/schema.js.map +0 -1
  154. package/lib/targets/codegen/index.js +0 -60
  155. package/lib/targets/codegen/index.js.map +0 -1
  156. package/lib/targets/codegen/patches/patchCodegenAndroidPackage.js +0 -74
  157. package/lib/targets/codegen/patches/patchCodegenAndroidPackage.js.map +0 -1
  158. package/lib/targets/codegen/patches/patchCodegenAndroidPackage.test.js +0 -106
  159. package/lib/targets/codegen/patches/patchCodegenAndroidPackage.test.js.map +0 -1
  160. package/lib/targets/codegen/patches/removeCodegenAppLevelCode.js +0 -57
  161. package/lib/targets/codegen/patches/removeCodegenAppLevelCode.js.map +0 -1
  162. package/lib/targets/codegen/patches/removeCodegenAppLevelCode.test.js +0 -78
  163. package/lib/targets/codegen/patches/removeCodegenAppLevelCode.test.js.map +0 -1
  164. package/lib/targets/commonjs.js +0 -34
  165. package/lib/targets/commonjs.js.map +0 -1
  166. package/lib/targets/custom.js +0 -40
  167. package/lib/targets/custom.js.map +0 -1
  168. package/lib/targets/module.js +0 -34
  169. package/lib/targets/module.js.map +0 -1
  170. package/lib/targets/typescript.js +0 -219
  171. package/lib/targets/typescript.js.map +0 -1
  172. package/lib/types.js +0 -6
  173. package/lib/types.js.map +0 -1
  174. package/lib/utils/androidAssemble.js +0 -29
  175. package/lib/utils/androidAssemble.js.map +0 -1
  176. package/lib/utils/compile.js +0 -218
  177. package/lib/utils/compile.js.map +0 -1
  178. package/lib/utils/isCodegenSpec.js +0 -22
  179. package/lib/utils/isCodegenSpec.js.map +0 -1
  180. package/lib/utils/loadConfig.js +0 -56
  181. package/lib/utils/loadConfig.js.map +0 -1
  182. package/lib/utils/logger.js +0 -35
  183. package/lib/utils/logger.js.map +0 -1
  184. package/lib/utils/prompts.js +0 -17
  185. package/lib/utils/prompts.js.map +0 -1
  186. package/lib/utils/spawn.js +0 -48
  187. package/lib/utils/spawn.js.map +0 -1
  188. package/lib/utils/workerize.js +0 -102
  189. package/lib/utils/workerize.js.map +0 -1
@@ -0,0 +1,211 @@
1
+ import { createRequire } from 'node:module';
2
+ import path from 'node:path';
3
+ import fs from 'fs-extra';
4
+ import kleur from 'kleur';
5
+ import * as babel from '@babel/core';
6
+ import { glob } from 'glob';
7
+ import { isCodegenSpec } from "./isCodegenSpec.js";
8
+ const require = createRequire(import.meta.url);
9
+ const sourceExt = /\.([cm])?[jt]sx?$/;
10
+ export default async function compile({ root, source, output, esm = false, babelrc = false, configFile = false, exclude, modules, copyFlow, sourceMaps = true, report, jsxRuntime = 'automatic', variants, }) {
11
+ const files = await glob('**/*', {
12
+ cwd: source,
13
+ absolute: true,
14
+ nodir: true,
15
+ ignore: exclude,
16
+ });
17
+ report.info(`Compiling ${kleur.blue(String(files.length))} files in ${kleur.blue(path.relative(root, source))} with ${kleur.blue('babel')}`);
18
+ const pkg = JSON.parse(await fs.readFile(path.join(root, 'package.json'), 'utf-8'));
19
+ if (copyFlow) {
20
+ if (!Object.keys(pkg.devDependencies || {}).includes('flow-bin')) {
21
+ report.warn(`The ${kleur.blue('copyFlow')} option was specified, but couldn't find ${kleur.blue('flow-bin')} in ${kleur.blue('package.json')}.\nIf the project is using ${kleur.blue('flow')}, then make sure you have added ${kleur.blue('flow-bin')} to your ${kleur.blue('devDependencies')}, otherwise remove the ${kleur.blue('copyFlow')} option.`);
22
+ }
23
+ }
24
+ await fs.mkdirp(output);
25
+ // Imports are not rewritten to include the extension if `esm` is not enabled
26
+ // Ideally we should always treat ESM syntax as CommonJS if `esm` is not enabled
27
+ // This would maintain compatibility for legacy setups where `import`/`export` didn't require file extensions
28
+ // However NextJS has non-standard behavior and breaks if we add `type: 'commonjs'` for code with import/export
29
+ // So we skip generating `package.json` if `esm` is not enabled and `modules` is not `commonjs`
30
+ // This means that user can't use `type: 'module'` in root `package.json` without enabling `esm` for `module` target
31
+ if (esm || modules === 'commonjs') {
32
+ await fs.writeJSON(path.join(output, 'package.json'), {
33
+ type: modules === 'commonjs' ? 'commonjs' : 'module',
34
+ });
35
+ }
36
+ await Promise.all(files.map(async (filepath) => {
37
+ const outputFilename = path
38
+ .join(output, path.relative(source, filepath))
39
+ .replace(sourceExt, '.$1js');
40
+ await fs.mkdirp(path.dirname(outputFilename));
41
+ if (!sourceExt.test(filepath)) {
42
+ // Copy files which aren't source code
43
+ await fs.copy(filepath, outputFilename);
44
+ return;
45
+ }
46
+ const content = await fs.readFile(filepath, 'utf-8');
47
+ // If codegen is used in the app, then we need to preserve TypeScript source
48
+ // So we copy the file as is instead of transforming it
49
+ const codegenEnabled = 'codegenConfig' in pkg;
50
+ if (codegenEnabled && isCodegenSpec(filepath)) {
51
+ await fs.copy(filepath, path.join(output, path.relative(source, filepath)));
52
+ return;
53
+ }
54
+ const result = await babel.transformAsync(content, {
55
+ caller: {
56
+ name: 'react-native-builder-bob',
57
+ supportsStaticESM: /\.m[jt]s$/.test(filepath) || // If a file is explicitly marked as ESM, then preserve the syntax
58
+ modules === 'preserve'
59
+ ? true
60
+ : false,
61
+ rewriteImportExtensions: esm,
62
+ jsxRuntime,
63
+ codegenEnabled,
64
+ },
65
+ cwd: root,
66
+ babelrc: babelrc,
67
+ configFile: configFile,
68
+ sourceMaps,
69
+ sourceRoot: path.relative(path.dirname(outputFilename), source),
70
+ sourceFileName: path.relative(source, filepath),
71
+ filename: filepath,
72
+ ...(babelrc || configFile
73
+ ? null
74
+ : {
75
+ presets: [require.resolve('../configs/babel-preset.cjs')],
76
+ }),
77
+ });
78
+ if (result == null) {
79
+ throw new Error('Output code was null');
80
+ }
81
+ let code = result.code || '';
82
+ if (sourceMaps && result.map) {
83
+ const mapFilename = outputFilename + '.map';
84
+ code += '\n//# sourceMappingURL=' + path.basename(mapFilename);
85
+ // Don't inline the source code, it can be retrieved from the source file
86
+ result.map.sourcesContent = undefined;
87
+ await fs.writeJSON(mapFilename, result.map);
88
+ }
89
+ await fs.writeFile(outputFilename, code);
90
+ if (copyFlow) {
91
+ await fs.copy(filepath, outputFilename + '.flow');
92
+ }
93
+ }));
94
+ report.success(`Wrote files to ${kleur.blue(path.relative(root, output))}`);
95
+ const getGeneratedEntryPath = async () => {
96
+ if (pkg.source) {
97
+ for (const ext of ['.js', '.cjs', '.mjs']) {
98
+ const indexName =
99
+ // The source field may not have an extension, so we add it instead of replacing directly
100
+ path.basename(pkg.source).replace(sourceExt, '') + ext;
101
+ const potentialPath = path.join(output, path.dirname(path.relative(source, path.join(root, pkg.source))), indexName);
102
+ if (await fs.pathExists(potentialPath)) {
103
+ return path.relative(root, potentialPath);
104
+ }
105
+ }
106
+ }
107
+ return null;
108
+ };
109
+ const fields = [];
110
+ if (variants.commonjs && variants.module) {
111
+ if (modules === 'commonjs') {
112
+ fields.push({ name: 'main', value: pkg.main });
113
+ }
114
+ else {
115
+ fields.push({ name: 'module', value: pkg.module });
116
+ }
117
+ }
118
+ else {
119
+ fields.push({ name: 'main', value: pkg.main });
120
+ }
121
+ if (esm) {
122
+ if (variants.commonjs && variants.module) {
123
+ if (modules === 'commonjs') {
124
+ fields.push(typeof pkg.exports?.['.']?.require === 'string'
125
+ ? {
126
+ name: "exports['.'].require",
127
+ value: pkg.exports?.['.']?.require,
128
+ }
129
+ : {
130
+ name: "exports['.'].require.default",
131
+ value: pkg.exports?.['.']?.require?.default,
132
+ });
133
+ }
134
+ else {
135
+ fields.push(typeof pkg.exports?.['.']?.import === 'string'
136
+ ? {
137
+ name: "exports['.'].import",
138
+ value: pkg.exports?.['.']?.import,
139
+ }
140
+ : {
141
+ name: "exports['.'].import.default",
142
+ value: pkg.exports?.['.']?.import?.default,
143
+ });
144
+ }
145
+ }
146
+ else {
147
+ fields.push({
148
+ name: "exports['.'].default",
149
+ value: pkg.exports?.['.']?.default,
150
+ });
151
+ }
152
+ }
153
+ else {
154
+ if (modules === 'commonjs' && pkg.exports?.['.']?.require) {
155
+ report.warn(`The ${kleur.blue('esm')} option is disabled, but the ${kleur.blue("exports['.'].require")} field is set in ${kleur.blue('package.json')}. This is likely a mistake.`);
156
+ }
157
+ else if (modules === 'preserve' && pkg.exports?.['.']?.import) {
158
+ report.warn(`The ${kleur.blue('esm')} option is disabled, but the ${kleur.blue("exports['.'].import")} field is set in ${kleur.blue('package.json')}. This is likely a mistake.`);
159
+ }
160
+ }
161
+ const generatedEntryPath = await getGeneratedEntryPath();
162
+ if (fields.some((field) => field.value)) {
163
+ for (const { name, value } of fields) {
164
+ if (!value) {
165
+ continue;
166
+ }
167
+ if (name.startsWith('exports') && value && !/^\.\//.test(value)) {
168
+ report.error(`The ${kleur.blue(name)} field in ${kleur.blue(`package.json`)} should be a relative path starting with ${kleur.blue('./')}. Found: ${kleur.blue(value)}`);
169
+ throw new Error(`Found incorrect path in '${name}' field.`);
170
+ }
171
+ try {
172
+ require.resolve(path.join(root, value));
173
+ }
174
+ catch (e) {
175
+ if (e != null &&
176
+ typeof e === 'object' &&
177
+ 'code' in e &&
178
+ e.code === 'MODULE_NOT_FOUND') {
179
+ if (!generatedEntryPath) {
180
+ report.warn(`Failed to detect the entry point for the generated files. Make sure you have a valid ${kleur.blue('source')} field in your ${kleur.blue('package.json')}.`);
181
+ }
182
+ report.error(`The ${kleur.blue(name)} field in ${kleur.blue('package.json')} points to a non-existent file: ${kleur.blue(value)}.\nVerify the path points to the correct file under ${kleur.blue(path.relative(root, output))}${generatedEntryPath
183
+ ? ` (found ${kleur.blue(generatedEntryPath)}).`
184
+ : '.'}`);
185
+ throw new Error(`Found incorrect path in '${name}' field.`, {
186
+ cause: e,
187
+ });
188
+ }
189
+ throw e;
190
+ }
191
+ }
192
+ if (generatedEntryPath) {
193
+ if (modules === 'commonjs' &&
194
+ pkg.exports?.['.']?.import === `./${generatedEntryPath}`) {
195
+ report.warn(`The the ${kleur.blue("exports['.'].import")} field points to a CommonJS module. This is likely a mistake.`);
196
+ }
197
+ else if (modules === 'preserve' &&
198
+ pkg.exports?.['.']?.require === `./${generatedEntryPath}`) {
199
+ report.warn(`The the ${kleur.blue("exports['.'].import")} field points to a ES module. This is likely a mistake.`);
200
+ }
201
+ }
202
+ }
203
+ else {
204
+ report.warn(`No ${fields
205
+ .map((field) => kleur.blue(field.name))
206
+ .join(' or ')} field found in ${kleur.blue('package.json')}. Consider ${generatedEntryPath
207
+ ? `pointing to ${kleur.blue(generatedEntryPath)}`
208
+ : `adding ${fields.length > 1 ? 'them' : 'it'}`} so that consumers of your package can import your package.`);
209
+ }
210
+ }
211
+ //# sourceMappingURL=compile.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"compile.js","sourceRoot":"","sources":["../../../src/utils/compile.ts"],"names":[],"mappings":"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"}
@@ -0,0 +1 @@
1
+ export declare function isCodegenSpec(filepath: string): boolean;
@@ -0,0 +1,14 @@
1
+ import fs from 'fs-extra';
2
+ export function isCodegenSpec(filepath) {
3
+ const looksLikeCodgenSpec = /(?:^|[\\/])(?:(\w+)NativeComponent)\.[jt]sx?$/i.test(filepath);
4
+ if (looksLikeCodgenSpec) {
5
+ // This is used in the babel plugin so needs to be synchronous
6
+ const content = fs.readFileSync(filepath, 'utf8');
7
+ // Regex taken from https://github.com/facebook/react-native/blob/271232d85654cee32322b1c8a3a39ef647ad02e2/packages/react-native-babel-preset/src/configs/main.js#L78C24-L78C47
8
+ if (/\bcodegenNativeComponent</.test(content)) {
9
+ return true;
10
+ }
11
+ }
12
+ return false;
13
+ }
14
+ //# sourceMappingURL=isCodegenSpec.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"isCodegenSpec.js","sourceRoot":"","sources":["../../../src/utils/isCodegenSpec.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,MAAM,UAAU,CAAC;AAE1B,MAAM,UAAU,aAAa,CAAC,QAAgB;IAC5C,MAAM,mBAAmB,GACvB,gDAAgD,CAAC,IAAI,CAAC,QAAQ,CAAC,CAAC;IAElE,IAAI,mBAAmB,EAAE,CAAC;QACxB,8DAA8D;QAC9D,MAAM,OAAO,GAAG,EAAE,CAAC,YAAY,CAAC,QAAQ,EAAE,MAAM,CAAC,CAAC;QAElD,+KAA+K;QAC/K,IAAI,2BAA2B,CAAC,IAAI,CAAC,OAAO,CAAC,EAAE,CAAC;YAC9C,OAAO,IAAI,CAAC;QACd,CAAC;IACH,CAAC;IAED,OAAO,KAAK,CAAC;AACf,CAAC"}
@@ -0,0 +1 @@
1
+ export declare const isGitDirty: (cwd?: string) => boolean;
@@ -0,0 +1,14 @@
1
+ import { sync as crossSpawnSync } from 'cross-spawn';
2
+ export const isGitDirty = (cwd = process.cwd()) => {
3
+ const result = crossSpawnSync('git', ['status', '--short'], {
4
+ cwd,
5
+ stdio: ['ignore', 'pipe', 'ignore'],
6
+ encoding: 'utf-8',
7
+ });
8
+ if (result.error || result.status !== 0) {
9
+ // Not a git repo or git not available
10
+ return false;
11
+ }
12
+ return result.stdout.length > 0;
13
+ };
14
+ //# sourceMappingURL=isGitDirty.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"isGitDirty.js","sourceRoot":"","sources":["../../../src/utils/isGitDirty.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,IAAI,IAAI,cAAc,EAAE,MAAM,aAAa,CAAC;AAErD,MAAM,CAAC,MAAM,UAAU,GAAG,CAAC,MAAc,OAAO,CAAC,GAAG,EAAE,EAAW,EAAE;IACjE,MAAM,MAAM,GAAG,cAAc,CAAC,KAAK,EAAE,CAAC,QAAQ,EAAE,SAAS,CAAC,EAAE;QAC1D,GAAG;QACH,KAAK,EAAE,CAAC,QAAQ,EAAE,MAAM,EAAE,QAAQ,CAAC;QACnC,QAAQ,EAAE,OAAO;KAClB,CAAC,CAAC;IAEH,IAAI,MAAM,CAAC,KAAK,IAAI,MAAM,CAAC,MAAM,KAAK,CAAC,EAAE,CAAC;QACxC,sCAAsC;QACtC,OAAO,KAAK,CAAC;IACf,CAAC;IAED,OAAO,MAAM,CAAC,MAAM,CAAC,MAAM,GAAG,CAAC,CAAC;AAClC,CAAC,CAAC"}
@@ -0,0 +1,4 @@
1
+ export declare const loadConfig: (root: string) => {
2
+ filepath: string;
3
+ config: unknown;
4
+ } | undefined;
@@ -0,0 +1,59 @@
1
+ import { createRequire } from 'node:module';
2
+ import { join } from 'node:path';
3
+ import pack from '../../package.json' with { type: 'json' };
4
+ const require = createRequire(import.meta.url);
5
+ const searchPlaces = [
6
+ 'bob.config.mjs',
7
+ 'bob.config.cjs',
8
+ 'bob.config.js',
9
+ 'package.json',
10
+ ];
11
+ export const loadConfig = (root) => {
12
+ for (const filename of searchPlaces) {
13
+ const result = requireConfig(root, filename);
14
+ if (filename === 'package.json' && result != null) {
15
+ if (result.content[pack.name] != null) {
16
+ return {
17
+ filepath: result.filepath,
18
+ config: result.content[pack.name],
19
+ };
20
+ }
21
+ }
22
+ if (result != null) {
23
+ const content = result.content;
24
+ if (content?.__esModule) {
25
+ return {
26
+ filepath: result.filepath,
27
+ config: content.default,
28
+ };
29
+ }
30
+ return {
31
+ filepath: result.filepath,
32
+ config: content,
33
+ };
34
+ }
35
+ }
36
+ return undefined;
37
+ };
38
+ const requireConfig = (root, filename) => {
39
+ const filepath = join(root, filename);
40
+ try {
41
+ const content = require(filepath);
42
+ return {
43
+ filepath,
44
+ content,
45
+ };
46
+ }
47
+ catch (e) {
48
+ if (typeof e === 'object' &&
49
+ e != null &&
50
+ 'code' in e &&
51
+ e.code === 'MODULE_NOT_FOUND') {
52
+ // We expect that some of the config files won't exist
53
+ // So we just return undefined in that case
54
+ return undefined;
55
+ }
56
+ throw e;
57
+ }
58
+ };
59
+ //# sourceMappingURL=loadConfig.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"loadConfig.js","sourceRoot":"","sources":["../../../src/utils/loadConfig.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,aAAa,EAAE,MAAM,aAAa,CAAC;AAC5C,OAAO,EAAE,IAAI,EAAE,MAAM,WAAW,CAAC;AACjC,OAAO,IAAI,MAAM,oBAAoB,CAAC,OAAO,IAAI,EAAE,MAAM,EAAE,CAAC;AAE5D,MAAM,OAAO,GAAG,aAAa,CAAC,MAAM,CAAC,IAAI,CAAC,GAAG,CAAC,CAAC;AAE/C,MAAM,YAAY,GAAG;IACnB,gBAAgB;IAChB,gBAAgB;IAChB,eAAe;IACf,cAAc;CACf,CAAC;AAEF,MAAM,CAAC,MAAM,UAAU,GAAG,CACxB,IAAY,EACuC,EAAE;IACrD,KAAK,MAAM,QAAQ,IAAI,YAAY,EAAE,CAAC;QACpC,MAAM,MAAM,GAAG,aAAa,CAAC,IAAI,EAAE,QAAQ,CAAC,CAAC;QAE7C,IAAI,QAAQ,KAAK,cAAc,IAAI,MAAM,IAAI,IAAI,EAAE,CAAC;YAClD,IAAI,MAAM,CAAC,OAAO,CAAC,IAAI,CAAC,IAAI,CAAC,IAAI,IAAI,EAAE,CAAC;gBACtC,OAAO;oBACL,QAAQ,EAAE,MAAM,CAAC,QAAQ;oBACzB,MAAM,EAAE,MAAM,CAAC,OAAO,CAAC,IAAI,CAAC,IAAI,CAAC;iBAClC,CAAC;YACJ,CAAC;QACH,CAAC;QAED,IAAI,MAAM,IAAI,IAAI,EAAE,CAAC;YACnB,MAAM,OAAO,GAAG,MAAM,CAAC,OAAO,CAAC;YAE/B,IAAI,OAAO,EAAE,UAAU,EAAE,CAAC;gBACxB,OAAO;oBACL,QAAQ,EAAE,MAAM,CAAC,QAAQ;oBACzB,MAAM,EAAE,OAAO,CAAC,OAAO;iBACxB,CAAC;YACJ,CAAC;YAED,OAAO;gBACL,QAAQ,EAAE,MAAM,CAAC,QAAQ;gBACzB,MAAM,EAAE,OAAO;aAChB,CAAC;QACJ,CAAC;IACH,CAAC;IAED,OAAO,SAAS,CAAC;AACnB,CAAC,CAAC;AAEF,MAAM,aAAa,GAAG,CAAC,IAAY,EAAE,QAAgB,EAAE,EAAE;IACvD,MAAM,QAAQ,GAAG,IAAI,CAAC,IAAI,EAAE,QAAQ,CAAC,CAAC;IAEtC,IAAI,CAAC;QACH,MAAM,OAAO,GAAG,OAAO,CAAC,QAAQ,CAAC,CAAC;QAElC,OAAO;YACL,QAAQ;YACR,OAAO;SACR,CAAC;IACJ,CAAC;IAAC,OAAO,CAAC,EAAE,CAAC;QACX,IACE,OAAO,CAAC,KAAK,QAAQ;YACrB,CAAC,IAAI,IAAI;YACT,MAAM,IAAI,CAAC;YACX,CAAC,CAAC,IAAI,KAAK,kBAAkB,EAC7B,CAAC;YACD,sDAAsD;YACtD,2CAA2C;YAC3C,OAAO,SAAS,CAAC;QACnB,CAAC;QAED,MAAM,CAAC,CAAC;IACV,CAAC;AACH,CAAC,CAAC"}
@@ -0,0 +1,10 @@
1
+ export declare const info: (...messages: unknown[]) => void;
2
+ export declare const warn: (...messages: unknown[]) => void;
3
+ export declare const error: (...messages: unknown[]) => void;
4
+ export declare const success: (...messages: unknown[]) => void;
5
+ export declare const grouped: (label: string) => {
6
+ info: (...messages: unknown[]) => void;
7
+ warn: (...messages: unknown[]) => void;
8
+ error: (...messages: unknown[]) => void;
9
+ success: (...messages: unknown[]) => void;
10
+ };
@@ -0,0 +1,30 @@
1
+ import kleur from 'kleur';
2
+ const logger = (type, color, group, stream = process.stdout) => (...messages) => {
3
+ if (group) {
4
+ messages.unshift(`${kleur.gray('[')}${kleur.blue(group)}${kleur.gray(']')}`);
5
+ }
6
+ const message = `${color(kleur.bold(type))} ${messages
7
+ .map((message) => {
8
+ if (typeof message === 'string') {
9
+ return message.split('\n').join(`\n `);
10
+ }
11
+ else {
12
+ return message;
13
+ }
14
+ })
15
+ .join(' ')}`;
16
+ stream.write(message + '\n');
17
+ };
18
+ export const info = logger('ℹ', kleur.blue);
19
+ export const warn = logger('⚠', kleur.yellow);
20
+ export const error = logger('✖', kleur.red, undefined, process.stderr);
21
+ export const success = logger('✔', kleur.green);
22
+ export const grouped = (label) => {
23
+ return {
24
+ info: logger('ℹ', kleur.blue, label),
25
+ warn: logger('⚠', kleur.yellow, label),
26
+ error: logger('✖', kleur.red, label, process.stderr),
27
+ success: logger('✔', kleur.green, label),
28
+ };
29
+ };
30
+ //# sourceMappingURL=logger.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"logger.js","sourceRoot":"","sources":["../../../src/utils/logger.ts"],"names":[],"mappings":"AAAA,OAAO,KAAK,MAAM,OAAO,CAAC;AAE1B,MAAM,MAAM,GACV,CACE,IAAY,EACZ,KAAkB,EAClB,KAAc,EACd,SAA6B,OAAO,CAAC,MAAM,EAC3C,EAAE,CACJ,CAAC,GAAG,QAAmB,EAAE,EAAE;IACzB,IAAI,KAAK,EAAE,CAAC;QACV,QAAQ,CAAC,OAAO,CACd,GAAG,KAAK,CAAC,IAAI,CAAC,GAAG,CAAC,GAAG,KAAK,CAAC,IAAI,CAAC,KAAK,CAAC,GAAG,KAAK,CAAC,IAAI,CAAC,GAAG,CAAC,EAAE,CAC3D,CAAC;IACJ,CAAC;IAED,MAAM,OAAO,GAAG,GAAG,KAAK,CAAC,KAAK,CAAC,IAAI,CAAC,IAAI,CAAC,CAAC,IAAI,QAAQ;SACnD,GAAG,CAAC,CAAC,OAAO,EAAE,EAAE;QACf,IAAI,OAAO,OAAO,KAAK,QAAQ,EAAE,CAAC;YAChC,OAAO,OAAO,CAAC,KAAK,CAAC,IAAI,CAAC,CAAC,IAAI,CAAC,MAAM,CAAC,CAAC;QAC1C,CAAC;aAAM,CAAC;YACN,OAAO,OAAO,CAAC;QACjB,CAAC;IACH,CAAC,CAAC;SACD,IAAI,CAAC,GAAG,CAAC,EAAE,CAAC;IAEf,MAAM,CAAC,KAAK,CAAC,OAAO,GAAG,IAAI,CAAC,CAAC;AAC/B,CAAC,CAAC;AAEJ,MAAM,CAAC,MAAM,IAAI,GAAG,MAAM,CAAC,GAAG,EAAE,KAAK,CAAC,IAAI,CAAC,CAAC;AAC5C,MAAM,CAAC,MAAM,IAAI,GAAG,MAAM,CAAC,GAAG,EAAE,KAAK,CAAC,MAAM,CAAC,CAAC;AAC9C,MAAM,CAAC,MAAM,KAAK,GAAG,MAAM,CAAC,GAAG,EAAE,KAAK,CAAC,GAAG,EAAE,SAAS,EAAE,OAAO,CAAC,MAAM,CAAC,CAAC;AACvE,MAAM,CAAC,MAAM,OAAO,GAAG,MAAM,CAAC,GAAG,EAAE,KAAK,CAAC,KAAK,CAAC,CAAC;AAEhD,MAAM,CAAC,MAAM,OAAO,GAAG,CAAC,KAAa,EAAE,EAAE;IACvC,OAAO;QACL,IAAI,EAAE,MAAM,CAAC,GAAG,EAAE,KAAK,CAAC,IAAI,EAAE,KAAK,CAAC;QACpC,IAAI,EAAE,MAAM,CAAC,GAAG,EAAE,KAAK,CAAC,MAAM,EAAE,KAAK,CAAC;QACtC,KAAK,EAAE,MAAM,CAAC,GAAG,EAAE,KAAK,CAAC,GAAG,EAAE,KAAK,EAAE,OAAO,CAAC,MAAM,CAAC;QACpD,OAAO,EAAE,MAAM,CAAC,GAAG,EAAE,KAAK,CAAC,KAAK,EAAE,KAAK,CAAC;KACzC,CAAC;AACJ,CAAC,CAAC"}
@@ -0,0 +1,3 @@
1
+ import promptsModule from 'prompts';
2
+ export default function prompts(args: promptsModule.PromptObject | promptsModule.PromptObject[], options?: promptsModule.Options): Promise<promptsModule.Answers<string>>;
3
+ export type PromptObject<T extends string = string> = promptsModule.PromptObject<T>;
@@ -0,0 +1,10 @@
1
+ import promptsModule from 'prompts';
2
+ export default async function prompts(args, options) {
3
+ return promptsModule(args, {
4
+ onCancel() {
5
+ process.exit(1);
6
+ },
7
+ ...options,
8
+ });
9
+ }
10
+ //# sourceMappingURL=prompts.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"prompts.js","sourceRoot":"","sources":["../../../src/utils/prompts.ts"],"names":[],"mappings":"AAAA,OAAO,aAAa,MAAM,SAAS,CAAC;AAEpC,MAAM,CAAC,OAAO,CAAC,KAAK,UAAU,OAAO,CACnC,IAA+D,EAC/D,OAA+B;IAE/B,OAAO,aAAa,CAAC,IAAI,EAAE;QACzB,QAAQ;YACN,OAAO,CAAC,IAAI,CAAC,CAAC,CAAC,CAAC;QAClB,CAAC;QACD,GAAG,OAAO;KACX,CAAC,CAAC;AACL,CAAC"}
@@ -0,0 +1,21 @@
1
+ export declare const SOURCE_EXTENSIONS: string[];
2
+ type Extension = {
3
+ source: string;
4
+ output: string;
5
+ };
6
+ type ExplicitExtension = {
7
+ source: string;
8
+ } & ({
9
+ output: string;
10
+ } | {
11
+ emitted: Extension[];
12
+ });
13
+ type Options = {
14
+ filepath: string;
15
+ specifier: string;
16
+ extensions: Extension[];
17
+ explicitExtensions?: ExplicitExtension[];
18
+ platforms?: string[];
19
+ };
20
+ export declare const resolveModuleSpecifier: ({ filepath, specifier, extensions, explicitExtensions, platforms, }: Options) => string;
21
+ export {};
@@ -0,0 +1,57 @@
1
+ import fs from 'node:fs';
2
+ import path from 'node:path';
3
+ const SUPPORTED_PLATFORMS = [
4
+ 'native',
5
+ 'android',
6
+ 'ios',
7
+ 'windows',
8
+ 'macos',
9
+ 'visionos',
10
+ 'web',
11
+ 'tv',
12
+ 'android.tv',
13
+ 'ios.tv',
14
+ ];
15
+ export const SOURCE_EXTENSIONS = ['ts', 'tsx', 'js', 'jsx'];
16
+ const isFile = (filename) => fs.lstatSync(filename, { throwIfNoEntry: false })?.isFile() ?? false;
17
+ const isDirectory = (filename) => fs.lstatSync(filename, { throwIfNoEntry: false })?.isDirectory() ?? false;
18
+ const getModuleExtension = (filename, extensions, platforms) => {
19
+ return extensions.find(({ source }) => isFile(`${filename}.${source}`) &&
20
+ // Keep platform-specific imports extensionless so bundlers can still pick the right file.
21
+ platforms.every((platform) => !isFile(`${filename}.${platform}.${source}`)))?.output;
22
+ };
23
+ export const resolveModuleSpecifier = ({ filepath, specifier, extensions, explicitExtensions = [], platforms = SUPPORTED_PLATFORMS, }) => {
24
+ if (!specifier.startsWith('.')) {
25
+ return specifier;
26
+ }
27
+ const filename = path.resolve(path.dirname(filepath), specifier);
28
+ const explicitExtension = explicitExtensions.find(({ source }) => filename.endsWith(`.${source}`));
29
+ if (explicitExtension) {
30
+ let output;
31
+ if ('emitted' in explicitExtension) {
32
+ // An explicit extension already opts out of bundler platform resolution,
33
+ // so rewrite to the emitted file regardless of platform-specific variants
34
+ output = getModuleExtension(filename.slice(0, -(explicitExtension.source.length + 1)), explicitExtension.emitted, []);
35
+ }
36
+ else if (isFile(filename)) {
37
+ output = explicitExtension.output;
38
+ }
39
+ if (output) {
40
+ return specifier.slice(0, -explicitExtension.source.length) + output;
41
+ }
42
+ return specifier;
43
+ }
44
+ const extension = getModuleExtension(filename, extensions, platforms);
45
+ if (extension) {
46
+ return `${specifier}.${extension}`;
47
+ }
48
+ if (isDirectory(filename)) {
49
+ const indexExtension = getModuleExtension(path.join(filename, 'index'), extensions, platforms);
50
+ if (indexExtension) {
51
+ // Directory imports need to point to the emitted index file in JS and declarations
52
+ return specifier.replace(/\/?$/, `/index.${indexExtension}`);
53
+ }
54
+ }
55
+ return specifier;
56
+ };
57
+ //# sourceMappingURL=resolveModuleSpecifier.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"resolveModuleSpecifier.js","sourceRoot":"","sources":["../../../src/utils/resolveModuleSpecifier.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,MAAM,SAAS,CAAC;AACzB,OAAO,IAAI,MAAM,WAAW,CAAC;AAE7B,MAAM,mBAAmB,GAAG;IAC1B,QAAQ;IACR,SAAS;IACT,KAAK;IACL,SAAS;IACT,OAAO;IACP,UAAU;IACV,KAAK;IACL,IAAI;IACJ,YAAY;IACZ,QAAQ;CACT,CAAC;AAEF,MAAM,CAAC,MAAM,iBAAiB,GAAG,CAAC,IAAI,EAAE,KAAK,EAAE,IAAI,EAAE,KAAK,CAAC,CAAC;AAoB5D,MAAM,MAAM,GAAG,CAAC,QAAgB,EAAW,EAAE,CAC3C,EAAE,CAAC,SAAS,CAAC,QAAQ,EAAE,EAAE,cAAc,EAAE,KAAK,EAAE,CAAC,EAAE,MAAM,EAAE,IAAI,KAAK,CAAC;AAEvE,MAAM,WAAW,GAAG,CAAC,QAAgB,EAAW,EAAE,CAChD,EAAE,CAAC,SAAS,CAAC,QAAQ,EAAE,EAAE,cAAc,EAAE,KAAK,EAAE,CAAC,EAAE,WAAW,EAAE,IAAI,KAAK,CAAC;AAE5E,MAAM,kBAAkB,GAAG,CACzB,QAAgB,EAChB,UAAuB,EACvB,SAAmB,EACnB,EAAE;IACF,OAAO,UAAU,CAAC,IAAI,CACpB,CAAC,EAAE,MAAM,EAAE,EAAE,EAAE,CACb,MAAM,CAAC,GAAG,QAAQ,IAAI,MAAM,EAAE,CAAC;QAC/B,0FAA0F;QAC1F,SAAS,CAAC,KAAK,CACb,CAAC,QAAQ,EAAE,EAAE,CAAC,CAAC,MAAM,CAAC,GAAG,QAAQ,IAAI,QAAQ,IAAI,MAAM,EAAE,CAAC,CAC3D,CACJ,EAAE,MAAM,CAAC;AACZ,CAAC,CAAC;AAEF,MAAM,CAAC,MAAM,sBAAsB,GAAG,CAAC,EACrC,QAAQ,EACR,SAAS,EACT,UAAU,EACV,kBAAkB,GAAG,EAAE,EACvB,SAAS,GAAG,mBAAmB,GACvB,EAAE,EAAE;IACZ,IAAI,CAAC,SAAS,CAAC,UAAU,CAAC,GAAG,CAAC,EAAE,CAAC;QAC/B,OAAO,SAAS,CAAC;IACnB,CAAC;IAED,MAAM,QAAQ,GAAG,IAAI,CAAC,OAAO,CAAC,IAAI,CAAC,OAAO,CAAC,QAAQ,CAAC,EAAE,SAAS,CAAC,CAAC;IACjE,MAAM,iBAAiB,GAAG,kBAAkB,CAAC,IAAI,CAAC,CAAC,EAAE,MAAM,EAAE,EAAE,EAAE,CAC/D,QAAQ,CAAC,QAAQ,CAAC,IAAI,MAAM,EAAE,CAAC,CAChC,CAAC;IAEF,IAAI,iBAAiB,EAAE,CAAC;QACtB,IAAI,MAA0B,CAAC;QAE/B,IAAI,SAAS,IAAI,iBAAiB,EAAE,CAAC;YACnC,yEAAyE;YACzE,0EAA0E;YAC1E,MAAM,GAAG,kBAAkB,CACzB,QAAQ,CAAC,KAAK,CAAC,CAAC,EAAE,CAAC,CAAC,iBAAiB,CAAC,MAAM,CAAC,MAAM,GAAG,CAAC,CAAC,CAAC,EACzD,iBAAiB,CAAC,OAAO,EACzB,EAAE,CACH,CAAC;QACJ,CAAC;aAAM,IAAI,MAAM,CAAC,QAAQ,CAAC,EAAE,CAAC;YAC5B,MAAM,GAAG,iBAAiB,CAAC,MAAM,CAAC;QACpC,CAAC;QAED,IAAI,MAAM,EAAE,CAAC;YACX,OAAO,SAAS,CAAC,KAAK,CAAC,CAAC,EAAE,CAAC,iBAAiB,CAAC,MAAM,CAAC,MAAM,CAAC,GAAG,MAAM,CAAC;QACvE,CAAC;QAED,OAAO,SAAS,CAAC;IACnB,CAAC;IAED,MAAM,SAAS,GAAG,kBAAkB,CAAC,QAAQ,EAAE,UAAU,EAAE,SAAS,CAAC,CAAC;IAEtE,IAAI,SAAS,EAAE,CAAC;QACd,OAAO,GAAG,SAAS,IAAI,SAAS,EAAE,CAAC;IACrC,CAAC;IAED,IAAI,WAAW,CAAC,QAAQ,CAAC,EAAE,CAAC;QAC1B,MAAM,cAAc,GAAG,kBAAkB,CACvC,IAAI,CAAC,IAAI,CAAC,QAAQ,EAAE,OAAO,CAAC,EAC5B,UAAU,EACV,SAAS,CACV,CAAC;QAEF,IAAI,cAAc,EAAE,CAAC;YACnB,mFAAmF;YACnF,OAAO,SAAS,CAAC,OAAO,CAAC,MAAM,EAAE,UAAU,cAAc,EAAE,CAAC,CAAC;QAC/D,CAAC;IACH,CAAC;IAED,OAAO,SAAS,CAAC;AACnB,CAAC,CAAC"}
@@ -0,0 +1,2 @@
1
+ import crossSpawn from 'cross-spawn';
2
+ export declare const spawn: (...args: Parameters<typeof crossSpawn>) => Promise<string>;
@@ -0,0 +1,41 @@
1
+ import crossSpawn from 'cross-spawn';
2
+ export const spawn = async (...args) => {
3
+ return new Promise((resolve, reject) => {
4
+ const child = crossSpawn(...args);
5
+ let stdout = '';
6
+ let stderr = '';
7
+ child.stdout?.setEncoding('utf8');
8
+ child.stdout?.on('data', (data) => {
9
+ stdout += data;
10
+ });
11
+ child.stderr?.setEncoding('utf8');
12
+ child.stderr?.on('data', (data) => {
13
+ stderr += data;
14
+ });
15
+ child.once('error', reject);
16
+ child.once('close', (code) => {
17
+ if (code === 0) {
18
+ resolve(stdout.trim());
19
+ }
20
+ else {
21
+ const error = new Error(stderr.trim() || `Command exited with code ${String(code)}`);
22
+ Object.defineProperties(error, {
23
+ stdout: {
24
+ enumerable: false,
25
+ value: stdout,
26
+ },
27
+ stderr: {
28
+ enumerable: false,
29
+ value: stderr,
30
+ },
31
+ code: {
32
+ enumerable: false,
33
+ value: code,
34
+ },
35
+ });
36
+ reject(error);
37
+ }
38
+ });
39
+ });
40
+ };
41
+ //# sourceMappingURL=spawn.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"spawn.js","sourceRoot":"","sources":["../../../src/utils/spawn.ts"],"names":[],"mappings":"AAAA,OAAO,UAAU,MAAM,aAAa,CAAC;AAErC,MAAM,CAAC,MAAM,KAAK,GAAG,KAAK,EAAE,GAAG,IAAmC,EAAE,EAAE;IACpE,OAAO,IAAI,OAAO,CAAS,CAAC,OAAO,EAAE,MAAM,EAAE,EAAE;QAC7C,MAAM,KAAK,GAAG,UAAU,CAAC,GAAG,IAAI,CAAC,CAAC;QAElC,IAAI,MAAM,GAAG,EAAE,CAAC;QAChB,IAAI,MAAM,GAAG,EAAE,CAAC;QAEhB,KAAK,CAAC,MAAM,EAAE,WAAW,CAAC,MAAM,CAAC,CAAC;QAClC,KAAK,CAAC,MAAM,EAAE,EAAE,CAAC,MAAM,EAAE,CAAC,IAAY,EAAE,EAAE;YACxC,MAAM,IAAI,IAAI,CAAC;QACjB,CAAC,CAAC,CAAC;QAEH,KAAK,CAAC,MAAM,EAAE,WAAW,CAAC,MAAM,CAAC,CAAC;QAClC,KAAK,CAAC,MAAM,EAAE,EAAE,CAAC,MAAM,EAAE,CAAC,IAAY,EAAE,EAAE;YACxC,MAAM,IAAI,IAAI,CAAC;QACjB,CAAC,CAAC,CAAC;QAEH,KAAK,CAAC,IAAI,CAAC,OAAO,EAAE,MAAM,CAAC,CAAC;QAC5B,KAAK,CAAC,IAAI,CAAC,OAAO,EAAE,CAAC,IAAI,EAAE,EAAE;YAC3B,IAAI,IAAI,KAAK,CAAC,EAAE,CAAC;gBACf,OAAO,CAAC,MAAM,CAAC,IAAI,EAAE,CAAC,CAAC;YACzB,CAAC;iBAAM,CAAC;gBACN,MAAM,KAAK,GAAG,IAAI,KAAK,CACrB,MAAM,CAAC,IAAI,EAAE,IAAI,4BAA4B,MAAM,CAAC,IAAI,CAAC,EAAE,CAC5D,CAAC;gBAEF,MAAM,CAAC,gBAAgB,CAAC,KAAK,EAAE;oBAC7B,MAAM,EAAE;wBACN,UAAU,EAAE,KAAK;wBACjB,KAAK,EAAE,MAAM;qBACd;oBACD,MAAM,EAAE;wBACN,UAAU,EAAE,KAAK;wBACjB,KAAK,EAAE,MAAM;qBACd;oBACD,IAAI,EAAE;wBACJ,UAAU,EAAE,KAAK;wBACjB,KAAK,EAAE,IAAI;qBACZ;iBACF,CAAC,CAAC;gBAEH,MAAM,CAAC,KAAK,CAAC,CAAC;YAChB,CAAC;QACH,CAAC,CAAC,CAAC;IACL,CAAC,CAAC,CAAC;AACL,CAAC,CAAC"}
@@ -0,0 +1,11 @@
1
+ import type ts from 'typescript';
2
+ export type Replacement = {
3
+ start: number;
4
+ end: number;
5
+ value: string;
6
+ };
7
+ export declare const updateSourceMap: ({ filepath, replacements, sourceFile, }: {
8
+ filepath: string;
9
+ replacements: Replacement[];
10
+ sourceFile: ts.SourceFile;
11
+ }) => Promise<void>;
@@ -0,0 +1,56 @@
1
+ import { decode, encode } from '@jridgewell/sourcemap-codec';
2
+ import { type } from 'arktype';
3
+ import fs from 'fs-extra';
4
+ const sourceMap = type({
5
+ version: 'number',
6
+ file: 'string?',
7
+ sourceRoot: 'string?',
8
+ sources: 'string[]',
9
+ names: 'string[]?',
10
+ mappings: 'string',
11
+ sourcesContent: 'string[]?',
12
+ }).onDeepUndeclaredKey('ignore');
13
+ export const updateSourceMap = async ({ filepath, replacements, sourceFile, }) => {
14
+ const map = sourceMap.assert(await fs.readJSON(filepath));
15
+ const lines = decode(map.mappings);
16
+ let changed = false;
17
+ // Sort replacements in reverse order
18
+ // We apply replacements from the end, so earlier offsets stay valid
19
+ // So we won't have to keep track of changes as we go
20
+ const sortedReplacements = [...replacements].sort((a, b) => b.start - a.start);
21
+ for (const replacement of sortedReplacements) {
22
+ // Get line and column of the replacements from the absolute character offsets
23
+ const start = sourceFile.getLineAndCharacterOfPosition(replacement.start);
24
+ const end = sourceFile.getLineAndCharacterOfPosition(replacement.end);
25
+ // We add file extensions which only affect single lines
26
+ // So we don't handle multi-line replacements to avoid complexity
27
+ if (start.line !== end.line) {
28
+ throw new Error('Source map replacement spanning multiple lines is not supported.');
29
+ }
30
+ // Get the amount of characters added or removed by the replacement
31
+ // e.g. `./foo` -> `./foo.js` adds 3 characters, so delta is 3
32
+ const delta = replacement.value.length - (replacement.end - replacement.start);
33
+ if (delta === 0) {
34
+ continue;
35
+ }
36
+ const segments = lines[start.line];
37
+ if (segments) {
38
+ for (const segment of segments) {
39
+ // If a mapping points to text at or after the end of the replaced import string,
40
+ // move that mapping by the same number of characters the replacement added or removed
41
+ if (segment[0] >= end.character) {
42
+ segment[0] += delta;
43
+ changed = true;
44
+ }
45
+ }
46
+ }
47
+ }
48
+ if (!changed) {
49
+ return;
50
+ }
51
+ await fs.writeJSON(filepath, {
52
+ ...map,
53
+ mappings: encode(lines),
54
+ });
55
+ };
56
+ //# sourceMappingURL=updateSourceMap.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"updateSourceMap.js","sourceRoot":"","sources":["../../../src/utils/updateSourceMap.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,MAAM,EAAE,MAAM,EAAE,MAAM,6BAA6B,CAAC;AAC7D,OAAO,EAAE,IAAI,EAAE,MAAM,SAAS,CAAC;AAC/B,OAAO,EAAE,MAAM,UAAU,CAAC;AAS1B,MAAM,SAAS,GAAG,IAAI,CAAC;IACrB,OAAO,EAAE,QAAQ;IACjB,IAAI,EAAE,SAAS;IACf,UAAU,EAAE,SAAS;IACrB,OAAO,EAAE,UAAU;IACnB,KAAK,EAAE,WAAW;IAClB,QAAQ,EAAE,QAAQ;IAClB,cAAc,EAAE,WAAW;CAC5B,CAAC,CAAC,mBAAmB,CAAC,QAAQ,CAAC,CAAC;AAEjC,MAAM,CAAC,MAAM,eAAe,GAAG,KAAK,EAAE,EACpC,QAAQ,EACR,YAAY,EACZ,UAAU,GAKX,EAAE,EAAE;IACH,MAAM,GAAG,GAAG,SAAS,CAAC,MAAM,CAAC,MAAM,EAAE,CAAC,QAAQ,CAAC,QAAQ,CAAC,CAAC,CAAC;IAC1D,MAAM,KAAK,GAAG,MAAM,CAAC,GAAG,CAAC,QAAQ,CAAC,CAAC;IAEnC,IAAI,OAAO,GAAG,KAAK,CAAC;IAEpB,qCAAqC;IACrC,oEAAoE;IACpE,qDAAqD;IACrD,MAAM,kBAAkB,GAAG,CAAC,GAAG,YAAY,CAAC,CAAC,IAAI,CAC/C,CAAC,CAAC,EAAE,CAAC,EAAE,EAAE,CAAC,CAAC,CAAC,KAAK,GAAG,CAAC,CAAC,KAAK,CAC5B,CAAC;IAEF,KAAK,MAAM,WAAW,IAAI,kBAAkB,EAAE,CAAC;QAC7C,8EAA8E;QAC9E,MAAM,KAAK,GAAG,UAAU,CAAC,6BAA6B,CAAC,WAAW,CAAC,KAAK,CAAC,CAAC;QAC1E,MAAM,GAAG,GAAG,UAAU,CAAC,6BAA6B,CAAC,WAAW,CAAC,GAAG,CAAC,CAAC;QAEtE,wDAAwD;QACxD,iEAAiE;QACjE,IAAI,KAAK,CAAC,IAAI,KAAK,GAAG,CAAC,IAAI,EAAE,CAAC;YAC5B,MAAM,IAAI,KAAK,CACb,kEAAkE,CACnE,CAAC;QACJ,CAAC;QAED,mEAAmE;QACnE,8DAA8D;QAC9D,MAAM,KAAK,GACT,WAAW,CAAC,KAAK,CAAC,MAAM,GAAG,CAAC,WAAW,CAAC,GAAG,GAAG,WAAW,CAAC,KAAK,CAAC,CAAC;QAEnE,IAAI,KAAK,KAAK,CAAC,EAAE,CAAC;YAChB,SAAS;QACX,CAAC;QAED,MAAM,QAAQ,GAAG,KAAK,CAAC,KAAK,CAAC,IAAI,CAAC,CAAC;QAEnC,IAAI,QAAQ,EAAE,CAAC;YACb,KAAK,MAAM,OAAO,IAAI,QAAQ,EAAE,CAAC;gBAC/B,iFAAiF;gBACjF,sFAAsF;gBACtF,IAAI,OAAO,CAAC,CAAC,CAAC,IAAI,GAAG,CAAC,SAAS,EAAE,CAAC;oBAChC,OAAO,CAAC,CAAC,CAAC,IAAI,KAAK,CAAC;oBACpB,OAAO,GAAG,IAAI,CAAC;gBACjB,CAAC;YACH,CAAC;QACH,CAAC;IACH,CAAC;IAED,IAAI,CAAC,OAAO,EAAE,CAAC;QACb,OAAO;IACT,CAAC;IAED,MAAM,EAAE,CAAC,SAAS,CAAC,QAAQ,EAAE;QAC3B,GAAG,GAAG;QACN,QAAQ,EAAE,MAAM,CAAC,KAAK,CAAC;KACxB,CAAC,CAAC;AACL,CAAC,CAAC"}