create-react-native-library 0.61.0 → 0.62.1

This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
Files changed (92) hide show
  1. package/bin/create-react-native-library +1 -1
  2. package/lib/package.json +69 -0
  3. package/lib/src/constants.d.ts +5 -0
  4. package/lib/src/constants.js +6 -0
  5. package/lib/src/constants.js.map +1 -0
  6. package/lib/src/exampleApp/dependencies.d.ts +8 -0
  7. package/lib/src/exampleApp/dependencies.js +34 -0
  8. package/lib/src/exampleApp/dependencies.js.map +1 -0
  9. package/lib/src/exampleApp/generateExampleApp.d.ts +6 -0
  10. package/lib/src/exampleApp/generateExampleApp.js +309 -0
  11. package/lib/src/exampleApp/generateExampleApp.js.map +1 -0
  12. package/lib/src/index.d.ts +1 -0
  13. package/lib/src/index.js +134 -0
  14. package/lib/src/index.js.map +1 -0
  15. package/lib/src/inform.d.ts +10 -0
  16. package/lib/src/inform.js +56 -0
  17. package/lib/src/inform.js.map +1 -0
  18. package/lib/src/prompt.d.ts +125 -0
  19. package/lib/src/prompt.js +325 -0
  20. package/lib/src/prompt.js.map +1 -0
  21. package/lib/src/template.d.ts +44 -0
  22. package/lib/src/template.js +258 -0
  23. package/lib/src/template.js.map +1 -0
  24. package/lib/src/utils/assert.d.ts +1 -0
  25. package/lib/src/utils/assert.js +17 -0
  26. package/lib/src/utils/assert.js.map +1 -0
  27. package/lib/src/utils/configureTools.d.ts +43 -0
  28. package/lib/src/utils/configureTools.js +122 -0
  29. package/lib/src/utils/configureTools.js.map +1 -0
  30. package/lib/src/utils/createMetadata.d.ts +4 -0
  31. package/lib/src/utils/createMetadata.js +23 -0
  32. package/lib/src/utils/createMetadata.js.map +1 -0
  33. package/lib/src/utils/initialCommit.d.ts +1 -0
  34. package/lib/src/utils/initialCommit.js +24 -0
  35. package/lib/src/utils/initialCommit.js.map +1 -0
  36. package/lib/src/utils/local.d.ts +5 -0
  37. package/lib/src/utils/local.js +49 -0
  38. package/lib/src/utils/local.js.map +1 -0
  39. package/lib/src/utils/packageManager.d.ts +1 -0
  40. package/lib/src/utils/packageManager.js +8 -0
  41. package/lib/src/utils/packageManager.js.map +1 -0
  42. package/lib/src/utils/resolveNpmPackageVersion.d.ts +1 -0
  43. package/lib/src/utils/resolveNpmPackageVersion.js +20 -0
  44. package/lib/src/utils/resolveNpmPackageVersion.js.map +1 -0
  45. package/lib/src/utils/sortObjectKeys.d.ts +1 -0
  46. package/lib/src/utils/sortObjectKeys.js +9 -0
  47. package/lib/src/utils/sortObjectKeys.js.map +1 -0
  48. package/lib/src/utils/spawn.d.ts +2 -0
  49. package/lib/src/utils/spawn.js +26 -0
  50. package/lib/src/utils/spawn.js.map +1 -0
  51. package/package.json +12 -10
  52. package/templates/common/$package.json +1 -1
  53. package/templates/common/tsconfig.json +0 -2
  54. package/templates/tools/eslint/~package.json +3 -3
  55. package/templates/tools/jest/~package.json +2 -2
  56. package/templates/tools/lefthook/~package.json +3 -3
  57. package/templates/tools/release-it/~package.json +2 -2
  58. package/templates/tools/turborepo/~package.json +1 -1
  59. package/templates/tools/vite/example/~package.json +1 -1
  60. package/templates/tools/vite/~package.json +1 -1
  61. package/lib/constants.js +0 -11
  62. package/lib/constants.js.map +0 -1
  63. package/lib/exampleApp/dependencies.js +0 -34
  64. package/lib/exampleApp/dependencies.js.map +0 -1
  65. package/lib/exampleApp/generateExampleApp.js +0 -209
  66. package/lib/exampleApp/generateExampleApp.js.map +0 -1
  67. package/lib/index.js +0 -129
  68. package/lib/index.js.map +0 -1
  69. package/lib/inform.js +0 -82
  70. package/lib/inform.js.map +0 -1
  71. package/lib/prompt.js +0 -307
  72. package/lib/prompt.js.map +0 -1
  73. package/lib/template.js +0 -258
  74. package/lib/template.js.map +0 -1
  75. package/lib/utils/assert.js +0 -22
  76. package/lib/utils/assert.js.map +0 -1
  77. package/lib/utils/configureTools.js +0 -137
  78. package/lib/utils/configureTools.js.map +0 -1
  79. package/lib/utils/createMetadata.js +0 -17
  80. package/lib/utils/createMetadata.js.map +0 -1
  81. package/lib/utils/initialCommit.js +0 -37
  82. package/lib/utils/initialCommit.js.map +0 -1
  83. package/lib/utils/local.js +0 -55
  84. package/lib/utils/local.js.map +0 -1
  85. package/lib/utils/packageManager.js +0 -13
  86. package/lib/utils/packageManager.js.map +0 -1
  87. package/lib/utils/resolveNpmPackageVersion.js +0 -22
  88. package/lib/utils/resolveNpmPackageVersion.js.map +0 -1
  89. package/lib/utils/sortObjectKeys.js +0 -15
  90. package/lib/utils/sortObjectKeys.js.map +0 -1
  91. package/lib/utils/spawn.js +0 -33
  92. package/lib/utils/spawn.js.map +0 -1
