create-react-native-library 0.61.0 → 0.62.0

This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
package/lib/constants.js CHANGED
@@ -3,9 +3,10 @@
3
3
  Object.defineProperty(exports, "__esModule", {
4
4
  value: true
5
5
  });
6
- exports.SUPPORTED_REACT_NATIVE_VERSION = exports.SUPPORTED_MONOREPO_CONFIG_VERSION = exports.FALLBACK_NITRO_MODULES_VERSION = exports.FALLBACK_BOB_VERSION = void 0;
6
+ exports.SUPPORTED_REACT_NATIVE_VERSION = exports.SUPPORTED_MONOREPO_CONFIG_VERSION = exports.SUPPORTED_EXPO_SDK_VERSION = exports.FALLBACK_NITRO_MODULES_VERSION = exports.FALLBACK_BOB_VERSION = void 0;
7
7
  const FALLBACK_BOB_VERSION = exports.FALLBACK_BOB_VERSION = '0.41.0';
8
8
  const FALLBACK_NITRO_MODULES_VERSION = exports.FALLBACK_NITRO_MODULES_VERSION = '0.35.3';
9
9
  const SUPPORTED_MONOREPO_CONFIG_VERSION = exports.SUPPORTED_MONOREPO_CONFIG_VERSION = '0.3.3';
10
10
  const SUPPORTED_REACT_NATIVE_VERSION = exports.SUPPORTED_REACT_NATIVE_VERSION = '0.85.0';
11
+ const SUPPORTED_EXPO_SDK_VERSION = exports.SUPPORTED_EXPO_SDK_VERSION = '55';
11
12
  //# sourceMappingURL=constants.js.map
@@ -1 +1 @@
1
- {"version":3,"file":"constants.js","names":["FALLBACK_BOB_VERSION","exports","FALLBACK_NITRO_MODULES_VERSION","SUPPORTED_MONOREPO_CONFIG_VERSION","SUPPORTED_REACT_NATIVE_VERSION"],"sources":["../src/constants.ts"],"sourcesContent":["export const FALLBACK_BOB_VERSION = '0.41.0';\nexport const FALLBACK_NITRO_MODULES_VERSION = '0.35.3';\nexport const SUPPORTED_MONOREPO_CONFIG_VERSION = '0.3.3';\nexport const SUPPORTED_REACT_NATIVE_VERSION = '0.85.0';\n"],"mappings":";;;;;;AAAO,MAAMA,oBAAoB,GAAAC,OAAA,CAAAD,oBAAA,GAAG,QAAQ;AACrC,MAAME,8BAA8B,GAAAD,OAAA,CAAAC,8BAAA,GAAG,QAAQ;AAC/C,MAAMC,iCAAiC,GAAAF,OAAA,CAAAE,iCAAA,GAAG,OAAO;AACjD,MAAMC,8BAA8B,GAAAH,OAAA,CAAAG,8BAAA,GAAG,QAAQ","ignoreList":[]}
1
+ {"version":3,"file":"constants.js","names":["FALLBACK_BOB_VERSION","exports","FALLBACK_NITRO_MODULES_VERSION","SUPPORTED_MONOREPO_CONFIG_VERSION","SUPPORTED_REACT_NATIVE_VERSION","SUPPORTED_EXPO_SDK_VERSION"],"sources":["../src/constants.ts"],"sourcesContent":["export const FALLBACK_BOB_VERSION = '0.41.0';\nexport const FALLBACK_NITRO_MODULES_VERSION = '0.35.3';\nexport const SUPPORTED_MONOREPO_CONFIG_VERSION = '0.3.3';\nexport const SUPPORTED_REACT_NATIVE_VERSION = '0.85.0';\nexport const SUPPORTED_EXPO_SDK_VERSION = '55';\n"],"mappings":";;;;;;AAAO,MAAMA,oBAAoB,GAAAC,OAAA,CAAAD,oBAAA,GAAG,QAAQ;AACrC,MAAME,8BAA8B,GAAAD,OAAA,CAAAC,8BAAA,GAAG,QAAQ;AAC/C,MAAMC,iCAAiC,GAAAF,OAAA,CAAAE,iCAAA,GAAG,OAAO;AACjD,MAAMC,8BAA8B,GAAAH,OAAA,CAAAG,8BAAA,GAAG,QAAQ;AAC/C,MAAMC,0BAA0B,GAAAJ,OAAA,CAAAI,0BAAA,GAAG,IAAI","ignoreList":[]}
@@ -7,7 +7,7 @@ exports.default = generateExampleApp;
7
7
  var _dedent = _interopRequireDefault(require("dedent"));
8
8
  var _fsExtra = _interopRequireDefault(require("fs-extra"));
9
9
  var _getLatestVersion = require("get-latest-version");
10
- var _https = _interopRequireDefault(require("https"));
10
+ var _kleur = _interopRequireDefault(require("kleur"));
11
11
  var _path = _interopRequireDefault(require("path"));
12
12
  var _constants = require("../constants");
13
13
  var _sortObjectKeys = _interopRequireDefault(require("../utils/sortObjectKeys"));
