UNPKG

21 kBSource Map (JSON)View Raw
1{"version":3,"sources":["../src/create.ts"],"names":["BINARIES","COMMON_FILES","path","resolve","__dirname","JS_FILES","EXPO_FILES","CPP_FILES","EXAMPLE_FILES","NATIVE_FILES","moduleType","OBJC_FILES","SWIFT_FILES","args","description","type","choices","create","argv","folder","join","process","cwd","name","fs","pathExists","console","log","chalk","blue","exit","email","spawn","sync","stdout","toString","trim","e","basename","questions","message","initial","validForNewPackages","test","undefined","validate","input","Boolean","previous","username","_","answers","authorUrl","slug","replace","title","value","authorName","authorEmail","repoUrl","Object","entries","filter","k","v","map","project","options","bob","version","pack","charAt","toUpperCase","$1","slice","package","toLowerCase","podspec","native","cpp","swift","module","author","url","repo","copyDir","source","dest","mkdirp","files","readdir","f","target","ejs","render","openDelimiter","closeDelimiter","file","stats","stat","isDirectory","match","content","readFile","writeFile","copyFile","platforms","ios","color","android","web","script"],"mappings":"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","sourcesContent":["import path from 'path';\nimport fs from 'fs-extra';\nimport ejs from 'ejs';\nimport dedent from 'dedent';\nimport chalk from 'chalk';\nimport type yargs from 'yargs';\nimport spawn from 'cross-spawn';\nimport validateNpmPackage from 'validate-npm-package-name';\nimport githubUsername from 'github-username';\nimport prompts, { PromptObject } from './utils/prompts';\nimport pack from '../package.json';\n\nconst BINARIES = /(gradlew|\\.(jar|keystore|png|jpg|gif))$/;\n\nconst COMMON_FILES = path.resolve(__dirname, '../templates/common');\nconst JS_FILES = path.resolve(__dirname, '../templates/js-library');\nconst EXPO_FILES = path.resolve(__dirname, '../templates/expo-library');\nconst CPP_FILES = path.resolve(__dirname, '../templates/cpp-library');\nconst EXAMPLE_FILES = path.resolve(__dirname, '../templates/example');\n\n// Android\nconst NATIVE_FILES = (moduleType: ModuleType) => {\n switch (moduleType) {\n case 'module':\n return path.resolve(__dirname, '../templates/native-library');\n case 'view':\n return path.resolve(__dirname, '../templates/native-view-library');\n }\n};\n\n// Objc\nconst OBJC_FILES = (moduleType: ModuleType) => {\n switch (moduleType) {\n case 'module':\n return path.resolve(__dirname, '../templates/objc-library');\n case 'view':\n return path.resolve(__dirname, '../templates/objc-view-library');\n }\n};\n\n// Swift\nconst SWIFT_FILES = (moduleType: ModuleType) => {\n switch (moduleType) {\n case 'module':\n return path.resolve(__dirname, '../templates/swift-library');\n case 'view':\n return path.resolve(__dirname, '../templates/swift-view-library');\n }\n};\n\ntype ArgName =\n | 'slug'\n | 'description'\n | 'author-name'\n | 'author-email'\n | 'author-url'\n | 'repo-url'\n | 'type';\n\ntype ModuleType = 'module' | 'view';\n\ntype LibraryType =\n | 'native-view'\n | 'native-view-swift'\n | 'native'\n | 'native-swift'\n | 'js'\n | 'cpp'\n | 'expo';\n\ntype Answers = {\n slug: string;\n description: string;\n authorName: string;\n authorEmail: string;\n authorUrl: string;\n repoUrl: string;\n type: LibraryType;\n};\n\nexport const args: Record<ArgName, yargs.Options> = {\n 'slug': {\n description: 'Name of the npm package',\n type: 'string',\n },\n 'description': {\n description: 'Description of the npm package',\n type: 'string',\n },\n 'author-name': {\n description: 'Name of the package author',\n type: 'string',\n },\n 'author-email': {\n description: 'Email address of the package author',\n type: 'string',\n },\n 'author-url': {\n description: 'URL for the package author',\n type: 'string',\n },\n 'repo-url': {\n description: 'URL for the repository',\n type: 'string',\n },\n 'type': {\n description: 'Type package do you want to develop',\n choices: ['native', 'native-swift', 'js', 'cpp', 'expo'],\n },\n};\n\nexport default async function create(argv: yargs.Arguments<any>) {\n const folder = path.join(process.cwd(), argv.name);\n\n if (await fs.pathExists(folder)) {\n console.log(\n `A folder already exists at ${chalk.blue(\n folder\n )}! Please specify another folder name or delete the existing one.`\n );\n\n process.exit(1);\n }\n\n let name, email;\n\n try {\n name = spawn\n .sync('git', ['config', '--get', 'user.name'])\n .stdout.toString()\n .trim();\n\n email = spawn\n .sync('git', ['config', '--get', 'user.email'])\n .stdout.toString()\n .trim();\n } catch (e) {\n // Ignore error\n }\n\n const basename = path.basename(argv.name);\n\n const questions: Record<\n ArgName,\n Omit<PromptObject<keyof Answers>, 'validate'> & {\n validate?: (value: string) => boolean | string;\n }\n > = {\n 'slug': {\n type: 'text',\n name: 'slug',\n message: 'What is the name of the npm package?',\n initial: validateNpmPackage(basename).validForNewPackages\n ? /^(@|react-native)/.test(basename)\n ? basename\n : `react-native-${basename}`\n : undefined,\n validate: (input) =>\n validateNpmPackage(input).validForNewPackages ||\n 'Must be a valid npm package name',\n },\n 'description': {\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 'author-name': {\n type: 'text',\n name: 'authorName',\n message: 'What is the name of package author?',\n initial: name,\n validate: (input) => Boolean(input) || 'Cannot be empty',\n },\n 'author-email': {\n type: '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 'author-url': {\n type: 'text',\n name: 'authorUrl',\n message: 'What is the URL for the package author?',\n // @ts-ignore: this is supported, but types are wrong\n initial: async (previous: string) => {\n try {\n const username = await githubUsername(previous);\n\n return `https://github.com/${username}`;\n } catch (e) {\n // Ignore error\n }\n\n return undefined;\n },\n validate: (input) => /^https?:\\/\\//.test(input) || 'Must be a valid URL',\n },\n 'repo-url': {\n type: 'text',\n name: 'repoUrl',\n message: 'What is the URL for the repository?',\n // @ts-ignore: this is supported, but types are wrong\n initial: (_: string, answers: Answers) => {\n if (/^https?:\\/\\/github.com\\/[^/]+/.test(answers.authorUrl)) {\n return `${answers.authorUrl}/${answers.slug\n .replace(/^@/, '')\n .replace(/\\//g, '-')}`;\n }\n\n return '';\n },\n validate: (input) => /^https?:\\/\\//.test(input) || 'Must be a valid URL',\n },\n 'type': {\n type: 'select',\n name: 'type',\n message: 'What type of package do you want to develop?',\n choices: [\n { title: 'Native module in Kotlin and Objective-C', value: 'native' },\n { title: 'Native module in Kotlin and Swift', value: 'native-swift' },\n { title: 'Native module with C++ code', value: 'cpp' },\n {\n title: 'Native view in Kotlin and Objective-C',\n value: 'native-view',\n },\n {\n title: 'Native view in Kotlin and Swift',\n value: 'native-view-swift',\n },\n {\n title: 'JavaScript library with native example',\n value: 'js',\n },\n {\n title: 'JavaScript library with Expo example and Web support',\n value: 'expo',\n },\n ],\n },\n };\n\n const {\n slug,\n description,\n authorName,\n authorEmail,\n authorUrl,\n repoUrl,\n type,\n } = {\n ...argv,\n ...(await prompts(\n Object.entries(questions)\n .filter(\n ([k, v]) =>\n !(argv[k] && v.validate\n ? v.validate(argv[k]) === true\n : Boolean(argv[k]))\n )\n .map(([, v]) => v)\n )),\n } as Answers;\n\n const project = slug.replace(/^(react-native-|@[^/]+\\/)/, '');\n const moduleType: ModuleType =\n type === 'native-view' || type === 'native-view-swift' ? 'view' : 'module';\n\n const options = {\n bob: {\n version: pack.version,\n },\n project: {\n slug,\n description,\n name: `${project\n .charAt(0)\n .toUpperCase()}${project\n .replace(/[^a-z0-9](\\w)/g, (_, $1) => $1.toUpperCase())\n .slice(1)}`,\n package: slug.replace(/[^a-z0-9]/g, '').toLowerCase(),\n podspec: slug.replace(/[^a-z0-9]+/g, '-').replace(/^-/, ''),\n native:\n type === 'native' ||\n type === 'cpp' ||\n 'native-swift' ||\n 'native-view' ||\n 'native-view-swift',\n cpp: type === 'cpp',\n swift: type === 'native-swift' || 'native-view-swift',\n module: type !== 'js',\n moduleType,\n },\n author: {\n name: authorName,\n email: authorEmail,\n url: authorUrl,\n },\n repo: repoUrl,\n };\n\n const copyDir = async (source: string, dest: string) => {\n await fs.mkdirp(dest);\n\n const files = await fs.readdir(source);\n\n for (const f of files) {\n const target = path.join(\n dest,\n ejs.render(f.replace(/^\\$/, ''), options, {\n openDelimiter: '{',\n closeDelimiter: '}',\n })\n );\n\n const file = path.join(source, f);\n const stats = await fs.stat(file);\n\n if (stats.isDirectory()) {\n await copyDir(file, target);\n } else if (!file.match(BINARIES)) {\n const content = await fs.readFile(file, 'utf8');\n\n await fs.writeFile(target, ejs.render(content, options));\n } else {\n await fs.copyFile(file, target);\n }\n }\n };\n\n await copyDir(COMMON_FILES, folder);\n\n if (type === 'expo') {\n await copyDir(JS_FILES, folder);\n await copyDir(EXPO_FILES, folder);\n } else if (type === 'js') {\n await copyDir(JS_FILES, folder);\n await copyDir(\n path.join(EXAMPLE_FILES, 'example'),\n path.join(folder, 'example')\n );\n } else {\n await copyDir(\n path.join(EXAMPLE_FILES, 'example'),\n path.join(folder, 'example')\n );\n\n await copyDir(NATIVE_FILES(moduleType), folder);\n\n if (type === 'cpp') {\n await copyDir(CPP_FILES, folder);\n } else if (type === 'native-swift') {\n await copyDir(SWIFT_FILES(moduleType), folder);\n } else {\n await copyDir(OBJC_FILES(moduleType), folder);\n }\n }\n\n try {\n spawn.sync('git', ['init'], { cwd: folder });\n spawn.sync('git', ['add', '.'], { cwd: folder });\n spawn.sync('git', ['commit', '-m', 'chore: initial commit'], {\n cwd: folder,\n });\n } catch (e) {\n // Ignore error\n }\n\n const platforms = {\n ios: { name: 'iOS', color: 'cyan' },\n android: { name: 'Android', color: 'green' },\n ...(type === 'expo' ? { web: { name: 'Web', color: 'blue' } } : null),\n };\n\n console.log(\n dedent(chalk`\n Project created successfully at {yellow ${argv.name}}!\n\n {magenta {bold Get started} with the project}{gray :}\n\n {gray $} yarn\n ${Object.entries(platforms)\n .map(\n ([script, { name, color }]) => chalk`\n {${color} Run the example app on {bold ${name}}}{gray :}\n\n {gray $} yarn example ${script}`\n )\n .join('\\n')}\n\n {yellow Good luck!}\n `)\n );\n}\n"],"file":"create.js"}
\No newline at end of file