create-react-native-library 0.39.0 → 0.41.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,8 +13,9 @@ var _prompts = _interopRequireDefault(require("./utils/prompts"));
13
13
  var _generateExampleApp = _interopRequireDefault(require("./utils/generateExampleApp"));
14
14
  var _spawn = require("./utils/spawn");
15
15
  var _package = require("../package.json");
16
- function _interopRequireDefault(obj) { return obj && obj.__esModule ? obj : { default: obj }; }
17
- const FALLBACK_BOB_VERSION = '0.28.0';
16
+ var _addCodegenBuildScript = require("./utils/addCodegenBuildScript");
17
+ function _interopRequireDefault(e) { return e && e.__esModule ? e : { default: e }; }
18
+ const FALLBACK_BOB_VERSION = '0.29.0';
18
19
  const BINARIES = [/(gradlew|\.(jar|keystore|png|jpg|gif))$/, /\$\.yarn(?![a-z])/];
19
20
  const COMMON_FILES = _path.default.resolve(__dirname, '../templates/common');
20
21
  const COMMON_EXAMPLE_FILES = _path.default.resolve(__dirname, '../templates/common-example');
@@ -545,6 +546,9 @@ async function create(_argv) {
545
546
  rootPackageJson.devDependencies.react = examplePackageJson.dependencies.react;
546
547
  rootPackageJson.devDependencies['react-native'] = examplePackageJson.dependencies['react-native'];
547
548
  }
549
+ if (arch !== 'legacy') {
550
+ (0, _addCodegenBuildScript.addCodegenBuildScript)(folder, options.project.name);
551
+ }
548
552
  }
549
553
 
550
554
  // Some of the passed args can already be derived from the generated package.json file.
