create-react-native-library 0.45.0 → 0.45.2
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 +1 -1
- package/lib/index.js.map +1 -1
- package/lib/input.js +7 -7
- package/lib/input.js.map +1 -1
- package/lib/template.js +3 -3
- package/lib/template.js.map +1 -1
- package/package.json +2 -2
- package/templates/common/$package.json +2 -2
- package/templates/common/CONTRIBUTING.md +1 -1
- package/templates/common-local/$package.json +1 -1
- package/templates/native-library-new/src/index.tsx +1 -1
package/lib/index.js
CHANGED
|
@@ -88,7 +88,7 @@ async function create(_argv) {
|
|
|
88
88
|
...devDependencies
|
|
89
89
|
} : devDependencies;
|
|
90
90
|
}
|
|
91
|
-
if (config.example === 'vanilla' && config.project.arch
|
|
91
|
+
if (config.example === 'vanilla' && config.project.arch === 'new') {
|
|
92
92
|
(0, _addCodegenBuildScript.addCodegenBuildScript)(folder);
|
|
93
93
|
}
|
|
94
94
|
const libraryMetadata = (0, _input.createMetadata)(answers);
|
package/lib/index.js.map
CHANGED
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"index.js","names":["_path","_interopRequireDefault","require","_fsExtra","_kleur","_yargs","_ora","_prompts","_generateExampleApp","_addCodegenBuildScript","_initialCommit","_assert","_promiseWithFallback","_template","_input","_dependencies","_inform","e","__esModule","default","FALLBACK_BOB_VERSION","yargs","command","acceptedArgs","create","demandCommand","recommendCommands","fail","printErrorHelp","parserConfiguration","strict","argv","_argv","_","$0","resolveBobVersion","resolveBobVersionWithFallback","local","promptLocalLibrary","folder","promptPath","assertNpxExists","basename","path","questions","singleChoiceAnswers","createQuestions","assertUserInput","promptAnswers","prompts","answers","bobVersion","config","generateTemplateConfiguration","fs","mkdirp","reactNativeVersion","printUsedRNVersion","spinner","ora","start","example","text","generateExampleApp","type","dest","arch","project","applyTemplates","rootPackageJson","readJson","join","devDependencies","getDependencyVersionsFromExampleApp","addCodegenBuildScript","libraryMetadata","createMetadata","writeJson","spaces","createInitialGitCommit","succeed","kleur","yellow","relative","process","cwd","printNextSteps","hasPackageJson","pathExists","name","message","initial","includes","validate","input","pathExistsSync","console","log","blue","exit"],"sources":["../src/index.ts"],"sourcesContent":["import path from 'path';\nimport fs from 'fs-extra';\nimport kleur from 'kleur';\nimport yargs from 'yargs';\nimport ora from 'ora';\nimport prompts from './utils/prompts';\nimport generateExampleApp from './exampleApp/generateExampleApp';\nimport { addCodegenBuildScript } from './exampleApp/addCodegenBuildScript';\nimport { createInitialGitCommit } from './utils/initialCommit';\nimport { assertUserInput, assertNpxExists } from './utils/assert';\nimport { resolveBobVersionWithFallback } from './utils/promiseWithFallback';\nimport { applyTemplates, generateTemplateConfiguration } from './template';\nimport {\n createQuestions,\n createMetadata,\n type Answers,\n acceptedArgs,\n type Args,\n} from './input';\nimport { getDependencyVersionsFromExampleApp } from './exampleApp/dependencies';\nimport { printErrorHelp, printNextSteps, printUsedRNVersion } from './inform';\n\nconst FALLBACK_BOB_VERSION = '0.32.0';\n\nyargs\n .command(\n '$0 [name]',\n 'create a react native library',\n acceptedArgs,\n // @ts-expect-error Some types are still incompatible\n create\n )\n .demandCommand()\n .recommendCommands()\n .fail(printErrorHelp)\n .parserConfiguration({\n // don't pass kebab-case args to handler.\n 'strip-dashed': true,\n })\n .strict().argv;\n\nasync function create(_argv: yargs.Arguments<Args>) {\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 resolveBobVersion = resolveBobVersionWithFallback(FALLBACK_BOB_VERSION);\n\n const local = await promptLocalLibrary(argv);\n const folder = await promptPath(argv, local);\n\n await assertNpxExists();\n\n const basename = path.basename(folder);\n\n const { questions, singleChoiceAnswers } = await createQuestions({\n basename,\n local,\n argv,\n });\n\n assertUserInput(questions, argv);\n\n const promptAnswers = await prompts(questions);\n\n const answers = {\n ...argv,\n local,\n ...singleChoiceAnswers,\n ...promptAnswers,\n } as Required<Answers>;\n\n assertUserInput(questions, answers);\n\n const bobVersion = await resolveBobVersion();\n\n const config = generateTemplateConfiguration({\n bobVersion,\n basename,\n answers,\n });\n\n await fs.mkdirp(folder);\n\n if (answers.reactNativeVersion != null) {\n printUsedRNVersion(answers.reactNativeVersion, config);\n }\n\n const spinner = ora().start();\n\n if (config.example !== 'none') {\n spinner.text = 'Generating example app';\n\n await generateExampleApp({\n type: config.example,\n dest: folder,\n arch: config.project.arch,\n project: config.project,\n bobVersion,\n reactNativeVersion: answers.reactNativeVersion,\n });\n }\n\n spinner.text = 'Copying files';\n\n await applyTemplates(answers, config, folder);\n\n const rootPackageJson = await fs.readJson(path.join(folder, 'package.json'));\n\n if (config.example !== 'none') {\n const { devDependencies } = await getDependencyVersionsFromExampleApp(\n folder,\n config.example\n );\n\n rootPackageJson.devDependencies = rootPackageJson.devDependencies\n ? {\n ...rootPackageJson.devDependencies,\n ...devDependencies,\n }\n : devDependencies;\n }\n\n if (config.example === 'vanilla' && config.project.arch !== 'legacy') {\n addCodegenBuildScript(folder);\n }\n\n const libraryMetadata = createMetadata(answers);\n\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 await createInitialGitCommit(folder);\n }\n\n spinner.succeed(\n `Project created successfully at ${kleur.yellow(\n path.relative(process.cwd(), folder)\n )}!\\n`\n );\n\n await printNextSteps(local, folder, config);\n}\n\nasync function promptLocalLibrary(argv: Args) {\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 return local;\n}\n\nasync function promptPath(argv: Args, local: boolean) {\n let folder: string;\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 return folder;\n}\n"],"mappings":"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","ignoreList":[]}
|
|
1
|
+
{"version":3,"file":"index.js","names":["_path","_interopRequireDefault","require","_fsExtra","_kleur","_yargs","_ora","_prompts","_generateExampleApp","_addCodegenBuildScript","_initialCommit","_assert","_promiseWithFallback","_template","_input","_dependencies","_inform","e","__esModule","default","FALLBACK_BOB_VERSION","yargs","command","acceptedArgs","create","demandCommand","recommendCommands","fail","printErrorHelp","parserConfiguration","strict","argv","_argv","_","$0","resolveBobVersion","resolveBobVersionWithFallback","local","promptLocalLibrary","folder","promptPath","assertNpxExists","basename","path","questions","singleChoiceAnswers","createQuestions","assertUserInput","promptAnswers","prompts","answers","bobVersion","config","generateTemplateConfiguration","fs","mkdirp","reactNativeVersion","printUsedRNVersion","spinner","ora","start","example","text","generateExampleApp","type","dest","arch","project","applyTemplates","rootPackageJson","readJson","join","devDependencies","getDependencyVersionsFromExampleApp","addCodegenBuildScript","libraryMetadata","createMetadata","writeJson","spaces","createInitialGitCommit","succeed","kleur","yellow","relative","process","cwd","printNextSteps","hasPackageJson","pathExists","name","message","initial","includes","validate","input","pathExistsSync","console","log","blue","exit"],"sources":["../src/index.ts"],"sourcesContent":["import path from 'path';\nimport fs from 'fs-extra';\nimport kleur from 'kleur';\nimport yargs from 'yargs';\nimport ora from 'ora';\nimport prompts from './utils/prompts';\nimport generateExampleApp from './exampleApp/generateExampleApp';\nimport { addCodegenBuildScript } from './exampleApp/addCodegenBuildScript';\nimport { createInitialGitCommit } from './utils/initialCommit';\nimport { assertUserInput, assertNpxExists } from './utils/assert';\nimport { resolveBobVersionWithFallback } from './utils/promiseWithFallback';\nimport { applyTemplates, generateTemplateConfiguration } from './template';\nimport {\n createQuestions,\n createMetadata,\n type Answers,\n acceptedArgs,\n type Args,\n} from './input';\nimport { getDependencyVersionsFromExampleApp } from './exampleApp/dependencies';\nimport { printErrorHelp, printNextSteps, printUsedRNVersion } from './inform';\n\nconst FALLBACK_BOB_VERSION = '0.32.0';\n\nyargs\n .command(\n '$0 [name]',\n 'create a react native library',\n acceptedArgs,\n // @ts-expect-error Some types are still incompatible\n create\n )\n .demandCommand()\n .recommendCommands()\n .fail(printErrorHelp)\n .parserConfiguration({\n // don't pass kebab-case args to handler.\n 'strip-dashed': true,\n })\n .strict().argv;\n\nasync function create(_argv: yargs.Arguments<Args>) {\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 resolveBobVersion = resolveBobVersionWithFallback(FALLBACK_BOB_VERSION);\n\n const local = await promptLocalLibrary(argv);\n const folder = await promptPath(argv, local);\n\n await assertNpxExists();\n\n const basename = path.basename(folder);\n\n const { questions, singleChoiceAnswers } = await createQuestions({\n basename,\n local,\n argv,\n });\n\n assertUserInput(questions, argv);\n\n const promptAnswers = await prompts(questions);\n\n const answers = {\n ...argv,\n local,\n ...singleChoiceAnswers,\n ...promptAnswers,\n } as Required<Answers>;\n\n assertUserInput(questions, answers);\n\n const bobVersion = await resolveBobVersion();\n\n const config = generateTemplateConfiguration({\n bobVersion,\n basename,\n answers,\n });\n\n await fs.mkdirp(folder);\n\n if (answers.reactNativeVersion != null) {\n printUsedRNVersion(answers.reactNativeVersion, config);\n }\n\n const spinner = ora().start();\n\n if (config.example !== 'none') {\n spinner.text = 'Generating example app';\n\n await generateExampleApp({\n type: config.example,\n dest: folder,\n arch: config.project.arch,\n project: config.project,\n bobVersion,\n reactNativeVersion: answers.reactNativeVersion,\n });\n }\n\n spinner.text = 'Copying files';\n\n await applyTemplates(answers, config, folder);\n\n const rootPackageJson = await fs.readJson(path.join(folder, 'package.json'));\n\n if (config.example !== 'none') {\n const { devDependencies } = await getDependencyVersionsFromExampleApp(\n folder,\n config.example\n );\n\n rootPackageJson.devDependencies = rootPackageJson.devDependencies\n ? {\n ...rootPackageJson.devDependencies,\n ...devDependencies,\n }\n : devDependencies;\n }\n\n if (config.example === 'vanilla' && config.project.arch === 'new') {\n addCodegenBuildScript(folder);\n }\n\n const libraryMetadata = createMetadata(answers);\n\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 await createInitialGitCommit(folder);\n }\n\n spinner.succeed(\n `Project created successfully at ${kleur.yellow(\n path.relative(process.cwd(), folder)\n )}!\\n`\n );\n\n await printNextSteps(local, folder, config);\n}\n\nasync function promptLocalLibrary(argv: Args) {\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 return local;\n}\n\nasync function promptPath(argv: Args, local: boolean) {\n let folder: string;\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 return folder;\n}\n"],"mappings":"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","ignoreList":[]}
|
package/lib/input.js
CHANGED
|
@@ -14,15 +14,15 @@ function _interopRequireDefault(e) { return e && e.__esModule ? e : { default: e
|
|
|
14
14
|
const LANGUAGE_CHOICES = [{
|
|
15
15
|
title: 'Kotlin & Objective-C',
|
|
16
16
|
value: 'kotlin-objc',
|
|
17
|
-
types: ['module
|
|
17
|
+
types: ['turbo-module', 'fabric-view', 'legacy-module', 'legacy-view']
|
|
18
18
|
}, {
|
|
19
19
|
title: 'Kotlin & Swift',
|
|
20
20
|
value: 'kotlin-swift',
|
|
21
|
-
types: ['module
|
|
21
|
+
types: ['legacy-module', 'legacy-view']
|
|
22
22
|
}, {
|
|
23
23
|
title: 'C++ for Android & iOS',
|
|
24
24
|
value: 'cpp',
|
|
25
|
-
types: ['module
|
|
25
|
+
types: ['turbo-module', 'legacy-module']
|
|
26
26
|
}, {
|
|
27
27
|
title: 'JavaScript for Android, iOS & Web',
|
|
28
28
|
value: 'js',
|
|
@@ -48,19 +48,19 @@ const EXAMPLE_CHOICES = [{
|
|
|
48
48
|
}].filter(choice => !choice.disabled);
|
|
49
49
|
const TYPE_CHOICES = [{
|
|
50
50
|
title: 'Turbo module',
|
|
51
|
-
value: 'module
|
|
51
|
+
value: 'turbo-module',
|
|
52
52
|
description: 'integration for native APIs to JS'
|
|
53
53
|
}, {
|
|
54
54
|
title: 'Fabric view',
|
|
55
|
-
value: 'view
|
|
55
|
+
value: 'fabric-view',
|
|
56
56
|
description: 'integration for native views to JS'
|
|
57
57
|
}, {
|
|
58
58
|
title: 'Legacy Native module',
|
|
59
|
-
value: 'module
|
|
59
|
+
value: 'legacy-module',
|
|
60
60
|
description: 'bridge for native APIs to JS (old architecture)'
|
|
61
61
|
}, {
|
|
62
62
|
title: 'Legacy Native view',
|
|
63
|
-
value: 'view
|
|
63
|
+
value: 'legacy-view',
|
|
64
64
|
description: 'bridge for native views to JS (old architecture)'
|
|
65
65
|
}, {
|
|
66
66
|
title: 'JavaScript library',
|
package/lib/input.js.map
CHANGED
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"input.js","names":["_package","require","_validateNpmPackageName","_interopRequireDefault","_githubUsername","_spawn","e","__esModule","default","LANGUAGE_CHOICES","title","value","types","EXAMPLE_CHOICES","description","disabled","process","env","CRNL_ENABLE_TEST_APP","filter","choice","TYPE_CHOICES","acceptedArgs","exports","slug","type","authorName","authorEmail","authorUrl","repoUrl","languages","choices","map","reactNativeVersion","local","example","createQuestions","basename","argv","name","email","spawn","initialQuestions","message","initial","validateNpmPackage","validForNewPackages","test","undefined","validate","input","Boolean","previous","username","githubUsername","_","answers","replace","values","includes","push","singleChoiceAnswers","finalQuestions","question","argValue","Array","isArray","length","onlyChoice","prev","prompt","dynamicChoices","questions","createMetadata","ignoredAnswers","libraryMetadata","Object","fromEntries","entries","answer","version"],"sources":["../src/input.ts"],"sourcesContent":["import { version } from '../package.json';\nimport validateNpmPackage from 'validate-npm-package-name';\nimport githubUsername from 'github-username';\nimport type yargs from 'yargs';\nimport type { PromptObject } from './utils/prompts';\nimport { spawn } from './utils/spawn';\n\nexport type ArgName =\n | 'slug'\n | 'description'\n | 'authorName'\n | 'authorEmail'\n | 'authorUrl'\n | 'repoUrl'\n | 'languages'\n | 'type'\n | 'local'\n | 'example'\n | 'reactNativeVersion';\n\nexport type ProjectLanguages = 'kotlin-objc' | 'kotlin-swift' | 'cpp' | 'js';\n\nexport type ProjectType =\n | 'module-new'\n | 'view-new'\n | 'module-legacy'\n | 'view-legacy'\n | 'library';\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: ['module-new', 'view-new', 'module-legacy', 'view-legacy'],\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-new', 'module-legacy'],\n },\n {\n title: 'JavaScript for Android, iOS & Web',\n value: 'js',\n types: ['library'],\n },\n];\n\nconst EXAMPLE_CHOICES = (\n [\n {\n title: 'Vanilla',\n value: 'vanilla',\n description: \"provides access to app's native code\",\n disabled: false,\n },\n {\n title: 'Test app',\n value: 'test-app',\n description: \"app's native code is abstracted away\",\n // The test app is disabled for now until proper\n // Codegen spec shipping is implemented\n disabled: !process.env.CRNL_ENABLE_TEST_APP,\n },\n {\n title: 'Expo',\n value: 'expo',\n description: 'managed expo project with web support',\n disabled: false,\n },\n ] as const\n).filter((choice) => !choice.disabled);\n\nconst TYPE_CHOICES: {\n title: string;\n value: ProjectType;\n description: string;\n}[] = [\n {\n title: 'Turbo module',\n value: 'module-new',\n description: 'integration for native APIs to JS',\n },\n {\n title: 'Fabric view',\n value: 'view-new',\n description: 'integration for native views to JS',\n },\n {\n title: 'Legacy Native module',\n value: 'module-legacy',\n description: 'bridge for native APIs to JS (old architecture)',\n },\n {\n title: 'Legacy Native view',\n value: 'view-legacy',\n description: 'bridge for native views to JS (old architecture)',\n },\n {\n title: 'JavaScript library',\n value: 'library',\n description: 'supports Expo Go and Web',\n },\n];\n\nexport type Question = Omit<\n PromptObject<keyof Answers>,\n 'validate' | 'name'\n> & {\n validate?: (value: string) => boolean | string;\n name: keyof Answers;\n};\n\nexport const acceptedArgs: 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 authorName: {\n description: 'Name of the package author',\n type: 'string',\n },\n authorEmail: {\n description: 'Email address of the package author',\n type: 'string',\n },\n authorUrl: {\n description: 'URL for the package author',\n type: 'string',\n },\n repoUrl: {\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 reactNativeVersion: {\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} as const;\n\nexport type Args = Record<ArgName | 'name', string>;\nexport type SupportedArchitecture = 'new' | 'legacy';\nexport type ExampleApp = 'none' | 'test-app' | 'expo' | 'vanilla';\n\nexport type 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?: ExampleApp;\n reactNativeVersion?: string;\n local?: boolean;\n};\n\nexport async function createQuestions({\n basename,\n local,\n argv,\n}: {\n basename: string;\n local: boolean;\n argv: Args;\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 initialQuestions: Question[] = [\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 initialQuestions.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 singleChoiceAnswers: Partial<Answers> = {};\n const finalQuestions: Question[] = [];\n\n for (const question of initialQuestions) {\n // Skip questions which are passed as parameter and pass validation\n const argValue = argv[question.name];\n if (argValue && question.validate?.(argValue) !== false) {\n continue;\n }\n\n // Don't prompt questions with a single choice\n if (Array.isArray(question.choices) && question.choices.length === 1) {\n const onlyChoice = question.choices[0]!;\n singleChoiceAnswers[question.name] = onlyChoice.value;\n\n continue;\n }\n\n const { type, choices } = question;\n\n // Don't prompt dynamic questions with a single choice\n if (type === 'select' && typeof choices === 'function') {\n question.type = (prev, values, prompt) => {\n const dynamicChoices = choices(prev, { ...argv, ...values }, prompt);\n\n if (dynamicChoices && dynamicChoices.length === 1) {\n const onlyChoice = dynamicChoices[0]!;\n singleChoiceAnswers[question.name] = onlyChoice.value;\n return null;\n }\n\n return type;\n };\n }\n\n finalQuestions.push(question);\n }\n\n return {\n questions: finalQuestions,\n singleChoiceAnswers,\n };\n}\n\nexport function createMetadata(answers: Answers) {\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\n return libraryMetadata;\n}\n"],"mappings":"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","ignoreList":[]}
|
|
1
|
+
{"version":3,"file":"input.js","names":["_package","require","_validateNpmPackageName","_interopRequireDefault","_githubUsername","_spawn","e","__esModule","default","LANGUAGE_CHOICES","title","value","types","EXAMPLE_CHOICES","description","disabled","process","env","CRNL_ENABLE_TEST_APP","filter","choice","TYPE_CHOICES","acceptedArgs","exports","slug","type","authorName","authorEmail","authorUrl","repoUrl","languages","choices","map","reactNativeVersion","local","example","createQuestions","basename","argv","name","email","spawn","initialQuestions","message","initial","validateNpmPackage","validForNewPackages","test","undefined","validate","input","Boolean","previous","username","githubUsername","_","answers","replace","values","includes","push","singleChoiceAnswers","finalQuestions","question","argValue","Array","isArray","length","onlyChoice","prev","prompt","dynamicChoices","questions","createMetadata","ignoredAnswers","libraryMetadata","Object","fromEntries","entries","answer","version"],"sources":["../src/input.ts"],"sourcesContent":["import { version } from '../package.json';\nimport validateNpmPackage from 'validate-npm-package-name';\nimport githubUsername from 'github-username';\nimport type yargs from 'yargs';\nimport type { PromptObject } from './utils/prompts';\nimport { spawn } from './utils/spawn';\n\nexport type ArgName =\n | 'slug'\n | 'description'\n | 'authorName'\n | 'authorEmail'\n | 'authorUrl'\n | 'repoUrl'\n | 'languages'\n | 'type'\n | 'local'\n | 'example'\n | 'reactNativeVersion';\n\nexport type ProjectLanguages = 'kotlin-objc' | 'kotlin-swift' | 'cpp' | 'js';\n\nexport type ProjectType =\n | 'turbo-module'\n | 'fabric-view'\n | 'legacy-module'\n | 'legacy-view'\n | 'library';\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: ['turbo-module', 'fabric-view', 'legacy-module', 'legacy-view'],\n },\n {\n title: 'Kotlin & Swift',\n value: 'kotlin-swift',\n types: ['legacy-module', 'legacy-view'],\n },\n {\n title: 'C++ for Android & iOS',\n value: 'cpp',\n types: ['turbo-module', 'legacy-module'],\n },\n {\n title: 'JavaScript for Android, iOS & Web',\n value: 'js',\n types: ['library'],\n },\n];\n\nconst EXAMPLE_CHOICES = (\n [\n {\n title: 'Vanilla',\n value: 'vanilla',\n description: \"provides access to app's native code\",\n disabled: false,\n },\n {\n title: 'Test app',\n value: 'test-app',\n description: \"app's native code is abstracted away\",\n // The test app is disabled for now until proper\n // Codegen spec shipping is implemented\n disabled: !process.env.CRNL_ENABLE_TEST_APP,\n },\n {\n title: 'Expo',\n value: 'expo',\n description: 'managed expo project with web support',\n disabled: false,\n },\n ] as const\n).filter((choice) => !choice.disabled);\n\nconst TYPE_CHOICES: {\n title: string;\n value: ProjectType;\n description: string;\n}[] = [\n {\n title: 'Turbo module',\n value: 'turbo-module',\n description: 'integration for native APIs to JS',\n },\n {\n title: 'Fabric view',\n value: 'fabric-view',\n description: 'integration for native views to JS',\n },\n {\n title: 'Legacy Native module',\n value: 'legacy-module',\n description: 'bridge for native APIs to JS (old architecture)',\n },\n {\n title: 'Legacy Native view',\n value: 'legacy-view',\n description: 'bridge for native views to JS (old architecture)',\n },\n {\n title: 'JavaScript library',\n value: 'library',\n description: 'supports Expo Go and Web',\n },\n];\n\nexport type Question = Omit<\n PromptObject<keyof Answers>,\n 'validate' | 'name'\n> & {\n validate?: (value: string) => boolean | string;\n name: keyof Answers;\n};\n\nexport const acceptedArgs: 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 authorName: {\n description: 'Name of the package author',\n type: 'string',\n },\n authorEmail: {\n description: 'Email address of the package author',\n type: 'string',\n },\n authorUrl: {\n description: 'URL for the package author',\n type: 'string',\n },\n repoUrl: {\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 reactNativeVersion: {\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} as const;\n\nexport type Args = Record<ArgName | 'name', string>;\nexport type SupportedArchitecture = 'new' | 'legacy';\nexport type ExampleApp = 'none' | 'test-app' | 'expo' | 'vanilla';\n\nexport type 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?: ExampleApp;\n reactNativeVersion?: string;\n local?: boolean;\n};\n\nexport async function createQuestions({\n basename,\n local,\n argv,\n}: {\n basename: string;\n local: boolean;\n argv: Args;\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 initialQuestions: Question[] = [\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 initialQuestions.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 singleChoiceAnswers: Partial<Answers> = {};\n const finalQuestions: Question[] = [];\n\n for (const question of initialQuestions) {\n // Skip questions which are passed as parameter and pass validation\n const argValue = argv[question.name];\n if (argValue && question.validate?.(argValue) !== false) {\n continue;\n }\n\n // Don't prompt questions with a single choice\n if (Array.isArray(question.choices) && question.choices.length === 1) {\n const onlyChoice = question.choices[0]!;\n singleChoiceAnswers[question.name] = onlyChoice.value;\n\n continue;\n }\n\n const { type, choices } = question;\n\n // Don't prompt dynamic questions with a single choice\n if (type === 'select' && typeof choices === 'function') {\n question.type = (prev, values, prompt) => {\n const dynamicChoices = choices(prev, { ...argv, ...values }, prompt);\n\n if (dynamicChoices && dynamicChoices.length === 1) {\n const onlyChoice = dynamicChoices[0]!;\n singleChoiceAnswers[question.name] = onlyChoice.value;\n return null;\n }\n\n return type;\n };\n }\n\n finalQuestions.push(question);\n }\n\n return {\n questions: finalQuestions,\n singleChoiceAnswers,\n };\n}\n\nexport function createMetadata(answers: Answers) {\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\n return libraryMetadata;\n}\n"],"mappings":"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","ignoreList":[]}
|
package/lib/template.js
CHANGED
|
@@ -55,7 +55,7 @@ function generateTemplateConfiguration({
|
|
|
55
55
|
languages,
|
|
56
56
|
type
|
|
57
57
|
} = answers;
|
|
58
|
-
const arch = type === 'module
|
|
58
|
+
const arch = type === 'legacy-module' || type === 'legacy-view' ? 'legacy' : 'new';
|
|
59
59
|
const project = slug.replace(/^(react-native-|@[^/]+\/)/, '');
|
|
60
60
|
let namespace;
|
|
61
61
|
if (slug.startsWith('@') && slug.includes('/')) {
|
|
@@ -84,8 +84,8 @@ function generateTemplateConfiguration({
|
|
|
84
84
|
arch,
|
|
85
85
|
cpp: languages === 'cpp',
|
|
86
86
|
swift: languages === 'kotlin-swift',
|
|
87
|
-
view: answers.type.
|
|
88
|
-
module: answers.type.
|
|
87
|
+
view: answers.type.endsWith('-view'),
|
|
88
|
+
module: answers.type.endsWith('-module')
|
|
89
89
|
},
|
|
90
90
|
author: {
|
|
91
91
|
name: answers.authorName,
|
package/lib/template.js.map
CHANGED
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"template.js","names":["_path","_interopRequireDefault","require","_fsExtra","_ejs","e","__esModule","default","BINARIES","COMMON_FILES","path","resolve","__dirname","COMMON_LOCAL_FILES","EXAMPLE_COMMON_FILES","EXAMPLE_MODULE_LEGACY_FILES","EXAMPLE_MODULE_NEW_FILES","EXAMPLE_VIEW_FILES","JS_FILES","EXPO_FILES","CPP_FILES","NATIVE_COMMON_FILES","NATIVE_COMMON_EXAMPLE_FILES","NATIVE_FILES","module_legacy","module_new","view_legacy","view_new","OBJC_FILES","module_common","KOTLIN_FILES","SWIFT_FILES","generateTemplateConfiguration","bobVersion","basename","answers","slug","languages","type","arch","project","replace","namespace","startsWith","includes","split","toLowerCase","pack","bob","version","description","name","test","charAt","toUpperCase","_","$1","slice","package","package_dir","package_cpp","identifier","native","cpp","swift","view","module","author","authorName","email","authorEmail","url","authorUrl","repo","repoUrl","example","year","Date","getFullYear","applyTemplates","config","folder","local","applyTemplate","templateType","fs","remove","join","source","destination","mkdirp","files","readdir","f","target","ejs","render","openDelimiter","closeDelimiter","file","stats","stat","isDirectory","some","r","content","readFile","writeFile","copyFile"],"sources":["../src/template.ts"],"sourcesContent":["import path from 'path';\nimport fs from 'fs-extra';\nimport ejs from 'ejs';\nimport type { Answers, ExampleApp, SupportedArchitecture } from './input';\n\n// Please think at least 5 times before introducing a new config key\n// You can just reuse the existing ones most of the time\nexport type TemplateConfiguration = {\n bob: {\n version: string;\n };\n project: {\n slug: string;\n description: string;\n name: string;\n package: string;\n package_dir: string;\n package_cpp: string;\n identifier: string;\n native: boolean;\n arch: SupportedArchitecture;\n cpp: boolean;\n swift: boolean;\n view: boolean;\n module: boolean;\n };\n author: {\n name: string;\n email: string;\n url: string;\n };\n repo: string;\n example: ExampleApp;\n year: number;\n};\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_LOCAL_FILES = path.resolve(__dirname, '../templates/common-local');\nconst EXAMPLE_COMMON_FILES = path.resolve(\n __dirname,\n '../templates/example-common'\n);\nconst EXAMPLE_MODULE_LEGACY_FILES = path.resolve(\n __dirname,\n '../templates/example-module-legacy'\n);\nconst EXAMPLE_MODULE_NEW_FILES = path.resolve(\n __dirname,\n '../templates/example-module-new'\n);\nconst EXAMPLE_VIEW_FILES = path.resolve(__dirname, '../templates/example-view');\n\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 view_legacy: path.resolve(__dirname, '../templates/native-view-legacy'),\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_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 view_legacy: path.resolve(__dirname, '../templates/kotlin-view-legacy'),\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\nexport function generateTemplateConfiguration({\n bobVersion,\n basename,\n answers,\n}: {\n bobVersion: string;\n basename: string;\n answers: Required<Answers>;\n}): TemplateConfiguration {\n const { slug, languages, type } = answers;\n\n const arch =\n type === 'module-legacy' || type === 'view-legacy' ? 'legacy' : 'new';\n\n const project = slug.replace(/^(react-native-|@[^/]+\\/)/, '');\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 return {\n bob: {\n version: bobVersion,\n },\n project: {\n slug,\n description: answers.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: answers.type.startsWith('view'),\n module: answers.type.startsWith('module'),\n },\n author: {\n name: answers.authorName,\n email: answers.authorEmail,\n url: answers.authorUrl,\n },\n repo: answers.repoUrl,\n example: answers.example,\n year: new Date().getFullYear(),\n };\n}\n\nexport async function applyTemplates(\n answers: Answers,\n config: TemplateConfiguration,\n folder: string\n) {\n const { local } = answers;\n if (local) {\n await applyTemplate(config, COMMON_LOCAL_FILES, folder);\n } else {\n await applyTemplate(config, COMMON_FILES, folder);\n\n if (config.example !== 'none') {\n await applyTemplate(config, EXAMPLE_COMMON_FILES, folder);\n\n if (config.project.view) {\n await applyTemplate(config, EXAMPLE_VIEW_FILES, folder);\n } else {\n if (config.project.arch === 'legacy') {\n await applyTemplate(config, EXAMPLE_MODULE_LEGACY_FILES, folder);\n } else {\n await applyTemplate(config, EXAMPLE_MODULE_NEW_FILES, folder);\n }\n }\n }\n }\n\n if (answers.languages === 'js') {\n await applyTemplate(config, JS_FILES, folder);\n await applyTemplate(config, EXPO_FILES, folder);\n } else {\n await applyTemplate(config, NATIVE_COMMON_FILES, folder);\n\n if (config.example !== 'none') {\n await applyTemplate(config, NATIVE_COMMON_EXAMPLE_FILES, folder);\n }\n\n if (config.project.module) {\n await applyTemplate(\n config,\n NATIVE_FILES[`module_${config.project.arch}`],\n folder\n );\n } else {\n await applyTemplate(\n config,\n NATIVE_FILES[`view_${config.project.arch}`],\n folder\n );\n }\n\n if (config.project.swift) {\n await applyTemplate(config, SWIFT_FILES[`module_legacy`], folder);\n } else {\n if (config.project.module) {\n await applyTemplate(config, OBJC_FILES[`module_common`], folder);\n } else {\n await applyTemplate(\n config,\n OBJC_FILES[`view_${config.project.arch}`],\n folder\n );\n }\n }\n\n const templateType = `${config.project.module ? 'module' : 'view'}_${\n config.project.arch\n }` as const;\n\n await applyTemplate(config, KOTLIN_FILES[templateType], folder);\n\n if (config.project.cpp) {\n await applyTemplate(config, CPP_FILES, folder);\n await fs.remove(path.join(folder, 'ios', `${config.project.name}.m`));\n }\n }\n}\n\n/**\n * This copies the template files and renders them via ejs\n */\nasync function applyTemplate(\n config: TemplateConfiguration,\n source: string,\n destination: string\n) {\n await fs.mkdirp(destination);\n\n const files = await fs.readdir(source);\n\n for (const f of files) {\n const target = path.join(\n destination,\n ejs.render(f.replace(/^\\$/, ''), config, {\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 applyTemplate(config, 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, config));\n } else {\n await fs.copyFile(file, target);\n }\n }\n}\n"],"mappings":"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","ignoreList":[]}
|
|
1
|
+
{"version":3,"file":"template.js","names":["_path","_interopRequireDefault","require","_fsExtra","_ejs","e","__esModule","default","BINARIES","COMMON_FILES","path","resolve","__dirname","COMMON_LOCAL_FILES","EXAMPLE_COMMON_FILES","EXAMPLE_MODULE_LEGACY_FILES","EXAMPLE_MODULE_NEW_FILES","EXAMPLE_VIEW_FILES","JS_FILES","EXPO_FILES","CPP_FILES","NATIVE_COMMON_FILES","NATIVE_COMMON_EXAMPLE_FILES","NATIVE_FILES","module_legacy","module_new","view_legacy","view_new","OBJC_FILES","module_common","KOTLIN_FILES","SWIFT_FILES","generateTemplateConfiguration","bobVersion","basename","answers","slug","languages","type","arch","project","replace","namespace","startsWith","includes","split","toLowerCase","pack","bob","version","description","name","test","charAt","toUpperCase","_","$1","slice","package","package_dir","package_cpp","identifier","native","cpp","swift","view","endsWith","module","author","authorName","email","authorEmail","url","authorUrl","repo","repoUrl","example","year","Date","getFullYear","applyTemplates","config","folder","local","applyTemplate","templateType","fs","remove","join","source","destination","mkdirp","files","readdir","f","target","ejs","render","openDelimiter","closeDelimiter","file","stats","stat","isDirectory","some","r","content","readFile","writeFile","copyFile"],"sources":["../src/template.ts"],"sourcesContent":["import path from 'path';\nimport fs from 'fs-extra';\nimport ejs from 'ejs';\nimport type { Answers, ExampleApp, SupportedArchitecture } from './input';\n\n// Please think at least 5 times before introducing a new config key\n// You can just reuse the existing ones most of the time\nexport type TemplateConfiguration = {\n bob: {\n version: string;\n };\n project: {\n slug: string;\n description: string;\n name: string;\n package: string;\n package_dir: string;\n package_cpp: string;\n identifier: string;\n native: boolean;\n arch: SupportedArchitecture;\n cpp: boolean;\n swift: boolean;\n view: boolean;\n module: boolean;\n };\n author: {\n name: string;\n email: string;\n url: string;\n };\n repo: string;\n example: ExampleApp;\n year: number;\n};\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_LOCAL_FILES = path.resolve(__dirname, '../templates/common-local');\nconst EXAMPLE_COMMON_FILES = path.resolve(\n __dirname,\n '../templates/example-common'\n);\nconst EXAMPLE_MODULE_LEGACY_FILES = path.resolve(\n __dirname,\n '../templates/example-module-legacy'\n);\nconst EXAMPLE_MODULE_NEW_FILES = path.resolve(\n __dirname,\n '../templates/example-module-new'\n);\nconst EXAMPLE_VIEW_FILES = path.resolve(__dirname, '../templates/example-view');\n\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 view_legacy: path.resolve(__dirname, '../templates/native-view-legacy'),\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_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 view_legacy: path.resolve(__dirname, '../templates/kotlin-view-legacy'),\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\nexport function generateTemplateConfiguration({\n bobVersion,\n basename,\n answers,\n}: {\n bobVersion: string;\n basename: string;\n answers: Required<Answers>;\n}): TemplateConfiguration {\n const { slug, languages, type } = answers;\n\n const arch =\n type === 'legacy-module' || type === 'legacy-view' ? 'legacy' : 'new';\n\n const project = slug.replace(/^(react-native-|@[^/]+\\/)/, '');\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 return {\n bob: {\n version: bobVersion,\n },\n project: {\n slug,\n description: answers.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: answers.type.endsWith('-view'),\n module: answers.type.endsWith('-module'),\n },\n author: {\n name: answers.authorName,\n email: answers.authorEmail,\n url: answers.authorUrl,\n },\n repo: answers.repoUrl,\n example: answers.example,\n year: new Date().getFullYear(),\n };\n}\n\nexport async function applyTemplates(\n answers: Answers,\n config: TemplateConfiguration,\n folder: string\n) {\n const { local } = answers;\n if (local) {\n await applyTemplate(config, COMMON_LOCAL_FILES, folder);\n } else {\n await applyTemplate(config, COMMON_FILES, folder);\n\n if (config.example !== 'none') {\n await applyTemplate(config, EXAMPLE_COMMON_FILES, folder);\n\n if (config.project.view) {\n await applyTemplate(config, EXAMPLE_VIEW_FILES, folder);\n } else {\n if (config.project.arch === 'legacy') {\n await applyTemplate(config, EXAMPLE_MODULE_LEGACY_FILES, folder);\n } else {\n await applyTemplate(config, EXAMPLE_MODULE_NEW_FILES, folder);\n }\n }\n }\n }\n\n if (answers.languages === 'js') {\n await applyTemplate(config, JS_FILES, folder);\n await applyTemplate(config, EXPO_FILES, folder);\n } else {\n await applyTemplate(config, NATIVE_COMMON_FILES, folder);\n\n if (config.example !== 'none') {\n await applyTemplate(config, NATIVE_COMMON_EXAMPLE_FILES, folder);\n }\n\n if (config.project.module) {\n await applyTemplate(\n config,\n NATIVE_FILES[`module_${config.project.arch}`],\n folder\n );\n } else {\n await applyTemplate(\n config,\n NATIVE_FILES[`view_${config.project.arch}`],\n folder\n );\n }\n\n if (config.project.swift) {\n await applyTemplate(config, SWIFT_FILES[`module_legacy`], folder);\n } else {\n if (config.project.module) {\n await applyTemplate(config, OBJC_FILES[`module_common`], folder);\n } else {\n await applyTemplate(\n config,\n OBJC_FILES[`view_${config.project.arch}`],\n folder\n );\n }\n }\n\n const templateType = `${config.project.module ? 'module' : 'view'}_${\n config.project.arch\n }` as const;\n\n await applyTemplate(config, KOTLIN_FILES[templateType], folder);\n\n if (config.project.cpp) {\n await applyTemplate(config, CPP_FILES, folder);\n await fs.remove(path.join(folder, 'ios', `${config.project.name}.m`));\n }\n }\n}\n\n/**\n * This copies the template files and renders them via ejs\n */\nasync function applyTemplate(\n config: TemplateConfiguration,\n source: string,\n destination: string\n) {\n await fs.mkdirp(destination);\n\n const files = await fs.readdir(source);\n\n for (const f of files) {\n const target = path.join(\n destination,\n ejs.render(f.replace(/^\\$/, ''), config, {\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 applyTemplate(config, 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, config));\n } else {\n await fs.copyFile(file, target);\n }\n }\n}\n"],"mappings":"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","ignoreList":[]}
|
package/package.json
CHANGED
|
@@ -1,6 +1,6 @@
|
|
|
1
1
|
{
|
|
2
2
|
"name": "create-react-native-library",
|
|
3
|
-
"version": "0.45.
|
|
3
|
+
"version": "0.45.2",
|
|
4
4
|
"description": "CLI to scaffold React Native libraries",
|
|
5
5
|
"keywords": [
|
|
6
6
|
"react-native",
|
|
@@ -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": "
|
|
68
|
+
"gitHead": "2f8ae32f45924f4de087c9b9a574a619811ea76d"
|
|
69
69
|
}
|
|
@@ -172,7 +172,7 @@
|
|
|
172
172
|
"source": "src",
|
|
173
173
|
"output": "lib",
|
|
174
174
|
"targets": [
|
|
175
|
-
<% if (project.arch
|
|
175
|
+
<% if (project.arch === 'new') { -%>
|
|
176
176
|
"codegen",
|
|
177
177
|
<% } -%>
|
|
178
178
|
[
|
|
@@ -194,7 +194,7 @@
|
|
|
194
194
|
}
|
|
195
195
|
]
|
|
196
196
|
]
|
|
197
|
-
<% if (project.arch
|
|
197
|
+
<% if (project.arch === 'new') { -%>
|
|
198
198
|
},
|
|
199
199
|
"codegenConfig": {
|
|
200
200
|
"name": "RN<%- project.name -%><%- project.view ? 'View': '' -%>Spec",
|
|
@@ -49,7 +49,7 @@ To run the example app on iOS:
|
|
|
49
49
|
yarn example ios
|
|
50
50
|
```
|
|
51
51
|
|
|
52
|
-
<% if (project.arch
|
|
52
|
+
<% if (project.arch === 'new') { -%>
|
|
53
53
|
To confirm that the app is running with the new architecture, you can check the Metro logs for a message like this:
|
|
54
54
|
|
|
55
55
|
```sh
|
|
@@ -3,7 +3,7 @@
|
|
|
3
3
|
"version": "0.0.0",
|
|
4
4
|
"description": "<%- project.description %>",
|
|
5
5
|
"main": "src/index",
|
|
6
|
-
<% if (project.arch
|
|
6
|
+
<% if (project.arch === 'new') { -%>
|
|
7
7
|
"codegenConfig": {
|
|
8
8
|
"name": "RN<%- project.name -%><%- project.view ? 'View': '' -%>Spec",
|
|
9
9
|
"type": <%- project.view ? '"all"': '"modules"' %>,
|