react-native-builder-bob 0.36.0 → 0.37.0

This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
package/lib/index.js CHANGED
@@ -13,6 +13,7 @@ var _commonjs = _interopRequireDefault(require("./targets/commonjs"));
13
13
  var _module = _interopRequireDefault(require("./targets/module"));
14
14
  var _typescript = _interopRequireDefault(require("./targets/typescript"));
15
15
  var _codegen = _interopRequireDefault(require("./targets/codegen"));
16
+ var _custom = _interopRequireDefault(require("./targets/custom"));
16
17
  function _getRequireWildcardCache(e) { if ("function" != typeof WeakMap) return null; var r = new WeakMap(), t = new WeakMap(); return (_getRequireWildcardCache = function (e) { return e ? t : r; })(e); }
17
18
  function _interopRequireWildcard(e, r) { if (!r && e && e.__esModule) return e; if (null === e || "object" != typeof e && "function" != typeof e) return { default: e }; var t = _getRequireWildcardCache(r); if (t && t.has(e)) return t.get(e); var n = { __proto__: null }, a = Object.defineProperty && Object.getOwnPropertyDescriptor; for (var u in e) if ("default" !== u && {}.hasOwnProperty.call(e, u)) { var i = a ? Object.getOwnPropertyDescriptor(e, u) : null; i && (i.get || i.set) ? Object.defineProperty(n, u, i) : n[u] = e[u]; } return n.default = e, t && t.set(e, n), n; }
18
19
  function _interopRequireDefault(e) { return e && e.__esModule ? e : { default: e }; }
@@ -429,6 +430,14 @@ async function buildTarget(target, report, source, output, exclude) {
429
430
  report
430
431
  });
431
432
  break;
433
+ case 'custom':
434
+ await (0, _custom.default)({
435
+ options: targetOptions,
436
+ source: _path.default.resolve(root, source),
437
+ report,
438
+ root
439
+ });
440
+ break;
432
441
  default:
433
442
  logger.exit(`Invalid target ${_kleur.default.blue(targetName)}.`);
434
443
  }