package/lib/index.js.map CHANGED
@@ -1 +1 @@
1
- {"version":3,"file":"index.js","names":["_path","_interopRequireDefault","require","_fsExtra","_ejs","_dedent","_kleur","_yargs","_ora","_validateNpmPackageName","_githubUsername","_prompts","_generateExampleApp","_spawn","_package","obj","__esModule","default","FALLBACK_BOB_VERSION","BINARIES","COMMON_FILES","path","resolve","__dirname","COMMON_EXAMPLE_FILES","COMMON_LOCAL_FILES","JS_FILES","EXPO_FILES","CPP_FILES","NATIVE_COMMON_FILES","NATIVE_COMMON_EXAMPLE_FILES","NATIVE_FILES","module_legacy","module_new","module_mixed","view_legacy","view_mixed","view_new","OBJC_FILES","module_common","KOTLIN_FILES","SWIFT_FILES","LANGUAGE_CHOICES","title","value","types","EXAMPLE_CHOICES","description","NEWARCH_DESCRIPTION","BACKCOMPAT_DESCRIPTION","TYPE_CHOICES","args","type","choices","map","create","_argv","_","$0","argv","bobVersionPromise","spawn","local","hasPackageJson","fs","pathExists","join","process","cwd","answers","prompts","name","message","initial","folder","includes","validate","input","pathExistsSync","console","log","kleur","blue","exit","error","code","email","e","basename","questions","validateNpmPackage","validForNewPackages","test","undefined","Boolean","previous","username","githubUsername","authorUrl","slug","replace","values","filter","choice","push","key","Object","entries","question","find","q","valid","String","some","c","green","red","Array","isArray","length","prev","prompt","result","authorName","authorEmail","repoUrl","languages","example","reactNativeVersion","bobVersion","Promise","race","setTimeout","moduleType","startsWith","arch","project","namespace","split","toLowerCase","pack","options","bob","version","charAt","toUpperCase","$1","slice","package","package_dir","package_cpp","identifier","native","cpp","swift","view","module","author","url","repo","year","Date","getFullYear","copyDir","source","dest","mkdirp","files","readdir","f","target","ejs","render","openDelimiter","closeDelimiter","file","stats","stat","isDirectory","r","content","readFile","writeFile","copyFile","cyan","warn","yellow","spinner","ora","start","text","generateExampleApp","templateType","remove","rootPackageJson","readJson","examplePackageJson","readJSON","dependencies","react","devDependencies","ignoredAnswers","libraryMetadata","fromEntries","answer","writeJson","spaces","isInGitRepo","succeed","relative","linked","packageManager","packageJsonPath","packageJson","isReactNativeProject","writeJSON","dedent","magenta","bold","gray","platforms","ios","color","android","web","script","yargs","command","demandCommand","recommendCommands","fail","parserConfiguration","strict"],"sources":["../src/index.ts"],"sourcesContent":["import path from 'path';\nimport fs from 'fs-extra';\nimport ejs from 'ejs';\nimport dedent from 'dedent';\nimport kleur from 'kleur';\nimport yargs from 'yargs';\nimport ora from 'ora';\nimport validateNpmPackage from 'validate-npm-package-name';\nimport githubUsername from 'github-username';\nimport prompts, { type PromptObject } from './utils/prompts';\nimport generateExampleApp, {\n type ExampleType,\n} from './utils/generateExampleApp';\nimport { spawn } from './utils/spawn';\nimport { version } from '../package.json';\n\nconst FALLBACK_BOB_VERSION = '0.28.0';\n\nconst BINARIES = [\n /(gradlew|\\.(jar|keystore|png|jpg|gif))$/,\n /\\$\\.yarn(?![a-z])/,\n];\n\nconst COMMON_FILES = path.resolve(__dirname, '../templates/common');\nconst COMMON_EXAMPLE_FILES = path.resolve(\n __dirname,\n '../templates/common-example'\n);\nconst COMMON_LOCAL_FILES = path.resolve(__dirname, '../templates/common-local');\nconst JS_FILES = path.resolve(__dirname, '../templates/js-library');\nconst EXPO_FILES = path.resolve(__dirname, '../templates/expo-library');\nconst CPP_FILES = path.resolve(__dirname, '../templates/cpp-library');\nconst NATIVE_COMMON_FILES = path.resolve(\n __dirname,\n '../templates/native-common'\n);\nconst NATIVE_COMMON_EXAMPLE_FILES = path.resolve(\n __dirname,\n '../templates/native-common-example'\n);\n\nconst NATIVE_FILES = {\n module_legacy: path.resolve(__dirname, '../templates/native-library-legacy'),\n module_new: path.resolve(__dirname, '../templates/native-library-new'),\n module_mixed: path.resolve(__dirname, '../templates/native-library-mixed'),\n view_legacy: path.resolve(__dirname, '../templates/native-view-legacy'),\n view_mixed: path.resolve(__dirname, '../templates/native-view-mixed'),\n view_new: path.resolve(__dirname, '../templates/native-view-new'),\n} as const;\n\nconst OBJC_FILES = {\n module_common: path.resolve(__dirname, '../templates/objc-library'),\n view_legacy: path.resolve(__dirname, '../templates/objc-view-legacy'),\n view_mixed: path.resolve(__dirname, '../templates/objc-view-mixed'),\n view_new: path.resolve(__dirname, '../templates/objc-view-new'),\n} as const;\n\nconst KOTLIN_FILES = {\n module_legacy: path.resolve(__dirname, '../templates/kotlin-library-legacy'),\n module_new: path.resolve(__dirname, '../templates/kotlin-library-new'),\n module_mixed: path.resolve(__dirname, '../templates/kotlin-library-mixed'),\n view_legacy: path.resolve(__dirname, '../templates/kotlin-view-legacy'),\n view_mixed: path.resolve(__dirname, '../templates/kotlin-view-mixed'),\n view_new: path.resolve(__dirname, '../templates/kotlin-view-new'),\n} as const;\n\nconst SWIFT_FILES = {\n module_legacy: path.resolve(__dirname, '../templates/swift-library-legacy'),\n view_legacy: path.resolve(__dirname, '../templates/swift-view-legacy'),\n} as const;\n\ntype ArgName =\n | 'slug'\n | 'description'\n | 'author-name'\n | 'author-email'\n | 'author-url'\n | 'repo-url'\n | 'languages'\n | 'type'\n | 'local'\n | 'example'\n | 'react-native-version';\n\ntype ProjectLanguages = 'kotlin-objc' | 'kotlin-swift' | 'cpp' | 'js';\n\ntype ProjectType =\n | 'module-legacy'\n | 'module-new'\n | 'module-mixed'\n | 'view-mixed'\n | 'view-new'\n | 'view-legacy'\n | 'library';\n\ntype Answers = {\n name: string;\n slug: string;\n description: string;\n authorName: string;\n authorEmail: string;\n authorUrl: string;\n repoUrl: string;\n languages: ProjectLanguages;\n type?: ProjectType;\n example?: ExampleType;\n reactNativeVersion?: string;\n local?: boolean;\n};\n\nconst LANGUAGE_CHOICES: {\n title: string;\n value: ProjectLanguages;\n types: ProjectType[];\n}[] = [\n {\n title: 'Kotlin & Objective-C',\n value: 'kotlin-objc',\n types: [\n 'module-legacy',\n 'module-new',\n 'module-mixed',\n 'view-mixed',\n 'view-new',\n 'view-legacy',\n ],\n },\n {\n title: 'Kotlin & Swift',\n value: 'kotlin-swift',\n types: ['module-legacy', 'view-legacy'],\n },\n {\n title: 'C++ for Android & iOS',\n value: 'cpp',\n types: ['module-legacy', 'module-mixed', 'module-new'],\n },\n {\n title: 'JavaScript for Android, iOS & Web',\n value: 'js',\n types: ['library'],\n },\n];\n\nconst EXAMPLE_CHOICES = [\n {\n title: 'Test app',\n value: 'test-app',\n description: \"app's native code is abstracted away\",\n },\n {\n title: 'Vanilla',\n value: 'vanilla',\n description: \"provides access to app's native code\",\n },\n {\n title: 'Expo',\n value: 'expo',\n description: 'managed expo project with web support',\n },\n] as const;\n\nconst NEWARCH_DESCRIPTION = 'requires new arch (experimental)';\nconst BACKCOMPAT_DESCRIPTION = 'supports new arch (experimental)';\n\nconst TYPE_CHOICES: {\n title: string;\n value: ProjectType;\n description: string;\n}[] = [\n {\n title: 'JavaScript library',\n value: 'library',\n description: 'supports Expo Go and Web',\n },\n {\n title: 'Native module',\n value: 'module-legacy',\n description: 'bridge for native APIs to JS',\n },\n {\n title: 'Native view',\n value: 'view-legacy',\n description: 'bridge for native views to JS',\n },\n {\n title: 'Turbo module with backward compat',\n value: 'module-mixed',\n description: BACKCOMPAT_DESCRIPTION,\n },\n {\n title: 'Turbo module',\n value: 'module-new',\n description: NEWARCH_DESCRIPTION,\n },\n {\n title: 'Fabric view with backward compat',\n value: 'view-mixed',\n description: BACKCOMPAT_DESCRIPTION,\n },\n {\n title: 'Fabric view',\n value: 'view-new',\n description: NEWARCH_DESCRIPTION,\n },\n];\n\nconst args: Record<ArgName, yargs.Options> = {\n 'slug': {\n description: 'Name of the npm package',\n type: 'string',\n },\n 'description': {\n description: 'Description of the npm package',\n type: 'string',\n },\n 'author-name': {\n description: 'Name of the package author',\n type: 'string',\n },\n 'author-email': {\n description: 'Email address of the package author',\n type: 'string',\n },\n 'author-url': {\n description: 'URL for the package author',\n type: 'string',\n },\n 'repo-url': {\n description: 'URL for the repository',\n type: 'string',\n },\n 'languages': {\n description: 'Languages you want to use',\n choices: LANGUAGE_CHOICES.map(({ value }) => value),\n },\n 'type': {\n description: 'Type of library you want to develop',\n choices: TYPE_CHOICES.map(({ value }) => value),\n },\n 'react-native-version': {\n description: 'Version of React Native to use, uses latest if not specified',\n type: 'string',\n },\n 'local': {\n description: 'Whether to create a local library',\n type: 'boolean',\n },\n 'example': {\n description: 'Type of the example app to create',\n type: 'string',\n choices: EXAMPLE_CHOICES.map(({ value }) => value),\n },\n};\n\n// FIXME: fix the type\n// eslint-disable-next-line @typescript-eslint/no-explicit-any\nasync function create(_argv: yargs.Arguments<any>) {\n // eslint-disable-next-line @typescript-eslint/no-unused-vars\n const { _, $0, ...argv } = _argv;\n\n // Prefetch bob version in background while asking questions\n const bobVersionPromise = spawn('npm', [\n 'view',\n 'react-native-builder-bob',\n 'dist-tags.latest',\n ]);\n\n let local = false;\n\n if (typeof argv.local === 'boolean') {\n local = argv.local;\n } else {\n const hasPackageJson = await fs.pathExists(\n path.join(process.cwd(), 'package.json')\n );\n\n if (hasPackageJson) {\n // If we're under a project with package.json, ask the user if they want to create a local library\n const answers = await prompts({\n type: 'confirm',\n name: 'local',\n message: `Looks like you're under a project folder. Do you want to create a local library?`,\n initial: true,\n });\n\n local = answers.local;\n }\n }\n\n let folder;\n\n if (argv.name && !local) {\n folder = path.join(process.cwd(), argv.name);\n } else {\n const answers = await prompts({\n type: 'text',\n name: 'folder',\n message: `Where do you want to create the library?`,\n initial:\n local && argv.name && !argv.name.includes('/')\n ? `modules/${argv.name}`\n : argv.name,\n validate: (input) => {\n if (!input) {\n return 'Cannot be empty';\n }\n\n if (fs.pathExistsSync(path.join(process.cwd(), input))) {\n return 'Folder already exists';\n }\n\n return true;\n },\n });\n\n folder = path.join(process.cwd(), answers.folder);\n }\n\n if (await fs.pathExists(folder)) {\n console.log(\n `A folder already exists at ${kleur.blue(\n folder\n )}! Please specify another folder name or delete the existing one.`\n );\n\n process.exit(1);\n }\n\n try {\n await spawn('npx', ['--help']);\n } catch (error) {\n // @ts-expect-error: TS doesn't know about `code`\n if (error != null && error.code === 'ENOENT') {\n console.log(\n `Couldn't find ${kleur.blue(\n 'npx'\n )}! Please install it by running ${kleur.blue('npm install -g npx')}`\n );\n\n process.exit(1);\n } else {\n throw error;\n }\n }\n\n let name, email;\n\n try {\n name = await spawn('git', ['config', '--get', 'user.name']);\n email = await spawn('git', ['config', '--get', 'user.email']);\n } catch (e) {\n // Ignore error\n }\n\n const basename = path.basename(folder);\n\n const questions: (Omit<PromptObject<keyof Answers>, 'validate' | 'name'> & {\n validate?: (value: string) => boolean | string;\n name: string;\n })[] = [\n {\n type: 'text',\n name: 'slug',\n message: 'What is the name of the npm package?',\n initial: validateNpmPackage(basename).validForNewPackages\n ? /^(@|react-native)/.test(basename)\n ? basename\n : `react-native-${basename}`\n : undefined,\n validate: (input) =>\n validateNpmPackage(input).validForNewPackages ||\n 'Must be a valid npm package name',\n },\n {\n type: 'text',\n name: 'description',\n message: 'What is the description for the package?',\n validate: (input) => Boolean(input) || 'Cannot be empty',\n },\n {\n type: local ? null : 'text',\n name: 'authorName',\n message: 'What is the name of package author?',\n initial: name,\n validate: (input) => Boolean(input) || 'Cannot be empty',\n },\n {\n type: local ? null : 'text',\n name: 'authorEmail',\n message: 'What is the email address for the package author?',\n initial: email,\n validate: (input) =>\n /^\\S+@\\S+$/.test(input) || 'Must be a valid email address',\n },\n {\n type: local ? null : 'text',\n name: 'authorUrl',\n message: 'What is the URL for the package author?',\n // @ts-expect-error this is supported, but types are wrong\n initial: async (previous: string) => {\n try {\n const username = await githubUsername(previous);\n\n return `https://github.com/${username}`;\n } catch (e) {\n // Ignore error\n }\n\n return undefined;\n },\n validate: (input) => /^https?:\\/\\//.test(input) || 'Must be a valid URL',\n },\n {\n type: local ? null : 'text',\n name: 'repoUrl',\n message: 'What is the URL for the repository?',\n initial: (_: string, answers: Answers) => {\n if (/^https?:\\/\\/github.com\\/[^/]+/.test(answers.authorUrl)) {\n return `${answers.authorUrl}/${answers.slug\n .replace(/^@/, '')\n .replace(/\\//g, '-')}`;\n }\n\n return '';\n },\n validate: (input) => /^https?:\\/\\//.test(input) || 'Must be a valid URL',\n },\n {\n type: 'select',\n name: 'type',\n message: 'What type of library do you want to develop?',\n choices: TYPE_CHOICES,\n },\n {\n type: 'select',\n name: 'languages',\n message: 'Which languages do you want to use?',\n choices: (_, values) => {\n return LANGUAGE_CHOICES.filter((choice) => {\n if (choice.types) {\n return choice.types.includes(values.type);\n }\n\n return true;\n });\n },\n },\n ];\n\n if (!local) {\n questions.push({\n type: 'select',\n name: 'example',\n message: 'What type of example app do you want to create?',\n choices: (_, values) => {\n return EXAMPLE_CHOICES.filter((choice) => {\n if (values.type) {\n return values.type === 'library'\n ? choice.value === 'expo'\n : choice.value !== 'expo';\n }\n\n return true;\n });\n },\n });\n }\n\n const validate = (answers: Answers) => {\n for (const [key, value] of Object.entries(answers)) {\n if (value == null) {\n continue;\n }\n\n const question = questions.find((q) => q.name === key);\n\n if (question == null) {\n continue;\n }\n\n let valid = question.validate ? question.validate(String(value)) : true;\n\n // We also need to guard against invalid choices\n // If we don't already have a validation message to provide a better error\n if (typeof valid !== 'string' && 'choices' in question) {\n const choices =\n typeof question.choices === 'function'\n ? question.choices(\n undefined,\n // @ts-expect-error: it complains about optional values, but it should be fine\n answers,\n question\n )\n : question.choices;\n\n if (choices && !choices.some((choice) => choice.value === value)) {\n valid = `Supported values are - ${choices.map((c) =>\n kleur.green(c.value)\n )}`;\n }\n }\n\n if (valid !== true) {\n let message = `Invalid value ${kleur.red(\n String(value)\n )} passed for ${kleur.blue(key)}`;\n\n if (typeof valid === 'string') {\n message += `: ${valid}`;\n }\n\n console.log(message);\n\n process.exit(1);\n }\n }\n };\n\n // Validate arguments passed to the CLI\n validate(argv);\n\n const answers = {\n ...argv,\n local,\n ...(await prompts(\n questions\n .filter((question) => {\n // Skip questions which are passed as parameter and pass validation\n if (\n argv[question.name] != null &&\n question.validate?.(argv[question.name]) !== false\n ) {\n return false;\n }\n\n // Skip questions with a single choice\n if (\n Array.isArray(question.choices) &&\n question.choices.length === 1\n ) {\n return false;\n }\n\n return true;\n })\n .map((question) => {\n const { type, choices } = question;\n\n // Skip dynamic questions with a single choice\n if (type === 'select' && typeof choices === 'function') {\n return {\n ...question,\n type: (prev, values, prompt) => {\n const result = choices(prev, { ...argv, ...values }, prompt);\n\n if (result && result.length === 1) {\n return null;\n }\n\n return type;\n },\n };\n }\n\n return question;\n })\n )),\n } as Answers;\n\n validate(answers);\n\n const {\n slug,\n description,\n authorName,\n authorEmail,\n authorUrl,\n repoUrl,\n type = 'module-mixed',\n languages = type === 'library' ? 'js' : 'kotlin-objc',\n example = local ? 'none' : type === 'library' ? 'expo' : 'test-app',\n reactNativeVersion,\n } = answers;\n\n // Get latest version of Bob from NPM\n let bobVersion: string;\n\n try {\n bobVersion = await Promise.race([\n new Promise<string>((resolve) => {\n setTimeout(() => resolve(FALLBACK_BOB_VERSION), 1000);\n }),\n bobVersionPromise,\n ]);\n } catch (e) {\n // Fallback to a known version if we couldn't fetch\n bobVersion = FALLBACK_BOB_VERSION;\n }\n\n const moduleType = type.startsWith('view-') ? 'view' : 'module';\n const arch =\n type === 'module-new' || type === 'view-new'\n ? 'new'\n : type === 'module-mixed' || type === 'view-mixed'\n ? 'mixed'\n : 'legacy';\n\n const project = slug.replace(/^(react-native-|@[^/]+\\/)/, '');\n\n let namespace: string | undefined;\n\n if (slug.startsWith('@') && slug.includes('/')) {\n namespace = slug\n .split('/')[0]\n ?.replace(/[^a-z0-9]/g, '')\n .toLowerCase();\n }\n\n // Create a package identifier with specified namespace when possible\n const pack = `${namespace ? `${namespace}.` : ''}${project\n .replace(/[^a-z0-9]/g, '')\n .toLowerCase()}`;\n\n const options = {\n bob: {\n version: bobVersion || FALLBACK_BOB_VERSION,\n },\n project: {\n slug,\n description,\n name:\n /^[A-Z]/.test(basename) && /^[a-z0-9]+$/i.test(basename)\n ? // If the project name is already in PascalCase, use it as-is\n basename\n : // Otherwise, convert it to PascalCase and remove any non-alphanumeric characters\n `${project.charAt(0).toUpperCase()}${project\n .replace(/[^a-z0-9](\\w)/g, (_, $1) => $1.toUpperCase())\n .slice(1)}`,\n package: pack,\n package_dir: pack.replace(/\\./g, '/'),\n package_cpp: pack.replace(/\\./g, '_'),\n identifier: slug.replace(/[^a-z0-9]+/g, '-').replace(/^-/, ''),\n native: languages !== 'js',\n arch,\n cpp: languages === 'cpp',\n swift: languages === 'kotlin-swift',\n view: moduleType === 'view',\n module: moduleType === 'module',\n },\n author: {\n name: authorName,\n email: authorEmail,\n url: authorUrl,\n },\n repo: repoUrl,\n example,\n year: new Date().getFullYear(),\n };\n\n const copyDir = async (source: string, dest: string) => {\n await fs.mkdirp(dest);\n\n const files = await fs.readdir(source);\n\n for (const f of files) {\n const target = path.join(\n dest,\n ejs.render(f.replace(/^\\$/, ''), options, {\n openDelimiter: '{',\n closeDelimiter: '}',\n })\n );\n\n const file = path.join(source, f);\n const stats = await fs.stat(file);\n\n if (stats.isDirectory()) {\n await copyDir(file, target);\n } else if (!BINARIES.some((r) => r.test(file))) {\n const content = await fs.readFile(file, 'utf8');\n\n await fs.writeFile(target, ejs.render(content, options));\n } else {\n await fs.copyFile(file, target);\n }\n }\n };\n\n await fs.mkdirp(folder);\n\n if (reactNativeVersion != null) {\n if (example === 'vanilla') {\n console.log(\n `${kleur.blue('ℹ')} Using ${kleur.cyan(\n `react-native@${reactNativeVersion}`\n )} for the example`\n );\n } else {\n console.warn(\n `${kleur.yellow(\n '⚠'\n )} Ignoring --react-native-version for unsupported example type: ${kleur.cyan(\n example\n )}`\n );\n }\n }\n\n const spinner = ora().start();\n\n if (example !== 'none') {\n spinner.text = 'Generating example app';\n\n await generateExampleApp({\n type: example,\n dest: folder,\n arch,\n project: options.project,\n bobVersion,\n reactNativeVersion,\n });\n }\n\n spinner.text = 'Copying files';\n\n if (local) {\n await copyDir(COMMON_LOCAL_FILES, folder);\n } else {\n await copyDir(COMMON_FILES, folder);\n\n if (example !== 'none') {\n await copyDir(COMMON_EXAMPLE_FILES, folder);\n }\n }\n\n if (languages === 'js') {\n await copyDir(JS_FILES, folder);\n await copyDir(EXPO_FILES, folder);\n } else {\n await copyDir(NATIVE_COMMON_FILES, folder);\n\n if (example !== 'none') {\n await copyDir(NATIVE_COMMON_EXAMPLE_FILES, folder);\n }\n\n if (moduleType === 'module') {\n await copyDir(NATIVE_FILES[`${moduleType}_${arch}`], folder);\n } else {\n await copyDir(NATIVE_FILES[`${moduleType}_${arch}`], folder);\n }\n\n if (options.project.swift) {\n await copyDir(SWIFT_FILES[`${moduleType}_legacy`], folder);\n } else {\n if (moduleType === 'module') {\n await copyDir(OBJC_FILES[`${moduleType}_common`], folder);\n } else {\n await copyDir(OBJC_FILES[`view_${arch}`], folder);\n }\n }\n\n const templateType = `${moduleType}_${arch}` as const;\n\n await copyDir(KOTLIN_FILES[templateType], folder);\n\n if (options.project.cpp) {\n await copyDir(CPP_FILES, folder);\n await fs.remove(path.join(folder, 'ios', `${options.project.name}.m`));\n }\n }\n\n const rootPackageJson = await fs.readJson(path.join(folder, 'package.json'));\n\n if (example !== 'none') {\n // Set `react` and `react-native` versions of root `package.json` from example `package.json`\n const examplePackageJson = await fs.readJSON(\n path.join(folder, 'example', 'package.json')\n );\n\n if (\n examplePackageJson.dependencies?.react &&\n examplePackageJson.dependencies?.['react-native']\n ) {\n rootPackageJson.devDependencies = rootPackageJson.devDependencies || {};\n rootPackageJson.devDependencies.react =\n examplePackageJson.dependencies.react;\n rootPackageJson.devDependencies['react-native'] =\n examplePackageJson.dependencies['react-native'];\n }\n }\n\n // Some of the passed args can already be derived from the generated package.json file.\n const ignoredAnswers: (keyof Answers)[] = [\n 'name',\n 'slug',\n 'description',\n 'authorName',\n 'authorEmail',\n 'authorUrl',\n 'repoUrl',\n 'example',\n 'reactNativeVersion',\n 'local',\n ];\n\n type AnswerEntries<T extends keyof Answers = keyof Answers> = [\n T,\n Answers[T],\n ][];\n\n const libraryMetadata = Object.fromEntries(\n (Object.entries(answers) as AnswerEntries).filter(\n ([answer]) => !ignoredAnswers.includes(answer)\n )\n );\n\n libraryMetadata.version = version;\n rootPackageJson['create-react-native-library'] = libraryMetadata;\n\n await fs.writeJson(path.join(folder, 'package.json'), rootPackageJson, {\n spaces: 2,\n });\n\n if (!local) {\n let isInGitRepo = false;\n\n try {\n isInGitRepo =\n (await spawn('git', ['rev-parse', '--is-inside-work-tree'])) === 'true';\n } catch (e) {\n // Ignore error\n }\n\n if (!isInGitRepo) {\n try {\n await spawn('git', ['init'], { cwd: folder });\n await spawn('git', ['branch', '-M', 'main'], { cwd: folder });\n await spawn('git', ['add', '.'], { cwd: folder });\n await spawn('git', ['commit', '-m', 'chore: initial commit'], {\n cwd: folder,\n });\n } catch (e) {\n // Ignore error\n }\n }\n }\n\n spinner.succeed(\n `Project created successfully at ${kleur.yellow(\n path.relative(process.cwd(), folder)\n )}!\\n`\n );\n\n if (local) {\n let linked;\n\n const packageManager = (await fs.pathExists(\n path.join(process.cwd(), 'yarn.lock')\n ))\n ? 'yarn'\n : 'npm';\n\n const packageJsonPath = path.join(process.cwd(), 'package.json');\n\n if (await fs.pathExists(packageJsonPath)) {\n const packageJson = await fs.readJSON(packageJsonPath);\n const isReactNativeProject = Boolean(\n packageJson.dependencies?.['react-native']\n );\n\n if (isReactNativeProject) {\n packageJson.dependencies = packageJson.dependencies || {};\n packageJson.dependencies[slug] =\n packageManager === 'yarn'\n ? `link:./${path.relative(process.cwd(), folder)}`\n : `file:./${path.relative(process.cwd(), folder)}`;\n\n await fs.writeJSON(packageJsonPath, packageJson, {\n spaces: 2,\n });\n\n linked = true;\n }\n }\n\n console.log(\n dedent(`\n ${kleur.magenta(\n `${kleur.bold('Get started')} with the project`\n )}${kleur.gray(':')}\n\n ${\n (linked\n ? `- Run ${kleur.blue(\n `${packageManager} install`\n )} to link the library\\n`\n : `- Link the library at ${kleur.blue(\n path.relative(process.cwd(), folder)\n )} based on your project setup'\\n`) +\n `- Run ${kleur.blue(\n 'pod install --project-directory=ios'\n )} to install dependencies with CocoaPods\\n` +\n `- Run ${kleur.blue('npx react-native run-android')} or ${kleur.blue(\n 'npx react-native run-ios'\n )} to build and run the app\\n` +\n `- Import from ${kleur.blue(slug)} and use it in your app.`\n }\n\n ${kleur.yellow(`Good luck!`)}\n `)\n );\n } else {\n const platforms = {\n ios: { name: 'iOS', color: 'cyan' },\n android: { name: 'Android', color: 'green' },\n ...(example === 'expo'\n ? ({ web: { name: 'Web', color: 'blue' } } as const)\n : null),\n } as const;\n\n console.log(\n dedent(`\n ${kleur.magenta(\n `${kleur.bold('Get started')} with the project`\n )}${kleur.gray(':')}\n\n ${kleur.gray('$')} yarn\n ${Object.entries(platforms)\n .map(\n ([script, { name, color }]) => `\n ${kleur[color](`Run the example app on ${kleur.bold(name)}`)}${kleur.gray(\n ':'\n )}\n\n ${kleur.gray('$')} yarn example ${script}`\n )\n .join('\\n')}\n\n ${kleur.yellow(\n `See ${kleur.bold('CONTRIBUTING.md')} for more details. Good luck!`\n )}\n `)\n );\n }\n}\n\nyargs\n .command('$0 [name]', 'create a react native library', args, create)\n .demandCommand()\n .recommendCommands()\n .fail((message, error) => {\n console.log('\\n');\n\n if (error) {\n console.log(kleur.red(error.message));\n throw error;\n }\n\n if (message) {\n console.log(kleur.red(message));\n } else {\n console.log(\n kleur.red(`An unknown error occurred. See '--help' for usage guide.`)\n );\n }\n\n process.exit(1);\n })\n .parserConfiguration({\n // don't pass kebab-case args to handler.\n 'strip-dashed': true,\n })\n .strict().argv;\n"],"mappings":"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"}
1
+ {"version":3,"file":"index.js","names":["_path","_interopRequireDefault","require","_fsExtra","_ejs","_dedent","_kleur","_yargs","_ora","_validateNpmPackageName","_githubUsername","_prompts","_generateExampleApp","_spawn","_package","_addCodegenBuildScript","e","__esModule","default","FALLBACK_BOB_VERSION","BINARIES","COMMON_FILES","path","resolve","__dirname","COMMON_EXAMPLE_FILES","COMMON_LOCAL_FILES","JS_FILES","EXPO_FILES","CPP_FILES","NATIVE_COMMON_FILES","NATIVE_COMMON_EXAMPLE_FILES","NATIVE_FILES","module_legacy","module_new","module_mixed","view_legacy","view_mixed","view_new","OBJC_FILES","module_common","KOTLIN_FILES","SWIFT_FILES","LANGUAGE_CHOICES","title","value","types","EXAMPLE_CHOICES","description","NEWARCH_DESCRIPTION","BACKCOMPAT_DESCRIPTION","TYPE_CHOICES","args","type","choices","map","create","_argv","_","$0","argv","bobVersionPromise","spawn","local","hasPackageJson","fs","pathExists","join","process","cwd","answers","prompts","name","message","initial","folder","includes","validate","input","pathExistsSync","console","log","kleur","blue","exit","error","code","email","basename","questions","validateNpmPackage","validForNewPackages","test","undefined","Boolean","previous","username","githubUsername","authorUrl","slug","replace","values","filter","choice","push","key","Object","entries","question","find","q","valid","String","some","c","green","red","Array","isArray","length","prev","prompt","result","authorName","authorEmail","repoUrl","languages","example","reactNativeVersion","bobVersion","Promise","race","setTimeout","moduleType","startsWith","arch","project","namespace","split","toLowerCase","pack","options","bob","version","charAt","toUpperCase","$1","slice","package","package_dir","package_cpp","identifier","native","cpp","swift","view","module","author","url","repo","year","Date","getFullYear","copyDir","source","dest","mkdirp","files","readdir","f","target","ejs","render","openDelimiter","closeDelimiter","file","stats","stat","isDirectory","r","content","readFile","writeFile","copyFile","cyan","warn","yellow","spinner","ora","start","text","generateExampleApp","templateType","remove","rootPackageJson","readJson","examplePackageJson","readJSON","dependencies","react","devDependencies","addCodegenBuildScript","ignoredAnswers","libraryMetadata","fromEntries","answer","writeJson","spaces","isInGitRepo","succeed","relative","linked","packageManager","packageJsonPath","packageJson","isReactNativeProject","writeJSON","dedent","magenta","bold","gray","platforms","ios","color","android","web","script","yargs","command","demandCommand","recommendCommands","fail","parserConfiguration","strict"],"sources":["../src/index.ts"],"sourcesContent":["import path from 'path';\nimport fs from 'fs-extra';\nimport ejs from 'ejs';\nimport dedent from 'dedent';\nimport kleur from 'kleur';\nimport yargs from 'yargs';\nimport ora from 'ora';\nimport validateNpmPackage from 'validate-npm-package-name';\nimport githubUsername from 'github-username';\nimport prompts, { type PromptObject } from './utils/prompts';\nimport generateExampleApp, {\n type ExampleType,\n} from './utils/generateExampleApp';\nimport { spawn } from './utils/spawn';\nimport { version } from '../package.json';\nimport { addCodegenBuildScript } from './utils/addCodegenBuildScript';\n\nconst FALLBACK_BOB_VERSION = '0.29.0';\n\nconst BINARIES = [\n /(gradlew|\\.(jar|keystore|png|jpg|gif))$/,\n /\\$\\.yarn(?![a-z])/,\n];\n\nconst COMMON_FILES = path.resolve(__dirname, '../templates/common');\nconst COMMON_EXAMPLE_FILES = path.resolve(\n __dirname,\n '../templates/common-example'\n);\nconst COMMON_LOCAL_FILES = path.resolve(__dirname, '../templates/common-local');\nconst JS_FILES = path.resolve(__dirname, '../templates/js-library');\nconst EXPO_FILES = path.resolve(__dirname, '../templates/expo-library');\nconst CPP_FILES = path.resolve(__dirname, '../templates/cpp-library');\nconst NATIVE_COMMON_FILES = path.resolve(\n __dirname,\n '../templates/native-common'\n);\nconst NATIVE_COMMON_EXAMPLE_FILES = path.resolve(\n __dirname,\n '../templates/native-common-example'\n);\n\nconst NATIVE_FILES = {\n module_legacy: path.resolve(__dirname, '../templates/native-library-legacy'),\n module_new: path.resolve(__dirname, '../templates/native-library-new'),\n module_mixed: path.resolve(__dirname, '../templates/native-library-mixed'),\n view_legacy: path.resolve(__dirname, '../templates/native-view-legacy'),\n view_mixed: path.resolve(__dirname, '../templates/native-view-mixed'),\n view_new: path.resolve(__dirname, '../templates/native-view-new'),\n} as const;\n\nconst OBJC_FILES = {\n module_common: path.resolve(__dirname, '../templates/objc-library'),\n view_legacy: path.resolve(__dirname, '../templates/objc-view-legacy'),\n view_mixed: path.resolve(__dirname, '../templates/objc-view-mixed'),\n view_new: path.resolve(__dirname, '../templates/objc-view-new'),\n} as const;\n\nconst KOTLIN_FILES = {\n module_legacy: path.resolve(__dirname, '../templates/kotlin-library-legacy'),\n module_new: path.resolve(__dirname, '../templates/kotlin-library-new'),\n module_mixed: path.resolve(__dirname, '../templates/kotlin-library-mixed'),\n view_legacy: path.resolve(__dirname, '../templates/kotlin-view-legacy'),\n view_mixed: path.resolve(__dirname, '../templates/kotlin-view-mixed'),\n view_new: path.resolve(__dirname, '../templates/kotlin-view-new'),\n} as const;\n\nconst SWIFT_FILES = {\n module_legacy: path.resolve(__dirname, '../templates/swift-library-legacy'),\n view_legacy: path.resolve(__dirname, '../templates/swift-view-legacy'),\n} as const;\n\ntype ArgName =\n | 'slug'\n | 'description'\n | 'author-name'\n | 'author-email'\n | 'author-url'\n | 'repo-url'\n | 'languages'\n | 'type'\n | 'local'\n | 'example'\n | 'react-native-version';\n\ntype ProjectLanguages = 'kotlin-objc' | 'kotlin-swift' | 'cpp' | 'js';\n\ntype ProjectType =\n | 'module-legacy'\n | 'module-new'\n | 'module-mixed'\n | 'view-mixed'\n | 'view-new'\n | 'view-legacy'\n | 'library';\n\ntype Answers = {\n name: string;\n slug: string;\n description: string;\n authorName: string;\n authorEmail: string;\n authorUrl: string;\n repoUrl: string;\n languages: ProjectLanguages;\n type?: ProjectType;\n example?: ExampleType;\n reactNativeVersion?: string;\n local?: boolean;\n};\n\nconst LANGUAGE_CHOICES: {\n title: string;\n value: ProjectLanguages;\n types: ProjectType[];\n}[] = [\n {\n title: 'Kotlin & Objective-C',\n value: 'kotlin-objc',\n types: [\n 'module-legacy',\n 'module-new',\n 'module-mixed',\n 'view-mixed',\n 'view-new',\n 'view-legacy',\n ],\n },\n {\n title: 'Kotlin & Swift',\n value: 'kotlin-swift',\n types: ['module-legacy', 'view-legacy'],\n },\n {\n title: 'C++ for Android & iOS',\n value: 'cpp',\n types: ['module-legacy', 'module-mixed', 'module-new'],\n },\n {\n title: 'JavaScript for Android, iOS & Web',\n value: 'js',\n types: ['library'],\n },\n];\n\nconst EXAMPLE_CHOICES = [\n {\n title: 'Test app',\n value: 'test-app',\n description: \"app's native code is abstracted away\",\n },\n {\n title: 'Vanilla',\n value: 'vanilla',\n description: \"provides access to app's native code\",\n },\n {\n title: 'Expo',\n value: 'expo',\n description: 'managed expo project with web support',\n },\n] as const;\n\nconst NEWARCH_DESCRIPTION = 'requires new arch (experimental)';\nconst BACKCOMPAT_DESCRIPTION = 'supports new arch (experimental)';\n\nconst TYPE_CHOICES: {\n title: string;\n value: ProjectType;\n description: string;\n}[] = [\n {\n title: 'JavaScript library',\n value: 'library',\n description: 'supports Expo Go and Web',\n },\n {\n title: 'Native module',\n value: 'module-legacy',\n description: 'bridge for native APIs to JS',\n },\n {\n title: 'Native view',\n value: 'view-legacy',\n description: 'bridge for native views to JS',\n },\n {\n title: 'Turbo module with backward compat',\n value: 'module-mixed',\n description: BACKCOMPAT_DESCRIPTION,\n },\n {\n title: 'Turbo module',\n value: 'module-new',\n description: NEWARCH_DESCRIPTION,\n },\n {\n title: 'Fabric view with backward compat',\n value: 'view-mixed',\n description: BACKCOMPAT_DESCRIPTION,\n },\n {\n title: 'Fabric view',\n value: 'view-new',\n description: NEWARCH_DESCRIPTION,\n },\n];\n\nconst args: Record<ArgName, yargs.Options> = {\n 'slug': {\n description: 'Name of the npm package',\n type: 'string',\n },\n 'description': {\n description: 'Description of the npm package',\n type: 'string',\n },\n 'author-name': {\n description: 'Name of the package author',\n type: 'string',\n },\n 'author-email': {\n description: 'Email address of the package author',\n type: 'string',\n },\n 'author-url': {\n description: 'URL for the package author',\n type: 'string',\n },\n 'repo-url': {\n description: 'URL for the repository',\n type: 'string',\n },\n 'languages': {\n description: 'Languages you want to use',\n choices: LANGUAGE_CHOICES.map(({ value }) => value),\n },\n 'type': {\n description: 'Type of library you want to develop',\n choices: TYPE_CHOICES.map(({ value }) => value),\n },\n 'react-native-version': {\n description: 'Version of React Native to use, uses latest if not specified',\n type: 'string',\n },\n 'local': {\n description: 'Whether to create a local library',\n type: 'boolean',\n },\n 'example': {\n description: 'Type of the example app to create',\n type: 'string',\n choices: EXAMPLE_CHOICES.map(({ value }) => value),\n },\n};\n\n// FIXME: fix the type\n// eslint-disable-next-line @typescript-eslint/no-explicit-any\nasync function create(_argv: yargs.Arguments<any>) {\n // eslint-disable-next-line @typescript-eslint/no-unused-vars\n const { _, $0, ...argv } = _argv;\n\n // Prefetch bob version in background while asking questions\n const bobVersionPromise = spawn('npm', [\n 'view',\n 'react-native-builder-bob',\n 'dist-tags.latest',\n ]);\n\n let local = false;\n\n if (typeof argv.local === 'boolean') {\n local = argv.local;\n } else {\n const hasPackageJson = await fs.pathExists(\n path.join(process.cwd(), 'package.json')\n );\n\n if (hasPackageJson) {\n // If we're under a project with package.json, ask the user if they want to create a local library\n const answers = await prompts({\n type: 'confirm',\n name: 'local',\n message: `Looks like you're under a project folder. Do you want to create a local library?`,\n initial: true,\n });\n\n local = answers.local;\n }\n }\n\n let folder;\n\n if (argv.name && !local) {\n folder = path.join(process.cwd(), argv.name);\n } else {\n const answers = await prompts({\n type: 'text',\n name: 'folder',\n message: `Where do you want to create the library?`,\n initial:\n local && argv.name && !argv.name.includes('/')\n ? `modules/${argv.name}`\n : argv.name,\n validate: (input) => {\n if (!input) {\n return 'Cannot be empty';\n }\n\n if (fs.pathExistsSync(path.join(process.cwd(), input))) {\n return 'Folder already exists';\n }\n\n return true;\n },\n });\n\n folder = path.join(process.cwd(), answers.folder);\n }\n\n if (await fs.pathExists(folder)) {\n console.log(\n `A folder already exists at ${kleur.blue(\n folder\n )}! Please specify another folder name or delete the existing one.`\n );\n\n process.exit(1);\n }\n\n try {\n await spawn('npx', ['--help']);\n } catch (error) {\n // @ts-expect-error: TS doesn't know about `code`\n if (error != null && error.code === 'ENOENT') {\n console.log(\n `Couldn't find ${kleur.blue(\n 'npx'\n )}! Please install it by running ${kleur.blue('npm install -g npx')}`\n );\n\n process.exit(1);\n } else {\n throw error;\n }\n }\n\n let name, email;\n\n try {\n name = await spawn('git', ['config', '--get', 'user.name']);\n email = await spawn('git', ['config', '--get', 'user.email']);\n } catch (e) {\n // Ignore error\n }\n\n const basename = path.basename(folder);\n\n const questions: (Omit<PromptObject<keyof Answers>, 'validate' | 'name'> & {\n validate?: (value: string) => boolean | string;\n name: string;\n })[] = [\n {\n type: 'text',\n name: 'slug',\n message: 'What is the name of the npm package?',\n initial: validateNpmPackage(basename).validForNewPackages\n ? /^(@|react-native)/.test(basename)\n ? basename\n : `react-native-${basename}`\n : undefined,\n validate: (input) =>\n validateNpmPackage(input).validForNewPackages ||\n 'Must be a valid npm package name',\n },\n {\n type: 'text',\n name: 'description',\n message: 'What is the description for the package?',\n validate: (input) => Boolean(input) || 'Cannot be empty',\n },\n {\n type: local ? null : 'text',\n name: 'authorName',\n message: 'What is the name of package author?',\n initial: name,\n validate: (input) => Boolean(input) || 'Cannot be empty',\n },\n {\n type: local ? null : 'text',\n name: 'authorEmail',\n message: 'What is the email address for the package author?',\n initial: email,\n validate: (input) =>\n /^\\S+@\\S+$/.test(input) || 'Must be a valid email address',\n },\n {\n type: local ? null : 'text',\n name: 'authorUrl',\n message: 'What is the URL for the package author?',\n // @ts-expect-error this is supported, but types are wrong\n initial: async (previous: string) => {\n try {\n const username = await githubUsername(previous);\n\n return `https://github.com/${username}`;\n } catch (e) {\n // Ignore error\n }\n\n return undefined;\n },\n validate: (input) => /^https?:\\/\\//.test(input) || 'Must be a valid URL',\n },\n {\n type: local ? null : 'text',\n name: 'repoUrl',\n message: 'What is the URL for the repository?',\n initial: (_: string, answers: Answers) => {\n if (/^https?:\\/\\/github.com\\/[^/]+/.test(answers.authorUrl)) {\n return `${answers.authorUrl}/${answers.slug\n .replace(/^@/, '')\n .replace(/\\//g, '-')}`;\n }\n\n return '';\n },\n validate: (input) => /^https?:\\/\\//.test(input) || 'Must be a valid URL',\n },\n {\n type: 'select',\n name: 'type',\n message: 'What type of library do you want to develop?',\n choices: TYPE_CHOICES,\n },\n {\n type: 'select',\n name: 'languages',\n message: 'Which languages do you want to use?',\n choices: (_, values) => {\n return LANGUAGE_CHOICES.filter((choice) => {\n if (choice.types) {\n return choice.types.includes(values.type);\n }\n\n return true;\n });\n },\n },\n ];\n\n if (!local) {\n questions.push({\n type: 'select',\n name: 'example',\n message: 'What type of example app do you want to create?',\n choices: (_, values) => {\n return EXAMPLE_CHOICES.filter((choice) => {\n if (values.type) {\n return values.type === 'library'\n ? choice.value === 'expo'\n : choice.value !== 'expo';\n }\n\n return true;\n });\n },\n });\n }\n\n const validate = (answers: Answers) => {\n for (const [key, value] of Object.entries(answers)) {\n if (value == null) {\n continue;\n }\n\n const question = questions.find((q) => q.name === key);\n\n if (question == null) {\n continue;\n }\n\n let valid = question.validate ? question.validate(String(value)) : true;\n\n // We also need to guard against invalid choices\n // If we don't already have a validation message to provide a better error\n if (typeof valid !== 'string' && 'choices' in question) {\n const choices =\n typeof question.choices === 'function'\n ? question.choices(\n undefined,\n // @ts-expect-error: it complains about optional values, but it should be fine\n answers,\n question\n )\n : question.choices;\n\n if (choices && !choices.some((choice) => choice.value === value)) {\n valid = `Supported values are - ${choices.map((c) =>\n kleur.green(c.value)\n )}`;\n }\n }\n\n if (valid !== true) {\n let message = `Invalid value ${kleur.red(\n String(value)\n )} passed for ${kleur.blue(key)}`;\n\n if (typeof valid === 'string') {\n message += `: ${valid}`;\n }\n\n console.log(message);\n\n process.exit(1);\n }\n }\n };\n\n // Validate arguments passed to the CLI\n validate(argv);\n\n const answers = {\n ...argv,\n local,\n ...(await prompts(\n questions\n .filter((question) => {\n // Skip questions which are passed as parameter and pass validation\n if (\n argv[question.name] != null &&\n question.validate?.(argv[question.name]) !== false\n ) {\n return false;\n }\n\n // Skip questions with a single choice\n if (\n Array.isArray(question.choices) &&\n question.choices.length === 1\n ) {\n return false;\n }\n\n return true;\n })\n .map((question) => {\n const { type, choices } = question;\n\n // Skip dynamic questions with a single choice\n if (type === 'select' && typeof choices === 'function') {\n return {\n ...question,\n type: (prev, values, prompt) => {\n const result = choices(prev, { ...argv, ...values }, prompt);\n\n if (result && result.length === 1) {\n return null;\n }\n\n return type;\n },\n };\n }\n\n return question;\n })\n )),\n } as Answers;\n\n validate(answers);\n\n const {\n slug,\n description,\n authorName,\n authorEmail,\n authorUrl,\n repoUrl,\n type = 'module-mixed',\n languages = type === 'library' ? 'js' : 'kotlin-objc',\n example = local ? 'none' : type === 'library' ? 'expo' : 'test-app',\n reactNativeVersion,\n } = answers;\n\n // Get latest version of Bob from NPM\n let bobVersion: string;\n\n try {\n bobVersion = await Promise.race([\n new Promise<string>((resolve) => {\n setTimeout(() => resolve(FALLBACK_BOB_VERSION), 1000);\n }),\n bobVersionPromise,\n ]);\n } catch (e) {\n // Fallback to a known version if we couldn't fetch\n bobVersion = FALLBACK_BOB_VERSION;\n }\n\n const moduleType = type.startsWith('view-') ? 'view' : 'module';\n const arch =\n type === 'module-new' || type === 'view-new'\n ? 'new'\n : type === 'module-mixed' || type === 'view-mixed'\n ? 'mixed'\n : 'legacy';\n\n const project = slug.replace(/^(react-native-|@[^/]+\\/)/, '');\n\n let namespace: string | undefined;\n\n if (slug.startsWith('@') && slug.includes('/')) {\n namespace = slug\n .split('/')[0]\n ?.replace(/[^a-z0-9]/g, '')\n .toLowerCase();\n }\n\n // Create a package identifier with specified namespace when possible\n const pack = `${namespace ? `${namespace}.` : ''}${project\n .replace(/[^a-z0-9]/g, '')\n .toLowerCase()}`;\n\n const options = {\n bob: {\n version: bobVersion || FALLBACK_BOB_VERSION,\n },\n project: {\n slug,\n description,\n name:\n /^[A-Z]/.test(basename) && /^[a-z0-9]+$/i.test(basename)\n ? // If the project name is already in PascalCase, use it as-is\n basename\n : // Otherwise, convert it to PascalCase and remove any non-alphanumeric characters\n `${project.charAt(0).toUpperCase()}${project\n .replace(/[^a-z0-9](\\w)/g, (_, $1) => $1.toUpperCase())\n .slice(1)}`,\n package: pack,\n package_dir: pack.replace(/\\./g, '/'),\n package_cpp: pack.replace(/\\./g, '_'),\n identifier: slug.replace(/[^a-z0-9]+/g, '-').replace(/^-/, ''),\n native: languages !== 'js',\n arch,\n cpp: languages === 'cpp',\n swift: languages === 'kotlin-swift',\n view: moduleType === 'view',\n module: moduleType === 'module',\n },\n author: {\n name: authorName,\n email: authorEmail,\n url: authorUrl,\n },\n repo: repoUrl,\n example,\n year: new Date().getFullYear(),\n };\n\n const copyDir = async (source: string, dest: string) => {\n await fs.mkdirp(dest);\n\n const files = await fs.readdir(source);\n\n for (const f of files) {\n const target = path.join(\n dest,\n ejs.render(f.replace(/^\\$/, ''), options, {\n openDelimiter: '{',\n closeDelimiter: '}',\n })\n );\n\n const file = path.join(source, f);\n const stats = await fs.stat(file);\n\n if (stats.isDirectory()) {\n await copyDir(file, target);\n } else if (!BINARIES.some((r) => r.test(file))) {\n const content = await fs.readFile(file, 'utf8');\n\n await fs.writeFile(target, ejs.render(content, options));\n } else {\n await fs.copyFile(file, target);\n }\n }\n };\n\n await fs.mkdirp(folder);\n\n if (reactNativeVersion != null) {\n if (example === 'vanilla') {\n console.log(\n `${kleur.blue('ℹ')} Using ${kleur.cyan(\n `react-native@${reactNativeVersion}`\n )} for the example`\n );\n } else {\n console.warn(\n `${kleur.yellow(\n '⚠'\n )} Ignoring --react-native-version for unsupported example type: ${kleur.cyan(\n example\n )}`\n );\n }\n }\n\n const spinner = ora().start();\n\n if (example !== 'none') {\n spinner.text = 'Generating example app';\n\n await generateExampleApp({\n type: example,\n dest: folder,\n arch,\n project: options.project,\n bobVersion,\n reactNativeVersion,\n });\n }\n\n spinner.text = 'Copying files';\n\n if (local) {\n await copyDir(COMMON_LOCAL_FILES, folder);\n } else {\n await copyDir(COMMON_FILES, folder);\n\n if (example !== 'none') {\n await copyDir(COMMON_EXAMPLE_FILES, folder);\n }\n }\n\n if (languages === 'js') {\n await copyDir(JS_FILES, folder);\n await copyDir(EXPO_FILES, folder);\n } else {\n await copyDir(NATIVE_COMMON_FILES, folder);\n\n if (example !== 'none') {\n await copyDir(NATIVE_COMMON_EXAMPLE_FILES, folder);\n }\n\n if (moduleType === 'module') {\n await copyDir(NATIVE_FILES[`${moduleType}_${arch}`], folder);\n } else {\n await copyDir(NATIVE_FILES[`${moduleType}_${arch}`], folder);\n }\n\n if (options.project.swift) {\n await copyDir(SWIFT_FILES[`${moduleType}_legacy`], folder);\n } else {\n if (moduleType === 'module') {\n await copyDir(OBJC_FILES[`${moduleType}_common`], folder);\n } else {\n await copyDir(OBJC_FILES[`view_${arch}`], folder);\n }\n }\n\n const templateType = `${moduleType}_${arch}` as const;\n\n await copyDir(KOTLIN_FILES[templateType], folder);\n\n if (options.project.cpp) {\n await copyDir(CPP_FILES, folder);\n await fs.remove(path.join(folder, 'ios', `${options.project.name}.m`));\n }\n }\n\n const rootPackageJson = await fs.readJson(path.join(folder, 'package.json'));\n\n if (example !== 'none') {\n // Set `react` and `react-native` versions of root `package.json` from example `package.json`\n const examplePackageJson = await fs.readJSON(\n path.join(folder, 'example', 'package.json')\n );\n\n if (\n examplePackageJson.dependencies?.react &&\n examplePackageJson.dependencies?.['react-native']\n ) {\n rootPackageJson.devDependencies = rootPackageJson.devDependencies || {};\n rootPackageJson.devDependencies.react =\n examplePackageJson.dependencies.react;\n rootPackageJson.devDependencies['react-native'] =\n examplePackageJson.dependencies['react-native'];\n }\n\n if (arch !== 'legacy') {\n addCodegenBuildScript(folder, options.project.name);\n }\n }\n\n // Some of the passed args can already be derived from the generated package.json file.\n const ignoredAnswers: (keyof Answers)[] = [\n 'name',\n 'slug',\n 'description',\n 'authorName',\n 'authorEmail',\n 'authorUrl',\n 'repoUrl',\n 'example',\n 'reactNativeVersion',\n 'local',\n ];\n\n type AnswerEntries<T extends keyof Answers = keyof Answers> = [\n T,\n Answers[T],\n ][];\n\n const libraryMetadata = Object.fromEntries(\n (Object.entries(answers) as AnswerEntries).filter(\n ([answer]) => !ignoredAnswers.includes(answer)\n )\n );\n\n libraryMetadata.version = version;\n rootPackageJson['create-react-native-library'] = libraryMetadata;\n\n await fs.writeJson(path.join(folder, 'package.json'), rootPackageJson, {\n spaces: 2,\n });\n\n if (!local) {\n let isInGitRepo = false;\n\n try {\n isInGitRepo =\n (await spawn('git', ['rev-parse', '--is-inside-work-tree'])) === 'true';\n } catch (e) {\n // Ignore error\n }\n\n if (!isInGitRepo) {\n try {\n await spawn('git', ['init'], { cwd: folder });\n await spawn('git', ['branch', '-M', 'main'], { cwd: folder });\n await spawn('git', ['add', '.'], { cwd: folder });\n await spawn('git', ['commit', '-m', 'chore: initial commit'], {\n cwd: folder,\n });\n } catch (e) {\n // Ignore error\n }\n }\n }\n\n spinner.succeed(\n `Project created successfully at ${kleur.yellow(\n path.relative(process.cwd(), folder)\n )}!\\n`\n );\n\n if (local) {\n let linked;\n\n const packageManager = (await fs.pathExists(\n path.join(process.cwd(), 'yarn.lock')\n ))\n ? 'yarn'\n : 'npm';\n\n const packageJsonPath = path.join(process.cwd(), 'package.json');\n\n if (await fs.pathExists(packageJsonPath)) {\n const packageJson = await fs.readJSON(packageJsonPath);\n const isReactNativeProject = Boolean(\n packageJson.dependencies?.['react-native']\n );\n\n if (isReactNativeProject) {\n packageJson.dependencies = packageJson.dependencies || {};\n packageJson.dependencies[slug] =\n packageManager === 'yarn'\n ? `link:./${path.relative(process.cwd(), folder)}`\n : `file:./${path.relative(process.cwd(), folder)}`;\n\n await fs.writeJSON(packageJsonPath, packageJson, {\n spaces: 2,\n });\n\n linked = true;\n }\n }\n\n console.log(\n dedent(`\n ${kleur.magenta(\n `${kleur.bold('Get started')} with the project`\n )}${kleur.gray(':')}\n\n ${\n (linked\n ? `- Run ${kleur.blue(\n `${packageManager} install`\n )} to link the library\\n`\n : `- Link the library at ${kleur.blue(\n path.relative(process.cwd(), folder)\n )} based on your project setup'\\n`) +\n `- Run ${kleur.blue(\n 'pod install --project-directory=ios'\n )} to install dependencies with CocoaPods\\n` +\n `- Run ${kleur.blue('npx react-native run-android')} or ${kleur.blue(\n 'npx react-native run-ios'\n )} to build and run the app\\n` +\n `- Import from ${kleur.blue(slug)} and use it in your app.`\n }\n\n ${kleur.yellow(`Good luck!`)}\n `)\n );\n } else {\n const platforms = {\n ios: { name: 'iOS', color: 'cyan' },\n android: { name: 'Android', color: 'green' },\n ...(example === 'expo'\n ? ({ web: { name: 'Web', color: 'blue' } } as const)\n : null),\n } as const;\n\n console.log(\n dedent(`\n ${kleur.magenta(\n `${kleur.bold('Get started')} with the project`\n )}${kleur.gray(':')}\n\n ${kleur.gray('$')} yarn\n ${Object.entries(platforms)\n .map(\n ([script, { name, color }]) => `\n ${kleur[color](`Run the example app on ${kleur.bold(name)}`)}${kleur.gray(\n ':'\n )}\n\n ${kleur.gray('$')} yarn example ${script}`\n )\n .join('\\n')}\n\n ${kleur.yellow(\n `See ${kleur.bold('CONTRIBUTING.md')} for more details. Good luck!`\n )}\n `)\n );\n }\n}\n\nyargs\n .command('$0 [name]', 'create a react native library', args, create)\n .demandCommand()\n .recommendCommands()\n .fail((message, error) => {\n console.log('\\n');\n\n if (error) {\n console.log(kleur.red(error.message));\n throw error;\n }\n\n if (message) {\n console.log(kleur.red(message));\n } else {\n console.log(\n kleur.red(`An unknown error occurred. See '--help' for usage guide.`)\n );\n }\n\n process.exit(1);\n })\n .parserConfiguration({\n // don't pass kebab-case args to handler.\n 'strip-dashed': true,\n })\n .strict().argv;\n"],"mappings":"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","ignoreList":[]}
@@ -0,0 +1,72 @@
1
+ "use strict";
2
+
3
+ Object.defineProperty(exports, "__esModule", {
4
+ value: true
5
+ });
6
+ exports.addCodegenBuildScript = addCodegenBuildScript;
7
+ var _path = _interopRequireDefault(require("path"));
8
+ var _fsExtra = _interopRequireDefault(require("fs-extra"));
9
+ function _interopRequireDefault(e) { return e && e.__esModule ? e : { default: e }; }
10
+ // This is added to the example app's build.gradle file to invoke codegen before every build
11
+ const GRADLE_INVOKE_CODEGEN_TASK = `
12
+ def isNewArchitectureEnabled() {
13
+ return rootProject.hasProperty("newArchEnabled") && rootProject.getProperty("newArchEnabled") == "true"
14
+ }
15
+
16
+ if (isNewArchitectureEnabled()) {
17
+ // Since our library doesn't invoke codegen automatically we need to do it here.
18
+ tasks.register('invokeLibraryCodegen', Exec) {
19
+ workingDir "$rootDir/../../"
20
+ commandLine "npx", "bob", "build", "--target", "codegen"
21
+ }
22
+ preBuild.dependsOn invokeLibraryCodegen
23
+ }`;
24
+
25
+ // This is added to the example app's xcscheme file to invoke codegen before every build
26
+ const XCODE_INVOKE_CODEGEN_ACTION = `
27
+ <PreActions>
28
+ <ExecutionAction
29
+ ActionType = "Xcode.IDEStandardExecutionActionsCore.ExecutionActionType.ShellScriptAction">
30
+ <ActionContent
31
+ title = "Invoke Codegen"
32
+ scriptText = "cd &quot;$WORKSPACE_PATH/../../../&quot; &amp;&amp; npx bob build --target codegen&#10;">
33
+ </ActionContent>
34
+ </ExecutionAction>
35
+ </PreActions>`;
36
+
37
+ // You need to have the files before calling pod install otherwise they won't be registered in your pod.
38
+ // So we add a pre_install hook to the podfile that invokes codegen
39
+ const PODSPEC_INVOKE_CODEGEN_SCRIPT = `
40
+ pre_install do |installer|
41
+ system("cd ../../ && npx bob build --target codegen")
42
+ end
43
+ `;
44
+
45
+ /**
46
+ * Codegen isn't invoked for libraries with `includesGeneratedCode` set to `true`.
47
+ * This patches the example app to invoke library codegen on every app build.
48
+ */
49
+ async function addCodegenBuildScript(libraryPath, projectName) {
50
+ const appBuildGradlePath = _path.default.join(libraryPath, 'example', 'android', 'app', 'build.gradle');
51
+ const exampleAppBuildSchemePath = _path.default.join(libraryPath, 'example', 'ios', `${projectName}Example.xcodeproj`, 'xcshareddata', 'xcschemes', `${projectName}Example.xcscheme`);
52
+ const podfilePath = _path.default.join(libraryPath, 'example', 'ios', 'Podfile');
53
+
54
+ // Add a gradle task that runs before every build
55
+ let appBuildGradle = (await _fsExtra.default.readFile(appBuildGradlePath)).toString();
56
+ appBuildGradle += GRADLE_INVOKE_CODEGEN_TASK;
57
+ await _fsExtra.default.writeFile(appBuildGradlePath, appBuildGradle);
58
+
59
+ // Add an XCode prebuild action.
60
+ const exampleAppBuildScheme = (await _fsExtra.default.readFile(exampleAppBuildSchemePath)).toString().split('\n');
61
+ // Used XCode and inspected the result to determine where it inserts the actions
62
+ const actionTargetLineIndex = exampleAppBuildScheme.findIndex(line => line.includes('<BuildActionEntries>'));
63
+ exampleAppBuildScheme.splice(actionTargetLineIndex, 0, XCODE_INVOKE_CODEGEN_ACTION);
64
+ await _fsExtra.default.writeFile(exampleAppBuildSchemePath, exampleAppBuildScheme.join('\n'));
65
+
66
+ // Add a preinstall action to the podfile that invokes codegen
67
+ const podfile = (await _fsExtra.default.readFile(podfilePath)).toString().split('\n');
68
+ const podfilePostInstallIndex = podfile.findIndex(line => line.includes('post_install do |installer|'));
69
+ podfile.splice(podfilePostInstallIndex, 0, PODSPEC_INVOKE_CODEGEN_SCRIPT);
70
+ await _fsExtra.default.writeFile(podfilePath, podfile.join('\n'));
71
+ }
72
+ //# sourceMappingURL=addCodegenBuildScript.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"addCodegenBuildScript.js","names":["_path","_interopRequireDefault","require","_fsExtra","e","__esModule","default","GRADLE_INVOKE_CODEGEN_TASK","XCODE_INVOKE_CODEGEN_ACTION","PODSPEC_INVOKE_CODEGEN_SCRIPT","addCodegenBuildScript","libraryPath","projectName","appBuildGradlePath","path","join","exampleAppBuildSchemePath","podfilePath","appBuildGradle","fs","readFile","toString","writeFile","exampleAppBuildScheme","split","actionTargetLineIndex","findIndex","line","includes","splice","podfile","podfilePostInstallIndex"],"sources":["../../src/utils/addCodegenBuildScript.ts"],"sourcesContent":["import path from 'path';\nimport fs from 'fs-extra';\n\n// This is added to the example app's build.gradle file to invoke codegen before every build\nconst GRADLE_INVOKE_CODEGEN_TASK = `\ndef isNewArchitectureEnabled() {\n return rootProject.hasProperty(\"newArchEnabled\") && rootProject.getProperty(\"newArchEnabled\") == \"true\"\n}\n\nif (isNewArchitectureEnabled()) {\n // Since our library doesn't invoke codegen automatically we need to do it here.\n tasks.register('invokeLibraryCodegen', Exec) {\n workingDir \"$rootDir/../../\"\n commandLine \"npx\", \"bob\", \"build\", \"--target\", \"codegen\"\n }\n preBuild.dependsOn invokeLibraryCodegen\n}`;\n\n// This is added to the example app's xcscheme file to invoke codegen before every build\nconst XCODE_INVOKE_CODEGEN_ACTION = `\n <PreActions>\n <ExecutionAction\n ActionType = \"Xcode.IDEStandardExecutionActionsCore.ExecutionActionType.ShellScriptAction\">\n <ActionContent\n title = \"Invoke Codegen\"\n scriptText = \"cd &quot;$WORKSPACE_PATH/../../../&quot; &amp;&amp; npx bob build --target codegen&#10;\">\n </ActionContent>\n </ExecutionAction>\n </PreActions>`;\n\n// You need to have the files before calling pod install otherwise they won't be registered in your pod.\n// So we add a pre_install hook to the podfile that invokes codegen\nconst PODSPEC_INVOKE_CODEGEN_SCRIPT = `\n pre_install do |installer|\n system(\"cd ../../ && npx bob build --target codegen\")\n end\n`;\n\n/**\n * Codegen isn't invoked for libraries with `includesGeneratedCode` set to `true`.\n * This patches the example app to invoke library codegen on every app build.\n */\nexport async function addCodegenBuildScript(\n libraryPath: string,\n projectName: string\n) {\n const appBuildGradlePath = path.join(\n libraryPath,\n 'example',\n 'android',\n 'app',\n 'build.gradle'\n );\n const exampleAppBuildSchemePath = path.join(\n libraryPath,\n 'example',\n 'ios',\n `${projectName}Example.xcodeproj`,\n 'xcshareddata',\n 'xcschemes',\n `${projectName}Example.xcscheme`\n );\n const podfilePath = path.join(libraryPath, 'example', 'ios', 'Podfile');\n\n // Add a gradle task that runs before every build\n let appBuildGradle = (await fs.readFile(appBuildGradlePath)).toString();\n appBuildGradle += GRADLE_INVOKE_CODEGEN_TASK;\n\n await fs.writeFile(appBuildGradlePath, appBuildGradle);\n\n // Add an XCode prebuild action.\n const exampleAppBuildScheme = (await fs.readFile(exampleAppBuildSchemePath))\n .toString()\n .split('\\n');\n // Used XCode and inspected the result to determine where it inserts the actions\n const actionTargetLineIndex = exampleAppBuildScheme.findIndex((line) =>\n line.includes('<BuildActionEntries>')\n );\n exampleAppBuildScheme.splice(\n actionTargetLineIndex,\n 0,\n XCODE_INVOKE_CODEGEN_ACTION\n );\n\n await fs.writeFile(\n exampleAppBuildSchemePath,\n exampleAppBuildScheme.join('\\n')\n );\n\n // Add a preinstall action to the podfile that invokes codegen\n const podfile = (await fs.readFile(podfilePath)).toString().split('\\n');\n const podfilePostInstallIndex = podfile.findIndex((line) =>\n line.includes('post_install do |installer|')\n );\n podfile.splice(podfilePostInstallIndex, 0, PODSPEC_INVOKE_CODEGEN_SCRIPT);\n\n await fs.writeFile(podfilePath, podfile.join('\\n'));\n}\n"],"mappings":";;;;;;AAAA,IAAAA,KAAA,GAAAC,sBAAA,CAAAC,OAAA;AACA,IAAAC,QAAA,GAAAF,sBAAA,CAAAC,OAAA;AAA0B,SAAAD,uBAAAG,CAAA,WAAAA,CAAA,IAAAA,CAAA,CAAAC,UAAA,GAAAD,CAAA,KAAAE,OAAA,EAAAF,CAAA;AAE1B;AACA,MAAMG,0BAA0B,GAAG;AACnC;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,EAAE;;AAEF;AACA,MAAMC,2BAA2B,GAAG;AACpC;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,oBAAoB;;AAEpB;AACA;AACA,MAAMC,6BAA6B,GAAG;AACtC;AACA;AACA;AACA,CAAC;;AAED;AACA;AACA;AACA;AACO,eAAeC,qBAAqBA,CACzCC,WAAmB,EACnBC,WAAmB,EACnB;EACA,MAAMC,kBAAkB,GAAGC,aAAI,CAACC,IAAI,CAClCJ,WAAW,EACX,SAAS,EACT,SAAS,EACT,KAAK,EACL,cACF,CAAC;EACD,MAAMK,yBAAyB,GAAGF,aAAI,CAACC,IAAI,CACzCJ,WAAW,EACX,SAAS,EACT,KAAK,EACL,GAAGC,WAAW,mBAAmB,EACjC,cAAc,EACd,WAAW,EACX,GAAGA,WAAW,kBAChB,CAAC;EACD,MAAMK,WAAW,GAAGH,aAAI,CAACC,IAAI,CAACJ,WAAW,EAAE,SAAS,EAAE,KAAK,EAAE,SAAS,CAAC;;EAEvE;EACA,IAAIO,cAAc,GAAG,CAAC,MAAMC,gBAAE,CAACC,QAAQ,CAACP,kBAAkB,CAAC,EAAEQ,QAAQ,CAAC,CAAC;EACvEH,cAAc,IAAIX,0BAA0B;EAE5C,MAAMY,gBAAE,CAACG,SAAS,CAACT,kBAAkB,EAAEK,cAAc,CAAC;;EAEtD;EACA,MAAMK,qBAAqB,GAAG,CAAC,MAAMJ,gBAAE,CAACC,QAAQ,CAACJ,yBAAyB,CAAC,EACxEK,QAAQ,CAAC,CAAC,CACVG,KAAK,CAAC,IAAI,CAAC;EACd;EACA,MAAMC,qBAAqB,GAAGF,qBAAqB,CAACG,SAAS,CAAEC,IAAI,IACjEA,IAAI,CAACC,QAAQ,CAAC,sBAAsB,CACtC,CAAC;EACDL,qBAAqB,CAACM,MAAM,CAC1BJ,qBAAqB,EACrB,CAAC,EACDjB,2BACF,CAAC;EAED,MAAMW,gBAAE,CAACG,SAAS,CAChBN,yBAAyB,EACzBO,qBAAqB,CAACR,IAAI,CAAC,IAAI,CACjC,CAAC;;EAED;EACA,MAAMe,OAAO,GAAG,CAAC,MAAMX,gBAAE,CAACC,QAAQ,CAACH,WAAW,CAAC,EAAEI,QAAQ,CAAC,CAAC,CAACG,KAAK,CAAC,IAAI,CAAC;EACvE,MAAMO,uBAAuB,GAAGD,OAAO,CAACJ,SAAS,CAAEC,IAAI,IACrDA,IAAI,CAACC,QAAQ,CAAC,6BAA6B,CAC7C,CAAC;EACDE,OAAO,CAACD,MAAM,CAACE,uBAAuB,EAAE,CAAC,EAAEtB,6BAA6B,CAAC;EAEzE,MAAMU,gBAAE,CAACG,SAAS,CAACL,WAAW,EAAEa,OAAO,CAACf,IAAI,CAAC,IAAI,CAAC,CAAC;AACrD","ignoreList":[]}
@@ -9,7 +9,7 @@ var _path = _interopRequireDefault(require("path"));
9
9
  var _https = _interopRequireDefault(require("https"));
