{"version":3,"file":"index.mjs","sources":["../src/node/core/config.ts","../src/node/core/errors.ts","../src/node/core/exports.ts","../src/node/core/logger.ts","../src/node/core/pkg.ts","../src/node/core/tsconfig.ts","../src/node/createBuildContext.ts","../src/node/createTasks.ts","../src/node/tasks/dts/diagnostic.ts","../src/node/tasks/dts/build.ts","../src/node/tasks/dts/watch.ts","../src/node/tasks/vite/config.ts","../src/node/tasks/vite/build.ts","../src/node/tasks/vite/watch.ts","../src/node/tasks/index.ts","../src/node/build.ts","../src/node/watch.ts","../src/node/core/files.ts","../src/node/check.ts","../src/node/core/git.ts","../src/node/templates/create.ts","../src/node/templates/internal/files/editorConfig.ts","../src/node/templates/internal/files/gitIgnore.ts","../src/node/templates/internal/files/prettier.ts","../src/node/templates/internal/default.ts","../src/node/templates/load.ts","../src/node/init.ts"],"sourcesContent":["import { register } from 'esbuild-register/dist/node';\nimport * as fs from 'fs';\nimport os from 'os';\nimport * as path from 'path';\nimport pkgUp from 'pkg-up';\n\nimport type { Export } from './exports';\nimport type { Logger } from './logger';\nimport type { Runtime } from '../createBuildContext';\nimport type { InlineConfig, PluginOption } from 'vite';\n\ninterface LoadConfigOptions {\n  cwd: string;\n  logger: Logger;\n}\n\nconst CONFIG_FILE_NAMES = [\n  'packup.config.ts',\n  'packup.config.js',\n  'packup.config.cjs',\n  'packup.config.mjs',\n];\n\nconst loadConfig = async ({ cwd, logger }: LoadConfigOptions): Promise<Config | undefined> => {\n  const pkgPath = await pkgUp({ cwd });\n\n  if (!pkgPath) {\n    logger.debug(\n      'Could not find a package.json in the current directory, therefore no config was loaded'\n    );\n\n    return undefined;\n  }\n\n  const root = path.dirname(pkgPath);\n\n  for (const fileName of CONFIG_FILE_NAMES) {\n    const configPath = path.resolve(root, fileName);\n\n    const exists = fs.existsSync(configPath);\n\n    if (exists) {\n      const esbuildOptions = { extensions: ['.js', '.mjs', '.ts'] };\n\n      const { unregister } = register(esbuildOptions);\n\n      // eslint-disable-next-line @typescript-eslint/no-var-requires\n      const mod = require(configPath);\n\n      unregister();\n\n      /**\n       * handles esm or cjs exporting.\n       */\n      const config = mod?.default || mod || undefined;\n\n      if (config) {\n        logger.debug('Loaded configuration:', os.EOL, config);\n      }\n\n      return config;\n    }\n  }\n\n  return undefined;\n};\n\ninterface ConfigBundle {\n  source: string;\n  import?: string;\n  require?: string;\n  runtime?: Runtime;\n  tsconfig?: string;\n  types?: string;\n}\n\ninterface ConfigOptions {\n  bundles?: ConfigBundle[];\n  /**\n   * @description the directory to output the bundle to.\n   */\n  dist?: string;\n  /**\n   * @description Overwrite the default exports.\n   */\n  exports?: ConfigProperty<Record<string, Export>>;\n  /**\n   * @description a list of external dependencies to exclude from the bundle.\n   * We already collect the dependencies & peerDeps from the package.json.\n   */\n  externals?: string[];\n  minify?: boolean;\n  plugins?: PluginOption[] | (({ runtime }: { runtime: Runtime }) => PluginOption[]);\n  /**\n   * @alpha\n   *\n   * @description Instead of creating as few chunks as possible, this mode\n   * will create separate chunks for all modules using the original module\n   * names as file names\n   */\n  preserveModules?: boolean;\n  sourcemap?: boolean;\n  runtime?: Runtime;\n  /**\n   * @description path to the tsconfig file to use for the bundle.\n   *\n   * @default tsconfig.build.json\n   */\n  tsconfig?: string;\n\n  /**\n   * @experimental\n   * @description option to overwrite vite's config\n   */\n  unstable_viteConfig?: InlineConfig;\n}\n\n/**\n * @public\n *\n * @description a helper function to define your config in a typesafe manner.\n */\nconst defineConfig = (configOptions: ConfigOptions): ConfigOptions => configOptions;\n\ntype Config = ConfigOptions;\n\ntype ConfigPropertyResolver<T> = (currentValue: T) => T;\n\ntype ConfigProperty<T> = T | ConfigPropertyResolver<T>;\n\n/** @internal */\nexport function resolveConfigProperty<T>(prop: ConfigProperty<T> | undefined, initialValue: T): T {\n  if (prop === undefined || prop === null) {\n    return initialValue;\n  }\n\n  if (typeof prop === 'function') {\n    return (prop as ConfigPropertyResolver<T>)(initialValue);\n  }\n\n  return prop;\n}\n\nexport { loadConfig, defineConfig, CONFIG_FILE_NAMES };\nexport type {\n  Config,\n  ConfigOptions,\n  ConfigBundle,\n  ConfigPropertyResolver,\n  ConfigProperty,\n  PluginOption,\n  Runtime,\n};\n","const isError = (err: unknown): err is Error => err instanceof Error;\n\nexport { isError };\n","import os from 'os';\n\nimport type { Logger } from './logger';\nimport type { PackageJson } from './pkg';\n\n/**\n * @description validate the `exports` property of the package.json against a set of rules.\n * If the validation fails, the process will throw with an appropriate error message. If\n * there is no `exports` property we check the standard export-like properties on the root\n * of the package.json.\n */\nconst validateExportsOrdering = async ({\n  pkg,\n  logger,\n}: {\n  pkg: PackageJson;\n  logger: Logger;\n}): Promise<PackageJson> => {\n  if (pkg.exports) {\n    const exports = Object.entries(pkg.exports);\n\n    for (const [expPath, exp] of exports) {\n      if (typeof exp === 'string') {\n        // eslint-disable-next-line no-continue\n        continue;\n      }\n\n      const keys = Object.keys(exp);\n\n      if (!assertFirst('types', keys)) {\n        throw new Error(`exports[\"${expPath}\"]: the 'types' property should be the first property`);\n      }\n\n      if (exp.node) {\n        const nodeKeys = Object.keys(exp.node);\n\n        if (!assertOrder('module', 'import', nodeKeys)) {\n          throw new Error(\n            `exports[\"${expPath}\"]: the 'node.module' property should come before the 'node.import' property`\n          );\n        }\n\n        if (!assertOrder('import', 'require', nodeKeys)) {\n          logger.warn(\n            `exports[\"${expPath}\"]: the 'node.import' property should come before the 'node.require' property`\n          );\n        }\n\n        if (!assertOrder('module', 'require', nodeKeys)) {\n          logger.warn(\n            `exports[\"${expPath}\"]: the 'node.module' property should come before 'node.require' property`\n          );\n        }\n\n        if (exp.import && exp.node.import && !assertOrder('node', 'import', keys)) {\n          throw new Error(\n            `exports[\"${expPath}\"]: the 'node' property should come before the 'import' property`\n          );\n        }\n\n        if (exp.module && exp.node.module && !assertOrder('node', 'module', keys)) {\n          throw new Error(\n            `exports[\"${expPath}\"]: the 'node' property should come before the 'module' property`\n          );\n        }\n\n        /**\n         * If there's a `node.import` property but not a `node.require` we can assume `node.import`\n         * is wrapping `import` and `node.module` should be added for bundlers.\n         */\n        if (\n          exp.node.import &&\n          (!exp.node.require || exp.require === exp.node.require) &&\n          !exp.node.module\n        ) {\n          logger.warn(\n            `exports[\"${expPath}\"]: the 'node.module' property should be added so bundlers don't unintentionally try to bundle 'node.import'. Its value should be '\"module\": \"${exp.import}\"'`\n          );\n        }\n\n        if (\n          exp.node.import &&\n          !exp.node.require &&\n          exp.node.module &&\n          exp.import &&\n          exp.node.module !== exp.import\n        ) {\n          throw new Error(\n            `exports[\"${expPath}\"]: the 'node.module' property should match 'import'`\n          );\n        }\n\n        if (exp.require && exp.node.require && exp.require === exp.node.require) {\n          throw new Error(\n            `exports[\"${expPath}\"]: the 'node.require' property isn't necessary as it's identical to 'require'`\n          );\n        } else if (exp.require && exp.node.require && !assertOrder('node', 'require', keys)) {\n          throw new Error(\n            `exports[\"${expPath}\"]: the 'node' property should come before the 'require' property`\n          );\n        }\n      } else {\n        if (!assertOrder('import', 'require', keys)) {\n          logger.warn(\n            `exports[\"${expPath}\"]: the 'import' property should come before the 'require' property`\n          );\n        }\n\n        if (!assertOrder('module', 'import', keys)) {\n          logger.warn(\n            `exports[\"${expPath}\"]: the 'module' property should come before 'import' property`\n          );\n        }\n      }\n      if (!assertLast('default', keys)) {\n        throw new Error(\n          `exports[\"${expPath}\"]: the 'default' property should be the last property`\n        );\n      }\n    }\n  } else if (!['main', 'module'].some((key) => Object.prototype.hasOwnProperty.call(pkg, key))) {\n    throw new Error(\"'package.json' must contain a 'main' and 'module' property\");\n  }\n\n  return pkg;\n};\n\n/** @internal */\nfunction assertFirst(key: string, arr: string[]) {\n  const aIdx = arr.indexOf(key);\n\n  // if not found, then we don't care\n  if (aIdx === -1) {\n    return true;\n  }\n\n  return aIdx === 0;\n}\n\n/** @internal */\nfunction assertLast(key: string, arr: string[]) {\n  const aIdx = arr.indexOf(key);\n\n  // if not found, then we don't care\n  if (aIdx === -1) {\n    return true;\n  }\n\n  return aIdx === arr.length - 1;\n}\n\n/** @internal */\nfunction assertOrder(keyA: string, keyB: string, arr: string[]) {\n  const aIdx = arr.indexOf(keyA);\n  const bIdx = arr.indexOf(keyB);\n\n  // if either is not found, then we don't care\n  if (aIdx === -1 || bIdx === -1) {\n    return true;\n  }\n\n  return aIdx < bIdx;\n}\n\ntype Extensions = 'cjs' | 'es';\n\ninterface ExtMap {\n  commonjs: Record<Extensions, string>;\n  module: Record<Extensions, string>;\n}\n\n/**\n * @internal\n */\nconst DEFAULT_PKG_EXT_MAP = {\n  // pkg.type: \"commonjs\"\n  commonjs: {\n    cjs: '.js',\n    es: '.mjs',\n  },\n\n  // pkg.type: \"module\"\n  module: {\n    cjs: '.cjs',\n    es: '.js',\n  },\n} satisfies ExtMap;\n\n/**\n * We potentially might need to support legacy exports or as package\n * development continues we have space to tweak this.\n */\nconst getExportExtensionMap = (): ExtMap => {\n  return DEFAULT_PKG_EXT_MAP;\n};\n\n/**\n * @internal\n *\n * @description validate the `require` and `import` properties of a given exports maps from the package.json\n * returning if any errors are found.\n */\nconst validateExports = (\n  _exports: Array<Export & { _path: string }>,\n  options: { extMap: ExtMap; pkg: PackageJson }\n) => {\n  const { extMap, pkg } = options;\n  const ext = extMap[pkg.type || 'commonjs'];\n\n  const errors = [];\n\n  for (const exp of _exports) {\n    if (exp.require && !exp.require.endsWith(ext.cjs)) {\n      errors.push(\n        `package.json with 'type: \"${pkg.type}\"' - 'exports[\"${exp._path}\"].require' must end with \"${ext.cjs}\"`\n      );\n    }\n\n    if (exp.import && !exp.import.endsWith(ext.es)) {\n      errors.push(\n        `package.json with 'type: \"${pkg.type}\"' - 'exports[\"${exp._path}\"].import' must end with \"${ext.es}\"`\n      );\n    }\n  }\n\n  return errors;\n};\n\ninterface Export {\n  types?: string;\n  source: string;\n  browser?: {\n    source: string;\n    import?: string;\n    require?: string;\n  };\n  node?: {\n    source?: string;\n    module?: string;\n    import?: string;\n    require?: string;\n  };\n  module?: string;\n  import?: string;\n  require?: string;\n  default: string;\n}\n\n/**\n * @description parse the exports map from the package.json into a standardised\n * format that we can use to generate build tasks from.\n */\nconst parseExports = ({ extMap, pkg }: { extMap: ExtMap; pkg: PackageJson }) => {\n  const rootExport = {\n    _path: '.',\n    types: pkg.types,\n    source: pkg.source || '',\n    require: pkg.main,\n    import: pkg.module,\n    default: pkg.module || pkg.main || '',\n  } satisfies Export & { _path: string };\n\n  const extraExports: Export[] = [];\n\n  const errors: string[] = [];\n\n  if (pkg.exports) {\n    if (!pkg.exports['./package.json']) {\n      errors.push('package.json: `exports[\"./package.json\"] must be declared.');\n    }\n\n    Object.entries(pkg.exports).forEach(([path, entry]) => {\n      if (path.endsWith('.json')) {\n        if (path === './package.json' && entry !== './package.json') {\n          errors.push(\"package.json: 'exports[\\\"./package.json\\\"]' must be './package.json'.\");\n        }\n      } else if (Boolean(entry) && typeof entry === 'object' && !Array.isArray(entry)) {\n        if (path === '.') {\n          if (entry.require && rootExport.require && entry.require !== rootExport.require) {\n            errors.push(\n              \"package.json: mismatch between 'main' and 'exports.require'. These must be equal.\"\n            );\n          }\n\n          if (entry.import && rootExport.import && entry.import !== rootExport.import) {\n            errors.push(\n              \"package.json: mismatch between 'module' and 'exports.import' These must be equal.\"\n            );\n          }\n\n          if (entry.types && rootExport.types && entry.types !== rootExport.types) {\n            errors.push(\n              \"package.json: mismatch between 'types' and 'exports.types'. These must be equal.\"\n            );\n          }\n\n          if (entry.source && rootExport.source && entry.source !== rootExport.source) {\n            errors.push(\n              \"package.json: mismatch between 'source' and 'exports.source'. These must be equal.\"\n            );\n          }\n\n          Object.assign(rootExport, entry);\n        } else {\n          const extraExport = {\n            _exported: true,\n            _path: path,\n            ...entry,\n          };\n\n          extraExports.push(extraExport);\n        }\n      } else if (!['string', 'object'].includes(typeof entry)) {\n        errors.push('package.json: exports must be an object or string');\n      }\n    });\n  }\n\n  // eslint-disable-next-line @typescript-eslint/naming-convention\n  const _exports = [\n    /**\n     * In the case of strapi plugins, we don't have a root export because we\n     * ship a server side and client side package. So this can be completely omitted.\n     */\n    Object.values(rootExport).some((exp) => exp !== rootExport._path && Boolean(exp)) && rootExport,\n    ...extraExports,\n  ].filter((exp) => Boolean(exp)) as Array<Export & { _path: string }>;\n\n  errors.push(...validateExports(_exports, { extMap, pkg }));\n\n  if (errors.length) {\n    throw new Error(`${os.EOL}- ${errors.join(`${os.EOL}- `)}`);\n  }\n\n  return _exports;\n};\n\nexport { validateExportsOrdering, getExportExtensionMap, parseExports };\nexport type { ExtMap, Export, Extensions };\n","import chalk from 'chalk';\n\ninterface LoggerOptions {\n  silent?: boolean;\n  debug?: boolean;\n}\n\nexport interface Logger {\n  warnings: number;\n  errors: number;\n  debug: (...args: any[]) => void;\n  info: (...args: any[]) => void;\n  warn: (...args: any[]) => void;\n  error: (...args: any[]) => void;\n  log: (...args: any[]) => void;\n  success: (...args: any[]) => void;\n}\n\nexport const createLogger = (options: LoggerOptions = {}): Logger => {\n  const { silent = false, debug = false } = options;\n\n  const state = { errors: 0, warning: 0 };\n\n  return {\n    get warnings() {\n      return state.warning;\n    },\n\n    get errors() {\n      return state.errors;\n    },\n\n    debug(...args) {\n      if (silent || !debug) {\n        return;\n      }\n\n      console.debug(chalk.cyan('[DEBUG] '), ...args);\n    },\n\n    info(...args) {\n      if (silent) {\n        return;\n      }\n\n      console.info(chalk.blue('[INFO] '), ...args);\n    },\n\n    log(...args) {\n      if (silent) {\n        return;\n      }\n\n      console.log(...args);\n    },\n\n    warn(...args) {\n      state.warning += 1;\n\n      if (silent) {\n        return;\n      }\n\n      console.warn(chalk.yellow('[WARN] '), ...args);\n    },\n\n    error(...args) {\n      state.errors += 1;\n\n      if (silent) {\n        return;\n      }\n\n      console.error(chalk.red('[ERROR] '), ...args);\n    },\n\n    success(...args) {\n      if (silent) {\n        return;\n      }\n\n      console.info(chalk.green('[SUCCESS] '), ...args);\n    },\n  };\n};\n","/**\n * Utility functions for loading and validating package.json\n * this includes the specific validation of specific parts of\n * the package.json.\n */\nimport chalk from 'chalk';\nimport fs from 'fs/promises';\nimport os from 'os';\nimport pkgUp from 'pkg-up';\nimport * as yup from 'yup';\n\nimport type { Export } from './exports';\nimport type { Logger } from './logger';\n\nconst record = (value: unknown) =>\n  yup\n    .object(\n      typeof value === 'object' && value\n        ? Object.entries(value).reduce<Record<string, yup.SchemaOf<string>>>((acc, [key]) => {\n            acc[key] = yup.string().required();\n\n            return acc;\n          }, {})\n        : {}\n    )\n    .optional();\n\n/**\n * The schema for the package.json that we expect,\n * currently pretty loose.\n */\nconst packageJsonSchema = yup.object({\n  name: yup.string().required(),\n  version: yup.string().required(),\n  description: yup.string().optional(),\n  author: yup.lazy((value) => {\n    if (typeof value === 'object') {\n      return yup\n        .object({\n          name: yup.string().required(),\n          email: yup.string().optional(),\n          url: yup.string().optional(),\n        })\n        .optional();\n    }\n\n    return yup.string().optional();\n  }),\n  keywords: yup.array(yup.string()).optional(),\n  type: yup.mixed().oneOf(['commonjs', 'module']).optional(),\n  license: yup.string().optional(),\n  repository: yup\n    .object({\n      type: yup.string().required(),\n      url: yup.string().required(),\n    })\n    .optional(),\n  bugs: yup\n    .object({\n      url: yup.string().required(),\n    })\n    .optional(),\n  homepage: yup.string().optional(),\n  // TODO: be nice just to make this either a string or a record of strings.\n  bin: yup.lazy((value) => {\n    if (typeof value === 'object') {\n      return record(value);\n    }\n\n    return yup.string().optional();\n  }),\n  // TODO: be nice just to make this either a string or a record of strings.\n  browser: yup.lazy((value) => {\n    if (typeof value === 'object') {\n      return record(value);\n    }\n\n    return yup.string().optional();\n  }),\n  main: yup.string().optional(),\n  module: yup.string().optional(),\n  source: yup.string().optional(),\n  types: yup.string().optional(),\n  exports: yup.lazy((value) =>\n    yup\n      .object(\n        typeof value === 'object'\n          ? Object.entries(value).reduce(\n              (acc, [key, v]) => {\n                if (typeof v === 'object') {\n                  // @ts-expect-error yup is not typed correctly\n                  acc[key] = yup\n                    .object({\n                      types: yup.string().optional(),\n                      source: yup.string().required(),\n                      browser: yup\n                        .object({\n                          source: yup.string().required(),\n                          import: yup.string().optional(),\n                          require: yup.string().optional(),\n                        })\n                        .optional(),\n                      node: yup\n                        .object({\n                          source: yup.string().optional(),\n                          module: yup.string().optional(),\n                          import: yup.string().optional(),\n                          require: yup.string().optional(),\n                        })\n                        .optional(),\n                      module: yup.string().optional(),\n                      import: yup.string().optional(),\n                      require: yup.string().optional(),\n                      default: yup.string().required(),\n                    })\n                    .noUnknown(true);\n                } else {\n                  acc[key] = yup.string().required();\n                }\n\n                return acc;\n              },\n              {} as Record<string, yup.SchemaOf<string> | yup.SchemaOf<Export>>\n            )\n          : undefined\n      )\n      .optional()\n  ),\n  files: yup.array(yup.string()).optional(),\n  scripts: yup.lazy(record),\n  dependencies: yup.lazy(record),\n  devDependencies: yup.lazy(record),\n  peerDependencies: yup.lazy(record),\n  engines: yup.lazy(record),\n  browserslist: yup.array(yup.string().required()).optional(),\n});\n\n/**\n * @description being a task to load the package.json starting from the current working directory\n * using a shallow find for the package.json  and `fs` to read the file. If no package.json is found,\n * the process will throw with an appropriate error message.\n */\nconst loadPkg = async ({ cwd, logger }: { cwd: string; logger: Logger }): Promise<object> => {\n  const pkgPath = await pkgUp({ cwd });\n\n  if (!pkgPath) {\n    throw new Error('Could not find a package.json in the current directory');\n  }\n\n  const buffer = await fs.readFile(pkgPath);\n\n  const pkg = JSON.parse(buffer.toString());\n\n  logger.debug('Loaded package.json:', os.EOL, pkg);\n\n  return pkg;\n};\n\ninterface PackageJson extends Omit<yup.Asserts<typeof packageJsonSchema>, 'type'> {\n  type?: 'commonjs' | 'module';\n}\n\n/**\n * @description validate the package.json against a standardised schema using `yup`.\n * If the validation fails, the process will throw with an appropriate error message.\n */\nconst validatePkg = async ({ pkg }: { pkg: object }): Promise<PackageJson> => {\n  try {\n    const validatedPkg = await packageJsonSchema.validate(pkg, {\n      strict: true,\n    });\n\n    return validatedPkg;\n  } catch (err) {\n    if (err instanceof yup.ValidationError) {\n      switch (err.type) {\n        case 'required':\n          if (err.path) {\n            throw new Error(\n              `'${err.path}' in 'package.json' is required as type '${chalk.magenta(\n                yup.reach(packageJsonSchema, err.path).type\n              )}'`\n            );\n          }\n          break;\n        case 'matches':\n          if (err.params && err.path && 'value' in err.params && 'regex' in err.params) {\n            throw new Error(\n              `'${err.path}' in 'package.json' must be of type '${chalk.magenta(\n                err.params.regex\n              )}' (recieved the value '${chalk.magenta(err.params.value)}')`\n            );\n          }\n          break;\n        /**\n         * This will only be thrown if there are keys in the export map\n         * that we don't expect so we can therefore make some assumptions\n         */\n        case 'noUnknown':\n          if (err.path && err.params && 'unknown' in err.params) {\n            throw new Error(\n              `'${err.path}' in 'package.json' contains the unknown key ${chalk.magenta(\n                err.params.unknown\n              )}, for compatability only the following keys are allowed: ${chalk.magenta(\n                \"['types', 'source', 'import', 'require', 'default']\"\n              )}`\n            );\n          }\n          break;\n        default:\n          if (err.path && err.params && 'type' in err.params && 'value' in err.params) {\n            throw new Error(\n              `'${err.path}' in 'package.json' must be of type '${chalk.magenta(\n                err.params.type\n              )}' (recieved '${chalk.magenta(typeof err.params.value)}')`\n            );\n          }\n      }\n    }\n\n    throw err;\n  }\n};\n\nexport { loadPkg, validatePkg };\nexport type { PackageJson };\n","import os from 'os';\nimport nodePath from 'path';\nimport ts from 'typescript';\n\nimport type { Logger } from './logger';\n\n/**\n * @description Load a tsconfig.json file and return the parsed config\n * after injecting some required defaults for producing types.\n *\n * @internal\n */\nconst loadTsConfig = ({\n  cwd,\n  path,\n  logger,\n}: {\n  cwd: string;\n  path: string;\n  logger: Logger;\n}):\n  | {\n      config: ts.ParsedCommandLine;\n      path: string;\n    }\n  | undefined => {\n  const providedPath = path.split(nodePath.sep);\n  const [configFileName] = providedPath.slice(-1);\n  const pathToConfig = nodePath.join(cwd, providedPath.slice(0, -1).join(nodePath.sep));\n\n  const configPath = ts.findConfigFile(pathToConfig, ts.sys.fileExists, configFileName);\n\n  if (!configPath) {\n    return undefined;\n  }\n\n  const configFile = ts.readConfigFile(configPath, ts.sys.readFile);\n\n  const parsedConfig = ts.parseJsonConfigFileContent(configFile.config, ts.sys, pathToConfig);\n\n  logger.debug('Loaded user TS config:', os.EOL, parsedConfig);\n\n  const { outDir } = parsedConfig.raw.compilerOptions;\n\n  if (!outDir) {\n    throw new Error(\"tsconfig.json is missing 'compilerOptions.outDir'\");\n  }\n\n  parsedConfig.options = {\n    ...parsedConfig.options,\n    declaration: true,\n    declarationDir: outDir,\n    emitDeclarationOnly: true,\n    noEmit: false,\n    outDir,\n  };\n\n  logger.debug('Using TS config:', os.EOL, parsedConfig);\n\n  return {\n    config: parsedConfig,\n    path: configPath,\n  };\n};\n\nexport { loadTsConfig };\n","import browserslistToEsbuild from 'browserslist-to-esbuild';\nimport path from 'path';\n\nimport { resolveConfigProperty } from './core/config';\nimport { parseExports } from './core/exports';\nimport { loadTsConfig } from './core/tsconfig';\n\nimport type { Config } from './core/config';\nimport type { ExtMap, Export } from './core/exports';\nimport type { Logger } from './core/logger';\nimport type { PackageJson } from './core/pkg';\nimport type { ParsedCommandLine } from 'typescript';\n\ninterface BuildContextArgs {\n  config: Config;\n  cwd: string;\n  extMap: ExtMap;\n  logger: Logger;\n  pkg: PackageJson;\n}\n\ninterface Targets {\n  node: string[];\n  web: string[];\n  '*': string[];\n}\n\ntype Runtime = '*' | 'node' | 'web';\n\ninterface BuildContext {\n  config: Config;\n  cwd: string;\n  distPath: string;\n  exports: Record<string, Export>;\n  external: string[];\n  extMap: ExtMap;\n  logger: Logger;\n  pkg: PackageJson;\n  runtime?: Runtime;\n  targets: Targets;\n  ts?: {\n    config: ParsedCommandLine;\n    path: string;\n  };\n}\n\nconst DEFAULT_BROWSERS_LIST_CONFIG = [\n  'last 3 major versions',\n  'Firefox ESR',\n  'last 2 Opera  versions',\n  'not dead',\n  'node 18.0.0',\n];\n\n/**\n * @description Create a build context for the pipeline we're creating,\n * this is shared among tasks so they all use the same settings for core pieces\n * such as a target, distPath, externals etc.\n */\nconst createBuildContext = async ({\n  config,\n  cwd,\n  extMap,\n  logger,\n  pkg,\n}: BuildContextArgs): Promise<BuildContext> => {\n  const tsConfig = loadTsConfig({\n    cwd,\n    path: resolveConfigProperty(config.tsconfig, 'tsconfig.build.json'),\n    logger,\n  });\n\n  const targets = {\n    '*': browserslistToEsbuild(pkg.browserslist ?? DEFAULT_BROWSERS_LIST_CONFIG),\n    node: browserslistToEsbuild(['node 18.0.0']),\n    web: ['esnext'],\n  };\n\n  const parsedExports = parseExports({ extMap, pkg }).reduce(\n    (acc, x) => {\n      const { _path: exportPath, ...exportEntry } = x;\n\n      return { ...acc, [exportPath]: exportEntry };\n    },\n    {} as Record<string, Export>\n  );\n\n  const exports = resolveConfigProperty(config.exports, parsedExports);\n\n  const parsedExternals = [\n    ...(pkg.dependencies ? Object.keys(pkg.dependencies) : []),\n    ...(pkg.peerDependencies ? Object.keys(pkg.peerDependencies) : []),\n  ];\n\n  const external =\n    config && Array.isArray(config.externals)\n      ? [...parsedExternals, ...config.externals]\n      : parsedExternals;\n\n  const outputPaths = Object.values(exports)\n    .flatMap((exportEntry) => {\n      return [\n        exportEntry.import,\n        exportEntry.require,\n        exportEntry.browser?.import,\n        exportEntry.browser?.require,\n        exportEntry.node?.source && exportEntry.node.import,\n        exportEntry.node?.source && exportEntry.node.require,\n      ].filter(Boolean) as string[];\n    })\n    .map((p) => path.resolve(cwd, p));\n\n  const commonDistPath = findCommonDirPath(outputPaths);\n\n  if (commonDistPath === cwd) {\n    throw new Error(\n      'all output files must share a common parent directory which is not the root package directory'\n    );\n  }\n\n  if (commonDistPath && !pathContains(cwd, commonDistPath)) {\n    throw new Error('all output files must be located within the package');\n  }\n\n  const configDistPath = config?.dist ? path.resolve(cwd, config.dist) : undefined;\n\n  const distPath = configDistPath || commonDistPath;\n\n  if (!distPath) {\n    throw new Error(\"could not detect 'dist' path\");\n  }\n\n  return {\n    config,\n    cwd,\n    distPath,\n    exports,\n    external,\n    extMap,\n    logger,\n    pkg,\n    runtime: config?.runtime,\n    targets,\n    ts: tsConfig,\n  };\n};\n\n/**\n * @internal\n */\nconst pathContains = (containerPath: string, itemPath: string): boolean => {\n  return !path.relative(containerPath, itemPath).startsWith('..');\n};\n\n/**\n * @internal\n */\nconst findCommonDirPath = (filePaths: string[]): string | undefined => {\n  let commonPath: string | undefined;\n\n  for (const filePath of filePaths) {\n    let dirPath = path.dirname(filePath);\n\n    if (!commonPath) {\n      commonPath = dirPath;\n      // eslint-disable-next-line no-continue\n      continue;\n    }\n\n    while (dirPath !== commonPath) {\n      dirPath = path.dirname(dirPath);\n\n      if (dirPath === commonPath) {\n        break;\n      }\n\n      if (pathContains(dirPath, commonPath)) {\n        commonPath = dirPath;\n        break;\n      }\n\n      if (dirPath === '.') {\n        return undefined;\n      }\n    }\n  }\n\n  return commonPath;\n};\n\nexport { createBuildContext };\nexport type { BuildContext, Targets, Runtime };\n","import path from 'path';\n\nimport type { Extensions } from './core/exports';\nimport type { BuildContext, Runtime } from './createBuildContext';\nimport type { DtsBuildTask } from './tasks/dts/build';\nimport type { DtsBaseTask } from './tasks/dts/types';\nimport type { DtsWatchTask } from './tasks/dts/watch';\nimport type { ViteBuildTask } from './tasks/vite/build';\nimport type { ViteBaseTask, ViteTaskEntry } from './tasks/vite/types';\nimport type { ViteWatchTask } from './tasks/vite/watch';\n\ntype BuildTask = DtsBuildTask | ViteBuildTask;\ntype WatchTask = ViteWatchTask | DtsWatchTask;\n\ntype BaseTask = ViteBaseTask | DtsBaseTask;\n\n/**\n * @description Create the build tasks for the pipeline, this\n * comes from the exports map we've created in the build context.\n * But handles each export line uniquely with space to add more\n * as the standard develops.\n */\nconst createTasks =\n  <TMode extends 'build' | 'watch'>(mode: TMode) =>\n  async (ctx: BuildContext): Promise<TMode extends 'build' ? BuildTask[] : WatchTask[]> => {\n    const tasks: Array<BaseTask> = [];\n\n    const dtsTask: DtsBaseTask = {\n      type: `${mode}:dts`,\n      entries: [],\n    };\n\n    const viteTasks: Record<string, ViteBaseTask> = {};\n\n    const createViteTask = (\n      format: Extensions,\n      runtime: Runtime,\n      { output, ...restEntry }: ViteTaskEntry & Pick<ViteWatchTask | ViteBuildTask, 'output'>\n    ) => {\n      const buildId = `${format}:${output}`;\n\n      if (viteTasks[buildId]) {\n        viteTasks[buildId]?.entries.push(restEntry);\n\n        if (output !== viteTasks[buildId]?.output) {\n          ctx.logger.warn(\n            'Multiple entries with different outputs for the same format are not supported. The first output will be used.'\n          );\n        }\n      } else {\n        viteTasks[buildId] = {\n          type: `${mode}:js`,\n          format,\n          output,\n          runtime,\n          entries: [restEntry],\n        };\n      }\n    };\n\n    const exps = Object.entries(ctx.exports).map(([exportPath, exportEntry]) => ({\n      ...exportEntry,\n      _path: exportPath,\n    }));\n\n    for (const exp of exps) {\n      if (exp.types) {\n        const importId = path.join(ctx.pkg.name, exp._path);\n\n        dtsTask.entries.push({\n          importId,\n          exportPath: exp._path,\n          sourcePath: exp.source,\n          targetPath: exp.types,\n        });\n      }\n\n      if (exp.require) {\n        /**\n         * register CJS task\n         */\n        createViteTask('cjs', ctx.runtime ?? '*', {\n          path: exp._path,\n          entry: exp.source,\n          output: exp.require,\n        });\n      }\n\n      if (exp.import) {\n        /**\n         * register ESM task\n         */\n        createViteTask('es', ctx.runtime ?? '*', {\n          path: exp._path,\n          entry: exp.source,\n          output: exp.import,\n        });\n      }\n\n      if (exp.browser?.require) {\n        createViteTask('cjs', 'web', {\n          path: exp._path,\n          entry: exp.browser?.source || exp.source,\n          output: exp.browser.require,\n        });\n      }\n\n      if (exp.browser?.import) {\n        createViteTask('cjs', 'web', {\n          path: exp._path,\n          entry: exp.browser?.source || exp.source,\n          output: exp.browser.import,\n        });\n      }\n    }\n\n    const bundles = ctx.config.bundles ?? [];\n\n    for (const bundle of bundles) {\n      const idx = bundles.indexOf(bundle);\n\n      if (bundle.require) {\n        createViteTask('cjs', (bundle.runtime || ctx.runtime) ?? '*', {\n          path: `bundle_cjs_${idx}`,\n          entry: bundle.source,\n          output: bundle.require,\n        });\n      }\n\n      if (bundle.import) {\n        createViteTask('es', (bundle.runtime || ctx.runtime) ?? '*', {\n          path: `bundle_esm_${idx}`,\n          entry: bundle.source,\n          output: bundle.import,\n        });\n      }\n\n      if (bundle.types) {\n        const importId = path.join(ctx.pkg.name, bundle.source);\n\n        dtsTask.entries.push({\n          importId,\n          exportPath: bundle.source,\n          sourcePath: bundle.source,\n          targetPath: bundle.types,\n          tsconfig: bundle.tsconfig,\n        });\n      }\n    }\n\n    if (dtsTask.entries.length) {\n      tasks.push(dtsTask);\n    }\n    if (Object.values(viteTasks).length) {\n      tasks.push(...Object.values(viteTasks));\n    }\n\n    return tasks as TMode extends 'build' ? BuildTask[] : WatchTask[];\n  };\n\nconst createBuildTasks = createTasks('build');\nconst createWatchTasks = createTasks('watch');\n\nexport { createBuildTasks, createWatchTasks };\nexport type { BuildTask, WatchTask, BaseTask };\n","import chalk from 'chalk';\nimport path from 'path';\nimport ts from 'typescript';\n\nimport type { Logger } from '../../core/logger';\n\nconst printDiagnostic = (\n  diagnostic: ts.Diagnostic,\n  { logger, cwd }: { logger: Logger; cwd: string }\n) => {\n  let output = ts.flattenDiagnosticMessageText(diagnostic.messageText, ts.sys.newLine);\n\n  if (diagnostic.file && diagnostic.start) {\n    const { line, character } = ts.getLineAndCharacterOfPosition(diagnostic.file, diagnostic.start);\n    const message = ts.flattenDiagnosticMessageText(diagnostic.messageText, ts.sys.newLine);\n\n    const file = path.relative(cwd, diagnostic.file.fileName);\n\n    output = [\n      `${chalk.cyan(file)}:${chalk.cyan(line + 1)}:${chalk.cyan(character + 1)} - `,\n      `${chalk.gray(`TS${diagnostic.code}:`)} ${message}`,\n    ].join('');\n  }\n\n  switch (diagnostic.category) {\n    case ts.DiagnosticCategory.Error:\n      logger.error(output);\n      break;\n    case ts.DiagnosticCategory.Warning:\n      logger.warn(output);\n      break;\n    case ts.DiagnosticCategory.Message:\n      logger.info(output);\n      break;\n    case ts.DiagnosticCategory.Suggestion:\n      logger.info(output);\n      break;\n    default:\n      break;\n  }\n};\n\nexport { printDiagnostic };\n","import chalk from 'chalk';\nimport os from 'os';\nimport { Observable } from 'rxjs';\nimport ts from 'typescript';\n\nimport { isError } from '../../core/errors';\nimport { loadTsConfig } from '../../core/tsconfig';\n\nimport { printDiagnostic } from './diagnostic';\n\nimport type { DtsBaseTask } from './types';\nimport type { TaskHandler } from '../index';\n\ninterface DtsBuildTask extends DtsBaseTask {\n  type: 'build:dts';\n}\n\nconst dtsBuildTask: TaskHandler<DtsBuildTask> = {\n  print(ctx, task) {\n    const entries = [\n      '   entries:',\n      ...task.entries.map((entry) =>\n        [\n          '    – ',\n          chalk.green(`${entry.importId} `),\n          `${chalk.cyan(entry.sourcePath)} ${chalk.gray('->')} ${chalk.cyan(entry.targetPath)}`,\n        ].join('')\n      ),\n    ];\n\n    ctx.logger.log(['Building type files:', ...entries].join(os.EOL));\n  },\n  run$(ctx, task) {\n    return new Observable((subscriber) => {\n      Promise.all(\n        task.entries.map(async (entry) => {\n          /**\n           * Entry level tsconfig's take precedence\n           */\n          const tsconfig = entry.tsconfig\n            ? loadTsConfig({\n                cwd: ctx.cwd,\n                path: entry.tsconfig,\n                logger: ctx.logger,\n              })\n            : ctx.ts;\n\n          if (!tsconfig) {\n            ctx.logger.warn(\n              `You've added a types entry but no tsconfig.json was found for ${entry.targetPath}. Skipping...`\n            );\n\n            return;\n          }\n\n          const program = ts.createProgram(tsconfig.config.fileNames, tsconfig.config.options);\n\n          const emitResult = program.emit();\n\n          const allDiagnostics = ts.getPreEmitDiagnostics(program).concat(emitResult.diagnostics);\n\n          for (const diagnostic of allDiagnostics) {\n            printDiagnostic(diagnostic, { logger: ctx.logger, cwd: ctx.cwd });\n          }\n\n          const errors = allDiagnostics.filter(\n            (diag) => diag.category === ts.DiagnosticCategory.Error\n          );\n\n          if (errors.length) {\n            throw new Error('Failed to compile TypeScript definitions');\n          }\n        })\n      )\n        .then(() => {\n          subscriber.complete();\n        })\n        .catch((err) => {\n          subscriber.error(err);\n        });\n    });\n  },\n  async success(ctx, task) {\n    const msg = [\n      'Built types, entries:',\n      task.entries\n        .map(\n          (entry) =>\n            `    ${chalk.blue(`${entry.importId}`)}: ${entry.sourcePath} -> ${entry.targetPath}`\n        )\n        .join(os.EOL),\n    ];\n\n    ctx.logger.success(msg.join(os.EOL));\n  },\n  async fail(ctx, task, err) {\n    if (isError(err)) {\n      ctx.logger.error(err.message);\n    }\n  },\n};\n\nexport { dtsBuildTask };\n\nexport type { DtsBuildTask };\n","import chalk from 'chalk';\nimport os from 'os';\nimport { Observable } from 'rxjs';\nimport ts from 'typescript';\n\nimport { isError } from '../../core/errors';\nimport { loadTsConfig } from '../../core/tsconfig';\n\nimport { printDiagnostic } from './diagnostic';\n\nimport type { DtsBaseTask } from './types';\nimport type { TaskHandler } from '../index';\n\ninterface DtsWatchTask extends DtsBaseTask {\n  type: 'watch:dts';\n}\n\nconst dtsWatchTask: TaskHandler<DtsWatchTask, ts.Diagnostic> = {\n  print(ctx, task) {\n    const msg = [\n      'Building Types, entries:',\n      task.entries\n        .map(\n          (entry) =>\n            `    ${chalk.blue(`${entry.importId}`)}: ${entry.sourcePath} -> ${entry.targetPath}`\n        )\n        .join(os.EOL),\n    ];\n\n    ctx.logger.success(msg.join(os.EOL));\n  },\n  run$(ctx, task) {\n    let programs: Array<\n      ts.WatchOfConfigFile<ts.EmitAndSemanticDiagnosticsBuilderProgram> | undefined\n    > = [];\n\n    return new Observable((subscriber) => {\n      Promise.all(\n        task.entries.map(async (entry) => {\n          /**\n           * Entry level tsconfig's take precedence\n           */\n          const tsconfig = entry.tsconfig\n            ? loadTsConfig({\n                cwd: ctx.cwd,\n                path: entry.tsconfig,\n                logger: ctx.logger,\n              })\n            : ctx.ts;\n\n          if (!tsconfig) {\n            ctx.logger.warn(\n              `You've added a types entry but no tsconfig.json was found for ${entry.targetPath}. Skipping...`\n            );\n\n            return;\n          }\n\n          const compilerHost = ts.createWatchCompilerHost(\n            tsconfig.path,\n            tsconfig.config.options,\n            ts.sys,\n            ts.createEmitAndSemanticDiagnosticsBuilderProgram,\n            (diagnostic) => {\n              subscriber.next(diagnostic);\n            },\n            (diagnostic) => {\n              subscriber.next(diagnostic);\n            }\n          );\n\n          return ts.createWatchProgram(compilerHost);\n        })\n      )\n        .then((progs) => {\n          programs = progs;\n        })\n        .catch((err) => {\n          subscriber.error(err);\n        });\n\n      return () => {\n        programs.forEach((prog) => {\n          prog?.close();\n        });\n      };\n    });\n  },\n  async success(ctx, task, diagnostic) {\n    const { logger, cwd } = ctx;\n\n    /**\n     * This code is \"Found 0 errors. Watching for file changes.\"\n     * which is equivalent to \"BUNDLE_END\" code with rollup/vite.\n     *\n     * So we use this to say, hey we've built your types again!\n     */\n    if (diagnostic.code === 6194) {\n      this.print(ctx, task);\n    }\n\n    /**\n     * We don't want to print messages or suggestions.\n     * Only errors and warnings in watch mode.\n     */\n    if (\n      diagnostic.category === ts.DiagnosticCategory.Message ||\n      diagnostic.category === ts.DiagnosticCategory.Suggestion\n    ) {\n      return;\n    }\n\n    printDiagnostic(diagnostic, { logger, cwd });\n  },\n  async fail(ctx, task, err) {\n    if (isError(err)) {\n      ctx.logger.error(err);\n    }\n  },\n};\n\nexport { dtsWatchTask };\n\nexport type { DtsWatchTask };\n","/* eslint-disable no-nested-ternary */\nimport react from '@vitejs/plugin-react-swc';\nimport { builtinModules } from 'node:module';\nimport path from 'path';\n\nimport { resolveConfigProperty } from '../../core/config';\n\nimport type { ViteBaseTask } from './types';\nimport type { BuildContext } from '../../createBuildContext';\nimport type { InlineConfig } from 'vite';\n\n/**\n * @internal\n */\nconst resolveViteConfig = async (ctx: BuildContext, task: ViteBaseTask) => {\n  const { cwd, distPath, targets, external, extMap, pkg, exports: exportMap } = ctx;\n  const { entries, format, output, runtime } = task;\n  const outputExt = extMap[pkg.type || 'commonjs'][format];\n  const outDir = path.relative(cwd, distPath);\n\n  const { createLogger } = await import('vite');\n  const customLogger = createLogger();\n  customLogger.warn = (msg) => ctx.logger.warn(msg);\n  customLogger.warnOnce = (msg) => ctx.logger.warn(msg);\n  customLogger.error = (msg) => ctx.logger.error(msg);\n  customLogger.info = () => {};\n\n  const exportIds = Object.keys(exportMap).map((exportPath) => path.join(pkg.name, exportPath));\n  const sourcePaths = Object.values(exportMap).map((exp) => path.resolve(cwd, exp.source));\n\n  const basePlugins = runtime === 'node' ? [] : [react()];\n\n  const plugins = ctx.config.plugins\n    ? typeof ctx.config.plugins === 'function'\n      ? ctx.config.plugins({ runtime })\n      : ctx.config.plugins\n    : [];\n\n  const config = {\n    configFile: false,\n    root: cwd,\n    mode: 'production',\n    logLevel: 'warn',\n    clearScreen: false,\n    customLogger,\n    build: {\n      minify: resolveConfigProperty(ctx.config.minify, false),\n      sourcemap: resolveConfigProperty(ctx.config.sourcemap, true),\n      /**\n       * The task runner will clear this for us\n       */\n      emptyOutDir: false,\n      target: targets[runtime],\n      outDir,\n      lib: {\n        entry: entries.map((e) => e.entry),\n        formats: [format],\n        /**\n         * this enforces the file name to match what the output we've\n         * determined from the package.json exports. However, when preserving modules\n         * we want to let Rollup handle the file names.\n         */\n        fileName: resolveConfigProperty(ctx.config.preserveModules, false)\n          ? undefined\n          : () => {\n              return `${path.relative(outDir, output).replace(/\\.[^/.]+$/, '')}${outputExt}`;\n            },\n      },\n      rollupOptions: {\n        external(id, importer) {\n          // Check if the id is a self-referencing import\n          if (exportIds?.includes(id)) {\n            return true;\n          }\n\n          // Check if the id is a file path that points to an exported source file\n          if (importer && (id.startsWith('.') || id.startsWith('/'))) {\n            const idPath = path.resolve(path.dirname(importer), id);\n\n            if (sourcePaths?.includes(idPath)) {\n              ctx.logger.warn(\n                `detected self-referencing import – treating as external: ${path.relative(\n                  cwd,\n                  idPath\n                )}`\n              );\n\n              return true;\n            }\n          }\n\n          const idParts = id.split('/');\n\n          const name = idParts[0]?.startsWith('@') ? `${idParts[0]}/${idParts[1]}` : idParts[0];\n\n          const builtinModulesWithNodePrefix = [\n            ...builtinModules,\n            ...builtinModules.map((modName) => `node:${modName}`),\n          ];\n\n          if (\n            (name && external.includes(name)) ||\n            (name && builtinModulesWithNodePrefix.includes(name))\n          ) {\n            return true;\n          }\n\n          return false;\n        },\n        output: {\n          preserveModules: resolveConfigProperty(ctx.config.preserveModules, false),\n          /**\n           * Mimic TypeScript's behavior, by setting the value to \"auto\" to control\n           * how Rollup handles default, namespace and dynamic imports from external\n           * dependencies in formats like CommonJS that do not natively support\n           * these concepts. Mainly styled-components@5\n           *\n           * For more info see https://rollupjs.org/configuration-options/#output-interop\n           */\n          interop: 'auto',\n          chunkFileNames() {\n            const parts = outputExt.split('.');\n\n            if (parts.length === 3) {\n              return `_chunks/[name]-[hash].${parts[2]}`;\n            }\n\n            return `_chunks/[name]-[hash]${outputExt}`;\n          },\n        },\n      },\n    },\n    plugins: [...basePlugins, ...plugins],\n  } satisfies InlineConfig;\n\n  return import('vite').then(({ mergeConfig }) =>\n    mergeConfig(config, ctx.config.unstable_viteConfig ?? {})\n  );\n};\n\nexport { resolveViteConfig };\n","import chalk from 'chalk';\nimport os from 'os';\nimport path from 'path';\nimport { Observable } from 'rxjs';\n\nimport { isError } from '../../core/errors';\n\nimport { resolveViteConfig } from './config';\n\nimport type { ViteBaseTask } from './types';\nimport type { TaskHandler } from '../index';\n\ninterface ViteBuildTask extends ViteBaseTask {\n  type: 'build:js';\n}\n\nconst viteBuildTask: TaskHandler<ViteBuildTask> = {\n  print(ctx, task) {\n    const targetLines = [\n      '   target:',\n      ...ctx.targets[task.runtime].map((t) => chalk.cyan(`    - ${t}`)),\n    ];\n    const entries = [\n      '   entries:',\n      ...task.entries.map((entry) =>\n        [\n          '    – ',\n          chalk.green(`${path.join(ctx.pkg.name, entry.path)}: `),\n          `${chalk.cyan(entry.entry)} ${chalk.gray('→')} ${chalk.cyan(task.output)}`,\n        ].join('')\n      ),\n    ];\n\n    ctx.logger.log(\n      ['Building javascript files:', `  format: ${task.format}`, ...targetLines, ...entries].join(\n        os.EOL\n      )\n    );\n  },\n  run$(ctx, task) {\n    return new Observable((subscriber) => {\n      resolveViteConfig(ctx, task).then((config) => {\n        ctx.logger.debug('Vite config:', os.EOL, config);\n        import('vite').then(({ build }) => {\n          build(config)\n            .then(() => {\n              subscriber.complete();\n            })\n            .catch((err) => {\n              subscriber.error(err);\n            });\n        });\n      });\n    });\n  },\n  async success(ctx, task) {\n    const msg = [\n      `Built javascript (runtime: ${task.runtime} – target: ${task.format})`,\n      task.entries\n        .map(\n          (e) => `    ${chalk.blue(path.join(ctx.pkg.name, e.path))}: ${e.entry} -> ${task.output}`\n        )\n        .join(os.EOL),\n    ];\n\n    ctx.logger.success(msg.join(os.EOL));\n  },\n  async fail(ctx, task, err) {\n    if (isError(err)) {\n      ctx.logger.error(err.message);\n    }\n  },\n};\n\nexport { viteBuildTask };\nexport type { ViteBuildTask };\n","import chalk from 'chalk';\nimport os from 'os';\nimport path from 'path';\nimport { Observable } from 'rxjs';\n\nimport { isError } from '../../core/errors';\n\nimport { resolveViteConfig } from './config';\n\nimport type { ViteBaseTask } from './types';\nimport type { TaskHandler } from '../index';\n\nexport type InputOption = string | string[] | { [entryAlias: string]: string };\n\n/**\n * This is a copy because it can't be imported from `vite`.\n */\nexport type RollupWatcherEvent =\n  | { code: 'START' }\n  | { code: 'BUNDLE_START'; input?: InputOption; output: readonly string[] }\n  | {\n      code: 'BUNDLE_END';\n      duration: number;\n      input?: InputOption;\n      output: readonly string[];\n      result: object;\n    }\n  | { code: 'END' }\n  | { code: 'ERROR'; error: object; result: object | null };\n\ninterface ViteWatchTask extends ViteBaseTask {\n  type: 'watch:js';\n}\n\nconst viteWatchTask: TaskHandler<ViteWatchTask, RollupWatcherEvent> = {\n  print(ctx, task) {\n    const msg = [\n      `Building Javascript (runtime: ${task.runtime} – target: ${task.format})`,\n      task.entries\n        .map(\n          (e) => `    ${chalk.blue(path.join(ctx.pkg.name, e.path))}: ${e.entry} -> ${task.output}`\n        )\n        .join(os.EOL),\n    ];\n\n    ctx.logger.success(msg.join(os.EOL));\n  },\n  run$(ctx, task) {\n    /**\n     * We need to return an observable here, but vite build\n     * is an async function which the observable does not want,\n     * so we do some classic let definition with if to workaround.\n     */\n    return new Observable((subscriber) => {\n      let watcher: object | null = null;\n\n      resolveViteConfig(ctx, task).then((config) => {\n        ctx.logger.debug(`Vite config:${os.EOL}`, config);\n        import('vite').then(({ build }) => {\n          build({\n            ...config,\n            mode: 'development',\n            build: {\n              ...config.build,\n              watch: {},\n            },\n          }).then((rollupWatcher) => {\n            watcher = rollupWatcher;\n\n            if ('on' in watcher && typeof watcher.on === 'function') {\n              watcher.on('event', (ev: any) => {\n                subscriber.next(ev);\n              });\n            }\n          });\n        });\n      });\n\n      return () => {\n        if (watcher !== null && 'close' in watcher && typeof watcher.close === 'function') {\n          watcher.close();\n        }\n      };\n    });\n  },\n  success(ctx, task, result) {\n    switch (result.code) {\n      case 'BUNDLE_END':\n        this.print(ctx, task);\n        break;\n      case 'ERROR':\n        ctx.logger.error(result.error);\n        break;\n      default:\n        break;\n    }\n  },\n  fail(ctx, task, err) {\n    if (isError(err)) {\n      ctx.logger.error(err);\n    }\n  },\n};\n\nexport { viteWatchTask };\nexport type { ViteWatchTask };\n","import { dtsBuildTask } from './dts/build';\nimport { dtsWatchTask } from './dts/watch';\nimport { viteBuildTask } from './vite/build';\nimport { viteWatchTask } from './vite/watch';\n\nimport type { BuildContext } from '../createBuildContext';\nimport type { DtsBuildTask } from './dts/build';\nimport type { DtsWatchTask } from './dts/watch';\nimport type { ViteBuildTask } from './vite/build';\nimport type { RollupWatcherEvent, ViteWatchTask } from './vite/watch';\nimport type { Observable } from 'rxjs';\nimport type ts from 'typescript';\n\ninterface TaskHandler<Task, Result = void> {\n  print(ctx: BuildContext, task: Task): void;\n  run$(ctx: BuildContext, task: Task): Observable<Result>;\n  success(ctx: BuildContext, task: Task, result: Result): void;\n  fail(ctx: BuildContext, task: Task, err: unknown): void;\n}\n\ninterface TaskHandlers {\n  'build:js': TaskHandler<ViteBuildTask>;\n  'build:dts': TaskHandler<DtsBuildTask>;\n  'watch:js': TaskHandler<ViteWatchTask, RollupWatcherEvent>;\n  'watch:dts': TaskHandler<DtsWatchTask, ts.Diagnostic>;\n}\n\nconst taskHandlers: TaskHandlers = {\n  'build:js': viteBuildTask,\n  'build:dts': dtsBuildTask,\n  'watch:js': viteWatchTask,\n  'watch:dts': dtsWatchTask,\n};\n\nexport { taskHandlers };\nexport type { TaskHandler, TaskHandlers };\n","import fs from 'fs/promises';\nimport ora from 'ora';\nimport os from 'os';\n\nimport { loadConfig, type Config } from './core/config';\nimport { isError } from './core/errors';\nimport { getExportExtensionMap, validateExportsOrdering } from './core/exports';\nimport { createLogger } from './core/logger';\nimport { loadPkg, validatePkg } from './core/pkg';\nimport { createBuildContext } from './createBuildContext';\nimport { createBuildTasks } from './createTasks';\nimport { taskHandlers } from './tasks';\n\nimport type { BuildTask } from './createTasks';\nimport type { TaskHandler } from './tasks';\nimport type { CommonCLIOptions } from '../types';\n\ninterface BuildCLIOptions extends CommonCLIOptions {\n  minify?: boolean;\n  sourcemap?: boolean;\n}\n\ninterface BuildWithConfigFile extends BuildCLIOptions {\n  configFile?: true;\n  config?: never;\n  cwd?: string;\n}\n\ninterface BuildWithoutConfigFile extends BuildCLIOptions {\n  configFile: false;\n  config?: Config;\n  cwd?: string;\n}\n\ntype BuildOptions = BuildWithConfigFile | BuildWithoutConfigFile;\n\nconst build = async (opts: BuildOptions = {}) => {\n  /**\n   * We always want to run in production mode when building and some packages\n   * use NODE_ENV to determine which type of package to import (looking at your react).\n   * Therefore for building, unless it's specifically set by the user, we'll set it to production.\n   */\n  process.env.NODE_ENV = process.env.NODE_ENV || 'production';\n\n  const {\n    silent,\n    debug,\n    cwd = process.cwd(),\n    configFile = true,\n    config: providedConfig,\n    ...configOptions\n  } = opts;\n\n  const logger = createLogger({ silent, debug });\n\n  /**\n   * Load the closest package.json and then verify the structure against what we expect.\n   */\n  const packageJsonLoader = ora(`Verifying package.json ${os.EOL}`).start();\n\n  const rawPkg = await loadPkg({ cwd, logger }).catch((err) => {\n    packageJsonLoader.fail();\n\n    if (isError(err)) {\n      logger.error(err.message);\n    }\n\n    logger.debug(`Path checked – ${cwd}`);\n    process.exit(1);\n  });\n\n  const validatedPkg = await validatePkg({\n    pkg: rawPkg,\n  }).catch((err) => {\n    packageJsonLoader.fail();\n\n    if (isError(err)) {\n      logger.error(err.message);\n    }\n\n    process.exit(1);\n  });\n\n  /**\n   * Validate the exports of the package incl. the order of the\n   * exports within the exports map if applicable\n   */\n  const packageJson = await validateExportsOrdering({ pkg: validatedPkg, logger }).catch((err) => {\n    packageJsonLoader.fail();\n    if (isError(err)) {\n      logger.error(err.message);\n    }\n    process.exit(1);\n  });\n\n  packageJsonLoader.succeed('Verified package.json');\n\n  /**\n   * If configFile is true – which is the default, atempt to load the config\n   * otherwise if it's explicitly false then we suspect there might be a config passed\n   * in the options, so we'll use that instead.\n   */\n  const config = configFile ? await loadConfig({ cwd, logger }) : providedConfig;\n\n  /**\n   * We create tasks based on the exports of the package.json\n   * their handlers are then ran in the order of the exports map\n   * and results are logged to see gradual progress.\n   */\n  const buildContextLoader = ora(`Creating build context ${os.EOL}`).start();\n\n  const extMap = getExportExtensionMap();\n\n  const ctx = await createBuildContext({\n    config: { ...config, ...configOptions },\n    cwd,\n    extMap,\n    logger,\n    pkg: packageJson,\n  }).catch((err) => {\n    buildContextLoader.fail();\n    if (isError(err)) {\n      logger.error(err.message);\n    }\n    process.exit(1);\n  });\n\n  logger.debug(`Build context: ${os.EOL}`, ctx);\n\n  const buildTasks = await createBuildTasks(ctx);\n\n  buildContextLoader.succeed('Created build context');\n\n  /**\n   * If the distPath already exists, clean it\n   */\n  try {\n    logger.debug(`Cleaning dist folder: ${ctx.distPath}`);\n    await fs.rm(ctx.distPath, { recursive: true, force: true });\n    logger.debug('Cleaned dist folder');\n  } catch {\n    // do nothing, it will fail if the folder does not exist\n    logger.debug('There was no dist folder to clean');\n  }\n\n  for (const task of buildTasks) {\n    const handler = taskHandlers[task.type] as TaskHandler<BuildTask>;\n\n    handler.print(ctx, task);\n\n    try {\n      const result = await handler.run$(ctx, task).toPromise();\n\n      handler.success(ctx, task, result);\n    } catch (err) {\n      handler.fail(ctx, task, err);\n      // exit as soon as one task fails\n      throw err;\n    }\n  }\n};\n\nexport { build };\nexport type { BuildOptions, BuildCLIOptions, BuildWithConfigFile, BuildWithoutConfigFile };\n","import chokidar from 'chokidar';\nimport path from 'path';\nimport { Observable, distinctUntilChanged, scan, startWith, switchMap } from 'rxjs';\n\nimport { CONFIG_FILE_NAMES, loadConfig } from './core/config';\nimport { getExportExtensionMap, validateExportsOrdering } from './core/exports';\nimport { createLogger } from './core/logger';\nimport { loadPkg, validatePkg } from './core/pkg';\nimport { createBuildContext } from './createBuildContext';\nimport { createWatchTasks } from './createTasks';\nimport { taskHandlers } from './tasks';\n\nimport type { Config } from './core/config';\nimport type { WatchTask } from './createTasks';\nimport type { TaskHandler } from './tasks';\nimport type { CommonCLIOptions } from '../types';\n\ntype WatchCLIOptions = CommonCLIOptions;\n\ninterface WatchOptionsWithoutConfig extends WatchCLIOptions {\n  configFile?: true;\n  config?: never;\n  cwd?: string;\n}\n\ninterface WatchOptionsWithConfig extends WatchCLIOptions {\n  configFile: false;\n  config?: Config;\n  cwd?: string;\n}\n\ntype WatchOptions = WatchOptionsWithConfig | WatchOptionsWithoutConfig;\n\nconst watch = async (opts: WatchOptions) => {\n  const { silent, debug, cwd = process.cwd(), configFile = true, config: providedConfig } = opts;\n\n  const logger = createLogger({ silent, debug });\n\n  logger.debug('watching config files');\n\n  const configFilePaths = ['package.json', ...CONFIG_FILE_NAMES].map((fileName) =>\n    path.resolve(cwd, fileName).split(path.sep).join(path.posix.sep)\n  );\n\n  interface FileEvent {\n    event: 'add' | 'addDir' | 'change' | 'unlink' | 'unlinkDir';\n    path: string;\n  }\n\n  const watcher$ = new Observable<FileEvent>((subscriber) => {\n    const watcher = chokidar.watch(configFilePaths, {\n      ignoreInitial: true,\n    });\n\n    const handleEvent = (event: FileEvent['event'], filePath: FileEvent['path']) => {\n      subscriber.next({\n        event,\n        path: filePath,\n      });\n    };\n\n    watcher.on('all', handleEvent);\n\n    return () => {\n      watcher.off('all', handleEvent);\n      watcher.close();\n    };\n  });\n\n  const configFiles$ = watcher$.pipe(\n    scan((files, { event, path: filePath }) => {\n      if (event === 'add') {\n        logger.debug('config file added', filePath);\n\n        return [...files, filePath];\n      }\n\n      if (event === 'unlink') {\n        logger.debug('config file removed', filePath);\n\n        return files.filter((fPath) => fPath !== filePath);\n      }\n\n      if (event === 'change') {\n        logger.log(\n          '--------------------------------------------------------------------------------'\n        );\n        logger.info(path.relative(cwd, filePath), 'changed');\n\n        return files.slice(0);\n      }\n\n      return files;\n    }, configFilePaths),\n    startWith(configFilePaths),\n    distinctUntilChanged()\n  );\n\n  const ctx$ = configFiles$.pipe(\n    switchMap(async (configFiles) => {\n      const files = configFiles.map((f) => path.relative(cwd, f));\n\n      const packageJsonPath = files.find((f) => f === 'package.json');\n\n      if (!packageJsonPath) {\n        throw new Error('missing package.json');\n      }\n\n      const rawPkg = await loadPkg({ cwd, logger });\n\n      const validatedPkg = await validatePkg({\n        pkg: rawPkg,\n      }).catch((err) => {\n        logger.error(err.message);\n        process.exit(1);\n      });\n\n      /**\n       * Validate the exports of the package incl. the order of the\n       * exports within the exports map if applicable\n       */\n      const packageJson = await validateExportsOrdering({ pkg: validatedPkg, logger }).catch(\n        (err) => {\n          logger.error(err.message);\n          process.exit(1);\n        }\n      );\n\n      /**\n       * If configFile is true – which is the default, atempt to load the config\n       * otherwise if it's explicitly false then we suspect there might be a config passed\n       * in the options, so we'll use that instead.\n       */\n      const config = configFile ? await loadConfig({ cwd, logger }) : providedConfig;\n      /**\n       * We create tasks based on the exports of the package.json\n       * their handlers are then ran in the order of the exports map\n       * and results are logged to see gradual progress.\n       */\n\n      const extMap = getExportExtensionMap();\n\n      return createBuildContext({\n        config: { ...config },\n        cwd,\n        extMap,\n        logger,\n        pkg: packageJson,\n      }).catch((err) => {\n        logger.error(err.message);\n        process.exit(1);\n      });\n    })\n  );\n\n  ctx$.subscribe(async (ctx) => {\n    const watchTasks = await createWatchTasks(ctx);\n\n    for (const task of watchTasks) {\n      const handler = taskHandlers[task.type] as TaskHandler<WatchTask, unknown>;\n\n      const result$ = handler.run$(ctx, task);\n\n      result$.subscribe({\n        error(err) {\n          handler.fail(ctx, task, err);\n\n          process.exit(1);\n        },\n        next(result) {\n          handler.success(ctx, task, result);\n        },\n      });\n    }\n  });\n};\n\nexport { watch };\nexport type { WatchOptions, WatchOptionsWithConfig, WatchOptionsWithoutConfig, WatchCLIOptions };\n","import { readdir, lstat, access, mkdir } from 'fs/promises';\n\n/**\n * @internal\n */\nconst isEmptyDirectory = async (dir: string) => {\n  const files = await readdir(dir);\n\n  return files.length === 0;\n};\n\n/**\n * @internal\n */\nconst isDirectory = async (dir: string) => {\n  const stats = await lstat(dir);\n\n  return stats.isDirectory();\n};\n\n/**\n * @internal\n */\nconst pathExists = async (path: string) => {\n  try {\n    await access(path);\n    return true;\n  } catch (error) {\n    return false;\n  }\n};\n\n/**\n * @internal\n *\n * @description Ensures that the path is viable for a package to be created at\n * by checking if it exists, if not creating it and if it does exist ensuring it's\n * an empty directory. It will fail if any of these conditions are not met.\n */\nconst ensurePackagePathIsViable = async (path: string) => {\n  const exists = await pathExists(path);\n\n  if (!exists) {\n    await mkdir(path, { recursive: true });\n  }\n\n  const isEmpty = await isEmptyDirectory(path);\n\n  if (!isEmpty) {\n    throw new Error(`${path} is not empty`);\n  }\n\n  const isDir = await isDirectory(path);\n\n  if (!isDir) {\n    throw new Error(`${path} is not a directory`);\n  }\n};\n\nexport { ensurePackagePathIsViable, pathExists };\n","import chalk from 'chalk';\nimport esbuild from 'esbuild';\nimport ora from 'ora';\nimport os from 'os';\nimport { resolve } from 'path';\n\nimport { loadConfig } from './core/config';\nimport { isError } from './core/errors';\nimport { getExportExtensionMap, validateExportsOrdering } from './core/exports';\nimport { pathExists } from './core/files';\nimport { createLogger } from './core/logger';\nimport { loadPkg, validatePkg } from './core/pkg';\nimport { createBuildContext } from './createBuildContext';\n\nimport type { CommonCLIOptions } from '../types';\nimport type { Logger } from './core/logger';\nimport type { BuildFailure, Format, Message } from 'esbuild';\n\nexport interface CheckOptions extends CommonCLIOptions {\n  cwd?: string;\n}\n\nexport const check = async (opts: CheckOptions = {}) => {\n  const { silent, debug, cwd = process.cwd() } = opts;\n\n  const logger = createLogger({ silent, debug });\n\n  /**\n   * Load the closest package.json and then verify the structure against what we expect.\n   */\n  const packageJsonLoader = ora(`Verifying package.json ${os.EOL}`).start();\n\n  const rawPkg = await loadPkg({ cwd, logger }).catch((err) => {\n    packageJsonLoader.fail();\n    logger.error(err.message);\n    logger.debug(`Path checked – ${cwd}`);\n    process.exit(1);\n  });\n\n  const validatedPkg = await validatePkg({\n    pkg: rawPkg,\n  }).catch((err) => {\n    packageJsonLoader.fail();\n    logger.error(err.message);\n    process.exit(1);\n  });\n\n  /**\n   * Validate the exports of the package incl. the order of the\n   * exports within the exports map if applicable\n   */\n  const packageJson = await validateExportsOrdering({ pkg: validatedPkg, logger }).catch((err) => {\n    packageJsonLoader.fail();\n    logger.error(err.message);\n    process.exit(1);\n  });\n\n  packageJsonLoader.succeed('Verified package.json');\n\n  /**\n   * We create tasks based on the exports of the package.json\n   * their handlers are then ran in the order of the exports map\n   * and results are logged to see gradual progress.\n   */\n  const config = await loadConfig({ cwd, logger });\n\n  const extMap = getExportExtensionMap();\n\n  const ctx = await createBuildContext({\n    config: { ...config },\n    cwd,\n    extMap,\n    logger,\n    pkg: packageJson,\n  }).catch((err) => {\n    logger.error(err.message);\n    process.exit(1);\n  });\n\n  logger.debug(`Build context: ${os.EOL}`, ctx);\n\n  const missingExports: string[] = [];\n\n  const checkingFilePathsLoader = ora('Checking files for exports').start();\n\n  /**\n   * This is arguably verbose but realistically it's clearer what we're checking here\n   * which is _every_ export option you've declared in your package.json is a real file.\n   */\n  for (const exp of Object.values(ctx.exports)) {\n    if (exp.source && !(await pathExists(resolve(ctx.cwd, exp.source)))) {\n      missingExports.push(exp.source);\n    }\n\n    if (exp.types && !(await pathExists(resolve(ctx.cwd, exp.types)))) {\n      missingExports.push(exp.types);\n    }\n\n    if (exp.require && !(await pathExists(resolve(ctx.cwd, exp.require)))) {\n      missingExports.push(exp.require);\n    }\n\n    if (exp.import && !(await pathExists(resolve(ctx.cwd, exp.import)))) {\n      missingExports.push(exp.import);\n    }\n\n    if (exp.module && !(await pathExists(resolve(ctx.cwd, exp.module)))) {\n      missingExports.push(exp.module);\n    }\n\n    if (exp.default && !(await pathExists(resolve(ctx.cwd, exp.default)))) {\n      missingExports.push(exp.default);\n    }\n\n    if (exp.browser) {\n      if (exp.browser.source && !(await pathExists(resolve(ctx.cwd, exp.browser.source)))) {\n        missingExports.push(exp.browser.source);\n      }\n\n      if (exp.browser.import && !(await pathExists(resolve(ctx.cwd, exp.browser.import)))) {\n        missingExports.push(exp.browser.import);\n      }\n\n      if (exp.browser.require && !(await pathExists(resolve(ctx.cwd, exp.browser.require)))) {\n        missingExports.push(exp.browser.require);\n      }\n    }\n\n    if (exp.node) {\n      if (exp.node.source && !(await pathExists(resolve(ctx.cwd, exp.node.source)))) {\n        missingExports.push(exp.node.source);\n      }\n\n      if (exp.node.import && !(await pathExists(resolve(ctx.cwd, exp.node.import)))) {\n        missingExports.push(exp.node.import);\n      }\n\n      if (exp.node.require && !(await pathExists(resolve(ctx.cwd, exp.node.require)))) {\n        missingExports.push(exp.node.require);\n      }\n\n      if (exp.node.module && !(await pathExists(resolve(ctx.cwd, exp.node.module)))) {\n        missingExports.push(exp.node.module);\n      }\n    }\n  }\n\n  if (missingExports.length) {\n    checkingFilePathsLoader.fail('');\n    logger.error(\n      [\n        'Missing files for exports:',\n        ...missingExports.map((str) => `    ${chalk.blue(str)} -> ${resolve(ctx.cwd, str)}`),\n      ].join(os.EOL)\n    );\n    process.exit(1);\n  }\n\n  checkingFilePathsLoader.succeed('');\n\n  /**\n   * Now we know the files exist, we want to double check that they can be accurately resolved.\n   */\n  const exportPaths = Object.values(ctx.exports).reduce<{ require: string[]; import: string[] }>(\n    (acc, exp) => {\n      if (exp.require) {\n        acc.require.push(exp.require);\n      }\n      if (exp.import) {\n        acc.import.push(exp.import);\n      }\n\n      return acc;\n    },\n    {\n      require: [],\n      import: [],\n    }\n  );\n\n  if (exportPaths.import.length > 0) {\n    await resolveExports(exportPaths.import, {\n      cwd: ctx.cwd,\n      external: ctx.external,\n      format: 'esm',\n      logger,\n    });\n  }\n  if (exportPaths.require.length > 0) {\n    await resolveExports(exportPaths.require, {\n      cwd: ctx.cwd,\n      external: ctx.external,\n      format: 'cjs',\n      logger,\n    });\n  }\n};\n\ninterface ResolveExportsOptions {\n  cwd: string;\n  external: string[];\n  format: Format;\n  logger: Logger;\n}\n\nconst resolveExports = async (\n  paths: string[],\n  { cwd, format, external, logger }: ResolveExportsOptions\n) => {\n  const esbuildLoader = ora(`Resolving ${format} exports`).start();\n\n  const code = paths\n    .map((id) => (format === 'esm' ? `import('${id}');` : `require('${id}');`))\n    .join(os.EOL);\n\n  try {\n    const esbuildResult = await esbuild.build({\n      bundle: true,\n      external,\n      format,\n      logLevel: 'silent',\n      // otherwise output maps to stdout as we're using stdin\n      outfile: '/dev/null',\n      platform: 'node',\n      stdin: {\n        contents: code,\n        loader: 'js',\n        resolveDir: cwd,\n      },\n    });\n\n    if (esbuildResult.errors.length > 0) {\n      for (const msg of esbuildResult.errors) {\n        printESBuildMessage(msg, logger.error);\n      }\n\n      esbuildLoader.fail();\n      process.exit(1);\n    }\n\n    const esbuildWarnings = esbuildResult.warnings.filter(\n      (msg) => !(msg.detail || msg.text).includes(\"does not affect esbuild's own target setting\")\n    );\n\n    for (const msg of esbuildWarnings) {\n      printESBuildMessage(msg, logger.warn);\n    }\n\n    esbuildLoader.succeed();\n  } catch (err) {\n    if (isESBuildError(err)) {\n      for (const msg of err.errors) {\n        printESBuildMessage(msg, logger.error);\n      }\n    }\n\n    esbuildLoader.fail();\n    process.exit(1);\n  }\n};\n\nconst isESBuildError = (err: unknown): err is BuildFailure => {\n  return isError(err) && 'errors' in err && 'warnings' in err;\n};\n\nconst printESBuildMessage = (msg: Message, log: Logger['error']) => {\n  if (msg.location) {\n    log(\n      [\n        `${msg.detail || msg.text}`,\n        `${msg.location.line} | ${msg.location.lineText}`,\n        `in ./${msg.location.file}:${msg.location.line}:${msg.location.column}`,\n      ].join(os.EOL)\n    );\n  } else {\n    log(msg.detail || msg.text);\n  }\n};\n","/**\n * Extracted & reduced from https://github.com/jonschlinkert/parse-git-config/blob/master/index.js\n */\nimport fs from 'fs/promises';\nimport ini from 'ini';\nimport os from 'os';\nimport path from 'path';\n\nconst resolveConfigPath = async ({ cwd }: { cwd: string }) => {\n  const configPath = path.join(os.homedir(), '.gitconfig');\n\n  try {\n    await fs.access(configPath);\n    return path.resolve(cwd, configPath);\n  } catch (err) {\n    return null;\n  }\n};\n\n/**\n * This is the type for a parsed git config file.\n *\n * There's another object attached but for ease of\n * readability we're only interested in user information.\n */\ninterface GitConfig {\n  user: {\n    name?: string;\n    email?: string;\n  };\n}\n\nconst parseIni = (str: string): GitConfig => {\n  const normalisedString = str.replace(/\\[(\\S+) \"(.*)\"\\]/g, (m, $1, $2) => {\n    return $1 && $2 ? `[${$1} \"${$2.split('.').join('\\\\.')}\"]` : m;\n  });\n\n  return ini.parse(normalisedString) as GitConfig;\n};\n\n/**\n * @internal\n *\n * @description Parses the global git config file.\n */\nconst parseGlobalGitConfig = async (): Promise<GitConfig | null> => {\n  const cwd = process.cwd();\n\n  const filepath = await resolveConfigPath({ cwd });\n\n  if (!filepath) {\n    return null;\n  }\n\n  const file = await fs.stat(filepath).then(() => fs.readFile(filepath, 'utf8'));\n\n  return parseIni(file);\n};\n\nexport { parseGlobalGitConfig };\nexport type { GitConfig };\n","import { mkdir, writeFile } from 'fs/promises';\nimport os from 'os';\nimport { relative, resolve, dirname } from 'path';\nimport prompts from 'prompts';\n\nimport { isError } from '../core/errors';\nimport { parseGlobalGitConfig } from '../core/git';\n\nimport type {\n  Template,\n  TemplateFeature,\n  TemplateOption,\n  TemplateOrTemplateResolver,\n} from './types';\nimport type { Logger } from '../core/logger';\nimport type { Config as PrettierConfig } from 'prettier';\n\ninterface CreatePackageFromTemplateOpts {\n  logger: Logger;\n  cwd: string;\n  template: TemplateOrTemplateResolver;\n}\n\n/**\n * @internal\n *\n * @description Resolves a template if it's a function and runs\n * through the template to create a new package.\n */\nconst createPackageFromTemplate = async (\n  packagePath: string,\n  opts: CreatePackageFromTemplateOpts\n) => {\n  const { cwd, logger, template: templateOrResolver } = opts;\n\n  const prettier = await import('prettier'); // ESM-only\n\n  const gitConfig = await parseGlobalGitConfig();\n\n  const template =\n    typeof templateOrResolver === 'function'\n      ? await templateOrResolver({ cwd, logger, packagePath, gitConfig })\n      : templateOrResolver;\n\n  logger.info('Creating a new package at: ', relative(cwd, packagePath));\n\n  logger.debug('Loaded template:', os.EOL, template);\n\n  const answers: Parameters<Template['getFiles']>[0] = [];\n\n  if (Array.isArray(template.prompts)) {\n    for (const prompt of template.prompts) {\n      /**\n       * We know it's a TemplateOption if it has a type property.\n       */\n      if ('type' in prompt) {\n        const res = await prompts(prompt, {\n          onCancel() {\n            process.exit(0);\n          },\n        });\n\n        answers.push({ name: prompt.name, answer: res[prompt.name] });\n      } else {\n        const res = prompt.optional\n          ? await prompts({\n              type: 'confirm',\n              name: 'confirm',\n              message: `use ${prompt.name}?`,\n              initial: prompt.initial,\n            })\n          : null;\n\n        answers.push({\n          name: prompt.name,\n          answer: res?.confirm ?? !prompt.optional,\n        });\n      }\n    }\n\n    logger.debug(\n      [\n        'User answers: ',\n        ...answers.map((ans) => `    ${ans.name}: ${JSON.stringify(ans.answer)}`),\n      ].join(os.EOL)\n    );\n  }\n\n  const files = await template.getFiles(answers);\n\n  logger.debug(\n    ['Files to write: ', ...files.map((f) => `    ${f.name}: ${f.contents}`)].join(os.EOL)\n  );\n\n  /**\n   * Sort files alphabetically, just cause it's nice.\n   */\n  files.sort((a, b) => {\n    return a.name.localeCompare(b.name);\n  });\n\n  for (const file of files) {\n    const filePath = resolve(packagePath, file.name);\n\n    await mkdir(dirname(filePath), { recursive: true });\n\n    const defaultPrettierConfig: PrettierConfig = {\n      endOfLine: 'lf',\n      tabWidth: 2,\n      printWidth: 100,\n      singleQuote: true,\n      trailingComma: 'es5',\n    };\n    try {\n      const formattedContents = await prettier.format(file.contents, {\n        ...defaultPrettierConfig,\n        filepath: filePath,\n      });\n\n      await writeFile(filePath, `${formattedContents.trim()}${os.EOL}`);\n    } catch (err) {\n      if (isError(err)) {\n        logger.debug(err.message);\n      }\n\n      await writeFile(filePath, `${file.contents.trim()}${os.EOL}`);\n    }\n\n    logger.success(`Wrote ${relative(cwd, filePath)}`);\n  }\n};\n\n/**\n * @public\n *\n * @description a helper function to define your package template in a typesafe manner.\n */\nconst defineTemplate = (template: TemplateOrTemplateResolver): TemplateOrTemplateResolver =>\n  template;\n\n/**\n * @public\n *\n * @description Create a prompt for your users to input data for your package template.\n * e.g. \"what is the name of your package?\"\n */\nconst definePackageOption = <T extends string>(option: TemplateOption<T>): TemplateOption<T> =>\n  option;\n\n/**\n * @public\n *\n * @description Create a feature option for your package e.g. \"do you want typescript?\" – yes/no.\n */\nconst definePackageFeature = (feature: TemplateFeature): TemplateFeature => feature;\n\nexport { createPackageFromTemplate, definePackageFeature, definePackageOption, defineTemplate };\n","import { outdent } from 'outdent';\n\nimport type { TemplateFile } from '../../types';\n\nconst editorConfigFile: TemplateFile = {\n  name: '.editorconfig',\n  contents: outdent`\n    root = true\n\n    [*]\n    indent_style = space\n    indent_size = 2\n    end_of_line = lf\n    charset = utf-8\n    trim_trailing_whitespace = true\n    insert_final_newline = true\n    \n    [{package.json,*.yml}]\n    indent_style = space\n    indent_size = 2\n    \n    [*.md]\n    trim_trailing_whitespace = false\n    `,\n};\n\nexport { editorConfigFile };\n","import { outdent } from 'outdent';\n\nimport type { TemplateFile } from '../../types';\n\nconst gitIgnoreFile: TemplateFile = {\n  name: '.gitignore',\n  contents: outdent`\n    # See https://help.github.com/articles/ignoring-files/ for more about ignoring files.\n\n    # dependencies\n    node_modules\n    .pnp\n    .pnp.js\n    \n    # testing\n    coverage\n    \n    # production\n    dist\n    \n    # misc\n    .DS_Store\n    *.pem\n    \n    # debug\n    npm-debug.log*\n    yarn-debug.log*\n    yarn-error.log*\n    \n    # local env files\n    .env\n    .env.local\n    .env.development.local\n    .env.test.local\n    .env.production.local        \n    `,\n};\n\nexport { gitIgnoreFile };\n","import { outdent } from 'outdent';\n\nimport type { TemplateFile } from '../../types';\n\nconst prettierFile: TemplateFile = {\n  name: '.prettierrc',\n  contents: outdent`\n      {\n        \"endOfLine\": 'lf',\n        \"tabWidth\": 2,\n        \"printWidth\": 100,\n        \"singleQuote\": true,\n        \"trailingComma\": 'es5',\n      }\n    `,\n};\n\nconst prettierIgnoreFile: TemplateFile = {\n  name: '.prettierignore',\n  contents: outdent`\n      dist\n      coverage\n    `,\n};\n\nexport { prettierFile, prettierIgnoreFile };\n","import getLatestVersion from 'get-latest-version';\nimport gitUrlParse from 'git-url-parse';\nimport { outdent } from 'outdent';\n\nimport { isError } from '../../core/errors';\nimport { definePackageFeature, definePackageOption, defineTemplate } from '../create';\n\nimport { editorConfigFile } from './files/editorConfig';\nimport { gitIgnoreFile } from './files/gitIgnore';\nimport { prettierFile, prettierIgnoreFile } from './files/prettier';\n\nimport type { PackageJson } from '../../core/pkg';\nimport type { TemplateFile } from '../types';\n\nconst PACKAGE_NAME_REGEXP = /^(?:@(?:[a-z0-9-*~][a-z0-9-*._~]*)\\/)?[a-z0-9-~][a-z0-9-._~]*$/i;\n\nconst defaultTemplate = defineTemplate(async ({ logger, gitConfig }) => {\n  let repo: {\n    source?: string;\n    owner?: string;\n    name?: string;\n  };\n\n  return {\n    prompts: [\n      definePackageOption({\n        name: 'repo',\n        type: 'text',\n        message: 'git url',\n        validate(v) {\n          if (!v) {\n            return true;\n          }\n\n          try {\n            const result = gitUrlParse(v);\n\n            repo = { source: result.source, owner: result.owner, name: result.name };\n\n            return true;\n          } catch (err) {\n            return 'invalid git url';\n          }\n        },\n      }),\n      definePackageOption({\n        name: 'pkgName',\n        type: 'text',\n        message: 'package name',\n        initial: () => repo?.name ?? '',\n        validate(v) {\n          if (!v) {\n            return 'package name is required';\n          }\n\n          const match = PACKAGE_NAME_REGEXP.exec(v);\n\n          if (!match) {\n            return 'invalid package name';\n          }\n\n          return true;\n        },\n      }),\n      definePackageOption({\n        name: 'description',\n        type: 'text',\n        message: 'package description',\n      }),\n      definePackageOption({\n        name: 'authorName',\n        type: 'text',\n        message: 'package author name',\n        initial: gitConfig?.user?.name,\n      }),\n      definePackageOption({\n        name: 'authorEmail',\n        type: 'text',\n        message: 'package author email',\n        initial: gitConfig?.user?.email,\n      }),\n      definePackageOption({\n        name: 'license',\n        type: 'text',\n        message: 'package license',\n        initial: 'MIT',\n        validate(v) {\n          if (!v) {\n            return 'license is required';\n          }\n\n          return true;\n        },\n      }),\n      definePackageFeature({\n        name: 'typescript',\n        initial: true,\n        optional: true,\n      }),\n      definePackageFeature({\n        name: 'eslint',\n        initial: true,\n        optional: true,\n      }),\n    ],\n    async getFiles(answers) {\n      const devDepsToInstall: string[] = [];\n      const author: string[] = [];\n      let isTypescript = false;\n\n      const files: TemplateFile[] = [];\n\n      // package.json\n      const pkgJson: PackageJson = {\n        version: '0.0.0',\n        keywords: [],\n        type: 'commonjs',\n        exports: {\n          // @ts-expect-error yup typings are a bit weak.\n          '.': {\n            require: './dist/index.js',\n            import: './dist/index.mjs',\n            source: '',\n            default: './dist/index.js',\n          },\n          './package.json': './package.json',\n        },\n        main: './dist/index.js',\n        module: './dist/index.mjs',\n        files: ['dist'],\n        scripts: {\n          check: 'pack-up check',\n          build: 'pack-up build',\n          watch: 'pack-up watch',\n        },\n        dependencies: {},\n        devDependencies: {\n          /**\n           * We set * as a default version, but further down\n           * we try to resolve each package to their latest\n           * version, failing that we leave the fallback of *.\n           */\n          '@strapi/pack-up': '*',\n          prettier: '*',\n        },\n      };\n\n      if (Array.isArray(answers)) {\n        for (const ans of answers) {\n          const { name, answer } = ans;\n\n          switch (name) {\n            case 'pkgName': {\n              pkgJson.name = String(answer);\n              break;\n            }\n            case 'description': {\n              pkgJson.description = String(answer) ?? undefined;\n              break;\n            }\n            case 'authorName': {\n              author.push(String(answer));\n              break;\n            }\n            case 'authorEmail': {\n              if (answer) {\n                author.push(`<${answer}>`);\n              }\n              break;\n            }\n            case 'license': {\n              pkgJson.license = String(answer);\n              break;\n            }\n            case 'typescript': {\n              isTypescript = Boolean(answer);\n\n              pkgJson.source = isTypescript ? './src/index.ts' : './src/index.js';\n\n              if (isRecord(pkgJson.exports['.'])) {\n                pkgJson.exports['.'].source = isTypescript ? './src/index.ts' : './src/index.js';\n              }\n\n              if (isTypescript) {\n                pkgJson.types = './dist/index.d.ts';\n\n                if (isRecord(pkgJson.exports['.'])) {\n                  pkgJson.exports['.'] = {\n                    // @ts-expect-error it won't be overwritten.\n                    types: './dist/index.d.ts',\n                    ...pkgJson.exports['.'],\n                  };\n                }\n\n                pkgJson.scripts = {\n                  ...pkgJson.scripts,\n                  'test:ts': 'tsc --build',\n                };\n\n                devDepsToInstall.push('typescript');\n\n                const { tsconfigBuildFile, tsconfigFile } = await import('./files/typescript');\n\n                files.push(tsconfigFile, tsconfigBuildFile);\n              }\n\n              // source\n              files.push({\n                name: isTypescript ? 'src/index.ts' : 'src/index.js',\n                contents: outdent`\n                  /**\n                   * @public\n                   */\n                  const main = () => {\n                    // silence is golden\n                  }\n\n                  export { main }\n                `,\n              });\n\n              break;\n            }\n            case 'eslint': {\n              if (answer) {\n                // eslint-disable-next-line @typescript-eslint/no-explicit-any\n                const eslintConfig: any = {\n                  root: true,\n                  env: {\n                    browser: true,\n                    es6: true,\n                    node: true,\n                  },\n                  extends: ['eslint:recommended', 'plugin:prettier/recommended'],\n                  parserOptions: {\n                    ecmaVersion: 'latest',\n                    sourceType: 'module',\n                  },\n                  plugins: ['prettier'],\n                };\n\n                if (isTypescript) {\n                  eslintConfig.overrides = [\n                    {\n                      files: ['**/*.ts', '**/*.tsx'],\n                      parser: '@typescript-eslint/parser',\n                      parserOptions: {\n                        project: ['./tsconfig.eslint.json'],\n                      },\n                      extends: [\n                        'eslint:recommended',\n                        'plugin:prettier/recommended',\n                        'plugin:@typescript-eslint/eslint-recommended',\n                        'plugin:@typescript-eslint/recommended',\n                      ],\n                      plugins: ['@typescript-eslint', 'prettier'],\n                    },\n                  ];\n\n                  const { tsconfigEslintFile } = await import('./files/typescript');\n\n                  // tsconfig.eslint.json\n                  files.push(tsconfigEslintFile);\n                }\n\n                pkgJson.scripts = {\n                  ...pkgJson.scripts,\n                  lint: isTypescript\n                    ? 'eslint . --ext .cjs,.js,.ts,.tsx'\n                    : 'eslint . --ext .cjs,.js',\n                };\n\n                devDepsToInstall.push('eslint', 'eslint-config-prettier', 'eslint-plugin-prettier');\n\n                if (isTypescript) {\n                  devDepsToInstall.push(\n                    '@typescript-eslint/eslint-plugin',\n                    '@typescript-eslint/parser'\n                  );\n                }\n\n                const { eslintIgnoreFile } = await import('./files/eslint');\n\n                files.push(\n                  {\n                    name: '.eslintrc',\n                    contents: outdent`\n                    ${JSON.stringify(eslintConfig, null, 2)}\n                  `,\n                  },\n                  eslintIgnoreFile\n                );\n              }\n\n              break;\n            }\n            default:\n              break;\n          }\n        }\n      }\n\n      if (repo) {\n        pkgJson.repository = {\n          type: 'git',\n          url: `git+ssh://git@${repo.source}/${repo.owner}/${repo.name}.git`,\n        };\n        pkgJson.bugs = {\n          url: `https://${repo.source}/${repo.owner}/${repo.name}/issues`,\n        };\n        pkgJson.homepage = `https://${repo.source}/${repo.owner}/${repo.name}#readme`;\n      }\n\n      pkgJson.author = author.filter(Boolean).join(' ') ?? undefined;\n\n      try {\n        pkgJson.devDependencies = await resolveLatestVerisonOfDeps([\n          ...devDepsToInstall,\n          ...Object.keys(pkgJson.devDependencies),\n        ]);\n      } catch (err) {\n        if (isError(err)) {\n          logger.error(err.message);\n        } else {\n          logger.error(err);\n        }\n      }\n\n      files.push({\n        name: 'package.json',\n        contents: outdent`\n          ${JSON.stringify(pkgJson, null, 2)}\n        `,\n      });\n\n      /**\n       * PRETTIER IS INSTALLED BY DEFAULT.\n       */\n      files.push(prettierFile, prettierIgnoreFile, editorConfigFile, gitIgnoreFile);\n\n      return files;\n    },\n  };\n});\n\nconst isRecord = (value: unknown): value is Record<string, unknown> =>\n  Boolean(value) && !Array.isArray(value) && typeof value === 'object';\n\nconst resolveLatestVerisonOfDeps = async (deps: string[]): Promise<Record<string, string>> => {\n  const latestDeps: Record<string, string> = {};\n\n  for (const name of deps) {\n    try {\n      const latestVersion = await getLatestVersion(name, '*');\n      latestDeps[name] = latestVersion ? `^${latestVersion}` : '*';\n    } catch (err) {\n      latestDeps[name] = '*';\n    }\n  }\n\n  return latestDeps;\n};\n\nexport { defaultTemplate };\n","import { register } from 'esbuild-register/dist/node';\nimport { existsSync } from 'fs';\nimport { resolve } from 'path';\n\nimport type { TemplateOrTemplateResolver } from './types';\nimport type { Logger } from '../core/logger';\n\n/**\n * @internal\n *\n * @description Resolve a template from a path and return it.\n */\nconst loadTemplate = (\n  path: string,\n  { logger }: { logger: Logger }\n): TemplateOrTemplateResolver | undefined => {\n  const configPath = resolve(path);\n\n  const exists = existsSync(configPath);\n\n  if (exists) {\n    const esbuildOptions = { extensions: ['.js', '.mjs', '.ts'] };\n\n    const { unregister } = register(esbuildOptions);\n\n    // eslint-disable-next-line @typescript-eslint/no-var-requires\n    const mod = require(configPath);\n\n    unregister();\n\n    if (!mod) {\n      logger.warn(`Could not find template at: ${path}. Are you sure it exists?`);\n      return undefined;\n    }\n\n    logger.debug('Loaded user provided template from: ', path);\n\n    /**\n     * handles esm or cjs exporting.\n     */\n    return mod?.default || mod;\n  }\n\n  logger.warn(`Could not find template at: ${path}. Are you sure it exists?`);\n\n  return undefined;\n};\n\nexport { loadTemplate };\n","import { resolve } from 'path';\n\nimport { isError } from './core/errors';\nimport { ensurePackagePathIsViable } from './core/files';\nimport { createLogger } from './core/logger';\nimport { createPackageFromTemplate } from './templates/create';\nimport { defaultTemplate } from './templates/internal/default';\nimport { loadTemplate } from './templates/load';\n\nimport type { CommonCLIOptions } from '../types';\nimport type { TemplateOrTemplateResolver } from './templates/types';\n\nexport interface InitOptions extends CommonCLIOptions {\n  cwd?: string;\n  path: string;\n  template?: TemplateOrTemplateResolver | string;\n}\n\nexport const init = async (opts: InitOptions) => {\n  const { silent, debug, cwd = process.cwd(), path } = opts;\n  let { template = defaultTemplate } = opts;\n\n  const logger = createLogger({ silent, debug });\n\n  if (!path) {\n    logger.error('Path is a required option');\n    process.exit(1);\n  }\n\n  const packageRoot = resolve(cwd, path);\n\n  logger.debug('Package is: ', packageRoot);\n\n  if (typeof template === 'string') {\n    const templatePath = resolve(cwd, template);\n    const userTemplate = loadTemplate(templatePath, { logger });\n\n    if (userTemplate) {\n      template = userTemplate;\n    } else {\n      /**\n       * the loadTemplate function would have already warned the user\n       * we can't find their template, we just now ensure we don't\n       * pass the string.\n       */\n      template = defaultTemplate;\n    }\n  }\n\n  await ensurePackagePathIsViable(packageRoot).catch((err) => {\n    if (isError(err)) {\n      logger.error(err.message);\n    }\n\n    process.exit(1);\n  });\n\n  logger.debug('Package path is viable');\n\n  await createPackageFromTemplate(packageRoot, {\n    logger,\n    cwd,\n    template,\n  });\n};\n"],"names":["exports","path","fs","nodePath","createLogger","build"],"mappings":"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"}