1{"version":3,"file":"create-expo-module.js","sourceRoot":"","sources":["../src/create-expo-module.ts"],"names":[],"mappings":"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","sourcesContent":["import spawnAsync from '@expo/spawn-async';\nimport chalk from 'chalk';\nimport { Command } from 'commander';\nimport downloadTarball from 'download-tarball';\nimport ejs from 'ejs';\nimport findUp from 'find-up';\nimport fs from 'fs-extra';\nimport { boolish } from 'getenv';\nimport path from 'path';\nimport prompts from 'prompts';\n\nimport { createExampleApp } from './createExampleApp';\nimport { installDependencies } from './packageManager';\nimport {\n  getLocalFolderNamePrompt,\n  getLocalSubstitutionDataPrompts,\n  getSlugPrompt,\n  getSubstitutionDataPrompts,\n} from './prompts';\nimport {\n  formatRunCommand,\n  PackageManagerName,\n  resolvePackageManager,\n} from './resolvePackageManager';\nimport { eventCreateExpoModule, getTelemetryClient, logEventAsync } from './telemetry';\nimport { CommandOptions, LocalSubstitutionData, SubstitutionData } from './types';\nimport { newStep } from './utils';\n\nconst debug = require('debug')('create-expo-module:main') as typeof console.log;\nconst packageJson = require('../package.json');\n\n// Opt in to using beta versions\nconst EXPO_BETA = boolish('EXPO_BETA', false);\n\n// `yarn run` may change the current working dir, then we should use `INIT_CWD` env.\nconst CWD = process.env.INIT_CWD || process.cwd();\n\n// Ignore some paths. Especially `package.json` as it is rendered\n// from `$package.json` file instead of the original one.\nconst IGNORES_PATHS = [\n  '.DS_Store',\n  'build',\n  'node_modules',\n  'package.json',\n  '.npmignore',\n  '.gitignore',\n];\n\n// Url to the documentation on Expo Modules\nconst DOCS_URL = 'https://docs.expo.dev/modules';\n\nconst FYI_LOCAL_DIR = 'https://expo.fyi/expo-module-local-autolinking.md';\n\nasync function getCorrectLocalDirectory(targetOrSlug: string) {\n  const packageJsonPath = await findUp('package.json', { cwd: CWD });\n  if (!packageJsonPath) {\n    console.log(\n      chalk.red.bold(\n        '⚠️ This command should be run inside your Expo project when run with the --local flag.'\n      )\n    );\n    console.log(\n      chalk.red(\n        'For native modules to autolink correctly, you need to place them in the `modules` directory in the root of the project.'\n      )\n    );\n    return null;\n  }\n  return path.join(packageJsonPath, '..', 'modules', targetOrSlug);\n}\n\n/**\n * The main function of the command.\n *\n * @param target Path to the directory where to create the module. Defaults to current working dir.\n * @param command An object from `commander`.\n */\nasync function main(target: string | undefined, options: CommandOptions) {\n  if (options.local) {\n    console.log();\n    console.log(\n      `${chalk.gray('The local module will be created in the ')}${chalk.gray.bold.italic(\n        'modules'\n      )} ${chalk.gray('directory in the root of your project. Learn more: ')}${chalk.gray.bold(\n        FYI_LOCAL_DIR\n      )}`\n    );\n    console.log();\n  }\n  const slug = await askForPackageSlugAsync(target, options.local);\n  const targetDir = options.local\n    ? await getCorrectLocalDirectory(target || slug)\n    : path.join(CWD, target || slug);\n\n  if (!targetDir) {\n    return;\n  }\n  await fs.ensureDir(targetDir);\n  await confirmTargetDirAsync(targetDir);\n\n  options.target = targetDir;\n\n  const data = await askForSubstitutionDataAsync(slug, options.local);\n\n  // Make one line break between prompts and progress logs\n  console.log();\n\n  const packageManager = await resolvePackageManager();\n  const packagePath = options.source\n    ? path.join(CWD, options.source)\n    : await downloadPackageAsync(targetDir, options.local);\n\n  logEventAsync(eventCreateExpoModule(packageManager, options));\n\n  await newStep('Creating the module from template files', async (step) => {\n    await createModuleFromTemplate(packagePath, targetDir, data);\n    step.succeed('Created the module from template files');\n  });\n  if (!options.local) {\n    await newStep('Installing module dependencies', async (step) => {\n      await installDependencies(packageManager, targetDir);\n      step.succeed('Installed module dependencies');\n    });\n    await newStep('Compiling TypeScript files', async (step) => {\n      await spawnAsync(packageManager, ['run', 'build'], {\n        cwd: targetDir,\n        stdio: 'ignore',\n      });\n      step.succeed('Compiled TypeScript files');\n    });\n  }\n\n  if (!options.source) {\n    // Files in the downloaded tarball are wrapped in `package` dir.\n    // We should remove it after all.\n    await fs.remove(packagePath);\n  }\n  if (!options.local && data.type !== 'local') {\n    if (!options.withReadme) {\n      await fs.remove(path.join(targetDir, 'README.md'));\n    }\n    if (!options.withChangelog) {\n      await fs.remove(path.join(targetDir, 'CHANGELOG.md'));\n    }\n    if (options.example) {\n      // Create \"example\" folder\n      await createExampleApp(data, targetDir, packageManager);\n    }\n\n    await newStep('Creating an empty Git repository', async (step) => {\n      try {\n        const result = await createGitRepositoryAsync(targetDir);\n        if (result) {\n          step.succeed('Created an empty Git repository');\n        } else if (result === null) {\n          step.succeed('Skipped creating an empty Git repository, already within a Git repository');\n        } else if (result === false) {\n          step.warn(\n            'Could not create an empty Git repository, see debug logs with EXPO_DEBUG=true'\n          );\n        }\n      } catch (e: any) {\n        step.fail(e.toString());\n      }\n    });\n  }\n\n  console.log();\n  if (options.local) {\n    console.log(`✅ Successfully created Expo module in ${chalk.bold.italic(`modules/${slug}`)}`);\n    printFurtherLocalInstructions(slug, data.project.moduleName);\n  } else {\n    console.log('✅ Successfully created Expo module');\n    printFurtherInstructions(targetDir, packageManager, options.example);\n  }\n}\n\n/**\n * Recursively scans for the files within the directory. Returned paths are relative to the `root` path.\n */\nasync function getFilesAsync(root: string, dir: string | null = null): Promise<string[]> {\n  const files: string[] = [];\n  const baseDir = dir ? path.join(root, dir) : root;\n\n  for (const file of await fs.readdir(baseDir)) {\n    const relativePath = dir ? path.join(dir, file) : file;\n\n    if (IGNORES_PATHS.includes(relativePath) || IGNORES_PATHS.includes(file)) {\n      continue;\n    }\n\n    const fullPath = path.join(baseDir, file);\n    const stat = await fs.lstat(fullPath);\n\n    if (stat.isDirectory()) {\n      files.push(...(await getFilesAsync(root, relativePath)));\n    } else {\n      files.push(relativePath);\n    }\n  }\n  return files;\n}\n\n/**\n * Asks NPM registry for the url to the tarball.\n */\nasync function getNpmTarballUrl(packageName: string, version: string = 'latest'): Promise<string> {\n  debug(`Using module template ${chalk.bold(packageName)}@${chalk.bold(version)}`);\n  const { stdout } = await spawnAsync('npm', ['view', `${packageName}@${version}`, 'dist.tarball']);\n  return stdout.trim();\n}\n\n/**\n * Downloads the template from NPM registry.\n */\nasync function downloadPackageAsync(targetDir: string, isLocal = false): Promise<string> {\n  return await newStep('Downloading module template from npm', async (step) => {\n    const tarballUrl = await getNpmTarballUrl(\n      isLocal ? 'expo-module-template-local' : 'expo-module-template',\n      EXPO_BETA ? 'next' : 'latest'\n    );\n\n    await downloadTarball({\n      url: tarballUrl,\n      dir: targetDir,\n    });\n\n    step.succeed('Downloaded module template from npm');\n\n    return path.join(targetDir, 'package');\n  });\n}\n\nfunction handleSuffix(name: string, suffix: string): string {\n  if (name.endsWith(suffix)) {\n    return name;\n  }\n  return `${name}${suffix}`;\n}\n\n/**\n * Creates the module based on the `ejs` template (e.g. `expo-module-template` package).\n */\nasync function createModuleFromTemplate(\n  templatePath: string,\n  targetPath: string,\n  data: SubstitutionData | LocalSubstitutionData\n) {\n  const files = await getFilesAsync(templatePath);\n\n  // Iterate through all template files.\n  for (const file of files) {\n    const renderedRelativePath = ejs.render(file.replace(/^\\$/, ''), data, {\n      openDelimiter: '{',\n      closeDelimiter: '}',\n      escape: (value: string) => value.replace(/\\./g, path.sep),\n    });\n    const fromPath = path.join(templatePath, file);\n    const toPath = path.join(targetPath, renderedRelativePath);\n    const template = await fs.readFile(fromPath, { encoding: 'utf8' });\n    const renderedContent = ejs.render(template, data);\n\n    await fs.outputFile(toPath, renderedContent, { encoding: 'utf8' });\n  }\n}\n\nasync function createGitRepositoryAsync(targetDir: string) {\n  // Check if we are inside a git repository already\n  try {\n    await spawnAsync('git', ['rev-parse', '--is-inside-work-tree'], {\n      stdio: 'ignore',\n      cwd: targetDir,\n    });\n    debug(chalk.dim('New project is already inside of a Git repo, skipping git init.'));\n    return null;\n  } catch (e: any) {\n    if (e.errno === 'ENOENT') {\n      debug(chalk.dim('Unable to initialize Git repo. `git` not in $PATH.'));\n      return false;\n    }\n  }\n\n  // Create a new git repository\n  await spawnAsync('git', ['init'], { stdio: 'ignore', cwd: targetDir });\n  await spawnAsync('git', ['add', '-A'], { stdio: 'ignore', cwd: targetDir });\n\n  const commitMsg = `Initial commit\\n\\nGenerated by ${packageJson.name} ${packageJson.version}.`;\n  await spawnAsync('git', ['commit', '-m', commitMsg], {\n    stdio: 'ignore',\n    cwd: targetDir,\n  });\n\n  debug(chalk.dim('Initialized a Git repository.'));\n  return true;\n}\n\n/**\n * Asks the user for the package slug (npm package name).\n */\nasync function askForPackageSlugAsync(customTargetPath?: string, isLocal = false): Promise<string> {\n  const { slug } = await prompts(\n    (isLocal ? getLocalFolderNamePrompt : getSlugPrompt)(customTargetPath),\n    {\n      onCancel: () => process.exit(0),\n    }\n  );\n  return slug;\n}\n\n/**\n * Asks the user for some data necessary to render the template.\n * Some values may already be provided by command options, the prompt is skipped in that case.\n */\nasync function askForSubstitutionDataAsync(\n  slug: string,\n  isLocal = false\n): Promise<SubstitutionData | LocalSubstitutionData> {\n  const promptQueries = await (isLocal\n    ? getLocalSubstitutionDataPrompts\n    : getSubstitutionDataPrompts)(slug);\n\n  // Stop the process when the user cancels/exits the prompt.\n  const onCancel = () => {\n    process.exit(0);\n  };\n\n  const {\n    name,\n    description,\n    package: projectPackage,\n    authorName,\n    authorEmail,\n    authorUrl,\n    repo,\n  } = await prompts(promptQueries, { onCancel });\n\n  if (isLocal) {\n    return {\n      project: {\n        slug,\n        name,\n        package: projectPackage,\n        moduleName: handleSuffix(name, 'Module'),\n        viewName: handleSuffix(name, 'View'),\n      },\n      type: 'local',\n    };\n  }\n\n  return {\n    project: {\n      slug,\n      name,\n      version: '0.1.0',\n      description,\n      package: projectPackage,\n      moduleName: handleSuffix(name, 'Module'),\n      viewName: handleSuffix(name, 'View'),\n    },\n    author: `${authorName} <${authorEmail}> (${authorUrl})`,\n    license: 'MIT',\n    repo,\n    type: 'remote',\n  };\n}\n\n/**\n * Checks whether the target directory is empty and if not, asks the user to confirm if he wants to continue.\n */\nasync function confirmTargetDirAsync(targetDir: string): Promise<void> {\n  const files = await fs.readdir(targetDir);\n\n  if (files.length === 0) {\n    return;\n  }\n  const { shouldContinue } = await prompts(\n    {\n      type: 'confirm',\n      name: 'shouldContinue',\n      message: `The target directory ${chalk.magenta(\n        targetDir\n      )} is not empty, do you want to continue anyway?`,\n      initial: true,\n    },\n    {\n      onCancel: () => false,\n    }\n  );\n  if (!shouldContinue) {\n    process.exit(0);\n  }\n}\n\n/**\n * Prints how the user can follow up once the script finishes creating the module.\n */\nfunction printFurtherInstructions(\n  targetDir: string,\n  packageManager: PackageManagerName,\n  includesExample: boolean\n) {\n  if (includesExample) {\n    const commands = [\n      `cd ${path.relative(CWD, targetDir)}`,\n      formatRunCommand(packageManager, 'open:ios'),\n      formatRunCommand(packageManager, 'open:android'),\n    ];\n\n    console.log();\n    console.log(\n      'To start developing your module, navigate to the directory and open iOS and Android projects of the example app'\n    );\n    commands.forEach((command) => console.log(chalk.gray('>'), chalk.bold(command)));\n    console.log();\n  }\n  console.log(`Learn more on Expo Modules APIs: ${chalk.blue.bold(DOCS_URL)}`);\n}\n\nfunction printFurtherLocalInstructions(slug: string, name: string) {\n  console.log();\n  console.log(`You can now import this module inside your application.`);\n  console.log(`For example, you can add this line to your App.js or App.tsx file:`);\n  console.log(`${chalk.gray.italic(`import { hello } from './modules/${slug}';`)}`);\n  console.log();\n  console.log(`Learn more on Expo Modules APIs: ${chalk.blue.bold(DOCS_URL)}`);\n  console.log(\n    chalk.yellow(\n      `Remember you need to rebuild your development client or reinstall pods to see the changes.`\n    )\n  );\n}\n\nconst program = new Command();\n\nprogram\n  .name(packageJson.name)\n  .version(packageJson.version)\n  .description(packageJson.description)\n  .arguments('[path]')\n  .option(\n    '-s, --source <source_dir>',\n    'Local path to the template. By default it downloads `expo-module-template` from NPM.'\n  )\n  .option('--with-readme', 'Whether to include README.md file.', false)\n  .option('--with-changelog', 'Whether to include CHANGELOG.md file.', false)\n  .option('--no-example', 'Whether to skip creating the example app.', false)\n  .option(\n    '--local',\n    'Whether to create a local module in the current project, skipping installing node_modules and creating the example directory.',\n    false\n  )\n  .action(main);\n\nprogram\n  .hook('postAction', async () => {\n    await getTelemetryClient().flush?.();\n  })\n  .parse(process.argv);\n"]}