10
10
  var _spawn = require("./spawn");
11
11
  var _sortObjectKeys = _interopRequireDefault(require("./sortObjectKeys"));
12
- function _interopRequireDefault(obj) { return obj && obj.__esModule ? obj : { default: obj }; }
12
+ function _interopRequireDefault(e) { return e && e.__esModule ? e : { default: e }; }
13
13
  const FILES_TO_DELETE = ['__tests__', '.buckconfig', '.eslintrc.js', '.flowconfig', '.git', '.gitignore', '.prettierrc.js', 'App.js', 'App.tsx', 'index.js', 'tsconfig.json'];
14
14
  const PACKAGES_TO_REMOVE = ['@react-native/eslint-config', '@tsconfig/react-native', '@types/jest', '@types/react', '@types/react-test-renderer', '@typescript-eslint/eslint-plugin', '@typescript-eslint/parser', 'babel-jest', 'eslint', 'jest', 'prettier', 'react-test-renderer', 'typescript'];
15
15
  const PACKAGES_TO_ADD_WEB = {
@@ -30,8 +30,8 @@ async function generateExampleApp({
30
30
  // `npx --package react-native-test-app@latest init --name ${projectName}Example --destination example --version ${reactNativeVersion}`
31
31
  const testAppArgs = ['--package', `react-native-test-app@latest`, 'init', '--name', `${project.name}Example`, `--destination`, directory, ...(reactNativeVersion !== 'latest' ? ['--version', reactNativeVersion] : []), '--platform', 'ios', '--platform', 'android'];
32
32
 
33
- // `npx react-native init <projectName> --directory example --skip-install`
34
- const vanillaArgs = [`react-native@${reactNativeVersion}`, 'init', `${project.name}Example`, '--package-name', `${project.package}.example`, '--directory', directory, '--version', reactNativeVersion, '--skip-install', '--npm'];
33
+ // `npx @react-native-community/cli init <projectName> --directory example --skip-install`
34
+ const vanillaArgs = [`@react-native-community/cli`, 'init', `${project.name}Example`, '--package-name', `${project.package}.example`, '--directory', directory, '--version', reactNativeVersion, '--skip-install', '--npm'];
35
35
 
36
36
  // `npx create-expo-app example --no-install --template blank`
37
37
  const expoArgs = ['create-expo-app@latest', directory, '--no-install', '--template', 'blank'];
@@ -1 +1 @@
1
- {"version":3,"file":"generateExampleApp.js","names":["_fsExtra","_interopRequireDefault","require","_path","_https","_spawn","_sortObjectKeys","obj","__esModule","default","FILES_TO_DELETE","PACKAGES_TO_REMOVE","PACKAGES_TO_ADD_WEB","generateExampleApp","type","dest","arch","project","bobVersion","reactNativeVersion","directory","path","join","testAppArgs","name","vanillaArgs","package","expoArgs","args","spawn","env","process","npm_config_yes","file","fs","remove","pkg","readJSON","slug","jest","scripts","dependencies","devDependencies","test","lint","SCRIPTS_TO_ADD","Object","assign","androidBuild","iosBuild","app","android","ios","bundleIdentifier","writeJSON","spaces","forEach","PACKAGES_TO_ADD_DEV","sdkVersion","expo","split","replace","bundledNativeModules","Promise","resolve","reject","https","get","res","data","on","chunk","JSON","parse","e","entries","version","web","field","sortObjectKeys","gradleProperties","readFile","podfile","writeFile","includes"],"sources":["../../src/utils/generateExampleApp.ts"],"sourcesContent":["import fs from 'fs-extra';\nimport path from 'path';\nimport https from 'https';\nimport { spawn } from './spawn';\nimport sortObjectKeys from './sortObjectKeys';\n\nexport type ExampleType = 'vanilla' | 'test-app' | 'expo' | 'none';\n\nconst FILES_TO_DELETE = [\n '__tests__',\n '.buckconfig',\n '.eslintrc.js',\n '.flowconfig',\n '.git',\n '.gitignore',\n '.prettierrc.js',\n 'App.js',\n 'App.tsx',\n 'index.js',\n 'tsconfig.json',\n];\n\nconst PACKAGES_TO_REMOVE = [\n '@react-native/eslint-config',\n '@tsconfig/react-native',\n '@types/jest',\n '@types/react',\n '@types/react-test-renderer',\n '@typescript-eslint/eslint-plugin',\n '@typescript-eslint/parser',\n 'babel-jest',\n 'eslint',\n 'jest',\n 'prettier',\n 'react-test-renderer',\n 'typescript',\n];\n\nconst PACKAGES_TO_ADD_WEB = {\n '@expo/metro-runtime': '~3.2.1',\n 'react-dom': '18.2.0',\n 'react-native-web': '~0.18.10',\n};\n\nexport default async function generateExampleApp({\n type,\n dest,\n arch,\n project,\n bobVersion,\n reactNativeVersion = 'latest',\n}: {\n type: ExampleType;\n dest: string;\n arch: 'new' | 'mixed' | 'legacy';\n project: {\n slug: string;\n name: string;\n package: string;\n };\n bobVersion: string;\n reactNativeVersion?: string;\n}) {\n const directory = path.join(dest, 'example');\n\n // `npx --package react-native-test-app@latest init --name ${projectName}Example --destination example --version ${reactNativeVersion}`\n const testAppArgs = [\n '--package',\n `react-native-test-app@latest`,\n 'init',\n '--name',\n `${project.name}Example`,\n `--destination`,\n directory,\n ...(reactNativeVersion !== 'latest'\n ? ['--version', reactNativeVersion]\n : []),\n '--platform',\n 'ios',\n '--platform',\n 'android',\n ];\n\n // `npx react-native init <projectName> --directory example --skip-install`\n const vanillaArgs = [\n `react-native@${reactNativeVersion}`,\n 'init',\n `${project.name}Example`,\n '--package-name',\n `${project.package}.example`,\n '--directory',\n directory,\n '--version',\n reactNativeVersion,\n '--skip-install',\n '--npm',\n ];\n\n // `npx create-expo-app example --no-install --template blank`\n const expoArgs = [\n 'create-expo-app@latest',\n directory,\n '--no-install',\n '--template',\n 'blank',\n ];\n\n let args: string[] = [];\n\n switch (type) {\n case 'vanilla':\n args = vanillaArgs;\n break;\n case 'test-app':\n args = testAppArgs;\n break;\n case 'expo':\n args = expoArgs;\n break;\n }\n\n await spawn('npx', args, {\n env: { ...process.env, npm_config_yes: 'true' },\n });\n\n // Remove unnecessary files and folders\n for (const file of FILES_TO_DELETE) {\n await fs.remove(path.join(directory, file));\n }\n\n // Patch the example app's package.json\n const pkg = await fs.readJSON(path.join(directory, 'package.json'));\n\n pkg.name = `${project.slug}-example`;\n\n // Remove Jest config for now\n delete pkg.jest;\n\n const { scripts, dependencies, devDependencies } = pkg;\n\n delete scripts.test;\n delete scripts.lint;\n\n const SCRIPTS_TO_ADD = {\n 'build:android':\n 'react-native build-android --extra-params \"--no-daemon --console=plain -PreactNativeArchitectures=arm64-v8a\"',\n 'build:ios': `react-native build-ios --scheme ${project.name}Example --mode Debug --extra-params \"-sdk iphonesimulator CC=clang CPLUSPLUS=clang++ LD=clang LDPLUSPLUS=clang++ GCC_OPTIMIZATION_LEVEL=0 GCC_PRECOMPILE_PREFIX_HEADER=YES ASSETCATALOG_COMPILER_OPTIMIZATION=time DEBUG_INFORMATION_FORMAT=dwarf COMPILER_INDEX_STORE_ENABLE=NO\"`,\n };\n\n if (type === 'vanilla') {\n Object.assign(scripts, SCRIPTS_TO_ADD);\n } else if (type === 'test-app') {\n // `react-native-test-app` doesn't bundle application by default in 'Release' mode and also `bundle` command doesn't create a directory.\n // `mkdist` script should be removed after stable React Native major contains this fix: https://github.com/facebook/react-native/pull/45182.\n\n const androidBuild = [\n 'npm run mkdist',\n 'react-native bundle --entry-file index.js --platform android --dev true --bundle-output dist/main.android.jsbundle --assets-dest dist',\n SCRIPTS_TO_ADD['build:android'],\n ].join(' && ');\n\n const iosBuild = [\n 'npm run mkdist',\n 'react-native bundle --entry-file index.js --platform ios --dev true --bundle-output dist/main.ios.jsbundle --assets-dest dist',\n SCRIPTS_TO_ADD['build:ios'],\n ].join(' && ');\n\n Object.assign(scripts, {\n 'build:android': androidBuild,\n 'build:ios': iosBuild,\n });\n\n const app = await fs.readJSON(path.join(directory, 'app.json'));\n\n app.android = app.android || {};\n app.android.package = `${project.package}.example`;\n app.ios = app.ios || {};\n app.ios.bundleIdentifier = `${project.package}.example`;\n\n await fs.writeJSON(path.join(directory, 'app.json'), app, {\n spaces: 2,\n });\n }\n\n PACKAGES_TO_REMOVE.forEach((name) => {\n // eslint-disable-next-line @typescript-eslint/no-dynamic-delete\n delete devDependencies[name];\n });\n\n const PACKAGES_TO_ADD_DEV = {\n 'react-native-builder-bob': `^${bobVersion}`,\n };\n\n Object.assign(devDependencies, PACKAGES_TO_ADD_DEV);\n\n if (type === 'expo') {\n const sdkVersion = dependencies.expo.split('.')[0].replace(/[^\\d]/, '');\n\n let bundledNativeModules: Record<string, string>;\n\n try {\n bundledNativeModules = await new Promise((resolve, reject) => {\n https\n .get(\n `https://raw.githubusercontent.com/expo/expo/sdk-${sdkVersion}/packages/expo/bundledNativeModules.json`,\n (res) => {\n let data = '';\n\n res.on('data', (chunk) => (data += chunk));\n res.on('end', () => {\n try {\n resolve(JSON.parse(data));\n } catch (e) {\n reject(e);\n }\n });\n }\n )\n .on('error', reject);\n });\n } catch (e) {\n bundledNativeModules = {};\n }\n\n Object.entries(PACKAGES_TO_ADD_WEB).forEach(([name, version]) => {\n dependencies[name] = bundledNativeModules[name] || version;\n });\n\n scripts.web = 'expo start --web';\n\n const app = await fs.readJSON(path.join(directory, 'app.json'));\n\n app.expo.android = app.expo.android || {};\n app.expo.android.package = `${project.package}.example`;\n app.expo.ios = app.expo.ios || {};\n app.expo.ios.bundleIdentifier = `${project.package}.example`;\n\n await fs.writeJSON(path.join(directory, 'app.json'), app, {\n spaces: 2,\n });\n }\n\n for (const field of ['dependencies', 'devDependencies']) {\n if (pkg[field]) {\n pkg[field] = sortObjectKeys(pkg[field]);\n }\n }\n\n await fs.writeJSON(path.join(directory, 'package.json'), pkg, {\n spaces: 2,\n });\n\n if (type !== 'expo') {\n let gradleProperties = await fs.readFile(\n path.join(directory, 'android', 'gradle.properties'),\n 'utf8'\n );\n\n // Disable Jetifier.\n // Remove this when the app template is updated.\n gradleProperties = gradleProperties.replace(\n 'android.enableJetifier=true',\n 'android.enableJetifier=false'\n );\n\n // If the library is on new architecture, enable new arch for iOS and Android\n if (arch === 'new') {\n // iOS\n // Add ENV['RCT_NEW_ARCH_ENABLED'] = 1 on top of example/ios/Podfile\n const podfile = await fs.readFile(\n path.join(directory, 'ios', 'Podfile'),\n 'utf8'\n );\n\n await fs.writeFile(\n path.join(directory, 'ios', 'Podfile'),\n \"ENV['RCT_NEW_ARCH_ENABLED'] = '1'\\n\\n\" + podfile\n );\n\n // Android\n // Make sure newArchEnabled=true is present in android/gradle.properties\n if (gradleProperties.split('\\n').includes('#newArchEnabled=true')) {\n gradleProperties = gradleProperties.replace(\n '#newArchEnabled=true',\n 'newArchEnabled=true'\n );\n } else if (\n gradleProperties.split('\\n').includes('newArchEnabled=false')\n ) {\n gradleProperties = gradleProperties.replace(\n 'newArchEnabled=false',\n 'newArchEnabled=true'\n );\n } else {\n gradleProperties += '\\nnewArchEnabled=true';\n }\n }\n\n await fs.writeFile(\n path.join(directory, 'android', 'gradle.properties'),\n gradleProperties\n );\n }\n}\n"],"mappings":"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"}
1
+ {"version":3,"file":"generateExampleApp.js","names":["_fsExtra","_interopRequireDefault","require","_path","_https","_spawn","_sortObjectKeys","e","__esModule","default","FILES_TO_DELETE","PACKAGES_TO_REMOVE","PACKAGES_TO_ADD_WEB","generateExampleApp","type","dest","arch","project","bobVersion","reactNativeVersion","directory","path","join","testAppArgs","name","vanillaArgs","package","expoArgs","args","spawn","env","process","npm_config_yes","file","fs","remove","pkg","readJSON","slug","jest","scripts","dependencies","devDependencies","test","lint","SCRIPTS_TO_ADD","Object","assign","androidBuild","iosBuild","app","android","ios","bundleIdentifier","writeJSON","spaces","forEach","PACKAGES_TO_ADD_DEV","sdkVersion","expo","split","replace","bundledNativeModules","Promise","resolve","reject","https","get","res","data","on","chunk","JSON","parse","entries","version","web","field","sortObjectKeys","gradleProperties","readFile","podfile","writeFile","includes"],"sources":["../../src/utils/generateExampleApp.ts"],"sourcesContent":["import fs from 'fs-extra';\nimport path from 'path';\nimport https from 'https';\nimport { spawn } from './spawn';\nimport sortObjectKeys from './sortObjectKeys';\n\nexport type ExampleType = 'vanilla' | 'test-app' | 'expo' | 'none';\n\nconst FILES_TO_DELETE = [\n '__tests__',\n '.buckconfig',\n '.eslintrc.js',\n '.flowconfig',\n '.git',\n '.gitignore',\n '.prettierrc.js',\n 'App.js',\n 'App.tsx',\n 'index.js',\n 'tsconfig.json',\n];\n\nconst PACKAGES_TO_REMOVE = [\n '@react-native/eslint-config',\n '@tsconfig/react-native',\n '@types/jest',\n '@types/react',\n '@types/react-test-renderer',\n '@typescript-eslint/eslint-plugin',\n '@typescript-eslint/parser',\n 'babel-jest',\n 'eslint',\n 'jest',\n 'prettier',\n 'react-test-renderer',\n 'typescript',\n];\n\nconst PACKAGES_TO_ADD_WEB = {\n '@expo/metro-runtime': '~3.2.1',\n 'react-dom': '18.2.0',\n 'react-native-web': '~0.18.10',\n};\n\nexport default async function generateExampleApp({\n type,\n dest,\n arch,\n project,\n bobVersion,\n reactNativeVersion = 'latest',\n}: {\n type: ExampleType;\n dest: string;\n arch: 'new' | 'mixed' | 'legacy';\n project: {\n slug: string;\n name: string;\n package: string;\n };\n bobVersion: string;\n reactNativeVersion?: string;\n}) {\n const directory = path.join(dest, 'example');\n\n // `npx --package react-native-test-app@latest init --name ${projectName}Example --destination example --version ${reactNativeVersion}`\n const testAppArgs = [\n '--package',\n `react-native-test-app@latest`,\n 'init',\n '--name',\n `${project.name}Example`,\n `--destination`,\n directory,\n ...(reactNativeVersion !== 'latest'\n ? ['--version', reactNativeVersion]\n : []),\n '--platform',\n 'ios',\n '--platform',\n 'android',\n ];\n\n // `npx @react-native-community/cli init <projectName> --directory example --skip-install`\n const vanillaArgs = [\n `@react-native-community/cli`,\n 'init',\n `${project.name}Example`,\n '--package-name',\n `${project.package}.example`,\n '--directory',\n directory,\n '--version',\n reactNativeVersion,\n '--skip-install',\n '--npm',\n ];\n\n // `npx create-expo-app example --no-install --template blank`\n const expoArgs = [\n 'create-expo-app@latest',\n directory,\n '--no-install',\n '--template',\n 'blank',\n ];\n\n let args: string[] = [];\n\n switch (type) {\n case 'vanilla':\n args = vanillaArgs;\n break;\n case 'test-app':\n args = testAppArgs;\n break;\n case 'expo':\n args = expoArgs;\n break;\n }\n\n await spawn('npx', args, {\n env: { ...process.env, npm_config_yes: 'true' },\n });\n\n // Remove unnecessary files and folders\n for (const file of FILES_TO_DELETE) {\n await fs.remove(path.join(directory, file));\n }\n\n // Patch the example app's package.json\n const pkg = await fs.readJSON(path.join(directory, 'package.json'));\n\n pkg.name = `${project.slug}-example`;\n\n // Remove Jest config for now\n delete pkg.jest;\n\n const { scripts, dependencies, devDependencies } = pkg;\n\n delete scripts.test;\n delete scripts.lint;\n\n const SCRIPTS_TO_ADD = {\n 'build:android':\n 'react-native build-android --extra-params \"--no-daemon --console=plain -PreactNativeArchitectures=arm64-v8a\"',\n 'build:ios': `react-native build-ios --scheme ${project.name}Example --mode Debug --extra-params \"-sdk iphonesimulator CC=clang CPLUSPLUS=clang++ LD=clang LDPLUSPLUS=clang++ GCC_OPTIMIZATION_LEVEL=0 GCC_PRECOMPILE_PREFIX_HEADER=YES ASSETCATALOG_COMPILER_OPTIMIZATION=time DEBUG_INFORMATION_FORMAT=dwarf COMPILER_INDEX_STORE_ENABLE=NO\"`,\n };\n\n if (type === 'vanilla') {\n Object.assign(scripts, SCRIPTS_TO_ADD);\n } else if (type === 'test-app') {\n // `react-native-test-app` doesn't bundle application by default in 'Release' mode and also `bundle` command doesn't create a directory.\n // `mkdist` script should be removed after stable React Native major contains this fix: https://github.com/facebook/react-native/pull/45182.\n\n const androidBuild = [\n 'npm run mkdist',\n 'react-native bundle --entry-file index.js --platform android --dev true --bundle-output dist/main.android.jsbundle --assets-dest dist',\n SCRIPTS_TO_ADD['build:android'],\n ].join(' && ');\n\n const iosBuild = [\n 'npm run mkdist',\n 'react-native bundle --entry-file index.js --platform ios --dev true --bundle-output dist/main.ios.jsbundle --assets-dest dist',\n SCRIPTS_TO_ADD['build:ios'],\n ].join(' && ');\n\n Object.assign(scripts, {\n 'build:android': androidBuild,\n 'build:ios': iosBuild,\n });\n\n const app = await fs.readJSON(path.join(directory, 'app.json'));\n\n app.android = app.android || {};\n app.android.package = `${project.package}.example`;\n app.ios = app.ios || {};\n app.ios.bundleIdentifier = `${project.package}.example`;\n\n await fs.writeJSON(path.join(directory, 'app.json'), app, {\n spaces: 2,\n });\n }\n\n PACKAGES_TO_REMOVE.forEach((name) => {\n // eslint-disable-next-line @typescript-eslint/no-dynamic-delete\n delete devDependencies[name];\n });\n\n const PACKAGES_TO_ADD_DEV = {\n 'react-native-builder-bob': `^${bobVersion}`,\n };\n\n Object.assign(devDependencies, PACKAGES_TO_ADD_DEV);\n\n if (type === 'expo') {\n const sdkVersion = dependencies.expo.split('.')[0].replace(/[^\\d]/, '');\n\n let bundledNativeModules: Record<string, string>;\n\n try {\n bundledNativeModules = await new Promise((resolve, reject) => {\n https\n .get(\n `https://raw.githubusercontent.com/expo/expo/sdk-${sdkVersion}/packages/expo/bundledNativeModules.json`,\n (res) => {\n let data = '';\n\n res.on('data', (chunk) => (data += chunk));\n res.on('end', () => {\n try {\n resolve(JSON.parse(data));\n } catch (e) {\n reject(e);\n }\n });\n }\n )\n .on('error', reject);\n });\n } catch (e) {\n bundledNativeModules = {};\n }\n\n Object.entries(PACKAGES_TO_ADD_WEB).forEach(([name, version]) => {\n dependencies[name] = bundledNativeModules[name] || version;\n });\n\n scripts.web = 'expo start --web';\n\n const app = await fs.readJSON(path.join(directory, 'app.json'));\n\n app.expo.android = app.expo.android || {};\n app.expo.android.package = `${project.package}.example`;\n app.expo.ios = app.expo.ios || {};\n app.expo.ios.bundleIdentifier = `${project.package}.example`;\n\n await fs.writeJSON(path.join(directory, 'app.json'), app, {\n spaces: 2,\n });\n }\n\n for (const field of ['dependencies', 'devDependencies']) {\n if (pkg[field]) {\n pkg[field] = sortObjectKeys(pkg[field]);\n }\n }\n\n await fs.writeJSON(path.join(directory, 'package.json'), pkg, {\n spaces: 2,\n });\n\n if (type !== 'expo') {\n let gradleProperties = await fs.readFile(\n path.join(directory, 'android', 'gradle.properties'),\n 'utf8'\n );\n\n // Disable Jetifier.\n // Remove this when the app template is updated.\n gradleProperties = gradleProperties.replace(\n 'android.enableJetifier=true',\n 'android.enableJetifier=false'\n );\n\n // If the library is on new architecture, enable new arch for iOS and Android\n if (arch === 'new') {\n // iOS\n // Add ENV['RCT_NEW_ARCH_ENABLED'] = 1 on top of example/ios/Podfile\n const podfile = await fs.readFile(\n path.join(directory, 'ios', 'Podfile'),\n 'utf8'\n );\n\n await fs.writeFile(\n path.join(directory, 'ios', 'Podfile'),\n \"ENV['RCT_NEW_ARCH_ENABLED'] = '1'\\n\\n\" + podfile\n );\n\n // Android\n // Make sure newArchEnabled=true is present in android/gradle.properties\n if (gradleProperties.split('\\n').includes('#newArchEnabled=true')) {\n gradleProperties = gradleProperties.replace(\n '#newArchEnabled=true',\n 'newArchEnabled=true'\n );\n } else if (\n gradleProperties.split('\\n').includes('newArchEnabled=false')\n ) {\n gradleProperties = gradleProperties.replace(\n 'newArchEnabled=false',\n 'newArchEnabled=true'\n );\n } else {\n gradleProperties += '\\nnewArchEnabled=true';\n }\n }\n\n await fs.writeFile(\n path.join(directory, 'android', 'gradle.properties'),\n gradleProperties\n );\n }\n}\n"],"mappings":"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","ignoreList":[]}
@@ -5,7 +5,7 @@ Object.defineProperty(exports, "__esModule", {
5
5
  });
6
6
  exports.default = prompts;
7
7
  var _prompts = _interopRequireDefault(require("prompts"));
8
- function _interopRequireDefault(obj) { return obj && obj.__esModule ? obj : { default: obj }; }
8
+ function _interopRequireDefault(e) { return e && e.__esModule ? e : { default: e }; }
9
9
  function prompts(args, options) {
10
10
  return (0, _prompts.default)(args, {
11
11
  onCancel() {
@@ -1 +1 @@
1
- {"version":3,"file":"prompts.js","names":["_prompts","_interopRequireDefault","require","obj","__esModule","default","prompts","args","options","promptsModule","onCancel","process","exit"],"sources":["../../src/utils/prompts.ts"],"sourcesContent":["import promptsModule from 'prompts';\n\nexport default function prompts(\n args: promptsModule.PromptObject | promptsModule.PromptObject[],\n options?: promptsModule.Options\n) {\n return promptsModule(args, {\n onCancel() {\n process.exit(1);\n },\n ...options,\n });\n}\n\nexport type PromptObject<T extends string = string> =\n promptsModule.PromptObject<T>;\n"],"mappings":";;;;;;AAAA,IAAAA,QAAA,GAAAC,sBAAA,CAAAC,OAAA;AAAoC,SAAAD,uBAAAE,GAAA,WAAAA,GAAA,IAAAA,GAAA,CAAAC,UAAA,GAAAD,GAAA,KAAAE,OAAA,EAAAF,GAAA;AAErB,SAASG,OAAOA,CAC7BC,IAA+D,EAC/DC,OAA+B,EAC/B;EACA,OAAO,IAAAC,gBAAa,EAACF,IAAI,EAAE;IACzBG,QAAQA,CAAA,EAAG;MACTC,OAAO,CAACC,IAAI,CAAC,CAAC,CAAC;IACjB,CAAC;IACD,GAAGJ;EACL,CAAC,CAAC;AACJ"}
1
+ {"version":3,"file":"prompts.js","names":["_prompts","_interopRequireDefault","require","e","__esModule","default","prompts","args","options","promptsModule","onCancel","process","exit"],"sources":["../../src/utils/prompts.ts"],"sourcesContent":["import promptsModule from 'prompts';\n\nexport default function prompts(\n args: promptsModule.PromptObject | promptsModule.PromptObject[],\n options?: promptsModule.Options\n) {\n return promptsModule(args, {\n onCancel() {\n process.exit(1);\n },\n ...options,\n });\n}\n\nexport type PromptObject<T extends string = string> =\n promptsModule.PromptObject<T>;\n"],"mappings":";;;;;;AAAA,IAAAA,QAAA,GAAAC,sBAAA,CAAAC,OAAA;AAAoC,SAAAD,uBAAAE,CAAA,WAAAA,CAAA,IAAAA,CAAA,CAAAC,UAAA,GAAAD,CAAA,KAAAE,OAAA,EAAAF,CAAA;AAErB,SAASG,OAAOA,CAC7BC,IAA+D,EAC/DC,OAA+B,EAC/B;EACA,OAAO,IAAAC,gBAAa,EAACF,IAAI,EAAE;IACzBG,QAAQA,CAAA,EAAG;MACTC,OAAO,CAACC,IAAI,CAAC,CAAC,CAAC;IACjB,CAAC;IACD,GAAGJ;EACL,CAAC,CAAC;AACJ","ignoreList":[]}
@@ -1 +1 @@
1
- {"version":3,"file":"sortObjectKeys.js","names":["sortObjectKeys","obj","Object","keys","sort","reduce","acc","key"],"sources":["../../src/utils/sortObjectKeys.ts"],"sourcesContent":["export default function sortObjectKeys<T extends Record<string, unknown>>(\n obj: T\n): T {\n return (Object.keys(obj) as (keyof T)[]).sort().reduce((acc, key) => {\n acc[key] = obj[key];\n return acc;\n }, {} as T);\n}\n"],"mappings":";;;;;;AAAe,SAASA,cAAcA,CACpCC,GAAM,EACH;EACH,OAAQC,MAAM,CAACC,IAAI,CAACF,GAAG,CAAC,CAAiBG,IAAI,CAAC,CAAC,CAACC,MAAM,CAAC,CAACC,GAAG,EAAEC,GAAG,KAAK;IACnED,GAAG,CAACC,GAAG,CAAC,GAAGN,GAAG,CAACM,GAAG,CAAC;IACnB,OAAOD,GAAG;EACZ,CAAC,EAAE,CAAC,CAAM,CAAC;AACb"}
1
+ {"version":3,"file":"sortObjectKeys.js","names":["sortObjectKeys","obj","Object","keys","sort","reduce","acc","key"],"sources":["../../src/utils/sortObjectKeys.ts"],"sourcesContent":["export default function sortObjectKeys<T extends Record<string, unknown>>(\n obj: T\n): T {\n return (Object.keys(obj) as (keyof T)[]).sort().reduce((acc, key) => {\n acc[key] = obj[key];\n return acc;\n }, {} as T);\n}\n"],"mappings":";;;;;;AAAe,SAASA,cAAcA,CACpCC,GAAM,EACH;EACH,OAAQC,MAAM,CAACC,IAAI,CAACF,GAAG,CAAC,CAAiBG,IAAI,CAAC,CAAC,CAACC,MAAM,CAAC,CAACC,GAAG,EAAEC,GAAG,KAAK;IACnED,GAAG,CAACC,GAAG,CAAC,GAAGN,GAAG,CAACM,GAAG,CAAC;IACnB,OAAOD,GAAG;EACZ,CAAC,EAAE,CAAC,CAAM,CAAC;AACb","ignoreList":[]}
@@ -5,7 +5,7 @@ Object.defineProperty(exports, "__esModule", {
5
5
  });
6
6
  exports.spawn = void 0;
7
7
  var _crossSpawn = _interopRequireDefault(require("cross-spawn"));
8
- function _interopRequireDefault(obj) { return obj && obj.__esModule ? obj : { default: obj }; }
8
+ function _interopRequireDefault(e) { return e && e.__esModule ? e : { default: e }; }
9
9
  const spawn = async (...args) => {
10
10
  return new Promise((resolve, reject) => {
11
11
  const child = (0, _crossSpawn.default)(...args);
@@ -1 +1 @@
1
- {"version":3,"file":"spawn.js","names":["_crossSpawn","_interopRequireDefault","require","obj","__esModule","default","spawn","args","Promise","resolve","reject","child","crossSpawn","stdout","stderr","setEncoding","on","data","once","code","trim","Error","exports"],"sources":["../../src/utils/spawn.ts"],"sourcesContent":["import crossSpawn from 'cross-spawn';\n\nexport const spawn = async (...args: Parameters<typeof crossSpawn>) => {\n return new Promise<string>((resolve, reject) => {\n const child = crossSpawn(...args);\n\n let stdout = '';\n let stderr = '';\n\n child.stdout?.setEncoding('utf8');\n child.stdout?.on('data', (data) => {\n stdout += data;\n });\n\n child.stderr?.setEncoding('utf8');\n child.stderr?.on('data', (data) => {\n stderr += data;\n });\n\n child.once('error', reject);\n child.once('close', (code) => {\n if (code === 0) {\n resolve(stdout.trim());\n } else {\n reject(new Error(stderr.trim()));\n }\n });\n });\n};\n"],"mappings":";;;;;;AAAA,IAAAA,WAAA,GAAAC,sBAAA,CAAAC,OAAA;AAAqC,SAAAD,uBAAAE,GAAA,WAAAA,GAAA,IAAAA,GAAA,CAAAC,UAAA,GAAAD,GAAA,KAAAE,OAAA,EAAAF,GAAA;AAE9B,MAAMG,KAAK,GAAG,MAAAA,CAAO,GAAGC,IAAmC,KAAK;EACrE,OAAO,IAAIC,OAAO,CAAS,CAACC,OAAO,EAAEC,MAAM,KAAK;IAC9C,MAAMC,KAAK,GAAG,IAAAC,mBAAU,EAAC,GAAGL,IAAI,CAAC;IAEjC,IAAIM,MAAM,GAAG,EAAE;IACf,IAAIC,MAAM,GAAG,EAAE;IAEfH,KAAK,CAACE,MAAM,EAAEE,WAAW,CAAC,MAAM,CAAC;IACjCJ,KAAK,CAACE,MAAM,EAAEG,EAAE,CAAC,MAAM,EAAGC,IAAI,IAAK;MACjCJ,MAAM,IAAII,IAAI;IAChB,CAAC,CAAC;IAEFN,KAAK,CAACG,MAAM,EAAEC,WAAW,CAAC,MAAM,CAAC;IACjCJ,KAAK,CAACG,MAAM,EAAEE,EAAE,CAAC,MAAM,EAAGC,IAAI,IAAK;MACjCH,MAAM,IAAIG,IAAI;IAChB,CAAC,CAAC;IAEFN,KAAK,CAACO,IAAI,CAAC,OAAO,EAAER,MAAM,CAAC;IAC3BC,KAAK,CAACO,IAAI,CAAC,OAAO,EAAGC,IAAI,IAAK;MAC5B,IAAIA,IAAI,KAAK,CAAC,EAAE;QACdV,OAAO,CAACI,MAAM,CAACO,IAAI,CAAC,CAAC,CAAC;MACxB,CAAC,MAAM;QACLV,MAAM,CAAC,IAAIW,KAAK,CAACP,MAAM,CAACM,IAAI,CAAC,CAAC,CAAC,CAAC;MAClC;IACF,CAAC,CAAC;EACJ,CAAC,CAAC;AACJ,CAAC;AAACE,OAAA,CAAAhB,KAAA,GAAAA,KAAA"}
1
+ {"version":3,"file":"spawn.js","names":["_crossSpawn","_interopRequireDefault","require","e","__esModule","default","spawn","args","Promise","resolve","reject","child","crossSpawn","stdout","stderr","setEncoding","on","data","once","code","trim","Error","exports"],"sources":["../../src/utils/spawn.ts"],"sourcesContent":["import crossSpawn from 'cross-spawn';\n\nexport const spawn = async (...args: Parameters<typeof crossSpawn>) => {\n return new Promise<string>((resolve, reject) => {\n const child = crossSpawn(...args);\n\n let stdout = '';\n let stderr = '';\n\n child.stdout?.setEncoding('utf8');\n child.stdout?.on('data', (data) => {\n stdout += data;\n });\n\n child.stderr?.setEncoding('utf8');\n child.stderr?.on('data', (data) => {\n stderr += data;\n });\n\n child.once('error', reject);\n child.once('close', (code) => {\n if (code === 0) {\n resolve(stdout.trim());\n } else {\n reject(new Error(stderr.trim()));\n }\n });\n });\n};\n"],"mappings":";;;;;;AAAA,IAAAA,WAAA,GAAAC,sBAAA,CAAAC,OAAA;AAAqC,SAAAD,uBAAAE,CAAA,WAAAA,CAAA,IAAAA,CAAA,CAAAC,UAAA,GAAAD,CAAA,KAAAE,OAAA,EAAAF,CAAA;AAE9B,MAAMG,KAAK,GAAG,MAAAA,CAAO,GAAGC,IAAmC,KAAK;EACrE,OAAO,IAAIC,OAAO,CAAS,CAACC,OAAO,EAAEC,MAAM,KAAK;IAC9C,MAAMC,KAAK,GAAG,IAAAC,mBAAU,EAAC,GAAGL,IAAI,CAAC;IAEjC,IAAIM,MAAM,GAAG,EAAE;IACf,IAAIC,MAAM,GAAG,EAAE;IAEfH,KAAK,CAACE,MAAM,EAAEE,WAAW,CAAC,MAAM,CAAC;IACjCJ,KAAK,CAACE,MAAM,EAAEG,EAAE,CAAC,MAAM,EAAGC,IAAI,IAAK;MACjCJ,MAAM,IAAII,IAAI;IAChB,CAAC,CAAC;IAEFN,KAAK,CAACG,MAAM,EAAEC,WAAW,CAAC,MAAM,CAAC;IACjCJ,KAAK,CAACG,MAAM,EAAEE,EAAE,CAAC,MAAM,EAAGC,IAAI,IAAK;MACjCH,MAAM,IAAIG,IAAI;IAChB,CAAC,CAAC;IAEFN,KAAK,CAACO,IAAI,CAAC,OAAO,EAAER,MAAM,CAAC;IAC3BC,KAAK,CAACO,IAAI,CAAC,OAAO,EAAGC,IAAI,IAAK;MAC5B,IAAIA,IAAI,KAAK,CAAC,EAAE;QACdV,OAAO,CAACI,MAAM,CAACO,IAAI,CAAC,CAAC,CAAC;MACxB,CAAC,MAAM;QACLV,MAAM,CAAC,IAAIW,KAAK,CAACP,MAAM,CAACM,IAAI,CAAC,CAAC,CAAC,CAAC;MAClC;IACF,CAAC,CAAC;EACJ,CAAC,CAAC;AACJ,CAAC;AAACE,OAAA,CAAAhB,KAAA,GAAAA,KAAA","ignoreList":[]}
package/package.json CHANGED
@@ -1,6 +1,6 @@
1
1
  {
2
2
  "name": "create-react-native-library",
3
- "version": "0.39.0",
3
+ "version": "0.41.0",
4
4
  "description": "CLI to scaffold React Native libraries",
5
5
  "keywords": [
6
6
  "react-native",
@@ -52,10 +52,10 @@
52
52
  "yargs": "^17.5.1"
53
53
  },
54
54
  "devDependencies": {
55
- "@babel/cli": "^7.17.10",
56
- "@babel/core": "^7.18.5",
57
- "@babel/preset-env": "^7.18.2",
58
- "@babel/preset-typescript": "^7.17.12",
55
+ "@babel/cli": "^7.24.8",
56
+ "@babel/core": "^7.25.2",
57
+ "@babel/preset-env": "^7.25.2",
58
+ "@babel/preset-typescript": "^7.24.7",
59
59
  "@commitlint/config-conventional": "^17.0.2",
60
60
  "@types/cross-spawn": "^6.0.2",
61
61
  "@types/dedent": "^0.7.0",
@@ -65,5 +65,5 @@
65
65
  "@types/validate-npm-package-name": "^3.0.3",
66
66
  "@types/yargs": "^17.0.10"
67
67
  },
68
- "gitHead": "be426bb86dd4d3576bd7bf246d77d25a4a6cc698"
68
+ "gitHead": "eacd9ce4d2a7b30e41fdd9df49fed3ed479e5055"
69
69
  }
@@ -76,3 +76,7 @@ android/keystores/debug.keystore
76
76
 
77
77
  # generated by bob
78
78
  lib/
79
+
80
+ # React Native Codegen
81
+ ios/generated
82
+ android/generated
@@ -5,12 +5,16 @@
5
5
  "source": "./src/index.tsx",
6
6
  "main": "./lib/commonjs/index.js",
7
7
  "module": "./lib/module/index.js",
8
- "types": "./lib/typescript/src/index.d.ts",
9
8
  "exports": {
10
9
  ".": {
11
- "types": "./lib/typescript/src/index.d.ts",
12
- "import": "./lib/module/index.js",
13
- "require": "./lib/commonjs/index.js"
10
+ "import": {
11
+ "types": "./lib/typescript/module/src/index.d.ts",
12
+ "default": "./lib/module/index.js"
13
+ },
14
+ "require": {
15
+ "types": "./lib/typescript/commonjs/src/index.d.ts",
16
+ "default": "./lib/commonjs/index.js"
17
+ }
14
18
  }
15
19
  },
16
20
  "files": [
@@ -164,6 +168,9 @@
164
168
  "source": "src",
165
169
  "output": "lib",
166
170
  "targets": [
171
+ <% if (project.arch !== 'legacy') { -%>
172
+ "codegen",
173
+ <% } -%>
167
174
  [
168
175
  "commonjs",
169
176
  {
@@ -178,7 +185,8 @@
178
185
  [
179
186
  "typescript",
180
187
  {
181
- "project": "tsconfig.build.json"
188
+ "project": "tsconfig.build.json",
189
+ "esm": true
182
190
  }
183
191
  ]
184
192
  ]
@@ -186,8 +194,16 @@
186
194
  },
187
195
  "codegenConfig": {
188
196
  "name": "RN<%- project.name -%><%- project.view ? 'View': '' -%>Spec",
189
- "type": <%- project.view ? '"components"': '"modules"' %>,
190
- "jsSrcsDir": "src"
197
+ "type": "all",
198
+ "jsSrcsDir": "src",
199
+ "outputDir": {
200
+ "ios": "ios/generated",
201
+ "android": "android/generated"
202
+ },
203
+ "android": {
204
+ "javaPackageName": "com.<%- project.package %>"
205
+ },
206
+ "includesGeneratedCode": true
191
207
  <% } -%>
192
208
  }
193
209
  }
@@ -114,8 +114,8 @@ android {
114
114
  main {
115
115
  if (isNewArchitectureEnabled()) {
116
116
  java.srcDirs += [
117
- // This is needed to build Kotlin project with NewArch enabled
118
- "${project.buildDir}/generated/source/codegen/java"
117
+ "generated/java",
118
+ "generated/jni"
119
119
  ]
120
120
  }
121
121
  }
@@ -127,8 +127,9 @@ android {
127
127
  if (isNewArchitectureEnabled()) {
128
128
  java.srcDirs += [
129
129
  "src/newarch",
130
- // This is needed to build Kotlin project with NewArch enabled
131
- "${project.buildDir}/generated/source/codegen/java"
130
+ // Codegen specs
131
+ "generated/java",
132
+ "generated/jni"
132
133
  ]
133
134
  } else {
134
135
  java.srcDirs += ["src/oldarch"]
@@ -18,6 +18,8 @@ Pod::Spec.new do |s|
18
18
  s.source_files = "ios/**/*.{h,m,mm}", "cpp/**/*.{hpp,cpp,c,h}"
19
19
  <% } else if (project.swift) { -%>
20
20
  s.source_files = "ios/**/*.{h,m,mm,swift}"
21
+ <% } else if (project.arch !== "legacy") { -%>
22
+ s.source_files = "ios/**/*.{h,m,mm,cpp}"
21
23
  <% } else { -%>
22
24
  s.source_files = "ios/**/*.{h,m,mm}"
23
25
  <% } -%>
@@ -3,6 +3,7 @@
3
3
  "pipeline": {
4
4
  <% if (example !== 'expo') { -%>
5
5
  "build:android": {
6
+ "env": ["ORG_GRADLE_PROJECT_newArchEnabled"],
6
7
  "inputs": [
7
8
  "package.json",
8
9
  "android",
@@ -18,6 +19,7 @@
18
19
  "outputs": []
19
20
  },
20
21
  "build:ios": {
22
+ "env": ["RCT_NEW_ARCH_ENABLED"],
21
23
  "inputs": [
22
24
  "package.json",
23
25
  "*.podspec",
@@ -0,0 +1,12 @@
1
+ /**
2
+ * @type {import('@react-native-community/cli-types').UserDependencyConfig}
3
+ */
4
+ module.exports = {
5
+ dependency: {
6
+ platforms: {
7
+ android: {
8
+ cmakeListsPath: 'generated/jni/CMakeLists.txt',
9
+ },
10
+ },
11
+ },
12
+ };
@@ -0,0 +1,12 @@
1
+ /**
2
+ * @type {import('@react-native-community/cli-types').UserDependencyConfig}
3
+ */
4
+ module.exports = {
5
+ dependency: {
6
+ platforms: {
7
+ android: {
8
+ cmakeListsPath: 'generated/jni/CMakeLists.txt',
9
+ },
10
+ },
11
+ },
12
+ };
@@ -0,0 +1,12 @@
1
+ /**
2
+ * @type {import('@react-native-community/cli-types').UserDependencyConfig}
3
+ */
4
+ module.exports = {
5
+ dependency: {
6
+ platforms: {
7
+ android: {
8
+ cmakeListsPath: 'generated/jni/CMakeLists.txt',
9
+ },
10
+ },
11
+ },
12
+ };
@@ -0,0 +1,12 @@
1
+ /**
2
+ * @type {import('@react-native-community/cli-types').UserDependencyConfig}
3
+ */
4
+ module.exports = {
5
+ dependency: {
6
+ platforms: {
7
+ android: {
8
+ cmakeListsPath: 'generated/jni/CMakeLists.txt',
9
+ },
10
+ },
11
+ },
12
+ };