react-native-builder-bob 0.26.0 → 0.28.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.
@@ -0,0 +1,63 @@
1
+ /* eslint-disable import/no-commonjs */
2
+
3
+ const path = require('path');
4
+
5
+ /**
6
+ * Get Babel configuration for the example project.
7
+ * This sets up appropriate presets and plugins for the library.
8
+ * It also aliases the library to the source directory.
9
+ *
10
+ * @param {import('@babel/core').TransformOptions} defaultConfig Default Babel configuration
11
+ * @param {object} options Options to customize the configuration
12
+ * @param {string} options.root Root directory of the monorepo
13
+ * @param {object} options.pkg Content of package.json of the library
14
+ * @returns {import('@babel/core').TransformOptions} Babel configuration
15
+ */
16
+ const getConfig = (defaultConfig, { root, pkg }) => {
17
+ let src;
18
+
19
+ if (pkg.source.includes('/')) {
20
+ const segments = pkg.source.split('/');
21
+
22
+ if (segments[0] === '.') {
23
+ segments.shift();
24
+ }
25
+
26
+ src = segments[0];
27
+ }
28
+
29
+ if (src == null) {
30
+ throw new Error(
31
+ "Couldn't determine the source directory. Does the 'source' field in your 'package.json' point to a file within a directory?"
32
+ );
33
+ }
34
+
35
+ return {
36
+ overrides: [
37
+ {
38
+ ...defaultConfig,
39
+ exclude: path.join(root, src),
40
+ },
41
+ {
42
+ include: path.join(root, src),
43
+ presets: [[require.resolve('./babel-preset'), { modules: 'commonjs' }]],
44
+ },
45
+ {
46
+ exclude: /\/node_modules\//,
47
+ plugins: [
48
+ [
49
+ require.resolve('babel-plugin-module-resolver'),
50
+ {
51
+ extensions: ['.tsx', '.ts', '.jsx', '.js', '.json'],
52
+ alias: {
53
+ [pkg.name]: path.join(root, pkg.source),
54
+ },
55
+ },
56
+ ],
57
+ ],
58
+ },
59
+ ],
60
+ };
61
+ };
62
+
63
+ exports.getConfig = getConfig;
package/babel-preset.js CHANGED
@@ -44,6 +44,7 @@ module.exports = function (api, options, cwd) {
44
44
  require.resolve('@babel/preset-flow'),
45
45
  ],
