{"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"}