package/lib/index.js.map CHANGED
@@ -1 +1 @@
1
- {"version":3,"file":"index.js","names":["_path","_interopRequireDefault","require","_fsExtra","_kleur","_dedent","_yargs","_cosmiconfig","_isGitDirty","_prompts","logger","_interopRequireWildcard","_commonjs","_module","_typescript","_codegen","_getRequireWildcardCache","e","WeakMap","r","t","__esModule","default","has","get","n","__proto__","a","Object","defineProperty","getOwnPropertyDescriptor","u","hasOwnProperty","call","i","set","args","target","type","description","choices","name","version","root","process","cwd","explorer","cosmiconfig","stopDir","searchPlaces","projectPackagePath","path","resolve","FLOW_PRGAMA_REGEX","yargs","command","isGitDirty","shouldContinue","prompts","message","initial","exit","fs","pathExists","pkg","JSON","parse","readFile","result","search","config","devDependencies","source","validate","input","Boolean","entryFile","join","fromEntries","entries","sort","b","localeCompare","questions","title","value","selected","test","length","endsWith","push","keys","includes","output","targets","flow","undefined","esm","main","module","types","import","tsconfig","writeJSON","compilerOptions","rootDir","allowUnreachableCode","allowUnusedLabels","esModuleInterop","forceConsistentCasingInFileNames","jsx","lib","moduleResolution","noFallthroughCasesInSwitch","noImplicitReturns","noImplicitUseStrict","noStrictGenericChecks","noUncheckedIndexedAccess","noUnusedLocals","noUnusedParameters","resolveJsonModule","skipLibCheck","strict","verbatimModuleSyntax","spaces","prepare","files","key","entry","replace","exportsField","codegenConfig","includesGeneratedCode","exports","stringify","startsWith","remove","scripts","pkgFiles","some","file","update","filter","map","copyFlow","jest","modulePathIgnorePatterns","eslintIgnore","ignorefiles","ignorefile","content","split","writeFile","packageManager","console","log","dedent","kleur","yellow","magenta","bold","gray","argv","Error","$0","options","relative","filepath","exclude","report","info","warn","error","success","buildTarget","demandCommand","recommendCommands","targetName","Array","isArray","targetOptions","blue","buildCommonJS","buildModule","buildTypescript","buildCodegen"],"sources":["../src/index.ts"],"sourcesContent":["import path from 'path';\nimport fs from 'fs-extra';\nimport kleur from 'kleur';\nimport dedent from 'dedent';\nimport yargs from 'yargs';\nimport { cosmiconfig } from 'cosmiconfig';\nimport isGitDirty from 'is-git-dirty';\nimport prompts, { type PromptObject } from './utils/prompts';\nimport * as logger from './utils/logger';\nimport buildCommonJS from './targets/commonjs';\nimport buildModule from './targets/module';\nimport buildTypescript from './targets/typescript';\nimport buildCodegen from './targets/codegen';\nimport type { Options, Report, Target } from './types';\n\ntype ArgName = 'target';\n\nconst args = {\n target: {\n type: 'string',\n description: 'The target to build',\n choices: ['commonjs', 'module', 'typescript', 'codegen'] satisfies Target[],\n },\n} satisfies Record<ArgName, yargs.Options>;\n\n// eslint-disable-next-line import/no-commonjs, @typescript-eslint/no-var-requires\nconst { name, version } = require('../package.json');\n\nconst root = process.cwd();\nconst explorer = cosmiconfig(name, {\n stopDir: root,\n searchPlaces: [\n 'package.json',\n 'bob.config.mjs',\n 'bob.config.cjs',\n 'bob.config.js',\n ],\n});\n\nconst projectPackagePath = path.resolve(root, 'package.json');\n\nconst FLOW_PRGAMA_REGEX = /\\*?\\s*@(flow)\\b/m;\n\nyargs\n .command('init', 'configure the package to use bob', {}, async () => {\n if (isGitDirty()) {\n const { shouldContinue } = await prompts({\n type: 'confirm',\n name: 'shouldContinue',\n message: `The working directory is not clean.\\n You should commit or stash your changes before configuring bob.\\n Continue anyway?`,\n initial: false,\n });\n\n if (!shouldContinue) {\n process.exit(0);\n }\n }\n\n if (!(await fs.pathExists(projectPackagePath))) {\n logger.exit(\n `Couldn't find a 'package.json' file in '${root}'.\\n Are you in a project folder?`\n );\n }\n\n const pkg = JSON.parse(await fs.readFile(projectPackagePath, 'utf-8'));\n const result = await explorer.search();\n\n if (result?.config && pkg.devDependencies && name in pkg.devDependencies) {\n const { shouldContinue } = await prompts({\n type: 'confirm',\n name: 'shouldContinue',\n message: `The project seems to be already configured with bob.\\n Do you want to overwrite the existing configuration?`,\n initial: false,\n });\n\n if (!shouldContinue) {\n process.exit(0);\n }\n }\n\n const { source } = await prompts({\n type: 'text',\n name: 'source',\n message: 'Where are your source files?',\n initial: 'src',\n validate: (input) => Boolean(input),\n });\n\n let entryFile;\n\n if (await fs.pathExists(path.join(root, source, 'index.js'))) {\n entryFile = 'index.js';\n } else if (await fs.pathExists(path.join(root, source, 'index.ts'))) {\n entryFile = 'index.ts';\n } else if (await fs.pathExists(path.join(root, source, 'index.tsx'))) {\n entryFile = 'index.tsx';\n }\n\n if (!entryFile) {\n logger.exit(\n `Couldn't find a 'index.js'. 'index.ts' or 'index.tsx' file under '${source}'.\\n Please re-run the CLI after creating it.`\n );\n return;\n }\n\n pkg.devDependencies = Object.fromEntries(\n [\n ...Object.entries(pkg.devDependencies || {}),\n [name, `^${version}`],\n ].sort(([a], [b]) => a.localeCompare(b))\n );\n\n const questions: PromptObject[] = [\n {\n type: 'text',\n name: 'output',\n message: 'Where do you want to generate the output files?',\n initial: 'lib',\n validate: (input: string) => Boolean(input),\n },\n {\n type: 'multiselect',\n name: 'targets',\n message: 'Which targets do you want to build?',\n choices: [\n {\n title: 'commonjs - for running in Node (tests, SSR etc.)',\n value: 'commonjs',\n selected: true,\n },\n {\n title: 'module - for bundlers (metro, webpack etc.)',\n value: 'module',\n selected: true,\n },\n {\n title: 'typescript - declaration files for typechecking',\n value: 'typescript',\n selected: /\\.tsx?$/.test(entryFile),\n },\n ],\n validate: (input: string) => Boolean(input.length),\n },\n ];\n\n if (\n entryFile.endsWith('.js') &&\n FLOW_PRGAMA_REGEX.test(\n await fs.readFile(path.join(root, source, entryFile), 'utf-8')\n )\n ) {\n questions.push({\n type: 'confirm',\n name: 'flow',\n message: 'Do you want to publish definitions for flow?',\n initial: Object.keys(pkg.devDependencies || {}).includes('flow-bin'),\n });\n }\n\n const { output, targets, flow } = await prompts(questions);\n\n const target =\n targets[0] === 'commonjs' || targets[0] === 'module'\n ? targets[0]\n : undefined;\n\n const entries: {\n [key in 'source' | 'main' | 'module' | 'types']?: string;\n } = {\n source: `./${path.join(source, entryFile)}`,\n };\n\n let esm = false;\n\n if (targets.includes('module')) {\n esm = true;\n\n if (targets.includes('commonjs')) {\n entries.main = `./${path.join(output, 'commonjs', 'index.js')}`;\n }\n\n entries.module = `./${path.join(output, 'module', 'index.js')}`;\n } else if (targets.includes('commonjs')) {\n entries.main = `./${path.join(output, 'commonjs', 'index.js')}`;\n } else {\n entries.main = entries.source;\n }\n\n const types: {\n [key in 'require' | 'import']?: string;\n } = {};\n\n if (targets.includes('typescript')) {\n types.require = `./${path.join(\n output,\n 'typescript',\n 'commonjs',\n source,\n 'index.d.ts'\n )}`;\n\n types.import = `./${path.join(\n output,\n 'typescript',\n 'module',\n source,\n 'index.d.ts'\n )}`;\n\n entries.types = types.require;\n\n if (!(await fs.pathExists(path.join(root, 'tsconfig.json')))) {\n const { tsconfig } = await prompts({\n type: 'confirm',\n name: 'tsconfig',\n message: `You have enabled 'typescript' compilation, but we couldn't find a 'tsconfig.json' in project root.\\n Generate one?`,\n initial: true,\n });\n\n if (tsconfig) {\n await fs.writeJSON(\n path.join(root, 'tsconfig.json'),\n {\n compilerOptions: {\n rootDir: '.',\n allowUnreachableCode: false,\n allowUnusedLabels: false,\n esModuleInterop: true,\n forceConsistentCasingInFileNames: true,\n jsx: 'react-jsx',\n lib: ['ESNext'],\n module: 'ESNext',\n moduleResolution: 'Bundler',\n noFallthroughCasesInSwitch: true,\n noImplicitReturns: true,\n noImplicitUseStrict: false,\n noStrictGenericChecks: false,\n noUncheckedIndexedAccess: true,\n noUnusedLocals: true,\n noUnusedParameters: true,\n resolveJsonModule: true,\n skipLibCheck: true,\n strict: true,\n target: 'ESNext',\n verbatimModuleSyntax: true,\n },\n },\n { spaces: 2 }\n );\n }\n }\n }\n\n const prepare = 'bob build';\n const files = [\n source,\n output,\n '!**/__tests__',\n '!**/__fixtures__',\n '!**/__mocks__',\n ];\n\n for (const key in entries) {\n const entry = entries[key as keyof typeof entries];\n\n if (pkg[key] && pkg[key] !== entry) {\n const { replace } = await prompts({\n type: 'confirm',\n name: 'replace',\n message: `Your package.json has the '${key}' field set to '${pkg[key]}'.\\n Do you want to replace it with '${entry}'?`,\n initial: true,\n });\n\n if (replace) {\n pkg[key] = entry;\n }\n } else {\n pkg[key] = entry;\n }\n }\n\n if (esm) {\n let replace = false;\n\n const exportsField = {\n '.': {\n import: {\n ...(types.import ? { types: types.import } : null),\n ...(entries.module ? { default: entries.module } : null),\n },\n require: {\n ...(types.require ? { types: types.require } : null),\n ...(entries.main ? { default: entries.main } : null),\n },\n },\n };\n\n if (pkg.codegenConfig && !pkg.codegenConfig.includesGeneratedCode) {\n // @ts-expect-error The exports is not strictly types therefore it doesn't know about the package.json property\n exportsField['./package.json'] = './package.json';\n }\n\n if (\n pkg.exports &&\n JSON.stringify(pkg.exports) !== JSON.stringify(exportsField)\n ) {\n replace = (\n await prompts({\n type: 'confirm',\n name: 'replace',\n message: `Your package.json has 'exports' field set.\\n Do you want to replace it?`,\n initial: true,\n })\n ).replace;\n } else {\n replace = true;\n }\n\n if (replace) {\n pkg.exports = exportsField;\n }\n }\n\n if (\n pkg['react-native'] &&\n (pkg['react-native'].startsWith(source) ||\n pkg['react-native'].startsWith(`./${source}`))\n ) {\n const { remove } = await prompts({\n type: 'confirm',\n name: 'remove',\n 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?`,\n initial: true,\n });\n\n if (remove) {\n delete pkg['react-native'];\n }\n }\n\n if (pkg.scripts?.prepare && pkg.scripts.prepare !== prepare) {\n const { replace } = await prompts({\n type: 'confirm',\n name: 'replace',\n message: `Your package.json has the 'scripts.prepare' field set to '${pkg.scripts.prepare}'.\\n Do you want to replace it with '${prepare}'?`,\n initial: true,\n });\n\n if (replace) {\n pkg.scripts.prepare = prepare;\n }\n } else {\n pkg.scripts = pkg.scripts || {};\n pkg.scripts.prepare = prepare;\n }\n\n if (pkg.files) {\n const pkgFiles = pkg.files;\n\n if (files?.some((file) => !pkgFiles.includes(file))) {\n const { update } = await prompts({\n type: 'confirm',\n name: 'update',\n message: `Your package.json already has a 'files' field.\\n Do you want to update it?`,\n initial: true,\n });\n\n if (update) {\n pkg.files = [\n ...files,\n ...pkg.files.filter((file: string) => !files.includes(file)),\n ];\n }\n }\n } else {\n pkg.files = files;\n }\n\n pkg[name] = {\n source,\n output,\n targets: targets.map((t: string) => {\n if (t === target && flow) {\n return [t, { copyFlow: true }];\n }\n\n if (t === 'commonjs' || t === 'module' || t === 'typescript') {\n return [t, { esm }];\n }\n\n return t;\n }),\n };\n\n if (pkg.jest) {\n const entry = `<rootDir>/${output}/`;\n\n if (pkg.jest.modulePathIgnorePatterns) {\n const { modulePathIgnorePatterns } = pkg.jest;\n\n if (!modulePathIgnorePatterns.includes(entry)) {\n modulePathIgnorePatterns.push(entry);\n }\n } else {\n pkg.jest.modulePathIgnorePatterns = [entry];\n }\n }\n\n pkg.eslintIgnore = pkg.eslintIgnore || ['node_modules/'];\n\n if (!pkg.eslintIgnore.includes(`${output}/`)) {\n pkg.eslintIgnore.push(`${output}/`);\n }\n\n await fs.writeJSON(projectPackagePath, pkg, {\n spaces: 2,\n });\n\n const ignorefiles = [\n path.join(root, '.gitignore'),\n path.join(root, '.eslintignore'),\n ];\n\n for (const ignorefile of ignorefiles) {\n if (await fs.pathExists(ignorefile)) {\n const content = await fs.readFile(ignorefile, 'utf-8');\n\n if (!content.split('\\n').includes(`${output}/`)) {\n await fs.writeFile(\n ignorefile,\n `${content}\\n# generated by bob\\n${output}/\\n`\n );\n }\n }\n }\n\n const packageManager = (await fs.pathExists(path.join(root, 'yarn.lock')))\n ? 'yarn'\n : 'npm';\n\n console.log(\n dedent(`\n Project ${kleur.yellow(pkg.name)} configured successfully!\n\n ${kleur.magenta(\n `${kleur.bold('Perform last steps')} by running`\n )}${kleur.gray(':')}\n\n ${kleur.gray('$')} ${packageManager} install\n\n ${kleur.yellow('Good luck!')}\n `)\n );\n })\n .command('build', 'build files for publishing', args, async (argv) => {\n if (!(await fs.pathExists(projectPackagePath))) {\n throw new Error(\n `Couldn't find a 'package.json' file in '${root}'. Are you in a project folder?`\n );\n }\n\n const result = await explorer.search();\n\n if (!result?.config) {\n logger.exit(\n `No configuration found. Run '${argv.$0} init' to create one automatically.`\n );\n }\n\n const options: Options = result!.config;\n\n if (!options.targets?.length) {\n logger.exit(\n `No targets found in the configuration in '${path.relative(\n root,\n result!.filepath\n )}'.`\n );\n }\n\n const source = options.source;\n\n if (!source) {\n logger.exit(\n `No source option found in the configuration in '${path.relative(\n root,\n result!.filepath\n )}'.`\n );\n }\n\n const output = options.output;\n\n if (!output) {\n logger.exit(\n `No source option found in the configuration in '${path.relative(\n root,\n result!.filepath\n )}'.`\n );\n }\n\n const exclude =\n options.exclude ?? '**/{__tests__,__fixtures__,__mocks__}/**';\n\n const report = {\n info: logger.info,\n warn: logger.warn,\n error: logger.error,\n success: logger.success,\n };\n\n if (argv.target != null) {\n buildTarget(\n argv.target,\n report,\n source as string,\n output as string,\n exclude\n );\n } else {\n for (const target of options.targets!) {\n buildTarget(\n target,\n report,\n source as string,\n output as string,\n exclude\n );\n }\n }\n })\n .demandCommand()\n .recommendCommands()\n .strict().argv;\n\nasync function buildTarget(\n target: Exclude<Options['targets'], undefined>[number],\n report: Report,\n source: string,\n output: string,\n exclude: string\n) {\n const targetName = Array.isArray(target) ? target[0] : target;\n const targetOptions = Array.isArray(target) ? target[1] : undefined;\n\n report.info(`Building target ${kleur.blue(targetName)}`);\n\n switch (targetName) {\n case 'commonjs':\n await buildCommonJS({\n root,\n source: path.resolve(root, source),\n output: path.resolve(root, output, 'commonjs'),\n exclude,\n options: targetOptions,\n report,\n });\n break;\n case 'module':\n await buildModule({\n root,\n source: path.resolve(root, source),\n output: path.resolve(root, output, 'module'),\n exclude,\n options: targetOptions,\n report,\n });\n break;\n case 'typescript':\n await buildTypescript({\n root,\n source: path.resolve(root, source),\n output: path.resolve(root, output, 'typescript'),\n options: targetOptions,\n report,\n });\n break;\n case 'codegen':\n await buildCodegen({\n root,\n source: path.resolve(root, source),\n output: path.resolve(root, output, 'typescript'),\n report,\n });\n break;\n default:\n logger.exit(`Invalid target ${kleur.blue(targetName)}.`);\n }\n}\n"],"mappings":";;AAAA,IAAAA,KAAA,GAAAC,sBAAA,CAAAC,OAAA;AACA,IAAAC,QAAA,GAAAF,sBAAA,CAAAC,OAAA;AACA,IAAAE,MAAA,GAAAH,sBAAA,CAAAC,OAAA;AACA,IAAAG,OAAA,GAAAJ,sBAAA,CAAAC,OAAA;AACA,IAAAI,MAAA,GAAAL,sBAAA,CAAAC,OAAA;AACA,IAAAK,YAAA,GAAAL,OAAA;AACA,IAAAM,WAAA,GAAAP,sBAAA,CAAAC,OAAA;AACA,IAAAO,QAAA,GAAAR,sBAAA,CAAAC,OAAA;AACA,IAAAQ,MAAA,GAAAC,uBAAA,CAAAT,OAAA;AACA,IAAAU,SAAA,GAAAX,sBAAA,CAAAC,OAAA;AACA,IAAAW,OAAA,GAAAZ,sBAAA,CAAAC,OAAA;AACA,IAAAY,WAAA,GAAAb,sBAAA,CAAAC,OAAA;AACA,IAAAa,QAAA,GAAAd,sBAAA,CAAAC,OAAA;AAA6C,SAAAc,yBAAAC,CAAA,6BAAAC,OAAA,mBAAAC,CAAA,OAAAD,OAAA,IAAAE,CAAA,OAAAF,OAAA,YAAAF,wBAAA,YAAAA,CAAAC,CAAA,WAAAA,CAAA,GAAAG,CAAA,GAAAD,CAAA,KAAAF,CAAA;AAAA,SAAAN,wBAAAM,CAAA,EAAAE,CAAA,SAAAA,CAAA,IAAAF,CAAA,IAAAA,CAAA,CAAAI,UAAA,SAAAJ,CAAA,eAAAA,CAAA,uBAAAA,CAAA,yBAAAA,CAAA,WAAAK,OAAA,EAAAL,CAAA,QAAAG,CAAA,GAAAJ,wBAAA,CAAAG,CAAA,OAAAC,CAAA,IAAAA,CAAA,CAAAG,GAAA,CAAAN,CAAA,UAAAG,CAAA,CAAAI,GAAA,CAAAP,CAAA,OAAAQ,CAAA,KAAAC,SAAA,UAAAC,CAAA,GAAAC,MAAA,CAAAC,cAAA,IAAAD,MAAA,CAAAE,wBAAA,WAAAC,CAAA,IAAAd,CAAA,oBAAAc,CAAA,OAAAC,cAAA,CAAAC,IAAA,CAAAhB,CAAA,EAAAc,CAAA,SAAAG,CAAA,GAAAP,CAAA,GAAAC,MAAA,CAAAE,wBAAA,CAAAb,CAAA,EAAAc,CAAA,UAAAG,CAAA,KAAAA,CAAA,CAAAV,GAAA,IAAAU,CAAA,CAAAC,GAAA,IAAAP,MAAA,CAAAC,cAAA,CAAAJ,CAAA,EAAAM,CAAA,EAAAG,CAAA,IAAAT,CAAA,CAAAM,CAAA,IAAAd,CAAA,CAAAc,CAAA,YAAAN,CAAA,CAAAH,OAAA,GAAAL,CAAA,EAAAG,CAAA,IAAAA,CAAA,CAAAe,GAAA,CAAAlB,CAAA,EAAAQ,CAAA,GAAAA,CAAA;AAAA,SAAAxB,uBAAAgB,CAAA,WAAAA,CAAA,IAAAA,CAAA,CAAAI,UAAA,GAAAJ,CAAA,KAAAK,OAAA,EAAAL,CAAA;AAK7C,MAAMmB,IAAI,GAAG;EACXC,MAAM,EAAE;IACNC,IAAI,EAAE,QAAQ;IACdC,WAAW,EAAE,qBAAqB;IAClCC,OAAO,EAAE,CAAC,UAAU,EAAE,QAAQ,EAAE,YAAY,EAAE,SAAS;EACzD;AACF,CAA0C;;AAE1C;AACA,MAAM;EAAEC,IAAI;EAAEC;AAAQ,CAAC,GAAGxC,OAAO,CAAC,iBAAiB,CAAC;AAEpD,MAAMyC,IAAI,GAAGC,OAAO,CAACC,GAAG,CAAC,CAAC;AAC1B,MAAMC,QAAQ,GAAG,IAAAC,wBAAW,EAACN,IAAI,EAAE;EACjCO,OAAO,EAAEL,IAAI;EACbM,YAAY,EAAE,CACZ,cAAc,EACd,gBAAgB,EAChB,gBAAgB,EAChB,eAAe;AAEnB,CAAC,CAAC;AAEF,MAAMC,kBAAkB,GAAGC,aAAI,CAACC,OAAO,CAACT,IAAI,EAAE,cAAc,CAAC;AAE7D,MAAMU,iBAAiB,GAAG,kBAAkB;AAE5CC,cAAK,CACFC,OAAO,CAAC,MAAM,EAAE,kCAAkC,EAAE,CAAC,CAAC,EAAE,YAAY;EACnE,IAAI,IAAAC,mBAAU,EAAC,CAAC,EAAE;IAChB,MAAM;MAAEC;IAAe,CAAC,GAAG,MAAM,IAAAC,gBAAO,EAAC;MACvCpB,IAAI,EAAE,SAAS;MACfG,IAAI,EAAE,gBAAgB;MACtBkB,OAAO,EAAE,4HAA4H;MACrIC,OAAO,EAAE;IACX,CAAC,CAAC;IAEF,IAAI,CAACH,cAAc,EAAE;MACnBb,OAAO,CAACiB,IAAI,CAAC,CAAC,CAAC;IACjB;EACF;EAEA,IAAI,EAAE,MAAMC,gBAAE,CAACC,UAAU,CAACb,kBAAkB,CAAC,CAAC,EAAE;IAC9CxC,MAAM,CAACmD,IAAI,CACT,2CAA2ClB,IAAI,oCACjD,CAAC;EACH;EAEA,MAAMqB,GAAG,GAAGC,IAAI,CAACC,KAAK,CAAC,MAAMJ,gBAAE,CAACK,QAAQ,CAACjB,kBAAkB,EAAE,OAAO,CAAC,CAAC;EACtE,MAAMkB,MAAM,GAAG,MAAMtB,QAAQ,CAACuB,MAAM,CAAC,CAAC;EAEtC,IAAID,MAAM,EAAEE,MAAM,IAAIN,GAAG,CAACO,eAAe,IAAI9B,IAAI,IAAIuB,GAAG,CAACO,eAAe,EAAE;IACxE,MAAM;MAAEd;IAAe,CAAC,GAAG,MAAM,IAAAC,gBAAO,EAAC;MACvCpB,IAAI,EAAE,SAAS;MACfG,IAAI,EAAE,gBAAgB;MACtBkB,OAAO,EAAE,8GAA8G;MACvHC,OAAO,EAAE;IACX,CAAC,CAAC;IAEF,IAAI,CAACH,cAAc,EAAE;MACnBb,OAAO,CAACiB,IAAI,CAAC,CAAC,CAAC;IACjB;EACF;EAEA,MAAM;IAAEW;EAAO,CAAC,GAAG,MAAM,IAAAd,gBAAO,EAAC;IAC/BpB,IAAI,EAAE,MAAM;IACZG,IAAI,EAAE,QAAQ;IACdkB,OAAO,EAAE,8BAA8B;IACvCC,OAAO,EAAE,KAAK;IACda,QAAQ,EAAGC,KAAK,IAAKC,OAAO,CAACD,KAAK;EACpC,CAAC,CAAC;EAEF,IAAIE,SAAS;EAEb,IAAI,MAAMd,gBAAE,CAACC,UAAU,CAACZ,aAAI,CAAC0B,IAAI,CAAClC,IAAI,EAAE6B,MAAM,EAAE,UAAU,CAAC,CAAC,EAAE;IAC5DI,SAAS,GAAG,UAAU;EACxB,CAAC,MAAM,IAAI,MAAMd,gBAAE,CAACC,UAAU,CAACZ,aAAI,CAAC0B,IAAI,CAAClC,IAAI,EAAE6B,MAAM,EAAE,UAAU,CAAC,CAAC,EAAE;IACnEI,SAAS,GAAG,UAAU;EACxB,CAAC,MAAM,IAAI,MAAMd,gBAAE,CAACC,UAAU,CAACZ,aAAI,CAAC0B,IAAI,CAAClC,IAAI,EAAE6B,MAAM,EAAE,WAAW,CAAC,CAAC,EAAE;IACpEI,SAAS,GAAG,WAAW;EACzB;EAEA,IAAI,CAACA,SAAS,EAAE;IACdlE,MAAM,CAACmD,IAAI,CACT,qEAAqEW,MAAM,gDAC7E,CAAC;IACD;EACF;EAEAR,GAAG,CAACO,eAAe,GAAG3C,MAAM,CAACkD,WAAW,CACtC,CACE,GAAGlD,MAAM,CAACmD,OAAO,CAACf,GAAG,CAACO,eAAe,IAAI,CAAC,CAAC,CAAC,EAC5C,CAAC9B,IAAI,EAAE,IAAIC,OAAO,EAAE,CAAC,CACtB,CAACsC,IAAI,CAAC,CAAC,CAACrD,CAAC,CAAC,EAAE,CAACsD,CAAC,CAAC,KAAKtD,CAAC,CAACuD,aAAa,CAACD,CAAC,CAAC,CACzC,CAAC;EAED,MAAME,SAAyB,GAAG,CAChC;IACE7C,IAAI,EAAE,MAAM;IACZG,IAAI,EAAE,QAAQ;IACdkB,OAAO,EAAE,iDAAiD;IAC1DC,OAAO,EAAE,KAAK;IACda,QAAQ,EAAGC,KAAa,IAAKC,OAAO,CAACD,KAAK;EAC5C,CAAC,EACD;IACEpC,IAAI,EAAE,aAAa;IACnBG,IAAI,EAAE,SAAS;IACfkB,OAAO,EAAE,qCAAqC;IAC9CnB,OAAO,EAAE,CACP;MACE4C,KAAK,EAAE,kDAAkD;MACzDC,KAAK,EAAE,UAAU;MACjBC,QAAQ,EAAE;IACZ,CAAC,EACD;MACEF,KAAK,EAAE,6CAA6C;MACpDC,KAAK,EAAE,QAAQ;MACfC,QAAQ,EAAE;IACZ,CAAC,EACD;MACEF,KAAK,EAAE,iDAAiD;MACxDC,KAAK,EAAE,YAAY;MACnBC,QAAQ,EAAE,SAAS,CAACC,IAAI,CAACX,SAAS;IACpC,CAAC,CACF;IACDH,QAAQ,EAAGC,KAAa,IAAKC,OAAO,CAACD,KAAK,CAACc,MAAM;EACnD,CAAC,CACF;EAED,IACEZ,SAAS,CAACa,QAAQ,CAAC,KAAK,CAAC,IACzBpC,iBAAiB,CAACkC,IAAI,CACpB,MAAMzB,gBAAE,CAACK,QAAQ,CAAChB,aAAI,CAAC0B,IAAI,CAAClC,IAAI,EAAE6B,MAAM,EAAEI,SAAS,CAAC,EAAE,OAAO,CAC/D,CAAC,EACD;IACAO,SAAS,CAACO,IAAI,CAAC;MACbpD,IAAI,EAAE,SAAS;MACfG,IAAI,EAAE,MAAM;MACZkB,OAAO,EAAE,8CAA8C;MACvDC,OAAO,EAAEhC,MAAM,CAAC+D,IAAI,CAAC3B,GAAG,CAACO,eAAe,IAAI,CAAC,CAAC,CAAC,CAACqB,QAAQ,CAAC,UAAU;IACrE,CAAC,CAAC;EACJ;EAEA,MAAM;IAAEC,MAAM;IAAEC,OAAO;IAAEC;EAAK,CAAC,GAAG,MAAM,IAAArC,gBAAO,EAACyB,SAAS,CAAC;EAE1D,MAAM9C,MAAM,GACVyD,OAAO,CAAC,CAAC,CAAC,KAAK,UAAU,IAAIA,OAAO,CAAC,CAAC,CAAC,KAAK,QAAQ,GAChDA,OAAO,CAAC,CAAC,CAAC,GACVE,SAAS;EAEf,MAAMjB,OAEL,GAAG;IACFP,MAAM,EAAE,KAAKrB,aAAI,CAAC0B,IAAI,CAACL,MAAM,EAAEI,SAAS,CAAC;EAC3C,CAAC;EAED,IAAIqB,GAAG,GAAG,KAAK;EAEf,IAAIH,OAAO,CAACF,QAAQ,CAAC,QAAQ,CAAC,EAAE;IAC9BK,GAAG,GAAG,IAAI;IAEV,IAAIH,OAAO,CAACF,QAAQ,CAAC,UAAU,CAAC,EAAE;MAChCb,OAAO,CAACmB,IAAI,GAAG,KAAK/C,aAAI,CAAC0B,IAAI,CAACgB,MAAM,EAAE,UAAU,EAAE,UAAU,CAAC,EAAE;IACjE;IAEAd,OAAO,CAACoB,MAAM,GAAG,KAAKhD,aAAI,CAAC0B,IAAI,CAACgB,MAAM,EAAE,QAAQ,EAAE,UAAU,CAAC,EAAE;EACjE,CAAC,MAAM,IAAIC,OAAO,CAACF,QAAQ,CAAC,UAAU,CAAC,EAAE;IACvCb,OAAO,CAACmB,IAAI,GAAG,KAAK/C,aAAI,CAAC0B,IAAI,CAACgB,MAAM,EAAE,UAAU,EAAE,UAAU,CAAC,EAAE;EACjE,CAAC,MAAM;IACLd,OAAO,CAACmB,IAAI,GAAGnB,OAAO,CAACP,MAAM;EAC/B;EAEA,MAAM4B,KAEL,GAAG,CAAC,CAAC;EAEN,IAAIN,OAAO,CAACF,QAAQ,CAAC,YAAY,CAAC,EAAE;IAClCQ,KAAK,CAAClG,OAAO,GAAG,KAAKiD,aAAI,CAAC0B,IAAI,CAC5BgB,MAAM,EACN,YAAY,EACZ,UAAU,EACVrB,MAAM,EACN,YACF,CAAC,EAAE;IAEH4B,KAAK,CAACC,MAAM,GAAG,KAAKlD,aAAI,CAAC0B,IAAI,CAC3BgB,MAAM,EACN,YAAY,EACZ,QAAQ,EACRrB,MAAM,EACN,YACF,CAAC,EAAE;IAEHO,OAAO,CAACqB,KAAK,GAAGA,KAAK,CAAClG,OAAO;IAE7B,IAAI,EAAE,MAAM4D,gBAAE,CAACC,UAAU,CAACZ,aAAI,CAAC0B,IAAI,CAAClC,IAAI,EAAE,eAAe,CAAC,CAAC,CAAC,EAAE;MAC5D,MAAM;QAAE2D;MAAS,CAAC,GAAG,MAAM,IAAA5C,gBAAO,EAAC;QACjCpB,IAAI,EAAE,SAAS;QACfG,IAAI,EAAE,UAAU;QAChBkB,OAAO,EAAE,qHAAqH;QAC9HC,OAAO,EAAE;MACX,CAAC,CAAC;MAEF,IAAI0C,QAAQ,EAAE;QACZ,MAAMxC,gBAAE,CAACyC,SAAS,CAChBpD,aAAI,CAAC0B,IAAI,CAAClC,IAAI,EAAE,eAAe,CAAC,EAChC;UACE6D,eAAe,EAAE;YACfC,OAAO,EAAE,GAAG;YACZC,oBAAoB,EAAE,KAAK;YAC3BC,iBAAiB,EAAE,KAAK;YACxBC,eAAe,EAAE,IAAI;YACrBC,gCAAgC,EAAE,IAAI;YACtCC,GAAG,EAAE,WAAW;YAChBC,GAAG,EAAE,CAAC,QAAQ,CAAC;YACfZ,MAAM,EAAE,QAAQ;YAChBa,gBAAgB,EAAE,SAAS;YAC3BC,0BAA0B,EAAE,IAAI;YAChCC,iBAAiB,EAAE,IAAI;YACvBC,mBAAmB,EAAE,KAAK;YAC1BC,qBAAqB,EAAE,KAAK;YAC5BC,wBAAwB,EAAE,IAAI;YAC9BC,cAAc,EAAE,IAAI;YACpBC,kBAAkB,EAAE,IAAI;YACxBC,iBAAiB,EAAE,IAAI;YACvBC,YAAY,EAAE,IAAI;YAClBC,MAAM,EAAE,IAAI;YACZrF,MAAM,EAAE,QAAQ;YAChBsF,oBAAoB,EAAE;UACxB;QACF,CAAC,EACD;UAAEC,MAAM,EAAE;QAAE,CACd,CAAC;MACH;IACF;EACF;EAEA,MAAMC,OAAO,GAAG,WAAW;EAC3B,MAAMC,KAAK,GAAG,CACZtD,MAAM,EACNqB,MAAM,EACN,eAAe,EACf,kBAAkB,EAClB,eAAe,CAChB;EAED,KAAK,MAAMkC,GAAG,IAAIhD,OAAO,EAAE;IACzB,MAAMiD,KAAK,GAAGjD,OAAO,CAACgD,GAAG,CAAyB;IAElD,IAAI/D,GAAG,CAAC+D,GAAG,CAAC,IAAI/D,GAAG,CAAC+D,GAAG,CAAC,KAAKC,KAAK,EAAE;MAClC,MAAM;QAAEC;MAAQ,CAAC,GAAG,MAAM,IAAAvE,gBAAO,EAAC;QAChCpB,IAAI,EAAE,SAAS;QACfG,IAAI,EAAE,SAAS;QACfkB,OAAO,EAAE,8BAA8BoE,GAAG,mBAAmB/D,GAAG,CAAC+D,GAAG,CAAC,yCAAyCC,KAAK,IAAI;QACvHpE,OAAO,EAAE;MACX,CAAC,CAAC;MAEF,IAAIqE,OAAO,EAAE;QACXjE,GAAG,CAAC+D,GAAG,CAAC,GAAGC,KAAK;MAClB;IACF,CAAC,MAAM;MACLhE,GAAG,CAAC+D,GAAG,CAAC,GAAGC,KAAK;IAClB;EACF;EAEA,IAAI/B,GAAG,EAAE;IACP,IAAIgC,OAAO,GAAG,KAAK;IAEnB,MAAMC,YAAY,GAAG;MACnB,GAAG,EAAE;QACH7B,MAAM,EAAE;UACN,IAAID,KAAK,CAACC,MAAM,GAAG;YAAED,KAAK,EAAEA,KAAK,CAACC;UAAO,CAAC,GAAG,IAAI,CAAC;UAClD,IAAItB,OAAO,CAACoB,MAAM,GAAG;YAAE7E,OAAO,EAAEyD,OAAO,CAACoB;UAAO,CAAC,GAAG,IAAI;QACzD,CAAC;QACDjG,OAAO,EAAE;UACP,IAAIkG,KAAK,CAAClG,OAAO,GAAG;YAAEkG,KAAK,EAAEA,KAAK,CAAClG;UAAQ,CAAC,GAAG,IAAI,CAAC;UACpD,IAAI6E,OAAO,CAACmB,IAAI,GAAG;YAAE5E,OAAO,EAAEyD,OAAO,CAACmB;UAAK,CAAC,GAAG,IAAI;QACrD;MACF;IACF,CAAC;IAED,IAAIlC,GAAG,CAACmE,aAAa,IAAI,CAACnE,GAAG,CAACmE,aAAa,CAACC,qBAAqB,EAAE;MACjE;MACAF,YAAY,CAAC,gBAAgB,CAAC,GAAG,gBAAgB;IACnD;IAEA,IACElE,GAAG,CAACqE,OAAO,IACXpE,IAAI,CAACqE,SAAS,CAACtE,GAAG,CAACqE,OAAO,CAAC,KAAKpE,IAAI,CAACqE,SAAS,CAACJ,YAAY,CAAC,EAC5D;MACAD,OAAO,GAAG,CACR,MAAM,IAAAvE,gBAAO,EAAC;QACZpB,IAAI,EAAE,SAAS;QACfG,IAAI,EAAE,SAAS;QACfkB,OAAO,EAAE,0EAA0E;QACnFC,OAAO,EAAE;MACX,CAAC,CAAC,EACFqE,OAAO;IACX,CAAC,MAAM;MACLA,OAAO,GAAG,IAAI;IAChB;IAEA,IAAIA,OAAO,EAAE;MACXjE,GAAG,CAACqE,OAAO,GAAGH,YAAY;IAC5B;EACF;EAEA,IACElE,GAAG,CAAC,cAAc,CAAC,KAClBA,GAAG,CAAC,cAAc,CAAC,CAACuE,UAAU,CAAC/D,MAAM,CAAC,IACrCR,GAAG,CAAC,cAAc,CAAC,CAACuE,UAAU,CAAC,KAAK/D,MAAM,EAAE,CAAC,CAAC,EAChD;IACA,MAAM;MAAEgE;IAAO,CAAC,GAAG,MAAM,IAAA9E,gBAAO,EAAC;MAC/BpB,IAAI,EAAE,SAAS;MACfG,IAAI,EAAE,QAAQ;MACdkB,OAAO,EAAE,uKAAuK;MAChLC,OAAO,EAAE;IACX,CAAC,CAAC;IAEF,IAAI4E,MAAM,EAAE;MACV,OAAOxE,GAAG,CAAC,cAAc,CAAC;IAC5B;EACF;EAEA,IAAIA,GAAG,CAACyE,OAAO,EAAEZ,OAAO,IAAI7D,GAAG,CAACyE,OAAO,CAACZ,OAAO,KAAKA,OAAO,EAAE;IAC3D,MAAM;MAAEI;IAAQ,CAAC,GAAG,MAAM,IAAAvE,gBAAO,EAAC;MAChCpB,IAAI,EAAE,SAAS;MACfG,IAAI,EAAE,SAAS;MACfkB,OAAO,EAAE,6DAA6DK,GAAG,CAACyE,OAAO,CAACZ,OAAO,yCAAyCA,OAAO,IAAI;MAC7IjE,OAAO,EAAE;IACX,CAAC,CAAC;IAEF,IAAIqE,OAAO,EAAE;MACXjE,GAAG,CAACyE,OAAO,CAACZ,OAAO,GAAGA,OAAO;IAC/B;EACF,CAAC,MAAM;IACL7D,GAAG,CAACyE,OAAO,GAAGzE,GAAG,CAACyE,OAAO,IAAI,CAAC,CAAC;IAC/BzE,GAAG,CAACyE,OAAO,CAACZ,OAAO,GAAGA,OAAO;EAC/B;EAEA,IAAI7D,GAAG,CAAC8D,KAAK,EAAE;IACb,MAAMY,QAAQ,GAAG1E,GAAG,CAAC8D,KAAK;IAE1B,IAAIA,KAAK,EAAEa,IAAI,CAAEC,IAAI,IAAK,CAACF,QAAQ,CAAC9C,QAAQ,CAACgD,IAAI,CAAC,CAAC,EAAE;MACnD,MAAM;QAAEC;MAAO,CAAC,GAAG,MAAM,IAAAnF,gBAAO,EAAC;QAC/BpB,IAAI,EAAE,SAAS;QACfG,IAAI,EAAE,QAAQ;QACdkB,OAAO,EAAE,6EAA6E;QACtFC,OAAO,EAAE;MACX,CAAC,CAAC;MAEF,IAAIiF,MAAM,EAAE;QACV7E,GAAG,CAAC8D,KAAK,GAAG,CACV,GAAGA,KAAK,EACR,GAAG9D,GAAG,CAAC8D,KAAK,CAACgB,MAAM,CAAEF,IAAY,IAAK,CAACd,KAAK,CAAClC,QAAQ,CAACgD,IAAI,CAAC,CAAC,CAC7D;MACH;IACF;EACF,CAAC,MAAM;IACL5E,GAAG,CAAC8D,KAAK,GAAGA,KAAK;EACnB;EAEA9D,GAAG,CAACvB,IAAI,CAAC,GAAG;IACV+B,MAAM;IACNqB,MAAM;IACNC,OAAO,EAAEA,OAAO,CAACiD,GAAG,CAAE3H,CAAS,IAAK;MAClC,IAAIA,CAAC,KAAKiB,MAAM,IAAI0D,IAAI,EAAE;QACxB,OAAO,CAAC3E,CAAC,EAAE;UAAE4H,QAAQ,EAAE;QAAK,CAAC,CAAC;MAChC;MAEA,IAAI5H,CAAC,KAAK,UAAU,IAAIA,CAAC,KAAK,QAAQ,IAAIA,CAAC,KAAK,YAAY,EAAE;QAC5D,OAAO,CAACA,CAAC,EAAE;UAAE6E;QAAI,CAAC,CAAC;MACrB;MAEA,OAAO7E,CAAC;IACV,CAAC;EACH,CAAC;EAED,IAAI4C,GAAG,CAACiF,IAAI,EAAE;IACZ,MAAMjB,KAAK,GAAG,aAAanC,MAAM,GAAG;IAEpC,IAAI7B,GAAG,CAACiF,IAAI,CAACC,wBAAwB,EAAE;MACrC,MAAM;QAAEA;MAAyB,CAAC,GAAGlF,GAAG,CAACiF,IAAI;MAE7C,IAAI,CAACC,wBAAwB,CAACtD,QAAQ,CAACoC,KAAK,CAAC,EAAE;QAC7CkB,wBAAwB,CAACxD,IAAI,CAACsC,KAAK,CAAC;MACtC;IACF,CAAC,MAAM;MACLhE,GAAG,CAACiF,IAAI,CAACC,wBAAwB,GAAG,CAAClB,KAAK,CAAC;IAC7C;EACF;EAEAhE,GAAG,CAACmF,YAAY,GAAGnF,GAAG,CAACmF,YAAY,IAAI,CAAC,eAAe,CAAC;EAExD,IAAI,CAACnF,GAAG,CAACmF,YAAY,CAACvD,QAAQ,CAAC,GAAGC,MAAM,GAAG,CAAC,EAAE;IAC5C7B,GAAG,CAACmF,YAAY,CAACzD,IAAI,CAAC,GAAGG,MAAM,GAAG,CAAC;EACrC;EAEA,MAAM/B,gBAAE,CAACyC,SAAS,CAACrD,kBAAkB,EAAEc,GAAG,EAAE;IAC1C4D,MAAM,EAAE;EACV,CAAC,CAAC;EAEF,MAAMwB,WAAW,GAAG,CAClBjG,aAAI,CAAC0B,IAAI,CAAClC,IAAI,EAAE,YAAY,CAAC,EAC7BQ,aAAI,CAAC0B,IAAI,CAAClC,IAAI,EAAE,eAAe,CAAC,CACjC;EAED,KAAK,MAAM0G,UAAU,IAAID,WAAW,EAAE;IACpC,IAAI,MAAMtF,gBAAE,CAACC,UAAU,CAACsF,UAAU,CAAC,EAAE;MACnC,MAAMC,OAAO,GAAG,MAAMxF,gBAAE,CAACK,QAAQ,CAACkF,UAAU,EAAE,OAAO,CAAC;MAEtD,IAAI,CAACC,OAAO,CAACC,KAAK,CAAC,IAAI,CAAC,CAAC3D,QAAQ,CAAC,GAAGC,MAAM,GAAG,CAAC,EAAE;QAC/C,MAAM/B,gBAAE,CAAC0F,SAAS,CAChBH,UAAU,EACV,GAAGC,OAAO,yBAAyBzD,MAAM,KAC3C,CAAC;MACH;IACF;EACF;EAEA,MAAM4D,cAAc,GAAG,CAAC,MAAM3F,gBAAE,CAACC,UAAU,CAACZ,aAAI,CAAC0B,IAAI,CAAClC,IAAI,EAAE,WAAW,CAAC,CAAC,IACrE,MAAM,GACN,KAAK;EAET+G,OAAO,CAACC,GAAG,CACT,IAAAC,eAAM,EAAC;AACb,gBAAgBC,cAAK,CAACC,MAAM,CAAC9F,GAAG,CAACvB,IAAI,CAAC;AACtC;AACA,QAAQoH,cAAK,CAACE,OAAO,CACb,GAAGF,cAAK,CAACG,IAAI,CAAC,oBAAoB,CAAC,aACrC,CAAC,GAAGH,cAAK,CAACI,IAAI,CAAC,GAAG,CAAC;AACzB;AACA,UAAUJ,cAAK,CAACI,IAAI,CAAC,GAAG,CAAC,IAAIR,cAAc;AAC3C;AACA,QAAQI,cAAK,CAACC,MAAM,CAAC,YAAY,CAAC;AAClC,KAAK,CACD,CAAC;AACH,CAAC,CAAC,CACDvG,OAAO,CAAC,OAAO,EAAE,4BAA4B,EAAEnB,IAAI,EAAE,MAAO8H,IAAI,IAAK;EACpE,IAAI,EAAE,MAAMpG,gBAAE,CAACC,UAAU,CAACb,kBAAkB,CAAC,CAAC,EAAE;IAC9C,MAAM,IAAIiH,KAAK,CACb,2CAA2CxH,IAAI,iCACjD,CAAC;EACH;EAEA,MAAMyB,MAAM,GAAG,MAAMtB,QAAQ,CAACuB,MAAM,CAAC,CAAC;EAEtC,IAAI,CAACD,MAAM,EAAEE,MAAM,EAAE;IACnB5D,MAAM,CAACmD,IAAI,CACT,gCAAgCqG,IAAI,CAACE,EAAE,qCACzC,CAAC;EACH;EAEA,MAAMC,OAAgB,GAAGjG,MAAM,CAAEE,MAAM;EAEvC,IAAI,CAAC+F,OAAO,CAACvE,OAAO,EAAEN,MAAM,EAAE;IAC5B9E,MAAM,CAACmD,IAAI,CACT,6CAA6CV,aAAI,CAACmH,QAAQ,CACxD3H,IAAI,EACJyB,MAAM,CAAEmG,QACV,CAAC,IACH,CAAC;EACH;EAEA,MAAM/F,MAAM,GAAG6F,OAAO,CAAC7F,MAAM;EAE7B,IAAI,CAACA,MAAM,EAAE;IACX9D,MAAM,CAACmD,IAAI,CACT,mDAAmDV,aAAI,CAACmH,QAAQ,CAC9D3H,IAAI,EACJyB,MAAM,CAAEmG,QACV,CAAC,IACH,CAAC;EACH;EAEA,MAAM1E,MAAM,GAAGwE,OAAO,CAACxE,MAAM;EAE7B,IAAI,CAACA,MAAM,EAAE;IACXnF,MAAM,CAACmD,IAAI,CACT,mDAAmDV,aAAI,CAACmH,QAAQ,CAC9D3H,IAAI,EACJyB,MAAM,CAAEmG,QACV,CAAC,IACH,CAAC;EACH;EAEA,MAAMC,OAAO,GACXH,OAAO,CAACG,OAAO,IAAI,0CAA0C;EAE/D,MAAMC,MAAM,GAAG;IACbC,IAAI,EAAEhK,MAAM,CAACgK,IAAI;IACjBC,IAAI,EAAEjK,MAAM,CAACiK,IAAI;IACjBC,KAAK,EAAElK,MAAM,CAACkK,KAAK;IACnBC,OAAO,EAAEnK,MAAM,CAACmK;EAClB,CAAC;EAED,IAAIX,IAAI,CAAC7H,MAAM,IAAI,IAAI,EAAE;IACvByI,WAAW,CACTZ,IAAI,CAAC7H,MAAM,EACXoI,MAAM,EACNjG,MAAM,EACNqB,MAAM,EACN2E,OACF,CAAC;EACH,CAAC,MAAM;IACL,KAAK,MAAMnI,MAAM,IAAIgI,OAAO,CAACvE,OAAO,EAAG;MACrCgF,WAAW,CACTzI,MAAM,EACNoI,MAAM,EACNjG,MAAM,EACNqB,MAAM,EACN2E,OACF,CAAC;IACH;EACF;AACF,CAAC,CAAC,CACDO,aAAa,CAAC,CAAC,CACfC,iBAAiB,CAAC,CAAC,CACnBtD,MAAM,CAAC,CAAC,CAACwC,IAAI;AAEhB,eAAeY,WAAWA,CACxBzI,MAAsD,EACtDoI,MAAc,EACdjG,MAAc,EACdqB,MAAc,EACd2E,OAAe,EACf;EACA,MAAMS,UAAU,GAAGC,KAAK,CAACC,OAAO,CAAC9I,MAAM,CAAC,GAAGA,MAAM,CAAC,CAAC,CAAC,GAAGA,MAAM;EAC7D,MAAM+I,aAAa,GAAGF,KAAK,CAACC,OAAO,CAAC9I,MAAM,CAAC,GAAGA,MAAM,CAAC,CAAC,CAAC,GAAG2D,SAAS;EAEnEyE,MAAM,CAACC,IAAI,CAAC,mBAAmBb,cAAK,CAACwB,IAAI,CAACJ,UAAU,CAAC,EAAE,CAAC;EAExD,QAAQA,UAAU;IAChB,KAAK,UAAU;MACb,MAAM,IAAAK,iBAAa,EAAC;QAClB3I,IAAI;QACJ6B,MAAM,EAAErB,aAAI,CAACC,OAAO,CAACT,IAAI,EAAE6B,MAAM,CAAC;QAClCqB,MAAM,EAAE1C,aAAI,CAACC,OAAO,CAACT,IAAI,EAAEkD,MAAM,EAAE,UAAU,CAAC;QAC9C2E,OAAO;QACPH,OAAO,EAAEe,aAAa;QACtBX;MACF,CAAC,CAAC;MACF;IACF,KAAK,QAAQ;MACX,MAAM,IAAAc,eAAW,EAAC;QAChB5I,IAAI;QACJ6B,MAAM,EAAErB,aAAI,CAACC,OAAO,CAACT,IAAI,EAAE6B,MAAM,CAAC;QAClCqB,MAAM,EAAE1C,aAAI,CAACC,OAAO,CAACT,IAAI,EAAEkD,MAAM,EAAE,QAAQ,CAAC;QAC5C2E,OAAO;QACPH,OAAO,EAAEe,aAAa;QACtBX;MACF,CAAC,CAAC;MACF;IACF,KAAK,YAAY;MACf,MAAM,IAAAe,mBAAe,EAAC;QACpB7I,IAAI;QACJ6B,MAAM,EAAErB,aAAI,CAACC,OAAO,CAACT,IAAI,EAAE6B,MAAM,CAAC;QAClCqB,MAAM,EAAE1C,aAAI,CAACC,OAAO,CAACT,IAAI,EAAEkD,MAAM,EAAE,YAAY,CAAC;QAChDwE,OAAO,EAAEe,aAAa;QACtBX;MACF,CAAC,CAAC;MACF;IACF,KAAK,SAAS;MACZ,MAAM,IAAAgB,gBAAY,EAAC;QACjB9I,IAAI;QACJ6B,MAAM,EAAErB,aAAI,CAACC,OAAO,CAACT,IAAI,EAAE6B,MAAM,CAAC;QAClCqB,MAAM,EAAE1C,aAAI,CAACC,OAAO,CAACT,IAAI,EAAEkD,MAAM,EAAE,YAAY,CAAC;QAChD4E;MACF,CAAC,CAAC;MACF;IACF;MACE/J,MAAM,CAACmD,IAAI,CAAC,kBAAkBgG,cAAK,CAACwB,IAAI,CAACJ,UAAU,CAAC,GAAG,CAAC;EAC5D;AACF","ignoreList":[]}
1
+ {"version":3,"file":"index.js","names":["_path","_interopRequireDefault","require","_fsExtra","_kleur","_dedent","_yargs","_cosmiconfig","_isGitDirty","_prompts","logger","_interopRequireWildcard","_commonjs","_module","_typescript","_codegen","_custom","_getRequireWildcardCache","e","WeakMap","r","t","__esModule","default","has","get","n","__proto__","a","Object","defineProperty","getOwnPropertyDescriptor","u","hasOwnProperty","call","i","set","args","target","type","description","choices","name","version","root","process","cwd","explorer","cosmiconfig","stopDir","searchPlaces","projectPackagePath","path","resolve","FLOW_PRGAMA_REGEX","yargs","command","isGitDirty","shouldContinue","prompts","message","initial","exit","fs","pathExists","pkg","JSON","parse","readFile","result","search","config","devDependencies","source","validate","input","Boolean","entryFile","join","fromEntries","entries","sort","b","localeCompare","questions","title","value","selected","test","length","endsWith","push","keys","includes","output","targets","flow","undefined","esm","main","module","types","import","tsconfig","writeJSON","compilerOptions","rootDir","allowUnreachableCode","allowUnusedLabels","esModuleInterop","forceConsistentCasingInFileNames","jsx","lib","moduleResolution","noFallthroughCasesInSwitch","noImplicitReturns","noImplicitUseStrict","noStrictGenericChecks","noUncheckedIndexedAccess","noUnusedLocals","noUnusedParameters","resolveJsonModule","skipLibCheck","strict","verbatimModuleSyntax","spaces","prepare","files","key","entry","replace","exportsField","codegenConfig","includesGeneratedCode","exports","stringify","startsWith","remove","scripts","pkgFiles","some","file","update","filter","map","copyFlow","jest","modulePathIgnorePatterns","eslintIgnore","ignorefiles","ignorefile","content","split","writeFile","packageManager","console","log","dedent","kleur","yellow","magenta","bold","gray","argv","Error","$0","options","relative","filepath","exclude","report","info","warn","error","success","buildTarget","demandCommand","recommendCommands","targetName","Array","isArray","targetOptions","blue","buildCommonJS","buildModule","buildTypescript","buildCodegen","customTarget"],"sources":["../src/index.ts"],"sourcesContent":["import path from 'path';\nimport fs from 'fs-extra';\nimport kleur from 'kleur';\nimport dedent from 'dedent';\nimport yargs from 'yargs';\nimport { cosmiconfig } from 'cosmiconfig';\nimport isGitDirty from 'is-git-dirty';\nimport prompts, { type PromptObject } from './utils/prompts';\nimport * as logger from './utils/logger';\nimport buildCommonJS from './targets/commonjs';\nimport buildModule from './targets/module';\nimport buildTypescript from './targets/typescript';\nimport buildCodegen from './targets/codegen';\nimport customTarget from './targets/custom';\nimport type { Options, Report, Target } from './types';\n\ntype ArgName = 'target';\n\nconst args = {\n target: {\n type: 'string',\n description: 'The target to build',\n choices: ['commonjs', 'module', 'typescript', 'codegen'] satisfies Target[],\n },\n} satisfies Record<ArgName, yargs.Options>;\n\n// eslint-disable-next-line import/no-commonjs, @typescript-eslint/no-var-requires\nconst { name, version } = require('../package.json');\n\nconst root = process.cwd();\nconst explorer = cosmiconfig(name, {\n stopDir: root,\n searchPlaces: [\n 'package.json',\n 'bob.config.mjs',\n 'bob.config.cjs',\n 'bob.config.js',\n ],\n});\n\nconst projectPackagePath = path.resolve(root, 'package.json');\n\nconst FLOW_PRGAMA_REGEX = /\\*?\\s*@(flow)\\b/m;\n\nyargs\n .command('init', 'configure the package to use bob', {}, async () => {\n if (isGitDirty()) {\n const { shouldContinue } = await prompts({\n type: 'confirm',\n name: 'shouldContinue',\n message: `The working directory is not clean.\\n You should commit or stash your changes before configuring bob.\\n Continue anyway?`,\n initial: false,\n });\n\n if (!shouldContinue) {\n process.exit(0);\n }\n }\n\n if (!(await fs.pathExists(projectPackagePath))) {\n logger.exit(\n `Couldn't find a 'package.json' file in '${root}'.\\n Are you in a project folder?`\n );\n }\n\n const pkg = JSON.parse(await fs.readFile(projectPackagePath, 'utf-8'));\n const result = await explorer.search();\n\n if (result?.config && pkg.devDependencies && name in pkg.devDependencies) {\n const { shouldContinue } = await prompts({\n type: 'confirm',\n name: 'shouldContinue',\n message: `The project seems to be already configured with bob.\\n Do you want to overwrite the existing configuration?`,\n initial: false,\n });\n\n if (!shouldContinue) {\n process.exit(0);\n }\n }\n\n const { source } = await prompts({\n type: 'text',\n name: 'source',\n message: 'Where are your source files?',\n initial: 'src',\n validate: (input) => Boolean(input),\n });\n\n let entryFile;\n\n if (await fs.pathExists(path.join(root, source, 'index.js'))) {\n entryFile = 'index.js';\n } else if (await fs.pathExists(path.join(root, source, 'index.ts'))) {\n entryFile = 'index.ts';\n } else if (await fs.pathExists(path.join(root, source, 'index.tsx'))) {\n entryFile = 'index.tsx';\n }\n\n if (!entryFile) {\n logger.exit(\n `Couldn't find a 'index.js'. 'index.ts' or 'index.tsx' file under '${source}'.\\n Please re-run the CLI after creating it.`\n );\n return;\n }\n\n pkg.devDependencies = Object.fromEntries(\n [\n ...Object.entries(pkg.devDependencies || {}),\n [name, `^${version}`],\n ].sort(([a], [b]) => a.localeCompare(b))\n );\n\n const questions: PromptObject[] = [\n {\n type: 'text',\n name: 'output',\n message: 'Where do you want to generate the output files?',\n initial: 'lib',\n validate: (input: string) => Boolean(input),\n },\n {\n type: 'multiselect',\n name: 'targets',\n message: 'Which targets do you want to build?',\n choices: [\n {\n title: 'commonjs - for running in Node (tests, SSR etc.)',\n value: 'commonjs',\n selected: true,\n },\n {\n title: 'module - for bundlers (metro, webpack etc.)',\n value: 'module',\n selected: true,\n },\n {\n title: 'typescript - declaration files for typechecking',\n value: 'typescript',\n selected: /\\.tsx?$/.test(entryFile),\n },\n ],\n validate: (input: string) => Boolean(input.length),\n },\n ];\n\n if (\n entryFile.endsWith('.js') &&\n FLOW_PRGAMA_REGEX.test(\n await fs.readFile(path.join(root, source, entryFile), 'utf-8')\n )\n ) {\n questions.push({\n type: 'confirm',\n name: 'flow',\n message: 'Do you want to publish definitions for flow?',\n initial: Object.keys(pkg.devDependencies || {}).includes('flow-bin'),\n });\n }\n\n const { output, targets, flow } = await prompts(questions);\n\n const target =\n targets[0] === 'commonjs' || targets[0] === 'module'\n ? targets[0]\n : undefined;\n\n const entries: {\n [key in 'source' | 'main' | 'module' | 'types']?: string;\n } = {\n source: `./${path.join(source, entryFile)}`,\n };\n\n let esm = false;\n\n if (targets.includes('module')) {\n esm = true;\n\n if (targets.includes('commonjs')) {\n entries.main = `./${path.join(output, 'commonjs', 'index.js')}`;\n }\n\n entries.module = `./${path.join(output, 'module', 'index.js')}`;\n } else if (targets.includes('commonjs')) {\n entries.main = `./${path.join(output, 'commonjs', 'index.js')}`;\n } else {\n entries.main = entries.source;\n }\n\n const types: {\n [key in 'require' | 'import']?: string;\n } = {};\n\n if (targets.includes('typescript')) {\n types.require = `./${path.join(\n output,\n 'typescript',\n 'commonjs',\n source,\n 'index.d.ts'\n )}`;\n\n types.import = `./${path.join(\n output,\n 'typescript',\n 'module',\n source,\n 'index.d.ts'\n )}`;\n\n entries.types = types.require;\n\n if (!(await fs.pathExists(path.join(root, 'tsconfig.json')))) {\n const { tsconfig } = await prompts({\n type: 'confirm',\n name: 'tsconfig',\n message: `You have enabled 'typescript' compilation, but we couldn't find a 'tsconfig.json' in project root.\\n Generate one?`,\n initial: true,\n });\n\n if (tsconfig) {\n await fs.writeJSON(\n path.join(root, 'tsconfig.json'),\n {\n compilerOptions: {\n rootDir: '.',\n allowUnreachableCode: false,\n allowUnusedLabels: false,\n esModuleInterop: true,\n forceConsistentCasingInFileNames: true,\n jsx: 'react-jsx',\n lib: ['ESNext'],\n module: 'ESNext',\n moduleResolution: 'Bundler',\n noFallthroughCasesInSwitch: true,\n noImplicitReturns: true,\n noImplicitUseStrict: false,\n noStrictGenericChecks: false,\n noUncheckedIndexedAccess: true,\n noUnusedLocals: true,\n noUnusedParameters: true,\n resolveJsonModule: true,\n skipLibCheck: true,\n strict: true,\n target: 'ESNext',\n verbatimModuleSyntax: true,\n },\n },\n { spaces: 2 }\n );\n }\n }\n }\n\n const prepare = 'bob build';\n const files = [\n source,\n output,\n '!**/__tests__',\n '!**/__fixtures__',\n '!**/__mocks__',\n ];\n\n for (const key in entries) {\n const entry = entries[key as keyof typeof entries];\n\n if (pkg[key] && pkg[key] !== entry) {\n const { replace } = await prompts({\n type: 'confirm',\n name: 'replace',\n message: `Your package.json has the '${key}' field set to '${pkg[key]}'.\\n Do you want to replace it with '${entry}'?`,\n initial: true,\n });\n\n if (replace) {\n pkg[key] = entry;\n }\n } else {\n pkg[key] = entry;\n }\n }\n\n if (esm) {\n let replace = false;\n\n const exportsField = {\n '.': {\n import: {\n ...(types.import ? { types: types.import } : null),\n ...(entries.module ? { default: entries.module } : null),\n },\n require: {\n ...(types.require ? { types: types.require } : null),\n ...(entries.main ? { default: entries.main } : null),\n },\n },\n };\n\n if (pkg.codegenConfig && !pkg.codegenConfig.includesGeneratedCode) {\n // @ts-expect-error The exports is not strictly types therefore it doesn't know about the package.json property\n exportsField['./package.json'] = './package.json';\n }\n\n if (\n pkg.exports &&\n JSON.stringify(pkg.exports) !== JSON.stringify(exportsField)\n ) {\n replace = (\n await prompts({\n type: 'confirm',\n name: 'replace',\n message: `Your package.json has 'exports' field set.\\n Do you want to replace it?`,\n initial: true,\n })\n ).replace;\n } else {\n replace = true;\n }\n\n if (replace) {\n pkg.exports = exportsField;\n }\n }\n\n if (\n pkg['react-native'] &&\n (pkg['react-native'].startsWith(source) ||\n pkg['react-native'].startsWith(`./${source}`))\n ) {\n const { remove } = await prompts({\n type: 'confirm',\n name: 'remove',\n 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?`,\n initial: true,\n });\n\n if (remove) {\n delete pkg['react-native'];\n }\n }\n\n if (pkg.scripts?.prepare && pkg.scripts.prepare !== prepare) {\n const { replace } = await prompts({\n type: 'confirm',\n name: 'replace',\n message: `Your package.json has the 'scripts.prepare' field set to '${pkg.scripts.prepare}'.\\n Do you want to replace it with '${prepare}'?`,\n initial: true,\n });\n\n if (replace) {\n pkg.scripts.prepare = prepare;\n }\n } else {\n pkg.scripts = pkg.scripts || {};\n pkg.scripts.prepare = prepare;\n }\n\n if (pkg.files) {\n const pkgFiles = pkg.files;\n\n if (files?.some((file) => !pkgFiles.includes(file))) {\n const { update } = await prompts({\n type: 'confirm',\n name: 'update',\n message: `Your package.json already has a 'files' field.\\n Do you want to update it?`,\n initial: true,\n });\n\n if (update) {\n pkg.files = [\n ...files,\n ...pkg.files.filter((file: string) => !files.includes(file)),\n ];\n }\n }\n } else {\n pkg.files = files;\n }\n\n pkg[name] = {\n source,\n output,\n targets: targets.map((t: string) => {\n if (t === target && flow) {\n return [t, { copyFlow: true }];\n }\n\n if (t === 'commonjs' || t === 'module' || t === 'typescript') {\n return [t, { esm }];\n }\n\n return t;\n }),\n };\n\n if (pkg.jest) {\n const entry = `<rootDir>/${output}/`;\n\n if (pkg.jest.modulePathIgnorePatterns) {\n const { modulePathIgnorePatterns } = pkg.jest;\n\n if (!modulePathIgnorePatterns.includes(entry)) {\n modulePathIgnorePatterns.push(entry);\n }\n } else {\n pkg.jest.modulePathIgnorePatterns = [entry];\n }\n }\n\n pkg.eslintIgnore = pkg.eslintIgnore || ['node_modules/'];\n\n if (!pkg.eslintIgnore.includes(`${output}/`)) {\n pkg.eslintIgnore.push(`${output}/`);\n }\n\n await fs.writeJSON(projectPackagePath, pkg, {\n spaces: 2,\n });\n\n const ignorefiles = [\n path.join(root, '.gitignore'),\n path.join(root, '.eslintignore'),\n ];\n\n for (const ignorefile of ignorefiles) {\n if (await fs.pathExists(ignorefile)) {\n const content = await fs.readFile(ignorefile, 'utf-8');\n\n if (!content.split('\\n').includes(`${output}/`)) {\n await fs.writeFile(\n ignorefile,\n `${content}\\n# generated by bob\\n${output}/\\n`\n );\n }\n }\n }\n\n const packageManager = (await fs.pathExists(path.join(root, 'yarn.lock')))\n ? 'yarn'\n : 'npm';\n\n console.log(\n dedent(`\n Project ${kleur.yellow(pkg.name)} configured successfully!\n\n ${kleur.magenta(\n `${kleur.bold('Perform last steps')} by running`\n )}${kleur.gray(':')}\n\n ${kleur.gray('$')} ${packageManager} install\n\n ${kleur.yellow('Good luck!')}\n `)\n );\n })\n .command('build', 'build files for publishing', args, async (argv) => {\n if (!(await fs.pathExists(projectPackagePath))) {\n throw new Error(\n `Couldn't find a 'package.json' file in '${root}'. Are you in a project folder?`\n );\n }\n\n const result = await explorer.search();\n\n if (!result?.config) {\n logger.exit(\n `No configuration found. Run '${argv.$0} init' to create one automatically.`\n );\n }\n\n const options: Options = result!.config;\n\n if (!options.targets?.length) {\n logger.exit(\n `No targets found in the configuration in '${path.relative(\n root,\n result!.filepath\n )}'.`\n );\n }\n\n const source = options.source;\n\n if (!source) {\n logger.exit(\n `No source option found in the configuration in '${path.relative(\n root,\n result!.filepath\n )}'.`\n );\n }\n\n const output = options.output;\n\n if (!output) {\n logger.exit(\n `No source option found in the configuration in '${path.relative(\n root,\n result!.filepath\n )}'.`\n );\n }\n\n const exclude =\n options.exclude ?? '**/{__tests__,__fixtures__,__mocks__}/**';\n\n const report = {\n info: logger.info,\n warn: logger.warn,\n error: logger.error,\n success: logger.success,\n };\n\n if (argv.target != null) {\n buildTarget(\n argv.target,\n report,\n source as string,\n output as string,\n exclude\n );\n } else {\n for (const target of options.targets!) {\n buildTarget(\n target,\n report,\n source as string,\n output as string,\n exclude\n );\n }\n }\n })\n .demandCommand()\n .recommendCommands()\n .strict().argv;\n\nasync function buildTarget(\n target: Exclude<Options['targets'], undefined>[number],\n report: Report,\n source: string,\n output: string,\n exclude: string\n) {\n const targetName = Array.isArray(target) ? target[0] : target;\n const targetOptions = Array.isArray(target) ? target[1] : undefined;\n\n report.info(`Building target ${kleur.blue(targetName)}`);\n\n switch (targetName) {\n case 'commonjs':\n await buildCommonJS({\n root,\n source: path.resolve(root, source),\n output: path.resolve(root, output, 'commonjs'),\n exclude,\n options: targetOptions,\n report,\n });\n break;\n case 'module':\n await buildModule({\n root,\n source: path.resolve(root, source),\n output: path.resolve(root, output, 'module'),\n exclude,\n options: targetOptions,\n report,\n });\n break;\n case 'typescript':\n await buildTypescript({\n root,\n source: path.resolve(root, source),\n output: path.resolve(root, output, 'typescript'),\n options: targetOptions,\n report,\n });\n break;\n case 'codegen':\n await buildCodegen({\n root,\n source: path.resolve(root, source),\n output: path.resolve(root, output, 'typescript'),\n report,\n });\n break;\n case 'custom':\n await customTarget({\n options: targetOptions,\n source: path.resolve(root, source),\n report,\n root,\n });\n break;\n default:\n logger.exit(`Invalid target ${kleur.blue(targetName)}.`);\n }\n}\n"],"mappings":"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","ignoreList":[]}
@@ -0,0 +1,48 @@
1
+ "use strict";
2
+
3
+ Object.defineProperty(exports, "__esModule", {
4
+ value: true
5
+ });
6
+ exports.default = customTarget;
7
+ var _kleur = _interopRequireDefault(require("kleur"));
8
+ var _path = _interopRequireDefault(require("path"));
9
+ var _fsExtra = _interopRequireDefault(require("fs-extra"));
10
+ var _spawn = require("../utils/spawn");
11
+ var _dedent = _interopRequireDefault(require("dedent"));
12
+ var _del = _interopRequireDefault(require("del"));
13
+ function _interopRequireDefault(e) { return e && e.__esModule ? e : { default: e }; }
14
+ async function customTarget({
15
+ options,
16
+ root,
17
+ report
18
+ }) {
19
+ if (options?.script == null) {
20
+ report.error((0, _dedent.default)(`No script was provided with the custom target.
21
+ Example: ${_kleur.default.green('{["custom", { "script": "generateTypes" }}')}`));
22
+ process.exit(1);
23
+ }
24
+ const pathToClean = options.clean ? _path.default.relative(root, options.clean) : undefined;
25
+ if (pathToClean) {
26
+ report.info(`Cleaning up ${_kleur.default.blue(pathToClean)}`);
27
+ await (0, _del.default)([_path.default.resolve(root, pathToClean)]);
28
+ }
29
+ const packageManagerExecutable = process.env.npm_execpath ?? 'npm';
30
+ const packageManagerArgs = ['run', options.script];
31
+
32
+ // usr/bin/yarn -> yarn
33
+ const packageManagerName = _path.default.basename(packageManagerExecutable);
34
+ report.info(`Running ${_kleur.default.blue(packageManagerName)} ${_kleur.default.blue(packageManagerArgs.join(' '))}`);
35
+ try {
36
+ await (0, _spawn.spawn)(packageManagerExecutable, packageManagerArgs, {
37
+ stdio: ['ignore', 'ignore', 'inherit']
38
+ });
39
+ } catch (e) {
40
+ report.error(`An error occurred when running ${_kleur.default.blue(options.script)}`);
41
+ process.exit(1);
42
+ }
43
+ report.success(`Ran the ${_kleur.default.blue(options.script)} script succesfully`);
44
+ if (options.clean && pathToClean && !(await _fsExtra.default.pathExists(pathToClean))) {
45
+ report.warn(`Custom target with the ${_kleur.default.blue(options.script)} script has ${_kleur.default.blue(options.clean)} as the ${_kleur.default.bold('clean')} option but this path wasn't created after running the script. Are you sure you've defined the ${_kleur.default.bold('clean')} path correctly?`);
46
+ }
47
+ }
48
+ //# sourceMappingURL=custom.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"custom.js","names":["_kleur","_interopRequireDefault","require","_path","_fsExtra","_spawn","_dedent","_del","e","__esModule","default","customTarget","options","root","report","script","error","dedent","kleur","green","process","exit","pathToClean","clean","path","relative","undefined","info","blue","del","resolve","packageManagerExecutable","env","npm_execpath","packageManagerArgs","packageManagerName","basename","join","spawn","stdio","success","fs","pathExists","warn","bold"],"sources":["../../src/targets/custom.ts"],"sourcesContent":["import kleur from 'kleur';\nimport path from 'path';\nimport fs from 'fs-extra';\nimport type { Input } from '../types';\nimport { spawn } from '../utils/spawn';\nimport dedent from 'dedent';\nimport del from 'del';\n\ntype Options = Omit<Input, 'output'> & {\n options?: {\n script?: string;\n clean?: string;\n };\n};\n\nexport default async function customTarget({ options, root, report }: Options) {\n if (options?.script == null) {\n report.error(\n dedent(\n `No script was provided with the custom target.\n Example: ${kleur.green('{[\"custom\", { \"script\": \"generateTypes\" }}')}`\n )\n );\n process.exit(1);\n }\n\n const pathToClean = options.clean\n ? path.relative(root, options.clean)\n : undefined;\n\n if (pathToClean) {\n report.info(`Cleaning up ${kleur.blue(pathToClean)}`);\n\n await del([path.resolve(root, pathToClean)]);\n }\n\n const packageManagerExecutable = process.env.npm_execpath ?? 'npm';\n const packageManagerArgs = ['run', options.script];\n\n // usr/bin/yarn -> yarn\n const packageManagerName = path.basename(packageManagerExecutable);\n report.info(\n `Running ${kleur.blue(packageManagerName)} ${kleur.blue(\n packageManagerArgs.join(' ')\n )}`\n );\n\n try {\n await spawn(packageManagerExecutable, packageManagerArgs, {\n stdio: ['ignore', 'ignore', 'inherit'],\n });\n } catch (e) {\n report.error(\n `An error occurred when running ${kleur.blue(options.script)}`\n );\n process.exit(1);\n }\n\n report.success(`Ran the ${kleur.blue(options.script)} script succesfully`);\n\n if (options.clean && pathToClean && !(await fs.pathExists(pathToClean))) {\n report.warn(\n `Custom target with the ${kleur.blue(\n options.script\n )} script has ${kleur.blue(options.clean)} as the ${kleur.bold(\n 'clean'\n )} option but this path wasn't created after running the script. Are you sure you've defined the ${kleur.bold(\n 'clean'\n )} path correctly?`\n );\n }\n}\n"],"mappings":";;;;;;AAAA,IAAAA,MAAA,GAAAC,sBAAA,CAAAC,OAAA;AACA,IAAAC,KAAA,GAAAF,sBAAA,CAAAC,OAAA;AACA,IAAAE,QAAA,GAAAH,sBAAA,CAAAC,OAAA;AAEA,IAAAG,MAAA,GAAAH,OAAA;AACA,IAAAI,OAAA,GAAAL,sBAAA,CAAAC,OAAA;AACA,IAAAK,IAAA,GAAAN,sBAAA,CAAAC,OAAA;AAAsB,SAAAD,uBAAAO,CAAA,WAAAA,CAAA,IAAAA,CAAA,CAAAC,UAAA,GAAAD,CAAA,KAAAE,OAAA,EAAAF,CAAA;AASP,eAAeG,YAAYA,CAAC;EAAEC,OAAO;EAAEC,IAAI;EAAEC;AAAgB,CAAC,EAAE;EAC7E,IAAIF,OAAO,EAAEG,MAAM,IAAI,IAAI,EAAE;IAC3BD,MAAM,CAACE,KAAK,CACV,IAAAC,eAAM,EACJ;AACR,oBAAoBC,cAAK,CAACC,KAAK,CAAC,4CAA4C,CAAC,EACvE,CACF,CAAC;IACDC,OAAO,CAACC,IAAI,CAAC,CAAC,CAAC;EACjB;EAEA,MAAMC,WAAW,GAAGV,OAAO,CAACW,KAAK,GAC7BC,aAAI,CAACC,QAAQ,CAACZ,IAAI,EAAED,OAAO,CAACW,KAAK,CAAC,GAClCG,SAAS;EAEb,IAAIJ,WAAW,EAAE;IACfR,MAAM,CAACa,IAAI,CAAC,eAAeT,cAAK,CAACU,IAAI,CAACN,WAAW,CAAC,EAAE,CAAC;IAErD,MAAM,IAAAO,YAAG,EAAC,CAACL,aAAI,CAACM,OAAO,CAACjB,IAAI,EAAES,WAAW,CAAC,CAAC,CAAC;EAC9C;EAEA,MAAMS,wBAAwB,GAAGX,OAAO,CAACY,GAAG,CAACC,YAAY,IAAI,KAAK;EAClE,MAAMC,kBAAkB,GAAG,CAAC,KAAK,EAAEtB,OAAO,CAACG,MAAM,CAAC;;EAElD;EACA,MAAMoB,kBAAkB,GAAGX,aAAI,CAACY,QAAQ,CAACL,wBAAwB,CAAC;EAClEjB,MAAM,CAACa,IAAI,CACT,WAAWT,cAAK,CAACU,IAAI,CAACO,kBAAkB,CAAC,IAAIjB,cAAK,CAACU,IAAI,CACrDM,kBAAkB,CAACG,IAAI,CAAC,GAAG,CAC7B,CAAC,EACH,CAAC;EAED,IAAI;IACF,MAAM,IAAAC,YAAK,EAACP,wBAAwB,EAAEG,kBAAkB,EAAE;MACxDK,KAAK,EAAE,CAAC,QAAQ,EAAE,QAAQ,EAAE,SAAS;IACvC,CAAC,CAAC;EACJ,CAAC,CAAC,OAAO/B,CAAC,EAAE;IACVM,MAAM,CAACE,KAAK,CACV,kCAAkCE,cAAK,CAACU,IAAI,CAAChB,OAAO,CAACG,MAAM,CAAC,EAC9D,CAAC;IACDK,OAAO,CAACC,IAAI,CAAC,CAAC,CAAC;EACjB;EAEAP,MAAM,CAAC0B,OAAO,CAAC,WAAWtB,cAAK,CAACU,IAAI,CAAChB,OAAO,CAACG,MAAM,CAAC,qBAAqB,CAAC;EAE1E,IAAIH,OAAO,CAACW,KAAK,IAAID,WAAW,IAAI,EAAE,MAAMmB,gBAAE,CAACC,UAAU,CAACpB,WAAW,CAAC,CAAC,EAAE;IACvER,MAAM,CAAC6B,IAAI,CACT,0BAA0BzB,cAAK,CAACU,IAAI,CAClChB,OAAO,CAACG,MACV,CAAC,eAAeG,cAAK,CAACU,IAAI,CAAChB,OAAO,CAACW,KAAK,CAAC,WAAWL,cAAK,CAAC0B,IAAI,CAC5D,OACF,CAAC,kGAAkG1B,cAAK,CAAC0B,IAAI,CAC3G,OACF,CAAC,kBACH,CAAC;EACH;AACF","ignoreList":[]}
package/lib/types.js.map CHANGED
@@ -1 +1 @@
1
- {"version":3,"file":"types.js","names":[],"sources":["../src/types.ts"],"sourcesContent":["export type Log = (message: string) => void;\nexport type Report = {\n info: Log;\n warn: Log;\n success: Log;\n error: Log;\n};\n\nexport type Input = {\n root: string;\n source: string;\n output: string;\n report: Report;\n};\n\nexport type Target = 'commonjs' | 'module' | 'typescript' | 'codegen';\n\nexport type Options = {\n source?: string;\n output?: string;\n targets?: (Target | [target: Target, options: object])[];\n exclude?: string;\n};\n\ndeclare module '@babel/core' {\n export interface TransformCaller {\n rewriteImportExtensions: boolean;\n jsxRuntime: 'automatic' | 'classic';\n }\n}\n"],"mappings":"","ignoreList":[]}
1
+ {"version":3,"file":"types.js","names":[],"sources":["../src/types.ts"],"sourcesContent":["export type Log = (message: string) => void;\nexport type Report = {\n info: Log;\n warn: Log;\n success: Log;\n error: Log;\n};\n\nexport type Input = {\n root: string;\n source: string;\n output: string;\n report: Report;\n};\n\nexport type Target =\n | 'commonjs'\n | 'module'\n | 'typescript'\n | 'codegen'\n | 'custom';\n\nexport type Options = {\n source?: string;\n output?: string;\n targets?: (Target | [target: Target, options: object])[];\n exclude?: string;\n};\n\ndeclare module '@babel/core' {\n export interface TransformCaller {\n rewriteImportExtensions: boolean;\n jsxRuntime: 'automatic' | 'classic';\n }\n}\n"],"mappings":"","ignoreList":[]}
package/package.json CHANGED
@@ -1,6 +1,6 @@
1
1
  {
2
2
  "name": "react-native-builder-bob",
3
- "version": "0.36.0",
3
+ "version": "0.37.0",
4
4
  "description": "CLI to build JavaScript files for React Native libraries",
5
5
  "keywords": [
6
6
  "react-native",
@@ -87,5 +87,5 @@
87
87
  "jest": "^29.7.0",
88
88
  "mock-fs": "^5.2.0"
89
89
  },
90
- "gitHead": "f06514d852d578df98008b0ce87de69e0fde59bd"
90
+ "gitHead": "ec2c874cd7ee78ecdadb97ea1f978121663ad41f"
91
91
  }