46
46
  plugins: [
47
+ require.resolve('@babel/plugin-transform-strict-mode'),
47
48
  [
48
49
  require.resolve('./lib/babel'),
49
50
  {
@@ -31,12 +31,6 @@ async function build({
31
31
  const config = _json.default.parse(await _fsExtra.default.readFile(tsconfig, 'utf-8'));
32
32
  if (config.compilerOptions) {
33
33
  const conflicts = [];
34
- if (config.compilerOptions.noEmit !== undefined) {
35
- conflicts.push('compilerOptions.noEmit');
36
- }
37
- if (config.compilerOptions.emitDeclarationOnly !== undefined) {
38
- conflicts.push('compilerOptions.emitDeclarationOnly');
39
- }
40
34
  if (config.compilerOptions.declarationDir) {
41
35
  conflicts.push('compilerOptions.declarationDir');
42
36
  }
@@ -95,7 +89,7 @@ async function build({
95
89
  } catch (e) {
96
90
  // Ignore
97
91
  }
98
- const result = _crossSpawn.default.sync(tsc, ['--pretty', '--declaration', '--declarationMap', '--emitDeclarationOnly', '--project', project, '--outDir', output], {
92
+ const result = _crossSpawn.default.sync(tsc, ['--pretty', '--declaration', '--declarationMap', '--noEmit', 'false', '--emitDeclarationOnly', '--project', project, '--outDir', output], {
99
93
  stdio: 'inherit',
100
94
  cwd: root
101
95
  });
@@ -1 +1 @@
1
- {"version":3,"file":"typescript.js","names":["_kleur","_interopRequireDefault","require","_path","_fsExtra","_which","_crossSpawn","_del","_json","_os","obj","__esModule","default","build","source","root","output","report","options","info","kleur","blue","path","relative","del","project","tsconfig","join","fs","pathExists","config","JSON5","parse","readFile","compilerOptions","conflicts","noEmit","undefined","push","emitDeclarationOnly","declarationDir","outDir","length","warn","reduce","acc","curr","gray","yellow","e","Error","tsc","resolve","execpath","process","env","npm_execpath","cli","split","pop","includes","result","spawn","sync","stdio","encoding","cwd","stdout","trim","platform","endsWith","which","tsbuildinfo","replace","status","success","pkg","JSON","getGeneratedTypesPath","indexDTsName","basename","potentialPaths","dirname","potentialPath","fields","name","value","types","exports","some","field","Promise","all","map","typesPath","generatedTypesPath","error","toString","message"],"sources":["../../src/targets/typescript.ts"],"sourcesContent":["import kleur from 'kleur';\nimport path from 'path';\nimport fs from 'fs-extra';\nimport which from 'which';\nimport spawn from 'cross-spawn';\nimport del from 'del';\nimport JSON5 from 'json5';\nimport { platform } from 'os';\nimport type { Input } from '../types';\n\ntype Options = Input & {\n options?: { project?: string; tsc?: string };\n};\n\nexport default async function build({\n source,\n root,\n output,\n report,\n options,\n}: Options) {\n report.info(\n `Cleaning up previous build at ${kleur.blue(path.relative(root, output))}`\n );\n\n await del([output]);\n\n report.info(`Generating type definitions with ${kleur.blue('tsc')}`);\n\n const project = options?.project ? options.project : 'tsconfig.json';\n const tsconfig = path.join(root, project);\n\n try {\n if (await fs.pathExists(tsconfig)) {\n try {\n const config = JSON5.parse(await fs.readFile(tsconfig, 'utf-8'));\n\n if (config.compilerOptions) {\n const conflicts: string[] = [];\n\n if (config.compilerOptions.noEmit !== undefined) {\n conflicts.push('compilerOptions.noEmit');\n }\n\n if (config.compilerOptions.emitDeclarationOnly !== undefined) {\n conflicts.push('compilerOptions.emitDeclarationOnly');\n }\n\n if (config.compilerOptions.declarationDir) {\n conflicts.push('compilerOptions.declarationDir');\n }\n\n if (\n config.compilerOptions.outDir &&\n path.join(root, config.compilerOptions.outDir) !== output\n ) {\n conflicts.push('compilerOptions.outDir');\n }\n\n if (conflicts.length) {\n report.warn(\n `Found following options in the config file which can conflict with the CLI options. Please remove them from ${kleur.blue(\n project\n )}:${conflicts.reduce(\n (acc, curr) =>\n acc + `\\n${kleur.gray('-')} ${kleur.yellow(curr)}`,\n ''\n )}`\n );\n }\n }\n } catch (e) {\n report.warn(\n `Couldn't parse '${project}'. There might be validation errors.`\n );\n }\n } else {\n throw new Error(\n `Couldn't find a ${kleur.blue('tsconfig.json')} in the project root.`\n );\n }\n\n let tsc;\n\n if (options?.tsc) {\n tsc = path.resolve(root, options.tsc);\n\n if (!(await fs.pathExists(tsc))) {\n throw new Error(\n `The ${kleur.blue(\n 'tsc'\n )} binary doesn't seem to be installed at ${kleur.blue(\n tsc\n )}. Please specify the correct path in options or remove it to use the workspace's version.`\n );\n }\n } else {\n const execpath = process.env.npm_execpath;\n const cli = execpath?.split('/').pop()?.includes('yarn') ? 'yarn' : 'npm';\n\n if (cli === 'yarn') {\n const result = spawn.sync('yarn', ['bin', 'tsc'], {\n stdio: 'pipe',\n encoding: 'utf-8',\n cwd: root,\n });\n\n tsc = result.stdout.trim();\n } else {\n tsc = path.resolve(root, 'node_modules', '.bin', 'tsc');\n }\n\n if (platform() === 'win32' && !tsc.endsWith('.cmd')) {\n tsc += '.cmd';\n }\n }\n\n if (!(await fs.pathExists(tsc))) {\n try {\n tsc = await which('tsc');\n\n if (await fs.pathExists(tsc)) {\n report.warn(\n `Failed to locate ${kleur.blue(\n 'tsc'\n )} in the workspace. Falling back to the binary found in ${kleur.blue(\n 'PATH'\n )} at ${kleur.blue(tsc)}. Consider adding ${kleur.blue(\n 'typescript'\n )} to your ${kleur.blue(\n 'devDependencies'\n )} or specifying the ${kleur.blue(\n 'tsc'\n )} option for the typescript target.`\n );\n }\n } catch (e) {\n // Ignore\n }\n }\n\n if (tsc == null || !(await fs.pathExists(tsc))) {\n throw new Error(\n `The ${kleur.blue(\n 'tsc'\n )} binary doesn't seem to be installed under ${kleur.blue(\n 'node_modules'\n )} or present in $PATH. Make sure you have added ${kleur.blue(\n 'typescript'\n )} to your ${kleur.blue('devDependencies')} or specify the ${kleur.blue(\n 'tsc'\n )} option for typescript.`\n );\n }\n\n const tsbuildinfo = path.join(\n output,\n project.replace(/\\.json$/, '.tsbuildinfo')\n );\n\n try {\n await del([tsbuildinfo]);\n } catch (e) {\n // Ignore\n }\n\n const result = spawn.sync(\n tsc,\n [\n '--pretty',\n '--declaration',\n '--declarationMap',\n '--emitDeclarationOnly',\n '--project',\n project,\n '--outDir',\n output,\n ],\n {\n stdio: 'inherit',\n cwd: root,\n }\n );\n\n if (result.status === 0) {\n await del([tsbuildinfo]);\n\n report.success(\n `Wrote definition files to ${kleur.blue(path.relative(root, output))}`\n );\n\n const pkg = JSON.parse(\n await fs.readFile(path.join(root, 'package.json'), 'utf-8')\n );\n\n const getGeneratedTypesPath = async () => {\n if (pkg.source) {\n const indexDTsName =\n path.basename(pkg.source).replace(/\\.(jsx?|tsx?)$/, '') + '.d.ts';\n\n const potentialPaths = [\n path.join(output, path.dirname(pkg.source), indexDTsName),\n path.join(\n output,\n path.dirname(path.relative(source, path.join(root, pkg.source))),\n indexDTsName\n ),\n ];\n\n for (const potentialPath of potentialPaths) {\n if (await fs.pathExists(potentialPath)) {\n return path.relative(root, potentialPath);\n }\n }\n }\n\n return null;\n };\n\n const fields = [\n { name: 'types', value: pkg.types },\n { name: \"exports['.'].types\", value: pkg.exports?.['.']?.types },\n ];\n\n if (fields.some((field) => field.value)) {\n await Promise.all(\n fields.map(async ({ name, value }) => {\n if (!value) {\n return;\n }\n\n const typesPath = path.join(root, value);\n\n if (!(await fs.pathExists(typesPath))) {\n const generatedTypesPath = await getGeneratedTypesPath();\n\n if (!generatedTypesPath) {\n report.warn(\n `Failed to detect the entry point for the generated types. Make sure you have a valid ${kleur.blue(\n 'source'\n )} field in your ${kleur.blue('package.json')}.`\n );\n }\n\n report.error(\n `The ${kleur.blue(name)} field in ${kleur.blue(\n 'package.json'\n )} points to a non-existent file: ${kleur.blue(\n value\n )}.\\nVerify the path points to the correct file under ${kleur.blue(\n path.relative(root, output)\n )}${\n generatedTypesPath\n ? ` (found ${kleur.blue(generatedTypesPath)}).`\n : '.'\n }`\n );\n\n throw new Error(`Found incorrect path in '${name}' field.`);\n }\n })\n );\n } else {\n const generatedTypesPath = await getGeneratedTypesPath();\n\n report.warn(\n `No ${kleur.blue(\n fields.map((field) => field.name).join(' or ')\n )} field found in ${kleur.blue('package.json')}.\\nConsider ${\n generatedTypesPath\n ? `pointing it to ${kleur.blue(generatedTypesPath)}`\n : 'adding it'\n } so that consumers of your package can use the types.`\n );\n }\n } else {\n throw new Error('Failed to build definition files.');\n }\n } catch (e: unknown) {\n if (e != null && typeof e === 'object') {\n if ('stdout' in e && e.stdout != null) {\n report.error(\n `Errors found when building definition files:\\n${e.stdout.toString()}`\n );\n } else if ('message' in e && typeof e.message === 'string') {\n report.error(e.message);\n } else {\n throw e;\n }\n } else {\n throw e;\n }\n\n throw new Error('Failed to build definition files.');\n }\n}\n"],"mappings":"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"}
1
+ {"version":3,"file":"typescript.js","names":["_kleur","_interopRequireDefault","require","_path","_fsExtra","_which","_crossSpawn","_del","_json","_os","obj","__esModule","default","build","source","root","output","report","options","info","kleur","blue","path","relative","del","project","tsconfig","join","fs","pathExists","config","JSON5","parse","readFile","compilerOptions","conflicts","declarationDir","push","outDir","length","warn","reduce","acc","curr","gray","yellow","e","Error","tsc","resolve","execpath","process","env","npm_execpath","cli","split","pop","includes","result","spawn","sync","stdio","encoding","cwd","stdout","trim","platform","endsWith","which","tsbuildinfo","replace","status","success","pkg","JSON","getGeneratedTypesPath","indexDTsName","basename","potentialPaths","dirname","potentialPath","fields","name","value","types","exports","some","field","Promise","all","map","typesPath","generatedTypesPath","error","toString","message"],"sources":["../../src/targets/typescript.ts"],"sourcesContent":["import kleur from 'kleur';\nimport path from 'path';\nimport fs from 'fs-extra';\nimport which from 'which';\nimport spawn from 'cross-spawn';\nimport del from 'del';\nimport JSON5 from 'json5';\nimport { platform } from 'os';\nimport type { Input } from '../types';\n\ntype Options = Input & {\n options?: { project?: string; tsc?: string };\n};\n\nexport default async function build({\n source,\n root,\n output,\n report,\n options,\n}: Options) {\n report.info(\n `Cleaning up previous build at ${kleur.blue(path.relative(root, output))}`\n );\n\n await del([output]);\n\n report.info(`Generating type definitions with ${kleur.blue('tsc')}`);\n\n const project = options?.project ? options.project : 'tsconfig.json';\n const tsconfig = path.join(root, project);\n\n try {\n if (await fs.pathExists(tsconfig)) {\n try {\n const config = JSON5.parse(await fs.readFile(tsconfig, 'utf-8'));\n\n if (config.compilerOptions) {\n const conflicts: string[] = [];\n\n if (config.compilerOptions.declarationDir) {\n conflicts.push('compilerOptions.declarationDir');\n }\n\n if (\n config.compilerOptions.outDir &&\n path.join(root, config.compilerOptions.outDir) !== output\n ) {\n conflicts.push('compilerOptions.outDir');\n }\n\n if (conflicts.length) {\n report.warn(\n `Found following options in the config file which can conflict with the CLI options. Please remove them from ${kleur.blue(\n project\n )}:${conflicts.reduce(\n (acc, curr) =>\n acc + `\\n${kleur.gray('-')} ${kleur.yellow(curr)}`,\n ''\n )}`\n );\n }\n }\n } catch (e) {\n report.warn(\n `Couldn't parse '${project}'. There might be validation errors.`\n );\n }\n } else {\n throw new Error(\n `Couldn't find a ${kleur.blue('tsconfig.json')} in the project root.`\n );\n }\n\n let tsc;\n\n if (options?.tsc) {\n tsc = path.resolve(root, options.tsc);\n\n if (!(await fs.pathExists(tsc))) {\n throw new Error(\n `The ${kleur.blue(\n 'tsc'\n )} binary doesn't seem to be installed at ${kleur.blue(\n tsc\n )}. Please specify the correct path in options or remove it to use the workspace's version.`\n );\n }\n } else {\n const execpath = process.env.npm_execpath;\n const cli = execpath?.split('/').pop()?.includes('yarn') ? 'yarn' : 'npm';\n\n if (cli === 'yarn') {\n const result = spawn.sync('yarn', ['bin', 'tsc'], {\n stdio: 'pipe',\n encoding: 'utf-8',\n cwd: root,\n });\n\n tsc = result.stdout.trim();\n } else {\n tsc = path.resolve(root, 'node_modules', '.bin', 'tsc');\n }\n\n if (platform() === 'win32' && !tsc.endsWith('.cmd')) {\n tsc += '.cmd';\n }\n }\n\n if (!(await fs.pathExists(tsc))) {\n try {\n tsc = await which('tsc');\n\n if (await fs.pathExists(tsc)) {\n report.warn(\n `Failed to locate ${kleur.blue(\n 'tsc'\n )} in the workspace. Falling back to the binary found in ${kleur.blue(\n 'PATH'\n )} at ${kleur.blue(tsc)}. Consider adding ${kleur.blue(\n 'typescript'\n )} to your ${kleur.blue(\n 'devDependencies'\n )} or specifying the ${kleur.blue(\n 'tsc'\n )} option for the typescript target.`\n );\n }\n } catch (e) {\n // Ignore\n }\n }\n\n if (tsc == null || !(await fs.pathExists(tsc))) {\n throw new Error(\n `The ${kleur.blue(\n 'tsc'\n )} binary doesn't seem to be installed under ${kleur.blue(\n 'node_modules'\n )} or present in $PATH. Make sure you have added ${kleur.blue(\n 'typescript'\n )} to your ${kleur.blue('devDependencies')} or specify the ${kleur.blue(\n 'tsc'\n )} option for typescript.`\n );\n }\n\n const tsbuildinfo = path.join(\n output,\n project.replace(/\\.json$/, '.tsbuildinfo')\n );\n\n try {\n await del([tsbuildinfo]);\n } catch (e) {\n // Ignore\n }\n\n const result = spawn.sync(\n tsc,\n [\n '--pretty',\n '--declaration',\n '--declarationMap',\n '--noEmit',\n 'false',\n '--emitDeclarationOnly',\n '--project',\n project,\n '--outDir',\n output,\n ],\n {\n stdio: 'inherit',\n cwd: root,\n }\n );\n\n if (result.status === 0) {\n await del([tsbuildinfo]);\n\n report.success(\n `Wrote definition files to ${kleur.blue(path.relative(root, output))}`\n );\n\n const pkg = JSON.parse(\n await fs.readFile(path.join(root, 'package.json'), 'utf-8')\n );\n\n const getGeneratedTypesPath = async () => {\n if (pkg.source) {\n const indexDTsName =\n path.basename(pkg.source).replace(/\\.(jsx?|tsx?)$/, '') + '.d.ts';\n\n const potentialPaths = [\n path.join(output, path.dirname(pkg.source), indexDTsName),\n path.join(\n output,\n path.dirname(path.relative(source, path.join(root, pkg.source))),\n indexDTsName\n ),\n ];\n\n for (const potentialPath of potentialPaths) {\n if (await fs.pathExists(potentialPath)) {\n return path.relative(root, potentialPath);\n }\n }\n }\n\n return null;\n };\n\n const fields = [\n { name: 'types', value: pkg.types },\n { name: \"exports['.'].types\", value: pkg.exports?.['.']?.types },\n ];\n\n if (fields.some((field) => field.value)) {\n await Promise.all(\n fields.map(async ({ name, value }) => {\n if (!value) {\n return;\n }\n\n const typesPath = path.join(root, value);\n\n if (!(await fs.pathExists(typesPath))) {\n const generatedTypesPath = await getGeneratedTypesPath();\n\n if (!generatedTypesPath) {\n report.warn(\n `Failed to detect the entry point for the generated types. Make sure you have a valid ${kleur.blue(\n 'source'\n )} field in your ${kleur.blue('package.json')}.`\n );\n }\n\n report.error(\n `The ${kleur.blue(name)} field in ${kleur.blue(\n 'package.json'\n )} points to a non-existent file: ${kleur.blue(\n value\n )}.\\nVerify the path points to the correct file under ${kleur.blue(\n path.relative(root, output)\n )}${\n generatedTypesPath\n ? ` (found ${kleur.blue(generatedTypesPath)}).`\n : '.'\n }`\n );\n\n throw new Error(`Found incorrect path in '${name}' field.`);\n }\n })\n );\n } else {\n const generatedTypesPath = await getGeneratedTypesPath();\n\n report.warn(\n `No ${kleur.blue(\n fields.map((field) => field.name).join(' or ')\n )} field found in ${kleur.blue('package.json')}.\\nConsider ${\n generatedTypesPath\n ? `pointing it to ${kleur.blue(generatedTypesPath)}`\n : 'adding it'\n } so that consumers of your package can use the types.`\n );\n }\n } else {\n throw new Error('Failed to build definition files.');\n }\n } catch (e: unknown) {\n if (e != null && typeof e === 'object') {\n if ('stdout' in e && e.stdout != null) {\n report.error(\n `Errors found when building definition files:\\n${e.stdout.toString()}`\n );\n } else if ('message' in e && typeof e.message === 'string') {\n report.error(e.message);\n } else {\n throw e;\n }\n } else {\n throw e;\n }\n\n throw new Error('Failed to build definition files.');\n }\n}\n"],"mappings":"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"}
@@ -12,6 +12,7 @@ var _glob = _interopRequireDefault(require("glob"));
12
12
  function _getRequireWildcardCache(nodeInterop) { if (typeof WeakMap !== "function") return null; var cacheBabelInterop = new WeakMap(); var cacheNodeInterop = new WeakMap(); return (_getRequireWildcardCache = function (nodeInterop) { return nodeInterop ? cacheNodeInterop : cacheBabelInterop; })(nodeInterop); }
13
13
  function _interopRequireWildcard(obj, nodeInterop) { if (!nodeInterop && obj && obj.__esModule) { return obj; } if (obj === null || typeof obj !== "object" && typeof obj !== "function") { return { default: obj }; } var cache = _getRequireWildcardCache(nodeInterop); if (cache && cache.has(obj)) { return cache.get(obj); } var newObj = {}; var hasPropertyDescriptor = Object.defineProperty && Object.getOwnPropertyDescriptor; for (var key in obj) { if (key !== "default" && Object.prototype.hasOwnProperty.call(obj, key)) { var desc = hasPropertyDescriptor ? Object.getOwnPropertyDescriptor(obj, key) : null; if (desc && (desc.get || desc.set)) { Object.defineProperty(newObj, key, desc); } else { newObj[key] = obj[key]; } } } newObj.default = obj; if (cache) { cache.set(obj, newObj); } return newObj; }
14
14
  function _interopRequireDefault(obj) { return obj && obj.__esModule ? obj : { default: obj }; }
15
+ const sourceExt = /\.([cm])?[jt]sx?$/;
15
16
  async function compile({
16
17
  root,
17
18
  source,
@@ -39,16 +40,13 @@ async function compile({
39
40
  }
40
41
  }
41
42
  await _fsExtra.default.mkdirp(output);
42
- if (esm) {
43
- await _fsExtra.default.writeJSON(_path.default.join(output, 'package.json'), {
44
- type: modules === 'commonjs' ? 'commonjs' : 'module'
45
- });
46
- }
47
- const outputExtension = '.js';
43
+ await _fsExtra.default.writeJSON(_path.default.join(output, 'package.json'), {
44
+ type: modules === 'commonjs' ? 'commonjs' : 'module'
45
+ });
48
46
  await Promise.all(files.map(async filepath => {
49
- const outputFilename = _path.default.join(output, _path.default.relative(source, filepath)).replace(/\.(jsx?|tsx?)$/, outputExtension);
47
+ const outputFilename = _path.default.join(output, _path.default.relative(source, filepath)).replace(sourceExt, '.$1js');
50
48
  await _fsExtra.default.mkdirp(_path.default.dirname(outputFilename));
51
- if (!/\.(jsx?|tsx?)$/.test(filepath)) {
49
+ if (!sourceExt.test(filepath)) {
52
50
  // Copy files which aren't source code
53
51
  _fsExtra.default.copy(filepath, outputFilename);
54
52
  return;
@@ -64,7 +62,9 @@ async function compile({
64
62
  filename: filepath,
65
63
  ...(babelrc || configFile ? null : {
66
64
  presets: [[require.resolve('../../babel-preset'), {
67
- modules,
65
+ modules:
66
+ // If a file is explicitly marked as ESM, then preserve the syntax
67
+ /\.m[jt]s$/.test(filepath) ? 'preserve' : modules,
68
68
  esm
69
69
  }]]
70
70
  })
@@ -89,10 +89,14 @@ async function compile({
89
89
  report.success(`Wrote files to ${_kleur.default.blue(_path.default.relative(root, output))}`);
90
90
  const getGeneratedEntryPath = async () => {
91
91
  if (pkg.source) {
92
- const indexName = _path.default.basename(pkg.source).replace(/\.(jsx?|tsx?)$/, '') + outputExtension;
93
- const potentialPath = _path.default.join(output, _path.default.dirname(_path.default.relative(source, _path.default.join(root, pkg.source))), indexName);
94
- if (await _fsExtra.default.pathExists(potentialPath)) {
95
- return _path.default.relative(root, potentialPath);
92
+ for (const ext of ['.js', '.cjs', '.mjs']) {
93
+ const indexName =
94
+ // The source field may not have an extension, so we add it instead of replacing directly
95
+ _path.default.basename(pkg.source).replace(sourceExt, '') + ext;
96
+ const potentialPath = _path.default.join(output, _path.default.dirname(_path.default.relative(source, _path.default.join(root, pkg.source))), indexName);
97
+ if (await _fsExtra.default.pathExists(potentialPath)) {
98
+ return _path.default.relative(root, potentialPath);
99
+ }
96
100
  }
97
101
  }
98
102
  return null;
@@ -1 +1 @@
1
- {"version":3,"file":"compile.js","names":["_path","_interopRequireDefault","require","_fsExtra","_kleur","babel","_interopRequireWildcard","_glob","_getRequireWildcardCache","nodeInterop","WeakMap","cacheBabelInterop","cacheNodeInterop","obj","__esModule","default","cache","has","get","newObj","hasPropertyDescriptor","Object","defineProperty","getOwnPropertyDescriptor","key","prototype","hasOwnProperty","call","desc","set","compile","root","source","output","esm","babelrc","configFile","exclude","modules","copyFlow","sourceMaps","report","files","glob","sync","cwd","absolute","nodir","ignore","info","kleur","blue","String","length","path","relative","pkg","JSON","parse","fs","readFile","join","keys","devDependencies","includes","warn","mkdirp","writeJSON","type","outputExtension","Promise","all","map","filepath","outputFilename","replace","dirname","test","copy","content","result","transformAsync","sourceRoot","sourceFileName","filename","presets","resolve","Error","code","mapFilename","basename","sourcesContent","undefined","writeFile","success","getGeneratedEntryPath","indexName","potentialPath","pathExists","fields","name","value","main","module","push","exports","import","some","field","e","generatedEntryPath","error"],"sources":["../../src/utils/compile.ts"],"sourcesContent":["import path from 'path';\nimport fs from 'fs-extra';\nimport kleur from 'kleur';\nimport * as babel from '@babel/core';\nimport glob from 'glob';\nimport type { Input } from '../types';\n\ntype Options = Input & {\n esm?: boolean;\n babelrc?: boolean | null;\n configFile?: string | false | null;\n sourceMaps?: boolean;\n copyFlow?: boolean;\n modules: 'commonjs' | 'preserve';\n exclude: string;\n};\n\nexport default async function compile({\n root,\n source,\n output,\n esm = false,\n babelrc = false,\n configFile = false,\n exclude,\n modules,\n copyFlow,\n sourceMaps = true,\n report,\n}: Options) {\n const files = glob.sync('**/*', {\n cwd: source,\n absolute: true,\n nodir: true,\n ignore: exclude,\n });\n\n report.info(\n `Compiling ${kleur.blue(String(files.length))} files in ${kleur.blue(\n path.relative(root, source)\n )} with ${kleur.blue('babel')}`\n );\n\n const pkg = JSON.parse(\n await fs.readFile(path.join(root, 'package.json'), 'utf-8')\n );\n\n if (copyFlow) {\n if (!Object.keys(pkg.devDependencies || {}).includes('flow-bin')) {\n report.warn(\n `The ${kleur.blue(\n 'copyFlow'\n )} option was specified, but couldn't find ${kleur.blue(\n 'flow-bin'\n )} in ${kleur.blue(\n 'package.json'\n )}.\\nIf the project is using ${kleur.blue(\n 'flow'\n )}, then make sure you have added ${kleur.blue(\n 'flow-bin'\n )} to your ${kleur.blue(\n 'devDependencies'\n )}, otherwise remove the ${kleur.blue('copyFlow')} option.`\n );\n }\n }\n\n await fs.mkdirp(output);\n\n if (esm) {\n await fs.writeJSON(path.join(output, 'package.json'), {\n type: modules === 'commonjs' ? 'commonjs' : 'module',\n });\n }\n\n const outputExtension = '.js';\n\n await Promise.all(\n files.map(async (filepath) => {\n const outputFilename = path\n .join(output, path.relative(source, filepath))\n .replace(/\\.(jsx?|tsx?)$/, outputExtension);\n\n await fs.mkdirp(path.dirname(outputFilename));\n\n if (!/\\.(jsx?|tsx?)$/.test(filepath)) {\n // Copy files which aren't source code\n fs.copy(filepath, outputFilename);\n return;\n }\n\n const content = await fs.readFile(filepath, 'utf-8');\n const result = await babel.transformAsync(content, {\n cwd: root,\n babelrc: babelrc,\n configFile: configFile,\n sourceMaps,\n sourceRoot: path.relative(path.dirname(outputFilename), source),\n sourceFileName: path.relative(source, filepath),\n filename: filepath,\n ...(babelrc || configFile\n ? null\n : {\n presets: [\n [require.resolve('../../babel-preset'), { modules, esm }],\n ],\n }),\n });\n\n if (result == null) {\n throw new Error('Output code was null');\n }\n\n let code = result.code;\n\n if (sourceMaps && result.map) {\n const mapFilename = outputFilename + '.map';\n\n code += '\\n//# sourceMappingURL=' + path.basename(mapFilename);\n\n // Don't inline the source code, it can be retrieved from the source file\n result.map.sourcesContent = undefined;\n\n await fs.writeJSON(mapFilename, result.map);\n }\n\n await fs.writeFile(outputFilename, code);\n\n if (copyFlow) {\n fs.copy(filepath, outputFilename + '.flow');\n }\n })\n );\n\n report.success(`Wrote files to ${kleur.blue(path.relative(root, output))}`);\n\n const getGeneratedEntryPath = async () => {\n if (pkg.source) {\n const indexName =\n path.basename(pkg.source).replace(/\\.(jsx?|tsx?)$/, '') +\n outputExtension;\n\n const potentialPath = path.join(\n output,\n path.dirname(path.relative(source, path.join(root, pkg.source))),\n indexName\n );\n\n if (await fs.pathExists(potentialPath)) {\n return path.relative(root, potentialPath);\n }\n }\n\n return null;\n };\n\n const fields =\n modules === 'commonjs'\n ? [{ name: 'main', value: pkg.main }]\n : [{ name: 'module', value: pkg.module }];\n\n if (esm) {\n if (modules === 'commonjs') {\n fields.push({\n name: \"exports['.'].require\",\n value: pkg.exports?.['.']?.require,\n });\n } else {\n fields.push({\n name: \"exports['.'].import\",\n value: pkg.exports?.['.']?.import,\n });\n }\n } else {\n if (modules === 'commonjs' && pkg.exports?.['.']?.require) {\n report.warn(\n `The ${kleur.blue('esm')} option is disabled, but the ${kleur.blue(\n \"exports['.'].require\"\n )} field is set in ${kleur.blue(\n 'package.json'\n )}. This is likely a mistake.`\n );\n } else if (modules === 'preserve' && pkg.exports?.['.']?.import) {\n report.warn(\n `The ${kleur.blue('esm')} option is disabled, but the ${kleur.blue(\n \"exports['.'].import\"\n )} field is set in ${kleur.blue(\n 'package.json'\n )}. This is likely a mistake.`\n );\n }\n }\n\n if (fields.some((field) => field.value)) {\n await Promise.all(\n fields.map(async ({ name, value }) => {\n if (!value) {\n return;\n }\n\n try {\n require.resolve(path.join(root, value));\n } catch (e: unknown) {\n if (\n e != null &&\n typeof e === 'object' &&\n 'code' in e &&\n e.code === 'MODULE_NOT_FOUND'\n ) {\n const generatedEntryPath = await getGeneratedEntryPath();\n\n if (!generatedEntryPath) {\n report.warn(\n `Failed to detect the entry point for the generated files. Make sure you have a valid ${kleur.blue(\n 'source'\n )} field in your ${kleur.blue('package.json')}.`\n );\n }\n\n report.error(\n `The ${kleur.blue(name)} field in ${kleur.blue(\n 'package.json'\n )} points to a non-existent file: ${kleur.blue(\n value\n )}.\\nVerify the path points to the correct file under ${kleur.blue(\n path.relative(root, output)\n )}${\n generatedEntryPath\n ? ` (found ${kleur.blue(generatedEntryPath)}).`\n : '.'\n }`\n );\n\n throw new Error(`Found incorrect path in '${name}' field.`);\n }\n\n throw e;\n }\n })\n );\n } else {\n const generatedEntryPath = await getGeneratedEntryPath();\n\n report.warn(\n `No ${kleur.blue(\n fields.map((field) => field.name).join(' or ')\n )} field found in ${kleur.blue('package.json')}. Consider ${\n generatedEntryPath\n ? `pointing it to ${kleur.blue(generatedEntryPath)}`\n : 'adding it'\n } so that consumers of your package can use it.`\n );\n }\n}\n"],"mappings":"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"}
1
+ {"version":3,"file":"compile.js","names":["_path","_interopRequireDefault","require","_fsExtra","_kleur","babel","_interopRequireWildcard","_glob","_getRequireWildcardCache","nodeInterop","WeakMap","cacheBabelInterop","cacheNodeInterop","obj","__esModule","default","cache","has","get","newObj","hasPropertyDescriptor","Object","defineProperty","getOwnPropertyDescriptor","key","prototype","hasOwnProperty","call","desc","set","sourceExt","compile","root","source","output","esm","babelrc","configFile","exclude","modules","copyFlow","sourceMaps","report","files","glob","sync","cwd","absolute","nodir","ignore","info","kleur","blue","String","length","path","relative","pkg","JSON","parse","fs","readFile","join","keys","devDependencies","includes","warn","mkdirp","writeJSON","type","Promise","all","map","filepath","outputFilename","replace","dirname","test","copy","content","result","transformAsync","sourceRoot","sourceFileName","filename","presets","resolve","Error","code","mapFilename","basename","sourcesContent","undefined","writeFile","success","getGeneratedEntryPath","ext","indexName","potentialPath","pathExists","fields","name","value","main","module","push","exports","import","some","field","e","generatedEntryPath","error"],"sources":["../../src/utils/compile.ts"],"sourcesContent":["import path from 'path';\nimport fs from 'fs-extra';\nimport kleur from 'kleur';\nimport * as babel from '@babel/core';\nimport glob from 'glob';\nimport type { Input } from '../types';\n\ntype Options = Input & {\n esm?: boolean;\n babelrc?: boolean | null;\n configFile?: string | false | null;\n sourceMaps?: boolean;\n copyFlow?: boolean;\n modules: 'commonjs' | 'preserve';\n exclude: string;\n};\n\nconst sourceExt = /\\.([cm])?[jt]sx?$/;\n\nexport default async function compile({\n root,\n source,\n output,\n esm = false,\n babelrc = false,\n configFile = false,\n exclude,\n modules,\n copyFlow,\n sourceMaps = true,\n report,\n}: Options) {\n const files = glob.sync('**/*', {\n cwd: source,\n absolute: true,\n nodir: true,\n ignore: exclude,\n });\n\n report.info(\n `Compiling ${kleur.blue(String(files.length))} files in ${kleur.blue(\n path.relative(root, source)\n )} with ${kleur.blue('babel')}`\n );\n\n const pkg = JSON.parse(\n await fs.readFile(path.join(root, 'package.json'), 'utf-8')\n );\n\n if (copyFlow) {\n if (!Object.keys(pkg.devDependencies || {}).includes('flow-bin')) {\n report.warn(\n `The ${kleur.blue(\n 'copyFlow'\n )} option was specified, but couldn't find ${kleur.blue(\n 'flow-bin'\n )} in ${kleur.blue(\n 'package.json'\n )}.\\nIf the project is using ${kleur.blue(\n 'flow'\n )}, then make sure you have added ${kleur.blue(\n 'flow-bin'\n )} to your ${kleur.blue(\n 'devDependencies'\n )}, otherwise remove the ${kleur.blue('copyFlow')} option.`\n );\n }\n }\n\n await fs.mkdirp(output);\n await fs.writeJSON(path.join(output, 'package.json'), {\n type: modules === 'commonjs' ? 'commonjs' : 'module',\n });\n\n await Promise.all(\n files.map(async (filepath) => {\n const outputFilename = path\n .join(output, path.relative(source, filepath))\n .replace(sourceExt, '.$1js');\n\n await fs.mkdirp(path.dirname(outputFilename));\n\n if (!sourceExt.test(filepath)) {\n // Copy files which aren't source code\n fs.copy(filepath, outputFilename);\n return;\n }\n\n const content = await fs.readFile(filepath, 'utf-8');\n const result = await babel.transformAsync(content, {\n cwd: root,\n babelrc: babelrc,\n configFile: configFile,\n sourceMaps,\n sourceRoot: path.relative(path.dirname(outputFilename), source),\n sourceFileName: path.relative(source, filepath),\n filename: filepath,\n ...(babelrc || configFile\n ? null\n : {\n presets: [\n [\n require.resolve('../../babel-preset'),\n {\n modules:\n // If a file is explicitly marked as ESM, then preserve the syntax\n /\\.m[jt]s$/.test(filepath) ? 'preserve' : modules,\n esm,\n },\n ],\n ],\n }),\n });\n\n if (result == null) {\n throw new Error('Output code was null');\n }\n\n let code = result.code;\n\n if (sourceMaps && result.map) {\n const mapFilename = outputFilename + '.map';\n\n code += '\\n//# sourceMappingURL=' + path.basename(mapFilename);\n\n // Don't inline the source code, it can be retrieved from the source file\n result.map.sourcesContent = undefined;\n\n await fs.writeJSON(mapFilename, result.map);\n }\n\n await fs.writeFile(outputFilename, code);\n\n if (copyFlow) {\n fs.copy(filepath, outputFilename + '.flow');\n }\n })\n );\n\n report.success(`Wrote files to ${kleur.blue(path.relative(root, output))}`);\n\n const getGeneratedEntryPath = async () => {\n if (pkg.source) {\n for (const ext of ['.js', '.cjs', '.mjs']) {\n const indexName =\n // The source field may not have an extension, so we add it instead of replacing directly\n path.basename(pkg.source).replace(sourceExt, '') + ext;\n\n const potentialPath = path.join(\n output,\n path.dirname(path.relative(source, path.join(root, pkg.source))),\n indexName\n );\n\n if (await fs.pathExists(potentialPath)) {\n return path.relative(root, potentialPath);\n }\n }\n }\n\n return null;\n };\n\n const fields =\n modules === 'commonjs'\n ? [{ name: 'main', value: pkg.main }]\n : [{ name: 'module', value: pkg.module }];\n\n if (esm) {\n if (modules === 'commonjs') {\n fields.push({\n name: \"exports['.'].require\",\n value: pkg.exports?.['.']?.require,\n });\n } else {\n fields.push({\n name: \"exports['.'].import\",\n value: pkg.exports?.['.']?.import,\n });\n }\n } else {\n if (modules === 'commonjs' && pkg.exports?.['.']?.require) {\n report.warn(\n `The ${kleur.blue('esm')} option is disabled, but the ${kleur.blue(\n \"exports['.'].require\"\n )} field is set in ${kleur.blue(\n 'package.json'\n )}. This is likely a mistake.`\n );\n } else if (modules === 'preserve' && pkg.exports?.['.']?.import) {\n report.warn(\n `The ${kleur.blue('esm')} option is disabled, but the ${kleur.blue(\n \"exports['.'].import\"\n )} field is set in ${kleur.blue(\n 'package.json'\n )}. This is likely a mistake.`\n );\n }\n }\n\n if (fields.some((field) => field.value)) {\n await Promise.all(\n fields.map(async ({ name, value }) => {\n if (!value) {\n return;\n }\n\n try {\n require.resolve(path.join(root, value));\n } catch (e: unknown) {\n if (\n e != null &&\n typeof e === 'object' &&\n 'code' in e &&\n e.code === 'MODULE_NOT_FOUND'\n ) {\n const generatedEntryPath = await getGeneratedEntryPath();\n\n if (!generatedEntryPath) {\n report.warn(\n `Failed to detect the entry point for the generated files. Make sure you have a valid ${kleur.blue(\n 'source'\n )} field in your ${kleur.blue('package.json')}.`\n );\n }\n\n report.error(\n `The ${kleur.blue(name)} field in ${kleur.blue(\n 'package.json'\n )} points to a non-existent file: ${kleur.blue(\n value\n )}.\\nVerify the path points to the correct file under ${kleur.blue(\n path.relative(root, output)\n )}${\n generatedEntryPath\n ? ` (found ${kleur.blue(generatedEntryPath)}).`\n : '.'\n }`\n );\n\n throw new Error(`Found incorrect path in '${name}' field.`);\n }\n\n throw e;\n }\n })\n );\n } else {\n const generatedEntryPath = await getGeneratedEntryPath();\n\n report.warn(\n `No ${kleur.blue(\n fields.map((field) => field.name).join(' or ')\n )} field found in ${kleur.blue('package.json')}. Consider ${\n generatedEntryPath\n ? `pointing it to ${kleur.blue(generatedEntryPath)}`\n : 'adding it'\n } so that consumers of your package can use it.`\n );\n }\n}\n"],"mappings":"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"}
@@ -0,0 +1,54 @@
1
+ /* eslint-disable import/no-commonjs */
2
+
3
+ const path = require('path');
4
+ const escape = require('escape-string-regexp');
5
+ const exclusionList = require('metro-config/src/defaults/exclusionList');
6
+
7
+ /**
8
+ * Get Metro configuration for the example project.
9
+ * This sets up appropriate root and watch folders for the library.
10
+ * It also excludes conflicting modules and aliases them to the correct place.
11
+ *
12
+ * @param {import('metro-config').MetroConfig} defaultConfig Default Metro configuration
13
+ * @param {object} options Options to customize the configuration
14
+ * @param {string} options.root Root directory of the monorepo
15
+ * @param {object} options.pkg Content of package.json of the library
16
+ * @param {string} options.project Directory containing the example project
17
+ * @returns {import('metro-config').MetroConfig} Metro configuration
18
+ */
19
+ const getConfig = (defaultConfig, { root, pkg, project }) => {
20
+ const modules = Object.keys({ ...pkg.peerDependencies });
21
+
22
+ /**
23
+ * Metro configuration
24
+ * https://facebook.github.io/metro/docs/configuration
25
+ *
26
+ * @type {import('metro-config').MetroConfig}
27
+ */
28
+ return {
29
+ ...defaultConfig,
30
+
31
+ projectRoot: project,
32
+ watchFolders: [root],
33
+
34
+ // We need to make sure that only one version is loaded for peerDependencies
35
+ // So we block them at the root, and alias them to the versions in example project's node_modules
36
+ resolver: {
37
+ ...defaultConfig.resolver,
38
+
39
+ blacklistRE: exclusionList(
40
+ modules.map(
41
+ (m) =>
42
+ new RegExp(`^${escape(path.join(root, 'node_modules', m))}\\/.*$`)
43
+ )
44
+ ),
45
+
46
+ extraNodeModules: modules.reduce((acc, name) => {
47
+ acc[name] = path.join(project, 'node_modules', name);
48
+ return acc;
49
+ }, {}),
50
+ },
51
+ };
52
+ };
53
+
54
+ exports.getConfig = getConfig;
package/package.json CHANGED
@@ -1,6 +1,6 @@
1
1
  {
2
2
  "name": "react-native-builder-bob",
3
- "version": "0.26.0",
3
+ "version": "0.28.0",
4
4
  "description": "CLI to build JavaScript files for React Native libraries",
5
5
  "keywords": [
6
6
  "react-native",
@@ -24,7 +24,9 @@
24
24
  "files": [
25
25
  "bin",
26
26
  "lib",
27
- "babel-preset.js"
27
+ "babel-preset.js",
28
+ "metro-config.js",
29
+ "babel-config.js"
28
30
  ],
29
31
  "engines": {
30
32
  "node": ">= 18.0.0"
@@ -44,21 +46,24 @@
44
46
  },
45
47
  "dependencies": {
46
48
  "@babel/core": "^7.18.5",
47
- "@babel/plugin-proposal-class-properties": "^7.17.12",
49
+ "@babel/plugin-transform-strict-mode": "^7.24.7",
48
50
  "@babel/preset-env": "^7.18.2",
49
51
  "@babel/preset-flow": "^7.17.12",
50
52
  "@babel/preset-react": "^7.17.12",
51
53
  "@babel/preset-typescript": "^7.17.12",
54
+ "babel-plugin-module-resolver": "^5.0.2",
52
55
  "browserslist": "^4.20.4",
53
56
  "cosmiconfig": "^9.0.0",
54
57
  "cross-spawn": "^7.0.3",
55
58
  "dedent": "^0.7.0",
56
59
  "del": "^6.1.1",
60
+ "escape-string-regexp": "^4.0.0",
57
61
  "fs-extra": "^10.1.0",
58
62
  "glob": "^8.0.3",
59
63
  "is-git-dirty": "^2.0.1",
60
64
  "json5": "^2.2.1",
61
65
  "kleur": "^4.1.4",
66
+ "metro-config": "^0.80.9",
62
67
  "prompts": "^2.4.2",
63
68
  "which": "^2.0.2",
64
69
  "yargs": "^17.5.1"
@@ -80,5 +85,5 @@
80
85
  "concurrently": "^7.2.2",
81
86
  "jest": "^29.7.0"
82
87
  },
83
- "gitHead": "5052841763c6b50ea474f272480dc86c3f466138"
88
+ "gitHead": "be426bb86dd4d3576bd7bf246d77d25a4a6cc698"
84
89
  }