create-react-native-library 0.54.6 → 0.54.8
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/exampleApp/generateExampleApp.js +3 -1
- package/lib/exampleApp/generateExampleApp.js.map +1 -1
- package/lib/index.js +3 -2
- package/lib/index.js.map +1 -1
- package/lib/input.js.map +1 -1
- package/package.json +2 -2
- package/templates/common/$.github/workflows/ci.yml +6 -6
- package/templates/nitro-module/android/src/main/java/com/margelo/nitro/{%- project.package_dir %}/{%- project.name %}Package.kt +2 -2
|
@@ -12,7 +12,7 @@ var _sortObjectKeys = _interopRequireDefault(require("../utils/sortObjectKeys"))
|
|
|
12
12
|
var _spawn = require("../utils/spawn");
|
|
13
13
|
function _interopRequireDefault(e) { return e && e.__esModule ? e : { default: e }; }
|
|
14
14
|
const FILES_TO_DELETE = ['__tests__', '.buckconfig', '.eslintrc.js', '.flowconfig', '.git', '.gitignore', '.prettierrc.js', 'App.js', 'App.tsx', 'index.js', 'tsconfig.json'];
|
|
15
|
-
const PACKAGES_TO_REMOVE = ['@react-native/eslint-config', '@react-native/new-app-screen', '@tsconfig/react-native', '@types/jest', '@types/react-test-renderer', '@typescript-eslint/eslint-plugin', '@typescript-eslint/parser', 'babel-jest', 'eslint', 'jest', 'prettier', 'react-test-renderer', 'typescript'];
|
|
15
|
+
const PACKAGES_TO_REMOVE = ['@react-native/eslint-config', '@react-native/new-app-screen', '@tsconfig/react-native', '@types/jest', '@types/react-test-renderer', '@typescript-eslint/eslint-plugin', '@typescript-eslint/parser', 'babel-jest', 'eslint', 'jest', 'prettier', 'react-test-renderer', 'typescript', 'react-native-safe-area-context'];
|
|
16
16
|
const PACKAGES_TO_ADD_WEB = {
|
|
17
17
|
'@expo/metro-runtime': '~5.0.4',
|
|
18
18
|
'react-dom': '19.1.0',
|
|
@@ -112,6 +112,8 @@ async function generateExampleApp({
|
|
|
112
112
|
PACKAGES_TO_REMOVE.forEach(name => {
|
|
113
113
|
// eslint-disable-next-line @typescript-eslint/no-dynamic-delete
|
|
114
114
|
delete devDependencies[name];
|
|
115
|
+
// eslint-disable-next-line @typescript-eslint/no-dynamic-delete
|
|
116
|
+
delete dependencies[name];
|
|
115
117
|
});
|
|
116
118
|
const PACKAGES_TO_ADD_DEV = {
|
|
117
119
|
'react-native-builder-bob': `^${config.versions.bob}`,
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"generateExampleApp.js","names":["_fsExtra","_interopRequireDefault","require","_getLatestVersion","_https","_path","_sortObjectKeys","_spawn","e","__esModule","default","FILES_TO_DELETE","PACKAGES_TO_REMOVE","PACKAGES_TO_ADD_WEB","generateExampleApp","config","root","reactNativeVersion","directory","path","join","args","example","project","name","package","matchedReactNativeVersion","test","getLatestVersion","range","Error","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","moduleConfig","viewConfig","packagesToAddNitro","nitro","sdkVersion","expo","split","replace","bundledNativeModules","Promise","resolve","reject","https","get","res","data","on","chunk","JSON","parse","entries","version","web","field","sortObjectKeys","gradleProperties","readFile","podfile","writeFile","includes"],"sources":["../../src/exampleApp/generateExampleApp.ts"],"sourcesContent":["import fs from 'fs-extra';\nimport getLatestVersion from 'get-latest-version';\nimport https from 'https';\nimport path from 'path';\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];\n\nconst PACKAGES_TO_ADD_WEB = {\n '@expo/metro-runtime': '~5.0.4',\n 'react-dom': '19.1.0',\n 'react-native-web': '~0.21.1',\n};\n\nexport default async function generateExampleApp({\n config,\n root,\n reactNativeVersion = 'latest',\n}: {\n config: TemplateConfiguration;\n root: string;\n reactNativeVersion?: string;\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 'none': {\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 '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 === 'vanilla') {\n Object.assign(scripts, SCRIPTS_TO_ADD);\n } else 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 });\n\n const PACKAGES_TO_ADD_DEV = {\n 'react-native-builder-bob': `^${config.versions.bob}`,\n 'react-native-monorepo-config': `^0.1.9`,\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 Object.entries(PACKAGES_TO_ADD_WEB).forEach(([name, version]) => {\n dependencies[name] = bundledNativeModules[name] || version;\n });\n\n scripts.web = 'expo start --web';\n\n const app = await fs.readJSON(path.join(directory, 'app.json'));\n\n app.expo.android = app.expo.android || {};\n app.expo.android.package = `${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 !== 'expo') {\n let gradleProperties = await fs.readFile(\n path.join(directory, 'android', 'gradle.properties'),\n 'utf8'\n );\n\n // Disable Jetifier.\n // Remove this when the app template is updated.\n gradleProperties = gradleProperties.replace(\n 'android.enableJetifier=true',\n 'android.enableJetifier=false'\n );\n\n // Enable new arch for iOS and Android\n // iOS\n // Add ENV['RCT_NEW_ARCH_ENABLED'] = 1 on top of example/ios/Podfile\n const podfile = await fs.readFile(\n path.join(directory, 'ios', 'Podfile'),\n 'utf8'\n );\n\n await fs.writeFile(\n path.join(directory, 'ios', 'Podfile'),\n \"ENV['RCT_NEW_ARCH_ENABLED'] = '1'\\n\\n\" + podfile\n );\n\n // Android\n // Make sure newArchEnabled=true is present in android/gradle.properties\n if (gradleProperties.split('\\n').includes('#newArchEnabled=true')) {\n gradleProperties = gradleProperties.replace(\n '#newArchEnabled=true',\n 'newArchEnabled=true'\n );\n } else if (gradleProperties.split('\\n').includes('newArchEnabled=false')) {\n gradleProperties = gradleProperties.replace(\n 'newArchEnabled=false',\n 'newArchEnabled=true'\n );\n } else if (!gradleProperties.split('\\n').includes('newArchEnabled=true')) {\n gradleProperties += '\\nnewArchEnabled=true';\n }\n\n await fs.writeFile(\n path.join(directory, 'android', 'gradle.properties'),\n gradleProperties\n );\n }\n}\n"],"mappings":"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","ignoreList":[]}
|
|
1
|
+
{"version":3,"file":"generateExampleApp.js","names":["_fsExtra","_interopRequireDefault","require","_getLatestVersion","_https","_path","_sortObjectKeys","_spawn","e","__esModule","default","FILES_TO_DELETE","PACKAGES_TO_REMOVE","PACKAGES_TO_ADD_WEB","generateExampleApp","config","root","reactNativeVersion","directory","path","join","args","example","project","name","package","matchedReactNativeVersion","test","getLatestVersion","range","Error","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","moduleConfig","viewConfig","packagesToAddNitro","nitro","sdkVersion","expo","split","replace","bundledNativeModules","Promise","resolve","reject","https","get","res","data","on","chunk","JSON","parse","entries","version","web","field","sortObjectKeys","gradleProperties","readFile","podfile","writeFile","includes"],"sources":["../../src/exampleApp/generateExampleApp.ts"],"sourcesContent":["import fs from 'fs-extra';\nimport getLatestVersion from 'get-latest-version';\nimport https from 'https';\nimport path from 'path';\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_WEB = {\n '@expo/metro-runtime': '~5.0.4',\n 'react-dom': '19.1.0',\n 'react-native-web': '~0.21.1',\n};\n\nexport default async function generateExampleApp({\n config,\n root,\n reactNativeVersion = 'latest',\n}: {\n config: TemplateConfiguration;\n root: string;\n reactNativeVersion?: string;\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 'none': {\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 '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 === 'vanilla') {\n Object.assign(scripts, SCRIPTS_TO_ADD);\n } else 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': `^0.1.9`,\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 Object.entries(PACKAGES_TO_ADD_WEB).forEach(([name, version]) => {\n dependencies[name] = bundledNativeModules[name] || version;\n });\n\n scripts.web = 'expo start --web';\n\n const app = await fs.readJSON(path.join(directory, 'app.json'));\n\n app.expo.android = app.expo.android || {};\n app.expo.android.package = `${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 !== 'expo') {\n let gradleProperties = await fs.readFile(\n path.join(directory, 'android', 'gradle.properties'),\n 'utf8'\n );\n\n // Disable Jetifier.\n // Remove this when the app template is updated.\n gradleProperties = gradleProperties.replace(\n 'android.enableJetifier=true',\n 'android.enableJetifier=false'\n );\n\n // Enable new arch for iOS and Android\n // iOS\n // Add ENV['RCT_NEW_ARCH_ENABLED'] = 1 on top of example/ios/Podfile\n const podfile = await fs.readFile(\n path.join(directory, 'ios', 'Podfile'),\n 'utf8'\n );\n\n await fs.writeFile(\n path.join(directory, 'ios', 'Podfile'),\n \"ENV['RCT_NEW_ARCH_ENABLED'] = '1'\\n\\n\" + podfile\n );\n\n // Android\n // Make sure newArchEnabled=true is present in android/gradle.properties\n if (gradleProperties.split('\\n').includes('#newArchEnabled=true')) {\n gradleProperties = gradleProperties.replace(\n '#newArchEnabled=true',\n 'newArchEnabled=true'\n );\n } else if (gradleProperties.split('\\n').includes('newArchEnabled=false')) {\n gradleProperties = gradleProperties.replace(\n 'newArchEnabled=false',\n 'newArchEnabled=true'\n );\n } else if (!gradleProperties.split('\\n').includes('newArchEnabled=true')) {\n gradleProperties += '\\nnewArchEnabled=true';\n }\n\n await fs.writeFile(\n path.join(directory, 'android', 'gradle.properties'),\n gradleProperties\n );\n }\n}\n"],"mappings":"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","ignoreList":[]}
|
package/lib/index.js
CHANGED
|
@@ -17,11 +17,12 @@ var _local = require("./utils/local");
|
|
|
17
17
|
var _packageManager = require("./utils/packageManager");
|
|
18
18
|
var _prompt = require("./utils/prompt");
|
|
19
19
|
var _resolveNpmPackageVersion = require("./utils/resolveNpmPackageVersion");
|
|
20
|
+
var _helpers = require("yargs/helpers");
|
|
20
21
|
function _interopRequireDefault(e) { return e && e.__esModule ? e : { default: e }; }
|
|
21
|
-
void _yargs.default.command('$0 [name]', 'create a react native library', _input.acceptedArgs, create).demandCommand().recommendCommands().fail(_inform.printErrorHelp).parserConfiguration({
|
|
22
|
+
void (0, _yargs.default)((0, _helpers.hideBin)(process.argv)).command('$0 [name]', 'create a react native library', _input.acceptedArgs, create).demandCommand().recommendCommands().fail(_inform.printErrorHelp).parserConfiguration({
|
|
22
23
|
// don't pass kebab-case args to handler.
|
|
23
24
|
'strip-dashed': true
|
|
24
|
-
}).
|
|
25
|
+
}).parse();
|
|
25
26
|
async function create(_argv) {
|
|
26
27
|
// eslint-disable-next-line @typescript-eslint/no-unused-vars
|
|
27
28
|
const {
|
package/lib/index.js.map
CHANGED
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"index.js","names":["_fsExtra","_interopRequireDefault","require","_kleur","_ora","_path","_yargs","_constants","_dependencies","_generateExampleApp","_inform","_input","_template","_assert","_initialCommit","_local","_packageManager","_prompt","_resolveNpmPackageVersion","e","__esModule","default","yargs","command","acceptedArgs","create","demandCommand","recommendCommands","fail","printErrorHelp","parserConfiguration","strict","argv","_argv","_","$0","bobVersionPromise","resolveNpmPackageVersion","FALLBACK_BOB_VERSION","nitroModulesVersionPromise","FALLBACK_NITRO_MODULES_VERSION","assertNpxExists","questions","createQuestions","answers","prompt","interactive","bobVersion","nitroModulesVersion","type","undefined","config","generateTemplateConfiguration","versions","bob","nitro","basename","path","name","directory","folder","resolve","process","cwd","fs","mkdirp","reactNativeVersion","SUPPORTED_REACT_NATIVE_VERSION","printUsedRNVersion","spinner","ora","start","example","text","generateExampleApp","root","applyTemplates","rootPackageJson","readJson","join","alignDependencyVersionsWithExampleApp","libraryMetadata","createMetadata","writeJson","spaces","printSuccessMessage","succeed","kleur","yellow","relative","local","packageManager","determinePackageManager","addedNitro","project","moduleConfig","addNitroDependencyToLocalLibrary","linkedLocalLibrary","linkLocalLibrary","printLocalLibNextSteps","abortController","AbortController","Promise","race","createInitialGitCommit","signal","_resolve","reject","setTimeout","error","Error","abort","message","warn","printNonLocalLibNextSteps"],"sources":["../src/index.ts"],"sourcesContent":["import fs from 'fs-extra';\nimport kleur from 'kleur';\nimport ora from 'ora';\nimport path from 'path';\nimport yargs from 'yargs';\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 printErrorHelp,\n printLocalLibNextSteps,\n printNonLocalLibNextSteps,\n printUsedRNVersion,\n} from './inform';\nimport {\n acceptedArgs,\n createMetadata,\n createQuestions,\n type Answers,\n} from './input';\nimport { applyTemplates, generateTemplateConfiguration } from './template';\nimport { assertNpxExists } from './utils/assert';\nimport { createInitialGitCommit } from './utils/initialCommit';\nimport {\n addNitroDependencyToLocalLibrary,\n linkLocalLibrary,\n} from './utils/local';\nimport { determinePackageManager } from './utils/packageManager';\nimport { prompt } from './utils/prompt';\nimport { resolveNpmPackageVersion } from './utils/resolveNpmPackageVersion';\n\ntype Args = Partial<Answers> & {\n $0: string;\n [key: string]: unknown;\n};\n\nvoid yargs\n .command('$0 [name]', 'create a react native library', acceptedArgs, create)\n .demandCommand()\n .recommendCommands()\n .fail(printErrorHelp)\n .parserConfiguration({\n // don't pass kebab-case args to handler.\n 'strip-dashed': true,\n })\n .strict().argv;\n\nasync function create(_argv: Args) {\n // eslint-disable-next-line @typescript-eslint/no-unused-vars\n const { _, $0, ...argv } = _argv;\n\n // Prefetch bob version in background while asking questions\n const 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 questions = await createQuestions(argv);\n\n const answers = await prompt<Answers, typeof argv>(questions, argv, {\n interactive: argv.interactive,\n });\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 !== 'none') {\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 !== 'none') {\n await alignDependencyVersionsWithExampleApp(rootPackageJson, folder);\n }\n\n const libraryMetadata = createMetadata(answers);\n\n rootPackageJson['create-react-native-library'] = libraryMetadata;\n\n await fs.writeJson(path.join(folder, 'package.json'), rootPackageJson, {\n spaces: 2,\n });\n\n 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 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 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 }\n\n printSuccessMessage();\n\n printNonLocalLibNextSteps(config);\n }\n}\n"],"mappings":"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","ignoreList":[]}
|
|
1
|
+
{"version":3,"file":"index.js","names":["_fsExtra","_interopRequireDefault","require","_kleur","_ora","_path","_yargs","_constants","_dependencies","_generateExampleApp","_inform","_input","_template","_assert","_initialCommit","_local","_packageManager","_prompt","_resolveNpmPackageVersion","_helpers","e","__esModule","default","yargs","hideBin","process","argv","command","acceptedArgs","create","demandCommand","recommendCommands","fail","printErrorHelp","parserConfiguration","parse","_argv","_","$0","bobVersionPromise","resolveNpmPackageVersion","FALLBACK_BOB_VERSION","nitroModulesVersionPromise","FALLBACK_NITRO_MODULES_VERSION","assertNpxExists","questions","createQuestions","answers","prompt","interactive","bobVersion","nitroModulesVersion","type","undefined","config","generateTemplateConfiguration","versions","bob","nitro","basename","path","name","directory","folder","resolve","cwd","fs","mkdirp","reactNativeVersion","SUPPORTED_REACT_NATIVE_VERSION","printUsedRNVersion","spinner","ora","start","example","text","generateExampleApp","root","applyTemplates","rootPackageJson","readJson","join","alignDependencyVersionsWithExampleApp","libraryMetadata","createMetadata","writeJson","spaces","printSuccessMessage","succeed","kleur","yellow","relative","local","packageManager","determinePackageManager","addedNitro","project","moduleConfig","addNitroDependencyToLocalLibrary","linkedLocalLibrary","linkLocalLibrary","printLocalLibNextSteps","abortController","AbortController","Promise","race","createInitialGitCommit","signal","_resolve","reject","setTimeout","error","Error","abort","message","warn","printNonLocalLibNextSteps"],"sources":["../src/index.ts"],"sourcesContent":["import fs from 'fs-extra';\nimport kleur from 'kleur';\nimport ora from 'ora';\nimport path from 'path';\nimport yargs from 'yargs';\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 printErrorHelp,\n printLocalLibNextSteps,\n printNonLocalLibNextSteps,\n printUsedRNVersion,\n} from './inform';\nimport {\n acceptedArgs,\n createMetadata,\n createQuestions,\n type Answers,\n} from './input';\nimport { applyTemplates, generateTemplateConfiguration } from './template';\nimport { assertNpxExists } from './utils/assert';\nimport { createInitialGitCommit } from './utils/initialCommit';\nimport {\n addNitroDependencyToLocalLibrary,\n linkLocalLibrary,\n} from './utils/local';\nimport { determinePackageManager } from './utils/packageManager';\nimport { prompt } from './utils/prompt';\nimport { resolveNpmPackageVersion } from './utils/resolveNpmPackageVersion';\nimport { hideBin } from 'yargs/helpers';\n\ntype Args = Partial<Answers> & {\n $0: string;\n [key: string]: unknown;\n};\n\nvoid yargs(hideBin(process.argv))\n .command('$0 [name]', 'create a react native library', acceptedArgs, create)\n .demandCommand()\n .recommendCommands()\n .fail(printErrorHelp)\n .parserConfiguration({\n // don't pass kebab-case args to handler.\n 'strip-dashed': true,\n })\n .parse();\n\nasync function create(_argv: Args) {\n // eslint-disable-next-line @typescript-eslint/no-unused-vars\n const { _, $0, ...argv } = _argv;\n\n // Prefetch bob version in background while asking questions\n const 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 questions = await createQuestions(argv);\n\n const answers = await prompt<Answers, typeof argv>(questions, argv, {\n interactive: argv.interactive,\n });\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 !== 'none') {\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 !== 'none') {\n await alignDependencyVersionsWithExampleApp(rootPackageJson, folder);\n }\n\n const libraryMetadata = createMetadata(answers);\n\n rootPackageJson['create-react-native-library'] = libraryMetadata;\n\n await fs.writeJson(path.join(folder, 'package.json'), rootPackageJson, {\n spaces: 2,\n });\n\n 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 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 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 }\n\n printSuccessMessage();\n\n printNonLocalLibNextSteps(config);\n }\n}\n"],"mappings":"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","ignoreList":[]}
|
package/lib/input.js.map
CHANGED
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"input.js","names":["_fsExtra","_interopRequireDefault","require","_githubUsername","_path","_validateNpmPackageName","_package","_constants","_spawn","e","__esModule","default","LANGUAGE_CHOICES","title","value","types","EXAMPLE_CHOICES","description","disabled","process","env","CRNL_ENABLE_TEST_APP","filter","choice","TYPE_CHOICES","acceptedArgs","exports","type","choices","map","SUPPORTED_REACT_NATIVE_VERSION","createQuestions","name","local","fullname","email","spawn","questions","fs","pathExists","path","join","cwd","message","initial","_","answers","includes","sep","validate","input","targetPath","pathExistsSync","stat","statSync","isDirectory","files","readdirSync","isEmpty","length","basename","directory","validateNpmPackage","validForNewPackages","test","Boolean","authorEmail","username","githubUsername","authorUrl","slug","replace","values","createMetadata","ignoredAnswers","libraryMetadata","Object","fromEntries","entries","answer","version"],"sources":["../src/input.ts"],"sourcesContent":["import fs from 'fs-extra';\nimport githubUsername from 'github-username';\nimport path from 'path';\nimport validateNpmPackage from 'validate-npm-package-name';\nimport type yargs from 'yargs';\nimport { version } from '../package.json';\nimport { SUPPORTED_REACT_NATIVE_VERSION } from './constants';\nimport type { Question } from './utils/prompt';\nimport { spawn } from './utils/spawn';\n\nexport type ProjectLanguages = 'kotlin-objc' | 'kotlin-swift' | 'js';\n\nexport type ProjectType =\n | 'turbo-module'\n | 'fabric-view'\n | 'nitro-module'\n | 'nitro-view'\n | 'library';\n\nconst LANGUAGE_CHOICES: {\n title: string;\n value: ProjectLanguages;\n types: ProjectType[];\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: 'JavaScript for Android, iOS & Web',\n value: 'js',\n types: ['library'],\n },\n];\n\nconst EXAMPLE_CHOICES = (\n [\n {\n title: 'App with Community CLI',\n value: 'vanilla',\n description: \"provides access to app's native code\",\n disabled: false,\n },\n {\n title: 'Test App by Microsoft',\n value: 'test-app',\n description: \"app's native code is abstracted away\",\n // Test App currently doesn't work with React Native 0.79.2\n // due to missing `Gemfile` in the template\n disabled: !process.env.CRNL_ENABLE_TEST_APP,\n },\n {\n title: 'App with Expo CLI',\n value: 'expo',\n description: 'managed expo app with web support',\n disabled: false,\n },\n ] as const\n).filter((choice) => !choice.disabled);\n\nconst TYPE_CHOICES: {\n title: string;\n value: ProjectType;\n description: string;\n}[] = [\n {\n title: 'Turbo module',\n value: 'turbo-module',\n description: 'integration for native APIs to JS',\n },\n {\n title: 'Fabric view',\n value: 'fabric-view',\n description: 'integration for native views to JS',\n },\n {\n title: 'Nitro module',\n value: 'nitro-module',\n description:\n 'type-safe, fast integration for native APIs to JS (experimental)',\n },\n {\n title: 'Nitro view',\n value: 'nitro-view',\n description:\n 'integration for native views to JS using nitro for prop parsing (experimental)',\n },\n {\n title: 'JavaScript library',\n value: 'library',\n description: 'supports Expo Go and Web',\n },\n];\n\nexport const acceptedArgs = {\n 'slug': {\n description: 'Name of the npm package',\n type: 'string',\n },\n 'description': {\n description: 'Description of the npm package',\n type: 'string',\n },\n 'author-name': {\n description: 'Name of the package author',\n type: 'string',\n },\n 'author-email': {\n description: 'Email address of the package author',\n type: 'string',\n },\n 'author-url': {\n description: 'URL for the package author',\n type: 'string',\n },\n 'repo-url': {\n description: 'URL for the repository',\n type: 'string',\n },\n 'languages': {\n description: 'Languages you want to use',\n choices: LANGUAGE_CHOICES.map(({ value }) => value),\n },\n 'type': {\n description: 'Type of library you want to develop',\n choices: TYPE_CHOICES.map(({ value }) => value),\n },\n 'react-native-version': {\n description: 'Version of React Native to use',\n type: 'string',\n default: SUPPORTED_REACT_NATIVE_VERSION,\n },\n 'local': {\n description: 'Whether to create a local library',\n type: 'boolean',\n },\n 'example': {\n description: 'Type of the example app to create',\n type: 'string',\n choices: EXAMPLE_CHOICES.map(({ value }) => value),\n },\n 'interactive': {\n description: 'Whether to run in interactive mode',\n type: 'boolean',\n },\n} as const satisfies Record<string, yargs.Options>;\n\nexport type ExampleApp = 'none' | 'test-app' | 'expo' | 'vanilla';\n\ntype PromptAnswers = {\n directory: string;\n slug: string;\n description: string;\n authorName: string;\n authorEmail: string;\n authorUrl: string;\n repoUrl: string;\n languages: ProjectLanguages;\n type: ProjectType;\n example: ExampleApp;\n local: boolean;\n};\n\nexport type Answers = PromptAnswers & {\n name?: string;\n reactNativeVersion?: string;\n interactive?: boolean;\n};\n\nexport async function createQuestions({\n name,\n local,\n}: {\n name?: string;\n local?: boolean;\n}) {\n let fullname, email;\n\n try {\n fullname = await spawn('git', ['config', '--get', 'user.name']);\n email = await spawn('git', ['config', '--get', 'user.email']);\n } catch (e) {\n // Ignore error\n }\n\n const questions: Question<keyof PromptAnswers>[] = [\n {\n type:\n local == null &&\n (await fs.pathExists(path.join(process.cwd(), 'package.json')))\n ? 'confirm'\n : null,\n name: 'local',\n message: `Looks like you're under a project folder. Do you want to create a local library?`,\n initial: local,\n default: false,\n },\n {\n type: (_, answers) => (name && !(answers.local ?? local) ? null : 'text'),\n name: 'directory',\n message: `Where do you want to create the library?`,\n initial: (_, answers) => {\n if ((answers.local ?? local) && name && !name?.includes(path.sep)) {\n return path.join('modules', name);\n }\n\n return name ?? '';\n },\n validate: (input) => {\n if (!input) {\n return 'Cannot be empty';\n }\n\n const targetPath = path.join(process.cwd(), input);\n\n if (fs.pathExistsSync(targetPath)) {\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';\n }\n }\n\n return true;\n },\n default: name,\n },\n {\n type: 'text',\n name: 'slug',\n message: 'What is the name of the npm package?',\n initial: (_, answers) => {\n const basename = path.basename(\n typeof answers.directory === 'string'\n ? answers.directory\n : (name ?? '')\n );\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 '';\n },\n validate: (input) =>\n validateNpmPackage(input).validForNewPackages ||\n 'Must be a valid npm package name',\n },\n {\n type: 'text',\n name: 'description',\n message: 'What is the description for the package?',\n validate: (input) => Boolean(input) || 'Cannot be empty',\n },\n {\n type: (_, answers) => ((answers.local ?? local) ? null : 'text'),\n name: 'authorName',\n message: 'What is the name of package author?',\n initial: fullname,\n validate: (input) => Boolean(input) || 'Cannot be empty',\n },\n {\n type: (_, answers) => ((answers.local ?? local) ? null : 'text'),\n name: 'authorEmail',\n message: 'What is the email address for the package author?',\n initial: email,\n validate: (input) =>\n /^\\S+@\\S+$/.test(input) || 'Must be a valid email address',\n },\n {\n type: (_, answers) => ((answers.local ?? local) ? null : 'text'),\n name: 'authorUrl',\n message: 'What is the URL for the package author?',\n initial: async (_, answers) => {\n if (typeof answers.authorEmail !== 'string') {\n return '';\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 '';\n },\n validate: (input) => /^https?:\\/\\//.test(input) || 'Must be a valid URL',\n },\n {\n type: (_, answers) => ((answers.local ?? local) ? null : 'text'),\n name: 'repoUrl',\n message: 'What is the URL for the repository?',\n initial: (_, answers) => {\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 '';\n },\n validate: (input) => /^https?:\\/\\//.test(input) || 'Must be a valid URL',\n },\n {\n type: 'select',\n name: 'type',\n message: 'What type of library do you want to develop?',\n choices: TYPE_CHOICES,\n },\n {\n type: 'select',\n name: 'languages',\n message: 'Which languages do you want to use?',\n choices: (_, values) => {\n return LANGUAGE_CHOICES.filter((choice) => {\n if (choice.types && typeof values.type === 'string') {\n // @ts-expect-error `includes doesn't support checking arbitrary types\n return choice.types.includes(values.type);\n }\n\n return true;\n });\n },\n },\n {\n type: 'select',\n name: 'example',\n message: 'What type of example app do you want to create?',\n choices: (_, values) => {\n if (local) {\n return [\n {\n title: 'None',\n value: 'none',\n },\n ];\n }\n\n return EXAMPLE_CHOICES.filter((choice) => {\n if (values.type) {\n return values.type === 'library'\n ? choice.value === 'expo'\n : choice.value !== 'expo';\n }\n\n return true;\n });\n },\n },\n ];\n\n return questions;\n}\n\nexport function createMetadata(answers: Partial<PromptAnswers>) {\n // Some of the passed args can already be derived from the generated package.json file.\n const ignoredAnswers: (keyof Answers)[] = [\n 'name',\n 'directory',\n 'slug',\n 'description',\n 'authorName',\n 'authorEmail',\n 'authorUrl',\n 'repoUrl',\n 'example',\n 'reactNativeVersion',\n 'local',\n 'interactive',\n ];\n\n type AnswerEntries<T extends keyof PromptAnswers = keyof PromptAnswers> = [\n T,\n PromptAnswers[T],\n ][];\n\n const libraryMetadata = Object.fromEntries(\n // eslint-disable-next-line @typescript-eslint/no-unsafe-type-assertion\n (Object.entries(answers) as AnswerEntries).filter(\n ([answer]) => !ignoredAnswers.includes(answer)\n )\n );\n\n libraryMetadata.version = version;\n\n return libraryMetadata;\n}\n"],"mappings":"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","ignoreList":[]}
|
|
1
|
+
{"version":3,"file":"input.js","names":["_fsExtra","_interopRequireDefault","require","_githubUsername","_path","_validateNpmPackageName","_package","_constants","_spawn","e","__esModule","default","LANGUAGE_CHOICES","title","value","types","EXAMPLE_CHOICES","description","disabled","process","env","CRNL_ENABLE_TEST_APP","filter","choice","TYPE_CHOICES","acceptedArgs","exports","type","choices","map","SUPPORTED_REACT_NATIVE_VERSION","createQuestions","name","local","fullname","email","spawn","questions","fs","pathExists","path","join","cwd","message","initial","_","answers","includes","sep","validate","input","targetPath","pathExistsSync","stat","statSync","isDirectory","files","readdirSync","isEmpty","length","basename","directory","validateNpmPackage","validForNewPackages","test","Boolean","authorEmail","username","githubUsername","authorUrl","slug","replace","values","createMetadata","ignoredAnswers","libraryMetadata","Object","fromEntries","entries","answer","version"],"sources":["../src/input.ts"],"sourcesContent":["import fs from 'fs-extra';\nimport githubUsername from 'github-username';\nimport path from 'path';\nimport validateNpmPackage from 'validate-npm-package-name';\nimport type * as yargs from 'yargs';\nimport { version } from '../package.json';\nimport { SUPPORTED_REACT_NATIVE_VERSION } from './constants';\nimport type { Question } from './utils/prompt';\nimport { spawn } from './utils/spawn';\n\nexport type ProjectLanguages = 'kotlin-objc' | 'kotlin-swift' | 'js';\n\nexport type ProjectType =\n | 'turbo-module'\n | 'fabric-view'\n | 'nitro-module'\n | 'nitro-view'\n | 'library';\n\nconst LANGUAGE_CHOICES: {\n title: string;\n value: ProjectLanguages;\n types: ProjectType[];\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: 'JavaScript for Android, iOS & Web',\n value: 'js',\n types: ['library'],\n },\n];\n\nconst EXAMPLE_CHOICES = (\n [\n {\n title: 'App with Community CLI',\n value: 'vanilla',\n description: \"provides access to app's native code\",\n disabled: false,\n },\n {\n title: 'Test App by Microsoft',\n value: 'test-app',\n description: \"app's native code is abstracted away\",\n // Test App currently doesn't work with React Native 0.79.2\n // due to missing `Gemfile` in the template\n disabled: !process.env.CRNL_ENABLE_TEST_APP,\n },\n {\n title: 'App with Expo CLI',\n value: 'expo',\n description: 'managed expo app with web support',\n disabled: false,\n },\n ] as const\n).filter((choice) => !choice.disabled);\n\nconst TYPE_CHOICES: {\n title: string;\n value: ProjectType;\n description: string;\n}[] = [\n {\n title: 'Turbo module',\n value: 'turbo-module',\n description: 'integration for native APIs to JS',\n },\n {\n title: 'Fabric view',\n value: 'fabric-view',\n description: 'integration for native views to JS',\n },\n {\n title: 'Nitro module',\n value: 'nitro-module',\n description:\n 'type-safe, fast integration for native APIs to JS (experimental)',\n },\n {\n title: 'Nitro view',\n value: 'nitro-view',\n description:\n 'integration for native views to JS using nitro for prop parsing (experimental)',\n },\n {\n title: 'JavaScript library',\n value: 'library',\n description: 'supports Expo Go and Web',\n },\n];\n\nexport const acceptedArgs = {\n 'slug': {\n description: 'Name of the npm package',\n type: 'string',\n },\n 'description': {\n description: 'Description of the npm package',\n type: 'string',\n },\n 'author-name': {\n description: 'Name of the package author',\n type: 'string',\n },\n 'author-email': {\n description: 'Email address of the package author',\n type: 'string',\n },\n 'author-url': {\n description: 'URL for the package author',\n type: 'string',\n },\n 'repo-url': {\n description: 'URL for the repository',\n type: 'string',\n },\n 'languages': {\n description: 'Languages you want to use',\n choices: LANGUAGE_CHOICES.map(({ value }) => value),\n },\n 'type': {\n description: 'Type of library you want to develop',\n choices: TYPE_CHOICES.map(({ value }) => value),\n },\n 'react-native-version': {\n description: 'Version of React Native to use',\n type: 'string',\n default: SUPPORTED_REACT_NATIVE_VERSION,\n },\n 'local': {\n description: 'Whether to create a local library',\n type: 'boolean',\n },\n 'example': {\n description: 'Type of the example app to create',\n type: 'string',\n choices: EXAMPLE_CHOICES.map(({ value }) => value),\n },\n 'interactive': {\n description: 'Whether to run in interactive mode',\n type: 'boolean',\n },\n} as const satisfies Record<string, yargs.Options>;\n\nexport type ExampleApp = 'none' | 'test-app' | 'expo' | 'vanilla';\n\ntype PromptAnswers = {\n directory: string;\n slug: string;\n description: string;\n authorName: string;\n authorEmail: string;\n authorUrl: string;\n repoUrl: string;\n languages: ProjectLanguages;\n type: ProjectType;\n example: ExampleApp;\n local: boolean;\n};\n\nexport type Answers = PromptAnswers & {\n name?: string;\n reactNativeVersion?: string;\n interactive?: boolean;\n};\n\nexport async function createQuestions({\n name,\n local,\n}: {\n name?: string;\n local?: boolean;\n}) {\n let fullname, email;\n\n try {\n fullname = await spawn('git', ['config', '--get', 'user.name']);\n email = await spawn('git', ['config', '--get', 'user.email']);\n } catch (e) {\n // Ignore error\n }\n\n const questions: Question<keyof PromptAnswers>[] = [\n {\n type:\n local == null &&\n (await fs.pathExists(path.join(process.cwd(), 'package.json')))\n ? 'confirm'\n : null,\n name: 'local',\n message: `Looks like you're under a project folder. Do you want to create a local library?`,\n initial: local,\n default: false,\n },\n {\n type: (_, answers) => (name && !(answers.local ?? local) ? null : 'text'),\n name: 'directory',\n message: `Where do you want to create the library?`,\n initial: (_, answers) => {\n if ((answers.local ?? local) && name && !name?.includes(path.sep)) {\n return path.join('modules', name);\n }\n\n return name ?? '';\n },\n validate: (input) => {\n if (!input) {\n return 'Cannot be empty';\n }\n\n const targetPath = path.join(process.cwd(), input);\n\n if (fs.pathExistsSync(targetPath)) {\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';\n }\n }\n\n return true;\n },\n default: name,\n },\n {\n type: 'text',\n name: 'slug',\n message: 'What is the name of the npm package?',\n initial: (_, answers) => {\n const basename = path.basename(\n typeof answers.directory === 'string'\n ? answers.directory\n : (name ?? '')\n );\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 '';\n },\n validate: (input) =>\n validateNpmPackage(input).validForNewPackages ||\n 'Must be a valid npm package name',\n },\n {\n type: 'text',\n name: 'description',\n message: 'What is the description for the package?',\n validate: (input) => Boolean(input) || 'Cannot be empty',\n },\n {\n type: (_, answers) => ((answers.local ?? local) ? null : 'text'),\n name: 'authorName',\n message: 'What is the name of package author?',\n initial: fullname,\n validate: (input) => Boolean(input) || 'Cannot be empty',\n },\n {\n type: (_, answers) => ((answers.local ?? local) ? null : 'text'),\n name: 'authorEmail',\n message: 'What is the email address for the package author?',\n initial: email,\n validate: (input) =>\n /^\\S+@\\S+$/.test(input) || 'Must be a valid email address',\n },\n {\n type: (_, answers) => ((answers.local ?? local) ? null : 'text'),\n name: 'authorUrl',\n message: 'What is the URL for the package author?',\n initial: async (_, answers) => {\n if (typeof answers.authorEmail !== 'string') {\n return '';\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 '';\n },\n validate: (input) => /^https?:\\/\\//.test(input) || 'Must be a valid URL',\n },\n {\n type: (_, answers) => ((answers.local ?? local) ? null : 'text'),\n name: 'repoUrl',\n message: 'What is the URL for the repository?',\n initial: (_, answers) => {\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 '';\n },\n validate: (input) => /^https?:\\/\\//.test(input) || 'Must be a valid URL',\n },\n {\n type: 'select',\n name: 'type',\n message: 'What type of library do you want to develop?',\n choices: TYPE_CHOICES,\n },\n {\n type: 'select',\n name: 'languages',\n message: 'Which languages do you want to use?',\n choices: (_, values) => {\n return LANGUAGE_CHOICES.filter((choice) => {\n if (choice.types && typeof values.type === 'string') {\n // @ts-expect-error `includes doesn't support checking arbitrary types\n return choice.types.includes(values.type);\n }\n\n return true;\n });\n },\n },\n {\n type: 'select',\n name: 'example',\n message: 'What type of example app do you want to create?',\n choices: (_, values) => {\n if (local) {\n return [\n {\n title: 'None',\n value: 'none',\n },\n ];\n }\n\n return EXAMPLE_CHOICES.filter((choice) => {\n if (values.type) {\n return values.type === 'library'\n ? choice.value === 'expo'\n : choice.value !== 'expo';\n }\n\n return true;\n });\n },\n },\n ];\n\n return questions;\n}\n\nexport function createMetadata(answers: Partial<PromptAnswers>) {\n // Some of the passed args can already be derived from the generated package.json file.\n const ignoredAnswers: (keyof Answers)[] = [\n 'name',\n 'directory',\n 'slug',\n 'description',\n 'authorName',\n 'authorEmail',\n 'authorUrl',\n 'repoUrl',\n 'example',\n 'reactNativeVersion',\n 'local',\n 'interactive',\n ];\n\n type AnswerEntries<T extends keyof PromptAnswers = keyof PromptAnswers> = [\n T,\n PromptAnswers[T],\n ][];\n\n const libraryMetadata = Object.fromEntries(\n // eslint-disable-next-line @typescript-eslint/no-unsafe-type-assertion\n (Object.entries(answers) as AnswerEntries).filter(\n ([answer]) => !ignoredAnswers.includes(answer)\n )\n );\n\n libraryMetadata.version = version;\n\n return libraryMetadata;\n}\n"],"mappings":";;;;;;;;AAAA,IAAAA,QAAA,GAAAC,sBAAA,CAAAC,OAAA;AACA,IAAAC,eAAA,GAAAF,sBAAA,CAAAC,OAAA;AACA,IAAAE,KAAA,GAAAH,sBAAA,CAAAC,OAAA;AACA,IAAAG,uBAAA,GAAAJ,sBAAA,CAAAC,OAAA;AAEA,IAAAI,QAAA,GAAAJ,OAAA;AACA,IAAAK,UAAA,GAAAL,OAAA;AAEA,IAAAM,MAAA,GAAAN,OAAA;AAAsC,SAAAD,uBAAAQ,CAAA,WAAAA,CAAA,IAAAA,CAAA,CAAAC,UAAA,GAAAD,CAAA,KAAAE,OAAA,EAAAF,CAAA;AAWtC,MAAMG,gBAIH,GAAG,CACJ;EACEC,KAAK,EAAE,gBAAgB;EACvBC,KAAK,EAAE,cAAc;EACrBC,KAAK,EAAE,CAAC,cAAc,EAAE,YAAY;AACtC,CAAC,EACD;EACEF,KAAK,EAAE,sBAAsB;EAC7BC,KAAK,EAAE,aAAa;EACpBC,KAAK,EAAE,CAAC,cAAc,EAAE,aAAa;AACvC,CAAC,EACD;EACEF,KAAK,EAAE,mCAAmC;EAC1CC,KAAK,EAAE,IAAI;EACXC,KAAK,EAAE,CAAC,SAAS;AACnB,CAAC,CACF;AAED,MAAMC,eAAe,GACnB,CACE;EACEH,KAAK,EAAE,wBAAwB;EAC/BC,KAAK,EAAE,SAAS;EAChBG,WAAW,EAAE,sCAAsC;EACnDC,QAAQ,EAAE;AACZ,CAAC,EACD;EACEL,KAAK,EAAE,uBAAuB;EAC9BC,KAAK,EAAE,UAAU;EACjBG,WAAW,EAAE,sCAAsC;EACnD;EACA;EACAC,QAAQ,EAAE,CAACC,OAAO,CAACC,GAAG,CAACC;AACzB,CAAC,EACD;EACER,KAAK,EAAE,mBAAmB;EAC1BC,KAAK,EAAE,MAAM;EACbG,WAAW,EAAE,mCAAmC;EAChDC,QAAQ,EAAE;AACZ,CAAC,CACF,CACDI,MAAM,CAAEC,MAAM,IAAK,CAACA,MAAM,CAACL,QAAQ,CAAC;AAEtC,MAAMM,YAIH,GAAG,CACJ;EACEX,KAAK,EAAE,cAAc;EACrBC,KAAK,EAAE,cAAc;EACrBG,WAAW,EAAE;AACf,CAAC,EACD;EACEJ,KAAK,EAAE,aAAa;EACpBC,KAAK,EAAE,aAAa;EACpBG,WAAW,EAAE;AACf,CAAC,EACD;EACEJ,KAAK,EAAE,cAAc;EACrBC,KAAK,EAAE,cAAc;EACrBG,WAAW,EACT;AACJ,CAAC,EACD;EACEJ,KAAK,EAAE,YAAY;EACnBC,KAAK,EAAE,YAAY;EACnBG,WAAW,EACT;AACJ,CAAC,EACD;EACEJ,KAAK,EAAE,oBAAoB;EAC3BC,KAAK,EAAE,SAAS;EAChBG,WAAW,EAAE;AACf,CAAC,CACF;AAEM,MAAMQ,YAAY,GAAAC,OAAA,CAAAD,YAAA,GAAG;EAC1B,MAAM,EAAE;IACNR,WAAW,EAAE,yBAAyB;IACtCU,IAAI,EAAE;EACR,CAAC;EACD,aAAa,EAAE;IACbV,WAAW,EAAE,gCAAgC;IAC7CU,IAAI,EAAE;EACR,CAAC;EACD,aAAa,EAAE;IACbV,WAAW,EAAE,4BAA4B;IACzCU,IAAI,EAAE;EACR,CAAC;EACD,cAAc,EAAE;IACdV,WAAW,EAAE,qCAAqC;IAClDU,IAAI,EAAE;EACR,CAAC;EACD,YAAY,EAAE;IACZV,WAAW,EAAE,4BAA4B;IACzCU,IAAI,EAAE;EACR,CAAC;EACD,UAAU,EAAE;IACVV,WAAW,EAAE,wBAAwB;IACrCU,IAAI,EAAE;EACR,CAAC;EACD,WAAW,EAAE;IACXV,WAAW,EAAE,2BAA2B;IACxCW,OAAO,EAAEhB,gBAAgB,CAACiB,GAAG,CAAC,CAAC;MAAEf;IAAM,CAAC,KAAKA,KAAK;EACpD,CAAC;EACD,MAAM,EAAE;IACNG,WAAW,EAAE,qCAAqC;IAClDW,OAAO,EAAEJ,YAAY,CAACK,GAAG,CAAC,CAAC;MAAEf;IAAM,CAAC,KAAKA,KAAK;EAChD,CAAC;EACD,sBAAsB,EAAE;IACtBG,WAAW,EAAE,gCAAgC;IAC7CU,IAAI,EAAE,QAAQ;IACdhB,OAAO,EAAEmB;EACX,CAAC;EACD,OAAO,EAAE;IACPb,WAAW,EAAE,mCAAmC;IAChDU,IAAI,EAAE;EACR,CAAC;EACD,SAAS,EAAE;IACTV,WAAW,EAAE,mCAAmC;IAChDU,IAAI,EAAE,QAAQ;IACdC,OAAO,EAAEZ,eAAe,CAACa,GAAG,CAAC,CAAC;MAAEf;IAAM,CAAC,KAAKA,KAAK;EACnD,CAAC;EACD,aAAa,EAAE;IACbG,WAAW,EAAE,oCAAoC;IACjDU,IAAI,EAAE;EACR;AACF,CAAkD;AAwB3C,eAAeI,eAAeA,CAAC;EACpCC,IAAI;EACJC;AAIF,CAAC,EAAE;EACD,IAAIC,QAAQ,EAAEC,KAAK;EAEnB,IAAI;IACFD,QAAQ,GAAG,MAAM,IAAAE,YAAK,EAAC,KAAK,EAAE,CAAC,QAAQ,EAAE,OAAO,EAAE,WAAW,CAAC,CAAC;IAC/DD,KAAK,GAAG,MAAM,IAAAC,YAAK,EAAC,KAAK,EAAE,CAAC,QAAQ,EAAE,OAAO,EAAE,YAAY,CAAC,CAAC;EAC/D,CAAC,CAAC,OAAO3B,CAAC,EAAE;IACV;EAAA;EAGF,MAAM4B,SAA0C,GAAG,CACjD;IACEV,IAAI,EACFM,KAAK,IAAI,IAAI,KACZ,MAAMK,gBAAE,CAACC,UAAU,CAACC,aAAI,CAACC,IAAI,CAACtB,OAAO,CAACuB,GAAG,CAAC,CAAC,EAAE,cAAc,CAAC,CAAC,CAAC,GAC3D,SAAS,GACT,IAAI;IACVV,IAAI,EAAE,OAAO;IACbW,OAAO,EAAE,kFAAkF;IAC3FC,OAAO,EAAEX,KAAK;IACdtB,OAAO,EAAE;EACX,CAAC,EACD;IACEgB,IAAI,EAAEA,CAACkB,CAAC,EAAEC,OAAO,KAAMd,IAAI,IAAI,EAAEc,OAAO,CAACb,KAAK,IAAIA,KAAK,CAAC,GAAG,IAAI,GAAG,MAAO;IACzED,IAAI,EAAE,WAAW;IACjBW,OAAO,EAAE,0CAA0C;IACnDC,OAAO,EAAEA,CAACC,CAAC,EAAEC,OAAO,KAAK;MACvB,IAAI,CAACA,OAAO,CAACb,KAAK,IAAIA,KAAK,KAAKD,IAAI,IAAI,CAACA,IAAI,EAAEe,QAAQ,CAACP,aAAI,CAACQ,GAAG,CAAC,EAAE;QACjE,OAAOR,aAAI,CAACC,IAAI,CAAC,SAAS,EAAET,IAAI,CAAC;MACnC;MAEA,OAAOA,IAAI,IAAI,EAAE;IACnB,CAAC;IACDiB,QAAQ,EAAGC,KAAK,IAAK;MACnB,IAAI,CAACA,KAAK,EAAE;QACV,OAAO,iBAAiB;MAC1B;MAEA,MAAMC,UAAU,GAAGX,aAAI,CAACC,IAAI,CAACtB,OAAO,CAACuB,GAAG,CAAC,CAAC,EAAEQ,KAAK,CAAC;MAElD,IAAIZ,gBAAE,CAACc,cAAc,CAACD,UAAU,CAAC,EAAE;QACjC,MAAME,IAAI,GAAGf,gBAAE,CAACgB,QAAQ,CAACH,UAAU,CAAC;QAEpC,IAAI,CAACE,IAAI,CAACE,WAAW,CAAC,CAAC,EAAE;UACvB,OAAO,oCAAoC;QAC7C;QAEA,MAAMC,KAAK,GAAGlB,gBAAE,CAACmB,WAAW,CAACN,UAAU,CAAC;QAExC,MAAMO,OAAO,GACXF,KAAK,CAACG,MAAM,KAAK,CAAC,IAAKH,KAAK,CAACG,MAAM,KAAK,CAAC,IAAIH,KAAK,CAAC,CAAC,CAAC,KAAK,MAAO;QAEnE,IAAI,CAACE,OAAO,EAAE;UACZ,OAAO,0BAA0B;QACnC;MACF;MAEA,OAAO,IAAI;IACb,CAAC;IACD/C,OAAO,EAAEqB;EACX,CAAC,EACD;IACEL,IAAI,EAAE,MAAM;IACZK,IAAI,EAAE,MAAM;IACZW,OAAO,EAAE,sCAAsC;IAC/CC,OAAO,EAAEA,CAACC,CAAC,EAAEC,OAAO,KAAK;MACvB,MAAMc,QAAQ,GAAGpB,aAAI,CAACoB,QAAQ,CAC5B,OAAOd,OAAO,CAACe,SAAS,KAAK,QAAQ,GACjCf,OAAO,CAACe,SAAS,GAChB7B,IAAI,IAAI,EACf,CAAC;MAED,IAAI,IAAA8B,+BAAkB,EAACF,QAAQ,CAAC,CAACG,mBAAmB,EAAE;QACpD,IAAI,mBAAmB,CAACC,IAAI,CAACJ,QAAQ,CAAC,EAAE;UACtC,OAAOA,QAAQ;QACjB;QAEA,OAAO,gBAAgBA,QAAQ,EAAE;MACnC;MAEA,OAAO,EAAE;IACX,CAAC;IACDX,QAAQ,EAAGC,KAAK,IACd,IAAAY,+BAAkB,EAACZ,KAAK,CAAC,CAACa,mBAAmB,IAC7C;EACJ,CAAC,EACD;IACEpC,IAAI,EAAE,MAAM;IACZK,IAAI,EAAE,aAAa;IACnBW,OAAO,EAAE,0CAA0C;IACnDM,QAAQ,EAAGC,KAAK,IAAKe,OAAO,CAACf,KAAK,CAAC,IAAI;EACzC,CAAC,EACD;IACEvB,IAAI,EAAEA,CAACkB,CAAC,EAAEC,OAAO,KAAOA,OAAO,CAACb,KAAK,IAAIA,KAAK,GAAI,IAAI,GAAG,MAAO;IAChED,IAAI,EAAE,YAAY;IAClBW,OAAO,EAAE,qCAAqC;IAC9CC,OAAO,EAAEV,QAAQ;IACjBe,QAAQ,EAAGC,KAAK,IAAKe,OAAO,CAACf,KAAK,CAAC,IAAI;EACzC,CAAC,EACD;IACEvB,IAAI,EAAEA,CAACkB,CAAC,EAAEC,OAAO,KAAOA,OAAO,CAACb,KAAK,IAAIA,KAAK,GAAI,IAAI,GAAG,MAAO;IAChED,IAAI,EAAE,aAAa;IACnBW,OAAO,EAAE,mDAAmD;IAC5DC,OAAO,EAAET,KAAK;IACdc,QAAQ,EAAGC,KAAK,IACd,WAAW,CAACc,IAAI,CAACd,KAAK,CAAC,IAAI;EAC/B,CAAC,EACD;IACEvB,IAAI,EAAEA,CAACkB,CAAC,EAAEC,OAAO,KAAOA,OAAO,CAACb,KAAK,IAAIA,KAAK,GAAI,IAAI,GAAG,MAAO;IAChED,IAAI,EAAE,WAAW;IACjBW,OAAO,EAAE,yCAAyC;IAClDC,OAAO,EAAE,MAAAA,CAAOC,CAAC,EAAEC,OAAO,KAAK;MAC7B,IAAI,OAAOA,OAAO,CAACoB,WAAW,KAAK,QAAQ,EAAE;QAC3C,OAAO,EAAE;MACX;MAEA,IAAI;QACF,MAAMC,QAAQ,GAAG,MAAM,IAAAC,uBAAc,EAACtB,OAAO,CAACoB,WAAW,CAAC;QAE1D,IAAIC,QAAQ,EAAE;UACZ,OAAO,sBAAsBA,QAAQ,EAAE;QACzC;MACF,CAAC,CAAC,OAAO1D,CAAC,EAAE;QACV;MAAA;MAGF,OAAO,EAAE;IACX,CAAC;IACDwC,QAAQ,EAAGC,KAAK,IAAK,cAAc,CAACc,IAAI,CAACd,KAAK,CAAC,IAAI;EACrD,CAAC,EACD;IACEvB,IAAI,EAAEA,CAACkB,CAAC,EAAEC,OAAO,KAAOA,OAAO,CAACb,KAAK,IAAIA,KAAK,GAAI,IAAI,GAAG,MAAO;IAChED,IAAI,EAAE,SAAS;IACfW,OAAO,EAAE,qCAAqC;IAC9CC,OAAO,EAAEA,CAACC,CAAC,EAAEC,OAAO,KAAK;MACvB,IACE,OAAOA,OAAO,CAACuB,SAAS,KAAK,QAAQ,IACrC,OAAOvB,OAAO,CAACwB,IAAI,KAAK,QAAQ,IAChC,+BAA+B,CAACN,IAAI,CAAClB,OAAO,CAACuB,SAAS,CAAC,EACvD;QACA,OAAO,GAAGvB,OAAO,CAACuB,SAAS,IAAIvB,OAAO,CAACwB,IAAI,CACxCC,OAAO,CAAC,IAAI,EAAE,EAAE,CAAC,CACjBA,OAAO,CAAC,KAAK,EAAE,GAAG,CAAC,EAAE;MAC1B;MAEA,OAAO,EAAE;IACX,CAAC;IACDtB,QAAQ,EAAGC,KAAK,IAAK,cAAc,CAACc,IAAI,CAACd,KAAK,CAAC,IAAI;EACrD,CAAC,EACD;IACEvB,IAAI,EAAE,QAAQ;IACdK,IAAI,EAAE,MAAM;IACZW,OAAO,EAAE,8CAA8C;IACvDf,OAAO,EAAEJ;EACX,CAAC,EACD;IACEG,IAAI,EAAE,QAAQ;IACdK,IAAI,EAAE,WAAW;IACjBW,OAAO,EAAE,qCAAqC;IAC9Cf,OAAO,EAAEA,CAACiB,CAAC,EAAE2B,MAAM,KAAK;MACtB,OAAO5D,gBAAgB,CAACU,MAAM,CAAEC,MAAM,IAAK;QACzC,IAAIA,MAAM,CAACR,KAAK,IAAI,OAAOyD,MAAM,CAAC7C,IAAI,KAAK,QAAQ,EAAE;UACnD;UACA,OAAOJ,MAAM,CAACR,KAAK,CAACgC,QAAQ,CAACyB,MAAM,CAAC7C,IAAI,CAAC;QAC3C;QAEA,OAAO,IAAI;MACb,CAAC,CAAC;IACJ;EACF,CAAC,EACD;IACEA,IAAI,EAAE,QAAQ;IACdK,IAAI,EAAE,SAAS;IACfW,OAAO,EAAE,iDAAiD;IAC1Df,OAAO,EAAEA,CAACiB,CAAC,EAAE2B,MAAM,KAAK;MACtB,IAAIvC,KAAK,EAAE;QACT,OAAO,CACL;UACEpB,KAAK,EAAE,MAAM;UACbC,KAAK,EAAE;QACT,CAAC,CACF;MACH;MAEA,OAAOE,eAAe,CAACM,MAAM,CAAEC,MAAM,IAAK;QACxC,IAAIiD,MAAM,CAAC7C,IAAI,EAAE;UACf,OAAO6C,MAAM,CAAC7C,IAAI,KAAK,SAAS,GAC5BJ,MAAM,CAACT,KAAK,KAAK,MAAM,GACvBS,MAAM,CAACT,KAAK,KAAK,MAAM;QAC7B;QAEA,OAAO,IAAI;MACb,CAAC,CAAC;IACJ;EACF,CAAC,CACF;EAED,OAAOuB,SAAS;AAClB;AAEO,SAASoC,cAAcA,CAAC3B,OAA+B,EAAE;EAC9D;EACA,MAAM4B,cAAiC,GAAG,CACxC,MAAM,EACN,WAAW,EACX,MAAM,EACN,aAAa,EACb,YAAY,EACZ,aAAa,EACb,WAAW,EACX,SAAS,EACT,SAAS,EACT,oBAAoB,EACpB,OAAO,EACP,aAAa,CACd;EAOD,MAAMC,eAAe,GAAGC,MAAM,CAACC,WAAW;EACxC;EACCD,MAAM,CAACE,OAAO,CAAChC,OAAO,CAAC,CAAmBxB,MAAM,CAC/C,CAAC,CAACyD,MAAM,CAAC,KAAK,CAACL,cAAc,CAAC3B,QAAQ,CAACgC,MAAM,CAC/C,CACF,CAAC;EAEDJ,eAAe,CAACK,OAAO,GAAGA,gBAAO;EAEjC,OAAOL,eAAe;AACxB","ignoreList":[]}
|
package/package.json
CHANGED
|
@@ -1,6 +1,6 @@
|
|
|
1
1
|
{
|
|
2
2
|
"name": "create-react-native-library",
|
|
3
|
-
"version": "0.54.
|
|
3
|
+
"version": "0.54.8",
|
|
4
4
|
"description": "CLI to scaffold React Native libraries",
|
|
5
5
|
"keywords": [
|
|
6
6
|
"react-native",
|
|
@@ -66,5 +66,5 @@
|
|
|
66
66
|
"@types/validate-npm-package-name": "^3.0.3",
|
|
67
67
|
"@types/yargs": "^17.0.10"
|
|
68
68
|
},
|
|
69
|
-
"gitHead": "
|
|
69
|
+
"gitHead": "9611ee56aa38ad60df5145707847a876b15650b4"
|
|
70
70
|
}
|
|
@@ -20,7 +20,7 @@ jobs:
|
|
|
20
20
|
|
|
21
21
|
steps:
|
|
22
22
|
- name: Checkout
|
|
23
|
-
uses: actions/checkout@
|
|
23
|
+
uses: actions/checkout@08c6903cd8c0fde910a37f88322edcfb5dd907a8 # v5.0.0
|
|
24
24
|
|
|
25
25
|
- name: Setup
|
|
26
26
|
uses: ./.github/actions/setup
|
|
@@ -36,7 +36,7 @@ jobs:
|
|
|
36
36
|
|
|
37
37
|
steps:
|
|
38
38
|
- name: Checkout
|
|
39
|
-
uses: actions/checkout@
|
|
39
|
+
uses: actions/checkout@08c6903cd8c0fde910a37f88322edcfb5dd907a8 # v5.0.0
|
|
40
40
|
|
|
41
41
|
- name: Setup
|
|
42
42
|
uses: ./.github/actions/setup
|
|
@@ -49,7 +49,7 @@ jobs:
|
|
|
49
49
|
|
|
50
50
|
steps:
|
|
51
51
|
- name: Checkout
|
|
52
|
-
uses: actions/checkout@
|
|
52
|
+
uses: actions/checkout@08c6903cd8c0fde910a37f88322edcfb5dd907a8 # v5.0.0
|
|
53
53
|
|
|
54
54
|
- name: Setup
|
|
55
55
|
uses: ./.github/actions/setup
|
|
@@ -66,7 +66,7 @@ jobs:
|
|
|
66
66
|
|
|
67
67
|
steps:
|
|
68
68
|
- name: Checkout
|
|
69
|
-
uses: actions/checkout@
|
|
69
|
+
uses: actions/checkout@08c6903cd8c0fde910a37f88322edcfb5dd907a8 # v5.0.0
|
|
70
70
|
|
|
71
71
|
- name: Setup
|
|
72
72
|
uses: ./.github/actions/setup
|
|
@@ -132,7 +132,7 @@ jobs:
|
|
|
132
132
|
|
|
133
133
|
steps:
|
|
134
134
|
- name: Checkout
|
|
135
|
-
uses: actions/checkout@
|
|
135
|
+
uses: actions/checkout@08c6903cd8c0fde910a37f88322edcfb5dd907a8 # v5.0.0
|
|
136
136
|
|
|
137
137
|
- name: Setup
|
|
138
138
|
uses: ./.github/actions/setup
|
|
@@ -181,7 +181,7 @@ jobs:
|
|
|
181
181
|
|
|
182
182
|
steps:
|
|
183
183
|
- name: Checkout
|
|
184
|
-
uses: actions/checkout@
|
|
184
|
+
uses: actions/checkout@08c6903cd8c0fde910a37f88322edcfb5dd907a8 # v5.0.0
|
|
185
185
|
|
|
186
186
|
- name: Setup
|
|
187
187
|
uses: ./.github/actions/setup
|
|
@@ -1,11 +1,11 @@
|
|
|
1
1
|
package com.margelo.nitro.<%- project.package %>
|
|
2
2
|
|
|
3
|
-
import com.facebook.react.
|
|
3
|
+
import com.facebook.react.BaseReactPackage
|
|
4
4
|
import com.facebook.react.bridge.NativeModule
|
|
5
5
|
import com.facebook.react.bridge.ReactApplicationContext
|
|
6
6
|
import com.facebook.react.module.model.ReactModuleInfoProvider
|
|
7
7
|
|
|
8
|
-
class <%- project.name -%>Package :
|
|
8
|
+
class <%- project.name -%>Package : BaseReactPackage() {
|
|
9
9
|
override fun getModule(name: String, reactContext: ReactApplicationContext): NativeModule? {
|
|
10
10
|
return null
|
|
11
11
|
}
|