@@ -22,26 +22,62 @@ const PACKAGES_TO_ADD_EXPO_WEB = {
22
22
  const PACKAGES_TO_ADD_DEV_EXPO_NATIVE = {
23
23
  'expo-dev-client': '~5.0.3'
24
24
  };
25
+ async function fetchReactNativeVersion(version) {
26
+ const matchedReactNativeVersion = /(\d+\.\d+[-.0-9a-z]*)/.test(version) ? version : await (0, _getLatestVersion.getLatestVersion)('react-native', {
27
+ range: version
28
+ });
29
+ if (!matchedReactNativeVersion) {
30
+ throw new Error(`Could not find a matching version for react-native: ${version}`);
31
+ }
32
+ return matchedReactNativeVersion;
33
+ }
34
+ async function fetchCompatibleExpoSDK(reactNativeVersion) {
35
+ const matchedReactNativeVersion = await fetchReactNativeVersion(reactNativeVersion);
36
+ const res = await fetch('https://api.expo.dev/v2/versions/latest');
37
+ if (!res.ok) {
38
+ throw new Error(`Failed to fetch Expo SDK versions: ${String(res.status)} ${res.statusText}`);
39
+ }
40
+ const result = await res.json();
41
+ const sdkVersion = Object.entries(result.data.sdkVersions).find(([, sdkVersionInfo]) => {
42
+ if (typeof sdkVersionInfo === 'object' && sdkVersionInfo != null && 'facebookReactNativeVersion' in sdkVersionInfo && typeof sdkVersionInfo.facebookReactNativeVersion === 'string') {
43
+ const requested = matchedReactNativeVersion.split('.');
44
+ const supported = sdkVersionInfo.facebookReactNativeVersion.split('.');
45
+ return requested[0] === supported[0] && requested[1] === supported[1] && (requested[2] ? requested[2] === supported[2] : true);
46
+ }
47
+ return false;
48
+ })?.[0]
49
+ // Get major SDK version (e.g. "55" from "55.0.0")
50
+ .split('.')[0];
51
+ if (sdkVersion == null) {
52
+ throw new Error(`Couldn't find a compatible Expo SDK for react-native@${reactNativeVersion}`);
53
+ }
54
+ return {
55
+ sdkVersion,
56
+ reactNativeVersion: matchedReactNativeVersion
57
+ };
58
+ }
25
59
  async function generateExampleApp({
26
60
  config,
27
61
  root,
28
- reactNativeVersion = 'latest'
62
+ reactNativeVersion
29
63
  }) {
30
64
  const directory = _path.default.join(root, 'example');
31
65
  let args = [];
32
66
  switch (config.example) {
33
67
  case 'vanilla':
68
+ if (reactNativeVersion != null && reactNativeVersion !== _constants.SUPPORTED_REACT_NATIVE_VERSION) {
69
+ console.log(`${_kleur.default.blue('ℹ')} Using untested ${_kleur.default.cyan(`react-native@${reactNativeVersion}`)} for the example`);
70
+ }
71
+
34
72
  // `npx @react-native-community/cli init <projectName> --directory example --skip-install`
35
- args = [`@react-native-community/cli`, 'init', `${config.project.name}Example`, '--package-name', `${config.project.package}.example`, '--directory', directory, '--version', reactNativeVersion, '--skip-install', '--skip-git-init', '--pm', 'npm'];
73
+ args = [`@react-native-community/cli`, 'init', `${config.project.name}Example`, '--package-name', `${config.project.package}.example`, '--directory', directory, '--version', reactNativeVersion || _constants.SUPPORTED_REACT_NATIVE_VERSION, '--skip-install', '--skip-git-init', '--pm', 'npm'];
36
74
  break;
37
75
  case 'test-app':
38
76
  {
39
- // Test App requires React Native version to be a semver version
40
- const matchedReactNativeVersion = /(\d+\.\d+[-.0-9a-z]*)/.test(reactNativeVersion) ? reactNativeVersion : await (0, _getLatestVersion.getLatestVersion)('react-native', {
41
- range: reactNativeVersion
42
- });
43
- if (!matchedReactNativeVersion) {
44
- throw new Error(`Could not find a matching version for react-native: ${reactNativeVersion}`);
77
+ // Test App doesn't support a semver range for the version
78
+ const matchedReactNativeVersion = reactNativeVersion ? await fetchReactNativeVersion(reactNativeVersion) : _constants.SUPPORTED_REACT_NATIVE_VERSION;
79
+ if (reactNativeVersion != null && reactNativeVersion !== _constants.SUPPORTED_REACT_NATIVE_VERSION) {
80
+ console.log(`${_kleur.default.blue('ℹ')} Using untested ${_kleur.default.cyan(`react-native@${matchedReactNativeVersion}`)} for the example`);
45
81
  }
46
82
 
47
83
  // `npx --package react-native-test-app@latest init --name ${projectName}Example --destination example --version ${reactNativeVersion}`
@@ -49,9 +85,21 @@ async function generateExampleApp({
49
85
  }
50
86
  break;
51
87
  case 'expo':
52
- // `npx create-expo-app example --no-install --template blank`
53
- args = ['create-expo-app@latest', directory, '--no-install', '--template', 'blank'];
54
- break;
88
+ {
89
+ // `npx create-expo-app example --no-install --template blank`
90
+ const {
91
+ sdkVersion,
92
+ reactNativeVersion: matchedReactNativeVersion
93
+ } = reactNativeVersion ? await fetchCompatibleExpoSDK(reactNativeVersion) : {
94
+ sdkVersion: _constants.SUPPORTED_EXPO_SDK_VERSION,
95
+ reactNativeVersion: null
96
+ };
97
+ if (sdkVersion !== _constants.SUPPORTED_EXPO_SDK_VERSION && matchedReactNativeVersion) {
98
+ console.log(`${_kleur.default.blue('ℹ')} Using untested ${_kleur.default.cyan(`expo@${sdkVersion}`)} with ${_kleur.default.cyan(`react-native@${matchedReactNativeVersion}`)} for the example`);
99
+ }
100
+ args = ['create-expo-app@latest', directory, '--no-install', '--template', `blank@sdk-${sdkVersion}`];
101
+ break;
102
+ }
55
103
  case undefined:
56
104
  case null:
57
105
  {
@@ -139,21 +187,13 @@ async function generateExampleApp({
139
187
  const sdkVersion = dependencies.expo.split('.')[0].replace(/[^\d]/, '');
140
188
  let bundledNativeModules;
141
189
  try {
142
- bundledNativeModules = await new Promise((resolve, reject) => {
143
- _https.default.get(`https://raw.githubusercontent.com/expo/expo/sdk-${sdkVersion}/packages/expo/bundledNativeModules.json`, res => {
144
- let data = '';
145
- res.on('data', chunk => data += chunk);
146
- res.on('end', () => {
147
- try {
148
- resolve(JSON.parse(data));
149
- } catch (e) {
150
- // eslint-disable-next-line @typescript-eslint/prefer-promise-reject-errors
151
- reject(e);
152
- }
153
- });
154
- }).on('error', reject);
155
- });
190
+ const res = await fetch(`https://raw.githubusercontent.com/expo/expo/sdk-${sdkVersion}/packages/expo/bundledNativeModules.json`);
191
+ if (!res.ok) {
192
+ throw new Error(`Failed to fetch bundled native modules for Expo SDK ${sdkVersion}: ${String(res.status)} ${res.statusText}`);
193
+ }
194
+ bundledNativeModules = await res.json();
156
195
  } catch (e) {
196
+ console.warn(`${_kleur.default.yellow('⚠')} Failed to fetch compatibility data for Expo SDK ${sdkVersion}: ${_kleur.default.cyan(config.example)}`);
157
197
  bundledNativeModules = {};
158
198
  }
159
199
  if (config.project.native) {
@@ -1 +1 @@
1
- {"version":3,"file":"generateExampleApp.js","names":["_dedent","_interopRequireDefault","require","_fsExtra","_getLatestVersion","_https","_path","_constants","_sortObjectKeys","_spawn","e","__esModule","default","FILES_TO_DELETE","PACKAGES_TO_REMOVE","PACKAGES_TO_ADD_EXPO_WEB","PACKAGES_TO_ADD_DEV_EXPO_NATIVE","generateExampleApp","config","root","reactNativeVersion","directory","path","join","args","example","project","name","package","matchedReactNativeVersion","test","getLatestVersion","range","Error","undefined","spawn","env","process","npm_config_yes","file","fs","remove","pkg","readJSON","slug","jest","scripts","dependencies","devDependencies","lint","SCRIPTS_TO_ADD","Object","assign","androidBuild","iosBuild","app","android","ios","bundleIdentifier","writeJSON","spaces","forEach","PACKAGES_TO_ADD_DEV","versions","bob","SUPPORTED_MONOREPO_CONFIG_VERSION","moduleConfig","viewConfig","packagesToAddNitro","nitro","sdkVersion","expo","split","replace","bundledNativeModules","Promise","resolve","reject","https","get","res","data","on","chunk","JSON","parse","native","entries","version","start","writeFile","dedent","reactVersion","react","web","field","sortObjectKeys","cpp","podfile","readFile"],"sources":["../../src/exampleApp/generateExampleApp.ts"],"sourcesContent":["import dedent from 'dedent';\nimport fs from 'fs-extra';\nimport { getLatestVersion } from 'get-latest-version';\nimport https from 'https';\nimport path from 'path';\nimport { SUPPORTED_MONOREPO_CONFIG_VERSION } from '../constants';\nimport type { TemplateConfiguration } from '../template';\nimport sortObjectKeys from '../utils/sortObjectKeys';\nimport { spawn } from '../utils/spawn';\n\nconst FILES_TO_DELETE = [\n '__tests__',\n '.buckconfig',\n '.eslintrc.js',\n '.flowconfig',\n '.git',\n '.gitignore',\n '.prettierrc.js',\n 'App.js',\n 'App.tsx',\n 'index.js',\n 'tsconfig.json',\n];\n\nconst PACKAGES_TO_REMOVE = [\n '@react-native/eslint-config',\n '@react-native/new-app-screen',\n '@tsconfig/react-native',\n '@types/jest',\n '@types/react-test-renderer',\n '@typescript-eslint/eslint-plugin',\n '@typescript-eslint/parser',\n 'babel-jest',\n 'eslint',\n 'jest',\n 'prettier',\n 'react-test-renderer',\n 'typescript',\n 'react-native-safe-area-context',\n];\n\nconst PACKAGES_TO_ADD_EXPO_WEB = {\n '@expo/metro-runtime': '~5.0.4',\n 'react-native-web': '~0.21.1',\n};\n\nconst PACKAGES_TO_ADD_DEV_EXPO_NATIVE = {\n 'expo-dev-client': '~5.0.3',\n};\n\nexport default async function generateExampleApp({\n config,\n root,\n reactNativeVersion = 'latest',\n}: {\n config: TemplateConfiguration;\n root: string;\n reactNativeVersion: string | undefined;\n}) {\n const directory = path.join(root, 'example');\n\n let args: string[] = [];\n\n switch (config.example) {\n case 'vanilla':\n // `npx @react-native-community/cli init <projectName> --directory example --skip-install`\n args = [\n `@react-native-community/cli`,\n 'init',\n `${config.project.name}Example`,\n '--package-name',\n `${config.project.package}.example`,\n '--directory',\n directory,\n '--version',\n reactNativeVersion,\n '--skip-install',\n '--skip-git-init',\n '--pm',\n 'npm',\n ];\n break;\n case 'test-app':\n {\n // Test App requires React Native version to be a semver version\n const matchedReactNativeVersion = /(\\d+\\.\\d+[-.0-9a-z]*)/.test(\n reactNativeVersion\n )\n ? reactNativeVersion\n : await getLatestVersion('react-native', {\n range: reactNativeVersion,\n });\n\n if (!matchedReactNativeVersion) {\n throw new Error(\n `Could not find a matching version for react-native: ${reactNativeVersion}`\n );\n }\n\n // `npx --package react-native-test-app@latest init --name ${projectName}Example --destination example --version ${reactNativeVersion}`\n args = [\n '--package',\n `react-native-test-app@latest`,\n 'init',\n '--name',\n `${config.project.name}Example`,\n `--destination`,\n directory,\n '--version',\n matchedReactNativeVersion,\n '--platform',\n 'ios',\n '--platform',\n 'android',\n ];\n }\n break;\n case 'expo':\n // `npx create-expo-app example --no-install --template blank`\n args = [\n 'create-expo-app@latest',\n directory,\n '--no-install',\n '--template',\n 'blank',\n ];\n break;\n case undefined:\n case null: {\n // Do nothing\n }\n }\n\n await spawn('npx', args, {\n env: { ...process.env, npm_config_yes: 'true' },\n });\n\n // Remove unnecessary files and folders\n for (const file of FILES_TO_DELETE) {\n await fs.remove(path.join(directory, file));\n }\n\n // Patch the example app's package.json\n const pkg = await fs.readJSON(path.join(directory, 'package.json'));\n\n pkg.name = `${config.project.slug}-example`;\n\n // Remove Jest config for now\n delete pkg.jest;\n\n // Make sure we have at least empty objects\n // Otherwise generation will fails if package doesn't contain these fields\n pkg.scripts = pkg.scripts || {};\n pkg.dependencies = pkg.dependencies || {};\n pkg.devDependencies = pkg.devDependencies || {};\n\n const { scripts, dependencies, devDependencies } = pkg;\n\n delete scripts.test;\n delete scripts.lint;\n\n const SCRIPTS_TO_ADD =\n config.example === 'expo'\n ? {\n 'build:ios': `xcodebuild ONLY_ACTIVE_ARCH=YES -workspace ios/${config.project.name}Example.xcworkspace -UseNewBuildSystem=YES -scheme ${config.project.name}Example -configuration Debug -sdk iphonesimulator -derivedDataPath ios/build -quiet`,\n 'build:android':\n 'cd android && ./gradlew assembleDebug -DtestBuildType=debug -Dorg.gradle.jvmargs=-Xmx4g',\n }\n : {\n 'build:android':\n 'react-native build-android --extra-params \"--no-daemon --console=plain -PreactNativeArchitectures=arm64-v8a\"',\n 'build:ios': `react-native build-ios --mode Debug`,\n };\n\n if (config.example != null) {\n Object.assign(scripts, SCRIPTS_TO_ADD);\n }\n\n if (config.example === 'test-app') {\n // `react-native-test-app` doesn't bundle application by default in 'Release' mode and also `bundle` command doesn't create a directory.\n // `mkdist` script should be removed after stable React Native major contains this fix: https://github.com/facebook/react-native/pull/45182.\n\n const androidBuild = [\n 'npm run mkdist',\n 'react-native bundle --entry-file index.js --platform android --dev true --bundle-output dist/main.android.jsbundle --assets-dest dist',\n SCRIPTS_TO_ADD['build:android'],\n ].join(' && ');\n\n const iosBuild = [\n 'npm run mkdist',\n 'react-native bundle --entry-file index.js --platform ios --dev true --bundle-output dist/main.ios.jsbundle --assets-dest dist',\n SCRIPTS_TO_ADD['build:ios'],\n ].join(' && ');\n\n Object.assign(scripts, {\n 'build:android': androidBuild,\n 'build:ios': iosBuild,\n });\n\n const app = await fs.readJSON(path.join(directory, 'app.json'));\n\n app.android = app.android || {};\n app.android.package = `${config.project.package}.example`;\n app.ios = app.ios || {};\n app.ios.bundleIdentifier = `${config.project.package}.example`;\n\n await fs.writeJSON(path.join(directory, 'app.json'), app, {\n spaces: 2,\n });\n }\n\n PACKAGES_TO_REMOVE.forEach((name) => {\n // eslint-disable-next-line @typescript-eslint/no-dynamic-delete\n delete devDependencies[name];\n // eslint-disable-next-line @typescript-eslint/no-dynamic-delete\n delete dependencies[name];\n });\n\n const PACKAGES_TO_ADD_DEV = {\n 'react-native-builder-bob': `^${config.versions.bob}`,\n 'react-native-monorepo-config': `^${SUPPORTED_MONOREPO_CONFIG_VERSION}`,\n };\n\n if (\n config.project.moduleConfig === 'nitro-modules' ||\n config.project.viewConfig === 'nitro-view'\n ) {\n const packagesToAddNitro = {\n 'react-native-nitro-modules': `^${config.versions.nitro || 'latest'}`,\n };\n\n Object.assign(dependencies, packagesToAddNitro);\n }\n\n Object.assign(devDependencies, PACKAGES_TO_ADD_DEV);\n\n if (config.example === 'expo') {\n const sdkVersion: string = dependencies.expo\n .split('.')[0]\n .replace(/[^\\d]/, '');\n\n let bundledNativeModules: Record<string, string>;\n\n try {\n bundledNativeModules = await new Promise((resolve, reject) => {\n https\n .get(\n `https://raw.githubusercontent.com/expo/expo/sdk-${sdkVersion}/packages/expo/bundledNativeModules.json`,\n (res) => {\n let data = '';\n\n res.on('data', (chunk: string) => (data += chunk));\n res.on('end', () => {\n try {\n resolve(JSON.parse(data));\n } catch (e) {\n // eslint-disable-next-line @typescript-eslint/prefer-promise-reject-errors\n reject(e);\n }\n });\n }\n )\n .on('error', reject);\n });\n } catch (e) {\n bundledNativeModules = {};\n }\n\n if (config.project.native) {\n Object.entries(PACKAGES_TO_ADD_DEV_EXPO_NATIVE).forEach(\n ([name, version]) => {\n devDependencies[name] = bundledNativeModules[name] || version;\n }\n );\n\n scripts.start = 'expo start --dev-client';\n scripts.android = 'expo run:android';\n scripts.ios = 'expo run:ios';\n\n await fs.writeFile(\n path.join(directory, '.gitignore'),\n dedent`\n # These folders are generated with prebuild (CNG)\n android/\n ios/\n `\n );\n }\n\n const reactVersion = dependencies.react ?? devDependencies.react;\n\n if (typeof reactVersion !== 'string') {\n throw new Error(\"Couldn't find the package 'react' in the example app.\");\n }\n\n Object.entries(PACKAGES_TO_ADD_EXPO_WEB).forEach(([name, version]) => {\n dependencies[name] = bundledNativeModules[name] || version;\n });\n\n dependencies['react-dom'] = reactVersion;\n scripts.web = 'expo start --web';\n scripts['build:web'] = 'expo export --platform web';\n\n const app = await fs.readJSON(path.join(directory, 'app.json'));\n\n app.expo.name = `${config.project.name} Example`;\n app.expo.slug = `${config.project.slug}-example`;\n app.expo.android = app.expo.android || {};\n app.expo.android.package = `${config.project.package}.example`;\n app.expo.ios = app.expo.ios || {};\n app.expo.ios.bundleIdentifier = `${config.project.package}.example`;\n\n await fs.writeJSON(path.join(directory, 'app.json'), app, {\n spaces: 2,\n });\n }\n\n // Sort the deps by name to match behavior of package managers\n // This way the package.json doesn't get updated when installing deps\n for (const field of ['dependencies', 'devDependencies']) {\n if (pkg[field]) {\n pkg[field] = sortObjectKeys(pkg[field]);\n }\n }\n\n await fs.writeJSON(path.join(directory, 'package.json'), pkg, {\n spaces: 2,\n });\n\n if (config.example === 'vanilla' && config.project.cpp) {\n const podfile = await fs.readFile(\n path.join(directory, 'ios', 'Podfile'),\n 'utf8'\n );\n\n await fs.writeFile(\n path.join(directory, 'ios', 'Podfile'),\n \"ENV['RCT_USE_RN_DEP'] = '1' # Needed to make iOS build work for C++ module\\n\\n\" +\n podfile\n );\n }\n}\n"],"mappings":"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","ignoreList":[]}
1
+ {"version":3,"file":"generateExampleApp.js","names":["_dedent","_interopRequireDefault","require","_fsExtra","_getLatestVersion","_kleur","_path","_constants","_sortObjectKeys","_spawn","e","__esModule","default","FILES_TO_DELETE","PACKAGES_TO_REMOVE","PACKAGES_TO_ADD_EXPO_WEB","PACKAGES_TO_ADD_DEV_EXPO_NATIVE","fetchReactNativeVersion","version","matchedReactNativeVersion","test","getLatestVersion","range","Error","fetchCompatibleExpoSDK","reactNativeVersion","res","fetch","ok","String","status","statusText","result","json","sdkVersion","Object","entries","data","sdkVersions","find","sdkVersionInfo","facebookReactNativeVersion","requested","split","supported","generateExampleApp","config","root","directory","path","join","args","example","SUPPORTED_REACT_NATIVE_VERSION","console","log","kleur","blue","cyan","project","name","package","SUPPORTED_EXPO_SDK_VERSION","undefined","spawn","env","process","npm_config_yes","file","fs","remove","pkg","readJSON","slug","jest","scripts","dependencies","devDependencies","lint","SCRIPTS_TO_ADD","assign","androidBuild","iosBuild","app","android","ios","bundleIdentifier","writeJSON","spaces","forEach","PACKAGES_TO_ADD_DEV","versions","bob","SUPPORTED_MONOREPO_CONFIG_VERSION","moduleConfig","viewConfig","packagesToAddNitro","nitro","expo","replace","bundledNativeModules","warn","yellow","native","start","writeFile","dedent","reactVersion","react","web","field","sortObjectKeys","cpp","podfile","readFile"],"sources":["../../src/exampleApp/generateExampleApp.ts"],"sourcesContent":["import dedent from 'dedent';\nimport fs from 'fs-extra';\nimport { getLatestVersion } from 'get-latest-version';\nimport kleur from 'kleur';\nimport path from 'path';\nimport {\n SUPPORTED_EXPO_SDK_VERSION,\n SUPPORTED_MONOREPO_CONFIG_VERSION,\n SUPPORTED_REACT_NATIVE_VERSION,\n} from '../constants';\nimport type { TemplateConfiguration } from '../template';\nimport sortObjectKeys from '../utils/sortObjectKeys';\nimport { spawn } from '../utils/spawn';\n\nconst FILES_TO_DELETE = [\n '__tests__',\n '.buckconfig',\n '.eslintrc.js',\n '.flowconfig',\n '.git',\n '.gitignore',\n '.prettierrc.js',\n 'App.js',\n 'App.tsx',\n 'index.js',\n 'tsconfig.json',\n];\n\nconst PACKAGES_TO_REMOVE = [\n '@react-native/eslint-config',\n '@react-native/new-app-screen',\n '@tsconfig/react-native',\n '@types/jest',\n '@types/react-test-renderer',\n '@typescript-eslint/eslint-plugin',\n '@typescript-eslint/parser',\n 'babel-jest',\n 'eslint',\n 'jest',\n 'prettier',\n 'react-test-renderer',\n 'typescript',\n 'react-native-safe-area-context',\n];\n\nconst PACKAGES_TO_ADD_EXPO_WEB = {\n '@expo/metro-runtime': '~5.0.4',\n 'react-native-web': '~0.21.1',\n};\n\nconst PACKAGES_TO_ADD_DEV_EXPO_NATIVE = {\n 'expo-dev-client': '~5.0.3',\n};\n\nasync function fetchReactNativeVersion(version: string) {\n const matchedReactNativeVersion = /(\\d+\\.\\d+[-.0-9a-z]*)/.test(version)\n ? version\n : await getLatestVersion('react-native', {\n range: version,\n });\n\n if (!matchedReactNativeVersion) {\n throw new Error(\n `Could not find a matching version for react-native: ${version}`\n );\n }\n\n return matchedReactNativeVersion;\n}\n\nasync function fetchCompatibleExpoSDK(reactNativeVersion: string) {\n const matchedReactNativeVersion =\n await fetchReactNativeVersion(reactNativeVersion);\n\n const res = await fetch('https://api.expo.dev/v2/versions/latest');\n\n if (!res.ok) {\n throw new Error(\n `Failed to fetch Expo SDK versions: ${String(res.status)} ${res.statusText}`\n );\n }\n\n const result = await res.json();\n\n const sdkVersion = Object.entries(result.data.sdkVersions)\n .find(([, sdkVersionInfo]) => {\n if (\n typeof sdkVersionInfo === 'object' &&\n sdkVersionInfo != null &&\n 'facebookReactNativeVersion' in sdkVersionInfo &&\n typeof sdkVersionInfo.facebookReactNativeVersion === 'string'\n ) {\n const requested = matchedReactNativeVersion.split('.');\n const supported = sdkVersionInfo.facebookReactNativeVersion.split('.');\n\n return (\n requested[0] === supported[0] &&\n requested[1] === supported[1] &&\n (requested[2] ? requested[2] === supported[2] : true)\n );\n }\n\n return false;\n })?.[0]\n // Get major SDK version (e.g. \"55\" from \"55.0.0\")\n .split('.')[0];\n\n if (sdkVersion == null) {\n throw new Error(\n `Couldn't find a compatible Expo SDK for react-native@${reactNativeVersion}`\n );\n }\n\n return {\n sdkVersion,\n reactNativeVersion: matchedReactNativeVersion,\n };\n}\n\nexport default async function generateExampleApp({\n config,\n root,\n reactNativeVersion,\n}: {\n config: TemplateConfiguration;\n root: string;\n reactNativeVersion: string | undefined;\n}) {\n const directory = path.join(root, 'example');\n\n let args: string[] = [];\n\n switch (config.example) {\n case 'vanilla':\n if (\n reactNativeVersion != null &&\n reactNativeVersion !== SUPPORTED_REACT_NATIVE_VERSION\n ) {\n console.log(\n `${kleur.blue('ℹ')} Using untested ${kleur.cyan(\n `react-native@${reactNativeVersion}`\n )} for the example`\n );\n }\n\n // `npx @react-native-community/cli init <projectName> --directory example --skip-install`\n args = [\n `@react-native-community/cli`,\n 'init',\n `${config.project.name}Example`,\n '--package-name',\n `${config.project.package}.example`,\n '--directory',\n directory,\n '--version',\n reactNativeVersion || SUPPORTED_REACT_NATIVE_VERSION,\n '--skip-install',\n '--skip-git-init',\n '--pm',\n 'npm',\n ];\n break;\n case 'test-app':\n {\n // Test App doesn't support a semver range for the version\n const matchedReactNativeVersion = reactNativeVersion\n ? await fetchReactNativeVersion(reactNativeVersion)\n : SUPPORTED_REACT_NATIVE_VERSION;\n\n if (\n reactNativeVersion != null &&\n reactNativeVersion !== SUPPORTED_REACT_NATIVE_VERSION\n ) {\n console.log(\n `${kleur.blue('ℹ')} Using untested ${kleur.cyan(\n `react-native@${matchedReactNativeVersion}`\n )} for the example`\n );\n }\n\n // `npx --package react-native-test-app@latest init --name ${projectName}Example --destination example --version ${reactNativeVersion}`\n args = [\n '--package',\n `react-native-test-app@latest`,\n 'init',\n '--name',\n `${config.project.name}Example`,\n `--destination`,\n directory,\n '--version',\n matchedReactNativeVersion,\n '--platform',\n 'ios',\n '--platform',\n 'android',\n ];\n }\n break;\n case 'expo': {\n // `npx create-expo-app example --no-install --template blank`\n const { sdkVersion, reactNativeVersion: matchedReactNativeVersion } =\n reactNativeVersion\n ? await fetchCompatibleExpoSDK(reactNativeVersion)\n : {\n sdkVersion: SUPPORTED_EXPO_SDK_VERSION,\n reactNativeVersion: null,\n };\n\n if (\n sdkVersion !== SUPPORTED_EXPO_SDK_VERSION &&\n matchedReactNativeVersion\n ) {\n console.log(\n `${kleur.blue('ℹ')} Using untested ${kleur.cyan(\n `expo@${sdkVersion}`\n )} with ${kleur.cyan(`react-native@${matchedReactNativeVersion}`)} for the example`\n );\n }\n\n args = [\n 'create-expo-app@latest',\n directory,\n '--no-install',\n '--template',\n `blank@sdk-${sdkVersion}`,\n ];\n break;\n }\n case undefined:\n case null: {\n // Do nothing\n }\n }\n\n await spawn('npx', args, {\n env: { ...process.env, npm_config_yes: 'true' },\n });\n\n // Remove unnecessary files and folders\n for (const file of FILES_TO_DELETE) {\n await fs.remove(path.join(directory, file));\n }\n\n // Patch the example app's package.json\n const pkg = await fs.readJSON(path.join(directory, 'package.json'));\n\n pkg.name = `${config.project.slug}-example`;\n\n // Remove Jest config for now\n delete pkg.jest;\n\n // Make sure we have at least empty objects\n // Otherwise generation will fails if package doesn't contain these fields\n pkg.scripts = pkg.scripts || {};\n pkg.dependencies = pkg.dependencies || {};\n pkg.devDependencies = pkg.devDependencies || {};\n\n const { scripts, dependencies, devDependencies } = pkg;\n\n delete scripts.test;\n delete scripts.lint;\n\n const SCRIPTS_TO_ADD =\n config.example === 'expo'\n ? {\n 'build:ios': `xcodebuild ONLY_ACTIVE_ARCH=YES -workspace ios/${config.project.name}Example.xcworkspace -UseNewBuildSystem=YES -scheme ${config.project.name}Example -configuration Debug -sdk iphonesimulator -derivedDataPath ios/build -quiet`,\n 'build:android':\n 'cd android && ./gradlew assembleDebug -DtestBuildType=debug -Dorg.gradle.jvmargs=-Xmx4g',\n }\n : {\n 'build:android':\n 'react-native build-android --extra-params \"--no-daemon --console=plain -PreactNativeArchitectures=arm64-v8a\"',\n 'build:ios': `react-native build-ios --mode Debug`,\n };\n\n if (config.example != null) {\n Object.assign(scripts, SCRIPTS_TO_ADD);\n }\n\n if (config.example === 'test-app') {\n // `react-native-test-app` doesn't bundle application by default in 'Release' mode and also `bundle` command doesn't create a directory.\n // `mkdist` script should be removed after stable React Native major contains this fix: https://github.com/facebook/react-native/pull/45182.\n\n const androidBuild = [\n 'npm run mkdist',\n 'react-native bundle --entry-file index.js --platform android --dev true --bundle-output dist/main.android.jsbundle --assets-dest dist',\n SCRIPTS_TO_ADD['build:android'],\n ].join(' && ');\n\n const iosBuild = [\n 'npm run mkdist',\n 'react-native bundle --entry-file index.js --platform ios --dev true --bundle-output dist/main.ios.jsbundle --assets-dest dist',\n SCRIPTS_TO_ADD['build:ios'],\n ].join(' && ');\n\n Object.assign(scripts, {\n 'build:android': androidBuild,\n 'build:ios': iosBuild,\n });\n\n const app = await fs.readJSON(path.join(directory, 'app.json'));\n\n app.android = app.android || {};\n app.android.package = `${config.project.package}.example`;\n app.ios = app.ios || {};\n app.ios.bundleIdentifier = `${config.project.package}.example`;\n\n await fs.writeJSON(path.join(directory, 'app.json'), app, {\n spaces: 2,\n });\n }\n\n PACKAGES_TO_REMOVE.forEach((name) => {\n // eslint-disable-next-line @typescript-eslint/no-dynamic-delete\n delete devDependencies[name];\n // eslint-disable-next-line @typescript-eslint/no-dynamic-delete\n delete dependencies[name];\n });\n\n const PACKAGES_TO_ADD_DEV = {\n 'react-native-builder-bob': `^${config.versions.bob}`,\n 'react-native-monorepo-config': `^${SUPPORTED_MONOREPO_CONFIG_VERSION}`,\n };\n\n if (\n config.project.moduleConfig === 'nitro-modules' ||\n config.project.viewConfig === 'nitro-view'\n ) {\n const packagesToAddNitro = {\n 'react-native-nitro-modules': `^${config.versions.nitro || 'latest'}`,\n };\n\n Object.assign(dependencies, packagesToAddNitro);\n }\n\n Object.assign(devDependencies, PACKAGES_TO_ADD_DEV);\n\n if (config.example === 'expo') {\n const sdkVersion: string = dependencies.expo\n .split('.')[0]\n .replace(/[^\\d]/, '');\n\n let bundledNativeModules: Record<string, string>;\n\n try {\n const res = await fetch(\n `https://raw.githubusercontent.com/expo/expo/sdk-${sdkVersion}/packages/expo/bundledNativeModules.json`\n );\n\n if (!res.ok) {\n throw new Error(\n `Failed to fetch bundled native modules for Expo SDK ${sdkVersion}: ${String(res.status)} ${res.statusText}`\n );\n }\n\n bundledNativeModules = await res.json();\n } catch (e) {\n console.warn(\n `${kleur.yellow(\n '⚠'\n )} Failed to fetch compatibility data for Expo SDK ${sdkVersion}: ${kleur.cyan(\n config.example\n )}`\n );\n\n bundledNativeModules = {};\n }\n\n if (config.project.native) {\n Object.entries(PACKAGES_TO_ADD_DEV_EXPO_NATIVE).forEach(\n ([name, version]) => {\n devDependencies[name] = bundledNativeModules[name] || version;\n }\n );\n\n scripts.start = 'expo start --dev-client';\n scripts.android = 'expo run:android';\n scripts.ios = 'expo run:ios';\n\n await fs.writeFile(\n path.join(directory, '.gitignore'),\n dedent`\n # These folders are generated with prebuild (CNG)\n android/\n ios/\n `\n );\n }\n\n const reactVersion = dependencies.react ?? devDependencies.react;\n\n if (typeof reactVersion !== 'string') {\n throw new Error(\"Couldn't find the package 'react' in the example app.\");\n }\n\n Object.entries(PACKAGES_TO_ADD_EXPO_WEB).forEach(([name, version]) => {\n dependencies[name] = bundledNativeModules[name] || version;\n });\n\n dependencies['react-dom'] = reactVersion;\n scripts.web = 'expo start --web';\n scripts['build:web'] = 'expo export --platform web';\n\n const app = await fs.readJSON(path.join(directory, 'app.json'));\n\n app.expo.name = `${config.project.name} Example`;\n app.expo.slug = `${config.project.slug}-example`;\n app.expo.android = app.expo.android || {};\n app.expo.android.package = `${config.project.package}.example`;\n app.expo.ios = app.expo.ios || {};\n app.expo.ios.bundleIdentifier = `${config.project.package}.example`;\n\n await fs.writeJSON(path.join(directory, 'app.json'), app, {\n spaces: 2,\n });\n }\n\n // Sort the deps by name to match behavior of package managers\n // This way the package.json doesn't get updated when installing deps\n for (const field of ['dependencies', 'devDependencies']) {\n if (pkg[field]) {\n pkg[field] = sortObjectKeys(pkg[field]);\n }\n }\n\n await fs.writeJSON(path.join(directory, 'package.json'), pkg, {\n spaces: 2,\n });\n\n if (config.example === 'vanilla' && config.project.cpp) {\n const podfile = await fs.readFile(\n path.join(directory, 'ios', 'Podfile'),\n 'utf8'\n );\n\n await fs.writeFile(\n path.join(directory, 'ios', 'Podfile'),\n \"ENV['RCT_USE_RN_DEP'] = '1' # Needed to make iOS build work for C++ module\\n\\n\" +\n podfile\n );\n }\n}\n"],"mappings":"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","ignoreList":[]}
package/lib/index.js CHANGED
@@ -46,9 +46,6 @@ async function create() {
46
46
  });
47
47
  const folder = _path.default.resolve(process.cwd(), answers.directory);
48
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
49
  const spinner = (0, _ora.default)().start();
53
50
  if (config.example != null) {
54
51
  spinner.text = 'Generating example app';
@@ -57,6 +54,10 @@ async function create() {
57
54
  reactNativeVersion: answers.reactNativeVersion,
58
55
  config
59
56
  });
57
+ } else {
58
+ if (answers.reactNativeVersion) {
59
+ console.warn(`${_kleur.default.yellow('⚠')} Ignoring --react-native-version for library without example app`);
60
+ }
60
61
  }
61
62
  spinner.text = 'Copying files';
62
63
  await (0, _template.applyTemplates)(answers, config, folder);
package/lib/index.js.map CHANGED
@@ -1 +1 @@
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":[]}
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","spinner","ora","start","example","text","generateExampleApp","root","reactNativeVersion","warn","kleur","yellow","applyTemplates","rootPackageJson","readJson","join","alignDependencyVersionsWithExampleApp","local","configureTools","tools","packageJson","libraryMetadata","createMetadata","writeJson","spaces","printSuccessMessage","succeed","relative","packageManager","determinePackageManager","addedNitro","project","moduleConfig","addNitroDependencyToLocalLibrary","linkedLocalLibrary","linkLocalLibrary","printLocalLibNextSteps","timer","abortController","AbortController","Promise","race","createInitialGitCommit","signal","_resolve","reject","setTimeout","error","Error","abort","message","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} from './constants';\nimport { alignDependencyVersionsWithExampleApp } from './exampleApp/dependencies';\nimport generateExampleApp from './exampleApp/generateExampleApp';\nimport { printLocalLibNextSteps, printNonLocalLibNextSteps } 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 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 } else {\n if (answers.reactNativeVersion) {\n console.warn(\n `${kleur.yellow(\n '⚠'\n )} Ignoring --react-native-version for library without example app`\n );\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":";;AAAA,IAAAA,QAAA,GAAAC,sBAAA,CAAAC,OAAA;AACA,IAAAC,QAAA,GAAAF,sBAAA,CAAAC,OAAA;AACA,IAAAE,MAAA,GAAAH,sBAAA,CAAAC,OAAA;AACA,IAAAG,IAAA,GAAAJ,sBAAA,CAAAC,OAAA;AACA,IAAAI,KAAA,GAAAL,sBAAA,CAAAC,OAAA;AACA,IAAAK,UAAA,GAAAL,OAAA;AAIA,IAAAM,aAAA,GAAAN,OAAA;AACA,IAAAO,mBAAA,GAAAR,sBAAA,CAAAC,OAAA;AACA,IAAAQ,OAAA,GAAAR,OAAA;AACA,IAAAS,OAAA,GAAAT,OAAA;AACA,IAAAU,SAAA,GAAAV,OAAA;AACA,IAAAW,OAAA,GAAAX,OAAA;AACA,IAAAY,eAAA,GAAAZ,OAAA;AACA,IAAAa,cAAA,GAAAb,OAAA;AACA,IAAAc,MAAA,GAAAd,OAAA;AAIA,IAAAe,eAAA,GAAAf,OAAA;AACA,IAAAgB,yBAAA,GAAAhB,OAAA;AACA,IAAAiB,eAAA,GAAAjB,OAAA;AAAwD,SAAAD,uBAAAmB,CAAA,WAAAA,CAAA,IAAAA,CAAA,CAAAC,UAAA,GAAAD,CAAA,KAAAE,OAAA,EAAAF,CAAA;AAExD,eAAeG,MAAMA,CAAA,EAAG;EACtB;EACA,MAAMC,iBAAiB,GAAG,IAAAC,kDAAwB,EAChD,0BAA0B,EAC1BC,+BACF,CAAC;EACD,MAAMC,0BAA0B,GAAG,IAAAF,kDAAwB,EACzD,4BAA4B,EAC5BG,yCACF,CAAC;EAED,MAAM,IAAAC,uBAAe,EAAC,CAAC;EAEvB,MAAMC,OAAO,GAAG,MAAMC,cAAM,CAACC,IAAI,CAAC;IAChCC,IAAI,EAAEC,gBAAG,CAACD,IAAI;IACdE,OAAO,EAAED,gBAAG,CAACC,OAAO;IACpBC,WAAW,EAAEF,gBAAG,CAACE;EACnB,CAAC,CAAC;EAEF,IAAIN,OAAO,IAAI,IAAI,EAAE;IACnBO,OAAO,CAACC,IAAI,CAAC,CAAC,CAAC;EACjB;EAEAC,OAAO,CAACC,GAAG,CAAC,EAAE,CAAC,CAAC,CAAC;;EAEjB,MAAMC,UAAU,GAAG,MAAMjB,iBAAiB;EAC1C,MAAMkB,mBAAmB,GACvBZ,OAAO,CAACa,IAAI,KAAK,cAAc,IAAIb,OAAO,CAACa,IAAI,KAAK,YAAY,GAC5D,MAAMhB,0BAA0B,GAChCiB,SAAS;EAEf,MAAMC,MAAM,GAAG,IAAAC,uCAA6B,EAAC;IAC3CC,QAAQ,EAAE;MACRC,GAAG,EAAEP,UAAU;MACfQ,KAAK,EAAEP;IACT,CAAC;IACDQ,QAAQ,EAAEC,aAAI,CAACD,QAAQ,CAACpB,OAAO,CAACG,IAAI,IAAIH,OAAO,CAACsB,SAAS,CAAC;IAC1DtB;EACF,CAAC,CAAC;EAEF,MAAMuB,MAAM,GAAGF,aAAI,CAACG,OAAO,CAACjB,OAAO,CAACkB,GAAG,CAAC,CAAC,EAAEzB,OAAO,CAACsB,SAAS,CAAC;EAE7D,MAAMI,gBAAE,CAACC,MAAM,CAACJ,MAAM,CAAC;EAEvB,MAAMK,OAAO,GAAG,IAAAC,YAAG,EAAC,CAAC,CAACC,KAAK,CAAC,CAAC;EAE7B,IAAIf,MAAM,CAACgB,OAAO,IAAI,IAAI,EAAE;IAC1BH,OAAO,CAACI,IAAI,GAAG,wBAAwB;IAEvC,MAAM,IAAAC,2BAAkB,EAAC;MACvBC,IAAI,EAAEX,MAAM;MACZY,kBAAkB,EAAEnC,OAAO,CAACmC,kBAAkB;MAC9CpB;IACF,CAAC,CAAC;EACJ,CAAC,MAAM;IACL,IAAIf,OAAO,CAACmC,kBAAkB,EAAE;MAC9B1B,OAAO,CAAC2B,IAAI,CACV,GAAGC,cAAK,CAACC,MAAM,CACb,GACF,CAAC,kEACH,CAAC;IACH;EACF;EAEAV,OAAO,CAACI,IAAI,GAAG,eAAe;EAE9B,MAAM,IAAAO,wBAAc,EAACvC,OAAO,EAAEe,MAAM,EAAEQ,MAAM,CAAC;EAE7C,MAAMiB,eAAe,GAAG,MAAMd,gBAAE,CAACe,QAAQ,CAACpB,aAAI,CAACqB,IAAI,CAACnB,MAAM,EAAE,cAAc,CAAC,CAAC;EAE5E,IAAIR,MAAM,CAACgB,OAAO,IAAI,IAAI,EAAE;IAC1B,MAAM,IAAAY,mDAAqC,EAACH,eAAe,EAAEjB,MAAM,CAAC;EACtE;EAEA,IAAI,CAACvB,OAAO,CAAC4C,KAAK,EAAE;IAClBhB,OAAO,CAACI,IAAI,GAAG,mBAAmB;IAElC,MAAM,IAAAa,8BAAc,EAAC;MACnBC,KAAK,EAAE9C,OAAO,CAAC8C,KAAK;MACpB/B,MAAM;MACNmB,IAAI,EAAEX,MAAM;MACZwB,WAAW,EAAEP;IACf,CAAC,CAAC;EACJ;EAEA,MAAMQ,eAAe,GAAG,IAAAC,8BAAc,EAACjD,OAAO,CAAC;EAE/CwC,eAAe,CAAC,6BAA6B,CAAC,GAAGQ,eAAe;EAEhE,MAAMtB,gBAAE,CAACwB,SAAS,CAAC7B,aAAI,CAACqB,IAAI,CAACnB,MAAM,EAAE,cAAc,CAAC,EAAEiB,eAAe,EAAE;IACrEW,MAAM,EAAE;EACV,CAAC,CAAC;EAEF,MAAMC,mBAAmB,GAAGA,CAAA,KAC1BxB,OAAO,CAACyB,OAAO,CACb,mCAAmChB,cAAK,CAACC,MAAM,CAC7CjB,aAAI,CAACiC,QAAQ,CAAC/C,OAAO,CAACkB,GAAG,CAAC,CAAC,EAAEF,MAAM,CACrC,CAAC,KACH,CAAC;EAEH,IAAIvB,OAAO,CAAC4C,KAAK,EAAE;IACjB,MAAMW,cAAc,GAAG,MAAM,IAAAC,uCAAuB,EAAC,CAAC;IAEtD,IAAIC,UAAU,GAAG,KAAK;IAEtB,IAAI1C,MAAM,CAAC2C,OAAO,CAACC,YAAY,KAAK,eAAe,EAAE;MACnDF,UAAU,GAAG,MAAM,IAAAG,uCAAgC,EAAC7C,MAAM,CAAC;IAC7D;IAEA,MAAM8C,kBAAkB,GAAG,MAAM,IAAAC,uBAAgB,EAC/C/C,MAAM,EACNQ,MAAM,EACNgC,cACF,CAAC;IAEDH,mBAAmB,CAAC,CAAC;IAErB,IAAAW,8BAAsB,EAAC;MACrBhD,MAAM;MACNwC,cAAc;MACdM,kBAAkB;MAClBJ,UAAU;MACVlC;IACF,CAAC,CAAC;EACJ,CAAC,MAAM;IACLK,OAAO,CAACI,IAAI,GAAG,6BAA6B;IAE5C,IAAIgC,KAAK;IAET,IAAI;MACF,MAAMC,eAAe,GAAG,IAAIC,eAAe,CAAC,CAAC;;MAE7C;MACA;MACA;MACA,MAAMC,OAAO,CAACC,IAAI,CAAC,CACjB,IAAAC,qCAAsB,EAAC9C,MAAM,EAAE0C,eAAe,CAACK,MAAM,CAAC,EACtD,IAAIH,OAAO,CAAO,CAACI,QAAQ,EAAEC,MAAM,KAAK;QACtCR,KAAK,GAAGS,UAAU,CAAC,MAAM;UACvB,MAAMC,KAAK,GAAG,IAAIC,KAAK,CAAC,uCAAuC,CAAC;UAEhEV,eAAe,CAACW,KAAK,CAACF,KAAK,CAACG,OAAO,CAAC;UACpCL,MAAM,CAACE,KAAK,CAAC;QACf,CAAC,EAAE,IAAI,CAAC;MACV,CAAC,CAAC,CACH,CAAC;IACJ,CAAC,CAAC,OAAOA,KAAK,EAAE;MACd9C,OAAO,CAACQ,IAAI,CAAC,iCAAiC,CAAC;IACjD,CAAC,SAAS;MACR;MACA0C,YAAY,CAACd,KAAK,CAAC;IACrB;IAEAZ,mBAAmB,CAAC,CAAC;IAErB,IAAA2B,iCAAyB,EAAChE,MAAM,CAAC;EACnC;AACF;AAEAtB,MAAM,CAAC,CAAC,CAACuF,KAAK,CAAE1F,CAAU,IAAK;EAC7BmB,OAAO,CAACC,GAAG,CAAC,IAAI,CAAC;EACjBD,OAAO,CAACC,GAAG,CAAC2B,cAAK,CAAC4C,GAAG,CAAC,mDAAmD,CAAC,CAAC;EAC3ExE,OAAO,CAACiE,KAAK,CAACpF,CAAC,CAAC;EAEhBiB,OAAO,CAACC,IAAI,CAAC,CAAC,CAAC;AACjB,CAAC,CAAC","ignoreList":[]}
package/lib/inform.js CHANGED
@@ -6,7 +6,6 @@ Object.defineProperty(exports, "__esModule", {
6
6
  exports.printErrorHelp = printErrorHelp;
7
7
  exports.printLocalLibNextSteps = printLocalLibNextSteps;
8
8
  exports.printNonLocalLibNextSteps = printNonLocalLibNextSteps;
9
- exports.printUsedRNVersion = printUsedRNVersion;
10
9
  var _path = _interopRequireDefault(require("path"));
11
10
  var _dedent = _interopRequireDefault(require("dedent"));
12
11
  var _kleur = _interopRequireDefault(require("kleur"));
@@ -70,13 +69,4 @@ function printErrorHelp(message, error) {
70
69
  throw error;
71
70
  }
72
71
  }
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
72
  //# sourceMappingURL=inform.js.map
package/lib/inform.js.map CHANGED
@@ -1 +1 @@
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":[]}
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"],"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"],"mappings":";;;;;;;;AAAA,IAAAA,KAAA,GAAAC,sBAAA,CAAAC,OAAA;AACA,IAAAC,OAAA,GAAAF,sBAAA,CAAAC,OAAA;AAEA,IAAAE,MAAA,GAAAH,sBAAA,CAAAC,OAAA;AAA0B,SAAAD,uBAAAI,CAAA,WAAAA,CAAA,IAAAA,CAAA,CAAAC,UAAA,GAAAD,CAAA,KAAAE,OAAA,EAAAF,CAAA;AAEnB,SAASG,yBAAyBA,CAACC,MAA6B,EAAE;EACvE,MAAMC,SAAS,GAAG;IAChBC,GAAG,EAAE;MAAEC,IAAI,EAAE,KAAK;MAAEC,KAAK,EAAE;IAAO,CAAC;IACnCC,OAAO,EAAE;MAAEF,IAAI,EAAE,SAAS;MAAEC,KAAK,EAAE;IAAQ,CAAC;IAC5C,IAAIJ,MAAM,CAACM,OAAO,KAAK,MAAM,IAAIN,MAAM,CAACO,KAAK,CAACC,QAAQ,CAAC,MAAM,CAAC,GACzD;MAAEC,GAAG,EAAE;QAAEN,IAAI,EAAE,KAAK;QAAEC,KAAK,EAAE;MAAO;IAAE,CAAC,GACxC,IAAI;EACV,CAAU;EAEVM,OAAO,CAACC,GAAG,CACT,IAAAC,eAAM,EAAC;AACX,QAAQC,cAAK,CAACC,OAAO,CACb,GAAGD,cAAK,CAACE,IAAI,CAAC,aAAa,CAAC,mBAC9B,CAAC,GAAGF,cAAK,CAACG,IAAI,CAAC,GAAG,CAAC;AACzB;AACA,UAAUH,cAAK,CAACG,IAAI,CAAC,GAAG,CAAC;AACzB,QAAQC,MAAM,CAACC,OAAO,CAACjB,SAAS,CAAC,CACxBkB,GAAG,CACF,CAAC,CAACC,MAAM,EAAE;IAAEjB,IAAI;IAAEC;EAAM,CAAC,CAAC,KAAK;AACzC,QAAQS,cAAK,CAACT,KAAK,CAAC,CAAC,0BAA0BS,cAAK,CAACE,IAAI,CAACZ,IAAI,CAAC,EAAE,CAAC,GAAGU,cAAK,CAACG,IAAI,CACvE,GACF,CAAC;AACP;AACA,UAAUH,cAAK,CAACG,IAAI,CAAC,GAAG,CAAC,iBAAiBI,MAAM,EACxC,CAAC,CACAC,IAAI,CAAC,IAAI,CAAC;AACnB;AACA,QAAQR,cAAK,CAACS,MAAM,CACZ,OAAOT,cAAK,CAACE,IAAI,CAAC,iBAAiB,CAAC,+BACtC,CAAC;AACP,KAAK,CACH,CAAC;AACH;AAEO,SAASQ,sBAAsBA,CAAC;EACrCC,MAAM;EACNxB,MAAM;EACNyB,kBAAkB;EAClBC,UAAU;EACVC;AAOF,CAAC,EAAE;EACDjB,OAAO,CAACC,GAAG,CACT,IAAAC,eAAM,EAAC;AACX,QAAQC,cAAK,CAACC,OAAO,CACb,GAAGD,cAAK,CAACE,IAAI,CAAC,aAAa,CAAC,mBAC9B,CAAC,GAAGF,cAAK,CAACG,IAAI,CAAC,GAAG,CAAC;AACzB;AACA,QACQ,CAACS,kBAAkB,GACf,SAASZ,cAAK,CAACe,IAAI,CACjB,GAAGD,cAAc,UACnB,CAAC,wBAAwB,GACzB,yBAAyBd,cAAK,CAACe,IAAI,CACjCC,aAAI,CAACC,QAAQ,CAACC,OAAO,CAACC,GAAG,CAAC,CAAC,EAAER,MAAM,CACrC,CAAC,gCAAgC,KACpCxB,MAAM,CAACiC,OAAO,CAACC,YAAY,KAAK,eAAe,IAAI,CAACR,UAAU,GAC3D,SAASb,cAAK,CAACe,IAAI,CACjB,GAAGD,cAAc,iCACnB,CAAC,8BAA8B,GAC/B,EAAE,CAAC,GACP,SAASd,cAAK,CAACe,IAAI,CACjB,qCACF,CAAC,2CAA2C,GAC5C,SAASf,cAAK,CAACe,IAAI,CAAC,8BAA8B,CAAC,OAAOf,cAAK,CAACe,IAAI,CAClE,0BACF,CAAC,6BAA6B,GAC9B,iBAAiBf,cAAK,CAACe,IAAI,CACzB5B,MAAM,CAACiC,OAAO,CAACE,IACjB,CAAC,0BAA0B;AACnC;AACA,QACQtB,cAAK,CAACS,MAAM,CAAC,YAAY,CAAC;AAClC,KAAK,CACH,CAAC;AACH;AAEO,SAASc,cAAcA,CAACC,OAAe,EAAEC,KAAY,EAAE;EAC5D5B,OAAO,CAACC,GAAG,CAAC,IAAI,CAAC;EAEjB,IAAI0B,OAAO,EAAE;IACX3B,OAAO,CAACC,GAAG,CAAC0B,OAAO,CAAC;EACtB,CAAC,MAAM;IACL3B,OAAO,CAACC,GAAG,CACT,kCAAkCE,cAAK,CAACe,IAAI,CAAC,QAAQ,CAAC,mBACxD,CAAC;EACH;EAEA,IAAIU,KAAK,EAAE;IACT5B,OAAO,CAACC,GAAG,CAAC,IAAI,CAAC;IAEjB,MAAM2B,KAAK;EACb;AACF","ignoreList":[]}
package/lib/prompt.js CHANGED
@@ -11,7 +11,6 @@ var _validateNpmPackageName = _interopRequireDefault(require("validate-npm-packa
11
11
  var _spawn = require("./utils/spawn");
12
12
  var _githubUsername = _interopRequireDefault(require("github-username"));
13
13
  var _configureTools = require("./utils/configureTools");
14
- var _constants = require("./constants");
15
14
  function _interopRequireDefault(e) { return e && e.__esModule ? e : { default: e }; }
16
15
  const TYPE_CHOICES = [{
17
16
  title: 'Turbo module',
@@ -299,8 +298,7 @@ const prompt = exports.prompt = (0, _pigment.create)(['[name]'], {
299
298
  type: 'text',
300
299
  description: 'Version of React Native to use in the example app',
301
300
  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',
301
+ validate: input => input === 'latest' || /^\d+\.\d+(?:\.\d+)?(?:-.+)?$/.test(input) || 'Must be a valid version',
304
302
  skip: true
305
303
  }
306
304
  });
package/lib/prompt.js.map CHANGED
@@ -1 +1 @@
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":[]}
1
+ {"version":3,"file":"prompt.js","names":["_nodeFs","_interopRequireDefault","require","_nodePath","_pigment","_validateNpmPackageName","_spawn","_githubUsername","_configureTools","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"],"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';\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 validate: (input) =>\n input === 'latest' ||\n /^\\d+\\.\\d+(?:\\.\\d+)?(?:-.+)?$/.test(input) ||\n 'Must be a valid version',\n skip: true,\n },\n});\n"],"mappings":";;;;;;AAAA,IAAAA,OAAA,GAAAC,sBAAA,CAAAC,OAAA;AACA,IAAAC,SAAA,GAAAF,sBAAA,CAAAC,OAAA;AACA,IAAAE,QAAA,GAAAF,OAAA;AACA,IAAAG,uBAAA,GAAAJ,sBAAA,CAAAC,OAAA;AACA,IAAAI,MAAA,GAAAJ,OAAA;AACA,IAAAK,eAAA,GAAAN,sBAAA,CAAAC,OAAA;AACA,IAAAM,eAAA,GAAAN,OAAA;AAAyD,SAAAD,uBAAAQ,CAAA,WAAAA,CAAA,IAAAA,CAAA,CAAAC,UAAA,GAAAD,CAAA,KAAAE,OAAA,EAAAF,CAAA;AAezD,MAAMG,YAIH,GAAG,CACJ;EACEC,KAAK,EAAE,cAAc;EACrBC,KAAK,EAAE,cAAc;EACrBC,WAAW,EAAE;AACf,CAAC,EACD;EACEF,KAAK,EAAE,aAAa;EACpBC,KAAK,EAAE,aAAa;EACpBC,WAAW,EAAE;AACf,CAAC,EACD;EACEF,KAAK,EAAE,cAAc;EACrBC,KAAK,EAAE,cAAc;EACrBC,WAAW,EAAE;AACf,CAAC,EACD;EACEF,KAAK,EAAE,YAAY;EACnBC,KAAK,EAAE,YAAY;EACnBC,WAAW,EAAE;AACf,CAAC,EACD;EACEF,KAAK,EAAE,oBAAoB;EAC3BC,KAAK,EAAE,SAAS;EAChBC,WAAW,EAAE;AACf,CAAC,CACF;AAED,MAAMC,gBAKH,GAAG,CACJ;EACEH,KAAK,EAAE,gBAAgB;EACvBC,KAAK,EAAE,cAAc;EACrBG,KAAK,EAAE,CAAC,cAAc,EAAE,YAAY;AACtC,CAAC,EACD;EACEJ,KAAK,EAAE,sBAAsB;EAC7BC,KAAK,EAAE,aAAa;EACpBG,KAAK,EAAE,CAAC,cAAc,EAAE,aAAa;AACvC,CAAC,EACD;EACEJ,KAAK,EAAE,oBAAoB;EAC3BC,KAAK,EAAE,KAAK;EACZG,KAAK,EAAE,CAAC,cAAc;AACxB,CAAC,EACD;EACEJ,KAAK,EAAE,mCAAmC;EAC1CC,KAAK,EAAE,IAAI;EACXG,KAAK,EAAE,CAAC,SAAS;AACnB,CAAC,CACF;AAED,MAAMC,eAAe,GAAG,CACtB;EACEL,KAAK,EAAE,wBAAwB;EAC/BC,KAAK,EAAE,SAAS;EAChBC,WAAW,EAAE;AACf,CAAC,EACD;EACEF,KAAK,EAAE,mBAAmB;EAC1BC,KAAK,EAAE,MAAM;EACbC,WAAW,EAAE;AACf,CAAC,EACD;EACEF,KAAK,EAAE,uBAAuB;EAC9BC,KAAK,EAAE,UAAU;EACjBC,WAAW,EAAE;AACf,CAAC,CACO;AAEV,MAAMI,iBAAiB,GAAIC,KAAa,IAAK;EAC3C,IAAI,CAACA,KAAK,EAAE;IACV,OAAO,iBAAiB;EAC1B;EAEA,MAAMC,UAAU,GAAGC,iBAAI,CAACC,IAAI,CAACC,OAAO,CAACC,GAAG,CAAC,CAAC,EAAEL,KAAK,CAAC;EAElD,IAAI,CAACM,eAAE,CAACC,UAAU,CAACN,UAAU,CAAC,EAAE;IAC9B,OAAO,IAAI;EACb;EAEA,MAAMO,IAAI,GAAGF,eAAE,CAACG,QAAQ,CAACR,UAAU,CAAC;EAEpC,IAAI,CAACO,IAAI,CAACE,WAAW,CAAC,CAAC,EAAE;IACvB,OAAO,oCAAoC;EAC7C;EAEA,MAAMC,KAAK,GAAGL,eAAE,CAACM,WAAW,CAACX,UAAU,CAAC;EAExC,MAAMY,OAAO,GACXF,KAAK,CAACG,MAAM,KAAK,CAAC,IAAKH,KAAK,CAACG,MAAM,KAAK,CAAC,IAAIH,KAAK,CAAC,CAAC,CAAC,KAAK,MAAO;EAEnE,IAAI,CAACE,OAAO,EAAE;IACZ,OAAO,2CAA2C;EACpD;EAEA,OAAO,IAAI;AACb,CAAC;AAED,MAAME,YAAY,GAAG,MAAOC,GAAW,IAAkC;EACvE,IAAI;IACF,MAAMtB,KAAa,GAAG,MAAM,IAAAuB,YAAK,EAAC,KAAK,EAAE,CAAC,QAAQ,EAAE,OAAO,EAAED,GAAG,CAAC,CAAC;IAElE,OAAOtB,KAAK,CAACwB,IAAI,CAAC,CAAC;EACrB,CAAC,CAAC,MAAM;IACN,OAAOC,SAAS;EAClB;AACF,CAAC;AAED,MAAMC,WAAW,GAAGA,CAAA,KAAe;EACjC,IAAI;IACF,MAAMZ,IAAI,GAAGF,eAAE,CAACG,QAAQ,CAACP,iBAAI,CAACmB,OAAO,CAACjB,OAAO,CAACC,GAAG,CAAC,CAAC,EAAE,cAAc,CAAC,CAAC;IAErE,OAAOG,IAAI,CAACc,MAAM,CAAC,CAAC;EACtB,CAAC,CAAC,MAAM;IACN,OAAO,KAAK;EACd;AACF,CAAC;AAEM,MAAMC,MAAM,GAAAC,OAAA,CAAAD,MAAA,GAAG,IAAAE,eAAM,EAAC,CAAC,QAAQ,CAAC,EAAE;EACvCC,KAAK,EAAE;IACLC,IAAI,EAAE,SAAS;IACfhC,WAAW,EAAE,mCAAmC;IAChDiC,OAAO,EAAE,kFAAkF;IAC3FrC,OAAO,EAAE6B,WAAW;IACpBS,IAAI,EAAEA,CAAA,KAAM,CAACT,WAAW,CAAC;EAC3B,CAAC;EACDU,SAAS,EAAE;IACTH,IAAI,EAAE,MAAM;IACZhC,WAAW,EAAE,oCAAoC;IACjDiC,OAAO,EAAE,0CAA0C;IACnDrC,OAAO,EAAEA,CAAA,KAA0B;MACjC,MAAMwC,OAAO,GAAGR,MAAM,CAACS,IAAI,CAAC,CAAC;MAE7B,IAAID,OAAO,CAACE,IAAI,IAAI,IAAI,EAAE;QACxB,OAAOd,SAAS;MAClB;MAEA,IAAIY,OAAO,CAACL,KAAK,IAAI,CAACK,OAAO,CAACE,IAAI,EAAEC,QAAQ,CAAChC,iBAAI,CAACiC,GAAG,CAAC,EAAE;QACtD,OAAOjC,iBAAI,CAACC,IAAI,CAAC,SAAS,EAAE4B,OAAO,CAACE,IAAI,CAAC;MAC3C;MAEA,OAAOF,OAAO,CAACE,IAAI;IACrB,CAAC;IACDG,QAAQ,EAAErC,iBAAiB;IAC3B8B,IAAI,EAAEA,CAAA,KAAM;MACV,MAAME,OAAO,GAAGR,MAAM,CAACS,IAAI,CAAC,CAAC;MAE7B,IACED,OAAO,CAACE,IAAI,IACZ,CAACF,OAAO,CAACL,KAAK,IACd3B,iBAAiB,CAACgC,OAAO,CAACE,IAAI,CAAC,KAAK,IAAI,EACxC;QACA,OAAO,IAAI;MACb;MAEA,OAAO,KAAK;IACd;EACF,CAAC;EACDI,IAAI,EAAE;IACJV,IAAI,EAAE,MAAM;IACZhC,WAAW,EAAE,yBAAyB;IACtCiC,OAAO,EAAE,2CAA2C;IACpDrC,OAAO,EAAEA,CAAA,KAA0B;MACjC,MAAMwC,OAAO,GAAGR,MAAM,CAACS,IAAI,CAAC,CAAC;MAC7B,MAAMtC,KAAK,GACT,OAAOqC,OAAO,CAACD,SAAS,KAAK,QAAQ,GACjCC,OAAO,CAACD,SAAS,GACjBC,OAAO,CAACE,IAAI;MAElB,IAAI,OAAOvC,KAAK,KAAK,QAAQ,EAAE;QAC7B,OAAOyB,SAAS;MAClB;MAEA,MAAMmB,QAAQ,GAAGpC,iBAAI,CAACoC,QAAQ,CAAC5C,KAAK,CAAC;MAErC,IAAI,IAAA6C,+BAAkB,EAACD,QAAQ,CAAC,CAACE,mBAAmB,EAAE;QACpD,IAAI,mBAAmB,CAACC,IAAI,CAACH,QAAQ,CAAC,EAAE;UACtC,OAAOA,QAAQ;QACjB;QAEA,OAAO,gBAAgBA,QAAQ,EAAE;MACnC;MAEA,OAAOnB,SAAS;IAClB,CAAC;IACDiB,QAAQ,EAAGpC,KAAK,IACd,IAAAuC,+BAAkB,EAACvC,KAAK,CAAC,CAACwC,mBAAmB,IAC7C,kCAAkC;IACpCE,QAAQ,EAAE;EACZ,CAAC;EACD/C,WAAW,EAAE;IACXgC,IAAI,EAAE,MAAM;IACZhC,WAAW,EAAE,gCAAgC;IAC7CiC,OAAO,EAAE,qCAAqC;IAC9CQ,QAAQ,EAAGpC,KAAK,IAAK2C,OAAO,CAAC3C,KAAK,CAAC,IAAI,iBAAiB;IACxD0C,QAAQ,EAAE;EACZ,CAAC;EACDE,UAAU,EAAE;IACVjB,IAAI,EAAE,MAAM;IACZhC,WAAW,EAAE,4BAA4B;IACzCiC,OAAO,EAAE,yCAAyC;IAClDrC,OAAO,EAAE,MAAAA,CAAA,KAAYwB,YAAY,CAAC,WAAW,CAAC;IAC9CqB,QAAQ,EAAGpC,KAAK,IAAK2C,OAAO,CAAC3C,KAAK,CAAC,IAAI,iBAAiB;IACxD6B,IAAI,EAAEA,CAAA,KAAeN,MAAM,CAACS,IAAI,CAAC,CAAC,CAACN,KAAK,KAAK;EAC/C,CAAC;EACDmB,WAAW,EAAE;IACXlB,IAAI,EAAE,MAAM;IACZhC,WAAW,EAAE,qCAAqC;IAClDiC,OAAO,EAAE,kDAAkD;IAC3DrC,OAAO,EAAE,MAAAA,CAAA,KAAYwB,YAAY,CAAC,YAAY,CAAC;IAC/CqB,QAAQ,EAAGpC,KAAK,IACd,WAAW,CAACyC,IAAI,CAACzC,KAAK,CAAC,IAAI,+BAA+B;IAC5D6B,IAAI,EAAEA,CAAA,KAAeN,MAAM,CAACS,IAAI,CAAC,CAAC,CAACN,KAAK,KAAK;EAC/C,CAAC;EACDoB,SAAS,EAAE;IACTnB,IAAI,EAAE,MAAM;IACZhC,WAAW,EAAE,mCAAmC;IAChDiC,OAAO,EAAE,iDAAiD;IAC1DrC,OAAO,EAAE,MAAAA,CAAA,KAAY;MACnB,MAAMwC,OAAO,GAAGR,MAAM,CAACS,IAAI,CAAC,CAAC;MAE7B,IAAI,OAAOD,OAAO,CAACc,WAAW,KAAK,QAAQ,EAAE;QAC3C,OAAO1B,SAAS;MAClB;MAEA,IAAI;QACF,MAAM4B,QAAQ,GAAG,MAAM,IAAAC,uBAAc,EAACjB,OAAO,CAACc,WAAW,CAAC;QAE1D,IAAIE,QAAQ,EAAE;UACZ,OAAO,sBAAsBA,QAAQ,EAAE;QACzC;MACF,CAAC,CAAC,OAAO1D,CAAC,EAAE;QACV;MAAA;MAGF,OAAO8B,SAAS;IAClB,CAAC;IACDiB,QAAQ,EAAGpC,KAAK,IAAK,cAAc,CAACyC,IAAI,CAACzC,KAAK,CAAC,IAAI,qBAAqB;IACxE6B,IAAI,EAAEA,CAAA,KAAeN,MAAM,CAACS,IAAI,CAAC,CAAC,CAACN,KAAK,KAAK;EAC/C,CAAC;EACDuB,OAAO,EAAE;IACPtB,IAAI,EAAE,MAAM;IACZhC,WAAW,EAAE,+BAA+B;IAC5CiC,OAAO,EAAE,6CAA6C;IACtDrC,OAAO,EAAEA,CAAA,KAA0B;MACjC,MAAMwC,OAAO,GAAGR,MAAM,CAACS,IAAI,CAAC,CAAC;MAE7B,IACE,OAAOD,OAAO,CAACe,SAAS,KAAK,QAAQ,IACrC,OAAOf,OAAO,CAACM,IAAI,KAAK,QAAQ,IAChC,+BAA+B,CAACI,IAAI,CAACV,OAAO,CAACe,SAAS,CAAC,EACvD;QACA,OAAO,GAAGf,OAAO,CAACe,SAAS,IAAIf,OAAO,CAACM,IAAI,CACxCa,OAAO,CAAC,IAAI,EAAE,EAAE,CAAC,CACjBA,OAAO,CAAC,KAAK,EAAE,GAAG,CAAC,EAAE;MAC1B;MAEA,OAAO/B,SAAS;IAClB,CAAC;IACDiB,QAAQ,EAAGpC,KAAK,IAAK,cAAc,CAACyC,IAAI,CAACzC,KAAK,CAAC,IAAI,qBAAqB;IACxE6B,IAAI,EAAEA,CAAA,KAAeN,MAAM,CAACS,IAAI,CAAC,CAAC,CAACN,KAAK,KAAK;EAC/C,CAAC;EACDC,IAAI,EAAE;IACJA,IAAI,EAAE,QAAQ;IACdhC,WAAW,EAAE,qCAAqC;IAClDiC,OAAO,EAAE,8CAA8C;IACvDuB,OAAO,EAAE3D,YAAY;IACrBkD,QAAQ,EAAE;EACZ,CAAC;EACDU,SAAS,EAAE;IACTzB,IAAI,EAAE,QAAQ;IACdhC,WAAW,EAAE,kCAAkC;IAC/CiC,OAAO,EAAE,oDAAoD;IAC7DuB,OAAO,EAAEvD,gBAAgB,CAACyD,GAAG,CAAEC,MAAM,KAAM;MACzC7D,KAAK,EAAE6D,MAAM,CAAC7D,KAAK;MACnBC,KAAK,EAAE4D,MAAM,CAAC5D,KAAK;MACnBC,WAAW,EAAE2D,MAAM,CAAC3D,WAAW;MAC/BkC,IAAI,EAAEA,CAAA,KAAe;QACnB,MAAME,OAAO,GAAGR,MAAM,CAACS,IAAI,CAAC,CAAC;QAE7B,IAAIsB,MAAM,CAAC5D,KAAK,KAAK,KAAK,IAAIqC,OAAO,CAACL,KAAK,KAAK,IAAI,EAAE;UACpD,OAAO,IAAI;QACb;QAEA,IAAI,OAAOK,OAAO,CAACJ,IAAI,KAAK,QAAQ,EAAE;UACpC,OAAO,CAAC2B,MAAM,CAACzD,KAAK,CAACqC,QAAQ,CAACH,OAAO,CAACJ,IAAI,CAAC;QAC7C;QAEA,OAAO,KAAK;MACd;IACF,CAAC,CAAC,CAAC;IACHe,QAAQ,EAAE;EACZ,CAAC;EACDa,OAAO,EAAE;IACP5B,IAAI,EAAE,QAAQ;IACdhC,WAAW,EAAE,mCAAmC;IAChDiC,OAAO,EAAE,iDAAiD;IAC1DuB,OAAO,EAAErD,eAAe,CAACuD,GAAG,CAAEC,MAAM,KAAM;MACxC7D,KAAK,EAAE6D,MAAM,CAAC7D,KAAK;MACnBC,KAAK,EAAE4D,MAAM,CAAC5D,KAAK;MACnBC,WAAW,EAAE2D,MAAM,CAAC3D,WAAW;MAC/BkC,IAAI,EAAEA,CAAA,KAAe;QACnB,MAAME,OAAO,GAAGR,MAAM,CAACS,IAAI,CAAC,CAAC;QAE7B,IAAID,OAAO,CAACqB,SAAS,KAAK,KAAK,EAAE;UAC/B,OAAOE,MAAM,CAAC5D,KAAK,KAAK,SAAS;QACnC;QAEA,OAAO,KAAK;MACd;IACF,CAAC,CAAC,CAAC;IACHgD,QAAQ,EAAE,IAAI;IACdb,IAAI,EAAEA,CAAA,KAAe;MACnB,MAAME,OAAO,GAAGR,MAAM,CAACS,IAAI,CAAC,CAAC;MAE7B,OAAOD,OAAO,CAACL,KAAK,KAAK,IAAI;IAC/B;EACF,CAAC;EACD8B,KAAK,EAAE;IACL7B,IAAI,EAAE,aAAa;IACnBhC,WAAW,EAAE,+BAA+B;IAC5CiC,OAAO,EAAE,uCAAuC;IAChDuB,OAAO,EAAEM,MAAM,CAACC,OAAO,CAACC,+BAAe,CAAC,CAACN,GAAG,CAAC,CAAC,CAACrC,GAAG,EAAE4C,IAAI,CAAC,MAAM;MAC7DlE,KAAK,EAAEsB,GAAG;MACVvB,KAAK,EAAEmE,IAAI,CAAC3B,IAAI;MAChBtC,WAAW,EAAEiE,IAAI,CAACjE,WAAW;MAC7BkC,IAAI,EAAEA,CAAA,KAAe;QACnB,IAAI,WAAW,IAAI+B,IAAI,IAAIA,IAAI,CAACC,SAAS,EAAE;UACzC,OAAO,CAACD,IAAI,CAACC,SAAS,CAAC;YAAEN,OAAO,EAAEhC,MAAM,CAACS,IAAI,CAAC,CAAC,CAACuB;UAAQ,CAAC,CAAC;QAC5D;QAEA,OAAO,KAAK;MACd;IACF,CAAC,CAAC,CAAC;IACHhE,OAAO,EAAEA,CAAA,KAAgB;MACvB,MAAMwC,OAAO,GAAGR,MAAM,CAACS,IAAI,CAAC,CAAC;MAE7B,OAAOyB,MAAM,CAACC,OAAO,CAACC,+BAAe,CAAC,CACnCG,MAAM,CAAC,CAAC,GAAGF,IAAI,CAAC,KAAK;QACpB,IAAI,WAAW,IAAIA,IAAI,IAAIA,IAAI,CAACC,SAAS,EAAE;UACzC,OAAOD,IAAI,CAACC,SAAS,CAAC;YAAEN,OAAO,EAAExB,OAAO,CAACwB;UAAQ,CAAC,CAAC;QACrD;QAEA,OAAO,IAAI;MACb,CAAC,CAAC,CACDF,GAAG,CAAC,CAAC,CAACrC,GAAG,CAAC,KAAKA,GAAG,CAAC;IACxB,CAAC;IACD0B,QAAQ,EAAE,IAAI;IACdb,IAAI,EAAEA,CAAA,KAAe;MACnB,MAAME,OAAO,GAAGR,MAAM,CAACS,IAAI,CAAC,CAAC;MAE7B,OAAOD,OAAO,CAACL,KAAK,KAAK,IAAI;IAC/B;EACF,CAAC;EACDqC,kBAAkB,EAAE;IAClBpC,IAAI,EAAE,MAAM;IACZhC,WAAW,EAAE,mDAAmD;IAChEiC,OAAO,EACL,sEAAsE;IACxEQ,QAAQ,EAAGpC,KAAK,IACdA,KAAK,KAAK,QAAQ,IAClB,8BAA8B,CAACyC,IAAI,CAACzC,KAAK,CAAC,IAC1C,yBAAyB;IAC3B6B,IAAI,EAAE;EACR;AACF,CAAC,CAAC","ignoreList":[]}
package/package.json CHANGED
@@ -1,6 +1,6 @@
1
1
  {
2
2
  "name": "create-react-native-library",
3
- "version": "0.61.0",
3
+ "version": "0.62.0",
4
4
  "description": "CLI to scaffold React Native libraries",
5
5
  "keywords": [
6
6
  "react-native",
@@ -63,5 +63,5 @@
63
63
  "@types/fs-extra": "^11.0.4",
64
64
  "@types/validate-npm-package-name": "^4.0.2"
65
65
  },
66
- "gitHead": "affd1b7af7755a350364a44ba5e26ca2164c2099"
66
+ "gitHead": "664d3db3bb32714c0ab0613eeb087f21053f63a6"
67
67
  }