{"version":3,"file":"index.cjs","sources":["../../src/node/fileExists.ts","../../src/node/core/config/findConfigFile.ts","../../src/node/core/config/loadConfig.ts","../../src/node/core/pkg/helpers.ts","../../src/node/core/pkg/validatePkg.ts","../../src/node/core/pkg/loadPkg.ts","../../src/node/core/pkg/loadPkgWithReporting.ts","../../src/node/logger.ts","../../node_modules/.pnpm/browserslist-to-esbuild@2.1.1_browserslist@4.25.1/node_modules/browserslist-to-esbuild/src/index.js","../../src/node/core/config/resolveConfigProperty.ts","../../src/node/core/defaults.ts","../../src/node/core/findCommonPath.ts","../../src/node/tasks/dts/getTargetPaths.ts","../../src/node/core/isRecord.ts","../../src/node/core/pkg/pkgExt.ts","../../src/node/core/pkg/validateExports.ts","../../src/node/core/pkg/parseExports.ts","../../src/node/core/ts/loadTSConfig.ts","../../src/node/resolveBrowserTarget.ts","../../src/node/resolveNodeTarget.ts","../../src/node/strict.ts","../../src/node/resolveBuildContext.ts","../../src/node/resolveBuildTasks.ts","../../src/node/spinner.ts","../../src/node/printExtractMessages.ts","../../src/node/tasks/dts/printDiagnostic.ts","../../src/node/tasks/dts/buildTypes.ts","../../src/node/tasks/dts/DtsError.ts","../../src/node/tasks/dts/createApiExtractorConfig.ts","../../src/node/tasks/dts/createTSDocConfig.ts","../../src/node/tasks/dts/extractModuleBlocks.ts","../../src/node/tasks/dts/getExtractMessagesConfig.ts","../../src/node/tasks/dts/extractTypes.ts","../../src/node/tasks/dts/doExtract.ts","../../src/node/tasks/dts/dtsTask.ts","../../src/node/tasks/dts/dtsWatchTask.ts","../../src/node/consoleSpy.ts","../../src/node/tasks/rolldown/rolldownDtsTask.ts","../../src/node/tasks/rollup/resolveRollupConfig.ts","../../src/node/tasks/rollup/rollupTask.ts","../../src/node/tasks/rollup/rollupWatchTask.ts","../../src/node/tasks/index.ts","../../src/node/build.ts","../../src/node/getFilesize.ts","../../src/node/printPackageTree.ts","../../src/node/check.ts","../../src/node/core/config/defineConfig.ts","../../src/node/core/template/define.ts","../../src/node/core/template/createFromTemplate.ts","../../src/node/isEmptyDirectory.ts","../../node_modules/.pnpm/@sanity+prettier-config@1.0.6_prettier@3.6.2/node_modules/@sanity/prettier-config/dist/index.js","../../src/node/templates/default/template.ts","../../src/node/init.ts","../../src/node/resolveWatchTasks.ts","../../src/node/globFiles.ts","../../src/node/watchFiles.ts","../../src/node/watchConfigFiles.ts","../../src/node/watch.ts"],"sourcesContent":["import {statSync} from 'node:fs'\n\n/** @internal */\nexport function fileExists(filePath: string): boolean {\n  try {\n    statSync(filePath)\n\n    return true\n  } catch {\n    return false\n  }\n}\n","import path from 'node:path'\nimport findConfig from 'find-config'\nimport {fileExists} from '../../fileExists'\n\nconst CONFIG_FILE_NAMES = [\n  'package.config.ts',\n  'package.config.js',\n  'package.config.cjs',\n  'package.config.mjs',\n]\n\n/** @internal */\nexport function findConfigFile(cwd: string): string | undefined {\n  const pkgJsonPath = findConfig('package.json', {cwd})\n\n  if (!pkgJsonPath) return undefined\n\n  const pkgPath = path.dirname(pkgJsonPath)\n\n  for (const fileName of CONFIG_FILE_NAMES) {\n    const configPath = path.resolve(pkgPath, fileName)\n\n    const exists = fileExists(configPath)\n\n    if (exists) {\n      return configPath\n    }\n  }\n\n  return undefined\n}\n","import {createRequire} from 'node:module'\nimport path from 'node:path'\nimport {register} from 'esbuild-register/dist/node'\nimport pkgUp from 'pkg-up'\nimport {findConfigFile} from './findConfigFile'\nimport type {PkgConfigOptions} from './types'\n\nconst require = createRequire(import.meta.url)\n\n/** @alpha */\nexport async function loadConfig(options: {cwd: string}): Promise<PkgConfigOptions | undefined> {\n  const {cwd} = options\n\n  const pkgPath = await pkgUp({cwd})\n\n  if (!pkgPath) return undefined\n\n  const root = path.dirname(pkgPath)\n\n  const configFile = await findConfigFile(root)\n\n  if (!configFile) {\n    return undefined\n  }\n\n  // Do not accept config files outside of the root\n  if (!configFile.startsWith(cwd)) {\n    return undefined\n  }\n\n  const esbuildOptions = {extensions: ['.js', '.mjs', '.ts']}\n\n  const {unregister} = globalThis.__DEV__ ? {unregister: () => undefined} : register(esbuildOptions)\n\n  const mod = require(configFile)\n\n  unregister()\n\n  return mod?.default || mod || undefined\n}\n","/** @internal */\nexport function assertFirst<T>(a: T, arr: T[]): boolean {\n  const aIdx = arr.indexOf(a)\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 */\nexport function assertLast<T>(a: T, arr: T[]): boolean {\n  const aIdx = arr.indexOf(a)\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 */\nexport function assertOrder<T>(a: T, b: T, arr: T[]): boolean {\n  const aIdx = arr.indexOf(a)\n  const bIdx = arr.indexOf(b)\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","import {z} from 'zod'\nimport type {PackageJSON} from './types'\n\nconst pkgSchema = z.object({\n  type: z.optional(z.enum(['commonjs', 'module'])),\n  name: z.string(),\n  version: z.string(),\n  license: z.string(),\n  bin: z.optional(z.record(z.string())),\n  dependencies: z.optional(z.record(z.string())),\n  devDependencies: z.optional(z.record(z.string())),\n  peerDependencies: z.optional(z.record(z.string())),\n  source: z.optional(z.string()),\n  main: z.optional(z.string()),\n  browser: z.optional(z.record(z.string())),\n  module: z.optional(z.string()),\n  types: z.optional(z.string()),\n  exports: z.optional(\n    z.record(\n      z.union([\n        z.custom<`./${string}.json`>((val) => /^\\.\\/.*\\.json$/.test(val as string)),\n        z.custom<`./${string}.css`>((val) => /^\\.\\/.*\\.css$/.test(val as string)),\n        z.object({\n          types: z.optional(z.string()),\n          source: z.optional(z.string()),\n          browser: z.optional(\n            z.object({\n              source: z.string(),\n              import: z.optional(z.string()),\n              require: z.optional(z.string()),\n            }),\n          ),\n          node: z.optional(\n            z.object({\n              source: z.optional(z.string()),\n              import: z.optional(z.string()),\n              require: z.optional(z.string()),\n            }),\n          ),\n          import: z.optional(z.string()),\n          require: z.optional(z.string()),\n          default: z.string(),\n        }),\n        z.object({\n          types: z.optional(z.string()),\n          svelte: z.string(),\n          default: z.optional(z.string()),\n        }),\n      ]),\n    ),\n  ),\n  browserslist: z.optional(z.union([z.string(), z.array(z.string())])),\n  sideEffects: z.optional(z.union([z.boolean(), z.array(z.string())])),\n  // @TODO type this properly\n  typesVersions: z.optional(z.any()),\n})\n\n// Create a map over known keys to catch casing mistakes\nconst typoMap = new Map<string, string>()\n\nfor (const key of pkgSchema.keyof()._def.values) {\n  typoMap.set(key.toUpperCase(), key)\n}\n\nexport function validatePkg(input: unknown): PackageJSON {\n  const pkg = pkgSchema.parse(input)\n\n  const invalidKey = Object.keys(input as PackageJSON).find((key) => {\n    const needle = key.toUpperCase()\n\n    return typoMap.has(needle) ? typoMap.get(needle) !== key : false\n  })\n\n  if (invalidKey) {\n    throw new TypeError(\n      `\n- package.json: \"${invalidKey}\" is not a valid key. Did you mean \"${typoMap.get(invalidKey.toUpperCase())}\"?`,\n    )\n  }\n\n  return pkg\n}\n","import fs from 'node:fs/promises'\nimport pkgUp from 'pkg-up'\nimport type {PackageJSON} from './types'\nimport {validatePkg} from './validatePkg'\n\n/** @internal */\nexport async function loadPkg(options: {cwd: string}): Promise<PackageJSON> {\n  const {cwd} = options\n\n  const pkgPath = await pkgUp({cwd})\n\n  if (!pkgPath) throw new Error('no package.json found')\n\n  const buf = await fs.readFile(pkgPath)\n\n  const raw = JSON.parse(buf.toString())\n\n  validatePkg(raw)\n\n  return raw\n}\n","import chalk from 'chalk'\nimport {ZodError} from 'zod'\nimport type {Logger} from '../../logger'\nimport {assertLast, assertOrder} from './helpers'\nimport {loadPkg} from './loadPkg'\nimport type {PackageJSON} from './types'\n\n/** @alpha */\nexport async function loadPkgWithReporting(options: {\n  cwd: string\n  logger: Logger\n  strict: boolean\n}): Promise<PackageJSON> {\n  const {cwd, logger, strict} = options\n\n  try {\n    const pkg = await loadPkg({cwd})\n    let shouldError = false\n\n    if (strict) {\n      if (!pkg.type) {\n        shouldError = true\n        logger.error(\n          `the \\`type\\` field in \\`./package.json\\` must be either \"module\" or \"commonjs\")`,\n        )\n      }\n    }\n\n    // validate exports\n    if (pkg.exports) {\n      const _exports = Object.entries(pkg.exports)\n\n      for (const [expPath, exp] of _exports) {\n        if (typeof exp === 'string' || 'svelte' in exp) {\n          continue\n        }\n\n        const keys = Object.keys(exp)\n\n        if (exp.types) {\n          shouldError = true\n          logger.error(\n            `exports[\"${expPath}\"]: the \\`types\\` condition shouldn't be used as dts files are generated in such a way that both CJS and ESM is supported`,\n          )\n        }\n\n        if (exp.module) {\n          shouldError = true\n          logger.error(\n            `exports[\"${expPath}\"]: the \\`module\\` condition shouldn't be used as it's not well supported in all bundlers.`,\n          )\n        }\n\n        if (exp.node) {\n          if (exp.import && exp.node.import && !assertOrder('node', 'import', keys)) {\n            shouldError = true\n            logger.error(\n              `exports[\"${expPath}\"]: the \\`node\\` property should come before the \\`import\\` property`,\n            )\n          }\n\n          if (exp.node.module) {\n            shouldError = true\n            logger.error(\n              `exports[\"${expPath}\"]: the \\`node.module\\` condition shouldn't be used as it's not well supported in all bundlers. A better strategy is to refactor the codebase to no longer be vulnerable to the \"dual package hazard\"`,\n            )\n          }\n\n          if (\n            !exp.node.source &&\n            exp.node.import &&\n            (exp.node.require || exp.require) &&\n            (exp.node.import.endsWith('.cjs.js') || exp.node.import.endsWith('.cjs.mjs'))\n          ) {\n            shouldError = true\n            logger.error(\n              `exports[\"${expPath}\"]: the \\`node.import\\` re-export pattern shouldn't be used as it's not well supported in all bundlers. A better strategy is to refactor the codebase to no longer be vulnerable to the \"dual package hazard\"`,\n            )\n          }\n\n          if (exp.require && exp.node.require && exp.require === exp.node.require) {\n            shouldError = true\n            logger.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            shouldError = true\n            logger.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\n        if (!assertLast('default', keys)) {\n          shouldError = true\n          logger.error(\n            `exports[\"${expPath}\"]: the \\`default\\` property should be the last property`,\n          )\n        }\n      }\n    }\n\n    if (shouldError) {\n      process.exit(1)\n    }\n\n    return pkg\n  } catch (err) {\n    if (err instanceof ZodError) {\n      for (const issue of err.issues) {\n        if (issue.code === 'invalid_type') {\n          logger.error(\n            [\n              `\\`${formatPath(issue.path)}\\` `,\n              `in \\`./package.json\\` must be of type ${chalk.magenta(issue.expected)} `,\n              `(received ${chalk.magenta(issue.received)})`,\n            ].join(''),\n          )\n          continue\n        }\n\n        logger.error(issue)\n      }\n    } else {\n      logger.error(err)\n    }\n\n    process.exit(1)\n  }\n}\n\nfunction formatPath(segments: Array<string | number>) {\n  return segments\n    .map((s, idx) => {\n      if (idx === 0) return s\n\n      if (typeof s === 'number') {\n        return `[${s}]`\n      }\n\n      if (s.startsWith('.')) {\n        return `[\"${s}\"]`\n      }\n\n      return `.${s}`\n    })\n    .join('')\n}\n","// oxlint-disable no-console\nimport chalk from 'chalk'\n\n/** @alpha */\nexport interface Logger {\n  log: (...args: unknown[]) => void\n  info: (...args: unknown[]) => void\n  warn: (...args: unknown[]) => void\n  error: (...args: unknown[]) => void\n  success: (...args: unknown[]) => void\n}\n\n/** @alpha */\nexport function createLogger(quiet = false): Logger {\n  return {\n    log: (...args) => {\n      if (!quiet) console.log(...args)\n    },\n    info: (...args) => {\n      if (!quiet) console.log(chalk.blue('[info]'), ...args)\n    },\n    warn: (...args) => {\n      console.log(chalk.yellow('[warning]'), ...args)\n    },\n    error: (...args) => {\n      console.log(chalk.red('[error]'), ...args)\n    },\n    success: (...args) => {\n      if (!quiet) console.log(chalk.green('[success]'), ...args)\n    },\n  }\n}\n","import browserslist from 'browserslist'\n\n// convert the browserslist field in package.json to\n// esbuild compatible array of browsers\nexport default function browserslistToEsbuild(browserslistConfig, options = {}) {\n  if (!browserslistConfig) {\n    // the path from where the script is run\n    const path = process.cwd()\n\n    // read config if none is passed\n    browserslistConfig = browserslist.loadConfig({ path, ...options })\n  }\n\n  const SUPPORTED_ESBUILD_TARGETS = [\n    'es',\n    'chrome',\n    'edge',\n    'firefox',\n    'ios',\n    'node',\n    'safari',\n    'opera',\n    'ie',\n  ]\n\n  // https://github.com/eBay/browserslist-config/issues/16#issuecomment-863870093\n  const UNSUPPORTED = ['android 4']\n\n  const replaces = {\n    ios_saf: 'ios',\n    android: 'chrome',\n  }\n\n  const separator = ' '\n\n  return (\n    browserslist(browserslistConfig, options)\n      // filter out the unsupported ones\n      .filter((b) => !UNSUPPORTED.some((u) => b.startsWith(u)))\n      // replaces safari TP with latest safari version\n      .map((b) => {\n        if (b === 'safari TP') {\n          return browserslist('last 1 safari version')[0]\n        }\n\n        return b\n      })\n      // transform into ['chrome', '88']\n      .map((b) => b.split(separator))\n      // replace the similar browser\n      .map((b) => {\n        if (replaces[b[0]]) {\n          b[0] = replaces[b[0]]\n        }\n\n        return b\n      })\n      // 11.0-12.0 --> 11.0\n      .map((b) => {\n        if (b[1].includes('-')) {\n          b[1] = b[1].slice(0, b[1].indexOf('-'))\n        }\n\n        return b\n      })\n      // 11.0 --> 11\n      .map((b) => {\n        if (b[1].endsWith('.0')) {\n          b[1] = b[1].slice(0, -2)\n        }\n\n        return b\n      })\n      // removes invalid versions that will break esbuild\n      // https://github.com/evanw/esbuild/blob/35c0d65b9d4f29a26176404d2890d1b499634e9f/compat-table/src/caniuse.ts#L119-L122\n      .filter((b) => /^\\d+(\\.\\d+)*$/.test(b[1]))\n      // only get the targets supported by esbuild\n      .filter((b) => SUPPORTED_ESBUILD_TARGETS.includes(b[0]))\n      // only get the oldest version, assuming that the older version\n      // is last in the array\n      .reduce((acc, b) => {\n        const existingIndex = acc.findIndex((br) => br[0] === b[0])\n\n        if (existingIndex !== -1) {\n          acc[existingIndex][1] = b[1]\n        } else {\n          acc.push(b)\n        }\n        return acc\n      }, [])\n      // remove separator\n      .map((b) => b.join(''))\n  )\n}\n","import type {PkgConfigProperty, PkgConfigPropertyResolver} from './types'\n\n/** @internal */\nexport function resolveConfigProperty<T>(\n  prop: PkgConfigProperty<T> | undefined,\n  initialValue: T,\n): T {\n  if (!prop) return initialValue\n\n  if (typeof prop === 'function') {\n    return (prop as PkgConfigPropertyResolver<T>)(initialValue)\n  }\n\n  return prop\n}\n","import config from '@sanity/browserslist-config'\n\n/** @public */\nexport const DEFAULT_BROWSERSLIST_QUERY: string[] = config\n","import path from 'node:path'\n\nexport function pathContains(containerPath: string, itemPath: string): boolean {\n  return !path.relative(containerPath, itemPath).startsWith('..')\n}\n\nexport function findCommonDirPath(filePaths: string[]): string | undefined {\n  let ret: string | undefined = undefined\n\n  for (const filePath of filePaths) {\n    let dirPath = path.dirname(filePath)\n\n    if (!ret) {\n      ret = dirPath\n      continue\n    }\n\n    while (dirPath !== ret) {\n      dirPath = path.dirname(dirPath)\n\n      if (dirPath === ret) {\n        break\n      }\n\n      if (pathContains(dirPath, ret)) {\n        ret = dirPath\n        break\n      }\n\n      if (dirPath === '.') return undefined\n    }\n  }\n\n  return ret\n}\n","import type {PkgBundle, PkgExport} from '../../core/config/types'\nimport type {PackageJSON} from '../../core/pkg/types'\n\n/** @internal */\nexport const fileEnding: RegExp = /\\.[mc]?js$/\n/** @internal */\nexport const dtsEnding = '.d.ts' as const\n/** @internal */\nexport const defaultEnding = '.js' as const\n/** @internal */\nexport const mjsEnding = '.mjs' as const\n/** @internal */\nexport const cjsEnding = '.cjs' as const\nconst mtsEnding = '.d.mts' as const\nconst ctsEnding = '.d.cts' as const\n\n/** @internal */\nexport function getTargetPaths(\n  _type: PackageJSON['type'],\n  expOrBundle: PkgExport | PkgExport['browser'] | PkgExport['node'] | PkgBundle,\n): string[] {\n  const type = (_type === 'module' ? 'module' : 'commonjs') satisfies PackageJSON['type']\n\n  const set = new Set<string>()\n\n  if (expOrBundle?.import) {\n    set.add(expOrBundle.import.replace(fileEnding, type === 'module' ? dtsEnding : mtsEnding))\n  }\n\n  if (expOrBundle?.require) {\n    set.add(expOrBundle.require.replace(fileEnding, type === 'commonjs' ? dtsEnding : ctsEnding))\n  }\n\n  if (isPkgExport(expOrBundle)) {\n    if (!expOrBundle.browser?.source) {\n      if (expOrBundle.browser?.import) {\n        set.add(\n          expOrBundle.browser.import.replace(fileEnding, type === 'module' ? dtsEnding : mtsEnding),\n        )\n      }\n\n      if (expOrBundle.browser?.require) {\n        set.add(\n          expOrBundle.browser.require.replace(\n            fileEnding,\n            type === 'commonjs' ? dtsEnding : ctsEnding,\n          ),\n        )\n      }\n    }\n\n    if (!expOrBundle.node?.source) {\n      if (expOrBundle.node?.import) {\n        set.add(\n          expOrBundle.node.import.replace(fileEnding, type === 'module' ? dtsEnding : mtsEnding),\n        )\n      }\n\n      if (expOrBundle.node?.require) {\n        set.add(\n          expOrBundle.node.require.replace(fileEnding, type === 'commonjs' ? dtsEnding : ctsEnding),\n        )\n      }\n    }\n  }\n\n  return Array.from(set)\n}\n\nfunction isPkgExport(exp: any): exp is PkgExport {\n  return exp?.browser || exp?.node || exp?.default\n}\n","/** @internal */\nexport function isRecord(value: unknown): value is Record<string, unknown> {\n  return Boolean(value) && !Array.isArray(value) && typeof value === 'object'\n}\n","import {cjsEnding, defaultEnding, mjsEnding} from '../../tasks/dts/getTargetPaths'\n\n/** @internal */\nexport interface PkgExtMap {\n  commonjs: {commonjs: string; esm: string}\n  module: {commonjs: string; esm: string}\n}\n\n/** @internal */\nexport const pkgExtMap: PkgExtMap = {\n  // pkg.type: \"commonjs\"\n  commonjs: {\n    commonjs: defaultEnding,\n    esm: mjsEnding,\n  },\n\n  // pkg.type: \"module\"\n  module: {\n    commonjs: cjsEnding,\n    esm: defaultEnding,\n  },\n}\n","import type {PkgExport} from '../config/types'\nimport {pkgExtMap as extMap} from './pkgExt'\nimport type {PackageJSON} from './types'\n\nexport function validateExports(\n  _exports: (PkgExport & {_path: string})[],\n  options: {pkg: PackageJSON},\n): string[] {\n  const {pkg} = options\n  const type = pkg.type || 'commonjs'\n  const ext = extMap[type]\n\n  const errors: string[] = []\n\n  for (const exp of _exports) {\n    if (exp.require && !exp.require.endsWith(ext.commonjs)) {\n      errors.push(\n        `package.json with \\`type: \"${type}\"\\` - \\`exports[\"${exp._path}\"].require\\` must end with \"${ext.commonjs}\"`,\n      )\n    }\n\n    if (exp.import && !exp.import.endsWith(ext.esm)) {\n      errors.push(\n        `package.json with \\`type: \"${type}\"\\` - \\`exports[\"${exp._path}\"].import\\` must end with \"${ext.esm}\"`,\n      )\n    }\n  }\n\n  return errors\n}\n","import {existsSync} from 'node:fs'\nimport {resolve as resolvePath} from 'node:path'\nimport type {Logger} from '../../logger'\nimport type {StrictOptions} from '../../strict'\nimport {defaultEnding, fileEnding} from '../../tasks/dts/getTargetPaths'\nimport type {PkgExport} from '../config/types'\nimport {isRecord} from '../isRecord'\nimport {pkgExtMap} from './pkgExt'\nimport type {PackageJSON} from './types'\nimport {validateExports} from './validateExports'\n\n/** @alpha */\nexport function parseExports(options: {\n  cwd: string\n  pkg: PackageJSON\n  strict: boolean\n  strictOptions: StrictOptions\n  logger: Logger\n}): (PkgExport & {_path: string})[] {\n  const {cwd, pkg, strict, strictOptions, logger} = options\n  const type = pkg.type || 'commonjs'\n  const errors: string[] = []\n\n  const report = (kind: 'warn' | 'error', message: string) => {\n    if (kind === 'warn') {\n      logger.warn(message)\n    } else {\n      errors.push(message)\n    }\n  }\n\n  if (!pkg.main && strict && strictOptions.alwaysPackageJsonMain !== 'off') {\n    report(strictOptions.alwaysPackageJsonMain, 'package.json: `main` must be declared')\n  }\n\n  if (!Array.isArray(pkg.files) && strict && strictOptions.alwaysPackageJsonFiles !== 'off') {\n    report(\n      strictOptions.alwaysPackageJsonFiles,\n      'package.json: `files` should be used over `.npmignore`',\n    )\n  }\n\n  if (pkg.source) {\n    if (\n      strict &&\n      pkg.exports?.['.'] &&\n      typeof pkg.exports['.'] === 'object' &&\n      'source' in pkg.exports['.'] &&\n      pkg.exports['.'].source === pkg.source\n    ) {\n      errors.push(\n        'package.json: the \"source\" property can be removed, as it is equal to exports[\".\"].source.',\n      )\n    } else if (!pkg.exports && pkg.main) {\n      const extMap = pkgExtMap[type]\n      const importExport = pkg.main.replace(fileEnding, extMap.esm)\n      const requireExport = pkg.main.replace(fileEnding, extMap.commonjs)\n      const defaultExport = pkg.main.replace(fileEnding, defaultEnding)\n\n      const maybeBrowserCondition = []\n\n      if (pkg.browser) {\n        const browserConditions = []\n\n        if (pkg.module && pkg.browser?.[pkg.module]) {\n          browserConditions.push(\n            `      \"import\": ${JSON.stringify(pkg.browser[pkg.module]!.replace(fileEnding, extMap.esm))}`,\n          )\n        } else if (pkg.browser?.[pkg.main]) {\n          browserConditions.push(\n            `      \"import\": ${JSON.stringify(pkg.browser[pkg.main]!.replace(fileEnding, extMap.esm))}`,\n          )\n        }\n\n        if (pkg.browser?.[pkg.main]) {\n          browserConditions.push(\n            `      \"require\": ${JSON.stringify(pkg.browser[pkg.main]!.replace(fileEnding, extMap.commonjs))}`,\n          )\n        }\n\n        if (browserConditions.length) {\n          maybeBrowserCondition.push(\n            `    \"browser\": {`,\n            `      \"source\": ${JSON.stringify(pkg.browser?.[pkg.source] || pkg.source)},`,\n            ...browserConditions,\n            `    }`,\n          )\n        }\n      }\n\n      errors.push(\n        ...([\n          'package.json: `exports` are missing, it should be:',\n          `\"exports\": {`,\n          `  \".\": {`,\n          `    \"source\": ${JSON.stringify(pkg.source)},`,\n          // If browser conditions are detected then add them to the suggestion\n          ...(maybeBrowserCondition.length > 0 ? maybeBrowserCondition : []),\n          type === 'commonjs' && `    \"import\": ${JSON.stringify(importExport)},`,\n          type === 'module' && `    \"require\": ${JSON.stringify(requireExport)},`,\n          `    \"default\": ${JSON.stringify(defaultExport)}`,\n          `  },`,\n          `  \"./package.json\": \"./package.json\"`,\n          `}`,\n        ].filter(Boolean) as string[]),\n      )\n    }\n  }\n\n  if (errors.length) {\n    throw new Error('\\n- ' + errors.join('\\n- '))\n  }\n\n  if (!pkg.exports) {\n    throw new Error(\n      '\\n- ' +\n        [\n          'package.json: `exports` are missing, please set a minimal configuration, for example:',\n          `\"exports\": {`,\n          `  \".\": {`,\n          `    \"source\": \"./src/index.js\",`,\n          `    \"default\": \"./dist/index.js\"`,\n          `  },`,\n          `  \"./package.json\": \"./package.json\"`,\n          `}`,\n        ].join('\\n- '),\n    )\n  }\n\n  const _exports: (PkgExport & {_path: string})[] = []\n\n  if (strict && strictOptions.noPackageJsonTypings !== 'off' && 'typings' in pkg) {\n    report(strictOptions.noPackageJsonTypings, 'package.json: `typings` should be `types`')\n  }\n\n  if (\n    strict &&\n    strictOptions.alwaysPackageJsonTypes !== 'off' &&\n    !pkg.types &&\n    typeof pkg.exports?.['.'] === 'object' &&\n    'source' in pkg.exports['.'] &&\n    pkg.exports['.'].source?.endsWith('.ts')\n  ) {\n    report(\n      strictOptions.alwaysPackageJsonTypes,\n      'package.json: `types` must be declared for the npm listing to show as a TypeScript module.',\n    )\n  }\n\n  if (strict && !pkg.exports['./package.json']) {\n    errors.push('package.json: `exports[\"./package.json\"] must be declared.')\n  }\n\n  for (const [exportPath, exportEntry] of Object.entries(pkg.exports)) {\n    if (\n      exportPath.endsWith('.json') ||\n      (typeof exportEntry === 'string' && exportEntry.endsWith('.json'))\n    ) {\n      if (exportPath === './package.json') {\n        if (exportEntry !== './package.json') {\n          errors.push('package.json: `exports[\"./package.json\"]` must be \"./package.json\".')\n        }\n      }\n    } else if (exportPath.endsWith('.css')) {\n      if (typeof exportEntry === 'string' && !existsSync(resolvePath(cwd, exportEntry))) {\n        errors.push(\n          `package.json: \\`exports[${JSON.stringify(exportPath)}]\\`: file does not exist.`,\n        )\n      } else if (typeof exportEntry !== 'string') {\n        errors.push(\n          `package.json: \\`exports[${JSON.stringify(exportPath)}]\\`: export conditions not supported for CSS files.`,\n        )\n      }\n    } else if (isRecord(exportEntry) && 'svelte' in exportEntry) {\n      // @TODO should we report a warning or a debug message here about a detected svelte export that is ignored?\n    } else if (isPkgExport(exportEntry)) {\n      const exp = {\n        _exported: true,\n        _path: exportPath,\n        ...exportEntry,\n      } satisfies PkgExport & {_path: string}\n\n      // Infer the `default` condition based on the `type` and other conditions\n      if (!exp.default) {\n        const fallback = type === 'module' ? exp.import : exp.require\n\n        if (fallback) {\n          exp.default = fallback\n        }\n      }\n\n      // Infer the `require` condition based on the `type` and other conditions\n      if (!exp.require && type === 'commonjs' && exp.default) {\n        exp.require = exp.default\n      }\n\n      // Infer the `import` condition based on the `type` and other conditions\n      if (!exp.import && type === 'module' && exp.default) {\n        exp.import = exp.default\n      }\n\n      if (exportPath === '.') {\n        if (exportEntry.require && pkg.main && exportEntry.require !== pkg.main) {\n          errors.push(\n            'package.json: mismatch between \"main\" and \"exports.require\". These must be equal.',\n          )\n        }\n\n        if (exportEntry.import && pkg.module && exportEntry.import !== pkg.module) {\n          errors.push(\n            'package.json: mismatch between \"module\" and \"exports.import\" These must be equal.',\n          )\n        }\n      }\n\n      _exports.push(exp)\n    } else if (!isRecord(exportEntry)) {\n      errors.push('package.json: exports must be an object')\n    }\n  }\n\n  errors.push(...validateExports(_exports, {pkg}))\n\n  if (errors.length) {\n    throw new Error('\\n- ' + errors.join('\\n- '))\n  }\n\n  return _exports\n}\n\nfunction isPkgExport(value: unknown): value is PkgExport {\n  return isRecord(value) && 'source' in value && typeof value['source'] === 'string'\n}\n","import ts from 'typescript'\n\n/** @internal */\nexport async function loadTSConfig(options: {\n  cwd: string\n  tsconfigPath: string\n}): Promise<ts.ParsedCommandLine | undefined> {\n  const {cwd, tsconfigPath} = options\n\n  const configPath = ts.findConfigFile(cwd, ts.sys.fileExists, tsconfigPath)\n\n  if (!configPath) {\n    return undefined\n  }\n\n  const configFile = ts.readConfigFile(configPath, ts.sys.readFile)\n\n  return ts.parseJsonConfigFileContent(configFile.config, ts.sys, cwd)\n}\n","export function resolveBrowserTarget(versions: string[]): string[] | undefined {\n  const target: string[] = versions.filter(\n    (version) =>\n      version.startsWith('chrome') ||\n      version.startsWith('edge') ||\n      version.startsWith('firefox') ||\n      version.startsWith('ios') ||\n      version.startsWith('safari') ||\n      version.startsWith('opera'),\n  )\n\n  if (target.length === 0) {\n    return undefined\n  }\n\n  return target\n}\n","export function resolveNodeTarget(versions: string[]): string[] | undefined {\n  const target: string[] = versions.filter((version) => version.startsWith('node'))\n\n  if (target.length === 0) {\n    return undefined\n  }\n\n  return target\n}\n","import {z} from 'zod'\nimport {errorMap} from 'zod-validation-error'\n\nconst toggle = z.union([z.literal('error'), z.literal('warn'), z.literal('off')])\n\ntype ToggleType = 'error' | 'warn' | 'off'\n\nconst strictOptions = z\n  .object({\n    noPackageJsonTypings: toggle.default('error'),\n    noImplicitSideEffects: toggle.default('warn'),\n    noImplicitBrowsersList: toggle.default('warn'),\n    alwaysPackageJsonTypes: toggle.default('error'),\n    alwaysPackageJsonMain: toggle.default('error'),\n    alwaysPackageJsonFiles: toggle.default('error'),\n    noCheckTypes: toggle.default('warn'),\n  })\n  .strict()\n\n/**\n * To make error message paths line up with the paths in package.config.ts the schema is hoisted into a root schema\n * This way errors will say `Expected boolean, received string at \"strict.noPackageJsonTypings\"` instead of `Expected boolean, received string at \"noPackageJsonTypings\"`.\n */\nconst validationSchema = z.object({\n  strictOptions: strictOptions.default({}),\n})\n\n/**\n * @public\n */\nexport interface StrictOptions {\n  /**\n   * Disallows a top level `typings` field in `package.json` if it is equal to `exports['.'].source`.\n   * @defaultValue 'error'\n   */\n  noPackageJsonTypings: ToggleType\n  /**\n   * Requires specifying `sideEffects` in `package.json`.\n   * @defaultValue 'warn'\n   */\n  noImplicitSideEffects: ToggleType\n  /**\n   * Requires specifying `browserslist` in `package.json`, instead of relying on it implicitly being:\n   * @example\n   * ```\n   * \"browserslist\": \"extends @sanity/browserslist-config\"\n   * ```\n   * @defaultValue 'warn'\n   */\n  noImplicitBrowsersList: ToggleType\n  /**\n   * If typescript is used then `types` in `package.json` should be specified for npm listings to show the TS icon.\n   * @defaultValue 'error'\n   */\n  alwaysPackageJsonTypes: ToggleType\n  /**\n   * A lot of analysis tooling requiers the `main` field to work (like bundlephobia) and so it's best practice to always include it\n   * @defaultValue 'error'\n   */\n  alwaysPackageJsonMain: ToggleType\n  /**\n   * Using `.npmignore` is error prone, it's best practice to always declare `files` instead\n   * @defaultValue 'error'\n   */\n  alwaysPackageJsonFiles: ToggleType\n  /**\n   * It's slow to perform type checking while generating dts files, so it's best practice to disable it with a `\"noCheck\": true` in the tsconfig.json file used by `package.config.ts`\n   * @defaultValue 'warn'\n   */\n  noCheckTypes: ToggleType\n}\n\n/** @alpha */\nexport function parseStrictOptions(input: unknown): StrictOptions {\n  return validationSchema.parse({strictOptions: input}, {errorMap}).strictOptions\n}\n","import path from 'node:path'\nimport browserslistToEsbuild from 'browserslist-to-esbuild'\nimport {resolveConfigProperty} from './core/config/resolveConfigProperty'\nimport {type PkgConfigOptions, type PkgExports, type PkgRuntime} from './core/config/types'\nimport type {BuildContext} from './core/contexts/buildContext'\nimport {DEFAULT_BROWSERSLIST_QUERY} from './core/defaults'\nimport {findCommonDirPath, pathContains} from './core/findCommonPath'\nimport {parseExports} from './core/pkg/parseExports'\nimport type {PackageJSON} from './core/pkg/types'\nimport {loadTSConfig} from './core/ts/loadTSConfig'\nimport type {Logger} from './logger'\nimport {resolveBrowserTarget} from './resolveBrowserTarget'\nimport {resolveNodeTarget} from './resolveNodeTarget'\nimport {parseStrictOptions} from './strict'\n\nexport async function resolveBuildContext(options: {\n  config?: PkgConfigOptions | undefined\n  cwd: string\n  emitDeclarationOnly?: boolean\n  logger: Logger\n  pkg: PackageJSON\n  strict: boolean\n  tsconfig: string\n}): Promise<BuildContext> {\n  const {\n    config,\n    cwd,\n    emitDeclarationOnly = false,\n    logger,\n    pkg,\n    strict,\n    tsconfig: tsconfigPath,\n  } = options\n  const tsconfig = await loadTSConfig({cwd, tsconfigPath})\n  const strictOptions = parseStrictOptions(config?.strictOptions ?? {})\n\n  if (strictOptions.noCheckTypes !== 'off' && tsconfig?.options && config?.dts !== 'rolldown') {\n    if (tsconfig.options.noCheck !== false && !tsconfig.options.noCheck) {\n      if (strictOptions.noCheckTypes === 'error') {\n        throw new Error(\n          '`noCheck` is not set to `true` in the tsconfig.json file used by `package.config.ts`. This makes generating dts files slower than it needs to be, as it will perform type checking on the dts files while at it.',\n        )\n      } else {\n        logger.warn(\n          '`noCheck` is not set to `true` in the tsconfig.json file used by `package.config.ts`. This makes generating dts files slower than it needs to be, as it will perform type checking on the dts files while at it.',\n        )\n      }\n    }\n  }\n\n  let browserslist = pkg.browserslist\n  if (!browserslist) {\n    if (strict && strictOptions.noImplicitBrowsersList !== 'off') {\n      if (strictOptions.noImplicitBrowsersList === 'error') {\n        throw new Error(\n          '\\n- ' +\n            `package.json: \"browserslist\" is missing, set it to \\`\"browserslist\": \"extends @sanity/browserslist-config\"\\``,\n        )\n      } else {\n        logger.warn(\n          'Could not detect a `browserslist` property in `package.json`, using default configuration. Add `\"browserslist\": \"extends @sanity/browserslist-config\"` to silence this warning.',\n        )\n      }\n    }\n    browserslist = DEFAULT_BROWSERSLIST_QUERY\n  }\n  const targetVersions = browserslistToEsbuild(browserslist)\n\n  if (\n    strict &&\n    strictOptions.noImplicitSideEffects !== 'off' &&\n    typeof pkg.sideEffects === 'undefined'\n  ) {\n    const msg =\n      'package.json: `sideEffects` is missing, see https://webpack.js.org/guides/tree-shaking/#clarifying-tree-shaking-and-sideeffects for how to define `sideEffects`'\n\n    if (strictOptions.noImplicitSideEffects === 'error') {\n      throw new Error(msg)\n    } else {\n      logger.warn(msg)\n    }\n  }\n\n  const nodeTarget = resolveNodeTarget(targetVersions)\n  const webTarget = resolveBrowserTarget(targetVersions)\n\n  if (!nodeTarget) {\n    throw new Error('no matching `node` target')\n  }\n\n  if (!webTarget) {\n    throw new Error('no matching `web` target')\n  }\n\n  const target: Record<PkgRuntime, string[]> = {\n    '*': webTarget.concat(nodeTarget),\n    'browser': webTarget,\n    'node': nodeTarget,\n  }\n\n  const parsedExports = parseExports({\n    cwd,\n    pkg,\n    strict,\n    strictOptions,\n    logger,\n  }).reduce<PkgExports>(\n    (acc, {_path: exportPath, ...exportEntry}) => Object.assign(acc, {[exportPath]: exportEntry}),\n    {},\n  )\n\n  const exports = resolveConfigProperty(config?.exports, parsedExports)\n\n  const parsedExternal = [\n    ...(pkg.dependencies ? Object.keys(pkg.dependencies) : []),\n    ...(pkg.peerDependencies ? Object.keys(pkg.peerDependencies) : []),\n  ]\n\n  // Merge externals if an array is provided, replace if it's a function\n  const external =\n    config && Array.isArray(config.external)\n      ? [...parsedExternal, ...config.external]\n      : resolveConfigProperty(config?.external, parsedExternal)\n  // Merge bundledPackages with dev deps, replace if it's a function\n  const externalWithTypes = new Set([pkg.name, ...external, ...external.map(transformPackageName)])\n  const bundledDependencies = (pkg.devDependencies ? Object.keys(pkg.devDependencies) : []).filter(\n    // Do not bundle anything that is marked as external\n    (_) => !externalWithTypes.has(_),\n  )\n  const bundledPackages =\n    config && Array.isArray(config.extract?.bundledPackages)\n      ? [...bundledDependencies, ...config.extract.bundledPackages]\n      : resolveConfigProperty(config?.extract?.bundledPackages, bundledDependencies)\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  if (\n    configDistPath &&\n    commonDistPath &&\n    configDistPath !== commonDistPath &&\n    !pathContains(configDistPath, commonDistPath)\n  ) {\n    logger.log(`did you mean to configure \\`dist: './${path.relative(cwd, commonDistPath)}'\\`?`)\n\n    throw new Error('all output files must be located with the configured `dist` path')\n  }\n\n  const distPath = configDistPath || commonDistPath\n\n  if (!distPath) {\n    throw new Error('could not detect `dist` path')\n  }\n\n  const ctx: BuildContext = {\n    config,\n    cwd,\n    distPath,\n    emitDeclarationOnly,\n    exports,\n    external,\n    bundledPackages,\n    files: [],\n    logger,\n    pkg,\n    runtime: config?.runtime ?? '*',\n    strict,\n    target,\n    ts: {\n      config: tsconfig,\n      configPath: tsconfigPath,\n    },\n    dts: config?.dts === 'rolldown' ? 'rolldown' : 'api-extractor',\n  }\n\n  return ctx\n}\n\nfunction transformPackageName(packageName: string): string {\n  if (packageName.startsWith('@types/')) {\n    // If it already starts with @types, return it as is\n    return packageName\n  } else if (packageName.startsWith('@')) {\n    // Handle scoped packages\n    const [scope, name] = packageName.split('/')\n\n    return `@types/${scope?.slice(1)}__${name}`\n  } else {\n    // Handle regular packages\n    return `@types/${packageName}`\n  }\n}\n","import path from 'node:path'\nimport type {PkgExport, PkgFormat, PkgRuntime} from './core/config/types'\nimport type {BuildContext} from './core/contexts/buildContext'\nimport {getTargetPaths} from './tasks/dts/getTargetPaths'\nimport type {DtsTask} from './tasks/dts/types'\nimport type {BuildTask, RolldownDtsTask, RollupTask, RollupTaskEntry} from './tasks/types'\n\n/** @internal */\nexport function resolveBuildTasks(ctx: BuildContext): BuildTask[] {\n  const {config, pkg, target} = ctx\n\n  const bundles = config?.bundles || []\n\n  const tasks: BuildTask[] = []\n\n  const exports = Object.entries(ctx.exports || {}).map(\n    ([_path, exp]) => ({_path, ...exp}) as PkgExport & {_path: string},\n  )\n\n  const dtsTask: DtsTask = {\n    type: 'build:dts',\n    entries: [],\n  }\n\n  const rolldownDtsTask: Record<string, RolldownDtsTask> = {}\n  const rollupTasks: Record<string, RollupTask> = {}\n\n  function addRollupTaskEntry(format: PkgFormat, runtime: PkgRuntime, entry: RollupTaskEntry) {\n    const buildId = `${format}:${runtime}`\n\n    if (ctx.dts === 'rolldown') {\n      if (rolldownDtsTask[buildId]) {\n        rolldownDtsTask[buildId].entries.push(entry)\n      } else {\n        rolldownDtsTask[buildId] = {\n          type: 'rolldown:dts',\n          buildId,\n          entries: [entry],\n          runtime,\n          format,\n          target: target[runtime],\n        }\n      }\n    }\n\n    if (!ctx.emitDeclarationOnly) {\n      if (rollupTasks[buildId]) {\n        rollupTasks[buildId].entries.push(entry)\n      } else {\n        rollupTasks[buildId] = {\n          type: 'build:js',\n          buildId,\n          entries: [entry],\n          runtime,\n          format,\n          target: target[runtime],\n        }\n      }\n    }\n  }\n\n  if (ctx.dts === 'api-extractor') {\n    // Parse `dts` tasks\n    for (const exp of exports) {\n      const importId = path.join(pkg.name, exp._path)\n\n      if (exp.source?.endsWith('.ts')) {\n        dtsTask.entries.push({\n          importId,\n          exportPath: exp._path,\n          sourcePath: exp.source,\n          targetPaths: getTargetPaths(pkg.type, exp),\n        })\n      }\n\n      if (exp.browser?.source?.endsWith('.ts')) {\n        dtsTask.entries.push({\n          importId,\n          exportPath: exp._path,\n          sourcePath: exp.browser.source,\n          targetPaths: getTargetPaths(pkg.type, exp.browser),\n        })\n      }\n\n      if (exp.node?.source?.endsWith('.ts')) {\n        dtsTask.entries.push({\n          importId,\n          exportPath: exp._path,\n          sourcePath: exp.node.source,\n          targetPaths: getTargetPaths(pkg.type, exp.node),\n        })\n      }\n    }\n\n    // Handle dts tasks for bundles\n    for (const bundle of bundles) {\n      if (bundle.source?.endsWith('.ts')) {\n        // importId needs to be how the bundle is used, like `@sanity/pkg-utils/dist/cli`\n        // exportPath needs to be the path to the bundle, like `./dist/cli`\n        // targetPaths is then: [./dist/cli.d.ts, ./dist/cli.d.cts]\n        const exportPath = (bundle.import || bundle.require)!.replace(/\\.[mc]?js$/, '')\n        const importId = path.join(pkg.name, exportPath)\n\n        dtsTask.entries.push({\n          importId,\n          exportPath,\n          sourcePath: bundle.source,\n          targetPaths: getTargetPaths(pkg.type, bundle),\n        })\n      }\n    }\n\n    // Add dts task\n    if (dtsTask.entries.length) {\n      tasks.push(dtsTask)\n    }\n  }\n\n  // Parse rollup:commonjs:* tasks\n  for (const exp of exports) {\n    const output = exp.require\n\n    if (!output) continue\n\n    addRollupTaskEntry('commonjs', ctx.runtime, {\n      path: exp._path,\n      source: exp.source,\n      output,\n    })\n  }\n\n  // Parse rollup:esm:* tasks\n  for (const exp of exports) {\n    const output = exp.import\n\n    if (!output) continue\n\n    addRollupTaskEntry('esm', ctx.runtime, {\n      path: exp._path,\n      source: exp.source,\n      output,\n    })\n  }\n\n  // Parse rollup:commonjs:browser tasks\n  for (const exp of exports) {\n    const output = exp.browser?.require\n\n    if (!output) continue\n\n    addRollupTaskEntry('commonjs', 'browser', {\n      path: exp._path,\n      source: exp.browser?.source || exp.source,\n      output,\n    })\n  }\n\n  // Parse rollup:esm:browser tasks\n  for (const exp of exports) {\n    const output = exp.browser?.import\n\n    if (!output) continue\n\n    addRollupTaskEntry('esm', 'browser', {\n      path: exp._path,\n      source: exp.browser?.source || exp.source,\n      output,\n    })\n  }\n\n  for (const bundle of bundles) {\n    const idx = bundles.indexOf(bundle)\n\n    if (bundle.require) {\n      addRollupTaskEntry('commonjs', bundle.runtime || ctx.runtime, {\n        path: `__$$bundle_cjs_${idx}$$__`,\n        source: bundle.source,\n        output: bundle.require,\n      })\n    }\n\n    if (bundle.import) {\n      addRollupTaskEntry('esm', bundle.runtime || ctx.runtime, {\n        path: `__$$bundle_esm_${idx}$$__`,\n        source: bundle.source,\n        output: bundle.import,\n      })\n    }\n  }\n\n  // Perform rolldown dts tasks first, as they have special logic for removing non .d.ts chunks\n  tasks.push(...Object.values(rolldownDtsTask))\n  // Then run api-extractor tsdoc release tag checking (if rolldown is used for dts bundling, otherwise api-extractor performs both in the build:dts task)\n  // @TODO\n  // Then run rollup tasks\n  tasks.push(...Object.values(rollupTasks))\n\n  return tasks\n}\n","// oxlint-disable no-console\nimport chalk from 'chalk'\n\nexport function createSpinner(\n  msg: string,\n  quiet = false,\n): {complete: () => void; error: () => void} {\n  const startTime = Date.now()\n\n  if (!quiet) console.log(msg)\n\n  return {\n    complete: () => {\n      if (!quiet)\n        console.log(`${chalk.green('[success]')} ${chalk.gray(`${Date.now() - startTime}ms`)}`)\n    },\n    error: () => {\n      console.log(`${chalk.red('[error]')} ${chalk.gray(`${Date.now() - startTime}ms`)}`)\n    },\n  }\n}\n","import path from 'node:path'\nimport type {ExtractorMessage} from '@microsoft/api-extractor'\nimport chalk from 'chalk'\nimport type {BuildContext} from './core/contexts/buildContext'\n\nexport function printExtractMessages(ctx: BuildContext, messages: ExtractorMessage[]): void {\n  const {cwd, logger} = ctx\n\n  const warnings = messages.filter((msg) => msg.logLevel === 'warning')\n\n  if (warnings.length) {\n    logger.log()\n  }\n\n  for (const msg of warnings) {\n    const sourceFilePath = msg.sourceFilePath && path.relative(cwd, msg.sourceFilePath)\n\n    if (msg.messageId === 'TS6307') {\n      // Ignore this warning:\n      // > TS6307: <filename> is not in project file list.\n      // > Projects must list all files or use an 'include' pattern.\n      continue\n    }\n\n    logger.log(\n      [\n        `${chalk.cyan(sourceFilePath || '?')}`,\n        `:${chalk.yellow(msg.sourceFileLine)}:${chalk.yellow(msg.sourceFileColumn)}`,\n        ` - ${chalk.yellow('warning')} ${chalk.gray(msg.messageId)}\\n`,\n        msg.text,\n        '\\n',\n      ].join(''),\n    )\n  }\n\n  const errors: ExtractorMessage[] = messages.filter((msg) => msg.logLevel === 'error')\n\n  if (!warnings.length && errors.length) {\n    logger.log('')\n  }\n\n  for (const msg of errors) {\n    const sourceFilePath = msg.sourceFilePath && path.relative(cwd, msg.sourceFilePath)\n\n    logger.log(\n      [\n        `${chalk.cyan(sourceFilePath || '?')}`,\n        `:${chalk.yellow(msg.sourceFileLine)}:${chalk.yellow(msg.sourceFileColumn)}`,\n        ` - ${chalk.red('error')} ${chalk.gray(msg.messageId)}\\n`,\n        msg.text,\n        '\\n',\n      ].join(''),\n    )\n  }\n\n  if (errors.length) {\n    process.exit(1)\n  }\n}\n","import path from 'node:path'\nimport chalk from 'chalk'\nimport ts from 'typescript'\nimport type {Logger} from '../../logger'\n\nexport function printDiagnostic(options: {\n  cwd: string\n  logger: Logger\n  diagnostic: ts.Diagnostic\n}): void {\n  const {cwd, logger, diagnostic} = options\n\n  if (diagnostic.file && diagnostic.start) {\n    const {line, character} = ts.getLineAndCharacterOfPosition(diagnostic.file, diagnostic.start)\n    const message = ts.flattenDiagnosticMessageText(diagnostic.messageText, '\\n')\n\n    const file = path.relative(cwd, diagnostic.file.fileName)\n\n    const output = [\n      `${chalk.yellow(file)}:${chalk.blue(line + 1)}:${chalk.blue(character + 1)} - `,\n      `${chalk.gray(`TS${diagnostic.code}:`)} ${message}`,\n    ].join('')\n\n    if (diagnostic.category === ts.DiagnosticCategory.Error) {\n      logger.error(output)\n    }\n\n    if (diagnostic.category === ts.DiagnosticCategory.Warning) {\n      logger.warn(output)\n    }\n\n    if (diagnostic.category === ts.DiagnosticCategory.Message) {\n      logger.log(output)\n    }\n\n    if (diagnostic.category === ts.DiagnosticCategory.Suggestion) {\n      logger.log(output)\n    }\n  } else {\n    logger.log(ts.flattenDiagnosticMessageText(diagnostic.messageText, '\\n'))\n  }\n}\n","import ts from 'typescript'\nimport type {Logger} from '../../logger'\nimport {printDiagnostic} from './printDiagnostic'\n\n/** @internal */\nexport async function buildTypes(options: {\n  cwd: string\n  logger: Logger\n  outDir: string\n  tsconfig: ts.ParsedCommandLine\n  strict: boolean\n}): Promise<void> {\n  const {cwd, logger, outDir, tsconfig, strict = false} = options\n\n  const compilerOptions: ts.CompilerOptions = {\n    ...tsconfig.options,\n    declaration: true,\n    declarationDir: outDir,\n    emitDeclarationOnly: true,\n    noEmit: false,\n    noEmitOnError: strict ? true : (tsconfig.options.noEmitOnError ?? true),\n    noCheck: tsconfig.options.noCheck ?? tsconfig.options.isolatedDeclarations,\n    outDir,\n  }\n\n  const program = ts.createProgram(tsconfig.fileNames, compilerOptions)\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({cwd, logger, diagnostic})\n  }\n\n  if (emitResult.emitSkipped) {\n    const errors = allDiagnostics.filter((diag) => diag.category === ts.DiagnosticCategory.Error)\n\n    if (errors.length) {\n      throw new Error('failed to compile TypeScript definitions')\n    }\n  }\n}\n","import type {ExtractorMessage} from '@microsoft/api-extractor'\n\n/** @internal */\nexport class DtsError extends Error {\n  messages: ExtractorMessage[]\n\n  constructor(message: string, messages: ExtractorMessage[]) {\n    super(message)\n    this.messages = messages\n  }\n}\n","import path from 'node:path'\nimport type {IConfigFile, IExtractorMessagesConfig} from '@microsoft/api-extractor'\nimport ts from 'typescript'\n\nexport function createApiExtractorConfig(options: {\n  bundledPackages?: string[]\n  distPath: string\n  exportPath: string\n  filePath: string\n  messages: IExtractorMessagesConfig\n  projectFolder: string\n  mainEntryPointFilePath: string\n  tsconfig: ts.ParsedCommandLine\n  tsconfigPath: string\n  dtsRollupEnabled: boolean\n}): IConfigFile {\n  const {\n    bundledPackages,\n    distPath,\n    exportPath,\n    filePath,\n    messages,\n    projectFolder,\n    mainEntryPointFilePath,\n    tsconfig,\n    tsconfigPath,\n    dtsRollupEnabled,\n  } = options\n\n  return {\n    apiReport: {\n      enabled: false,\n      reportFileName: '<unscopedPackageName>.api.md',\n    },\n    bundledPackages,\n\n    // If `paths` are used for self-referencing imports (e.g. the module is named `sanity`, and the `sanity/structure` export is also importing from `sanity/router`),\n    compiler: tsconfig.options.paths\n      ? {\n          overrideTsconfig: {\n            extends: tsconfigPath,\n            compilerOptions: {\n              // An empty object replaces whatever is in the original tsconfig file\n              paths: {},\n            },\n          },\n        }\n      : {tsconfigFilePath: tsconfigPath},\n\n    docModel: {\n      enabled: false,\n      apiJsonFilePath: path.resolve(distPath, `${exportPath}.api.json`),\n    },\n    dtsRollup: {\n      enabled: dtsRollupEnabled,\n      untrimmedFilePath: path.resolve(distPath, filePath),\n      // betaTrimmedFilePath: path.resolve(distPath, filePath.replace('.d.ts', '-beta.d.ts')),\n      // publicTrimmedFilePath: path.resolve(distPath, filePath.replace('.d.ts', '-public.d.ts')),\n    },\n    tsdocMetadata: {\n      enabled: false,\n    },\n    messages,\n    mainEntryPointFilePath,\n    projectFolder,\n  }\n}\n","import {readFile} from 'node:fs/promises'\nimport {createRequire} from 'node:module'\nimport {TSDocConfigFile} from '@microsoft/tsdoc-config'\nimport {parse} from 'jsonc-parser'\n\nconst require = createRequire(import.meta.url)\n\n/** @public */\nexport interface TSDocCustomTag {\n  name: string\n  syntaxKind: 'block' | 'modifier'\n  allowMultiple?: boolean\n}\n\n/** @internal */\nexport async function createTSDocConfig(opts: {\n  customTags: TSDocCustomTag[]\n}): Promise<TSDocConfigFile | undefined> {\n  const {customTags} = opts\n\n  if (customTags.length === 0) {\n    return undefined\n  }\n\n  const tsDocBaseBuf = await readFile(\n    require.resolve('@microsoft/api-extractor/extends/tsdoc-base.json'),\n  )\n\n  // Include the definitions that are required for API Extractor\n  // extends: ['@microsoft/api-extractor/extends/tsdoc-base.json'],\n  const tsDocBaseConfig = parse(tsDocBaseBuf.toString())\n\n  // Define custom tags and specify how they should be parsed\n  const tagDefinitions = (tsDocBaseConfig.tagDefinitions || []).concat(\n    customTags.map((t) => ({\n      tagName: `@${t.name}`,\n      syntaxKind: t.syntaxKind,\n      allowMultiple: t.allowMultiple,\n    })),\n  )\n\n  // Indicate that custom tags are supported by your tooling.\n  // (Without this, warnings may be reported saying that a tag is unsupported.)\n  const supportForTags = {...tsDocBaseConfig.supportForTags}\n\n  for (const customTag of customTags) {\n    supportForTags[`@${customTag.name}`] = true\n  }\n\n  return TSDocConfigFile.loadFromObject({\n    ...tsDocBaseConfig,\n    noStandardTags: false,\n    tagDefinitions,\n    supportForTags,\n  })\n}\n","import type {File} from '@babel/types'\nimport type {ExtractorResult} from '@microsoft/api-extractor'\nimport {parse, print} from 'recast'\nimport typeScriptParser from 'recast/parsers/typescript.js'\nimport type {Program} from 'typescript'\n\n/**\n * A workaround to find all module blocks in extract TS files.\n * @internal\n * */\nexport async function extractModuleBlocksFromTypes({\n  tsOutDir,\n  extractResult,\n}: {\n  tsOutDir: string\n  extractResult: ExtractorResult\n}): Promise<string[]> {\n  const program = extractResult.compilerState.program as Program\n  const moduleBlocks: string[] = []\n\n  // all program files, including node_modules\n  const allProgramFiles = [...program.getSourceFiles()]\n\n  // just our compiled files used in the program\n  const sourceFiles = allProgramFiles.filter((sourceFile) => sourceFile.fileName.includes(tsOutDir))\n\n  for (const sourceFile of sourceFiles) {\n    if (sourceFile.text.includes('declare module')) {\n      moduleBlocks.push(...extractModuleBlocks(sourceFile.text))\n    }\n  }\n\n  return moduleBlocks\n}\n\n/** @internal */\nexport function extractModuleBlocks(fileContent: string): string[] {\n  const ast = parse(fileContent, {\n    parser: typeScriptParser,\n  }) as File\n\n  return ast.program.body\n    .filter((node) => node.type === 'TSModuleDeclaration')\n    .map((node) => print(node).code)\n}\n","import type {ExtractorLogLevel, IExtractorMessagesConfig} from '@microsoft/api-extractor'\nimport type {PkgConfigOptions, PkgRuleLevel} from '../../core/config/types'\n\nconst LOG_LEVELS: Record<PkgRuleLevel, ExtractorLogLevel> = {\n  error: 'error' as ExtractorLogLevel.Error,\n  info: 'info' as ExtractorLogLevel.Info,\n  off: 'none' as ExtractorLogLevel.None,\n  warn: 'warning' as ExtractorLogLevel.Warning,\n}\n\n/** @alpha */\nexport function getExtractMessagesConfig(options: {\n  rules: NonNullable<PkgConfigOptions['extract']>['rules']\n  disabled?: boolean\n}): IExtractorMessagesConfig {\n  const {rules, disabled = false} = options\n\n  function ruleToLogLevel(\n    key: keyof NonNullable<NonNullable<PkgConfigOptions['extract']>['rules']>,\n    defaultLevel?: ExtractorLogLevel,\n  ) {\n    const r = rules?.[key]\n\n    return (r ? LOG_LEVELS[r] : defaultLevel || 'warning') as ExtractorLogLevel\n  }\n\n  return {\n    compilerMessageReporting: {\n      default: {\n        logLevel: (disabled ? 'none' : 'warning') as ExtractorLogLevel,\n      },\n    },\n\n    extractorMessageReporting: disabled\n      ? {\n          default: {\n            logLevel: 'none' as ExtractorLogLevel,\n            addToApiReportFile: false,\n          },\n        }\n      : {\n          'default': {\n            logLevel: 'warning' as ExtractorLogLevel,\n            addToApiReportFile: false,\n          },\n\n          'ae-forgotten-export': {\n            /**\n             * This is hardcoded to `none` as it's no longer needed since TypeScript 5.5 https://github.com/microsoft/TypeScript/issues/42873\n             * It's hardcoded to `none` since supported by API Extractor when using `module: 'Preserve'` doesn't support it well since `@microsoft/api-extractor` v7.49.0, which upgraded from TS 5.4 to 5.7 internally\n             */\n            logLevel: 'none' as ExtractorLogLevel,\n            addToApiReportFile: false,\n          },\n\n          'ae-incompatible-release-tags': {\n            logLevel: ruleToLogLevel('ae-incompatible-release-tags', 'error' as ExtractorLogLevel),\n            addToApiReportFile: false,\n          },\n\n          'ae-internal-missing-underscore': {\n            logLevel: ruleToLogLevel('ae-internal-missing-underscore'),\n            addToApiReportFile: false,\n          },\n\n          'ae-missing-release-tag': {\n            logLevel: ruleToLogLevel('ae-missing-release-tag', 'error' as ExtractorLogLevel),\n            addToApiReportFile: false,\n          },\n\n          'ae-wrong-input-file-type': {\n            logLevel: 'none' as ExtractorLogLevel,\n            addToApiReportFile: false,\n          },\n        },\n\n    tsdocMessageReporting: disabled\n      ? {\n          default: {\n            logLevel: 'none' as ExtractorLogLevel,\n            addToApiReportFile: false,\n          },\n        }\n      : {\n          'default': {\n            logLevel: 'warning' as ExtractorLogLevel,\n            addToApiReportFile: false,\n          },\n\n          'tsdoc-link-tag-unescaped-text': {\n            logLevel: ruleToLogLevel(\n              'tsdoc-link-tag-unescaped-text',\n              'warning' as ExtractorLogLevel,\n            ),\n            addToApiReportFile: false,\n          },\n\n          'tsdoc-undefined-tag': {\n            logLevel: ruleToLogLevel('tsdoc-undefined-tag', 'error' as ExtractorLogLevel),\n            addToApiReportFile: false,\n          },\n\n          'tsdoc-unsupported-tag': {\n            logLevel: ruleToLogLevel('tsdoc-unsupported-tag', 'none' as ExtractorLogLevel),\n            addToApiReportFile: false,\n          },\n        },\n  }\n}\n","import fs from 'node:fs/promises'\nimport path from 'node:path'\nimport {\n  Extractor,\n  ExtractorConfig,\n  type ExtractorMessage,\n  type ExtractorResult,\n} from '@microsoft/api-extractor'\nimport {mkdirp} from 'mkdirp'\nimport * as prettier from 'prettier'\nimport type ts from 'typescript'\nimport type {PkgConfigOptions} from '../../core/config/types'\nimport type {BuildFile} from '../../core/contexts/buildContext'\nimport {createApiExtractorConfig} from './createApiExtractorConfig'\nimport {createTSDocConfig} from './createTSDocConfig'\nimport {extractModuleBlocksFromTypes} from './extractModuleBlocks'\nimport {getExtractMessagesConfig} from './getExtractMessagesConfig'\n\nexport async function extractTypes(options: {\n  bundledPackages?: string[]\n  customTags: NonNullable<PkgConfigOptions['extract']>['customTags']\n  cwd: string\n  distPath: string\n  exportPath: string\n  filePaths: string[]\n  files: BuildFile[]\n  projectPath: string\n  rules?: NonNullable<PkgConfigOptions['extract']>['rules']\n  sourceTypesPath: string\n  tmpPath: string\n  tsconfig: ts.ParsedCommandLine\n  tsconfigPath: string\n  /**\n   * If the extractor is disabled then it means API Extractor is only used to bundle dts, and not check tsdoc release tags.\n   */\n  extractorDisabled: boolean\n}): Promise<{extractorResult: ExtractorResult; messages: ExtractorMessage[]}> {\n  const {\n    bundledPackages,\n    customTags,\n    distPath,\n    exportPath,\n    files,\n    filePaths,\n    projectPath,\n    rules,\n    sourceTypesPath,\n    tmpPath,\n    tsconfig,\n    tsconfigPath,\n    extractorDisabled,\n  } = options\n\n  const tsdocConfigFile = await createTSDocConfig({\n    customTags: customTags || [],\n  })\n\n  const filePath = filePaths[0]!.replace(/\\.d\\.[mc]ts$/, '.d.ts')\n  // If there are package.config.ts `bundles` we might not have something that should leave behind a `.d.ts` file and need to handle that\n  const shouldCleanUpDts = !filePaths.includes(filePath)\n  const extractorConfig: ExtractorConfig = ExtractorConfig.prepare({\n    configObject: createApiExtractorConfig({\n      bundledPackages,\n      distPath,\n      exportPath,\n      filePath,\n      messages: getExtractMessagesConfig({rules, disabled: extractorDisabled}),\n      projectFolder: projectPath,\n      mainEntryPointFilePath: sourceTypesPath,\n      tsconfig,\n      tsconfigPath,\n      dtsRollupEnabled: true,\n    }),\n    configObjectFullPath: undefined,\n    tsdocConfigFile,\n    packageJsonFullPath: path.resolve(projectPath, 'package.json'),\n  })\n\n  const messages: ExtractorMessage[] = []\n\n  // Invoke API Extractor\n  const extractorResult = Extractor.invoke(extractorConfig, {\n    // Equivalent to the \"--local\" command-line parameter\n    localBuild: true,\n    // Equivalent to the \"--verbose\" command-line parameter\n    showVerboseMessages: true,\n    // handle messages\n    messageCallback(message: ExtractorMessage) {\n      messages.push(message)\n      message.handled = true\n    },\n  })\n\n  const typesPath = path.resolve(distPath, filePath)\n  const typesBuf = await fs.readFile(typesPath)\n  const prettierConfig = await prettier.resolveConfig(typesPath)\n\n  await mkdirp(path.dirname(typesPath))\n\n  const moduleBlocks = await extractModuleBlocksFromTypes({\n    extractResult: extractorResult,\n    tsOutDir: tmpPath,\n  })\n\n  const code = [typesBuf.toString(), ...moduleBlocks].join('\\n\\n')\n  const prettyCode = await prettier.format(code, {\n    ...prettierConfig,\n    filepath: typesPath,\n  })\n\n  for (const expFilePath of filePaths) {\n    const expTypesPath = path.resolve(distPath, expFilePath)\n\n    await fs.writeFile(expTypesPath, prettyCode)\n\n    // Add to `files` in context\n    files.push({\n      type: 'types',\n      path: expTypesPath,\n    })\n  }\n\n  if (shouldCleanUpDts) {\n    await fs.unlink(typesPath)\n  }\n\n  return {extractorResult, messages}\n}\n","import path from 'node:path'\nimport type {ExtractorMessage} from '@microsoft/api-extractor'\nimport {rimraf} from 'rimraf'\nimport type {BuildContext} from '../../core/contexts/buildContext'\nimport {buildTypes} from './buildTypes'\nimport {DtsError} from './DtsError'\nimport {extractTypes} from './extractTypes'\nimport type {DtsResult, DtsTask, DtsWatchTask} from './types'\n\n/**\n * - Build type definitions to a temporary directory using TypeScript compiler.\n * - Create a type definition bundle for each export entry.\n * - When done, remove the temporary directory.\n */\nexport async function doExtract(\n  ctx: BuildContext,\n  task: DtsTask | DtsWatchTask,\n): Promise<DtsResult> {\n  const {config, cwd, files, logger, strict, ts, bundledPackages} = ctx\n\n  if (!ts.config || !ts.configPath) {\n    return {type: 'dts', messages: [], results: []}\n  }\n\n  const {outDir, rootDir = cwd} = ts.config.options\n\n  if (!outDir) {\n    throw new Error('tsconfig.json is missing `compilerOptions.outDir`')\n  }\n\n  const tmpPath = path.resolve(outDir, '__tmp__')\n\n  await buildTypes({cwd, logger, outDir: tmpPath, strict, tsconfig: ts.config})\n  const messages: ExtractorMessage[] = []\n\n  const results: {sourcePath: string; filePaths: string[]}[] = []\n\n  for (const entry of task.entries) {\n    const exportPath = entry.exportPath === '.' ? './index' : entry.exportPath\n\n    const sourceTypesPath = path.resolve(\n      tmpPath,\n      path.relative(rootDir, path.resolve(cwd, entry.sourcePath)).replace(/\\.ts$/, '.d.ts'),\n    )\n\n    const targetPaths = entry.targetPaths.map((targetPath) => path.resolve(cwd, targetPath))\n    const filePaths = targetPaths.map((targetPath) => path.relative(outDir, targetPath))\n    const result = await extractTypes({\n      bundledPackages: bundledPackages || [],\n      customTags: config?.extract?.customTags,\n      cwd,\n      distPath: outDir,\n      exportPath,\n      files,\n      filePaths,\n      projectPath: cwd,\n      rules: config?.extract?.rules,\n      sourceTypesPath: sourceTypesPath,\n      tsconfig: ts.config,\n      tmpPath,\n      tsconfigPath: path.resolve(cwd, ts.configPath || 'tsconfig.json'),\n      extractorDisabled: config?.extract?.enabled === false,\n    })\n\n    messages.push(...result.messages)\n\n    const errors = result.messages.filter((msg) => msg.logLevel === 'error')\n\n    if (errors.length > 0) {\n      await rimraf(tmpPath)\n      throw new DtsError(`encountered ${errors.length} errors when extracting types`, errors)\n    }\n\n    results.push({sourcePath: path.resolve(cwd, entry.sourcePath), filePaths: targetPaths})\n  }\n\n  await rimraf(tmpPath)\n\n  return {type: 'dts', messages, results}\n}\n","import chalk from 'chalk'\nimport {Observable} from 'rxjs'\nimport {printExtractMessages} from '../../printExtractMessages'\nimport type {TaskHandler} from '../types'\nimport {doExtract} from './doExtract'\nimport {DtsError} from './DtsError'\nimport type {DtsResult, DtsTask} from './types'\n\n/** @internal */\nexport const dtsTask: TaskHandler<DtsTask, DtsResult> = {\n  name: (ctx, task) =>\n    [\n      `Build type definitions with ${chalk.bold(ctx.dts)}...`,\n      '  entries:',\n      ...task.entries.map((entry) => {\n        return entry.targetPaths\n          .map((targetPath) => {\n            return [\n              `    - ${chalk.cyan(entry.importId)}: `,\n              `${chalk.yellow(entry.sourcePath)} ${chalk.gray('→')} ${chalk.yellow(targetPath)}`,\n            ].join('')\n          })\n          .join('\\n')\n      }),\n    ].join('\\n'),\n  exec: (ctx, task) => {\n    return new Observable((observer) => {\n      doExtract(ctx, task)\n        .then((result) => {\n          observer.next(result)\n          observer.complete()\n        })\n        .catch((err) => {\n          observer.error(err)\n        })\n    })\n  },\n  complete: (ctx, _task, result) => {\n    printExtractMessages(ctx, result.messages)\n  },\n  error: (ctx, _task, err) => {\n    const {logger} = ctx\n\n    if (err instanceof DtsError) {\n      printExtractMessages(ctx, err.messages)\n    } else if (err instanceof Error) {\n      logger.error(err)\n    }\n  },\n}\n","import path from 'node:path'\nimport type {ExtractorMessage} from '@microsoft/api-extractor'\nimport chalk from 'chalk'\nimport * as rimraf from 'rimraf'\nimport {Observable} from 'rxjs'\nimport ts from 'typescript'\nimport {printExtractMessages} from '../../printExtractMessages'\nimport type {TaskHandler} from '../types'\nimport {buildTypes} from './buildTypes'\nimport {DtsError} from './DtsError'\nimport {extractTypes} from './extractTypes'\nimport type {DtsResult, DtsWatchTask} from './types'\n\n/** @internal */\nexport const dtsWatchTask: TaskHandler<DtsWatchTask, DtsResult> = {\n  name: (_ctx, task) =>\n    [\n      'build type definitions',\n      ...task.entries.map((entry) => {\n        return entry.targetPaths.map((targetPath) => {\n          return [\n            `    - ${chalk.cyan(entry.importId)}: `,\n            `${chalk.yellow(entry.sourcePath)} ${chalk.gray('→')} ${chalk.yellow(targetPath)}`,\n          ].join('')\n        })\n      }),\n    ].join('\\n'),\n  exec: (ctx, task) => {\n    const {config, cwd, files, logger, strict, ts: tsContext, bundledPackages} = ctx\n\n    return new Observable((observer) => {\n      if (!tsContext.config || !tsContext.configPath) {\n        observer.next({type: 'dts', messages: [], results: []})\n        observer.complete()\n\n        return\n      }\n\n      const {outDir, rootDir = cwd} = tsContext.config.options\n\n      if (!outDir) {\n        observer.error(new Error('tsconfig.json is missing `compilerOptions.outDir`'))\n\n        return\n      }\n\n      const tmpPath = path.resolve(outDir, '__tmp__')\n\n      buildTypes({\n        cwd,\n        logger,\n        outDir: tmpPath,\n        tsconfig: tsContext.config,\n        strict,\n      }).catch((err) => {\n        observer.error(err)\n      })\n\n      const host = ts.createWatchCompilerHost(\n        tsContext.configPath,\n        {\n          ...tsContext.config.options,\n          declaration: true,\n          declarationDir: tmpPath,\n          emitDeclarationOnly: true,\n          noEmit: false,\n          noEmitOnError: strict ? true : (tsContext.config.options.noEmitOnError ?? true),\n          outDir: tmpPath,\n        },\n        ts.sys,\n        ts.createEmitAndSemanticDiagnosticsBuilderProgram,\n        (diagnostic) => {\n          logger.error(ts.flattenDiagnosticMessageText(diagnostic.messageText, '\\n'))\n        },\n        (diagnostic) => {\n          logger.info(ts.flattenDiagnosticMessageText(diagnostic.messageText, '\\n'))\n        },\n      )\n\n      const origPostProgramCreate = host.afterProgramCreate\n\n      host.afterProgramCreate = async (program) => {\n        origPostProgramCreate?.(program)\n\n        const messages: ExtractorMessage[] = []\n        const results: {sourcePath: string; filePaths: string[]}[] = []\n\n        for (const entry of task.entries) {\n          const exportPath = entry.exportPath === '.' ? './index' : entry.exportPath\n\n          const sourceTypesPath = path.resolve(\n            tmpPath,\n            path.relative(rootDir, path.resolve(cwd, entry.sourcePath)).replace(/\\.ts$/, '.d.ts'),\n          )\n\n          const targetPaths = entry.targetPaths.map((targetPath) => path.resolve(cwd, targetPath))\n          const filePaths = targetPaths.map((targetPath) => path.relative(outDir, targetPath))\n\n          try {\n            const result = await extractTypes({\n              bundledPackages: bundledPackages || [],\n              customTags: config?.extract?.customTags,\n              cwd,\n              distPath: outDir,\n              exportPath,\n              files,\n              filePaths,\n              projectPath: cwd,\n              rules: config?.extract?.rules,\n              sourceTypesPath: sourceTypesPath,\n              tsconfig: tsContext.config!,\n              tmpPath,\n              tsconfigPath: path.resolve(cwd, tsContext.configPath || 'tsconfig.json'),\n              extractorDisabled: config?.extract?.enabled === false,\n            })\n\n            messages.push(...result.messages)\n            results.push({sourcePath: path.resolve(cwd, entry.sourcePath), filePaths: targetPaths})\n          } catch (err) {\n            if (err instanceof DtsError) {\n              messages.push(...err.messages)\n            } else {\n              observer.error(err)\n\n              return\n            }\n          }\n        }\n\n        observer.next({type: 'dts', messages, results})\n      }\n\n      const watchProgram = ts.createWatchProgram(host)\n\n      return () => {\n        watchProgram.close()\n        rimraf.sync(tmpPath)\n      }\n    })\n  },\n  complete: (ctx, task, result) => {\n    const {logger} = ctx\n\n    printExtractMessages(ctx, result.messages)\n\n    logger.success(\n      `build type definitions\\n       ${task.entries\n        .map(\n          (entry) =>\n            `    - ${chalk.cyan(entry.importId)}: ${chalk.yellow(entry.sourcePath)} ${chalk.gray('→')} ${chalk.yellow(entry.targetPaths.join(', '))}`,\n        )\n        .join('\\n       ')}`,\n    )\n    logger.log('')\n  },\n  error: (ctx, _task, err) => {\n    const {logger} = ctx\n\n    if (err instanceof DtsError) {\n      printExtractMessages(ctx, err.messages)\n    } else if (err instanceof Error) {\n      logger.error(err)\n    }\n  },\n}\n","// oxlint-disable no-console\nexport interface ConsoleSpyMsg {\n  type: 'log' | 'warn' | 'error'\n  code?: string\n  args: unknown[]\n}\n\nexport interface ConsoleSpy {\n  messages: ConsoleSpyMsg[]\n  restore: () => void\n}\n\nexport function createConsoleSpy(options?: {\n  onRestored?: (messages: ConsoleSpyMsg[]) => void\n}): ConsoleSpy {\n  const {onRestored} = options || {}\n\n  const original = {\n    log: console.log,\n    warn: console.warn,\n    error: console.error,\n  }\n\n  const messages: ConsoleSpyMsg[] = []\n\n  console.log = (...args: unknown[]) => messages.push({type: 'log', args})\n  console.warn = (...args: unknown[]) => messages.push({type: 'warn', args})\n  console.error = (...args: unknown[]) => messages.push({type: 'error', args})\n\n  return {\n    messages,\n    restore: () => {\n      console.log = original.log\n      console.warn = original.warn\n      console.error = original.error\n\n      onRestored?.(messages)\n    },\n  }\n}\n","import path from 'node:path'\nimport chalk from 'chalk'\nimport {from} from 'rxjs'\nimport {createConsoleSpy} from '../../consoleSpy'\nimport type {BuildContext} from '../../core/contexts/buildContext'\nimport type {RolldownDtsTask, TaskHandler} from '../types'\n\n/** @internal */\nexport const rolldownDtsTask: TaskHandler<RolldownDtsTask> = {\n  name: (ctx, task) => {\n    const bundleEntries = task.entries.filter((e) => e.path.includes('__$$bundle_'))\n    const entries = task.entries.filter((e) => !e.path.includes('__$$bundle_'))\n\n    const targetLines = task.target.length\n      ? [`  target:`, ...task.target.map((t) => `    - ${chalk.yellow(t)}`)]\n      : []\n\n    const bundlesLines = bundleEntries.length\n      ? [\n          '  bundles:',\n          ...bundleEntries.map((e) =>\n            [\n              `    - `,\n              `${chalk.yellow(e.source)} ${chalk.gray('→')} ${chalk.yellow(replaceFileEnding(e.output))}`,\n            ].join(''),\n          ),\n        ]\n      : []\n\n    const entriesLines = entries.length\n      ? [\n          '  entries:',\n          ...entries.map((e) =>\n            [\n              `    - `,\n              `${chalk.cyan(path.join(ctx.pkg.name, e.path))}: `,\n              `${chalk.yellow(e.source)} ${chalk.gray('→')} ${chalk.yellow(replaceFileEnding(e.output))}`,\n            ].join(''),\n          ),\n        ]\n      : []\n\n    return [\n      `Build type definitions with ${chalk.bold('rolldown')}...`,\n      `  format: ${chalk.yellow(task.format)}`,\n      ...targetLines,\n      ...bundlesLines,\n      ...entriesLines,\n    ].join('\\n')\n  },\n  exec: (ctx, task) => {\n    return from(execPromise(ctx, task))\n  },\n  complete: () => {\n    //\n  },\n  error: (_ctx, _task, err) => {\n    console.error(err)\n  },\n}\n\nasync function execPromise(ctx: BuildContext, task: RolldownDtsTask) {\n  const [{rolldown}, {resolveRolldownConfig}] = await Promise.all([\n    import('rolldown'),\n    import('./resolveRolldownConfig'),\n  ])\n  const {distPath, files, logger} = ctx\n  const outDir = path.relative(ctx.cwd, distPath)\n\n  // Prevent rolldown from printing directly to the console\n  const consoleSpy = createConsoleSpy({\n    onRestored: (messages) => {\n      for (const msg of messages) {\n        const text = String(msg.args[0])\n\n        if (msg.code === 'CIRCULAR_DEPENDENCY') {\n          continue // ignore\n        }\n\n        if (text.startsWith('Dynamic import can only')) {\n          continue // ignore\n        }\n\n        if (text.startsWith('Sourcemap is likely to be incorrect')) {\n          continue // ignore\n        }\n\n        if (msg.type === 'log') {\n          logger.info(...msg.args)\n        }\n\n        if (msg.type === 'warn') {\n          logger.warn(...msg.args)\n        }\n\n        if (msg.type === 'error') {\n          logger.error(...msg.args)\n        }\n      }\n    },\n  })\n\n  try {\n    const {inputOptions, outputOptions} = resolveRolldownConfig(ctx, task)\n\n    // Create bundle\n    const bundle = await rolldown({\n      ...inputOptions,\n      onwarn(warning) {\n        consoleSpy.messages.push({\n          type: 'warn',\n          code: warning.code,\n          args: [warning.message],\n        })\n      },\n    })\n\n    // generate output specific code in-memory\n    // you can call this function multiple times on the same bundle object\n    const {output} = await bundle.generate(outputOptions)\n\n    for (const chunkOrAsset of output) {\n      if (chunkOrAsset.type === 'asset') {\n        files.push({\n          type: 'asset',\n          path: path.resolve(outDir, chunkOrAsset.fileName),\n        })\n      } else {\n        files.push({\n          type: 'chunk',\n          path: path.resolve(outDir, chunkOrAsset.fileName),\n        })\n      }\n    }\n\n    // or write the bundle to disk\n    await bundle.write(outputOptions)\n\n    // closes the bundle\n    await bundle.close()\n\n    // Restore console\n    consoleSpy.restore()\n  } catch (err) {\n    // Restore console\n    consoleSpy.restore()\n    throw err\n  }\n}\n\nfunction replaceFileEnding(path: string) {\n  switch (true) {\n    case path.endsWith('.mjs'):\n      return path.replace(/\\.mjs$/, '.d.mts')\n    case path.endsWith('.cjs'):\n      return path.replace(/\\.cjs$/, '.d.cts')\n    default:\n      return path.replace(/\\.js$/, '.d.ts')\n  }\n}\n","import path from 'node:path'\nimport type {PluginItem} from '@babel/core'\nimport {optimizeLodashImports} from '@optimize-lodash/rollup-plugin'\nimport alias from '@rollup/plugin-alias'\nimport {babel, getBabelOutputPlugin} from '@rollup/plugin-babel'\nimport commonjs from '@rollup/plugin-commonjs'\nimport json from '@rollup/plugin-json'\nimport {nodeResolve} from '@rollup/plugin-node-resolve'\nimport replace from '@rollup/plugin-replace'\nimport terser from '@rollup/plugin-terser'\nimport type {InputOptions, OutputOptions, Plugin} from 'rollup'\nimport esbuild from 'rollup-plugin-esbuild'\nimport {pkgExtMap as extMap} from '../../../node/core/pkg/pkgExt'\nimport {resolveConfigProperty} from '../../core/config/resolveConfigProperty'\nimport type {BuildContext} from '../../core/contexts/buildContext'\nimport type {PackageJSON} from '../../core/pkg/types'\nimport type {RollupTask, RollupWatchTask} from '../types'\n\nexport interface RollupConfig {\n  inputOptions: InputOptions\n  outputOptions: OutputOptions\n}\n\n/** @internal */\nexport function resolveRollupConfig(\n  ctx: BuildContext,\n  buildTask: RollupTask | RollupWatchTask,\n): RollupConfig {\n  const {format, runtime, target} = buildTask\n  const {config, cwd, exports: _exports, external, distPath, logger, pkg, ts} = ctx\n  const outputExt = extMap[pkg.type || 'commonjs'][format]\n  const minify = config?.minify ?? false\n  const outDir = path.relative(cwd, distPath)\n\n  const pathAliases = Object.fromEntries(\n    Object.entries(ts.config?.options.paths || {}).map(([key, val]) => {\n      return [key, path.resolve(cwd, ts.config?.options.baseUrl || '.', val[0]!)]\n    }),\n  )\n\n  const entries = buildTask.entries.map((entry) => {\n    return {\n      ...entry,\n      name: path.relative(outDir, entry.output).replace(/\\.[^/.]+$/, ''),\n    }\n  }, {})\n\n  const exportIds =\n    _exports && Object.keys(_exports).map((exportPath) => path.join(pkg.name, exportPath))\n\n  const sourcePaths = _exports && Object.values(_exports).map((e) => path.resolve(cwd, e.source))\n\n  const replacements = Object.fromEntries(\n    Object.entries(config?.define || {}).map(([key, val]) => [key, JSON.stringify(val)]),\n  )\n\n  const {optimizeLodash: enableOptimizeLodash = hasDependency(pkg, 'lodash')} = config?.rollup || {}\n\n  const defaultPlugins = [\n    replace({\n      preventAssignment: true,\n      values:\n        pkg.name === '@sanity/pkg-utils'\n          ? {...replacements}\n          : {\n              'process.env.PKG_FILE_PATH': (arg) => {\n                const sourcePath = `./${path.relative(cwd, arg)}`\n                const entry = entries.find((e) => e.source === sourcePath)\n\n                if (!entry) {\n                  console.error(`could not find source entry: ${sourcePath}`)\n\n                  return 'null'\n                }\n\n                return JSON.stringify(\n                  path.relative(cwd, path.resolve(outDir, entry.name + outputExt)),\n                )\n              },\n              'process.env.PKG_FORMAT': JSON.stringify(format),\n              'process.env.PKG_RUNTIME': JSON.stringify(runtime),\n              'process.env.PKG_VERSION': JSON.stringify(process.env['PKG_VERSION'] || pkg.version),\n              ...replacements,\n            },\n    }),\n    alias({\n      entries: {...pathAliases},\n    }),\n    nodeResolve({\n      browser: runtime === 'browser',\n      extensions: ['.cjs', '.mjs', '.js', '.jsx', '.json', '.node'],\n      preferBuiltins: true,\n    }),\n    commonjs(),\n    json(),\n    (config?.babel?.reactCompiler || config?.babel?.styledComponents) &&\n      babel({\n        babelrc: false,\n        presets: ['@babel/preset-typescript'],\n        babelHelpers: 'bundled',\n        extensions: ['.ts', '.tsx', '.js', '.jsx'],\n        plugins: [\n          // The styled-components plugin needs to run before the react-compiler plugin, in case the css prop is used\n          config?.babel?.styledComponents && [\n            'babel-plugin-styled-components',\n            {\n              // Unnecessary, as the way we use styled-components in Sanity is usually by wrapping `@sanity/ui` primitives, not declaring new ones like \"const Button = styled.button``\"\n              fileName: false,\n              // Native template literals take less space than this transpilation\n              transpileTemplateLiterals: false,\n              // Massively helps dead code elimination and tree-shaking\n              pure: true,\n              // disabled, as pkg-utils tends to be used for npm publishing, while other tooling, like `sanity dev`, `next dev`, etc are used for testing\n              cssProp: false,\n              ...(typeof config.babel.styledComponents === 'object'\n                ? config.babel.styledComponents\n                : {}),\n            },\n          ],\n          config?.babel?.reactCompiler && [\n            'babel-plugin-react-compiler',\n            config?.reactCompilerOptions || {},\n          ],\n        ].filter(Boolean) as PluginItem[],\n      }),\n    esbuild({\n      jsx: config?.jsx ?? 'automatic',\n      jsxFactory: config?.jsxFactory ?? 'createElement',\n      jsxFragment: config?.jsxFragment ?? 'Fragment',\n      jsxImportSource: config?.jsxImportSource ?? 'react',\n      target,\n      tsconfig: ctx.ts.configPath || 'tsconfig.json',\n      treeShaking: true,\n      minifySyntax: config?.minify !== false,\n      supported: {\n        'template-literal': true,\n      },\n    }),\n    Array.isArray(config?.babel?.plugins) &&\n      getBabelOutputPlugin({\n        babelrc: false,\n        plugins: config.babel.plugins,\n      }),\n    enableOptimizeLodash &&\n      optimizeLodashImports({\n        useLodashEs: format === 'esm' && hasDependency(pkg, 'lodash-es') ? true : undefined,\n        ...(typeof config?.rollup?.optimizeLodash === 'boolean'\n          ? {}\n          : config?.rollup?.optimizeLodash),\n      }),\n    minify &&\n      terser({\n        compress: {directives: false, passes: 10},\n        ecma: 2020,\n        output: {\n          comments: (_node, comment) => {\n            const text = comment.value\n            const cType = comment.type\n\n            // Check if this is a multiline comment\n            if (cType === 'comment2') {\n              // Keep licensing comments\n              return /@preserve|@license|@cc_on/i.test(text)\n            }\n\n            return false\n          },\n          preserve_annotations: true,\n        },\n      }),\n  ].filter(Boolean) as Plugin[]\n\n  const userPlugins = config?.rollup?.plugins\n\n  const plugins = Array.isArray(userPlugins)\n    ? defaultPlugins.concat(userPlugins)\n    : resolveConfigProperty(config?.rollup?.plugins, defaultPlugins)\n\n  const hashChunkFileNames = config?.rollup?.hashChunkFileNames ?? false\n  const chunksFolder = hashChunkFileNames ? '_chunks' : '_chunks-[format]'\n  const chunkFileNames = `${chunksFolder}/${hashChunkFileNames ? '[name]-[hash]' : '[name]'}${outputExt}`\n  const entryFileNames = `[name]${outputExt}`\n\n  return {\n    inputOptions: {\n      context: cwd,\n\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            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        if (name && external.includes(name)) {\n          return true\n        }\n\n        return false\n      },\n\n      input: entries.reduce<{[entryAlias: string]: string}>(\n        (acc, entry) => Object.assign(acc, {[entry.name]: entry.source}),\n        {},\n      ),\n\n      watch: {\n        chokidar: {\n          usePolling: true,\n        },\n      },\n\n      plugins,\n\n      treeshake: {\n        preset: 'recommended',\n        propertyReadSideEffects: false,\n        moduleSideEffects: 'no-external',\n        annotations: true,\n        ...config?.rollup?.treeshake,\n      },\n      experimentalLogSideEffects: config?.rollup?.experimentalLogSideEffects,\n    },\n    outputOptions: {\n      chunkFileNames,\n      compact: minify,\n      dir: outDir,\n      entryFileNames,\n      esModule: true,\n      format,\n      interop: 'compat',\n      sourcemap: config?.sourcemap ?? true,\n      hoistTransitiveImports: false,\n      minifyInternalExports: minify,\n      ...config?.rollup?.output,\n    },\n  }\n}\n\nfunction hasDependency(pkg: PackageJSON, packageName: string): boolean {\n  return pkg.dependencies\n    ? packageName in pkg.dependencies\n    : pkg.peerDependencies\n      ? packageName in pkg.peerDependencies\n      : false\n}\n","import path from 'node:path'\nimport chalk from 'chalk'\nimport {rollup} from 'rollup'\nimport {Observable} from 'rxjs'\nimport {createConsoleSpy} from '../../consoleSpy'\nimport type {BuildContext} from '../../core/contexts/buildContext'\nimport type {RollupTask, TaskHandler} from '../types'\nimport {resolveRollupConfig} from './resolveRollupConfig'\n\n/** @internal */\nexport const rollupTask: TaskHandler<RollupTask> = {\n  name: (ctx, task) => {\n    const bundleEntries = task.entries.filter((e) => e.path.includes('__$$bundle_'))\n    const entries = task.entries.filter((e) => !e.path.includes('__$$bundle_'))\n\n    const targetLines = task.target.length\n      ? [`  target:`, ...task.target.map((t) => `    - ${chalk.yellow(t)}`)]\n      : []\n\n    const bundlesLines = bundleEntries.length\n      ? [\n          '  bundles:',\n          ...bundleEntries.map((e) =>\n            [\n              `    - `,\n              `${chalk.yellow(e.source)} ${chalk.gray('→')} ${chalk.yellow(e.output)}`,\n            ].join(''),\n          ),\n        ]\n      : []\n\n    const entriesLines = entries.length\n      ? [\n          '  entries:',\n          ...entries.map((e) =>\n            [\n              `    - `,\n              `${chalk.cyan(path.join(ctx.pkg.name, e.path))}: `,\n              `${chalk.yellow(e.source)} ${chalk.gray('→')} ${chalk.yellow(e.output)}`,\n            ].join(''),\n          ),\n        ]\n      : []\n\n    return [\n      `Build javascript files...`,\n      `  format: ${chalk.yellow(task.format)}`,\n      ...targetLines,\n      ...bundlesLines,\n      ...entriesLines,\n    ].join('\\n')\n  },\n  exec: (ctx, task) => {\n    return new Observable((observer) => {\n      execPromise(ctx, task)\n        .then((result) => {\n          observer.next(result)\n          observer.complete()\n        })\n        .catch((err) => observer.error(err))\n    })\n  },\n  complete: () => {\n    //\n  },\n  error: (_ctx, _task, err) => {\n    console.error(err)\n  },\n}\n\nasync function execPromise(ctx: BuildContext, task: RollupTask) {\n  const {distPath, files, logger} = ctx\n  const outDir = path.relative(ctx.cwd, distPath)\n\n  // Prevent rollup from printing directly to the console\n  const consoleSpy = createConsoleSpy({\n    onRestored: (messages) => {\n      for (const msg of messages) {\n        const text = String(msg.args[0])\n\n        if (msg.code === 'CIRCULAR_DEPENDENCY') {\n          continue // ignore\n        }\n\n        if (text.startsWith('Dynamic import can only')) {\n          continue // ignore\n        }\n\n        if (text.startsWith('Sourcemap is likely to be incorrect')) {\n          continue // ignore\n        }\n\n        if (msg.type === 'log') {\n          logger.info(...msg.args)\n        }\n\n        if (msg.type === 'warn') {\n          logger.warn(...msg.args)\n        }\n\n        if (msg.type === 'error') {\n          logger.error(...msg.args)\n        }\n      }\n    },\n  })\n\n  try {\n    const {inputOptions, outputOptions} = resolveRollupConfig(ctx, task)\n\n    // Create bundle\n    const bundle = await rollup({\n      ...inputOptions,\n      onwarn(warning) {\n        consoleSpy.messages.push({\n          type: 'warn',\n          code: warning.code,\n          args: [warning.message],\n        })\n      },\n    })\n\n    // generate output specific code in-memory\n    // you can call this function multiple times on the same bundle object\n    const {output} = await bundle.generate(outputOptions)\n\n    for (const chunkOrAsset of output) {\n      if (chunkOrAsset.type === 'asset') {\n        files.push({\n          type: 'asset',\n          path: path.resolve(outDir, chunkOrAsset.fileName),\n        })\n      } else {\n        files.push({\n          type: 'chunk',\n          path: path.resolve(outDir, chunkOrAsset.fileName),\n        })\n      }\n    }\n\n    // or write the bundle to disk\n    await bundle.write(outputOptions)\n\n    // closes the bundle\n    await bundle.close()\n\n    // Restore console\n    consoleSpy.restore()\n  } catch (err) {\n    // Restore console\n    consoleSpy.restore()\n    throw err\n  }\n}\n","import path from 'node:path'\nimport chalk from 'chalk'\nimport {watch as rollupWatch, type RollupWatcherEvent, type RollupWatchOptions} from 'rollup'\nimport {Observable} from 'rxjs'\nimport type {RollupWatchTask, TaskHandler} from '../types'\nimport {resolveRollupConfig} from './resolveRollupConfig'\n\n/** @internal */\nexport const rollupWatchTask: TaskHandler<RollupWatchTask, RollupWatcherEvent> = {\n  name: (ctx, task) =>\n    `build javascript files (target ${task.target.join(' + ')}, format ${\n      task.format\n    })\\n       ${task.entries\n      .map((e) => `${chalk.blue(path.join(ctx.pkg.name, e.path))}: ${e.source} -> ${e.output}`)\n      .join('\\n       ')}`,\n  exec: (ctx, task) => {\n    const {inputOptions, outputOptions} = resolveRollupConfig(ctx, task)\n\n    return new Observable((observer) => {\n      const watchOptions: RollupWatchOptions = {\n        ...inputOptions,\n        output: outputOptions,\n      }\n\n      const watcher = rollupWatch(watchOptions)\n\n      watcher.on('event', (event) => {\n        observer.next(event)\n      })\n\n      return () => {\n        watcher.close()\n      }\n    })\n  },\n  complete: (ctx, task, event) => {\n    const {logger} = ctx\n\n    if (event.code === 'BUNDLE_END') {\n      logger.success(\n        `build javascript files (target ${task.target.join(' + ')}, format ${\n          task.format\n        })\\n       ${task.entries\n          .map((e) => `${chalk.blue(path.join(ctx.pkg.name, e.path))}: ${e.source} -> ${e.output}`)\n          .join('\\n       ')}`,\n      )\n      logger.log('')\n\n      return\n    }\n\n    if (event.code === 'BUNDLE_START') {\n      return\n    }\n\n    if (event.code === 'END') {\n      return\n    }\n\n    if (event.code === 'ERROR') {\n      logger.error(event.code, event)\n\n      return\n    }\n\n    if (event.code === 'START') {\n      return\n    }\n  },\n  error: (ctx, _task, err) => {\n    const {logger} = ctx\n\n    if (err instanceof Error) {\n      logger.log(err)\n    }\n  },\n}\n","import {dtsTask} from './dts/dtsTask'\nimport {dtsWatchTask} from './dts/dtsWatchTask'\nimport {rolldownDtsTask} from './rolldown/rolldownDtsTask'\nimport {rollupTask} from './rollup/rollupTask'\nimport {rollupWatchTask} from './rollup/rollupWatchTask'\nimport type {BuildTaskHandlers, WatchTaskHandlers} from './types'\n\n/** @internal */\nexport const buildTaskHandlers: BuildTaskHandlers = {\n  'build:dts': dtsTask,\n  'build:js': rollupTask,\n  'rolldown:dts': rolldownDtsTask,\n}\n\n/** @internal */\nexport const watchTaskHandlers: WatchTaskHandlers = {\n  'watch:dts': dtsWatchTask,\n  'watch:js': rollupWatchTask,\n}\n","import path from 'node:path'\nimport {rimraf} from 'rimraf'\nimport {loadConfig} from './core/config/loadConfig'\nimport {loadPkgWithReporting} from './core/pkg/loadPkgWithReporting'\nimport {createLogger} from './logger'\nimport {resolveBuildContext} from './resolveBuildContext'\nimport {resolveBuildTasks} from './resolveBuildTasks'\nimport {createSpinner} from './spinner'\nimport {buildTaskHandlers} from './tasks'\nimport {type BuildTask, type TaskHandler} from './tasks/types'\n\n/**\n * Build the distribution files of a npm package.\n *\n * @example\n * ```ts\n * import {build} from '@sanity/pkg-utils'\n *\n * build({\n *   cwd: process.cwd(),\n *   tsconfig: 'tsconfig.dist.json,\n * }).then(() => {\n *   console.log('successfully built')\n * }).catch((err) => {\n *   console.log(`build error: ${err.message}`)\n * })\n * ```\n *\n * @public\n */\nexport async function build(options: {\n  cwd: string\n  emitDeclarationOnly?: boolean\n  strict?: boolean\n  tsconfig?: string\n  clean?: boolean\n  quiet?: boolean\n}): Promise<void> {\n  const {\n    cwd,\n    emitDeclarationOnly,\n    strict = false,\n    tsconfig: tsconfigOption,\n    clean = false,\n    quiet = false,\n  } = options\n  const logger = createLogger(quiet)\n\n  const config = await loadConfig({cwd})\n\n  const pkg = await loadPkgWithReporting({cwd, logger, strict})\n\n  const tsconfig = tsconfigOption || config?.tsconfig || 'tsconfig.json'\n\n  const ctx = await resolveBuildContext({\n    config,\n    cwd,\n    emitDeclarationOnly,\n    logger,\n    pkg,\n    strict,\n    tsconfig,\n  })\n\n  if (clean) {\n    if (!quiet) {\n      logger.log(\n        `Deleting the \\`dist\\` folder: './${path.relative(cwd, ctx.distPath)}' before building...`,\n      )\n    }\n    await rimraf(ctx.distPath)\n  }\n\n  const buildTasks = resolveBuildTasks(ctx)\n\n  for (const task of buildTasks) {\n    const handler = buildTaskHandlers[task.type] as TaskHandler<BuildTask>\n    const taskName = handler.name(ctx, task)\n\n    const spinner = createSpinner(taskName, quiet)\n\n    try {\n      const result = await handler.exec(ctx, task).toPromise()\n\n      spinner.complete()\n      ctx.logger.log()\n\n      handler.complete(ctx, task, result)\n    } catch (err) {\n      spinner.error()\n\n      if (err instanceof Error) {\n        const RE_CWD = new RegExp(`${cwd}`, 'g')\n\n        ctx.logger.error(err.message.replace(RE_CWD, '.'))\n        ctx.logger.log()\n      }\n\n      handler.error(ctx, task, err)\n\n      process.exit(1)\n    }\n  }\n}\n","import {statSync} from 'node:fs'\nimport prettyBytes from 'pretty-bytes'\n\nexport function getFilesize(file: string): string {\n  const stats = statSync(file)\n\n  return prettyBytes(stats.size)\n}\n","import path from 'node:path'\nimport chalk from 'chalk'\nimport treeify from 'treeify'\nimport type {PkgExport} from './core/config/types'\nimport type {BuildContext} from './core/contexts/buildContext'\nimport {fileExists} from './fileExists'\nimport {getFilesize} from './getFilesize'\n\nfunction getFileInfo(cwd: string, filePath: string) {\n  const p = path.resolve(cwd, filePath)\n  const exists = fileExists(p)\n  const size = exists ? getFilesize(p) : undefined\n\n  return {exists, size}\n}\n\nexport function printPackageTree(ctx: BuildContext): void {\n  const {cwd, exports, logger, pkg} = ctx\n\n  if (!exports) return\n\n  logger.log(`${chalk.blue(pkg.name)}@${chalk.green(pkg.version)}`)\n\n  const tree: Record<string, unknown> = {}\n\n  if (pkg.type) {\n    tree['type'] = chalk.yellow(pkg.type)\n  }\n\n  if (pkg.bin) {\n    tree['bin'] = Object.fromEntries(\n      Object.entries(pkg.bin).map(([name, file]) => [chalk.cyan(name), fileInfo(file)]),\n    )\n  }\n\n  function fileInfo(file: string) {\n    const info = getFileInfo(cwd, file)\n\n    if (!info.size) {\n      return `${chalk.gray(file)} ${chalk.red('does not exist')}`\n    }\n\n    return `${chalk.yellow(file)} ${chalk.gray(info.size)}`\n  }\n\n  tree['exports'] = Object.fromEntries(\n    Object.entries(exports)\n      .filter(([, entry]) => entry._exported)\n      .map(([exportPath, entry]) => {\n        const exp: Omit<PkgExport, '_exported'> = {\n          source: fileInfo(entry.source),\n          browser: undefined,\n          require: undefined,\n          node: undefined,\n          import: undefined,\n          default: fileInfo(entry.default),\n        }\n\n        if (entry.browser) {\n          exp.browser = {source: fileInfo(entry.browser.source)}\n\n          if (entry.browser.import) exp.browser.import = fileInfo(entry.browser.import)\n          if (entry.browser.require) exp.browser.require = fileInfo(entry.browser.require)\n        } else {\n          delete exp.browser\n        }\n\n        if (entry.require) {\n          exp.require = fileInfo(entry.require)\n        } else {\n          delete exp.require\n        }\n\n        if (entry.node) {\n          exp.node = {}\n\n          if (entry.node.source) exp.node.source = fileInfo(entry.node.source)\n          if (entry.node.import) exp.node.import = fileInfo(entry.node.import)\n          if (entry.node.require) exp.node.require = fileInfo(entry.node.require)\n        } else {\n          delete exp.node\n        }\n\n        if (entry.import) {\n          exp.import = fileInfo(entry.import)\n        } else {\n          delete exp.import\n        }\n\n        return [chalk.cyan(path.join(pkg.name, exportPath)), exp]\n      }),\n  )\n\n  logger.log(treeify.asTree(tree as Record<string, any>, true, true))\n}\n","import path from 'node:path'\nimport type {ExtractorMessage} from '@microsoft/api-extractor'\nimport type {BuildFailure, Message} from 'esbuild'\nimport {createConsoleSpy} from './consoleSpy'\nimport {loadConfig} from './core/config/loadConfig'\nimport type {BuildContext} from './core/contexts'\nimport {loadPkgWithReporting} from './core/pkg/loadPkgWithReporting'\nimport {fileExists} from './fileExists'\nimport {createLogger, type Logger} from './logger'\nimport {printPackageTree} from './printPackageTree'\nimport {resolveBuildContext} from './resolveBuildContext'\nimport {createSpinner} from './spinner'\n\n/** @public */\nexport async function check(options: {\n  cwd: string\n  strict?: boolean\n  tsconfig?: string\n}): Promise<void> {\n  const {cwd, strict = false, tsconfig: tsconfigOption} = options\n  const logger = createLogger()\n  const spinner = createSpinner('')\n  try {\n    const config = await loadConfig({cwd})\n    const pkg = await loadPkgWithReporting({cwd, logger, strict})\n    const tsconfig = tsconfigOption || config?.tsconfig || 'tsconfig.json'\n    const ctx = await resolveBuildContext({config, cwd, logger, pkg, strict, tsconfig})\n\n    printPackageTree(ctx)\n\n    if (strict) {\n      const missingFiles: string[] = []\n\n      // Check if there are missing files\n      for (const [, exp] of Object.entries(ctx.exports || {})) {\n        if (exp.source && !fileExists(path.resolve(cwd, exp.source))) {\n          missingFiles.push(exp.source)\n        }\n\n        if (exp.require && !fileExists(path.resolve(cwd, exp.require))) {\n          missingFiles.push(exp.require)\n        }\n\n        if (exp.import && !fileExists(path.resolve(cwd, exp.import))) {\n          missingFiles.push(exp.import)\n        }\n      }\n\n      if (ctx.pkg.types && !fileExists(path.resolve(cwd, ctx.pkg.types))) {\n        missingFiles.push(ctx.pkg.types)\n      }\n\n      if (missingFiles.length) {\n        logger.error(`missing files: ${missingFiles.join(', ')}`)\n        process.exit(1)\n      }\n\n      // Check if the files are resolved\n      const exportPaths: {require: string[]; import: string[]} = {\n        require: [],\n        import: [],\n      }\n\n      for (const exp of Object.values(ctx.exports || {})) {\n        if (!exp._exported) continue\n        if (exp.require) exportPaths.require.push(exp.require)\n        if (exp.import) exportPaths.import.push(exp.import)\n      }\n\n      const external = [\n        ...Object.keys(pkg.dependencies || {}),\n        ...Object.keys(pkg.devDependencies || {}),\n      ]\n\n      const consoleSpy = createConsoleSpy()\n\n      if (exportPaths.import.length) {\n        checkExports(exportPaths.import, {cwd, external, format: 'esm', logger})\n      }\n\n      if (exportPaths.require.length) {\n        checkExports(exportPaths.require, {cwd, external, format: 'cjs', logger})\n      }\n\n      consoleSpy.restore()\n    }\n\n    if (ctx.dts === 'rolldown' && ctx.config?.extract?.enabled !== false) {\n      await checkApiExtractorReleaseTags(ctx)\n    }\n\n    spinner.complete()\n  } catch (err) {\n    spinner.error()\n\n    if (err instanceof Error) {\n      const RE_CWD = new RegExp(`${cwd}`, 'g')\n\n      logger.error(err.message.replace(RE_CWD, '.'))\n      logger.log()\n    }\n\n    process.exit(1)\n  }\n}\n\nasync function checkExports(\n  exportPaths: string[],\n  options: {cwd: string; external: string[]; format: 'esm' | 'cjs'; logger: Logger},\n) {\n  const {build} = await import('esbuild')\n  const {cwd, external, format, logger} = options\n\n  const code = exportPaths\n    .map((id) => (format ? `import('${id}');` : `require('${id}');`))\n    .join('\\n')\n\n  try {\n    const esbuildResult = await 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(logger.warn, msg)\n\n        logger.log()\n      }\n\n      process.exit(1)\n    }\n\n    const esbuildWarnings = esbuildResult.warnings.filter((msg) => {\n      !(msg.detail || msg.text).includes(`does not affect esbuild's own target setting`)\n    })\n\n    for (const msg of esbuildWarnings) {\n      printEsbuildMessage(logger.warn, msg)\n\n      logger.log()\n    }\n  } catch (err) {\n    if (isEsbuildFailure(err)) {\n      const {errors} = err\n\n      for (const msg of errors) {\n        printEsbuildMessage(logger.error, msg)\n\n        logger.log()\n      }\n    } else if (err instanceof Error) {\n      logger.error(err.stack || err.message)\n\n      logger.log()\n    } else {\n      logger.error(`${err}`)\n\n      logger.log()\n    }\n\n    process.exit(1)\n  }\n}\n\nfunction printEsbuildMessage(log: (...args: unknown[]) => void, msg: Message) {\n  if (msg.location) {\n    log(\n      [\n        `${msg.detail || msg.text}\\n`,\n        `${msg.location.line} | ${msg.location.lineText}\\n`,\n        `in ./${msg.location.file}:${msg.location.line}:${msg.location.column}`,\n      ].join(''),\n    )\n  } else {\n    log(msg.detail || msg.text)\n  }\n}\n\nfunction isEsbuildFailure(err: unknown): err is BuildFailure {\n  return (\n    err instanceof Error &&\n    'errors' in err &&\n    Array.isArray(err.errors) &&\n    err.errors.every(isEsbuildMessage) &&\n    'warnings' in err &&\n    Array.isArray(err.warnings) &&\n    err.warnings.every(isEsbuildMessage)\n  )\n}\n\nfunction isEsbuildMessage(msg: unknown): msg is Message {\n  return (\n    typeof msg === 'object' &&\n    msg !== null &&\n    'text' in msg &&\n    typeof msg.text === 'string' &&\n    'location' in msg &&\n    (msg.location === null || typeof msg.location === 'object')\n  )\n}\n\nasync function checkApiExtractorReleaseTags(ctx: BuildContext) {\n  const [\n    {Extractor, ExtractorConfig},\n    {createApiExtractorConfig},\n    {createTSDocConfig},\n    {getExtractMessagesConfig},\n    {printExtractMessages},\n  ] = await Promise.all([\n    import('@microsoft/api-extractor'),\n    import('./tasks/dts/createApiExtractorConfig'),\n    import('./tasks/dts/createTSDocConfig'),\n    import('./tasks/dts/getExtractMessagesConfig'),\n    import('./printExtractMessages'),\n  ])\n\n  const customTags = ctx.config?.extract?.customTags || []\n  const bundledPackages = ctx.bundledPackages\n  const distPath = ctx.distPath\n  const outDir = ctx.ts.config?.options.outDir\n  const rules = ctx.config?.extract?.rules || {}\n\n  if (!outDir) {\n    throw new Error('tsconfig.json is missing `compilerOptions.outDir`')\n  }\n\n  for (const exp of Object.values(ctx.exports || {})) {\n    if (!exp._exported || !exp.default.endsWith('.js')) continue\n    const dtsPath = exp.default.replace(/\\.js$/, '.d.ts')\n    const exportPath = path.resolve(ctx.cwd, dtsPath)\n\n    const tsdocConfigFile = await createTSDocConfig({\n      customTags,\n    })\n    const extractorConfig = ExtractorConfig.prepare({\n      configObject: createApiExtractorConfig({\n        bundledPackages,\n        distPath,\n        exportPath,\n        filePath: path.relative(outDir, dtsPath),\n        messages: getExtractMessagesConfig({rules}),\n        projectFolder: ctx.cwd,\n        mainEntryPointFilePath: exportPath,\n        tsconfig: ctx.ts.config!,\n        tsconfigPath: path.resolve(ctx.cwd, ctx.ts.configPath || 'tsconfig.json'),\n        dtsRollupEnabled: false,\n      }),\n      configObjectFullPath: undefined,\n      tsdocConfigFile,\n      packageJsonFullPath: path.resolve(ctx.cwd, 'package.json'),\n    })\n    const messages: ExtractorMessage[] = []\n    // Invoke API Extractor\n    Extractor.invoke(extractorConfig, {\n      // Equivalent to the \"--local\" command-line parameter\n      localBuild: true,\n      // Equivalent to the \"--verbose\" command-line parameter\n      showVerboseMessages: true,\n      // handle messages\n      messageCallback(message: ExtractorMessage) {\n        messages.push(message)\n        message.handled = true\n      },\n    })\n\n    printExtractMessages(ctx, messages)\n  }\n}\n","import type {PkgConfigOptions} from './types'\n\n/** @public */\nexport function defineConfig<const T extends PkgConfigOptions>(configOptions: T): T {\n  return configOptions\n}\n","import type {PkgTemplateOption} from './types'\n\n/** @public */\nexport function defineTemplateOption<T>(option: PkgTemplateOption<T>): PkgTemplateOption<T> {\n  return option\n}\n","import {writeFile} from 'node:fs/promises'\nimport {dirname, relative, resolve} from 'node:path'\nimport {mkdirp} from 'mkdirp'\nimport prompts from 'prompts'\nimport type {Logger} from '../../logger'\nimport type {PkgTemplate} from './types'\n\nconst promptsTypes = {\n  string: 'text' as const,\n}\n\n/** @internal */\nexport async function createFromTemplate(options: {\n  cwd: string\n  logger: Logger\n  packagePath: string\n  template: PkgTemplate\n}): Promise<void> {\n  const {cwd, logger, packagePath, template: templateOrResolver} = options\n\n  const template =\n    typeof templateOrResolver === 'function'\n      ? await templateOrResolver({cwd, logger, packagePath})\n      : templateOrResolver\n\n  logger.log('create new package at', relative(cwd, packagePath))\n\n  const templateOptions: Record<string, string> = {}\n\n  for (const templateOption of template.options) {\n    const templateValidate = templateOption.validate\n\n    const res = await prompts(\n      {\n        type: promptsTypes[templateOption.type],\n        name: templateOption.name,\n        message: templateOption.description,\n        validate: templateValidate ? (prev) => templateValidate(prev) : undefined,\n        initial:\n          typeof templateOption.initial === 'function'\n            ? templateOption.initial(templateOptions)\n            : templateOption.initial,\n      },\n      {onCancel: () => process.exit(0)},\n    )\n\n    templateOptions[templateOption.name] = templateOption.parse\n      ? templateOption.parse(res[templateOption.name])\n      : res[templateOption.name]\n  }\n\n  const features: Record<string, boolean> = {}\n\n  for (const templateFeature of template.features) {\n    const res = templateFeature.optional\n      ? await prompts(\n          {\n            type: 'confirm',\n            name: 'confirm',\n            message: `use ${templateFeature.name}?`,\n            initial: templateFeature.initial,\n          },\n          {onCancel: () => process.exit(0)},\n        )\n      : undefined\n\n    features[templateFeature.name] = res?.confirm || !templateFeature.optional\n  }\n\n  const files = await template.getFiles(templateOptions, features)\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 mkdirp(dirname(filePath))\n    await writeFile(filePath, file.contents.trim() + '\\n')\n\n    logger.success(`wrote ${relative(cwd, filePath)}`)\n  }\n}\n","import {readdir} from 'node:fs/promises'\n\nexport async function isEmptyDirectory(dirPath: string): Promise<boolean> {\n  return (await readdir(dirPath)).length === 0\n}\n","const overridableDefaults = {\n  endOfLine: \"lf\",\n  tabWidth: 2,\n  useTabs: !1\n}, json5 = {\n  files: [\"*.json5\"],\n  options: {\n    quoteProps: \"preserve\",\n    singleQuote: !1\n  }\n}, yaml = {\n  files: [\"*.yml\"],\n  options: {\n    singleQuote: !1\n  }\n}, config = {\n  ...overridableDefaults,\n  printWidth: 100,\n  semi: !1,\n  singleQuote: !0,\n  quoteProps: \"consistent\",\n  bracketSpacing: !1,\n  plugins: [\"prettier-plugin-packagejson\"],\n  overrides: [json5, yaml]\n};\nexport {\n  config as default\n};\n//# sourceMappingURL=index.js.map\n","import {execSync} from 'node:child_process'\nimport {resolve} from 'node:path'\nimport prettierConfig from '@sanity/prettier-config'\nimport getLatestVersion from 'get-latest-version'\nimport gitUrlParse from 'git-url-parse'\nimport {outdent} from 'outdent'\nimport {format, type Config as PrettierConfig} from 'prettier'\nimport {isRecord} from '../../core/isRecord'\nimport type {PackageJSON} from '../../core/pkg/types'\nimport {defineTemplateOption} from '../../core/template/define'\nimport {type PkgTemplate, type PkgTemplateFile} from '../../core/template/types'\n\nconst RE_NAME = /^(?:@(?:[a-z0-9-*~][a-z0-9-*._~]*)\\/)?[a-z0-9-~][a-z0-9-._~]*$/i\n\nexport const defaultTemplate: PkgTemplate = async ({cwd, logger, packagePath}) => {\n  const gitConfig = getGitUserConfig(cwd)\n\n  return {\n    options: [\n      defineTemplateOption<{owner: string; name: string}>({\n        name: 'repo',\n        type: 'string',\n        description: 'git url',\n        validate: (v) => {\n          if (!v) return true\n\n          try {\n            gitUrlParse(v)\n\n            return true\n          } catch {\n            return 'invalid git url'\n          }\n        },\n        parse: (v) => {\n          if (!v) return null\n\n          const result = gitUrlParse(v)\n\n          return {source: result.source, owner: result.owner, name: result.name}\n        },\n      }),\n      defineTemplateOption({\n        name: 'pkgName',\n        type: 'string',\n        description: 'package name',\n        initial: (options) => options['repo']?.name || undefined,\n        validate: (v) => {\n          if (!v) return 'package name is required'\n\n          const match = RE_NAME.exec(v)\n\n          if (!match) {\n            return 'invalid package name'\n          }\n\n          return true\n        },\n        parse: (v) => {\n          if (!v) {\n            throw new Error('package name is required')\n          }\n\n          const match = RE_NAME.exec(v)\n\n          if (!match) {\n            throw new Error('invalid package name')\n          }\n\n          const [scope, name] = v.split('/')\n\n          return {scope, name, fullName: v}\n        },\n      }),\n      defineTemplateOption({\n        name: 'description',\n        type: 'string',\n        description: 'package description',\n      }),\n      defineTemplateOption({\n        name: 'authorName',\n        type: 'string',\n        description: 'package author name',\n        initial: gitConfig.user,\n      }),\n      defineTemplateOption({\n        name: 'authorEmail',\n        type: 'string',\n        description: 'package author email',\n        initial: gitConfig.email,\n      }),\n      defineTemplateOption({\n        name: 'license',\n        type: 'string',\n        description: 'package license',\n        initial: 'MIT',\n        validate: (v) => {\n          if (!v) return 'license is required'\n\n          return true\n        },\n      }),\n    ],\n\n    features: [\n      {\n        name: 'eslint',\n        optional: true,\n        initial: true,\n      },\n      {\n        name: 'prettier',\n        optional: true,\n        initial: true,\n      },\n      {\n        name: 'typescript',\n        optional: true,\n        initial: true,\n      },\n    ],\n\n    async getFiles(options, features) {\n      const {pkgName, repo} = options\n      const {fullName: name} = pkgName\n\n      const author =\n        [options['authorName'], options['authorEmail'] && `<${options['authorEmail']}>`]\n          .filter(Boolean)\n          .join(' ') ?? undefined\n\n      const pkgJson: PackageJSON & {\n        prettier?: '@sanity/prettier-config'\n        ['lint-staged']?: Record<string, string[]>\n      } = {\n        name,\n        'version': '0.0.0',\n        'description': options['description'] ?? undefined,\n        'keywords': [],\n        'homepage': undefined,\n        'bugs': undefined,\n        'repository': undefined,\n        'license': options['license'],\n        author,\n        'sideEffects': false,\n        'type': 'module',\n        'exports': {\n          '.': {\n            source: features['typescript'] ? './src/index.ts' : './src/index.js',\n            require: './dist/index.cjs',\n            default: './dist/index.js',\n          },\n          './package.json': './package.json',\n        },\n        'main': './dist/index.cjs',\n        'module': './dist/index.js',\n        'types': undefined,\n        'files': ['dist', 'src'],\n        'scripts': {\n          build: 'pkg build --strict --clean --check',\n          format: features['prettier'] ? 'prettier --write --cache --ignore-unknown .' : undefined,\n        },\n        'lint-staged': features['prettier']\n          ? {\n              '*': ['prettier --write --cache --ignore-unknown'],\n            }\n          : undefined,\n        'browserslist': 'extends @sanity/browserslist-config',\n        'prettier': features['prettier'] ? '@sanity/prettier-config' : undefined,\n        'dependencies': {},\n        'devDependencies': {\n          '@sanity/pkg-utils': '^6',\n          '@sanity/prettier-config': features['prettier'] ? '^1' : undefined,\n          '@typescript-eslint/eslint-plugin': undefined,\n          '@typescript-eslint/parser': undefined,\n          'eslint': undefined,\n          'eslint-config-prettier': undefined,\n          'eslint-plugin-import': undefined,\n          'eslint-plugin-prettier': undefined,\n          'eslint-plugin-simple-import-sort': undefined,\n          'lint-staged': '^15',\n          'prettier': features['prettier'] ? '^3' : undefined,\n          'typescript': undefined,\n        },\n        'engines': {\n          node: '>=18.0.0',\n        },\n      }\n\n      const files: PkgTemplateFile[] = []\n\n      // .editorconfig\n      files.push({\n        name: '.editorconfig',\n        contents: outdent`\n        root = true\n\n        [*]\n        charset = utf-8\n        indent_style = space\n        indent_size = 2\n        end_of_line = lf\n        insert_final_newline = true\n        trim_trailing_whitespace = true\n        `,\n      })\n\n      // .gitignore\n      files.push({\n        name: '.gitignore',\n        contents: outdent`\n        *.local\n        *.log\n        *.tgz\n\n        .DS_Store\n        dist\n        etc\n        node_modules\n        `,\n      })\n\n      if (features['prettier']) {\n        files.push({\n          name: '.prettierignore',\n          contents: outdent`\n          dist\n          pnpm-lock.yaml\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      if (features['typescript']) {\n        pkgJson.types = './dist/index.d.ts'\n\n        pkgJson.scripts = {\n          ...pkgJson.scripts,\n          ['ts:check']: 'tsc --noEmit',\n        }\n\n        const devDependencies = pkgJson.devDependencies\n\n        if (isRecord(devDependencies)) {\n          devDependencies['typescript'] = '^5.4'\n        }\n      }\n\n      if (features['eslint']) {\n        const eslintConfig: any = {\n          root: true,\n          env: {\n            browser: true,\n            es6: true,\n            node: true,\n          },\n          extends: [\n            'eslint:recommended',\n            features['prettier'] ? 'plugin:prettier/recommended' : undefined,\n          ].filter(Boolean),\n          parserOptions: {\n            ecmaVersion: 2020,\n            sourceType: 'module',\n          },\n          plugins: [\n            'import',\n            'simple-import-sort',\n            features['prettier'] ? 'prettier' : undefined,\n          ].filter(Boolean),\n          rules: {\n            'no-console': 'error',\n            'no-shadow': 'error',\n            'no-warning-comments': ['warn', {location: 'start', terms: ['todo', 'fixme']}],\n            'quote-props': ['warn', 'consistent-as-needed'],\n            'simple-import-sort/exports': 'warn',\n            'simple-import-sort/imports': 'warn',\n            'strict': ['warn', 'global'],\n          },\n        }\n\n        files.push({\n          name: '.eslintignore',\n          contents: outdent`\n          dist\n          `,\n        })\n\n        pkgJson.scripts = {\n          ...pkgJson.scripts,\n          lint: features['typescript']\n            ? 'eslint . --ext .cjs,.js,.ts,.tsx'\n            : 'eslint . --ext .cjs,.js',\n        }\n\n        pkgJson.devDependencies = {\n          ...pkgJson.devDependencies,\n          'eslint': '^8',\n          'eslint-config-prettier': features['prettier'] ? '^9' : undefined,\n          'eslint-plugin-import': '^2',\n          'eslint-plugin-prettier': features['prettier'] ? '^5' : undefined,\n          'eslint-plugin-simple-import-sort': '^12',\n        }\n\n        if (features['typescript']) {\n          pkgJson.devDependencies = {\n            ...pkgJson.devDependencies,\n            '@typescript-eslint/eslint-plugin': '^7',\n            '@typescript-eslint/parser': '^7',\n          }\n\n          const eslintConfigOverride: any = {\n            files: ['**/*.ts', '**/*.tsx'],\n            parser: '@typescript-eslint/parser',\n            parserOptions: {\n              project: ['./tsconfig.json'],\n            },\n            extends: [\n              'eslint:recommended',\n              features['prettier'] ? 'plugin:prettier/recommended' : undefined,\n              'plugin:@typescript-eslint/eslint-recommended',\n              'plugin:@typescript-eslint/recommended',\n            ].filter(Boolean),\n            plugins: [\n              'import',\n              '@typescript-eslint',\n              'simple-import-sort',\n              features['prettier'] ? 'prettier' : undefined,\n            ].filter(Boolean),\n            rules: {\n              '@typescript-eslint/explicit-module-boundary-types': 'error',\n              '@typescript-eslint/interface-name-prefix': 'off',\n              '@typescript-eslint/member-delimiter-style': 'off',\n              '@typescript-eslint/no-empty-interface': 'off',\n            },\n          }\n\n          eslintConfig.overrides = [eslintConfigOverride]\n        }\n\n        files.push({\n          name: '.eslintrc.cjs',\n          contents: await prettierFormat(\n            resolve(packagePath, '.eslintrc.cjs'),\n            outdent`\n            'use strict'\n\n            /** @type import('eslint').Linter.Config */\n            module.exports = ${JSON.stringify(eslintConfig, null, 2)}\n            `,\n            prettierConfig,\n          ),\n        })\n      }\n\n      if (features['typescript']) {\n        files.push({\n          name: 'tsconfig.settings.json',\n          contents: await prettierFormat(\n            resolve(packagePath, 'tsconfig.settings.json'),\n            outdent`\n            {\n              \"extends\": \"@sanity/pkg-utils/tsconfig/strictest.json\",\n              \"compilerOptions\": {\n                \"rootDir\": \".\",\n                \"outDir\": \"./dist\"\n              }\n            }\n            `,\n            prettierConfig,\n          ),\n        })\n\n        files.push({\n          name: 'tsconfig.dist.json',\n          contents: await prettierFormat(\n            resolve(packagePath, 'tsconfig.dist.json'),\n            outdent`\n            {\n              \"extends\": \"./tsconfig.settings\",\n              \"include\": [\"./src\"],\n              \"exclude\": [\"./src/**/*.test.ts\"]\n            }\n            `,\n            prettierConfig,\n          ),\n        })\n\n        files.push({\n          name: 'tsconfig.json',\n          contents: await prettierFormat(\n            resolve(packagePath, 'tsconfig.json'),\n            outdent`\n            {\n              \"extends\": \"./tsconfig.settings\",\n              \"include\": [\"./**/*.cjs\", \"./**/*.ts\", \"./**/*.tsx\"],\n              \"exclude\": [\"./node_modules\"]\n            }\n            `,\n            prettierConfig,\n          ),\n        })\n      }\n\n      // source file\n      if (features['typescript']) {\n        files.push({\n          name: 'package.config.ts',\n          contents: await prettierFormat(\n            resolve(packagePath, 'package.config.ts'),\n            outdent`\n            import {defineConfig} from '@sanity/pkg-utils'\n\n            // https://github.com/sanity-io/pkg-utils#configuration\n            export default defineConfig({\n              // the path to the tsconfig file for distributed builds\n              tsconfig: 'tsconfig.dist.json',\n            })\n            `,\n            prettierConfig,\n          ),\n        })\n\n        files.push({\n          name: 'src/index.ts',\n          contents: await prettierFormat(\n            resolve(packagePath, 'src/index.ts'),\n            outdent`\n            /** @public */\n            export function main(): void {\n              //\n            }\n            `,\n            prettierConfig,\n          ),\n        })\n      } else {\n        files.push({\n          name: 'package.config.js',\n          contents: await prettierFormat(\n            resolve(packagePath, 'package.config.js'),\n            outdent`\n            import {defineConfig} from '@sanity/pkg-utils'\n\n            export default defineConfig({\n              extract: {\n                rules: {\n                  // do not require internal members to be prefixed with \\`_\\`\n                  'ae-internal-missing-underscore': 'off',\n                },\n              },\n            })\n            `,\n            prettierConfig,\n          ),\n        })\n\n        files.push({\n          name: 'src/index.js',\n          contents: await prettierFormat(\n            resolve(packagePath, 'src/index.js'),\n            outdent`\n            /** @public */\n            export function main() {\n              //\n            }\n            `,\n            prettierConfig,\n          ),\n        })\n      }\n\n      // Resolve latest dependencies\n      try {\n        pkgJson.dependencies = await resolveLatestDeps(pkgJson.dependencies ?? {})\n      } catch (error) {\n        logger.warn(error instanceof Error ? error.message : error)\n      }\n\n      // Resolve latest devDependencies\n      try {\n        pkgJson.devDependencies = await resolveLatestDeps(pkgJson.devDependencies ?? {})\n      } catch (error) {\n        logger.warn(error instanceof Error ? error.message : error)\n      }\n\n      files.push({\n        name: 'package.json',\n        contents: await prettierFormat(\n          resolve(packagePath, 'package.json'),\n          JSON.stringify(pkgJson, null, 2),\n          prettierConfig,\n        ),\n      })\n\n      return files\n    },\n  }\n}\n\nfunction prettierFormat(\n  filepath: string,\n  input: string,\n  prettierOptions: PrettierConfig | undefined,\n) {\n  return format(input, {...prettierOptions, plugins: [], filepath})\n}\n\nasync function resolveLatestDeps(deps: Record<string, string | undefined>) {\n  const depsEntries = Object.entries(deps)\n  const latestDeps: Record<string, string> = {}\n\n  for (const entry of depsEntries) {\n    const [name, version] = entry\n\n    if (version) {\n      const latestVersion = await getLatestVersion(name, version)\n\n      latestDeps[name] = latestVersion ? `^${latestVersion}` : version\n    }\n  }\n\n  return latestDeps\n}\n\nfunction getGitUserConfig(cwd: string): {user: string | undefined; email: string | undefined} {\n  let user: string | undefined\n  let email: string | undefined\n\n  try {\n    user = execSync('git config user.name', {encoding: 'utf8', cwd}).trim() || undefined\n    email = execSync('git config user.email', {encoding: 'utf8', cwd}).trim() || undefined\n  } catch {\n    /* ignore */\n  }\n\n  return {user, email}\n}\n","import {lstat} from 'node:fs/promises'\nimport {resolve} from 'node:path'\nimport {mkdirp} from 'mkdirp'\nimport {createFromTemplate} from './core/template'\nimport {fileExists} from './fileExists'\nimport {isEmptyDirectory} from './isEmptyDirectory'\nimport {createLogger} from './logger'\nimport {defaultTemplate} from './templates/default/template'\n\n/** @public */\nexport async function init(options: {cwd: string; path: string}): Promise<void> {\n  if (!options.cwd) {\n    throw new Error('Missing required option: cwd')\n  }\n\n  if (!options.path) {\n    throw new Error('Missing required option: path')\n  }\n\n  const logger = createLogger()\n\n  const packagePath = resolve(options.cwd, options.path)\n\n  await ensurePackagePath(packagePath)\n\n  await createFromTemplate({\n    cwd: options.cwd,\n    logger,\n    template: defaultTemplate,\n    packagePath,\n  })\n}\n\nasync function ensurePackagePath(packagePath: string): Promise<void> {\n  const exists = fileExists(packagePath)\n\n  if (!exists) {\n    await mkdirp(packagePath)\n\n    return\n  }\n\n  const dir = (await lstat(packagePath)).isDirectory()\n\n  if (!dir) {\n    throw new Error('the package path is a file, not a directory')\n  }\n\n  const empty = await isEmptyDirectory(packagePath)\n\n  if (!empty) {\n    throw new Error('the package directory is not empty')\n  }\n}\n","import path from 'node:path'\nimport type {PkgExport, PkgFormat, PkgRuntime} from './core/config/types'\nimport type {BuildContext} from './core/contexts/buildContext'\nimport {getTargetPaths} from './tasks/dts/getTargetPaths'\nimport type {DtsWatchTask} from './tasks/dts/types'\nimport type {RollupTaskEntry, RollupWatchTask, WatchTask} from './tasks/types'\n\n/** @internal */\nexport function resolveWatchTasks(ctx: BuildContext): WatchTask[] {\n  const {pkg, target} = ctx\n  const tasks: WatchTask[] = []\n\n  const exports = Object.entries(ctx.exports || {}).map(\n    ([_path, exp]) => ({_path, ...exp}) as PkgExport & {_path: string},\n  )\n\n  const dtsTask: DtsWatchTask = {\n    type: 'watch:dts',\n    entries: [],\n  }\n\n  const rollupTasks: Record<string, RollupWatchTask> = {}\n\n  function addRollupTaskEntry(format: PkgFormat, runtime: PkgRuntime, entry: RollupTaskEntry) {\n    const buildId = `${format}:${runtime}`\n\n    if (rollupTasks[buildId]) {\n      rollupTasks[buildId].entries.push(entry)\n    } else {\n      rollupTasks[buildId] = {\n        type: 'watch:js',\n        buildId,\n        entries: [entry],\n        runtime,\n        format,\n        target: target[runtime],\n      }\n    }\n  }\n\n  // Parse `dts` tasks\n  for (const exp of exports) {\n    const importId = path.join(pkg.name, exp._path)\n\n    if (exp.source?.endsWith('.ts')) {\n      dtsTask.entries.push({\n        importId,\n        exportPath: exp._path,\n        sourcePath: exp.source,\n        targetPaths: getTargetPaths(pkg.type, exp),\n      })\n    }\n\n    if (exp.browser?.source?.endsWith('.ts')) {\n      dtsTask.entries.push({\n        importId,\n        exportPath: exp._path,\n        sourcePath: exp.browser.source,\n        targetPaths: getTargetPaths(pkg.type, exp.browser),\n      })\n    }\n\n    if (exp.node?.source?.endsWith('.ts')) {\n      dtsTask.entries.push({\n        importId,\n        exportPath: exp._path,\n        sourcePath: exp.node.source,\n        targetPaths: getTargetPaths(pkg.type, exp.node),\n      })\n    }\n  }\n\n  // Parse rollup:commonjs:* tasks\n  for (const exp of exports) {\n    const output = exp.require\n\n    if (!output) continue\n\n    addRollupTaskEntry('commonjs', ctx.runtime, {\n      path: exp._path,\n      source: exp.source,\n      output,\n    })\n  }\n\n  // Parse rollup:commonjs:browser tasks\n  for (const exp of exports) {\n    const output = exp.browser?.require\n\n    if (!output) continue\n\n    addRollupTaskEntry('commonjs', 'browser', {\n      path: exp._path,\n      source: exp.browser?.source || exp.source,\n      output,\n    })\n  }\n\n  // Parse rollup:esm:* tasks\n  for (const exp of exports) {\n    const output = exp.import\n\n    if (!output) continue\n\n    addRollupTaskEntry('esm', ctx.runtime, {\n      path: exp._path,\n      source: exp.source,\n      output,\n    })\n  }\n\n  // Parse rollup:esm:browser tasks\n  for (const exp of exports) {\n    const output = exp.browser?.import\n\n    if (!output) continue\n\n    addRollupTaskEntry('esm', 'browser', {\n      path: exp._path,\n      source: exp.browser?.source || exp.source,\n      output,\n    })\n  }\n\n  if (dtsTask.entries.length) {\n    tasks.push(dtsTask)\n  }\n\n  tasks.push(...Object.values(rollupTasks))\n\n  return tasks\n}\n","import path from 'node:path'\nimport globby from 'globby'\n\nexport function globFiles(patterns: string[]): Promise<string[]> {\n  return globby(patterns.map((pattern) => pattern.split(path.sep).join(path.posix.sep)))\n}\n","import * as chokidar from 'chokidar'\nimport type {EventName} from 'chokidar/handler.js'\nimport {Observable} from 'rxjs'\n\nexport interface FileEvent {\n  type: EventName\n  file: string\n}\n\nexport function watchFiles(patterns: string[]): Observable<FileEvent> {\n  return new Observable((observer) => {\n    const watcher = chokidar.watch(patterns, {\n      ignoreInitial: true,\n    })\n\n    function handleFileEvent(type: EventName, file: string | Error) {\n      if (type === 'error' || file instanceof Error) {\n        observer.error(file)\n      } else {\n        observer.next({type, file})\n      }\n    }\n\n    watcher.on('all', handleFileEvent)\n\n    return () => {\n      watcher.off('all', handleFileEvent)\n      watcher.close()\n    }\n  })\n}\n","import path from 'node:path'\nimport type {Observable} from 'rxjs'\nimport {distinctUntilChanged, scan, startWith} from 'rxjs/operators'\nimport {globFiles} from './globFiles'\nimport type {Logger} from './logger'\nimport {watchFiles} from './watchFiles'\n\nexport async function watchConfigFiles(options: {\n  cwd: string\n  logger: Logger\n}): Promise<Observable<string[]>> {\n  const {cwd, logger} = options\n\n  const initialFiles = await globFiles([\n    path.resolve(cwd, 'package.json'),\n    path.resolve(cwd, 'package.config.cjs'),\n    path.resolve(cwd, 'package.config.js'),\n    path.resolve(cwd, 'package.config.ts'),\n  ])\n\n  const fileEvent$ = watchFiles([\n    path.resolve(cwd, 'package.json'),\n    path.resolve(cwd, 'package.config.cjs'),\n    path.resolve(cwd, 'package.config.js'),\n    path.resolve(cwd, 'package.config.ts'),\n  ])\n\n  return fileEvent$.pipe(\n    scan((files, fileEvent) => {\n      if (fileEvent.type === 'add') {\n        return files.concat(fileEvent.file)\n      }\n\n      if (fileEvent.type === 'unlink') {\n        return files.filter((f) => f !== fileEvent.file)\n      }\n\n      if (fileEvent.type === 'change') {\n        logger.log(\n          '--------------------------------------------------------------------------------',\n        )\n        logger.info(path.relative(cwd, fileEvent.file), 'changed')\n        logger.log('')\n\n        return files.slice(0) // trigger update\n      }\n\n      return files\n    }, initialFiles),\n    startWith(initialFiles),\n    distinctUntilChanged(),\n  )\n}\n","import path from 'node:path'\nimport {switchMap} from 'rxjs'\nimport {loadConfig} from './core/config/loadConfig'\nimport {loadPkgWithReporting} from './core/pkg/loadPkgWithReporting'\nimport {createLogger} from './logger'\nimport {resolveBuildContext} from './resolveBuildContext'\nimport {resolveWatchTasks} from './resolveWatchTasks'\nimport {watchTaskHandlers} from './tasks'\nimport {type TaskHandler, type WatchTask} from './tasks/types'\nimport {watchConfigFiles} from './watchConfigFiles'\n\n/** @public */\nexport async function watch(options: {\n  cwd: string\n  strict?: boolean\n  tsconfig?: string\n}): Promise<void> {\n  const {cwd, strict = false, tsconfig: tsconfigOption} = options\n\n  const logger = createLogger()\n\n  const configFiles$ = await watchConfigFiles({cwd, logger})\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 config = await loadConfig({cwd})\n      const pkg = await loadPkgWithReporting({cwd, logger, strict})\n      const tsconfig = tsconfigOption || config?.tsconfig || 'tsconfig.json'\n\n      return resolveBuildContext({config, cwd, logger, pkg, strict, tsconfig})\n    }),\n  )\n\n  ctx$.subscribe(async (ctx) => {\n    const watchTasks = resolveWatchTasks(ctx)\n\n    for (const task of watchTasks) {\n      const handler = watchTaskHandlers[task.type] as TaskHandler<WatchTask, unknown>\n      const result$ = handler.exec(ctx, task)\n\n      result$.subscribe({\n        error: (err) => {\n          ctx.logger.error(err)\n          ctx.logger.log()\n\n          process.exit(1)\n        },\n        next: (result) => {\n          handler.complete(ctx, task, result)\n        },\n        complete: () => {\n          ctx.logger.success(handler.name(ctx, task))\n          ctx.logger.log()\n        },\n      })\n    }\n  })\n}\n"],"names":["statSync","findConfig","path","require","createRequire","pkgUp","register","z","fs","ZodError","chalk","browserslist","config","isPkgExport","extMap","strictOptions","existsSync","resolvePath","ts","errorMap","exports","dtsTask","rolldownDtsTask","readFile","parse","TSDocConfigFile","typeScriptParser","node","print","ExtractorConfig","Extractor","prettier","mkdirp","rimraf","Observable","from","execPromise","replace","alias","nodeResolve","commonjs","json","babel","esbuild","getBabelOutputPlugin","optimizeLodashImports","terser","rollup","rollupWatch","prettyBytes","treeify","build","createApiExtractorConfig","createTSDocConfig","getExtractMessagesConfig","printExtractMessages","relative","prompts","resolve","dirname","writeFile","readdir","gitUrlParse","outdent","prettierConfig","format","getLatestVersion","execSync","lstat","globby","chokidar","scan","startWith","distinctUntilChanged","switchMap"],"mappings":"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","x_google_ignoreList":[8,50]}