@sanity/pkg-utils 7.11.5 → 7.11.6

This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
@@ -1 +1 @@
1
- {"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/optimizeCss.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 {basename} from 'node:path'\nimport browserslist from 'browserslist'\nimport {browserslistToTargets, transform} from 'lightningcss'\nimport type {OutputAsset, Plugin} from 'rollup'\n\nexport function optimizeCss(options: {\n extractFileName: string\n browserslist: string | string[]\n}): Plugin {\n return {\n name: 'optimize-css',\n\n async generateBundle(_outputOptions, bundle, _isWrite) {\n for (const [fileName, assetOrChunk] of Object.entries(bundle)) {\n // find CSS assets\n if (assetOrChunk.type === 'asset') {\n const asset = assetOrChunk\n if (asset.originalFileNames.includes(options.extractFileName)) {\n const sourceMapFileName = `${fileName}.map`\n await transformCss(\n asset,\n bundle[sourceMapFileName]?.type === 'asset' ? bundle[sourceMapFileName] : undefined,\n options.browserslist,\n )\n }\n }\n }\n },\n }\n}\n\nasync function transformCss(\n asset: OutputAsset,\n sourceMapAsset: OutputAsset | undefined,\n browserslistConfig: string | string[],\n) {\n const css = asset.source.toString()\n const file = asset.fileName\n\n const targets = browserslistToTargets(browserslist(browserslistConfig))\n\n // process and minify css using lightningcss\n const lightningCssResult = transform({\n filename: file,\n code: Buffer.from(css),\n minify: true,\n cssModules: false,\n targets,\n sourceMap: !!sourceMapAsset,\n inputSourceMap: sourceMapAsset ? sourceMapAsset.source.toString() : undefined,\n })\n\n if (lightningCssResult.warnings.length) {\n // eslint-disable-next-line no-console\n console.warn(lightningCssResult.warnings)\n }\n\n asset.source = new TextDecoder().decode(lightningCssResult.code)\n if (sourceMapAsset && lightningCssResult.map) {\n sourceMapAsset.source = new TextDecoder().decode(lightningCssResult.map)\n asset.source += `\\n/*# sourceMappingURL=${basename(sourceMapAsset.fileName)}*/\\n`\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 {vanillaExtractPlugin} from '@vanilla-extract/rollup-plugin'\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 {DEFAULT_BROWSERSLIST_QUERY} from '../../core/defaults'\nimport type {PackageJSON} from '../../core/pkg/types'\nimport type {RollupTask, RollupWatchTask} from '../types'\nimport {optimizeCss} from './optimizeCss'\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?.rollup?.vanillaExtract &&\n vanillaExtractPlugin(\n config?.rollup?.vanillaExtract === true\n ? {\n extract: {\n name:\n runtime === 'node'\n ? 'bundle.node.css'\n : runtime === 'browser'\n ? 'bundle.browser.css'\n : 'bundle.css',\n sourcemap: true,\n },\n identifiers: 'short',\n }\n : config?.rollup?.vanillaExtract,\n ),\n config?.rollup?.vanillaExtract &&\n optimizeCss(\n config?.rollup?.vanillaExtract === true\n ? {\n extractFileName:\n runtime === 'node'\n ? 'bundle.node.css'\n : runtime === 'browser'\n ? 'bundle.browser.css'\n : 'bundle.css',\n browserslist: DEFAULT_BROWSERSLIST_QUERY,\n }\n : {\n extractFileName:\n typeof config.rollup.vanillaExtract.extract === 'object' &&\n config.rollup.vanillaExtract.extract.name\n ? config.rollup.vanillaExtract.extract.name\n : runtime === 'node'\n ? 'bundle.node.css'\n : runtime === 'browser'\n ? 'bundle.browser.css'\n : 'bundle.css',\n browserslist: config.rollup.vanillaExtract.browserslist || DEFAULT_BROWSERSLIST_QUERY,\n },\n ),\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 // If the module ends with `.css` it is considered to be a side effect, even if the module is marked as no side effect,\n // this option used to be `moduleSideEffects: 'no-external'`, and thus if it's not CSS it uses `!external`, which is equivalent to `'no-external'`\n moduleSideEffects: (id, external) => (id.endsWith('.css') ? true : !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 assetFileNames: '[name][extname]',\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 // We're not interested in CSS files that might be imported as a side effect, so we'll treat them as empty\n loader: {'.css': 'empty'},\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","browserslistToTargets","transform","basename","replace","alias","nodeResolve","commonjs","json","vanillaExtractPlugin","babel","esbuild","getBabelOutputPlugin","optimizeLodashImports","terser","external","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":";;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;AAGO,SAAS,WAAW,UAA2B;AACpD,MAAI;AACF,WAAAA,QAAAA,SAAS,QAAQ,GAEV;AAAA,EACT,QAAQ;AACN,WAAO;AAAA,EACT;AACF;ACPA,MAAM,oBAAoB;AAAA,EACxB;AAAA,EACA;AAAA,EACA;AAAA,EACA;AACF;AAGO,SAAS,eAAe,KAAiC;AAC9D,QAAM,cAAcC,oBAAAA,QAAW,gBAAgB,EAAC,KAAI;AAEpD,MAAI,CAAC,YAAa;AAElB,QAAM,UAAUC,cAAAA,QAAK,QAAQ,WAAW;AAExC,aAAW,YAAY,mBAAmB;AACxC,UAAM,aAAaA,cAAAA,QAAK,QAAQ,SAAS,QAAQ;AAIjD,QAFe,WAAW,UAAU;AAGlC,aAAO;AAAA,EAEX;AAGF;ACvBA,MAAMC,YAAUC,YAAAA,kQAA6B;AAG7C,eAAsB,WAAW,SAA+D;AAC9F,QAAM,EAAC,QAAO,SAER,UAAU,MAAMC,eAAAA,QAAM,EAAC,KAAI;AAEjC,MAAI,CAAC,QAAS;AAEd,QAAM,OAAOH,cAAAA,QAAK,QAAQ,OAAO,GAE3B,aAAa,MAAM,eAAe,IAAI;AAO5C,MALI,CAAC,cAKD,CAAC,WAAW,WAAW,GAAG;AAC5B;AAGF,QAAM,iBAAiB,EAAC,YAAY,CAAC,OAAO,QAAQ,KAAK,KAEnD,EAAC,eAAc,WAAW,UAAU,EAAC,YAAY,MAAG;AAAA,EAAA,EAAA,IAAgBI,KAAAA,SAAS,cAAc,GAE3F,MAAMH,UAAQ,UAAU;AAE9B,SAAA,WAAA,GAEO,KAAK,WAAW,OAAO;AAChC;AC1BO,SAAS,WAAc,GAAM,KAAmB;AACrD,QAAM,OAAO,IAAI,QAAQ,CAAC;AAG1B,SAAI,SAAS,KACJ,KAGF,SAAS,IAAI,SAAS;AAC/B;AAGO,SAAS,YAAe,GAAM,GAAM,KAAmB;AAC5D,QAAM,OAAO,IAAI,QAAQ,CAAC,GACpB,OAAO,IAAI,QAAQ,CAAC;AAG1B,SAAI,SAAS,MAAM,SAAS,KACnB,KAGF,OAAO;AAChB;AChCA,MAAM,YAAYI,IAAAA,EAAE,OAAO;AAAA,EACzB,MAAMA,IAAAA,EAAE,SAASA,IAAAA,EAAE,KAAK,CAAC,YAAY,QAAQ,CAAC,CAAC;AAAA,EAC/C,MAAMA,IAAAA,EAAE,OAAA;AAAA,EACR,SAASA,IAAAA,EAAE,OAAA;AAAA,EACX,SAASA,IAAAA,EAAE,OAAA;AAAA,EACX,KAAKA,IAAAA,EAAE,SAASA,IAAAA,EAAE,OAAOA,IAAAA,EAAE,OAAA,CAAQ,CAAC;AAAA,EACpC,cAAcA,IAAAA,EAAE,SAASA,IAAAA,EAAE,OAAOA,IAAAA,EAAE,OAAA,CAAQ,CAAC;AAAA,EAC7C,iBAAiBA,IAAAA,EAAE,SAASA,IAAAA,EAAE,OAAOA,IAAAA,EAAE,OAAA,CAAQ,CAAC;AAAA,EAChD,kBAAkBA,IAAAA,EAAE,SAASA,IAAAA,EAAE,OAAOA,IAAAA,EAAE,OAAA,CAAQ,CAAC;AAAA,EACjD,QAAQA,IAAAA,EAAE,SAASA,IAAAA,EAAE,QAAQ;AAAA,EAC7B,MAAMA,IAAAA,EAAE,SAASA,IAAAA,EAAE,QAAQ;AAAA,EAC3B,SAASA,IAAAA,EAAE,SAASA,IAAAA,EAAE,OAAOA,IAAAA,EAAE,OAAA,CAAQ,CAAC;AAAA,EACxC,QAAQA,IAAAA,EAAE,SAASA,IAAAA,EAAE,QAAQ;AAAA,EAC7B,OAAOA,IAAAA,EAAE,SAASA,IAAAA,EAAE,QAAQ;AAAA,EAC5B,SAASA,IAAAA,EAAE;AAAA,IACTA,IAAAA,EAAE;AAAA,MACAA,IAAAA,EAAE,MAAM;AAAA,QACNA,IAAAA,EAAE,OAA2B,CAAC,QAAQ,iBAAiB,KAAK,GAAa,CAAC;AAAA,QAC1EA,IAAAA,EAAE,OAA0B,CAAC,QAAQ,gBAAgB,KAAK,GAAa,CAAC;AAAA,QACxEA,IAAAA,EAAE,OAAO;AAAA,UACP,OAAOA,IAAAA,EAAE,SAASA,IAAAA,EAAE,QAAQ;AAAA,UAC5B,QAAQA,IAAAA,EAAE,SAASA,IAAAA,EAAE,QAAQ;AAAA,UAC7B,SAASA,IAAAA,EAAE;AAAA,YACTA,IAAAA,EAAE,OAAO;AAAA,cACP,QAAQA,IAAAA,EAAE,OAAA;AAAA,cACV,QAAQA,IAAAA,EAAE,SAASA,IAAAA,EAAE,QAAQ;AAAA,cAC7B,SAASA,IAAAA,EAAE,SAASA,IAAAA,EAAE,QAAQ;AAAA,YAAA,CAC/B;AAAA,UAAA;AAAA,UAEH,MAAMA,IAAAA,EAAE;AAAA,YACNA,IAAAA,EAAE,OAAO;AAAA,cACP,QAAQA,IAAAA,EAAE,SAASA,IAAAA,EAAE,QAAQ;AAAA,cAC7B,QAAQA,IAAAA,EAAE,SAASA,IAAAA,EAAE,QAAQ;AAAA,cAC7B,SAASA,IAAAA,EAAE,SAASA,IAAAA,EAAE,QAAQ;AAAA,YAAA,CAC/B;AAAA,UAAA;AAAA,UAEH,QAAQA,IAAAA,EAAE,SAASA,IAAAA,EAAE,QAAQ;AAAA,UAC7B,SAASA,IAAAA,EAAE,SAASA,IAAAA,EAAE,QAAQ;AAAA,UAC9B,SAASA,IAAAA,EAAE,OAAA;AAAA,QAAO,CACnB;AAAA,QACDA,IAAAA,EAAE,OAAO;AAAA,UACP,OAAOA,IAAAA,EAAE,SAASA,IAAAA,EAAE,QAAQ;AAAA,UAC5B,QAAQA,IAAAA,EAAE,OAAA;AAAA,UACV,SAASA,IAAAA,EAAE,SAASA,IAAAA,EAAE,QAAQ;AAAA,QAAA,CAC/B;AAAA,MAAA,CACF;AAAA,IAAA;AAAA,EACH;AAAA,EAEF,cAAcA,IAAAA,EAAE,SAASA,IAAAA,EAAE,MAAM,CAACA,IAAAA,EAAE,OAAA,GAAUA,IAAAA,EAAE,MAAMA,IAAAA,EAAE,OAAA,CAAQ,CAAC,CAAC,CAAC;AAAA,EACnE,aAAaA,IAAAA,EAAE,SAASA,IAAAA,EAAE,MAAM,CAACA,IAAAA,EAAE,QAAA,GAAWA,IAAAA,EAAE,MAAMA,IAAAA,EAAE,OAAA,CAAQ,CAAC,CAAC,CAAC;AAAA;AAAA,EAEnE,eAAeA,IAAAA,EAAE,SAASA,IAAAA,EAAE,KAAK;AACnC,CAAC,GAGK,UAAU,oBAAI,IAAA;AAEpB,WAAW,OAAO,UAAU,MAAA,EAAQ,KAAK;AACvC,UAAQ,IAAI,IAAI,YAAA,GAAe,GAAG;AAG7B,SAAS,YAAY,OAA6B;AACvD,QAAM,MAAM,UAAU,MAAM,KAAK,GAE3B,aAAa,OAAO,KAAK,KAAoB,EAAE,KAAK,CAAC,QAAQ;AACjE,UAAM,SAAS,IAAI,YAAA;AAEnB,WAAO,QAAQ,IAAI,MAAM,IAAI,QAAQ,IAAI,MAAM,MAAM,MAAM;AAAA,EAC7D,CAAC;AAED,MAAI;AACF,UAAM,IAAI;AAAA,MACR;AAAA,mBACa,UAAU,uCAAuC,QAAQ,IAAI,WAAW,YAAA,CAAa,CAAC;AAAA,IAAA;AAIvG,SAAO;AACT;AC3EA,eAAsB,QAAQ,SAA8C;AAC1E,QAAM,EAAC,QAAO,SAER,UAAU,MAAMF,eAAAA,QAAM,EAAC,KAAI;AAEjC,MAAI,CAAC,QAAS,OAAM,IAAI,MAAM,uBAAuB;AAErD,QAAM,MAAM,MAAMG,oBAAG,SAAS,OAAO,GAE/B,MAAM,KAAK,MAAM,IAAI,SAAA,CAAU;AAErC,SAAA,YAAY,GAAG,GAER;AACT;ACZA,eAAsB,qBAAqB,SAIlB;AACvB,QAAM,EAAC,KAAK,QAAQ,OAAA,IAAU;AAE9B,MAAI;AACF,UAAM,MAAM,MAAM,QAAQ,EAAC,KAAI;AAC/B,QAAI,cAAc;AAYlB,QAVI,WACG,IAAI,SACP,cAAc,IACd,OAAO;AAAA,MACL;AAAA,IAAA,KAMF,IAAI,SAAS;AACf,YAAM,WAAW,OAAO,QAAQ,IAAI,OAAO;AAE3C,iBAAW,CAAC,SAAS,GAAG,KAAK,UAAU;AACrC,YAAI,OAAO,OAAQ,YAAY,YAAY;AACzC;AAGF,cAAM,OAAO,OAAO,KAAK,GAAG;AAExB,YAAI,UACN,cAAc,IACd,OAAO;AAAA,UACL,YAAY,OAAO;AAAA,QAAA,IAInB,IAAI,WACN,cAAc,IACd,OAAO;AAAA,UACL,YAAY,OAAO;AAAA,QAAA,IAInB,IAAI,QACF,IAAI,UAAU,IAAI,KAAK,UAAU,CAAC,YAAY,QAAQ,UAAU,IAAI,MACtE,cAAc,IACd,OAAO;AAAA,UACL,YAAY,OAAO;AAAA,QAAA,IAInB,IAAI,KAAK,WACX,cAAc,IACd,OAAO;AAAA,UACL,YAAY,OAAO;AAAA,QAAA,IAKrB,CAAC,IAAI,KAAK,UACV,IAAI,KAAK,WACR,IAAI,KAAK,WAAW,IAAI,aACxB,IAAI,KAAK,OAAO,SAAS,SAAS,KAAK,IAAI,KAAK,OAAO,SAAS,UAAU,OAE3E,cAAc,IACd,OAAO;AAAA,UACL,YAAY,OAAO;AAAA,QAAA,IAInB,IAAI,WAAW,IAAI,KAAK,WAAW,IAAI,YAAY,IAAI,KAAK,WAC9D,cAAc,IACd,OAAO;AAAA,UACL,YAAY,OAAO;AAAA,QAAA,KAEZ,IAAI,WAAW,IAAI,KAAK,WAAW,CAAC,YAAY,QAAQ,WAAW,IAAI,MAChF,cAAc,IACd,OAAO;AAAA,UACL,YAAY,OAAO;AAAA,QAAA,MAIlB,YAAY,UAAU,WAAW,IAAI,KACxC,OAAO;AAAA,UACL,YAAY,OAAO;AAAA,QAAA,GAKpB,WAAW,WAAW,IAAI,MAC7B,cAAc,IACd,OAAO;AAAA,UACL,YAAY,OAAO;AAAA,QAAA;AAAA,MAGzB;AAAA,IACF;AAEA,WAAI,eACF,QAAQ,KAAK,CAAC,GAGT;AAAA,EACT,SAAS,KAAK;AACZ,QAAI,eAAeC,IAAAA;AACjB,iBAAW,SAAS,IAAI,QAAQ;AAC9B,YAAI,MAAM,SAAS,gBAAgB;AACjC,iBAAO;AAAA,YACL;AAAA,cACE,KAAK,WAAW,MAAM,IAAI,CAAC;AAAA,cAC3B,yCAAyCC,eAAAA,QAAM,QAAQ,MAAM,QAAQ,CAAC;AAAA,cACtE,aAAaA,eAAAA,QAAM,QAAQ,MAAM,QAAQ,CAAC;AAAA,YAAA,EAC1C,KAAK,EAAE;AAAA,UAAA;AAEX;AAAA,QACF;AAEA,eAAO,MAAM,KAAK;AAAA,MACpB;AAAA;AAEA,aAAO,MAAM,GAAG;AAGlB,YAAQ,KAAK,CAAC;AAAA,EAChB;AACF;AAEA,SAAS,WAAW,UAAkC;AACpD,SAAO,SACJ,IAAI,CAAC,GAAG,QACH,QAAQ,IAAU,IAElB,OAAO,KAAM,WACR,IAAI,CAAC,MAGV,EAAE,WAAW,GAAG,IACX,KAAK,CAAC,OAGR,IAAI,CAAC,EACb,EACA,KAAK,EAAE;AACZ;AC5IO,SAAS,aAAa,QAAQ,IAAe;AAClD,SAAO;AAAA,IACL,KAAK,IAAI,SAAS;AACX,eAAO,QAAQ,IAAI,GAAG,IAAI;AAAA,IACjC;AAAA,IACA,MAAM,IAAI,SAAS;AACZ,eAAO,QAAQ,IAAIA,eAAAA,QAAM,KAAK,QAAQ,GAAG,GAAG,IAAI;AAAA,IACvD;AAAA,IACA,MAAM,IAAI,SAAS;AACjB,cAAQ,IAAIA,eAAAA,QAAM,OAAO,WAAW,GAAG,GAAG,IAAI;AAAA,IAChD;AAAA,IACA,OAAO,IAAI,SAAS;AAClB,cAAQ,IAAIA,eAAAA,QAAM,IAAI,SAAS,GAAG,GAAG,IAAI;AAAA,IAC3C;AAAA,IACA,SAAS,IAAI,SAAS;AACf,eAAO,QAAQ,IAAIA,eAAAA,QAAM,MAAM,WAAW,GAAG,GAAG,IAAI;AAAA,IAC3D;AAAA,EAAA;AAEJ;AC3Be,SAAS,sBAAsB,oBAAoB,UAAU,IAAI;AAC9E,MAAI,CAAC,oBAAoB;AAEvB,UAAMR,QAAO,QAAQ,IAAG;AAGxB,yBAAqBS,sBAAAA,QAAa,WAAW,EAAE,MAAAT,OAAM,GAAG,QAAO,CAAE;AAAA,EACnE;AAEA,QAAM,4BAA4B;AAAA,IAChC;AAAA,IACA;AAAA,IACA;AAAA,IACA;AAAA,IACA;AAAA,IACA;AAAA,IACA;AAAA,IACA;AAAA,IACA;AAAA,EACJ,GAGQ,cAAc,CAAC,WAAW,GAE1B,WAAW;AAAA,IACf,SAAS;AAAA,IACT,SAAS;AAAA,EACb,GAEQ,YAAY;AAElB,SACES,sBAAAA,QAAa,oBAAoB,OAAO,EAErC,OAAO,CAAC,MAAM,CAAC,YAAY,KAAK,CAAC,MAAM,EAAE,WAAW,CAAC,CAAC,CAAC,EAEvD,IAAI,CAAC,MACA,MAAM,cACDA,sBAAAA,QAAa,uBAAuB,EAAE,CAAC,IAGzC,CACR,EAEA,IAAI,CAAC,MAAM,EAAE,MAAM,SAAS,CAAC,EAE7B,IAAI,CAAC,OACA,SAAS,EAAE,CAAC,CAAC,MACf,EAAE,CAAC,IAAI,SAAS,EAAE,CAAC,CAAC,IAGf,EACR,EAEA,IAAI,CAAC,OACA,EAAE,CAAC,EAAE,SAAS,GAAG,MACnB,EAAE,CAAC,IAAI,EAAE,CAAC,EAAE,MAAM,GAAG,EAAE,CAAC,EAAE,QAAQ,GAAG,CAAC,IAGjC,EACR,EAEA,IAAI,CAAC,OACA,EAAE,CAAC,EAAE,SAAS,IAAI,MACpB,EAAE,CAAC,IAAI,EAAE,CAAC,EAAE,MAAM,GAAG,EAAE,IAGlB,EACR,EAGA,OAAO,CAAC,MAAM,gBAAgB,KAAK,EAAE,CAAC,CAAC,CAAC,EAExC,OAAO,CAAC,MAAM,0BAA0B,SAAS,EAAE,CAAC,CAAC,CAAC,EAGtD,OAAO,CAAC,KAAK,MAAM;AAClB,UAAM,gBAAgB,IAAI,UAAU,CAAC,OAAO,GAAG,CAAC,MAAM,EAAE,CAAC,CAAC;AAE1D,WAAI,kBAAkB,KACpB,IAAI,aAAa,EAAE,CAAC,IAAI,EAAE,CAAC,IAE3B,IAAI,KAAK,CAAC,GAEL;AAAA,EACT,GAAG,CAAA,CAAE,EAEJ,IAAI,CAAC,MAAM,EAAE,KAAK,EAAE,CAAC;AAE5B;AC1FO,SAAS,sBACd,MACA,cACG;AACH,SAAK,OAED,OAAO,QAAS,aACV,KAAsC,YAAY,IAGrD,OANW;AAOpB;ACXO,MAAM,6BAAuCC,gBAAAA;ACD7C,SAAS,aAAa,eAAuB,UAA2B;AAC7E,SAAO,CAACV,cAAAA,QAAK,SAAS,eAAe,QAAQ,EAAE,WAAW,IAAI;AAChE;AAEO,SAAS,kBAAkB,WAAyC;AACzE,MAAI;AAEJ,aAAW,YAAY,WAAW;AAChC,QAAI,UAAUA,cAAAA,QAAK,QAAQ,QAAQ;AAEnC,QAAI,CAAC,KAAK;AACR,YAAM;AACN;AAAA,IACF;AAEA,WAAO,YAAY,QACjB,UAAUA,cAAAA,QAAK,QAAQ,OAAO,GAE1B,YAAY,QAHM;AAOtB,UAAI,aAAa,SAAS,GAAG,GAAG;AAC9B,cAAM;AACN;AAAA,MACF;AAEA,UAAI,YAAY,IAAK;AAAA,IACvB;AAAA,EACF;AAEA,SAAO;AACT;AC9BO,MAAM,aAAqB,cAErB,YAAY,SAEZ,gBAAgB,OAEhB,YAAY,QAEZ,YAAY,QACnB,YAAY,UACZ,YAAY;AAGX,SAAS,eACd,OACA,aACU;AACV,QAAM,OAAQ,UAAU,WAAW,WAAW,YAExC,0BAAU,IAAA;AAEhB,SAAI,aAAa,UACf,IAAI,IAAI,YAAY,OAAO,QAAQ,YAAY,SAAS,WAAW,YAAY,SAAS,CAAC,GAGvF,aAAa,WACf,IAAI,IAAI,YAAY,QAAQ,QAAQ,YAAY,SAAS,aAAa,YAAY,SAAS,CAAC,GAG1FW,cAAY,WAAW,MACpB,YAAY,SAAS,WACpB,YAAY,SAAS,UACvB,IAAI;AAAA,IACF,YAAY,QAAQ,OAAO,QAAQ,YAAY,SAAS,WAAW,YAAY,SAAS;AAAA,EAAA,GAIxF,YAAY,SAAS,WACvB,IAAI;AAAA,IACF,YAAY,QAAQ,QAAQ;AAAA,MAC1B;AAAA,MACA,SAAS,aAAa,YAAY;AAAA,IAAA;AAAA,EACpC,IAKD,YAAY,MAAM,WACjB,YAAY,MAAM,UACpB,IAAI;AAAA,IACF,YAAY,KAAK,OAAO,QAAQ,YAAY,SAAS,WAAW,YAAY,SAAS;AAAA,EAAA,GAIrF,YAAY,MAAM,WACpB,IAAI;AAAA,IACF,YAAY,KAAK,QAAQ,QAAQ,YAAY,SAAS,aAAa,YAAY,SAAS;AAAA,EAAA,KAMzF,MAAM,KAAK,GAAG;AACvB;AAEA,SAASA,cAAY,KAA4B;AAC/C,SAAO,KAAK,WAAW,KAAK,QAAQ,KAAK;AAC3C;ACtEO,SAAS,SAAS,OAAkD;AACzE,SAAO,CAAA,CAAQ,SAAU,CAAC,MAAM,QAAQ,KAAK,KAAK,OAAO,SAAU;AACrE;ACMO,MAAM,YAAuB;AAAA;AAAA,EAElC,UAAU;AAAA,IACR,UAAU;AAAA,IACV,KAAK;AAAA,EAAA;AAAA;AAAA,EAIP,QAAQ;AAAA,IACN,UAAU;AAAA,IACV,KAAK;AAAA,EAAA;AAET;ACjBO,SAAS,gBACd,UACA,SACU;AACV,QAAM,EAAC,IAAA,IAAO,SACR,OAAO,IAAI,QAAQ,YACnB,MAAMC,UAAO,IAAI,GAEjB,SAAmB,CAAA;AAEzB,aAAW,OAAO;AACZ,QAAI,WAAW,CAAC,IAAI,QAAQ,SAAS,IAAI,QAAQ,KACnD,OAAO;AAAA,MACL,8BAA8B,IAAI,oBAAoB,IAAI,KAAK,+BAA+B,IAAI,QAAQ;AAAA,IAAA,GAI1G,IAAI,UAAU,CAAC,IAAI,OAAO,SAAS,IAAI,GAAG,KAC5C,OAAO;AAAA,MACL,8BAA8B,IAAI,oBAAoB,IAAI,KAAK,8BAA8B,IAAI,GAAG;AAAA,IAAA;AAK1G,SAAO;AACT;ACjBO,SAAS,aAAa,SAMO;AAClC,QAAM,EAAC,KAAK,KAAK,QAAQ,eAAAC,gBAAe,OAAA,IAAU,SAC5C,OAAO,IAAI,QAAQ,YACnB,SAAmB,CAAA,GAEnB,SAAS,CAAC,MAAwB,YAAoB;AACtD,aAAS,SACX,OAAO,KAAK,OAAO,IAEnB,OAAO,KAAK,OAAO;AAAA,EAEvB;AAaA,MAXI,CAAC,IAAI,QAAQ,UAAUA,eAAc,0BAA0B,SACjE,OAAOA,eAAc,uBAAuB,uCAAuC,GAGjF,CAAC,MAAM,QAAQ,IAAI,KAAK,KAAK,UAAUA,eAAc,2BAA2B,SAClF;AAAA,IACEA,eAAc;AAAA,IACd;AAAA,EAAA,GAIA,IAAI;AACN,QACE,UACA,IAAI,UAAU,GAAG,KACjB,OAAO,IAAI,QAAQ,GAAG,KAAM,YAC5B,YAAY,IAAI,QAAQ,GAAG,KAC3B,IAAI,QAAQ,GAAG,EAAE,WAAW,IAAI;AAEhC,aAAO;AAAA,QACL;AAAA,MAAA;AAAA,aAEO,CAAC,IAAI,WAAW,IAAI,MAAM;AACnC,YAAM,SAAS,UAAU,IAAI,GACvB,eAAe,IAAI,KAAK,QAAQ,YAAY,OAAO,GAAG,GACtD,gBAAgB,IAAI,KAAK,QAAQ,YAAY,OAAO,QAAQ,GAC5D,gBAAgB,IAAI,KAAK,QAAQ,YAAY,aAAa,GAE1D,wBAAwB,CAAA;AAE9B,UAAI,IAAI,SAAS;AACf,cAAM,oBAAoB,CAAA;AAEtB,YAAI,UAAU,IAAI,UAAU,IAAI,MAAM,IACxC,kBAAkB;AAAA,UAChB,mBAAmB,KAAK,UAAU,IAAI,QAAQ,IAAI,MAAM,EAAG,QAAQ,YAAY,OAAO,GAAG,CAAC,CAAC;AAAA,QAAA,IAEpF,IAAI,UAAU,IAAI,IAAI,KAC/B,kBAAkB;AAAA,UAChB,mBAAmB,KAAK,UAAU,IAAI,QAAQ,IAAI,IAAI,EAAG,QAAQ,YAAY,OAAO,GAAG,CAAC,CAAC;AAAA,QAAA,GAIzF,IAAI,UAAU,IAAI,IAAI,KACxB,kBAAkB;AAAA,UAChB,oBAAoB,KAAK,UAAU,IAAI,QAAQ,IAAI,IAAI,EAAG,QAAQ,YAAY,OAAO,QAAQ,CAAC,CAAC;AAAA,QAAA,GAI/F,kBAAkB,UACpB,sBAAsB;AAAA,UACpB;AAAA,UACA,mBAAmB,KAAK,UAAU,IAAI,UAAU,IAAI,MAAM,KAAK,IAAI,MAAM,CAAC;AAAA,UAC1E,GAAG;AAAA,UACH;AAAA,QAAA;AAAA,MAGN;AAEA,aAAO;AAAA,QACL,GAAI;AAAA,UACF;AAAA,UACA;AAAA,UACA;AAAA,UACA,iBAAiB,KAAK,UAAU,IAAI,MAAM,CAAC;AAAA;AAAA,UAE3C,GAAI,sBAAsB,SAAS,IAAI,wBAAwB,CAAA;AAAA,UAC/D,SAAS,cAAc,iBAAiB,KAAK,UAAU,YAAY,CAAC;AAAA,UACpE,SAAS,YAAY,kBAAkB,KAAK,UAAU,aAAa,CAAC;AAAA,UACpE,kBAAkB,KAAK,UAAU,aAAa,CAAC;AAAA,UAC/C;AAAA,UACA;AAAA,UACA;AAAA,QAAA,EACA,OAAO,OAAO;AAAA,MAAA;AAAA,IAEpB;AAAA;AAGF,MAAI,OAAO;AACT,UAAM,IAAI,MAAM;AAAA,MAAS,OAAO,KAAK;AAAA,GAAM,CAAC;AAG9C,MAAI,CAAC,IAAI;AACP,UAAM,IAAI;AAAA,MACR;AAAA,MACE;AAAA,QACE;AAAA,QACA;AAAA,QACA;AAAA,QACA;AAAA,QACA;AAAA,QACA;AAAA,QACA;AAAA,QACA;AAAA,MAAA,EACA,KAAK;AAAA,GAAM;AAAA,IAAA;AAInB,QAAM,WAA4C,CAAA;AAE9C,YAAUA,eAAc,yBAAyB,SAAS,aAAa,OACzE,OAAOA,eAAc,sBAAsB,2CAA2C,GAItF,UACAA,eAAc,2BAA2B,SACzC,CAAC,IAAI,SACL,OAAO,IAAI,UAAU,GAAG,KAAM,YAC9B,YAAY,IAAI,QAAQ,GAAG,KAC3B,IAAI,QAAQ,GAAG,EAAE,QAAQ,SAAS,KAAK,KAEvC;AAAA,IACEA,eAAc;AAAA,IACd;AAAA,EAAA,GAIA,UAAU,CAAC,IAAI,QAAQ,gBAAgB,KACzC,OAAO,KAAK,4DAA4D;AAG1E,aAAW,CAAC,YAAY,WAAW,KAAK,OAAO,QAAQ,IAAI,OAAO;AAChE,QACE,WAAW,SAAS,OAAO,KAC1B,OAAO,eAAgB,YAAY,YAAY,SAAS,OAAO;AAE5D,qBAAe,oBACb,gBAAgB,oBAClB,OAAO,KAAK,qEAAqE;AAAA,aAG5E,WAAW,SAAS,MAAM;AAC/B,aAAO,eAAgB,YAAY,CAACC,mBAAWC,KAAAA,QAAY,KAAK,WAAW,CAAC,IAC9E,OAAO;AAAA,QACL,2BAA2B,KAAK,UAAU,UAAU,CAAC;AAAA,MAAA,IAE9C,OAAO,eAAgB,YAChC,OAAO;AAAA,QACL,2BAA2B,KAAK,UAAU,UAAU,CAAC;AAAA,MAAA;AAAA,aAGhD,EAAA,SAAS,WAAW,KAAK,YAAY;AAEzC,UAAI,YAAY,WAAW,GAAG;AACnC,cAAM,MAAM;AAAA,UACV,WAAW;AAAA,UACX,OAAO;AAAA,UACP,GAAG;AAAA,QAAA;AAIL,YAAI,CAAC,IAAI,SAAS;AAChB,gBAAM,WAAW,SAAS,WAAW,IAAI,SAAS,IAAI;AAElD,uBACF,IAAI,UAAU;AAAA,QAElB;AAGI,SAAC,IAAI,WAAW,SAAS,cAAc,IAAI,YAC7C,IAAI,UAAU,IAAI,UAIhB,CAAC,IAAI,UAAU,SAAS,YAAY,IAAI,YAC1C,IAAI,SAAS,IAAI,UAGf,eAAe,QACb,YAAY,WAAW,IAAI,QAAQ,YAAY,YAAY,IAAI,QACjE,OAAO;AAAA,UACL;AAAA,QAAA,GAIA,YAAY,UAAU,IAAI,UAAU,YAAY,WAAW,IAAI,UACjE,OAAO;AAAA,UACL;AAAA,QAAA,IAKN,SAAS,KAAK,GAAG;AAAA,MACnB,MAAY,UAAS,WAAW,KAC9B,OAAO,KAAK,yCAAyC;AAMzD,MAFA,OAAO,KAAK,GAAG,gBAAgB,UAAU,EAAC,IAAA,CAAI,CAAC,GAE3C,OAAO;AACT,UAAM,IAAI,MAAM;AAAA,MAAS,OAAO,KAAK;AAAA,GAAM,CAAC;AAG9C,SAAO;AACT;AAEA,SAAS,YAAY,OAAoC;AACvD,SAAO,SAAS,KAAK,KAAK,YAAY,SAAS,OAAO,MAAM,UAAc;AAC5E;ACrOA,eAAsB,aAAa,SAGW;AAC5C,QAAM,EAAC,KAAK,iBAAgB,SAEtB,aAAaC,YAAAA,QAAG,eAAe,KAAKA,YAAAA,QAAG,IAAI,YAAY,YAAY;AAEzE,MAAI,CAAC;AACH;AAGF,QAAM,aAAaA,YAAAA,QAAG,eAAe,YAAYA,YAAAA,QAAG,IAAI,QAAQ;AAEhE,SAAOA,YAAAA,QAAG,2BAA2B,WAAW,QAAQA,YAAAA,QAAG,KAAK,GAAG;AACrE;AClBO,SAAS,qBAAqB,UAA0C;AAC7E,QAAM,SAAmB,SAAS;AAAA,IAChC,CAAC,YACC,QAAQ,WAAW,QAAQ,KAC3B,QAAQ,WAAW,MAAM,KACzB,QAAQ,WAAW,SAAS,KAC5B,QAAQ,WAAW,KAAK,KACxB,QAAQ,WAAW,QAAQ,KAC3B,QAAQ,WAAW,OAAO;AAAA,EAAA;AAG9B,MAAI,OAAO,WAAW;AAItB,WAAO;AACT;AChBO,SAAS,kBAAkB,UAA0C;AAC1E,QAAM,SAAmB,SAAS,OAAO,CAAC,YAAY,QAAQ,WAAW,MAAM,CAAC;AAEhF,MAAI,OAAO,WAAW;AAItB,WAAO;AACT;ACLA,MAAM,SAASX,IAAAA,EAAE,MAAM,CAACA,IAAAA,EAAE,QAAQ,OAAO,GAAGA,MAAE,QAAQ,MAAM,GAAGA,IAAAA,EAAE,QAAQ,KAAK,CAAC,CAAC,GAI1E,gBAAgBA,IAAAA,EACnB,OAAO;AAAA,EACN,sBAAsB,OAAO,QAAQ,OAAO;AAAA,EAC5C,uBAAuB,OAAO,QAAQ,MAAM;AAAA,EAC5C,wBAAwB,OAAO,QAAQ,MAAM;AAAA,EAC7C,wBAAwB,OAAO,QAAQ,OAAO;AAAA,EAC9C,uBAAuB,OAAO,QAAQ,OAAO;AAAA,EAC7C,wBAAwB,OAAO,QAAQ,OAAO;AAAA,EAC9C,cAAc,OAAO,QAAQ,MAAM;AACrC,CAAC,EACA,OAAA,GAMG,mBAAmBA,IAAAA,EAAE,OAAO;AAAA,EAChC,eAAe,cAAc,QAAQ,CAAA,CAAE;AACzC,CAAC;AAgDM,SAAS,mBAAmB,OAA+B;AAChE,SAAO,iBAAiB,MAAM,EAAC,eAAe,SAAQ,EAAA,UAACY,mBAAAA,SAAA,CAAS,EAAE;AACpE;AC5DA,eAAsB,oBAAoB,SAQhB;AACxB,QAAM;AAAA,IACJ,QAAAP;AAAA,IACA;AAAA,IACA,sBAAsB;AAAA,IACtB;AAAA,IACA;AAAA,IACA;AAAA,IACA,UAAU;AAAA,EAAA,IACR,SACE,WAAW,MAAM,aAAa,EAAC,KAAK,cAAa,GACjDG,iBAAgB,mBAAmBH,SAAQ,iBAAiB,CAAA,CAAE;AAEpE,MAAIG,eAAc,iBAAiB,SAAS,UAAU,WAAWH,SAAQ,QAAQ,cAC3E,SAAS,QAAQ,YAAY,MAAS,CAAC,SAAS,QAAQ,SAAS;AACnE,QAAIG,eAAc,iBAAiB;AACjC,YAAM,IAAI;AAAA,QACR;AAAA,MAAA;AAGF,WAAO;AAAA,MACL;AAAA,IAAA;AAAA,EAGN;AAGF,MAAIJ,gBAAe,IAAI;AACvB,MAAI,CAACA,eAAc;AACjB,QAAI,UAAUI,eAAc,2BAA2B,OAAO;AAC5D,UAAIA,eAAc,2BAA2B;AAC3C,cAAM,IAAI;AAAA,UACR;AAAA,QAAA;AAIF,aAAO;AAAA,QACL;AAAA,MAAA;AAAA,IAGN;AACA,IAAAJ,gBAAe;AAAA,EACjB;AACA,QAAM,iBAAiB,sBAAsBA,aAAY;AAEzD,MACE,UACAI,eAAc,0BAA0B,SACxC,OAAO,IAAI,cAAgB,KAC3B;AACA,UAAM,MACJ;AAEF,QAAIA,eAAc,0BAA0B;AAC1C,YAAM,IAAI,MAAM,GAAG;AAEnB,WAAO,KAAK,GAAG;AAAA,EAEnB;AAEA,QAAM,aAAa,kBAAkB,cAAc,GAC7C,YAAY,qBAAqB,cAAc;AAErD,MAAI,CAAC;AACH,UAAM,IAAI,MAAM,2BAA2B;AAG7C,MAAI,CAAC;AACH,UAAM,IAAI,MAAM,0BAA0B;AAG5C,QAAM,SAAuC;AAAA,IAC3C,KAAK,UAAU,OAAO,UAAU;AAAA,IAChC,SAAW;AAAA,IACX,MAAQ;AAAA,EAAA,GAGJ,gBAAgB,aAAa;AAAA,IACjC;AAAA,IACA;AAAA,IACA;AAAA,IACA,eAAAA;AAAA,IACA;AAAA,EAAA,CACD,EAAE;AAAA,IACD,CAAC,KAAK,EAAC,OAAO,YAAY,GAAG,YAAA,MAAiB,OAAO,OAAO,KAAK,EAAC,CAAC,UAAU,GAAG,aAAY;AAAA,IAC5F,CAAA;AAAA,EAAC,GAGGK,WAAU,sBAAsBR,SAAQ,SAAS,aAAa,GAE9D,iBAAiB;AAAA,IACrB,GAAI,IAAI,eAAe,OAAO,KAAK,IAAI,YAAY,IAAI,CAAA;AAAA,IACvD,GAAI,IAAI,mBAAmB,OAAO,KAAK,IAAI,gBAAgB,IAAI,CAAA;AAAA,EAAC,GAI5D,WACJA,WAAU,MAAM,QAAQA,QAAO,QAAQ,IACnC,CAAC,GAAG,gBAAgB,GAAGA,QAAO,QAAQ,IACtC,sBAAsBA,SAAQ,UAAU,cAAc,GAEtD,oBAAoB,oBAAI,IAAI,CAAC,IAAI,MAAM,GAAG,UAAU,GAAG,SAAS,IAAI,oBAAoB,CAAC,CAAC,GAC1F,uBAAuB,IAAI,kBAAkB,OAAO,KAAK,IAAI,eAAe,IAAI,CAAA,GAAI;AAAA;AAAA,IAExF,CAAC,MAAM,CAAC,kBAAkB,IAAI,CAAC;AAAA,EAAA,GAE3B,kBACJA,WAAU,MAAM,QAAQA,QAAO,SAAS,eAAe,IACnD,CAAC,GAAG,qBAAqB,GAAGA,QAAO,QAAQ,eAAe,IAC1D,sBAAsBA,SAAQ,SAAS,iBAAiB,mBAAmB,GAE3E,cAAc,OAAO,OAAOQ,QAAO,EACtC,QAAQ,CAAC,gBACD;AAAA,IACL,YAAY;AAAA,IACZ,YAAY;AAAA,IACZ,YAAY,SAAS;AAAA,IACrB,YAAY,SAAS;AAAA,IACrB,YAAY,MAAM,UAAU,YAAY,KAAK;AAAA,IAC7C,YAAY,MAAM,UAAU,YAAY,KAAK;AAAA,EAAA,EAC7C,OAAO,OAAO,CACjB,EACA,IAAI,CAAC,MAAMlB,cAAAA,QAAK,QAAQ,KAAK,CAAC,CAAC,GAE5B,iBAAiB,kBAAkB,WAAW;AAEpD,MAAI,mBAAmB;AACrB,UAAM,IAAI;AAAA,MACR;AAAA,IAAA;AAIJ,MAAI,kBAAkB,CAAC,aAAa,KAAK,cAAc;AACrD,UAAM,IAAI,MAAM,qDAAqD;AAGvE,QAAM,iBAAiBU,SAAQ,OAAOV,cAAAA,QAAK,QAAQ,KAAKU,QAAO,IAAI,IAAI;AAEvE,MACE,kBACA,kBACA,mBAAmB,kBACnB,CAAC,aAAa,gBAAgB,cAAc;AAE5C,UAAA,OAAO,IAAI,wCAAwCV,cAAAA,QAAK,SAAS,KAAK,cAAc,CAAC,MAAM,GAErF,IAAI,MAAM,kEAAkE;AAGpF,QAAM,WAAW,kBAAkB;AAEnC,MAAI,CAAC;AACH,UAAM,IAAI,MAAM,8BAA8B;AAwBhD,SArB0B;AAAA,IACxB,QAAAU;AAAA,IACA;AAAA,IACA;AAAA,IACA;AAAA,IACA,SAAAQ;AAAA,IACA;AAAA,IACA;AAAA,IACA,OAAO,CAAA;AAAA,IACP;AAAA,IACA;AAAA,IACA,SAASR,SAAQ,WAAW;AAAA,IAC5B;AAAA,IACA;AAAA,IACA,IAAI;AAAA,MACF,QAAQ;AAAA,MACR,YAAY;AAAA,IAAA;AAAA,IAEd,KAAKA,SAAQ,QAAQ,aAAa,aAAa;AAAA,EAAA;AAInD;AAEA,SAAS,qBAAqB,aAA6B;AACzD,MAAI,YAAY,WAAW,SAAS;AAElC,WAAO;AACF,MAAI,YAAY,WAAW,GAAG,GAAG;AAEtC,UAAM,CAAC,OAAO,IAAI,IAAI,YAAY,MAAM,GAAG;AAE3C,WAAO,UAAU,OAAO,MAAM,CAAC,CAAC,KAAK,IAAI;AAAA,EAC3C;AAEE,WAAO,UAAU,WAAW;AAEhC;AC/MO,SAAS,kBAAkB,KAAgC;AAChE,QAAM,EAAC,QAAAA,SAAQ,KAAK,OAAA,IAAU,KAExB,UAAUA,SAAQ,WAAW,CAAA,GAE7B,QAAqB,CAAA,GAErBQ,WAAU,OAAO,QAAQ,IAAI,WAAW,CAAA,CAAE,EAAE;AAAA,IAChD,CAAC,CAAC,OAAO,GAAG,OAAO,EAAC,OAAO,GAAG,IAAA;AAAA,EAAG,GAG7BC,WAAmB;AAAA,IACvB,MAAM;AAAA,IACN,SAAS,CAAA;AAAA,EAAC,GAGNC,mBAAmD,IACnD,cAA0C,CAAA;AAEhD,WAAS,mBAAmB,QAAmB,SAAqB,OAAwB;AAC1F,UAAM,UAAU,GAAG,MAAM,IAAI,OAAO;AAEhC,QAAI,QAAQ,eACVA,iBAAgB,OAAO,IACzBA,iBAAgB,OAAO,EAAE,QAAQ,KAAK,KAAK,IAE3CA,iBAAgB,OAAO,IAAI;AAAA,MACzB,MAAM;AAAA,MACN;AAAA,MACA,SAAS,CAAC,KAAK;AAAA,MACf;AAAA,MACA;AAAA,MACA,QAAQ,OAAO,OAAO;AAAA,IAAA,IAKvB,IAAI,wBACH,YAAY,OAAO,IACrB,YAAY,OAAO,EAAE,QAAQ,KAAK,KAAK,IAEvC,YAAY,OAAO,IAAI;AAAA,MACrB,MAAM;AAAA,MACN;AAAA,MACA,SAAS,CAAC,KAAK;AAAA,MACf;AAAA,MACA;AAAA,MACA,QAAQ,OAAO,OAAO;AAAA,IAAA;AAAA,EAI9B;AAEA,MAAI,IAAI,QAAQ,iBAAiB;AAE/B,eAAW,OAAOF,UAAS;AACzB,YAAM,WAAWlB,cAAAA,QAAK,KAAK,IAAI,MAAM,IAAI,KAAK;AAE1C,UAAI,QAAQ,SAAS,KAAK,KAC5BmB,SAAQ,QAAQ,KAAK;AAAA,QACnB;AAAA,QACA,YAAY,IAAI;AAAA,QAChB,YAAY,IAAI;AAAA,QAChB,aAAa,eAAe,IAAI,MAAM,GAAG;AAAA,MAAA,CAC1C,GAGC,IAAI,SAAS,QAAQ,SAAS,KAAK,KACrCA,SAAQ,QAAQ,KAAK;AAAA,QACnB;AAAA,QACA,YAAY,IAAI;AAAA,QAChB,YAAY,IAAI,QAAQ;AAAA,QACxB,aAAa,eAAe,IAAI,MAAM,IAAI,OAAO;AAAA,MAAA,CAClD,GAGC,IAAI,MAAM,QAAQ,SAAS,KAAK,KAClCA,SAAQ,QAAQ,KAAK;AAAA,QACnB;AAAA,QACA,YAAY,IAAI;AAAA,QAChB,YAAY,IAAI,KAAK;AAAA,QACrB,aAAa,eAAe,IAAI,MAAM,IAAI,IAAI;AAAA,MAAA,CAC/C;AAAA,IAEL;AAGA,eAAW,UAAU;AACnB,UAAI,OAAO,QAAQ,SAAS,KAAK,GAAG;AAIlC,cAAM,cAAc,OAAO,UAAU,OAAO,SAAU,QAAQ,cAAc,EAAE,GACxE,WAAWnB,cAAAA,QAAK,KAAK,IAAI,MAAM,UAAU;AAE/C,QAAAmB,SAAQ,QAAQ,KAAK;AAAA,UACnB;AAAA,UACA;AAAA,UACA,YAAY,OAAO;AAAA,UACnB,aAAa,eAAe,IAAI,MAAM,MAAM;AAAA,QAAA,CAC7C;AAAA,MACH;AAIE,IAAAA,SAAQ,QAAQ,UAClB,MAAM,KAAKA,QAAO;AAAA,EAEtB;AAGA,aAAW,OAAOD,UAAS;AACzB,UAAM,SAAS,IAAI;AAEd,cAEL,mBAAmB,YAAY,IAAI,SAAS;AAAA,MAC1C,MAAM,IAAI;AAAA,MACV,QAAQ,IAAI;AAAA,MACZ;AAAA,IAAA,CACD;AAAA,EACH;AAGA,aAAW,OAAOA,UAAS;AACzB,UAAM,SAAS,IAAI;AAEd,cAEL,mBAAmB,OAAO,IAAI,SAAS;AAAA,MACrC,MAAM,IAAI;AAAA,MACV,QAAQ,IAAI;AAAA,MACZ;AAAA,IAAA,CACD;AAAA,EACH;AAGA,aAAW,OAAOA,UAAS;AACzB,UAAM,SAAS,IAAI,SAAS;AAEvB,cAEL,mBAAmB,YAAY,WAAW;AAAA,MACxC,MAAM,IAAI;AAAA,MACV,QAAQ,IAAI,SAAS,UAAU,IAAI;AAAA,MACnC;AAAA,IAAA,CACD;AAAA,EACH;AAGA,aAAW,OAAOA,UAAS;AACzB,UAAM,SAAS,IAAI,SAAS;AAEvB,cAEL,mBAAmB,OAAO,WAAW;AAAA,MACnC,MAAM,IAAI;AAAA,MACV,QAAQ,IAAI,SAAS,UAAU,IAAI;AAAA,MACnC;AAAA,IAAA,CACD;AAAA,EACH;AAEA,aAAW,UAAU,SAAS;AAC5B,UAAM,MAAM,QAAQ,QAAQ,MAAM;AAE9B,WAAO,WACT,mBAAmB,YAAY,OAAO,WAAW,IAAI,SAAS;AAAA,MAC5D,MAAM,kBAAkB,GAAG;AAAA,MAC3B,QAAQ,OAAO;AAAA,MACf,QAAQ,OAAO;AAAA,IAAA,CAChB,GAGC,OAAO,UACT,mBAAmB,OAAO,OAAO,WAAW,IAAI,SAAS;AAAA,MACvD,MAAM,kBAAkB,GAAG;AAAA,MAC3B,QAAQ,OAAO;AAAA,MACf,QAAQ,OAAO;AAAA,IAAA,CAChB;AAAA,EAEL;AAGA,SAAA,MAAM,KAAK,GAAG,OAAO,OAAOE,gBAAe,CAAC,GAI5C,MAAM,KAAK,GAAG,OAAO,OAAO,WAAW,CAAC,GAEjC;AACT;ACnMO,SAAS,cACd,KACA,QAAQ,IACmC;AAC3C,QAAM,YAAY,KAAK,IAAA;AAEvB,SAAK,SAAO,QAAQ,IAAI,GAAG,GAEpB;AAAA,IACL,UAAU,MAAM;AACT,eACH,QAAQ,IAAI,GAAGZ,eAAAA,QAAM,MAAM,WAAW,CAAC,IAAIA,eAAAA,QAAM,KAAK,GAAG,KAAK,IAAA,IAAQ,SAAS,IAAI,CAAC,EAAE;AAAA,IAC1F;AAAA,IACA,OAAO,MAAM;AACX,cAAQ,IAAI,GAAGA,eAAAA,QAAM,IAAI,SAAS,CAAC,IAAIA,eAAAA,QAAM,KAAK,GAAG,KAAK,IAAA,IAAQ,SAAS,IAAI,CAAC,EAAE;AAAA,IACpF;AAAA,EAAA;AAEJ;ACfO,SAAS,qBAAqB,KAAmB,UAAoC;AAC1F,QAAM,EAAC,KAAK,OAAA,IAAU,KAEhB,WAAW,SAAS,OAAO,CAAC,QAAQ,IAAI,aAAa,SAAS;AAEhE,WAAS,UACX,OAAO,IAAA;AAGT,aAAW,OAAO,UAAU;AAC1B,UAAM,iBAAiB,IAAI,kBAAkBR,cAAAA,QAAK,SAAS,KAAK,IAAI,cAAc;AAE9E,QAAI,cAAc,YAOtB,OAAO;AAAA,MACL;AAAA,QACE,GAAGQ,eAAAA,QAAM,KAAK,kBAAkB,GAAG,CAAC;AAAA,QACpC,IAAIA,eAAAA,QAAM,OAAO,IAAI,cAAc,CAAC,IAAIA,eAAAA,QAAM,OAAO,IAAI,gBAAgB,CAAC;AAAA,QAC1E,MAAMA,uBAAM,OAAO,SAAS,CAAC,IAAIA,uBAAM,KAAK,IAAI,SAAS,CAAC;AAAA;AAAA,QAC1D,IAAI;AAAA,QACJ;AAAA;AAAA,MAAA,EACA,KAAK,EAAE;AAAA,IAAA;AAAA,EAEb;AAEA,QAAM,SAA6B,SAAS,OAAO,CAAC,QAAQ,IAAI,aAAa,OAAO;AAEhF,GAAC,SAAS,UAAU,OAAO,UAC7B,OAAO,IAAI,EAAE;AAGf,aAAW,OAAO,QAAQ;AACxB,UAAM,iBAAiB,IAAI,kBAAkBR,cAAAA,QAAK,SAAS,KAAK,IAAI,cAAc;AAElF,WAAO;AAAA,MACL;AAAA,QACE,GAAGQ,eAAAA,QAAM,KAAK,kBAAkB,GAAG,CAAC;AAAA,QACpC,IAAIA,eAAAA,QAAM,OAAO,IAAI,cAAc,CAAC,IAAIA,eAAAA,QAAM,OAAO,IAAI,gBAAgB,CAAC;AAAA,QAC1E,MAAMA,uBAAM,IAAI,OAAO,CAAC,IAAIA,uBAAM,KAAK,IAAI,SAAS,CAAC;AAAA;AAAA,QACrD,IAAI;AAAA,QACJ;AAAA;AAAA,MAAA,EACA,KAAK,EAAE;AAAA,IAAA;AAAA,EAEb;AAEI,SAAO,UACT,QAAQ,KAAK,CAAC;AAElB;;;;;ACrDO,SAAS,gBAAgB,SAIvB;AACP,QAAM,EAAC,KAAK,QAAQ,WAAA,IAAc;AAElC,MAAI,WAAW,QAAQ,WAAW,OAAO;AACvC,UAAM,EAAC,MAAM,UAAA,IAAaQ,YAAAA,QAAG,8BAA8B,WAAW,MAAM,WAAW,KAAK,GACtF,UAAUA,YAAAA,QAAG,6BAA6B,WAAW,aAAa;AAAA,CAAI,GAEtE,OAAOhB,cAAAA,QAAK,SAAS,KAAK,WAAW,KAAK,QAAQ,GAElD,SAAS;AAAA,MACb,GAAGQ,eAAAA,QAAM,OAAO,IAAI,CAAC,IAAIA,eAAAA,QAAM,KAAK,OAAO,CAAC,CAAC,IAAIA,uBAAM,KAAK,YAAY,CAAC,CAAC;AAAA,MAC1E,GAAGA,eAAAA,QAAM,KAAK,KAAK,WAAW,IAAI,GAAG,CAAC,IAAI,OAAO;AAAA,IAAA,EACjD,KAAK,EAAE;AAEL,eAAW,aAAaQ,YAAAA,QAAG,mBAAmB,SAChD,OAAO,MAAM,MAAM,GAGjB,WAAW,aAAaA,oBAAG,mBAAmB,WAChD,OAAO,KAAK,MAAM,GAGhB,WAAW,aAAaA,YAAAA,QAAG,mBAAmB,WAChD,OAAO,IAAI,MAAM,GAGf,WAAW,aAAaA,YAAAA,QAAG,mBAAmB,cAChD,OAAO,IAAI,MAAM;AAAA,EAErB;AACE,WAAO,IAAIA,YAAAA,QAAG,6BAA6B,WAAW,aAAa;AAAA,CAAI,CAAC;AAE5E;ACpCA,eAAsB,WAAW,SAMf;AAChB,QAAM,EAAC,KAAK,QAAQ,QAAQ,UAAU,SAAS,GAAA,IAAS,SAElD,kBAAsC;AAAA,IAC1C,GAAG,SAAS;AAAA,IACZ,aAAa;AAAA,IACb,gBAAgB;AAAA,IAChB,qBAAqB;AAAA,IACrB,QAAQ;AAAA,IACR,eAAe,SAAS,KAAQ,SAAS,QAAQ,iBAAiB;AAAA,IAClE,SAAS,SAAS,QAAQ,WAAW,SAAS,QAAQ;AAAA,IACtD;AAAA,EAAA,GAGI,UAAUA,YAAAA,QAAG,cAAc,SAAS,WAAW,eAAe,GAE9D,aAAa,QAAQ,QAErB,iBAAiBA,YAAAA,QAAG,sBAAsB,OAAO,EAAE,OAAO,WAAW,WAAW;AAEtF,aAAW,cAAc;AACvB,oBAAgB,EAAC,KAAK,QAAQ,WAAA,CAAW;AAG3C,MAAI,WAAW,eACE,eAAe,OAAO,CAAC,SAAS,KAAK,aAAaA,YAAAA,QAAG,mBAAmB,KAAK,EAEjF;AACT,UAAM,IAAI,MAAM,0CAA0C;AAGhE;ACvCO,MAAM,iBAAiB,MAAM;AAAA,EAClC;AAAA,EAEA,YAAY,SAAiB,UAA8B;AACzD,UAAM,OAAO,GACb,KAAK,WAAW;AAAA,EAClB;AACF;ACNO,SAAS,yBAAyB,SAWzB;AACd,QAAM;AAAA,IACJ;AAAA,IACA;AAAA,IACA;AAAA,IACA;AAAA,IACA;AAAA,IACA;AAAA,IACA;AAAA,IACA;AAAA,IACA;AAAA,IACA;AAAA,EAAA,IACE;AAEJ,SAAO;AAAA,IACL,WAAW;AAAA,MACT,SAAS;AAAA,MACT,gBAAgB;AAAA,IAAA;AAAA,IAElB;AAAA;AAAA,IAGA,UAAU,SAAS,QAAQ,QACvB;AAAA,MACE,kBAAkB;AAAA,QAChB,SAAS;AAAA,QACT,iBAAiB;AAAA;AAAA,UAEf,OAAO,CAAA;AAAA,QAAC;AAAA,MACV;AAAA,IACF,IAEF,EAAC,kBAAkB,aAAA;AAAA,IAEvB,UAAU;AAAA,MACR,SAAS;AAAA,MACT,iBAAiBhB,cAAAA,QAAK,QAAQ,UAAU,GAAG,UAAU,WAAW;AAAA,IAAA;AAAA,IAElE,WAAW;AAAA,MACT,SAAS;AAAA,MACT,mBAAmBA,cAAAA,QAAK,QAAQ,UAAU,QAAQ;AAAA;AAAA;AAAA,IAAA;AAAA,IAIpD,eAAe;AAAA,MACb,SAAS;AAAA,IAAA;AAAA,IAEX;AAAA,IACA;AAAA,IACA;AAAA,EAAA;AAEJ;;;;;AC7DA,MAAMC,YAAUC,YAAAA,kQAA6B;AAU7C,eAAsB,kBAAkB,MAEC;AACvC,QAAM,EAAC,eAAc;AAErB,MAAI,WAAW,WAAW;AACxB;AAGF,QAAM,eAAe,MAAMmB,GAAAA;AAAAA,IACzBpB,UAAQ,QAAQ,kDAAkD;AAAA,EAAA,GAK9D,kBAAkBqB,YAAAA,MAAM,aAAa,SAAA,CAAU,GAG/C,kBAAkB,gBAAgB,kBAAkB,CAAA,GAAI;AAAA,IAC5D,WAAW,IAAI,CAAC,OAAO;AAAA,MACrB,SAAS,IAAI,EAAE,IAAI;AAAA,MACnB,YAAY,EAAE;AAAA,MACd,eAAe,EAAE;AAAA,IAAA,EACjB;AAAA,EAAA,GAKE,iBAAiB,EAAC,GAAG,gBAAgB,eAAA;AAE3C,aAAW,aAAa;AACtB,mBAAe,IAAI,UAAU,IAAI,EAAE,IAAI;AAGzC,SAAOC,YAAAA,gBAAgB,eAAe;AAAA,IACpC,GAAG;AAAA,IACH,gBAAgB;AAAA,IAChB;AAAA,IACA;AAAA,EAAA,CACD;AACH;;;;;AC7CA,eAAsB,6BAA6B;AAAA,EACjD;AAAA,EACA;AACF,GAGsB;AACpB,QAAM,UAAU,cAAc,cAAc,SACtC,eAAyB,CAAA,GAMzB,cAHkB,CAAC,GAAG,QAAQ,gBAAgB,EAGhB,OAAO,CAAC,eAAe,WAAW,SAAS,SAAS,QAAQ,CAAC;AAEjG,aAAW,cAAc;AACnB,eAAW,KAAK,SAAS,gBAAgB,KAC3C,aAAa,KAAK,GAAG,oBAAoB,WAAW,IAAI,CAAC;AAI7D,SAAO;AACT;AAGO,SAAS,oBAAoB,aAA+B;AAKjE,SAJYD,OAAAA,MAAM,aAAa;AAAA,IAC7B,QAAQE,0BAAAA;AAAAA,EAAA,CACT,EAEU,QAAQ,KAChB,OAAO,CAACC,UAASA,MAAK,SAAS,qBAAqB,EACpD,IAAI,CAACA,UAASC,OAAAA,MAAMD,KAAI,EAAE,IAAI;AACnC;ACzCA,MAAM,aAAsD;AAAA,EAC1D,OAAO;AAAA,EACP,MAAM;AAAA,EACN,KAAK;AAAA,EACL,MAAM;AACR;AAGO,SAAS,yBAAyB,SAGZ;AAC3B,QAAM,EAAC,OAAO,WAAW,GAAA,IAAS;AAElC,WAAS,eACP,KACA,cACA;AACA,UAAM,IAAI,QAAQ,GAAG;AAErB,WAAQ,IAAI,WAAW,CAAC,IAAI,gBAAgB;AAAA,EAC9C;AAEA,SAAO;AAAA,IACL,0BAA0B;AAAA,MACxB,SAAS;AAAA,QACP,UAAW,WAAW,SAAS;AAAA,MAAA;AAAA,IACjC;AAAA,IAGF,2BAA2B,WACvB;AAAA,MACE,SAAS;AAAA,QACP,UAAU;AAAA,QACV,oBAAoB;AAAA,MAAA;AAAA,IACtB,IAEF;AAAA,MACE,SAAW;AAAA,QACT,UAAU;AAAA,QACV,oBAAoB;AAAA,MAAA;AAAA,MAGtB,uBAAuB;AAAA;AAAA;AAAA;AAAA;AAAA,QAKrB,UAAU;AAAA,QACV,oBAAoB;AAAA,MAAA;AAAA,MAGtB,gCAAgC;AAAA,QAC9B,UAAU,eAAe,gCAAgC,OAA4B;AAAA,QACrF,oBAAoB;AAAA,MAAA;AAAA,MAGtB,kCAAkC;AAAA,QAChC,UAAU,eAAe,gCAAgC;AAAA,QACzD,oBAAoB;AAAA,MAAA;AAAA,MAGtB,0BAA0B;AAAA,QACxB,UAAU,eAAe,0BAA0B,OAA4B;AAAA,QAC/E,oBAAoB;AAAA,MAAA;AAAA,MAGtB,4BAA4B;AAAA,QAC1B,UAAU;AAAA,QACV,oBAAoB;AAAA,MAAA;AAAA,IACtB;AAAA,IAGN,uBAAuB,WACnB;AAAA,MACE,SAAS;AAAA,QACP,UAAU;AAAA,QACV,oBAAoB;AAAA,MAAA;AAAA,IACtB,IAEF;AAAA,MACE,SAAW;AAAA,QACT,UAAU;AAAA,QACV,oBAAoB;AAAA,MAAA;AAAA,MAGtB,iCAAiC;AAAA,QAC/B,UAAU;AAAA,UACR;AAAA,UACA;AAAA,QAAA;AAAA,QAEF,oBAAoB;AAAA,MAAA;AAAA,MAGtB,uBAAuB;AAAA,QACrB,UAAU,eAAe,uBAAuB,OAA4B;AAAA,QAC5E,oBAAoB;AAAA,MAAA;AAAA,MAGtB,yBAAyB;AAAA,QACvB,UAAU,eAAe,yBAAyB,MAA2B;AAAA,QAC7E,oBAAoB;AAAA,MAAA;AAAA,IACtB;AAAA,EACF;AAER;;;;;AC1FA,eAAsB,aAAa,SAkB2C;AAC5E,QAAM;AAAA,IACJ;AAAA,IACA;AAAA,IACA;AAAA,IACA;AAAA,IACA;AAAA,IACA;AAAA,IACA;AAAA,IACA;AAAA,IACA;AAAA,IACA;AAAA,IACA;AAAA,IACA;AAAA,IACA;AAAA,EAAA,IACE,SAEE,kBAAkB,MAAM,kBAAkB;AAAA,IAC9C,YAAY,cAAc,CAAA;AAAA,EAAC,CAC5B,GAEK,WAAW,UAAU,CAAC,EAAG,QAAQ,gBAAgB,OAAO,GAExD,mBAAmB,CAAC,UAAU,SAAS,QAAQ,GAC/C,kBAAmCE,aAAAA,gBAAgB,QAAQ;AAAA,IAC/D,cAAc,yBAAyB;AAAA,MACrC;AAAA,MACA;AAAA,MACA;AAAA,MACA;AAAA,MACA,UAAU,yBAAyB,EAAC,OAAO,UAAU,mBAAkB;AAAA,MACvE,eAAe;AAAA,MACf,wBAAwB;AAAA,MACxB;AAAA,MACA;AAAA,MACA,kBAAkB;AAAA,IAAA,CACnB;AAAA,IACD,sBAAsB;AAAA,IACtB;AAAA,IACA,qBAAqB3B,cAAAA,QAAK,QAAQ,aAAa,cAAc;AAAA,EAAA,CAC9D,GAEK,WAA+B,CAAA,GAG/B,kBAAkB4B,aAAAA,UAAU,OAAO,iBAAiB;AAAA;AAAA,IAExD,YAAY;AAAA;AAAA,IAEZ,qBAAqB;AAAA;AAAA,IAErB,gBAAgB,SAA2B;AACzC,eAAS,KAAK,OAAO,GACrB,QAAQ,UAAU;AAAA,IACpB;AAAA,EAAA,CACD,GAEK,YAAY5B,cAAAA,QAAK,QAAQ,UAAU,QAAQ,GAC3C,WAAW,MAAMM,YAAAA,QAAG,SAAS,SAAS,GACtC,iBAAiB,MAAMuB,oBAAS,cAAc,SAAS;AAE7D,QAAMC,cAAO9B,cAAAA,QAAK,QAAQ,SAAS,CAAC;AAEpC,QAAM,eAAe,MAAM,6BAA6B;AAAA,IACtD,eAAe;AAAA,IACf,UAAU;AAAA,EAAA,CACX,GAEK,OAAO,CAAC,SAAS,YAAY,GAAG,YAAY,EAAE,KAAK;AAAA;AAAA,CAAM,GACzD,aAAa,MAAM6B,oBAAS,OAAO,MAAM;AAAA,IAC7C,GAAG;AAAA,IACH,UAAU;AAAA,EAAA,CACX;AAED,aAAW,eAAe,WAAW;AACnC,UAAM,eAAe7B,cAAAA,QAAK,QAAQ,UAAU,WAAW;AAEvD,UAAMM,YAAAA,QAAG,UAAU,cAAc,UAAU,GAG3C,MAAM,KAAK;AAAA,MACT,MAAM;AAAA,MACN,MAAM;AAAA,IAAA,CACP;AAAA,EACH;AAEA,SAAI,oBACF,MAAMA,oBAAG,OAAO,SAAS,GAGpB,EAAC,iBAAiB,SAAA;AAC3B;ACjHA,eAAsB,UACpB,KACA,MACoB;AACpB,QAAM,EAAC,QAAAI,SAAQ,KAAK,OAAO,QAAQ,QAAQ,IAAAM,KAAI,oBAAmB;AAElE,MAAI,CAACA,IAAG,UAAU,CAACA,IAAG;AACpB,WAAO,EAAC,MAAM,OAAO,UAAU,CAAA,GAAI,SAAS,GAAC;AAG/C,QAAM,EAAC,QAAQ,UAAU,IAAA,IAAOA,IAAG,OAAO;AAE1C,MAAI,CAAC;AACH,UAAM,IAAI,MAAM,mDAAmD;AAGrE,QAAM,UAAUhB,cAAAA,QAAK,QAAQ,QAAQ,SAAS;AAE9C,QAAM,WAAW,EAAC,KAAK,QAAQ,QAAQ,SAAS,QAAQ,UAAUgB,IAAG,QAAO;AAC5E,QAAM,WAA+B,IAE/B,UAAuD,CAAA;AAE7D,aAAW,SAAS,KAAK,SAAS;AAChC,UAAM,aAAa,MAAM,eAAe,MAAM,YAAY,MAAM,YAE1D,kBAAkBhB,cAAAA,QAAK;AAAA,MAC3B;AAAA,MACAA,cAAAA,QAAK,SAAS,SAASA,cAAAA,QAAK,QAAQ,KAAK,MAAM,UAAU,CAAC,EAAE,QAAQ,SAAS,OAAO;AAAA,IAAA,GAGhF,cAAc,MAAM,YAAY,IAAI,CAAC,eAAeA,cAAAA,QAAK,QAAQ,KAAK,UAAU,CAAC,GACjF,YAAY,YAAY,IAAI,CAAC,eAAeA,sBAAK,SAAS,QAAQ,UAAU,CAAC,GAC7E,SAAS,MAAM,aAAa;AAAA,MAChC,iBAAiB,mBAAmB,CAAA;AAAA,MACpC,YAAYU,SAAQ,SAAS;AAAA,MAE7B,UAAU;AAAA,MACV;AAAA,MACA;AAAA,MACA;AAAA,MACA,aAAa;AAAA,MACb,OAAOA,SAAQ,SAAS;AAAA,MACxB;AAAA,MACA,UAAUM,IAAG;AAAA,MACb;AAAA,MACA,cAAchB,cAAAA,QAAK,QAAQ,KAAKgB,IAAG,cAAc,eAAe;AAAA,MAChE,mBAAmBN,SAAQ,SAAS,YAAY;AAAA,IAAA,CACjD;AAED,aAAS,KAAK,GAAG,OAAO,QAAQ;AAEhC,UAAM,SAAS,OAAO,SAAS,OAAO,CAAC,QAAQ,IAAI,aAAa,OAAO;AAEvE,QAAI,OAAO,SAAS;AAClB,YAAA,MAAMqB,OAAAA,OAAO,OAAO,GACd,IAAI,SAAS,eAAe,OAAO,MAAM,iCAAiC,MAAM;AAGxF,YAAQ,KAAK,EAAC,YAAY/B,cAAAA,QAAK,QAAQ,KAAK,MAAM,UAAU,GAAG,WAAW,YAAA,CAAY;AAAA,EACxF;AAEA,SAAA,MAAM+B,OAAAA,OAAO,OAAO,GAEb,EAAC,MAAM,OAAO,UAAU,QAAA;AACjC;ACtEO,MAAM,UAA2C;AAAA,EACtD,MAAM,CAAC,KAAK,SACV;AAAA,IACE,+BAA+BvB,eAAAA,QAAM,KAAK,IAAI,GAAG,CAAC;AAAA,IAClD;AAAA,IACA,GAAG,KAAK,QAAQ,IAAI,CAAC,UACZ,MAAM,YACV,IAAI,CAAC,eACG;AAAA,MACL,SAASA,eAAAA,QAAM,KAAK,MAAM,QAAQ,CAAC;AAAA,MACnC,GAAGA,eAAAA,QAAM,OAAO,MAAM,UAAU,CAAC,IAAIA,eAAAA,QAAM,KAAK,QAAG,CAAC,IAAIA,eAAAA,QAAM,OAAO,UAAU,CAAC;AAAA,IAAA,EAChF,KAAK,EAAE,CACV,EACA,KAAK;AAAA,CAAI,CACb;AAAA,EAAA,EACD,KAAK;AAAA,CAAI;AAAA,EACb,MAAM,CAAC,KAAK,SACH,IAAIwB,KAAAA,WAAW,CAAC,aAAa;AAClC,cAAU,KAAK,IAAI,EAChB,KAAK,CAAC,WAAW;AAChB,eAAS,KAAK,MAAM,GACpB,SAAS,SAAA;AAAA,IACX,CAAC,EACA,MAAM,CAAC,QAAQ;AACd,eAAS,MAAM,GAAG;AAAA,IACpB,CAAC;AAAA,EACL,CAAC;AAAA,EAEH,UAAU,CAAC,KAAK,OAAO,WAAW;AAChC,yBAAqB,KAAK,OAAO,QAAQ;AAAA,EAC3C;AAAA,EACA,OAAO,CAAC,KAAK,OAAO,QAAQ;AAC1B,UAAM,EAAC,WAAU;AAEb,mBAAe,WACjB,qBAAqB,KAAK,IAAI,QAAQ,IAC7B,eAAe,SACxB,OAAO,MAAM,GAAG;AAAA,EAEpB;AACF,GCnCa,eAAqD;AAAA,EAChE,MAAM,CAAC,MAAM,SACX;AAAA,IACE;AAAA,IACA,GAAG,KAAK,QAAQ,IAAI,CAAC,UACZ,MAAM,YAAY,IAAI,CAAC,eACrB;AAAA,MACL,SAASxB,eAAAA,QAAM,KAAK,MAAM,QAAQ,CAAC;AAAA,MACnC,GAAGA,eAAAA,QAAM,OAAO,MAAM,UAAU,CAAC,IAAIA,eAAAA,QAAM,KAAK,QAAG,CAAC,IAAIA,eAAAA,QAAM,OAAO,UAAU,CAAC;AAAA,IAAA,EAChF,KAAK,EAAE,CACV,CACF;AAAA,EAAA,EACD,KAAK;AAAA,CAAI;AAAA,EACb,MAAM,CAAC,KAAK,SAAS;AACnB,UAAM,EAAC,QAAAE,SAAQ,KAAK,OAAO,QAAQ,QAAQ,IAAI,WAAW,gBAAA,IAAmB;AAE7E,WAAO,IAAIsB,KAAAA,WAAW,CAAC,aAAa;AAClC,UAAI,CAAC,UAAU,UAAU,CAAC,UAAU,YAAY;AAC9C,iBAAS,KAAK,EAAC,MAAM,OAAO,UAAU,IAAI,SAAS,CAAA,EAAC,CAAE,GACtD,SAAS,SAAA;AAET;AAAA,MACF;AAEA,YAAM,EAAC,QAAQ,UAAU,IAAA,IAAO,UAAU,OAAO;AAEjD,UAAI,CAAC,QAAQ;AACX,iBAAS,MAAM,IAAI,MAAM,mDAAmD,CAAC;AAE7E;AAAA,MACF;AAEA,YAAM,UAAUhC,cAAAA,QAAK,QAAQ,QAAQ,SAAS;AAE9C,iBAAW;AAAA,QACT;AAAA,QACA;AAAA,QACA,QAAQ;AAAA,QACR,UAAU,UAAU;AAAA,QACpB;AAAA,MAAA,CACD,EAAE,MAAM,CAAC,QAAQ;AAChB,iBAAS,MAAM,GAAG;AAAA,MACpB,CAAC;AAED,YAAM,OAAOgB,YAAAA,QAAG;AAAA,QACd,UAAU;AAAA,QACV;AAAA,UACE,GAAG,UAAU,OAAO;AAAA,UACpB,aAAa;AAAA,UACb,gBAAgB;AAAA,UAChB,qBAAqB;AAAA,UACrB,QAAQ;AAAA,UACR,eAAe,SAAS,KAAQ,UAAU,OAAO,QAAQ,iBAAiB;AAAA,UAC1E,QAAQ;AAAA,QAAA;AAAA,QAEVA,YAAAA,QAAG;AAAA,QACHA,YAAAA,QAAG;AAAA,QACH,CAAC,eAAe;AACd,iBAAO,MAAMA,YAAAA,QAAG,6BAA6B,WAAW,aAAa;AAAA,CAAI,CAAC;AAAA,QAC5E;AAAA,QACA,CAAC,eAAe;AACd,iBAAO,KAAKA,YAAAA,QAAG,6BAA6B,WAAW,aAAa;AAAA,CAAI,CAAC;AAAA,QAC3E;AAAA,MAAA,GAGI,wBAAwB,KAAK;AAEnC,WAAK,qBAAqB,OAAO,YAAY;AAC3C,gCAAwB,OAAO;AAE/B,cAAM,WAA+B,IAC/B,UAAuD,CAAA;AAE7D,mBAAW,SAAS,KAAK,SAAS;AAChC,gBAAM,aAAa,MAAM,eAAe,MAAM,YAAY,MAAM,YAE1D,kBAAkBhB,cAAAA,QAAK;AAAA,YAC3B;AAAA,YACAA,cAAAA,QAAK,SAAS,SAASA,cAAAA,QAAK,QAAQ,KAAK,MAAM,UAAU,CAAC,EAAE,QAAQ,SAAS,OAAO;AAAA,UAAA,GAGhF,cAAc,MAAM,YAAY,IAAI,CAAC,eAAeA,cAAAA,QAAK,QAAQ,KAAK,UAAU,CAAC,GACjF,YAAY,YAAY,IAAI,CAAC,eAAeA,cAAAA,QAAK,SAAS,QAAQ,UAAU,CAAC;AAEnF,cAAI;AACF,kBAAM,SAAS,MAAM,aAAa;AAAA,cAChC,iBAAiB,mBAAmB,CAAA;AAAA,cACpC,YAAYU,SAAQ,SAAS;AAAA,cAC7B;AAAA,cACA,UAAU;AAAA,cACV;AAAA,cACA;AAAA,cACA;AAAA,cACA,aAAa;AAAA,cACb,OAAOA,SAAQ,SAAS;AAAA,cACxB;AAAA,cACA,UAAU,UAAU;AAAA,cACpB;AAAA,cACA,cAAcV,cAAAA,QAAK,QAAQ,KAAK,UAAU,cAAc,eAAe;AAAA,cACvE,mBAAmBU,SAAQ,SAAS,YAAY;AAAA,YAAA,CACjD;AAED,qBAAS,KAAK,GAAG,OAAO,QAAQ,GAChC,QAAQ,KAAK,EAAC,YAAYV,cAAAA,QAAK,QAAQ,KAAK,MAAM,UAAU,GAAG,WAAW,aAAY;AAAA,UACxF,SAAS,KAAK;AACZ,gBAAI,eAAe;AACjB,uBAAS,KAAK,GAAG,IAAI,QAAQ;AAAA,iBACxB;AACL,uBAAS,MAAM,GAAG;AAElB;AAAA,YACF;AAAA,UACF;AAAA,QACF;AAEA,iBAAS,KAAK,EAAC,MAAM,OAAO,UAAU,SAAQ;AAAA,MAChD;AAEA,YAAM,eAAegB,YAAAA,QAAG,mBAAmB,IAAI;AAE/C,aAAO,MAAM;AACX,qBAAa,MAAA,GACbe,kBAAO,KAAK,OAAO;AAAA,MACrB;AAAA,IACF,CAAC;AAAA,EACH;AAAA,EACA,UAAU,CAAC,KAAK,MAAM,WAAW;AAC/B,UAAM,EAAC,WAAU;AAEjB,yBAAqB,KAAK,OAAO,QAAQ,GAEzC,OAAO;AAAA,MACL;AAAA,SAAkC,KAAK,QACpC;AAAA,QACC,CAAC,UACC,SAASvB,eAAAA,QAAM,KAAK,MAAM,QAAQ,CAAC,KAAKA,eAAAA,QAAM,OAAO,MAAM,UAAU,CAAC,IAAIA,uBAAM,KAAK,QAAG,CAAC,IAAIA,eAAAA,QAAM,OAAO,MAAM,YAAY,KAAK,IAAI,CAAC,CAAC;AAAA,MAAA,EAE1I,KAAK;AAAA,QAAW,CAAC;AAAA,IAAA,GAEtB,OAAO,IAAI,EAAE;AAAA,EACf;AAAA,EACA,OAAO,CAAC,KAAK,OAAO,QAAQ;AAC1B,UAAM,EAAC,WAAU;AAEb,mBAAe,WACjB,qBAAqB,KAAK,IAAI,QAAQ,IAC7B,eAAe,SACxB,OAAO,MAAM,GAAG;AAAA,EAEpB;AACF;ACxJO,SAAS,iBAAiB,SAElB;AACb,QAAM,EAAC,WAAA,IAAc,WAAW,CAAA,GAE1B,WAAW;AAAA,IACf,KAAK,QAAQ;AAAA,IACb,MAAM,QAAQ;AAAA,IACd,OAAO,QAAQ;AAAA,EAAA,GAGX,WAA4B,CAAA;AAElC,SAAA,QAAQ,MAAM,IAAI,SAAoB,SAAS,KAAK,EAAC,MAAM,OAAO,KAAA,CAAK,GACvE,QAAQ,OAAO,IAAI,SAAoB,SAAS,KAAK,EAAC,MAAM,QAAQ,KAAA,CAAK,GACzE,QAAQ,QAAQ,IAAI,SAAoB,SAAS,KAAK,EAAC,MAAM,SAAS,KAAA,CAAK,GAEpE;AAAA,IACL;AAAA,IACA,SAAS,MAAM;AACb,cAAQ,MAAM,SAAS,KACvB,QAAQ,OAAO,SAAS,MACxB,QAAQ,QAAQ,SAAS,OAEzB,aAAa,QAAQ;AAAA,IACvB;AAAA,EAAA;AAEJ;AC/BO,MAAM,kBAAgD;AAAA,EAC3D,MAAM,CAAC,KAAK,SAAS;AACnB,UAAM,gBAAgB,KAAK,QAAQ,OAAO,CAAC,MAAM,EAAE,KAAK,SAAS,aAAa,CAAC,GACzE,UAAU,KAAK,QAAQ,OAAO,CAAC,MAAM,CAAC,EAAE,KAAK,SAAS,aAAa,CAAC,GAEpE,cAAc,KAAK,OAAO,SAC5B,CAAC,aAAa,GAAG,KAAK,OAAO,IAAI,CAAC,MAAM,SAASA,eAAAA,QAAM,OAAO,CAAC,CAAC,EAAE,CAAC,IACnE,IAEE,eAAe,cAAc,SAC/B;AAAA,MACE;AAAA,MACA,GAAG,cAAc;AAAA,QAAI,CAAC,MACpB;AAAA,UACE;AAAA,UACA,GAAGA,eAAAA,QAAM,OAAO,EAAE,MAAM,CAAC,IAAIA,uBAAM,KAAK,QAAG,CAAC,IAAIA,uBAAM,OAAO,kBAAkB,EAAE,MAAM,CAAC,CAAC;AAAA,QAAA,EACzF,KAAK,EAAE;AAAA,MAAA;AAAA,IACX,IAEF,IAEE,eAAe,QAAQ,SACzB;AAAA,MACE;AAAA,MACA,GAAG,QAAQ;AAAA,QAAI,CAAC,MACd;AAAA,UACE;AAAA,UACA,GAAGA,eAAAA,QAAM,KAAKR,cAAAA,QAAK,KAAK,IAAI,IAAI,MAAM,EAAE,IAAI,CAAC,CAAC;AAAA,UAC9C,GAAGQ,eAAAA,QAAM,OAAO,EAAE,MAAM,CAAC,IAAIA,uBAAM,KAAK,QAAG,CAAC,IAAIA,uBAAM,OAAO,kBAAkB,EAAE,MAAM,CAAC,CAAC;AAAA,QAAA,EACzF,KAAK,EAAE;AAAA,MAAA;AAAA,IACX,IAEF,CAAA;AAEJ,WAAO;AAAA,MACL,+BAA+BA,eAAAA,QAAM,KAAK,UAAU,CAAC;AAAA,MACrD,aAAaA,eAAAA,QAAM,OAAO,KAAK,MAAM,CAAC;AAAA,MACtC,GAAG;AAAA,MACH,GAAG;AAAA,MACH,GAAG;AAAA,IAAA,EACH,KAAK;AAAA,CAAI;AAAA,EACb;AAAA,EACA,MAAM,CAAC,KAAK,SACHyB,KAAAA,KAAKC,cAAY,KAAK,IAAI,CAAC;AAAA,EAEpC,UAAU,MAAM;AAAA,EAEhB;AAAA,EACA,OAAO,CAAC,MAAM,OAAO,QAAQ;AAC3B,YAAQ,MAAM,GAAG;AAAA,EACnB;AACF;AAEA,eAAeA,cAAY,KAAmB,MAAuB;AACnE,QAAM,CAAC,EAAC,YAAW,EAAC,uBAAsB,IAAI,MAAM,QAAQ,IAAI;AAAA,IAC9D,OAAO,UAAU;AAAA,IACjB;qBAAO,6BAAyB;AAAA,IAAA,CAAA;AAAA,EAAA,CACjC,GACK,EAAC,UAAU,OAAO,WAAU,KAC5B,SAASlC,cAAAA,QAAK,SAAS,IAAI,KAAK,QAAQ,GAGxC,aAAa,iBAAiB;AAAA,IAClC,YAAY,CAAC,aAAa;AACxB,iBAAW,OAAO,UAAU;AAC1B,cAAM,OAAO,OAAO,IAAI,KAAK,CAAC,CAAC;AAE3B,YAAI,SAAS,0BAIb,KAAK,WAAW,yBAAyB,KAIzC,KAAK,WAAW,qCAAqC,MAIrD,IAAI,SAAS,SACf,OAAO,KAAK,GAAG,IAAI,IAAI,GAGrB,IAAI,SAAS,UACf,OAAO,KAAK,GAAG,IAAI,IAAI,GAGrB,IAAI,SAAS,WACf,OAAO,MAAM,GAAG,IAAI,IAAI;AAAA,MAE5B;AAAA,IACF;AAAA,EAAA,CACD;AAED,MAAI;AACF,UAAM,EAAC,cAAc,cAAA,IAAiB,sBAAsB,KAAK,IAAI,GAG/D,SAAS,MAAM,SAAS;AAAA,MAC5B,GAAG;AAAA,MACH,OAAO,SAAS;AACd,mBAAW,SAAS,KAAK;AAAA,UACvB,MAAM;AAAA,UACN,MAAM,QAAQ;AAAA,UACd,MAAM,CAAC,QAAQ,OAAO;AAAA,QAAA,CACvB;AAAA,MACH;AAAA,IAAA,CACD,GAIK,EAAC,OAAA,IAAU,MAAM,OAAO,SAAS,aAAa;AAEpD,eAAW,gBAAgB;AACrB,mBAAa,SAAS,UACxB,MAAM,KAAK;AAAA,QACT,MAAM;AAAA,QACN,MAAMA,cAAAA,QAAK,QAAQ,QAAQ,aAAa,QAAQ;AAAA,MAAA,CACjD,IAED,MAAM,KAAK;AAAA,QACT,MAAM;AAAA,QACN,MAAMA,cAAAA,QAAK,QAAQ,QAAQ,aAAa,QAAQ;AAAA,MAAA,CACjD;AAKL,UAAM,OAAO,MAAM,aAAa,GAGhC,MAAM,OAAO,MAAA,GAGb,WAAW,QAAA;AAAA,EACb,SAAS,KAAK;AAEZ,UAAA,WAAW,WACL;AAAA,EACR;AACF;AAEA,SAAS,kBAAkBA,OAAc;AACvC,UAAQ,IAAA;AAAA,IACN,KAAKA,MAAK,SAAS,MAAM;AACvB,aAAOA,MAAK,QAAQ,UAAU,QAAQ;AAAA,IACxC,KAAKA,MAAK,SAAS,MAAM;AACvB,aAAOA,MAAK,QAAQ,UAAU,QAAQ;AAAA,IACxC;AACE,aAAOA,MAAK,QAAQ,SAAS,OAAO;AAAA,EAAA;AAE1C;AC1JO,SAAS,YAAY,SAGjB;AACT,SAAO;AAAA,IACL,MAAM;AAAA,IAEN,MAAM,eAAe,gBAAgB,QAAQ,UAAU;AACrD,iBAAW,CAAC,UAAU,YAAY,KAAK,OAAO,QAAQ,MAAM;AAE1D,YAAI,aAAa,SAAS,SAAS;AACjC,gBAAM,QAAQ;AACd,cAAI,MAAM,kBAAkB,SAAS,QAAQ,eAAe,GAAG;AAC7D,kBAAM,oBAAoB,GAAG,QAAQ;AACrC,kBAAM;AAAA,cACJ;AAAA,cACA,OAAO,iBAAiB,GAAG,SAAS,UAAU,OAAO,iBAAiB,IAAI;AAAA,cAC1E,QAAQ;AAAA,YAAA;AAAA,UAEZ;AAAA,QACF;AAAA,IAEJ;AAAA,EAAA;AAEJ;AAEA,eAAe,aACb,OACA,gBACA,oBACA;AACA,QAAM,MAAM,MAAM,OAAO,SAAA,GACnB,OAAO,MAAM,UAEb,UAAUmC,aAAAA,sBAAsB1B,sBAAAA,QAAa,kBAAkB,CAAC,GAGhE,qBAAqB2B,uBAAU;AAAA,IACnC,UAAU;AAAA,IACV,MAAM,OAAO,KAAK,GAAG;AAAA,IACrB,QAAQ;AAAA,IACR,YAAY;AAAA,IACZ;AAAA,IACA,WAAW,CAAC,CAAC;AAAA,IACb,gBAAgB,iBAAiB,eAAe,OAAO,aAAa;AAAA,EAAA,CACrE;AAEG,qBAAmB,SAAS,UAE9B,QAAQ,KAAK,mBAAmB,QAAQ,GAG1C,MAAM,SAAS,IAAI,YAAA,EAAc,OAAO,mBAAmB,IAAI,GAC3D,kBAAkB,mBAAmB,QACvC,eAAe,SAAS,IAAI,YAAA,EAAc,OAAO,mBAAmB,GAAG,GACvE,MAAM,UAAU;AAAA,uBAA0BC,KAAAA,SAAS,eAAe,QAAQ,CAAC;AAAA;AAE/E;ACnCO,SAAS,oBACd,KACA,WACc;AACd,QAAM,EAAC,QAAQ,SAAS,OAAA,IAAU,WAC5B,EAAC,QAAA3B,SAAQ,KAAK,SAAS,UAAU,UAAU,UAAU,QAAQ,KAAK,IAAAM,QAAM,KACxE,YAAYJ,UAAO,IAAI,QAAQ,UAAU,EAAE,MAAM,GACjD,SAASF,SAAQ,UAAU,IAC3B,SAASV,cAAAA,QAAK,SAAS,KAAK,QAAQ,GAEpC,cAAc,OAAO;AAAA,IACzB,OAAO,QAAQgB,IAAG,QAAQ,QAAQ,SAAS,CAAA,CAAE,EAAE,IAAI,CAAC,CAAC,KAAK,GAAG,MACpD,CAAC,KAAKhB,sBAAK,QAAQ,KAAKgB,IAAG,QAAQ,QAAQ,WAAW,KAAK,IAAI,CAAC,CAAE,CAAC,CAC3E;AAAA,EAAA,GAGG,UAAU,UAAU,QAAQ,IAAI,CAAC,WAC9B;AAAA,IACL,GAAG;AAAA,IACH,MAAMhB,cAAAA,QAAK,SAAS,QAAQ,MAAM,MAAM,EAAE,QAAQ,aAAa,EAAE;AAAA,EAAA,IAElE,CAAA,CAAE,GAEC,YACJ,YAAY,OAAO,KAAK,QAAQ,EAAE,IAAI,CAAC,eAAeA,cAAAA,QAAK,KAAK,IAAI,MAAM,UAAU,CAAC,GAEjF,cAAc,YAAY,OAAO,OAAO,QAAQ,EAAE,IAAI,CAAC,MAAMA,cAAAA,QAAK,QAAQ,KAAK,EAAE,MAAM,CAAC,GAExF,eAAe,OAAO;AAAA,IAC1B,OAAO,QAAQU,SAAQ,UAAU,CAAA,CAAE,EAAE,IAAI,CAAC,CAAC,KAAK,GAAG,MAAM,CAAC,KAAK,KAAK,UAAU,GAAG,CAAC,CAAC;AAAA,EAAA,GAG/E,EAAC,gBAAgB,uBAAuB,cAAc,KAAK,QAAQ,EAAA,IAAKA,SAAQ,UAAU,CAAA,GAE1F,iBAAiB;AAAA,IACrB4B,yBAAQ;AAAA,MACN,mBAAmB;AAAA,MACnB,QACE,IAAI,SAAS,sBACT,EAAC,GAAG,iBACJ;AAAA,QACE,6BAA6B,CAAC,QAAQ;AACpC,gBAAM,aAAa,KAAKtC,cAAAA,QAAK,SAAS,KAAK,GAAG,CAAC,IACzC,QAAQ,QAAQ,KAAK,CAAC,MAAM,EAAE,WAAW,UAAU;AAEzD,iBAAK,QAME,KAAK;AAAA,YACVA,sBAAK,SAAS,KAAKA,cAAAA,QAAK,QAAQ,QAAQ,MAAM,OAAO,SAAS,CAAC;AAAA,UAAA,KAN/D,QAAQ,MAAM,gCAAgC,UAAU,EAAE,GAEnD;AAAA,QAMX;AAAA,QACA,0BAA0B,KAAK,UAAU,MAAM;AAAA,QAC/C,2BAA2B,KAAK,UAAU,OAAO;AAAA,QACjD,2BAA2B,KAAK,UAAU,QAAQ,IAAI,eAAkB,IAAI,OAAO;AAAA,QACnF,GAAG;AAAA,MAAA;AAAA,IACL,CACP;AAAA,IACDuC,uBAAM;AAAA,MACJ,SAAS,EAAC,GAAG,YAAA;AAAA,IAAW,CACzB;AAAA,IACDC,8BAAY;AAAA,MACV,SAAS,YAAY;AAAA,MACrB,YAAY,CAAC,QAAQ,QAAQ,OAAO,QAAQ,SAAS,OAAO;AAAA,MAC5D,gBAAgB;AAAA,IAAA,CACjB;AAAA,IACDC,0BAAA;AAAA,IACAC,sBAAA;AAAA,IACAhC,SAAQ,QAAQ,kBACdiC,aAAAA;AAAAA,MACEjC,SAAQ,QAAQ,mBAAmB,KAC/B;AAAA,QACE,SAAS;AAAA,UACP,MACE,YAAY,SACR,oBACA,YAAY,YACV,uBACA;AAAA,UACR,WAAW;AAAA,QAAA;AAAA,QAEb,aAAa;AAAA,MAAA,IAEfA,SAAQ,QAAQ;AAAA,IAAA;AAAA,IAExBA,SAAQ,QAAQ,kBACd;AAAA,MACEA,SAAQ,QAAQ,mBAAmB,KAC/B;AAAA,QACE,iBACE,YAAY,SACR,oBACA,YAAY,YACV,uBACA;AAAA,QACR,cAAc;AAAA,MAAA,IAEhB;AAAA,QACE,iBACE,OAAOA,QAAO,OAAO,eAAe,WAAY,YAChDA,QAAO,OAAO,eAAe,QAAQ,OACjCA,QAAO,OAAO,eAAe,QAAQ,OACrC,YAAY,SACV,oBACA,YAAY,YACV,uBACA;AAAA,QACV,cAAcA,QAAO,OAAO,eAAe,gBAAgB;AAAA,MAAA;AAAA,IAC7D;AAAA,KAEPA,SAAQ,OAAO,iBAAiBA,SAAQ,OAAO,qBAC9CkC,kBAAM;AAAA,MACJ,SAAS;AAAA,MACT,SAAS,CAAC,0BAA0B;AAAA,MACpC,cAAc;AAAA,MACd,YAAY,CAAC,OAAO,QAAQ,OAAO,MAAM;AAAA,MACzC,SAAS;AAAA;AAAA,QAEPlC,SAAQ,OAAO,oBAAoB;AAAA,UACjC;AAAA,UACA;AAAA;AAAA,YAEE,UAAU;AAAA;AAAA,YAEV,2BAA2B;AAAA;AAAA,YAE3B,MAAM;AAAA;AAAA,YAEN,SAAS;AAAA,YACT,GAAI,OAAOA,QAAO,MAAM,oBAAqB,WACzCA,QAAO,MAAM,mBACb,CAAA;AAAA,UAAC;AAAA,QACP;AAAA,QAEFA,SAAQ,OAAO,iBAAiB;AAAA,UAC9B;AAAA,UACAA,SAAQ,wBAAwB,CAAA;AAAA,QAAC;AAAA,MACnC,EACA,OAAO,OAAO;AAAA,IAAA,CACjB;AAAA,IACHmC,yBAAQ;AAAA,MACN,KAAKnC,SAAQ,OAAO;AAAA,MACpB,YAAYA,SAAQ,cAAc;AAAA,MAClC,aAAaA,SAAQ,eAAe;AAAA,MACpC,iBAAiBA,SAAQ,mBAAmB;AAAA,MAC5C;AAAA,MACA,UAAU,IAAI,GAAG,cAAc;AAAA,MAC/B,aAAa;AAAA,MACb,cAAcA,SAAQ,WAAW;AAAA,MACjC,WAAW;AAAA,QACT,oBAAoB;AAAA,MAAA;AAAA,IACtB,CACD;AAAA,IACD,MAAM,QAAQA,SAAQ,OAAO,OAAO,KAClCoC,YAAAA,qBAAqB;AAAA,MACnB,SAAS;AAAA,MACT,SAASpC,QAAO,MAAM;AAAA,IAAA,CACvB;AAAA,IACH,wBACEqC,eAAAA,sBAAsB;AAAA,MACpB,aAAa,WAAW,SAAS,cAAc,KAAK,WAAW,IAAI,KAAO;AAAA,MAC1E,GAAI,OAAOrC,SAAQ,QAAQ,kBAAmB,YAC1C,CAAA,IACAA,SAAQ,QAAQ;AAAA,IAAA,CACrB;AAAA,IACH,UACEsC,gBAAAA,QAAO;AAAA,MACL,UAAU,EAAC,YAAY,IAAO,QAAQ,GAAA;AAAA,MACtC,MAAM;AAAA,MACN,QAAQ;AAAA,QACN,UAAU,CAAC,OAAO,YAAY;AAC5B,gBAAM,OAAO,QAAQ;AAIrB,iBAHc,QAAQ,SAGR,aAEL,6BAA6B,KAAK,IAAI,IAGxC;AAAA,QACT;AAAA,QACA,sBAAsB;AAAA,MAAA;AAAA,IACxB,CACD;AAAA,EAAA,EACH,OAAO,OAAO,GAEV,cAActC,SAAQ,QAAQ,SAE9B,UAAU,MAAM,QAAQ,WAAW,IACrC,eAAe,OAAO,WAAW,IACjC,sBAAsBA,SAAQ,QAAQ,SAAS,cAAc,GAE3D,qBAAqBA,SAAQ,QAAQ,sBAAsB,IAE3D,iBAAiB,GADF,qBAAqB,YAAY,kBAChB,IAAI,qBAAqB,kBAAkB,QAAQ,GAAG,SAAS,IAC/F,iBAAiB,SAAS,SAAS;AAEzC,SAAO;AAAA,IACL,cAAc;AAAA,MACZ,SAAS;AAAA,MAET,UAAU,CAAC,IAAI,aAAa;AAE1B,YAAI,WAAW,SAAS,EAAE;AACxB,iBAAO;AAIT,YAAI,aAAa,GAAG,WAAW,GAAG,KAAK,GAAG,WAAW,GAAG,IAAI;AAC1D,gBAAM,SAASV,cAAAA,QAAK,QAAQA,cAAAA,QAAK,QAAQ,QAAQ,GAAG,EAAE;AAEtD,cAAI,aAAa,SAAS,MAAM;AAC9B,mBAAA,OAAO;AAAA,cACL,iEAA4DA,cAAAA,QAAK;AAAA,gBAC/D;AAAA,gBACA;AAAA,cAAA,CACD;AAAA,YAAA,GAGI;AAAA,QAEX;AAEA,cAAM,UAAU,GAAG,MAAM,GAAG,GAEtB,OAAO,QAAQ,CAAC,EAAG,WAAW,GAAG,IAAI,GAAG,QAAQ,CAAC,CAAC,IAAI,QAAQ,CAAC,CAAC,KAAK,QAAQ,CAAC;AAEpF,eAAI,CAAA,EAAA,QAAQ,SAAS,SAAS,IAAI;AAAA,MAKpC;AAAA,MAEA,OAAO,QAAQ;AAAA,QACb,CAAC,KAAK,UAAU,OAAO,OAAO,KAAK,EAAC,CAAC,MAAM,IAAI,GAAG,MAAM,QAAO;AAAA,QAC/D,CAAA;AAAA,MAAC;AAAA,MAGH,OAAO;AAAA,QACL,UAAU;AAAA,UACR,YAAY;AAAA,QAAA;AAAA,MACd;AAAA,MAGF;AAAA,MAEA,WAAW;AAAA,QACT,QAAQ;AAAA,QACR,yBAAyB;AAAA;AAAA;AAAA,QAGzB,mBAAmB,CAAC,IAAIiD,cAAc,GAAG,SAAS,MAAM,IAAI,KAAO,CAACA;AAAAA,QACpE,aAAa;AAAA,QACb,GAAGvC,SAAQ,QAAQ;AAAA,MAAA;AAAA,MAErB,4BAA4BA,SAAQ,QAAQ;AAAA,IAAA;AAAA,IAE9C,eAAe;AAAA,MACb;AAAA,MACA,SAAS;AAAA,MACT,KAAK;AAAA,MACL;AAAA,MACA,UAAU;AAAA,MACV;AAAA,MACA,SAAS;AAAA,MACT,WAAWA,SAAQ,aAAa;AAAA,MAChC,wBAAwB;AAAA,MACxB,uBAAuB;AAAA,MACvB,gBAAgB;AAAA,MAChB,GAAGA,SAAQ,QAAQ;AAAA,IAAA;AAAA,EACrB;AAEJ;AAEA,SAAS,cAAc,KAAkB,aAA8B;AACrE,SAAO,IAAI,eACP,eAAe,IAAI,eACnB,IAAI,mBACF,eAAe,IAAI,mBACnB;AACR;AC9SO,MAAM,aAAsC;AAAA,EACjD,MAAM,CAAC,KAAK,SAAS;AACnB,UAAM,gBAAgB,KAAK,QAAQ,OAAO,CAAC,MAAM,EAAE,KAAK,SAAS,aAAa,CAAC,GACzE,UAAU,KAAK,QAAQ,OAAO,CAAC,MAAM,CAAC,EAAE,KAAK,SAAS,aAAa,CAAC,GAEpE,cAAc,KAAK,OAAO,SAC5B,CAAC,aAAa,GAAG,KAAK,OAAO,IAAI,CAAC,MAAM,SAASF,eAAAA,QAAM,OAAO,CAAC,CAAC,EAAE,CAAC,IACnE,IAEE,eAAe,cAAc,SAC/B;AAAA,MACE;AAAA,MACA,GAAG,cAAc;AAAA,QAAI,CAAC,MACpB;AAAA,UACE;AAAA,UACA,GAAGA,eAAAA,QAAM,OAAO,EAAE,MAAM,CAAC,IAAIA,eAAAA,QAAM,KAAK,QAAG,CAAC,IAAIA,eAAAA,QAAM,OAAO,EAAE,MAAM,CAAC;AAAA,QAAA,EACtE,KAAK,EAAE;AAAA,MAAA;AAAA,IACX,IAEF,IAEE,eAAe,QAAQ,SACzB;AAAA,MACE;AAAA,MACA,GAAG,QAAQ;AAAA,QAAI,CAAC,MACd;AAAA,UACE;AAAA,UACA,GAAGA,eAAAA,QAAM,KAAKR,cAAAA,QAAK,KAAK,IAAI,IAAI,MAAM,EAAE,IAAI,CAAC,CAAC;AAAA,UAC9C,GAAGQ,eAAAA,QAAM,OAAO,EAAE,MAAM,CAAC,IAAIA,eAAAA,QAAM,KAAK,QAAG,CAAC,IAAIA,eAAAA,QAAM,OAAO,EAAE,MAAM,CAAC;AAAA,QAAA,EACtE,KAAK,EAAE;AAAA,MAAA;AAAA,IACX,IAEF,CAAA;AAEJ,WAAO;AAAA,MACL;AAAA,MACA,aAAaA,eAAAA,QAAM,OAAO,KAAK,MAAM,CAAC;AAAA,MACtC,GAAG;AAAA,MACH,GAAG;AAAA,MACH,GAAG;AAAA,IAAA,EACH,KAAK;AAAA,CAAI;AAAA,EACb;AAAA,EACA,MAAM,CAAC,KAAK,SACH,IAAIwB,KAAAA,WAAW,CAAC,aAAa;AAClC,gBAAY,KAAK,IAAI,EAClB,KAAK,CAAC,WAAW;AAChB,eAAS,KAAK,MAAM,GACpB,SAAS,SAAA;AAAA,IACX,CAAC,EACA,MAAM,CAAC,QAAQ,SAAS,MAAM,GAAG,CAAC;AAAA,EACvC,CAAC;AAAA,EAEH,UAAU,MAAM;AAAA,EAEhB;AAAA,EACA,OAAO,CAAC,MAAM,OAAO,QAAQ;AAC3B,YAAQ,MAAM,GAAG;AAAA,EACnB;AACF;AAEA,eAAe,YAAY,KAAmB,MAAkB;AAC9D,QAAM,EAAC,UAAU,OAAO,OAAA,IAAU,KAC5B,SAAShC,cAAAA,QAAK,SAAS,IAAI,KAAK,QAAQ,GAGxC,aAAa,iBAAiB;AAAA,IAClC,YAAY,CAAC,aAAa;AACxB,iBAAW,OAAO,UAAU;AAC1B,cAAM,OAAO,OAAO,IAAI,KAAK,CAAC,CAAC;AAE3B,YAAI,SAAS,0BAIb,KAAK,WAAW,yBAAyB,KAIzC,KAAK,WAAW,qCAAqC,MAIrD,IAAI,SAAS,SACf,OAAO,KAAK,GAAG,IAAI,IAAI,GAGrB,IAAI,SAAS,UACf,OAAO,KAAK,GAAG,IAAI,IAAI,GAGrB,IAAI,SAAS,WACf,OAAO,MAAM,GAAG,IAAI,IAAI;AAAA,MAE5B;AAAA,IACF;AAAA,EAAA,CACD;AAED,MAAI;AACF,UAAM,EAAC,cAAc,cAAA,IAAiB,oBAAoB,KAAK,IAAI,GAG7D,SAAS,MAAMkD,cAAO;AAAA,MAC1B,GAAG;AAAA,MACH,OAAO,SAAS;AACd,mBAAW,SAAS,KAAK;AAAA,UACvB,MAAM;AAAA,UACN,MAAM,QAAQ;AAAA,UACd,MAAM,CAAC,QAAQ,OAAO;AAAA,QAAA,CACvB;AAAA,MACH;AAAA,IAAA,CACD,GAIK,EAAC,OAAA,IAAU,MAAM,OAAO,SAAS,aAAa;AAEpD,eAAW,gBAAgB;AACrB,mBAAa,SAAS,UACxB,MAAM,KAAK;AAAA,QACT,MAAM;AAAA,QACN,MAAMlD,cAAAA,QAAK,QAAQ,QAAQ,aAAa,QAAQ;AAAA,MAAA,CACjD,IAED,MAAM,KAAK;AAAA,QACT,MAAM;AAAA,QACN,MAAMA,cAAAA,QAAK,QAAQ,QAAQ,aAAa,QAAQ;AAAA,MAAA,CACjD;AAKL,UAAM,OAAO,MAAM,aAAa,GAGhC,MAAM,OAAO,MAAA,GAGb,WAAW,QAAA;AAAA,EACb,SAAS,KAAK;AAEZ,UAAA,WAAW,WACL;AAAA,EACR;AACF;ACjJO,MAAM,kBAAoE;AAAA,EAC/E,MAAM,CAAC,KAAK,SACV,kCAAkC,KAAK,OAAO,KAAK,KAAK,CAAC,YACvD,KAAK,MACP;AAAA,SAAa,KAAK,QACf,IAAI,CAAC,MAAM,GAAGQ,eAAAA,QAAM,KAAKR,cAAAA,QAAK,KAAK,IAAI,IAAI,MAAM,EAAE,IAAI,CAAC,CAAC,KAAK,EAAE,MAAM,OAAO,EAAE,MAAM,EAAE,EACvF,KAAK;AAAA,QAAW,CAAC;AAAA,EACtB,MAAM,CAAC,KAAK,SAAS;AACnB,UAAM,EAAC,cAAc,cAAA,IAAiB,oBAAoB,KAAK,IAAI;AAEnE,WAAO,IAAIgC,KAAAA,WAAW,CAAC,aAAa;AAClC,YAAM,eAAmC;AAAA,QACvC,GAAG;AAAA,QACH,QAAQ;AAAA,MAAA,GAGJ,UAAUmB,OAAAA,MAAY,YAAY;AAExC,aAAA,QAAQ,GAAG,SAAS,CAAC,UAAU;AAC7B,iBAAS,KAAK,KAAK;AAAA,MACrB,CAAC,GAEM,MAAM;AACX,gBAAQ,MAAA;AAAA,MACV;AAAA,IACF,CAAC;AAAA,EACH;AAAA,EACA,UAAU,CAAC,KAAK,MAAM,UAAU;AAC9B,UAAM,EAAC,WAAU;AAEjB,QAAI,MAAM,SAAS,cAAc;AAC/B,aAAO;AAAA,QACL,kCAAkC,KAAK,OAAO,KAAK,KAAK,CAAC,YACvD,KAAK,MACP;AAAA,SAAa,KAAK,QACf,IAAI,CAAC,MAAM,GAAG3C,eAAAA,QAAM,KAAKR,cAAAA,QAAK,KAAK,IAAI,IAAI,MAAM,EAAE,IAAI,CAAC,CAAC,KAAK,EAAE,MAAM,OAAO,EAAE,MAAM,EAAE,EACvF,KAAK;AAAA,QAAW,CAAC;AAAA,MAAA,GAEtB,OAAO,IAAI,EAAE;AAEb;AAAA,IACF;AAEA,QAAI,MAAM,SAAS,kBAIf,MAAM,SAAS,SAIf,MAAM,SAAS,SAAS;AAC1B,aAAO,MAAM,MAAM,MAAM,KAAK;AAE9B;AAAA,IACF;AAAA,EAKF;AAAA,EACA,OAAO,CAAC,KAAK,OAAO,QAAQ;AAC1B,UAAM,EAAC,WAAU;AAEb,mBAAe,SACjB,OAAO,IAAI,GAAG;AAAA,EAElB;AACF,GCpEa,oBAAuC;AAAA,EAClD,aAAa;AAAA,EACb,YAAY;AAAA,EACZ,gBAAgB;AAClB,GAGa,oBAAuC;AAAA,EAClD,aAAa;AAAA,EACb,YAAY;AACd;ACYA,eAAsB,MAAM,SAOV;AAChB,QAAM;AAAA,IACJ;AAAA,IACA;AAAA,IACA,SAAS;AAAA,IACT,UAAU;AAAA,IACV,QAAQ;AAAA,IACR,QAAQ;AAAA,EAAA,IACN,SACE,SAAS,aAAa,KAAK,GAE3BU,UAAS,MAAM,WAAW,EAAC,KAAI,GAE/B,MAAM,MAAM,qBAAqB,EAAC,KAAK,QAAQ,OAAA,CAAO,GAEtD,WAAW,kBAAkBA,SAAQ,YAAY,iBAEjD,MAAM,MAAM,oBAAoB;AAAA,IACpC,QAAAA;AAAA,IACA;AAAA,IACA;AAAA,IACA;AAAA,IACA;AAAA,IACA;AAAA,IACA;AAAA,EAAA,CACD;AAEG,YACG,SACH,OAAO;AAAA,IACL,oCAAoCV,cAAAA,QAAK,SAAS,KAAK,IAAI,QAAQ,CAAC;AAAA,EAAA,GAGxE,MAAM+B,OAAAA,OAAO,IAAI,QAAQ;AAG3B,QAAM,aAAa,kBAAkB,GAAG;AAExC,aAAW,QAAQ,YAAY;AAC7B,UAAM,UAAU,kBAAkB,KAAK,IAAI,GACrC,WAAW,QAAQ,KAAK,KAAK,IAAI,GAEjC,UAAU,cAAc,UAAU,KAAK;AAE7C,QAAI;AACF,YAAM,SAAS,MAAM,QAAQ,KAAK,KAAK,IAAI,EAAE,UAAA;AAE7C,cAAQ,SAAA,GACR,IAAI,OAAO,OAEX,QAAQ,SAAS,KAAK,MAAM,MAAM;AAAA,IACpC,SAAS,KAAK;AAGZ,UAFA,QAAQ,SAEJ,eAAe,OAAO;AACxB,cAAM,SAAS,IAAI,OAAO,GAAG,GAAG,IAAI,GAAG;AAEvC,YAAI,OAAO,MAAM,IAAI,QAAQ,QAAQ,QAAQ,GAAG,CAAC,GACjD,IAAI,OAAO,IAAA;AAAA,MACb;AAEA,cAAQ,MAAM,KAAK,MAAM,GAAG,GAE5B,QAAQ,KAAK,CAAC;AAAA,IAChB;AAAA,EACF;AACF;ACpGO,SAAS,YAAY,MAAsB;AAChD,QAAM,QAAQjC,QAAAA,SAAS,IAAI;AAE3B,SAAOsD,qBAAAA,QAAY,MAAM,IAAI;AAC/B;ACCA,SAAS,YAAY,KAAa,UAAkB;AAClD,QAAM,IAAIpD,cAAAA,QAAK,QAAQ,KAAK,QAAQ,GAC9B,SAAS,WAAW,CAAC,GACrB,OAAO,SAAS,YAAY,CAAC,IAAI;AAEvC,SAAO,EAAC,QAAQ,KAAA;AAClB;AAEO,SAAS,iBAAiB,KAAyB;AACxD,QAAM,EAAC,KAAK,SAAAkB,UAAS,QAAQ,QAAO;AAEpC,MAAI,CAACA,SAAS;AAEd,SAAO,IAAI,GAAGV,eAAAA,QAAM,KAAK,IAAI,IAAI,CAAC,IAAIA,eAAAA,QAAM,MAAM,IAAI,OAAO,CAAC,EAAE;AAEhE,QAAM,OAAgC,CAAA;AAElC,MAAI,SACN,KAAK,OAAUA,eAAAA,QAAM,OAAO,IAAI,IAAI,IAGlC,IAAI,QACN,KAAK,MAAS,OAAO;AAAA,IACnB,OAAO,QAAQ,IAAI,GAAG,EAAE,IAAI,CAAC,CAAC,MAAM,IAAI,MAAM,CAACA,eAAAA,QAAM,KAAK,IAAI,GAAG,SAAS,IAAI,CAAC,CAAC;AAAA,EAAA;AAIpF,WAAS,SAAS,MAAc;AAC9B,UAAM,OAAO,YAAY,KAAK,IAAI;AAElC,WAAK,KAAK,OAIH,GAAGA,uBAAM,OAAO,IAAI,CAAC,IAAIA,uBAAM,KAAK,KAAK,IAAI,CAAC,KAH5C,GAAGA,eAAAA,QAAM,KAAK,IAAI,CAAC,IAAIA,eAAAA,QAAM,IAAI,gBAAgB,CAAC;AAAA,EAI7D;AAEA,OAAK,UAAa,OAAO;AAAA,IACvB,OAAO,QAAQU,QAAO,EACnB,OAAO,CAAC,CAAA,EAAG,KAAK,MAAM,MAAM,SAAS,EACrC,IAAI,CAAC,CAAC,YAAY,KAAK,MAAM;AAC5B,YAAM,MAAoC;AAAA,QACxC,QAAQ,SAAS,MAAM,MAAM;AAAA,QAC7B,SAAS;AAAA,QACT,SAAS;AAAA,QACT,MAAM;AAAA,QACN,QAAQ;AAAA,QACR,SAAS,SAAS,MAAM,OAAO;AAAA,MAAA;AAGjC,aAAI,MAAM,WACR,IAAI,UAAU,EAAC,QAAQ,SAAS,MAAM,QAAQ,MAAM,EAAA,GAEhD,MAAM,QAAQ,WAAQ,IAAI,QAAQ,SAAS,SAAS,MAAM,QAAQ,MAAM,IACxE,MAAM,QAAQ,YAAS,IAAI,QAAQ,UAAU,SAAS,MAAM,QAAQ,OAAO,MAE/E,OAAO,IAAI,SAGT,MAAM,UACR,IAAI,UAAU,SAAS,MAAM,OAAO,IAEpC,OAAO,IAAI,SAGT,MAAM,QACR,IAAI,OAAO,CAAA,GAEP,MAAM,KAAK,WAAQ,IAAI,KAAK,SAAS,SAAS,MAAM,KAAK,MAAM,IAC/D,MAAM,KAAK,WAAQ,IAAI,KAAK,SAAS,SAAS,MAAM,KAAK,MAAM,IAC/D,MAAM,KAAK,YAAS,IAAI,KAAK,UAAU,SAAS,MAAM,KAAK,OAAO,MAEtE,OAAO,IAAI,MAGT,MAAM,SACR,IAAI,SAAS,SAAS,MAAM,MAAM,IAElC,OAAO,IAAI,QAGN,CAACV,eAAAA,QAAM,KAAKR,cAAAA,QAAK,KAAK,IAAI,MAAM,UAAU,CAAC,GAAG,GAAG;AAAA,IAC1D,CAAC;AAAA,EAAA,GAGL,OAAO,IAAIqD,iBAAAA,QAAQ,OAAO,MAA6B,IAAM,EAAI,CAAC;AACpE;AChFA,eAAsB,MAAM,SAIV;AAChB,QAAM,EAAC,KAAK,SAAS,IAAO,UAAU,eAAA,IAAkB,SAClD,SAAS,aAAA,GACT,UAAU,cAAc,EAAE;AAChC,MAAI;AACF,UAAM3C,UAAS,MAAM,WAAW,EAAC,IAAA,CAAI,GAC/B,MAAM,MAAM,qBAAqB,EAAC,KAAK,QAAQ,OAAA,CAAO,GACtD,WAAW,kBAAkBA,SAAQ,YAAY,iBACjD,MAAM,MAAM,oBAAoB,EAAC,QAAAA,SAAQ,KAAK,QAAQ,KAAK,QAAQ,UAAS;AAIlF,QAFA,iBAAiB,GAAG,GAEhB,QAAQ;AACV,YAAM,eAAyB,CAAA;AAG/B,iBAAW,CAAA,EAAG,GAAG,KAAK,OAAO,QAAQ,IAAI,WAAW,EAAE;AAChD,YAAI,UAAU,CAAC,WAAWV,cAAAA,QAAK,QAAQ,KAAK,IAAI,MAAM,CAAC,KACzD,aAAa,KAAK,IAAI,MAAM,GAG1B,IAAI,WAAW,CAAC,WAAWA,sBAAK,QAAQ,KAAK,IAAI,OAAO,CAAC,KAC3D,aAAa,KAAK,IAAI,OAAO,GAG3B,IAAI,UAAU,CAAC,WAAWA,cAAAA,QAAK,QAAQ,KAAK,IAAI,MAAM,CAAC,KACzD,aAAa,KAAK,IAAI,MAAM;AAI5B,UAAI,IAAI,SAAS,CAAC,WAAWA,cAAAA,QAAK,QAAQ,KAAK,IAAI,IAAI,KAAK,CAAC,KAC/D,aAAa,KAAK,IAAI,IAAI,KAAK,GAG7B,aAAa,WACf,OAAO,MAAM,kBAAkB,aAAa,KAAK,IAAI,CAAC,EAAE,GACxD,QAAQ,KAAK,CAAC;AAIhB,YAAM,cAAqD;AAAA,QACzD,SAAS,CAAA;AAAA,QACT,QAAQ,CAAA;AAAA,MAAC;AAGX,iBAAW,OAAO,OAAO,OAAO,IAAI,WAAW,EAAE;AAC1C,YAAI,cACL,IAAI,WAAS,YAAY,QAAQ,KAAK,IAAI,OAAO,GACjD,IAAI,UAAQ,YAAY,OAAO,KAAK,IAAI,MAAM;AAGpD,YAAM,WAAW;AAAA,QACf,GAAG,OAAO,KAAK,IAAI,gBAAgB,CAAA,CAAE;AAAA,QACrC,GAAG,OAAO,KAAK,IAAI,mBAAmB,CAAA,CAAE;AAAA,MAAA,GAGpC,aAAa,iBAAA;AAEf,kBAAY,OAAO,UACrB,aAAa,YAAY,QAAQ,EAAC,KAAK,UAAU,QAAQ,OAAO,OAAA,CAAO,GAGrE,YAAY,QAAQ,UACtB,aAAa,YAAY,SAAS,EAAC,KAAK,UAAU,QAAQ,OAAO,OAAA,CAAO,GAG1E,WAAW,QAAA;AAAA,IACb;AAEI,QAAI,QAAQ,cAAc,IAAI,QAAQ,SAAS,YAAY,MAC7D,MAAM,6BAA6B,GAAG,GAGxC,QAAQ,SAAA;AAAA,EACV,SAAS,KAAK;AAGZ,QAFA,QAAQ,SAEJ,eAAe,OAAO;AACxB,YAAM,SAAS,IAAI,OAAO,GAAG,GAAG,IAAI,GAAG;AAEvC,aAAO,MAAM,IAAI,QAAQ,QAAQ,QAAQ,GAAG,CAAC,GAC7C,OAAO,IAAA;AAAA,IACT;AAEA,YAAQ,KAAK,CAAC;AAAA,EAChB;AACF;AAEA,eAAe,aACb,aACA,SACA;AACA,QAAM,EAAC,OAAAsD,OAAA,IAAS,MAAM,OAAO,SAAS,GAChC,EAAC,KAAK,UAAU,QAAQ,WAAU,SAElC,OAAO,YACV,IAAI,CAAC,OAAQ,SAAS,WAAW,EAAE,QAAQ,YAAY,EAAE,KAAM,EAC/D,KAAK;AAAA,CAAI;AAEZ,MAAI;AACF,UAAM,gBAAgB,MAAMA,OAAM;AAAA,MAChC,QAAQ;AAAA,MACR;AAAA,MACA;AAAA,MACA,UAAU;AAAA;AAAA,MAEV,SAAS;AAAA,MACT,UAAU;AAAA;AAAA,MAEV,QAAQ,EAAC,QAAQ,QAAA;AAAA,MACjB,OAAO;AAAA,QACL,UAAU;AAAA,QACV,QAAQ;AAAA,QACR,YAAY;AAAA,MAAA;AAAA,IACd,CACD;AAED,QAAI,cAAc,OAAO,SAAS,GAAG;AACnC,iBAAW,OAAO,cAAc;AAC9B,4BAAoB,OAAO,MAAM,GAAG,GAEpC,OAAO,IAAA;AAGT,cAAQ,KAAK,CAAC;AAAA,IAChB;AAEA,UAAM,kBAAkB,cAAc,SAAS,OAAO,CAAC,QAAQ;AAC7D,OAAE,IAAI,UAAU,IAAI,MAAM,SAAS,8CAA8C;AAAA,IACnF,CAAC;AAED,eAAW,OAAO;AAChB,0BAAoB,OAAO,MAAM,GAAG,GAEpC,OAAO,IAAA;AAAA,EAEX,SAAS,KAAK;AACZ,QAAI,iBAAiB,GAAG,GAAG;AACzB,YAAM,EAAC,WAAU;AAEjB,iBAAW,OAAO;AAChB,4BAAoB,OAAO,OAAO,GAAG,GAErC,OAAO,IAAA;AAAA,IAEX,MAAW,gBAAe,SACxB,OAAO,MAAM,IAAI,SAAS,IAAI,OAAO,GAErC,OAAO,IAAA,MAEP,OAAO,MAAM,GAAG,GAAG,EAAE,GAErB,OAAO;AAGT,YAAQ,KAAK,CAAC;AAAA,EAChB;AACF;AAEA,SAAS,oBAAoB,KAAmC,KAAc;AACxE,MAAI,WACN;AAAA,IACE;AAAA,MACE,GAAG,IAAI,UAAU,IAAI,IAAI;AAAA;AAAA,MACzB,GAAG,IAAI,SAAS,IAAI,MAAM,IAAI,SAAS,QAAQ;AAAA;AAAA,MAC/C,QAAQ,IAAI,SAAS,IAAI,IAAI,IAAI,SAAS,IAAI,IAAI,IAAI,SAAS,MAAM;AAAA,IAAA,EACrE,KAAK,EAAE;AAAA,EAAA,IAGX,IAAI,IAAI,UAAU,IAAI,IAAI;AAE9B;AAEA,SAAS,iBAAiB,KAAmC;AAC3D,SACE,eAAe,SACf,YAAY,OACZ,MAAM,QAAQ,IAAI,MAAM,KACxB,IAAI,OAAO,MAAM,gBAAgB,KACjC,cAAc,OACd,MAAM,QAAQ,IAAI,QAAQ,KAC1B,IAAI,SAAS,MAAM,gBAAgB;AAEvC;AAEA,SAAS,iBAAiB,KAA8B;AACtD,SACE,OAAO,OAAQ,YACf,QAAQ,QACR,UAAU,OACV,OAAO,IAAI,QAAS,YACpB,cAAc,QACb,IAAI,aAAa,QAAQ,OAAO,IAAI,YAAa;AAEtD;AAEA,eAAe,6BAA6B,KAAmB;AAC7D,QAAM;AAAA,IACJ,EAAC,WAAW,gBAAA;AAAA,IACZ,EAAC,0BAAAC,0BAAA;AAAA,IACD,EAAC,mBAAAC,mBAAA;AAAA,IACD,EAAC,0BAAAC,0BAAA;AAAA,IACD,EAAC,sBAAAC,sBAAA;AAAA,EAAoB,IACnB,MAAM,QAAQ,IAAI;AAAA,IACpB,OAAO,0BAA0B;AAAA,IACjC,QAAA,QAAA,EAAA,KAAA,WAAA;AAAA,aAAA;AAAA,IAAA,CAAA;AAAA,IACA,QAAA,QAAA,EAAA,KAAA,WAAA;AAAA,aAAA;AAAA,IAAA,CAAA;AAAA,IACA,QAAA,QAAA,EAAA,KAAA,WAAA;AAAA,aAAA;AAAA,IAAA,CAAA;AAAA,IACA,QAAA,QAAA,EAAA,KAAA,WAAA;AAAA,aAAA;AAAA,IAAA,CAAA;AAAA,EAA+B,CAChC,GAEK,aAAa,IAAI,QAAQ,SAAS,cAAc,CAAA,GAChD,kBAAkB,IAAI,iBACtB,WAAW,IAAI,UACf,SAAS,IAAI,GAAG,QAAQ,QAAQ,QAChC,QAAQ,IAAI,QAAQ,SAAS,SAAS,CAAA;AAE5C,MAAI,CAAC;AACH,UAAM,IAAI,MAAM,mDAAmD;AAGrE,aAAW,OAAO,OAAO,OAAO,IAAI,WAAW,CAAA,CAAE,GAAG;AAClD,QAAI,CAAC,IAAI,aAAa,CAAC,IAAI,QAAQ,SAAS,KAAK,EAAG;AACpD,UAAM,UAAU,IAAI,QAAQ,QAAQ,SAAS,OAAO,GAC9C,aAAa1D,cAAAA,QAAK,QAAQ,IAAI,KAAK,OAAO,GAE1C,kBAAkB,MAAMwD,mBAAkB;AAAA,MAC9C;AAAA,IAAA,CACD,GACK,kBAAkB,gBAAgB,QAAQ;AAAA,MAC9C,cAAcD,0BAAyB;AAAA,QACrC;AAAA,QACA;AAAA,QACA;AAAA,QACA,UAAUvD,cAAAA,QAAK,SAAS,QAAQ,OAAO;AAAA,QACvC,UAAUyD,0BAAyB,EAAC,OAAM;AAAA,QAC1C,eAAe,IAAI;AAAA,QACnB,wBAAwB;AAAA,QACxB,UAAU,IAAI,GAAG;AAAA,QACjB,cAAczD,cAAAA,QAAK,QAAQ,IAAI,KAAK,IAAI,GAAG,cAAc,eAAe;AAAA,QACxE,kBAAkB;AAAA,MAAA,CACnB;AAAA,MACD,sBAAsB;AAAA,MACtB;AAAA,MACA,qBAAqBA,cAAAA,QAAK,QAAQ,IAAI,KAAK,cAAc;AAAA,IAAA,CAC1D,GACK,WAA+B,CAAA;AAErC,cAAU,OAAO,iBAAiB;AAAA;AAAA,MAEhC,YAAY;AAAA;AAAA,MAEZ,qBAAqB;AAAA;AAAA,MAErB,gBAAgB,SAA2B;AACzC,iBAAS,KAAK,OAAO,GACrB,QAAQ,UAAU;AAAA,MACpB;AAAA,IAAA,CACD,GAED0D,sBAAqB,KAAK,QAAQ;AAAA,EACpC;AACF;ACrRO,SAAS,aAA+C,eAAqB;AAClF,SAAO;AACT;ACFO,SAAS,qBAAwB,QAAoD;AAC1F,SAAO;AACT;ACEA,MAAM,eAAe;AAAA,EACnB,QAAQ;AACV;AAGA,eAAsB,mBAAmB,SAKvB;AAChB,QAAM,EAAC,KAAK,QAAQ,aAAa,UAAU,mBAAA,IAAsB,SAE3D,WACJ,OAAO,sBAAuB,aAC1B,MAAM,mBAAmB,EAAC,KAAK,QAAQ,YAAA,CAAY,IACnD;AAEN,SAAO,IAAI,yBAAyBC,KAAAA,SAAS,KAAK,WAAW,CAAC;AAE9D,QAAM,kBAA0C,CAAA;AAEhD,aAAW,kBAAkB,SAAS,SAAS;AAC7C,UAAM,mBAAmB,eAAe,UAElC,MAAM,MAAMC,iBAAAA;AAAAA,MAChB;AAAA,QACE,MAAM,aAAa,eAAe,IAAI;AAAA,QACtC,MAAM,eAAe;AAAA,QACrB,SAAS,eAAe;AAAA,QACxB,UAAU,mBAAmB,CAAC,SAAS,iBAAiB,IAAI,IAAI;AAAA,QAChE,SACE,OAAO,eAAe,WAAY,aAC9B,eAAe,QAAQ,eAAe,IACtC,eAAe;AAAA,MAAA;AAAA,MAEvB,EAAC,UAAU,MAAM,QAAQ,KAAK,CAAC,EAAA;AAAA,IAAC;AAGlC,oBAAgB,eAAe,IAAI,IAAI,eAAe,QAClD,eAAe,MAAM,IAAI,eAAe,IAAI,CAAC,IAC7C,IAAI,eAAe,IAAI;AAAA,EAC7B;AAEA,QAAM,WAAoC,CAAA;AAE1C,aAAW,mBAAmB,SAAS,UAAU;AAC/C,UAAM,MAAM,gBAAgB,WACxB,MAAMA,iBAAAA;AAAAA,MACJ;AAAA,QACE,MAAM;AAAA,QACN,MAAM;AAAA,QACN,SAAS,OAAO,gBAAgB,IAAI;AAAA,QACpC,SAAS,gBAAgB;AAAA,MAAA;AAAA,MAE3B,EAAC,UAAU,MAAM,QAAQ,KAAK,CAAC,EAAA;AAAA,IAAC,IAElC;AAEJ,aAAS,gBAAgB,IAAI,IAAI,KAAK,WAAW,CAAC,gBAAgB;AAAA,EACpE;AAEA,QAAM,QAAQ,MAAM,SAAS,SAAS,iBAAiB,QAAQ;AAE/D,QAAM,KAAK,CAAC,GAAG,MACN,EAAE,KAAK,cAAc,EAAE,IAAI,CACnC;AAED,aAAW,QAAQ,OAAO;AACxB,UAAM,WAAWC,KAAAA,QAAQ,aAAa,KAAK,IAAI;AAE/C,UAAM/B,cAAOgC,KAAAA,QAAQ,QAAQ,CAAC,GAC9B,MAAMC,aAAU,UAAU,KAAK,SAAS,SAAS;AAAA,CAAI,GAErD,OAAO,QAAQ,SAASJ,KAAAA,SAAS,KAAK,QAAQ,CAAC,EAAE;AAAA,EACnD;AACF;ACjFA,eAAsB,iBAAiB,SAAmC;AACxE,UAAQ,MAAMK,GAAAA,QAAQ,OAAO,GAAG,WAAW;AAC7C;ACJA,MAAM,sBAAsB;AAAA,EAC1B,WAAW;AAAA,EACX,UAAU;AAAA,EACV,SAAS;AACX,GAAG,QAAQ;AAAA,EACT,OAAO,CAAC,SAAS;AAAA,EACjB,SAAS;AAAA,IACP,YAAY;AAAA,IACZ,aAAa;AAAA,EACjB;AACA,GAAG,OAAO;AAAA,EACR,OAAO,CAAC,OAAO;AAAA,EACf,SAAS;AAAA,IACP,aAAa;AAAA,EACjB;AACA,GAAG,SAAS;AAAA,EACV,GAAG;AAAA,EACH,YAAY;AAAA,EACZ,MAAM;AAAA,EACN,aAAa;AAAA,EACb,YAAY;AAAA,EACZ,gBAAgB;AAAA,EAChB,SAAS,CAAC,6BAA6B;AAAA,EACvC,WAAW,CAAC,OAAO,IAAI;AACzB,GCZM,UAAU,mEAEH,kBAA+B,OAAO,EAAC,KAAK,QAAQ,kBAAiB;AAChF,QAAM,YAAY,iBAAiB,GAAG;AAEtC,SAAO;AAAA,IACL,SAAS;AAAA,MAC6C;AAAA,QAClD,MAAM;AAAA,QACN,MAAM;AAAA,QACN,aAAa;AAAA,QACb,UAAU,CAAC,MAAM;AACf,cAAI,CAAC,EAAG,QAAO;AAEf,cAAI;AACF,mBAAAC,qBAAAA,QAAY,CAAC,GAEN;AAAA,UACT,QAAQ;AACN,mBAAO;AAAA,UACT;AAAA,QACF;AAAA,QACA,OAAO,CAAC,MAAM;AACZ,cAAI,CAAC,EAAG,QAAO;AAEf,gBAAM,SAASA,qBAAAA,QAAY,CAAC;AAE5B,iBAAO,EAAC,QAAQ,OAAO,QAAQ,OAAO,OAAO,OAAO,MAAM,OAAO,KAAA;AAAA,QACnE;AAAA,MAAA;AAAA,MAEmB;AAAA,QACnB,MAAM;AAAA,QACN,MAAM;AAAA,QACN,aAAa;AAAA,QACb,SAAS,CAAC,YAAY,QAAQ,MAAS,QAAQ;AAAA,QAC/C,UAAU,CAAC,MACJ,IAES,QAAQ,KAAK,CAAC,IAMrB,KAHE,yBALM;AAAA,QAUjB,OAAO,CAAC,MAAM;AACZ,cAAI,CAAC;AACH,kBAAM,IAAI,MAAM,0BAA0B;AAK5C,cAAI,CAFU,QAAQ,KAAK,CAAC;AAG1B,kBAAM,IAAI,MAAM,sBAAsB;AAGxC,gBAAM,CAAC,OAAO,IAAI,IAAI,EAAE,MAAM,GAAG;AAEjC,iBAAO,EAAC,OAAO,MAAM,UAAU,EAAA;AAAA,QACjC;AAAA,MAAA;AAAA,MAEmB;AAAA,QACnB,MAAM;AAAA,QACN,MAAM;AAAA,QACN,aAAa;AAAA,MAAA;AAAA,MAEM;AAAA,QACnB,MAAM;AAAA,QACN,MAAM;AAAA,QACN,aAAa;AAAA,QACb,SAAS,UAAU;AAAA,MAAA;AAAA,MAEA;AAAA,QACnB,MAAM;AAAA,QACN,MAAM;AAAA,QACN,aAAa;AAAA,QACb,SAAS,UAAU;AAAA,MAAA;AAAA,MAEA;AAAA,QACnB,MAAM;AAAA,QACN,MAAM;AAAA,QACN,aAAa;AAAA,QACb,SAAS;AAAA,QACT,UAAU,CAAC,MACJ,IAEE,KAFQ;AAAA,MAAA;AAAA,IAIlB;AAAA,IAGH,UAAU;AAAA,MACR;AAAA,QACE,MAAM;AAAA,QACN,UAAU;AAAA,QACV,SAAS;AAAA,MAAA;AAAA,MAEX;AAAA,QACE,MAAM;AAAA,QACN,UAAU;AAAA,QACV,SAAS;AAAA,MAAA;AAAA,MAEX;AAAA,QACE,MAAM;AAAA,QACN,UAAU;AAAA,QACV,SAAS;AAAA,MAAA;AAAA,IACX;AAAA,IAGF,MAAM,SAAS,SAAS,UAAU;AAChC,YAAM,EAAC,SAAS,SAAQ,SAClB,EAAC,UAAU,KAAA,IAAQ,SAEnB,SACJ,CAAC,QAAQ,YAAe,QAAQ,eAAkB,IAAI,QAAQ,WAAc,GAAG,EAC5E,OAAO,OAAO,EACd,KAAK,GAAG,KAAK,QAEZ,UAGF;AAAA,QACF;AAAA,QACA,SAAW;AAAA,QACX,aAAe,QAAQ,eAAkB;AAAA,QACzC,UAAY,CAAA;AAAA,QACZ,UAAY;AAAA,QACZ,MAAQ;AAAA,QACR,YAAc;AAAA,QACd,SAAW,QAAQ;AAAA,QACnB;AAAA,QACA,aAAe;AAAA,QACf,MAAQ;AAAA,QACR,SAAW;AAAA,UACT,KAAK;AAAA,YACH,QAAQ,SAAS,aAAgB,mBAAmB;AAAA,YACpD,SAAS;AAAA,YACT,SAAS;AAAA,UAAA;AAAA,UAEX,kBAAkB;AAAA,QAAA;AAAA,QAEpB,MAAQ;AAAA,QACR,QAAU;AAAA,QACV,OAAS;AAAA,QACT,OAAS,CAAC,QAAQ,KAAK;AAAA,QACvB,SAAW;AAAA,UACT,OAAO;AAAA,UACP,QAAQ,SAAS,WAAc,gDAAgD;AAAA,QAAA;AAAA,QAEjF,eAAe,SAAS,WACpB;AAAA,UACE,KAAK,CAAC,2CAA2C;AAAA,QAAA,IAEnD;AAAA,QACJ,cAAgB;AAAA,QAChB,UAAY,SAAS,WAAc,4BAA4B;AAAA,QAC/D,cAAgB,CAAA;AAAA,QAChB,iBAAmB;AAAA,UACjB,qBAAqB;AAAA,UACrB,2BAA2B,SAAS,WAAc,OAAO;AAAA,UACzD,oCAAoC;AAAA,UACpC,6BAA6B;AAAA,UAC7B,QAAU;AAAA,UACV,0BAA0B;AAAA,UAC1B,wBAAwB;AAAA,UACxB,0BAA0B;AAAA,UAC1B,oCAAoC;AAAA,UACpC,eAAe;AAAA,UACf,UAAY,SAAS,WAAc,OAAO;AAAA,UAC1C,YAAc;AAAA,QAAA;AAAA,QAEhB,SAAW;AAAA,UACT,MAAM;AAAA,QAAA;AAAA,MACR,GAGI,QAA2B,CAAA;AAsDjC,UAnDA,MAAM,KAAK;AAAA,QACT,MAAM;AAAA,QACN,UAAUC,QAAAA;AAAAA;AAAAA;AAAAA;AAAAA;AAAAA;AAAAA;AAAAA;AAAAA;AAAAA;AAAAA;AAAAA,MAAA,CAWX,GAGD,MAAM,KAAK;AAAA,QACT,MAAM;AAAA,QACN,UAAUA,QAAAA;AAAAA;AAAAA;AAAAA;AAAAA;AAAAA;AAAAA;AAAAA;AAAAA;AAAAA;AAAAA,MAAA,CAUX,GAEG,SAAS,YACX,MAAM,KAAK;AAAA,QACT,MAAM;AAAA,QACN,UAAUA,QAAAA;AAAAA;AAAAA;AAAAA;AAAAA,MAAA,CAIX,GAGC,SACF,QAAQ,aAAa;AAAA,QACnB,MAAM;AAAA,QACN,KAAK,iBAAiB,KAAK,MAAM,IAAI,KAAK,KAAK,IAAI,KAAK,IAAI;AAAA,MAAA,GAE9D,QAAQ,OAAO;AAAA,QACb,KAAK,WAAW,KAAK,MAAM,IAAI,KAAK,KAAK,IAAI,KAAK,IAAI;AAAA,MAAA,GAExD,QAAQ,WAAW,WAAW,KAAK,MAAM,IAAI,KAAK,KAAK,IAAI,KAAK,IAAI,YAGlE,SAAS,YAAe;AAC1B,gBAAQ,QAAQ,qBAEhB,QAAQ,UAAU;AAAA,UAChB,GAAG,QAAQ;AAAA,UACV,YAAa;AAAA,QAAA;AAGhB,cAAM,kBAAkB,QAAQ;AAE5B,iBAAS,eAAe,MAC1B,gBAAgB,aAAgB;AAAA,MAEpC;AAEA,UAAI,SAAS,QAAW;AACtB,cAAM,eAAoB;AAAA,UACxB,MAAM;AAAA,UACN,KAAK;AAAA,YACH,SAAS;AAAA,YACT,KAAK;AAAA,YACL,MAAM;AAAA,UAAA;AAAA,UAER,SAAS;AAAA,YACP;AAAA,YACA,SAAS,WAAc,gCAAgC;AAAA,UAAA,EACvD,OAAO,OAAO;AAAA,UAChB,eAAe;AAAA,YACb,aAAa;AAAA,YACb,YAAY;AAAA,UAAA;AAAA,UAEd,SAAS;AAAA,YACP;AAAA,YACA;AAAA,YACA,SAAS,WAAc,aAAa;AAAA,UAAA,EACpC,OAAO,OAAO;AAAA,UAChB,OAAO;AAAA,YACL,cAAc;AAAA,YACd,aAAa;AAAA,YACb,uBAAuB,CAAC,QAAQ,EAAC,UAAU,SAAS,OAAO,CAAC,QAAQ,OAAO,GAAE;AAAA,YAC7E,eAAe,CAAC,QAAQ,sBAAsB;AAAA,YAC9C,8BAA8B;AAAA,YAC9B,8BAA8B;AAAA,YAC9B,QAAU,CAAC,QAAQ,QAAQ;AAAA,UAAA;AAAA,QAC7B;AA0BF,YAvBA,MAAM,KAAK;AAAA,UACT,MAAM;AAAA,UACN,UAAUA,QAAAA;AAAAA;AAAAA;AAAAA,QAAA,CAGX,GAED,QAAQ,UAAU;AAAA,UAChB,GAAG,QAAQ;AAAA,UACX,MAAM,SAAS,aACX,qCACA;AAAA,QAAA,GAGN,QAAQ,kBAAkB;AAAA,UACxB,GAAG,QAAQ;AAAA,UACX,QAAU;AAAA,UACV,0BAA0B,SAAS,WAAc,OAAO;AAAA,UACxD,wBAAwB;AAAA,UACxB,0BAA0B,SAAS,WAAc,OAAO;AAAA,UACxD,oCAAoC;AAAA,QAAA,GAGlC,SAAS,YAAe;AAC1B,kBAAQ,kBAAkB;AAAA,YACxB,GAAG,QAAQ;AAAA,YACX,oCAAoC;AAAA,YACpC,6BAA6B;AAAA,UAAA;AAG/B,gBAAM,uBAA4B;AAAA,YAChC,OAAO,CAAC,WAAW,UAAU;AAAA,YAC7B,QAAQ;AAAA,YACR,eAAe;AAAA,cACb,SAAS,CAAC,iBAAiB;AAAA,YAAA;AAAA,YAE7B,SAAS;AAAA,cACP;AAAA,cACA,SAAS,WAAc,gCAAgC;AAAA,cACvD;AAAA,cACA;AAAA,YAAA,EACA,OAAO,OAAO;AAAA,YAChB,SAAS;AAAA,cACP;AAAA,cACA;AAAA,cACA;AAAA,cACA,SAAS,WAAc,aAAa;AAAA,YAAA,EACpC,OAAO,OAAO;AAAA,YAChB,OAAO;AAAA,cACL,qDAAqD;AAAA,cACrD,4CAA4C;AAAA,cAC5C,6CAA6C;AAAA,cAC7C,yCAAyC;AAAA,YAAA;AAAA,UAC3C;AAGF,uBAAa,YAAY,CAAC,oBAAoB;AAAA,QAChD;AAEA,cAAM,KAAK;AAAA,UACT,MAAM;AAAA,UACN,UAAU,MAAM;AAAA,YACdL,KAAAA,QAAQ,aAAa,eAAe;AAAA,YACpCK,QAAAA;AAAAA;AAAAA;AAAAA;AAAAA,+BAImB,KAAK,UAAU,cAAc,MAAM,CAAC,CAAC;AAAA;AAAA,YAExDC;AAAAA,UAAA;AAAA,QACF,CACD;AAAA,MACH;AAEI,eAAS,eACX,MAAM,KAAK;AAAA,QACT,MAAM;AAAA,QACN,UAAU,MAAM;AAAA,UACdN,KAAAA,QAAQ,aAAa,wBAAwB;AAAA,UAC7CK,QAAAA;AAAAA;AAAAA;AAAAA;AAAAA;AAAAA;AAAAA;AAAAA;AAAAA;AAAAA,UASAC;AAAAA,QAAA;AAAA,MACF,CACD,GAED,MAAM,KAAK;AAAA,QACT,MAAM;AAAA,QACN,UAAU,MAAM;AAAA,UACdN,KAAAA,QAAQ,aAAa,oBAAoB;AAAA,UACzCK,QAAAA;AAAAA;AAAAA;AAAAA;AAAAA;AAAAA;AAAAA;AAAAA,UAOAC;AAAAA,QAAA;AAAA,MACF,CACD,GAED,MAAM,KAAK;AAAA,QACT,MAAM;AAAA,QACN,UAAU,MAAM;AAAA,UACdN,KAAAA,QAAQ,aAAa,eAAe;AAAA,UACpCK,QAAAA;AAAAA;AAAAA;AAAAA;AAAAA;AAAAA;AAAAA;AAAAA,UAOAC;AAAAA,QAAA;AAAA,MACF,CACD,IAIC,SAAS,cACX,MAAM,KAAK;AAAA,QACT,MAAM;AAAA,QACN,UAAU,MAAM;AAAA,UACdN,KAAAA,QAAQ,aAAa,mBAAmB;AAAA,UACxCK,QAAAA;AAAAA;AAAAA;AAAAA;AAAAA;AAAAA;AAAAA;AAAAA;AAAAA;AAAAA,UASAC;AAAAA,QAAA;AAAA,MACF,CACD,GAED,MAAM,KAAK;AAAA,QACT,MAAM;AAAA,QACN,UAAU,MAAM;AAAA,UACdN,KAAAA,QAAQ,aAAa,cAAc;AAAA,UACnCK,QAAAA;AAAAA;AAAAA;AAAAA;AAAAA;AAAAA;AAAAA,UAMAC;AAAAA,QAAA;AAAA,MACF,CACD,MAED,MAAM,KAAK;AAAA,QACT,MAAM;AAAA,QACN,UAAU,MAAM;AAAA,UACdN,KAAAA,QAAQ,aAAa,mBAAmB;AAAA,UACxCK,QAAAA;AAAAA;AAAAA;AAAAA;AAAAA;AAAAA;AAAAA;AAAAA;AAAAA;AAAAA;AAAAA;AAAAA;AAAAA,UAYAC;AAAAA,QAAA;AAAA,MACF,CACD,GAED,MAAM,KAAK;AAAA,QACT,MAAM;AAAA,QACN,UAAU,MAAM;AAAA,UACdN,KAAAA,QAAQ,aAAa,cAAc;AAAA,UACnCK,QAAAA;AAAAA;AAAAA;AAAAA;AAAAA;AAAAA;AAAAA,UAMAC;AAAAA,QAAA;AAAA,MACF,CACD;AAIH,UAAI;AACF,gBAAQ,eAAe,MAAM,kBAAkB,QAAQ,gBAAgB,CAAA,CAAE;AAAA,MAC3E,SAAS,OAAO;AACd,eAAO,KAAK,iBAAiB,QAAQ,MAAM,UAAU,KAAK;AAAA,MAC5D;AAGA,UAAI;AACF,gBAAQ,kBAAkB,MAAM,kBAAkB,QAAQ,mBAAmB,CAAA,CAAE;AAAA,MACjF,SAAS,OAAO;AACd,eAAO,KAAK,iBAAiB,QAAQ,MAAM,UAAU,KAAK;AAAA,MAC5D;AAEA,aAAA,MAAM,KAAK;AAAA,QACT,MAAM;AAAA,QACN,UAAU,MAAM;AAAA,UACdN,KAAAA,QAAQ,aAAa,cAAc;AAAA,UACnC,KAAK,UAAU,SAAS,MAAM,CAAC;AAAA,UAC/BM;AAAAA,QAAA;AAAA,MACF,CACD,GAEM;AAAA,IACT;AAAA,EAAA;AAEJ;AAEA,SAAS,eACP,UACA,OACA,iBACA;AACA,SAAOC,SAAAA,OAAO,OAAO,EAAC,GAAG,iBAAiB,SAAS,CAAA,GAAI,UAAS;AAClE;AAEA,eAAe,kBAAkB,MAA0C;AACzE,QAAM,cAAc,OAAO,QAAQ,IAAI,GACjC,aAAqC,CAAA;AAE3C,aAAW,SAAS,aAAa;AAC/B,UAAM,CAAC,MAAM,OAAO,IAAI;AAExB,QAAI,SAAS;AACX,YAAM,gBAAgB,MAAMC,kCAAiB,MAAM,OAAO;AAE1D,iBAAW,IAAI,IAAI,gBAAgB,IAAI,aAAa,KAAK;AAAA,IAC3D;AAAA,EACF;AAEA,SAAO;AACT;AAEA,SAAS,iBAAiB,KAAoE;AAC5F,MAAI,MACA;AAEJ,MAAI;AACF,WAAOC,mBAAAA,SAAS,wBAAwB,EAAC,UAAU,QAAQ,IAAA,CAAI,EAAE,KAAA,KAAU,QAC3E,QAAQA,mBAAAA,SAAS,yBAAyB,EAAC,UAAU,QAAQ,KAAI,EAAE,KAAA,KAAU;AAAA,EAC/E,QAAQ;AAAA,EAER;AAEA,SAAO,EAAC,MAAM,MAAA;AAChB;ACxhBA,eAAsB,KAAK,SAAqD;AAC9E,MAAI,CAAC,QAAQ;AACX,UAAM,IAAI,MAAM,8BAA8B;AAGhD,MAAI,CAAC,QAAQ;AACX,UAAM,IAAI,MAAM,+BAA+B;AAGjD,QAAM,SAAS,gBAET,cAAcT,KAAAA,QAAQ,QAAQ,KAAK,QAAQ,IAAI;AAErD,QAAM,kBAAkB,WAAW,GAEnC,MAAM,mBAAmB;AAAA,IACvB,KAAK,QAAQ;AAAA,IACb;AAAA,IACA,UAAU;AAAA,IACV;AAAA,EAAA,CACD;AACH;AAEA,eAAe,kBAAkB,aAAoC;AAGnE,MAAI,CAFW,WAAW,WAAW,GAExB;AACX,UAAM/B,OAAAA,OAAO,WAAW;AAExB;AAAA,EACF;AAIA,MAAI,EAFS,MAAMyC,GAAAA,MAAM,WAAW,GAAG,YAAA;AAGrC,UAAM,IAAI,MAAM,6CAA6C;AAK/D,MAAI,CAFU,MAAM,iBAAiB,WAAW;AAG9C,UAAM,IAAI,MAAM,oCAAoC;AAExD;AC7CO,SAAS,kBAAkB,KAAgC;AAChE,QAAM,EAAC,KAAK,OAAA,IAAU,KAChB,QAAqB,CAAA,GAErBrD,WAAU,OAAO,QAAQ,IAAI,WAAW,CAAA,CAAE,EAAE;AAAA,IAChD,CAAC,CAAC,OAAO,GAAG,OAAO,EAAC,OAAO,GAAG,IAAA;AAAA,EAAG,GAG7BC,WAAwB;AAAA,IAC5B,MAAM;AAAA,IACN,SAAS,CAAA;AAAA,EAAC,GAGN,cAA+C,CAAA;AAErD,WAAS,mBAAmB,QAAmB,SAAqB,OAAwB;AAC1F,UAAM,UAAU,GAAG,MAAM,IAAI,OAAO;AAEhC,gBAAY,OAAO,IACrB,YAAY,OAAO,EAAE,QAAQ,KAAK,KAAK,IAEvC,YAAY,OAAO,IAAI;AAAA,MACrB,MAAM;AAAA,MACN;AAAA,MACA,SAAS,CAAC,KAAK;AAAA,MACf;AAAA,MACA;AAAA,MACA,QAAQ,OAAO,OAAO;AAAA,IAAA;AAAA,EAG5B;AAGA,aAAW,OAAOD,UAAS;AACzB,UAAM,WAAWlB,cAAAA,QAAK,KAAK,IAAI,MAAM,IAAI,KAAK;AAE1C,QAAI,QAAQ,SAAS,KAAK,KAC5BmB,SAAQ,QAAQ,KAAK;AAAA,MACnB;AAAA,MACA,YAAY,IAAI;AAAA,MAChB,YAAY,IAAI;AAAA,MAChB,aAAa,eAAe,IAAI,MAAM,GAAG;AAAA,IAAA,CAC1C,GAGC,IAAI,SAAS,QAAQ,SAAS,KAAK,KACrCA,SAAQ,QAAQ,KAAK;AAAA,MACnB;AAAA,MACA,YAAY,IAAI;AAAA,MAChB,YAAY,IAAI,QAAQ;AAAA,MACxB,aAAa,eAAe,IAAI,MAAM,IAAI,OAAO;AAAA,IAAA,CAClD,GAGC,IAAI,MAAM,QAAQ,SAAS,KAAK,KAClCA,SAAQ,QAAQ,KAAK;AAAA,MACnB;AAAA,MACA,YAAY,IAAI;AAAA,MAChB,YAAY,IAAI,KAAK;AAAA,MACrB,aAAa,eAAe,IAAI,MAAM,IAAI,IAAI;AAAA,IAAA,CAC/C;AAAA,EAEL;AAGA,aAAW,OAAOD,UAAS;AACzB,UAAM,SAAS,IAAI;AAEd,cAEL,mBAAmB,YAAY,IAAI,SAAS;AAAA,MAC1C,MAAM,IAAI;AAAA,MACV,QAAQ,IAAI;AAAA,MACZ;AAAA,IAAA,CACD;AAAA,EACH;AAGA,aAAW,OAAOA,UAAS;AACzB,UAAM,SAAS,IAAI,SAAS;AAEvB,cAEL,mBAAmB,YAAY,WAAW;AAAA,MACxC,MAAM,IAAI;AAAA,MACV,QAAQ,IAAI,SAAS,UAAU,IAAI;AAAA,MACnC;AAAA,IAAA,CACD;AAAA,EACH;AAGA,aAAW,OAAOA,UAAS;AACzB,UAAM,SAAS,IAAI;AAEd,cAEL,mBAAmB,OAAO,IAAI,SAAS;AAAA,MACrC,MAAM,IAAI;AAAA,MACV,QAAQ,IAAI;AAAA,MACZ;AAAA,IAAA,CACD;AAAA,EACH;AAGA,aAAW,OAAOA,UAAS;AACzB,UAAM,SAAS,IAAI,SAAS;AAEvB,cAEL,mBAAmB,OAAO,WAAW;AAAA,MACnC,MAAM,IAAI;AAAA,MACV,QAAQ,IAAI,SAAS,UAAU,IAAI;AAAA,MACnC;AAAA,IAAA,CACD;AAAA,EACH;AAEA,SAAIC,SAAQ,QAAQ,UAClB,MAAM,KAAKA,QAAO,GAGpB,MAAM,KAAK,GAAG,OAAO,OAAO,WAAW,CAAC,GAEjC;AACT;AChIO,SAAS,UAAU,UAAuC;AAC/D,SAAOqD,gBAAAA,QAAO,SAAS,IAAI,CAAC,YAAY,QAAQ,MAAMxE,cAAAA,QAAK,GAAG,EAAE,KAAKA,cAAAA,QAAK,MAAM,GAAG,CAAC,CAAC;AACvF;ACIO,SAAS,WAAW,UAA2C;AACpE,SAAO,IAAIgC,KAAAA,WAAW,CAAC,aAAa;AAClC,UAAM,UAAUyC,oBAAS,MAAM,UAAU;AAAA,MACvC,eAAe;AAAA,IAAA,CAChB;AAED,aAAS,gBAAgB,MAAiB,MAAsB;AAC1D,eAAS,WAAW,gBAAgB,QACtC,SAAS,MAAM,IAAI,IAEnB,SAAS,KAAK,EAAC,MAAM,MAAK;AAAA,IAE9B;AAEA,WAAA,QAAQ,GAAG,OAAO,eAAe,GAE1B,MAAM;AACX,cAAQ,IAAI,OAAO,eAAe,GAClC,QAAQ,MAAA;AAAA,IACV;AAAA,EACF,CAAC;AACH;ACvBA,eAAsB,iBAAiB,SAGL;AAChC,QAAM,EAAC,KAAK,OAAA,IAAU,SAEhB,eAAe,MAAM,UAAU;AAAA,IACnCzE,sBAAK,QAAQ,KAAK,cAAc;AAAA,IAChCA,sBAAK,QAAQ,KAAK,oBAAoB;AAAA,IACtCA,sBAAK,QAAQ,KAAK,mBAAmB;AAAA,IACrCA,sBAAK,QAAQ,KAAK,mBAAmB;AAAA,EAAA,CACtC;AASD,SAPmB,WAAW;AAAA,IAC5BA,sBAAK,QAAQ,KAAK,cAAc;AAAA,IAChCA,sBAAK,QAAQ,KAAK,oBAAoB;AAAA,IACtCA,sBAAK,QAAQ,KAAK,mBAAmB;AAAA,IACrCA,sBAAK,QAAQ,KAAK,mBAAmB;AAAA,EAAA,CACtC,EAEiB;AAAA,IAChB0E,UAAAA,KAAK,CAAC,OAAO,cACP,UAAU,SAAS,QACd,MAAM,OAAO,UAAU,IAAI,IAGhC,UAAU,SAAS,WACd,MAAM,OAAO,CAAC,MAAM,MAAM,UAAU,IAAI,IAG7C,UAAU,SAAS,YACrB,OAAO;AAAA,MACL;AAAA,IAAA,GAEF,OAAO,KAAK1E,sBAAK,SAAS,KAAK,UAAU,IAAI,GAAG,SAAS,GACzD,OAAO,IAAI,EAAE,GAEN,MAAM,MAAM,CAAC,KAGf,OACN,YAAY;AAAA,IACf2E,UAAAA,UAAU,YAAY;AAAA,IACtBC,UAAAA,qBAAA;AAAA,EAAqB;AAEzB;ACxCA,eAAsB,MAAM,SAIV;AAChB,QAAM,EAAC,KAAK,SAAS,IAAO,UAAU,mBAAkB,SAElD,SAAS,aAAA;AAsBf,GApBqB,MAAM,iBAAiB,EAAC,KAAK,OAAA,CAAO,GAE/B;AAAA,IACxBC,KAAAA,UAAU,OAAO,gBAAgB;AAK/B,UAAI,CAJU,YAAY,IAAI,CAAC,MAAM7E,cAAAA,QAAK,SAAS,KAAK,CAAC,CAAC,EAE5B,KAAK,CAAC,MAAM,MAAM,cAAc;AAG5D,cAAM,IAAI,MAAM,sBAAsB;AAGxC,YAAMU,UAAS,MAAM,WAAW,EAAC,IAAA,CAAI,GAC/B,MAAM,MAAM,qBAAqB,EAAC,KAAK,QAAQ,QAAO,GACtD,WAAW,kBAAkBA,SAAQ,YAAY;AAEvD,aAAO,oBAAoB,EAAC,QAAAA,SAAQ,KAAK,QAAQ,KAAK,QAAQ,UAAS;AAAA,IACzE,CAAC;AAAA,EAAA,EAGE,UAAU,OAAO,QAAQ;AAC5B,UAAM,aAAa,kBAAkB,GAAG;AAExC,eAAW,QAAQ,YAAY;AAC7B,YAAM,UAAU,kBAAkB,KAAK,IAAI;AAC3B,cAAQ,KAAK,KAAK,IAAI,EAE9B,UAAU;AAAA,QAChB,OAAO,CAAC,QAAQ;AACd,cAAI,OAAO,MAAM,GAAG,GACpB,IAAI,OAAO,IAAA,GAEX,QAAQ,KAAK,CAAC;AAAA,QAChB;AAAA,QACA,MAAM,CAAC,WAAW;AAChB,kBAAQ,SAAS,KAAK,MAAM,MAAM;AAAA,QACpC;AAAA,QACA,UAAU,MAAM;AACd,cAAI,OAAO,QAAQ,QAAQ,KAAK,KAAK,IAAI,CAAC,GAC1C,IAAI,OAAO,IAAA;AAAA,QACb;AAAA,MAAA,CACD;AAAA,IACH;AAAA,EACF,CAAC;AACH;;;;;;;;;;;;;;;;","x_google_ignoreList":[8,51]}
1
+ {"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.2/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/optimizeCss.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 {basename} from 'node:path'\nimport browserslist from 'browserslist'\nimport {browserslistToTargets, transform} from 'lightningcss'\nimport type {OutputAsset, Plugin} from 'rollup'\n\nexport function optimizeCss(options: {\n extractFileName: string\n browserslist: string | string[]\n}): Plugin {\n return {\n name: 'optimize-css',\n\n async generateBundle(_outputOptions, bundle, _isWrite) {\n for (const [fileName, assetOrChunk] of Object.entries(bundle)) {\n // find CSS assets\n if (assetOrChunk.type === 'asset') {\n const asset = assetOrChunk\n if (asset.originalFileNames.includes(options.extractFileName)) {\n const sourceMapFileName = `${fileName}.map`\n await transformCss(\n asset,\n bundle[sourceMapFileName]?.type === 'asset' ? bundle[sourceMapFileName] : undefined,\n options.browserslist,\n )\n }\n }\n }\n },\n }\n}\n\nasync function transformCss(\n asset: OutputAsset,\n sourceMapAsset: OutputAsset | undefined,\n browserslistConfig: string | string[],\n) {\n const css = asset.source.toString()\n const file = asset.fileName\n\n const targets = browserslistToTargets(browserslist(browserslistConfig))\n\n // process and minify css using lightningcss\n const lightningCssResult = transform({\n filename: file,\n code: Buffer.from(css),\n minify: true,\n cssModules: false,\n targets,\n sourceMap: !!sourceMapAsset,\n inputSourceMap: sourceMapAsset ? sourceMapAsset.source.toString() : undefined,\n })\n\n if (lightningCssResult.warnings.length) {\n // eslint-disable-next-line no-console\n console.warn(lightningCssResult.warnings)\n }\n\n asset.source = new TextDecoder().decode(lightningCssResult.code)\n if (sourceMapAsset && lightningCssResult.map) {\n sourceMapAsset.source = new TextDecoder().decode(lightningCssResult.map)\n asset.source += `\\n/*# sourceMappingURL=${basename(sourceMapAsset.fileName)}*/\\n`\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 {vanillaExtractPlugin} from '@vanilla-extract/rollup-plugin'\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 {DEFAULT_BROWSERSLIST_QUERY} from '../../core/defaults'\nimport type {PackageJSON} from '../../core/pkg/types'\nimport type {RollupTask, RollupWatchTask} from '../types'\nimport {optimizeCss} from './optimizeCss'\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?.rollup?.vanillaExtract &&\n vanillaExtractPlugin(\n config?.rollup?.vanillaExtract === true\n ? {\n extract: {\n name:\n runtime === 'node'\n ? 'bundle.node.css'\n : runtime === 'browser'\n ? 'bundle.browser.css'\n : 'bundle.css',\n sourcemap: true,\n },\n identifiers: 'short',\n }\n : config?.rollup?.vanillaExtract,\n ),\n config?.rollup?.vanillaExtract &&\n optimizeCss(\n config?.rollup?.vanillaExtract === true\n ? {\n extractFileName:\n runtime === 'node'\n ? 'bundle.node.css'\n : runtime === 'browser'\n ? 'bundle.browser.css'\n : 'bundle.css',\n browserslist: DEFAULT_BROWSERSLIST_QUERY,\n }\n : {\n extractFileName:\n typeof config.rollup.vanillaExtract.extract === 'object' &&\n config.rollup.vanillaExtract.extract.name\n ? config.rollup.vanillaExtract.extract.name\n : runtime === 'node'\n ? 'bundle.node.css'\n : runtime === 'browser'\n ? 'bundle.browser.css'\n : 'bundle.css',\n browserslist: config.rollup.vanillaExtract.browserslist || DEFAULT_BROWSERSLIST_QUERY,\n },\n ),\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 // If the module ends with `.css` it is considered to be a side effect, even if the module is marked as no side effect,\n // this option used to be `moduleSideEffects: 'no-external'`, and thus if it's not CSS it uses `!external`, which is equivalent to `'no-external'`\n moduleSideEffects: (id, external) => (id.endsWith('.css') ? true : !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 assetFileNames: '[name][extname]',\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 // We're not interested in CSS files that might be imported as a side effect, so we'll treat them as empty\n loader: {'.css': 'empty'},\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","browserslistToTargets","transform","basename","replace","alias","nodeResolve","commonjs","json","vanillaExtractPlugin","babel","esbuild","getBabelOutputPlugin","optimizeLodashImports","terser","external","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,51]}