package/lib/index.js DELETED
@@ -1,129 +0,0 @@
1
- "use strict";
2
-
3
- var _package = _interopRequireDefault(require("../package.json"));
4
- var _fsExtra = _interopRequireDefault(require("fs-extra"));
5
- var _kleur = _interopRequireDefault(require("kleur"));
6
- var _ora = _interopRequireDefault(require("ora"));
7
- var _path = _interopRequireDefault(require("path"));
8
- var _constants = require("./constants");
9
- var _dependencies = require("./exampleApp/dependencies");
10
- var _generateExampleApp = _interopRequireDefault(require("./exampleApp/generateExampleApp"));
11
- var _inform = require("./inform");
12
- var _prompt = require("./prompt");
13
- var _template = require("./template");
14
- var _assert = require("./utils/assert");
15
- var _configureTools = require("./utils/configureTools");
16
- var _initialCommit = require("./utils/initialCommit");
17
- var _local = require("./utils/local");
18
- var _packageManager = require("./utils/packageManager");
19
- var _resolveNpmPackageVersion = require("./utils/resolveNpmPackageVersion");
20
- var _createMetadata = require("./utils/createMetadata");
21
- function _interopRequireDefault(e) { return e && e.__esModule ? e : { default: e }; }
22
- async function create() {
23
- // Prefetch bob version in background while asking questions
24
- const bobVersionPromise = (0, _resolveNpmPackageVersion.resolveNpmPackageVersion)('react-native-builder-bob', _constants.FALLBACK_BOB_VERSION);
25
- const nitroModulesVersionPromise = (0, _resolveNpmPackageVersion.resolveNpmPackageVersion)('react-native-nitro-modules', _constants.FALLBACK_NITRO_MODULES_VERSION);
26
- await (0, _assert.assertNpxExists)();
27
- const answers = await _prompt.prompt.show({
28
- name: _package.default.name,
29
- version: _package.default.version,
30
- description: _package.default.description
31
- });
32
- if (answers == null) {
33
- process.exit(0);
34
- }
35
- console.log(''); // Empty new line after prompts
36
-
37
- const bobVersion = await bobVersionPromise;
38
- const nitroModulesVersion = answers.type === 'nitro-module' || answers.type === 'nitro-view' ? await nitroModulesVersionPromise : undefined;
39
- const config = (0, _template.generateTemplateConfiguration)({
40
- versions: {
41
- bob: bobVersion,
42
- nitro: nitroModulesVersion
43
- },
44
- basename: _path.default.basename(answers.name ?? answers.directory),
45
- answers
46
- });
47
- const folder = _path.default.resolve(process.cwd(), answers.directory);
48
- await _fsExtra.default.mkdirp(folder);
49
- if (answers.reactNativeVersion != null && answers.reactNativeVersion !== _constants.SUPPORTED_REACT_NATIVE_VERSION) {
50
- (0, _inform.printUsedRNVersion)(answers.reactNativeVersion, config);
51
- }
52
- const spinner = (0, _ora.default)().start();
53
- if (config.example != null) {
54
- spinner.text = 'Generating example app';
55
- await (0, _generateExampleApp.default)({
56
- root: folder,
57
- reactNativeVersion: answers.reactNativeVersion,
58
- config
59
- });
60
- }
61
- spinner.text = 'Copying files';
62
- await (0, _template.applyTemplates)(answers, config, folder);
63
- const rootPackageJson = await _fsExtra.default.readJson(_path.default.join(folder, 'package.json'));
64
- if (config.example != null) {
65
- await (0, _dependencies.alignDependencyVersionsWithExampleApp)(rootPackageJson, folder);
66
- }
67
- if (!answers.local) {
68
- spinner.text = 'Configuring tools';
69
- await (0, _configureTools.configureTools)({
70
- tools: answers.tools,
71
- config,
72
- root: folder,
73
- packageJson: rootPackageJson
74
- });
75
- }
76
- const libraryMetadata = (0, _createMetadata.createMetadata)(answers);
77
- rootPackageJson['create-react-native-library'] = libraryMetadata;
78
- await _fsExtra.default.writeJson(_path.default.join(folder, 'package.json'), rootPackageJson, {
79
- spaces: 2
80
- });
81
- const printSuccessMessage = () => spinner.succeed(`Project created successfully at ${_kleur.default.yellow(_path.default.relative(process.cwd(), folder))}!\n`);
82
- if (answers.local) {
83
- const packageManager = await (0, _packageManager.determinePackageManager)();
84
- let addedNitro = false;
85
- if (config.project.moduleConfig === 'nitro-modules') {
86
- addedNitro = await (0, _local.addNitroDependencyToLocalLibrary)(config);
87
- }
88
- const linkedLocalLibrary = await (0, _local.linkLocalLibrary)(config, folder, packageManager);
89
- printSuccessMessage();
90
- (0, _inform.printLocalLibNextSteps)({
91
- config,
92
- packageManager,
93
- linkedLocalLibrary,
94
- addedNitro,
95
- folder
96
- });
97
- } else {
98
- spinner.text = 'Initializing git repository';
99
- let timer;
100
- try {
101
- const abortController = new AbortController();
102
-
103
- // Creating git repository can get stuck in some cases,
104
- // e.g. if git asks for ssh passphrase.
105
- // We abort it after a timeout so that this doesn't hang forever.
106
- await Promise.race([(0, _initialCommit.createInitialGitCommit)(folder, abortController.signal), new Promise((_resolve, reject) => {
107
- timer = setTimeout(() => {
108
- const error = new Error('Creating git repository took too long');
109
- abortController.abort(error.message);
110
- reject(error);
111
- }, 5000);
112
- })]);
113
- } catch (error) {
114
- spinner.warn('Failed to create git repository');
115
- } finally {
116
- // The process waits for the timer if we don't clear it here
117
- clearTimeout(timer);
118
- }
119
- printSuccessMessage();
120
- (0, _inform.printNonLocalLibNextSteps)(config);
121
- }
122
- }
123
- create().catch(e => {
124
- console.log('\n');
125
- console.log(_kleur.default.red('× An error occurred while creating the project.\n'));
126
- console.error(e);
127
- process.exit(1);
128
- });
129
- //# sourceMappingURL=index.js.map
package/lib/index.js.map DELETED
@@ -1 +0,0 @@
1
- {"version":3,"file":"index.js","names":["_package","_interopRequireDefault","require","_fsExtra","_kleur","_ora","_path","_constants","_dependencies","_generateExampleApp","_inform","_prompt","_template","_assert","_configureTools","_initialCommit","_local","_packageManager","_resolveNpmPackageVersion","_createMetadata","e","__esModule","default","create","bobVersionPromise","resolveNpmPackageVersion","FALLBACK_BOB_VERSION","nitroModulesVersionPromise","FALLBACK_NITRO_MODULES_VERSION","assertNpxExists","answers","prompt","show","name","pak","version","description","process","exit","console","log","bobVersion","nitroModulesVersion","type","undefined","config","generateTemplateConfiguration","versions","bob","nitro","basename","path","directory","folder","resolve","cwd","fs","mkdirp","reactNativeVersion","SUPPORTED_REACT_NATIVE_VERSION","printUsedRNVersion","spinner","ora","start","example","text","generateExampleApp","root","applyTemplates","rootPackageJson","readJson","join","alignDependencyVersionsWithExampleApp","local","configureTools","tools","packageJson","libraryMetadata","createMetadata","writeJson","spaces","printSuccessMessage","succeed","kleur","yellow","relative","packageManager","determinePackageManager","addedNitro","project","moduleConfig","addNitroDependencyToLocalLibrary","linkedLocalLibrary","linkLocalLibrary","printLocalLibNextSteps","timer","abortController","AbortController","Promise","race","createInitialGitCommit","signal","_resolve","reject","setTimeout","error","Error","abort","message","warn","clearTimeout","printNonLocalLibNextSteps","catch","red"],"sources":["../src/index.ts"],"sourcesContent":["import pak from '../package.json';\nimport fs from 'fs-extra';\nimport kleur from 'kleur';\nimport ora from 'ora';\nimport path from 'path';\nimport {\n FALLBACK_BOB_VERSION,\n FALLBACK_NITRO_MODULES_VERSION,\n SUPPORTED_REACT_NATIVE_VERSION,\n} from './constants';\nimport { alignDependencyVersionsWithExampleApp } from './exampleApp/dependencies';\nimport generateExampleApp from './exampleApp/generateExampleApp';\nimport {\n printLocalLibNextSteps,\n printNonLocalLibNextSteps,\n printUsedRNVersion,\n} from './inform';\nimport { prompt } from './prompt';\nimport { applyTemplates, generateTemplateConfiguration } from './template';\nimport { assertNpxExists } from './utils/assert';\nimport { configureTools } from './utils/configureTools';\nimport { createInitialGitCommit } from './utils/initialCommit';\nimport {\n addNitroDependencyToLocalLibrary,\n linkLocalLibrary,\n} from './utils/local';\nimport { determinePackageManager } from './utils/packageManager';\nimport { resolveNpmPackageVersion } from './utils/resolveNpmPackageVersion';\nimport { createMetadata } from './utils/createMetadata';\n\nasync function create() {\n // Prefetch bob version in background while asking questions\n const bobVersionPromise = resolveNpmPackageVersion(\n 'react-native-builder-bob',\n FALLBACK_BOB_VERSION\n );\n const nitroModulesVersionPromise = resolveNpmPackageVersion(\n 'react-native-nitro-modules',\n FALLBACK_NITRO_MODULES_VERSION\n );\n\n await assertNpxExists();\n\n const answers = await prompt.show({\n name: pak.name,\n version: pak.version,\n description: pak.description,\n });\n\n if (answers == null) {\n process.exit(0);\n }\n\n console.log(''); // Empty new line after prompts\n\n const bobVersion = await bobVersionPromise;\n const nitroModulesVersion =\n answers.type === 'nitro-module' || answers.type === 'nitro-view'\n ? await nitroModulesVersionPromise\n : undefined;\n\n const config = generateTemplateConfiguration({\n versions: {\n bob: bobVersion,\n nitro: nitroModulesVersion,\n },\n basename: path.basename(answers.name ?? answers.directory),\n answers,\n });\n\n const folder = path.resolve(process.cwd(), answers.directory);\n\n await fs.mkdirp(folder);\n\n if (\n answers.reactNativeVersion != null &&\n answers.reactNativeVersion !== SUPPORTED_REACT_NATIVE_VERSION\n ) {\n printUsedRNVersion(answers.reactNativeVersion, config);\n }\n\n const spinner = ora().start();\n\n if (config.example != null) {\n spinner.text = 'Generating example app';\n\n await generateExampleApp({\n root: folder,\n reactNativeVersion: answers.reactNativeVersion,\n config,\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 != null) {\n await alignDependencyVersionsWithExampleApp(rootPackageJson, folder);\n }\n\n if (!answers.local) {\n spinner.text = 'Configuring tools';\n\n await configureTools({\n tools: answers.tools,\n config,\n root: folder,\n packageJson: rootPackageJson,\n });\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 const printSuccessMessage = () =>\n spinner.succeed(\n `Project created successfully at ${kleur.yellow(\n path.relative(process.cwd(), folder)\n )}!\\n`\n );\n\n if (answers.local) {\n const packageManager = await determinePackageManager();\n\n let addedNitro = false;\n\n if (config.project.moduleConfig === 'nitro-modules') {\n addedNitro = await addNitroDependencyToLocalLibrary(config);\n }\n\n const linkedLocalLibrary = await linkLocalLibrary(\n config,\n folder,\n packageManager\n );\n\n printSuccessMessage();\n\n printLocalLibNextSteps({\n config,\n packageManager,\n linkedLocalLibrary,\n addedNitro,\n folder,\n });\n } else {\n spinner.text = 'Initializing git repository';\n\n let timer;\n\n try {\n const abortController = new AbortController();\n\n // Creating git repository can get stuck in some cases,\n // e.g. if git asks for ssh passphrase.\n // We abort it after a timeout so that this doesn't hang forever.\n await Promise.race([\n createInitialGitCommit(folder, abortController.signal),\n new Promise<void>((_resolve, reject) => {\n timer = setTimeout(() => {\n const error = new Error('Creating git repository took too long');\n\n abortController.abort(error.message);\n reject(error);\n }, 5000);\n }),\n ]);\n } catch (error) {\n spinner.warn('Failed to create git repository');\n } finally {\n // The process waits for the timer if we don't clear it here\n clearTimeout(timer);\n }\n\n printSuccessMessage();\n\n printNonLocalLibNextSteps(config);\n }\n}\n\ncreate().catch((e: unknown) => {\n console.log('\\n');\n console.log(kleur.red('× An error occurred while creating the project.\\n'));\n console.error(e);\n\n process.exit(1);\n});\n"],"mappings":"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","ignoreList":[]}
package/lib/inform.js DELETED
@@ -1,82 +0,0 @@
1
- "use strict";
2
-
3
- Object.defineProperty(exports, "__esModule", {
4
- value: true
5
- });
6
- exports.printErrorHelp = printErrorHelp;
7
- exports.printLocalLibNextSteps = printLocalLibNextSteps;
8
- exports.printNonLocalLibNextSteps = printNonLocalLibNextSteps;
9
- exports.printUsedRNVersion = printUsedRNVersion;
10
- var _path = _interopRequireDefault(require("path"));
11
- var _dedent = _interopRequireDefault(require("dedent"));
12
- var _kleur = _interopRequireDefault(require("kleur"));
13
- function _interopRequireDefault(e) { return e && e.__esModule ? e : { default: e }; }
14
- function printNonLocalLibNextSteps(config) {
15
- const platforms = {
16
- ios: {
17
- name: 'iOS',
18
- color: 'cyan'
19
- },
20
- android: {
21
- name: 'Android',
22
- color: 'green'
23
- },
24
- ...(config.example === 'expo' || config.tools.includes('vite') ? {
25
- web: {
26
- name: 'Web',
27
- color: 'blue'
28
- }
29
- } : null)
30
- };
31
- console.log((0, _dedent.default)(`
32
- ${_kleur.default.magenta(`${_kleur.default.bold('Get started')} with the project`)}${_kleur.default.gray(':')}
33
-
34
- ${_kleur.default.gray('$')} yarn
35
- ${Object.entries(platforms).map(([script, {
36
- name,
37
- color
38
- }]) => `
39
- ${_kleur.default[color](`Run the example app on ${_kleur.default.bold(name)}`)}${_kleur.default.gray(':')}
40
-
41
- ${_kleur.default.gray('$')} yarn example ${script}`).join('\n')}
42
-
43
- ${_kleur.default.yellow(`See ${_kleur.default.bold('CONTRIBUTING.md')} for more details. Good luck!`)}
44
- `));
45
- }
46
- function printLocalLibNextSteps({
47
- folder,
48
- config,
49
- linkedLocalLibrary,
50
- addedNitro,
51
- packageManager
52
- }) {
53
- console.log((0, _dedent.default)(`
54
- ${_kleur.default.magenta(`${_kleur.default.bold('Get started')} with the project`)}${_kleur.default.gray(':')}
55
-
56
- ${(linkedLocalLibrary ? `- Run ${_kleur.default.blue(`${packageManager} install`)} to link the library\n` : `- Link the library at ${_kleur.default.blue(_path.default.relative(process.cwd(), folder))} based on your project setup\n`) + (config.project.moduleConfig === 'nitro-modules' && !addedNitro ? `- Run ${_kleur.default.blue(`${packageManager} add react-native-nitro-modules`)} to install nitro modules \n` : '') + `- Run ${_kleur.default.blue('pod install --project-directory=ios')} to install dependencies with CocoaPods\n` + `- Run ${_kleur.default.blue('npx react-native run-android')} or ${_kleur.default.blue('npx react-native run-ios')} to build and run the app\n` + `- Import from ${_kleur.default.blue(config.project.slug)} and use it in your app.`}
57
-
58
- ${_kleur.default.yellow(`Good luck!`)}
59
- `));
60
- }
61
- function printErrorHelp(message, error) {
62
- console.log('\n');
63
- if (message) {
64
- console.log(message);
65
- } else {
66
- console.log(`An unknown error occurred. See ${_kleur.default.blue('--help')} for usage guide.`);
67
- }
68
- if (error) {
69
- console.log('\n');
70
- throw error;
71
- }
72
- }
73
- function printUsedRNVersion(version, config) {
74
- if (config.example === 'vanilla' || config.example === 'test-app') {
75
- console.log(`${_kleur.default.blue('ℹ')} Using untested ${_kleur.default.cyan(`react-native@${version}`)} for the example`);
76
- } else if (config.example != null) {
77
- console.warn(`${_kleur.default.yellow('⚠')} Ignoring --react-native-version for unsupported example type: ${_kleur.default.cyan(config.example)}`);
78
- } else {
79
- console.warn(`${_kleur.default.yellow('⚠')} Ignoring --react-native-version for library without example app`);
80
- }
81
- }
82
- //# sourceMappingURL=inform.js.map
package/lib/inform.js.map DELETED
@@ -1 +0,0 @@
1
- {"version":3,"file":"inform.js","names":["_path","_interopRequireDefault","require","_dedent","_kleur","e","__esModule","default","printNonLocalLibNextSteps","config","platforms","ios","name","color","android","example","tools","includes","web","console","log","dedent","kleur","magenta","bold","gray","Object","entries","map","script","join","yellow","printLocalLibNextSteps","folder","linkedLocalLibrary","addedNitro","packageManager","blue","path","relative","process","cwd","project","moduleConfig","slug","printErrorHelp","message","error","printUsedRNVersion","version","cyan","warn"],"sources":["../src/inform.ts"],"sourcesContent":["import path from 'path';\nimport dedent from 'dedent';\nimport type { TemplateConfiguration } from './template';\nimport kleur from 'kleur';\n\nexport function printNonLocalLibNextSteps(config: TemplateConfiguration) {\n const platforms = {\n ios: { name: 'iOS', color: 'cyan' },\n android: { name: 'Android', color: 'green' },\n ...(config.example === 'expo' || config.tools.includes('vite')\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\nexport function printLocalLibNextSteps({\n folder,\n config,\n linkedLocalLibrary,\n addedNitro,\n packageManager,\n}: {\n folder: string;\n config: TemplateConfiguration;\n linkedLocalLibrary: boolean;\n addedNitro: boolean;\n packageManager: string;\n}) {\n console.log(\n dedent(`\n ${kleur.magenta(\n `${kleur.bold('Get started')} with the project`\n )}${kleur.gray(':')}\n\n ${\n (linkedLocalLibrary\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 (config.project.moduleConfig === 'nitro-modules' && !addedNitro\n ? `- Run ${kleur.blue(\n `${packageManager} add react-native-nitro-modules`\n )} to install nitro modules \\n`\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(\n config.project.slug\n )} and use it in your app.`\n }\n\n ${kleur.yellow(`Good luck!`)}\n `)\n );\n}\n\nexport function printErrorHelp(message: string, error: Error) {\n console.log('\\n');\n\n if (message) {\n console.log(message);\n } else {\n console.log(\n `An unknown error occurred. See ${kleur.blue('--help')} for usage guide.`\n );\n }\n\n if (error) {\n console.log('\\n');\n\n throw error;\n }\n}\n\nexport function printUsedRNVersion(\n version: string,\n config: TemplateConfiguration\n) {\n if (config.example === 'vanilla' || config.example === 'test-app') {\n console.log(\n `${kleur.blue('ℹ')} Using untested ${kleur.cyan(\n `react-native@${version}`\n )} for the example`\n );\n } else if (config.example != null) {\n console.warn(\n `${kleur.yellow(\n '⚠'\n )} Ignoring --react-native-version for unsupported example type: ${kleur.cyan(\n config.example\n )}`\n );\n } else {\n console.warn(\n `${kleur.yellow(\n '⚠'\n )} Ignoring --react-native-version for library without example app`\n );\n }\n}\n"],"mappings":"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","ignoreList":[]}
package/lib/prompt.js DELETED
@@ -1,307 +0,0 @@
1
- "use strict";
2
-
3
- Object.defineProperty(exports, "__esModule", {
4
- value: true
5
- });
6
- exports.prompt = void 0;
7
- var _nodeFs = _interopRequireDefault(require("node:fs"));
8
- var _nodePath = _interopRequireDefault(require("node:path"));
9
- var _pigment = require("pigment");
10
- var _validateNpmPackageName = _interopRequireDefault(require("validate-npm-package-name"));
11
- var _spawn = require("./utils/spawn");
12
- var _githubUsername = _interopRequireDefault(require("github-username"));
13
- var _configureTools = require("./utils/configureTools");
14
- var _constants = require("./constants");
15
- function _interopRequireDefault(e) { return e && e.__esModule ? e : { default: e }; }
16
- const TYPE_CHOICES = [{
17
- title: 'Turbo module',
18
- value: 'turbo-module',
19
- description: 'Integration for native APIs to JS'
20
- }, {
21
- title: 'Fabric view',
22
- value: 'fabric-view',
23
- description: 'Integration for native views to JS'
24
- }, {
25
- title: 'Nitro module',
26
- value: 'nitro-module',
27
- description: 'Type-safe, fast integration for native APIs to JS'
28
- }, {
29
- title: 'Nitro view',
30
- value: 'nitro-view',
31
- description: 'Integration for native views to JS using nitro'
32
- }, {
33
- title: 'JavaScript library',
34
- value: 'library',
35
- description: 'Plain JavaScript library with Web support'
36
- }];
37
- const LANGUAGE_CHOICES = [{
38
- title: 'Kotlin & Swift',
39
- value: 'kotlin-swift',
40
- types: ['nitro-module', 'nitro-view']
41
- }, {
42
- title: 'Kotlin & Objective-C',
43
- value: 'kotlin-objc',
44
- types: ['turbo-module', 'fabric-view']
45
- }, {
46
- title: 'C++ (Experimental)',
47
- value: 'cpp',
48
- types: ['turbo-module']
49
- }, {
50
- title: 'JavaScript for Android, iOS & Web',
51
- value: 'js',
52
- types: ['library']
53
- }];
54
- const EXAMPLE_CHOICES = [{
55
- title: 'App with Community CLI',
56
- value: 'vanilla',
57
- description: 'Classic React Native app with native code access'
58
- }, {
59
- title: 'App with Expo CLI',
60
- value: 'expo',
61
- description: 'Managed Expo app for easier upgrades'
62
- }, {
63
- title: 'Test App by Microsoft',
64
- value: 'test-app',
65
- description: "Test app with app's native code abstracted"
66
- }];
67
- const validateDirectory = input => {
68
- if (!input) {
69
- return 'Cannot be empty';
70
- }
71
- const targetPath = _nodePath.default.join(process.cwd(), input);
72
- if (!_nodeFs.default.existsSync(targetPath)) {
73
- return true;
74
- }
75
- const stat = _nodeFs.default.statSync(targetPath);
76
- if (!stat.isDirectory()) {
77
- return 'Path exists and is not a directory';
78
- }
79
- const files = _nodeFs.default.readdirSync(targetPath);
80
- const isEmpty = files.length === 0 || files.length === 1 && files[0] === '.git';
81
- if (!isEmpty) {
82
- return 'Directory already exists and is not empty';
83
- }
84
- return true;
85
- };
86
- const getGitConfig = async key => {
87
- try {
88
- const value = await (0, _spawn.spawn)('git', ['config', '--get', key]);
89
- return value.trim();
90
- } catch {
91
- return undefined;
92
- }
93
- };
94
- const isInPackage = () => {
95
- try {
96
- const stat = _nodeFs.default.statSync(_nodePath.default.resolve(process.cwd(), 'package.json'));
97
- return stat.isFile();
98
- } catch {
99
- return false;
100
- }
101
- };
102
- const prompt = exports.prompt = (0, _pigment.create)(['[name]'], {
103
- local: {
104
- type: 'confirm',
105
- description: 'Whether to create a local library',
106
- message: `Looks like you're under a project folder. Do you want to create a local library?`,
107
- default: isInPackage,
108
- skip: () => !isInPackage()
109
- },
110
- directory: {
111
- type: 'text',
112
- description: 'Directory to create the library at',
113
- message: 'Where do you want to create the library?',
114
- default: () => {
115
- const answers = prompt.read();
116
- if (answers.name == null) {
117
- return undefined;
118
- }
119
- if (answers.local && !answers.name?.includes(_nodePath.default.sep)) {
120
- return _nodePath.default.join('modules', answers.name);
121
- }
122
- return answers.name;
123
- },
124
- validate: validateDirectory,
125
- skip: () => {
126
- const answers = prompt.read();
127
- if (answers.name && !answers.local && validateDirectory(answers.name) === true) {
128
- return true;
129
- }
130
- return false;
131
- }
132
- },
133
- slug: {
134
- type: 'text',
135
- description: 'Name of the npm package',
136
- message: 'What do you want to name the npm package?',
137
- default: () => {
138
- const answers = prompt.read();
139
- const value = typeof answers.directory === 'string' ? answers.directory : answers.name;
140
- if (typeof value !== 'string') {
141
- return undefined;
142
- }
143
- const basename = _nodePath.default.basename(value);
144
- if ((0, _validateNpmPackageName.default)(basename).validForNewPackages) {
145
- if (/^(@|react-native)/.test(basename)) {
146
- return basename;
147
- }
148
- return `react-native-${basename}`;
149
- }
150
- return undefined;
151
- },
152
- validate: input => (0, _validateNpmPackageName.default)(input).validForNewPackages || 'Must be a valid npm package name',
153
- required: true
154
- },
155
- description: {
156
- type: 'text',
157
- description: 'Description of the npm package',
158
- message: 'How would you describe the package?',
159
- validate: input => Boolean(input) || 'Cannot be empty',
160
- required: true
161
- },
162
- authorName: {
163
- type: 'text',
164
- description: 'Name of the package author',
165
- message: 'What is the name of the package author?',
166
- default: async () => getGitConfig('user.name'),
167
- validate: input => Boolean(input) || 'Cannot be empty',
168
- skip: () => prompt.read().local === true
169
- },
170
- authorEmail: {
171
- type: 'text',
172
- description: 'Email address of the package author',
173
- message: 'What is the email address of the package author?',
174
- default: async () => getGitConfig('user.email'),
175
- validate: input => /^\S+@\S+$/.test(input) || 'Must be a valid email address',
176
- skip: () => prompt.read().local === true
177
- },
178
- authorUrl: {
179
- type: 'text',
180
- description: 'Profile URL of the package author',
181
- message: 'What is the profile URL for the package author?',
182
- default: async () => {
183
- const answers = prompt.read();
184
- if (typeof answers.authorEmail !== 'string') {
185
- return undefined;
186
- }
187
- try {
188
- const username = await (0, _githubUsername.default)(answers.authorEmail);
189
- if (username) {
190
- return `https://github.com/${username}`;
191
- }
192
- } catch (e) {
193
- // Ignore error
194
- }
195
- return undefined;
196
- },
197
- validate: input => /^https?:\/\//.test(input) || 'Must be a valid URL',
198
- skip: () => prompt.read().local === true
199
- },
200
- repoUrl: {
201
- type: 'text',
202
- description: 'Repository URL of the package',
203
- message: 'What is the repository URL for the package?',
204
- default: () => {
205
- const answers = prompt.read();
206
- if (typeof answers.authorUrl === 'string' && typeof answers.slug === 'string' && /^https?:\/\/github.com\/[^/]+/.test(answers.authorUrl)) {
207
- return `${answers.authorUrl}/${answers.slug.replace(/^@/, '').replace(/\//g, '-')}`;
208
- }
209
- return undefined;
210
- },
211
- validate: input => /^https?:\/\//.test(input) || 'Must be a valid URL',
212
- skip: () => prompt.read().local === true
213
- },
214
- type: {
215
- type: 'select',
216
- description: 'Type of library you want to develop',
217
- message: 'What type of library do you want to develop?',
218
- choices: TYPE_CHOICES,
219
- required: true
220
- },
221
- languages: {
222
- type: 'select',
223
- description: 'Languages to use for native code',
224
- message: 'Which language do you want to use for native code?',
225
- choices: LANGUAGE_CHOICES.map(choice => ({
226
- title: choice.title,
227
- value: choice.value,
228
- description: choice.description,
229
- skip: () => {
230
- const answers = prompt.read();
231
- if (choice.value === 'cpp' && answers.local === true) {
232
- return true;
233
- }
234
- if (typeof answers.type === 'string') {
235
- return !choice.types.includes(answers.type);
236
- }
237
- return false;
238
- }
239
- })),
240
- required: true
241
- },
242
- example: {
243
- type: 'select',
244
- description: 'Type of the example app to create',
245
- message: 'What type of example app do you want to create?',
246
- choices: EXAMPLE_CHOICES.map(choice => ({
247
- title: choice.title,
248
- value: choice.value,
249
- description: choice.description,
250
- skip: () => {
251
- const answers = prompt.read();
252
- if (answers.languages === 'cpp') {
253
- return choice.value !== 'vanilla';
254
- }
255
- return false;
256
- }
257
- })),
258
- required: true,
259
- skip: () => {
260
- const answers = prompt.read();
261
- return answers.local === true;
262
- }
263
- },
264
- tools: {
265
- type: 'multiselect',
266
- description: 'Additional tools to configure',
267
- message: 'Which tools do you want to configure?',
268
- choices: Object.entries(_configureTools.AVAILABLE_TOOLS).map(([key, tool]) => ({
269
- value: key,
270
- title: tool.name,
271
- description: tool.description,
272
- skip: () => {
273
- if ('condition' in tool && tool.condition) {
274
- return !tool.condition({
275
- example: prompt.read().example
276
- });
277
- }
278
- return false;
279
- }
280
- })),
281
- default: () => {
282
- const answers = prompt.read();
283
- return Object.entries(_configureTools.AVAILABLE_TOOLS).filter(([, tool]) => {
284
- if ('condition' in tool && tool.condition) {
285
- return tool.condition({
286
- example: answers.example
287
- });
288
- }
289
- return true;
290
- }).map(([key]) => key);
291
- },
292
- required: true,
293
- skip: () => {
294
- const answers = prompt.read();
295
- return answers.local === true;
296
- }
297
- },
298
- reactNativeVersion: {
299
- type: 'text',
300
- description: 'Version of React Native to use in the example app',
301
- message: 'Which version of React Native do you want to use in the example app?',
302
- default: _constants.SUPPORTED_REACT_NATIVE_VERSION,
303
- validate: input => input === 'latest' || /^\d+\.\d+\.\d+(-.+)?$/.test(input) || 'Must be a valid semver version',
304
- skip: true
305
- }
306
- });
307
- //# sourceMappingURL=prompt.js.map
package/lib/prompt.js.map DELETED
@@ -1 +0,0 @@
1
- {"version":3,"file":"prompt.js","names":["_nodeFs","_interopRequireDefault","require","_nodePath","_pigment","_validateNpmPackageName","_spawn","_githubUsername","_configureTools","_constants","e","__esModule","default","TYPE_CHOICES","title","value","description","LANGUAGE_CHOICES","types","EXAMPLE_CHOICES","validateDirectory","input","targetPath","path","join","process","cwd","fs","existsSync","stat","statSync","isDirectory","files","readdirSync","isEmpty","length","getGitConfig","key","spawn","trim","undefined","isInPackage","resolve","isFile","prompt","exports","create","local","type","message","skip","directory","answers","read","name","includes","sep","validate","slug","basename","validateNpmPackage","validForNewPackages","test","required","Boolean","authorName","authorEmail","authorUrl","username","githubUsername","repoUrl","replace","choices","languages","map","choice","example","tools","Object","entries","AVAILABLE_TOOLS","tool","condition","filter","reactNativeVersion","SUPPORTED_REACT_NATIVE_VERSION"],"sources":["../src/prompt.ts"],"sourcesContent":["import fs from 'node:fs';\nimport path from 'node:path';\nimport { create } from 'pigment';\nimport validateNpmPackage from 'validate-npm-package-name';\nimport { spawn } from './utils/spawn';\nimport githubUsername from 'github-username';\nimport { AVAILABLE_TOOLS } from './utils/configureTools';\nimport { SUPPORTED_REACT_NATIVE_VERSION } from './constants';\n\nexport type Answers = NonNullable<Awaited<ReturnType<typeof prompt.show>>>;\n\nexport type ExampleApp = 'test-app' | 'expo' | 'vanilla' | undefined;\n\nexport type ProjectLanguages = 'kotlin-objc' | 'kotlin-swift' | 'cpp' | 'js';\n\nexport type ProjectType =\n | 'turbo-module'\n | 'fabric-view'\n | 'nitro-module'\n | 'nitro-view'\n | 'library';\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: 'Nitro module',\n value: 'nitro-module',\n description: 'Type-safe, fast integration for native APIs to JS',\n },\n {\n title: 'Nitro view',\n value: 'nitro-view',\n description: 'Integration for native views to JS using nitro',\n },\n {\n title: 'JavaScript library',\n value: 'library',\n description: 'Plain JavaScript library with Web support',\n },\n];\n\nconst LANGUAGE_CHOICES: {\n title: string;\n value: ProjectLanguages;\n types: ProjectType[];\n description?: string;\n}[] = [\n {\n title: 'Kotlin & Swift',\n value: 'kotlin-swift',\n types: ['nitro-module', 'nitro-view'],\n },\n {\n title: 'Kotlin & Objective-C',\n value: 'kotlin-objc',\n types: ['turbo-module', 'fabric-view'],\n },\n {\n title: 'C++ (Experimental)',\n value: 'cpp',\n types: ['turbo-module'],\n },\n {\n title: 'JavaScript for Android, iOS & Web',\n value: 'js',\n types: ['library'],\n },\n];\n\nconst EXAMPLE_CHOICES = [\n {\n title: 'App with Community CLI',\n value: 'vanilla',\n description: 'Classic React Native app with native code access',\n },\n {\n title: 'App with Expo CLI',\n value: 'expo',\n description: 'Managed Expo app for easier upgrades',\n },\n {\n title: 'Test App by Microsoft',\n value: 'test-app',\n description: \"Test app with app's native code abstracted\",\n },\n] as const;\n\nconst validateDirectory = (input: string) => {\n if (!input) {\n return 'Cannot be empty';\n }\n\n const targetPath = path.join(process.cwd(), input);\n\n if (!fs.existsSync(targetPath)) {\n return true;\n }\n\n const stat = fs.statSync(targetPath);\n\n if (!stat.isDirectory()) {\n return 'Path exists and is not a directory';\n }\n\n const files = fs.readdirSync(targetPath);\n\n const isEmpty =\n files.length === 0 || (files.length === 1 && files[0] === '.git');\n\n if (!isEmpty) {\n return 'Directory already exists and is not empty';\n }\n\n return true;\n};\n\nconst getGitConfig = async (key: string): Promise<string | undefined> => {\n try {\n const value: string = await spawn('git', ['config', '--get', key]);\n\n return value.trim();\n } catch {\n return undefined;\n }\n};\n\nconst isInPackage = (): boolean => {\n try {\n const stat = fs.statSync(path.resolve(process.cwd(), 'package.json'));\n\n return stat.isFile();\n } catch {\n return false;\n }\n};\n\nexport const prompt = create(['[name]'], {\n local: {\n type: 'confirm',\n description: 'Whether to create a local library',\n message: `Looks like you're under a project folder. Do you want to create a local library?`,\n default: isInPackage,\n skip: () => !isInPackage(),\n },\n directory: {\n type: 'text',\n description: 'Directory to create the library at',\n message: 'Where do you want to create the library?',\n default: (): string | undefined => {\n const answers = prompt.read();\n\n if (answers.name == null) {\n return undefined;\n }\n\n if (answers.local && !answers.name?.includes(path.sep)) {\n return path.join('modules', answers.name);\n }\n\n return answers.name;\n },\n validate: validateDirectory,\n skip: () => {\n const answers = prompt.read();\n\n if (\n answers.name &&\n !answers.local &&\n validateDirectory(answers.name) === true\n ) {\n return true;\n }\n\n return false;\n },\n },\n slug: {\n type: 'text',\n description: 'Name of the npm package',\n message: 'What do you want to name the npm package?',\n default: (): string | undefined => {\n const answers = prompt.read();\n const value =\n typeof answers.directory === 'string'\n ? answers.directory\n : answers.name;\n\n if (typeof value !== 'string') {\n return undefined;\n }\n\n const basename = path.basename(value);\n\n if (validateNpmPackage(basename).validForNewPackages) {\n if (/^(@|react-native)/.test(basename)) {\n return basename;\n }\n\n return `react-native-${basename}`;\n }\n\n return undefined;\n },\n validate: (input) =>\n validateNpmPackage(input).validForNewPackages ||\n 'Must be a valid npm package name',\n required: true,\n },\n description: {\n type: 'text',\n description: 'Description of the npm package',\n message: 'How would you describe the package?',\n validate: (input) => Boolean(input) || 'Cannot be empty',\n required: true,\n },\n authorName: {\n type: 'text',\n description: 'Name of the package author',\n message: 'What is the name of the package author?',\n default: async () => getGitConfig('user.name'),\n validate: (input) => Boolean(input) || 'Cannot be empty',\n skip: (): boolean => prompt.read().local === true,\n },\n authorEmail: {\n type: 'text',\n description: 'Email address of the package author',\n message: 'What is the email address of the package author?',\n default: async () => getGitConfig('user.email'),\n validate: (input) =>\n /^\\S+@\\S+$/.test(input) || 'Must be a valid email address',\n skip: (): boolean => prompt.read().local === true,\n },\n authorUrl: {\n type: 'text',\n description: 'Profile URL of the package author',\n message: 'What is the profile URL for the package author?',\n default: async () => {\n const answers = prompt.read();\n\n if (typeof answers.authorEmail !== 'string') {\n return undefined;\n }\n\n try {\n const username = await githubUsername(answers.authorEmail);\n\n if (username) {\n return `https://github.com/${username}`;\n }\n } catch (e) {\n // Ignore error\n }\n\n return undefined;\n },\n validate: (input) => /^https?:\\/\\//.test(input) || 'Must be a valid URL',\n skip: (): boolean => prompt.read().local === true,\n },\n repoUrl: {\n type: 'text',\n description: 'Repository URL of the package',\n message: 'What is the repository URL for the package?',\n default: (): string | undefined => {\n const answers = prompt.read();\n\n if (\n typeof answers.authorUrl === 'string' &&\n typeof answers.slug === 'string' &&\n /^https?:\\/\\/github.com\\/[^/]+/.test(answers.authorUrl)\n ) {\n return `${answers.authorUrl}/${answers.slug\n .replace(/^@/, '')\n .replace(/\\//g, '-')}`;\n }\n\n return undefined;\n },\n validate: (input) => /^https?:\\/\\//.test(input) || 'Must be a valid URL',\n skip: (): boolean => prompt.read().local === true,\n },\n type: {\n type: 'select',\n description: 'Type of library you want to develop',\n message: 'What type of library do you want to develop?',\n choices: TYPE_CHOICES,\n required: true,\n },\n languages: {\n type: 'select',\n description: 'Languages to use for native code',\n message: 'Which language do you want to use for native code?',\n choices: LANGUAGE_CHOICES.map((choice) => ({\n title: choice.title,\n value: choice.value,\n description: choice.description,\n skip: (): boolean => {\n const answers = prompt.read();\n\n if (choice.value === 'cpp' && answers.local === true) {\n return true;\n }\n\n if (typeof answers.type === 'string') {\n return !choice.types.includes(answers.type);\n }\n\n return false;\n },\n })),\n required: true,\n },\n example: {\n type: 'select',\n description: 'Type of the example app to create',\n message: 'What type of example app do you want to create?',\n choices: EXAMPLE_CHOICES.map((choice) => ({\n title: choice.title,\n value: choice.value,\n description: choice.description,\n skip: (): boolean => {\n const answers = prompt.read();\n\n if (answers.languages === 'cpp') {\n return choice.value !== 'vanilla';\n }\n\n return false;\n },\n })),\n required: true,\n skip: (): boolean => {\n const answers = prompt.read();\n\n return answers.local === true;\n },\n },\n tools: {\n type: 'multiselect',\n description: 'Additional tools to configure',\n message: 'Which tools do you want to configure?',\n choices: Object.entries(AVAILABLE_TOOLS).map(([key, tool]) => ({\n value: key,\n title: tool.name,\n description: tool.description,\n skip: (): boolean => {\n if ('condition' in tool && tool.condition) {\n return !tool.condition({ example: prompt.read().example });\n }\n\n return false;\n },\n })),\n default: (): string[] => {\n const answers = prompt.read();\n\n return Object.entries(AVAILABLE_TOOLS)\n .filter(([, tool]) => {\n if ('condition' in tool && tool.condition) {\n return tool.condition({ example: answers.example });\n }\n\n return true;\n })\n .map(([key]) => key);\n },\n required: true,\n skip: (): boolean => {\n const answers = prompt.read();\n\n return answers.local === true;\n },\n },\n reactNativeVersion: {\n type: 'text',\n description: 'Version of React Native to use in the example app',\n message:\n 'Which version of React Native do you want to use in the example app?',\n default: SUPPORTED_REACT_NATIVE_VERSION,\n validate: (input) =>\n input === 'latest' ||\n /^\\d+\\.\\d+\\.\\d+(-.+)?$/.test(input) ||\n 'Must be a valid semver version',\n skip: true,\n },\n});\n"],"mappings":"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","ignoreList":[]}