@sanity/pkg-utils 10.6.0 → 10.7.1

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.
@@ -2,10 +2,10 @@ import path from "node:path";
2
2
  import { up } from "empathic/package";
3
3
  import { rimraf } from "rimraf";
4
4
  import { loadConfig } from "./defaults.js";
5
+ import { buildTaskHandlers, writeBundleCssExports, resolveVanillaExtract, resolveVanillaExtractCssName } from "./index.js";
5
6
  import { getTargetPaths, loadPkgWithReporting, resolveBuildContext } from "./resolveBuildContext.js";
6
7
  import { createLogger, handleError } from "./handleError.js";
7
8
  import { createSpinner } from "./spinner.js";
8
- import { buildTaskHandlers } from "./index.js";
9
9
  function resolveBuildTasks(ctx) {
10
10
  const { config, pkg, target } = ctx, bundles = config?.bundles || [], tasks = [], exports = Object.entries(ctx.exports || {}).map(
11
11
  ([_path, exp]) => Object.assign({}, exp, { _path })
@@ -164,6 +164,16 @@ async function build(options) {
164
164
  handler.error(ctx, task, err), process.exit(1);
165
165
  }
166
166
  }
167
+ const vanillaExtract = resolveVanillaExtract(config);
168
+ vanillaExtract.compatMode && await writeBundleCssExports({
169
+ cwd,
170
+ distPath: ctx.distPath,
171
+ cssName: resolveVanillaExtractCssName(vanillaExtract.options, {
172
+ compatMode: !0,
173
+ runtime: "*"
174
+ }),
175
+ logger
176
+ });
167
177
  }
168
178
  async function buildAction(options) {
169
179
  try {
@@ -1 +1 @@
1
- {"version":3,"file":"buildAction.js","sources":["../../src/node/resolveBuildTasks.ts","../../src/node/build.ts","../../src/cli/buildAction.ts"],"sourcesContent":["import path from 'node:path'\nimport type {PkgExport, PkgFormat, PkgRuntime} from './core/config/types.ts'\nimport type {BuildContext} from './core/contexts/buildContext.ts'\nimport {getTargetPaths} from './tasks/dts/getTargetPaths.ts'\nimport type {DtsTask} from './tasks/dts/types.ts'\nimport type {BuildTask, RolldownDtsTask, RollupTask, RollupTaskEntry} from './tasks/types.ts'\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]) => Object.assign({}, exp, {_path}) 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 // Parse rollup:commonjs:node tasks\n for (const exp of exports) {\n const output = exp.node?.require\n\n if (!output) continue\n\n addRollupTaskEntry('commonjs', 'node', {\n path: exp._path,\n source: exp.node?.source || exp.source,\n output,\n })\n }\n\n // Parse rollup:esm:node tasks\n for (const exp of exports) {\n const output = exp.node?.import\n\n if (!output) continue\n\n addRollupTaskEntry('esm', 'node', {\n path: exp._path,\n source: exp.node?.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","import path from 'node:path'\nimport {up as findPkgPath} from 'empathic/package'\nimport {rimraf} from 'rimraf'\nimport {loadConfig} from './core/config/loadConfig.ts'\nimport {loadPkgWithReporting} from './core/pkg/loadPkgWithReporting.ts'\nimport {createLogger} from './logger.ts'\nimport {resolveBuildContext} from './resolveBuildContext.ts'\nimport {resolveBuildTasks} from './resolveBuildTasks.ts'\nimport {createSpinner} from './spinner.ts'\nimport {buildTaskHandlers} from './tasks/index.ts'\nimport {type BuildTask, type TaskHandler} from './tasks/types.ts'\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 pkgPath = findPkgPath({cwd})\n if (!pkgPath) {\n throw new Error('no package.json found', {cause: {cwd}})\n }\n const config = await loadConfig({cwd, pkgPath})\n\n const {parseStrictOptions} = await import('./strict.ts')\n const strictOptions = parseStrictOptions(config?.strictOptions ?? {})\n const pkg = await loadPkgWithReporting({pkgPath, logger, strict, strictOptions})\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 // eslint-disable-next-line @typescript-eslint/no-unsafe-type-assertion -- TypeScript can't infer the correct handler type from discriminated union\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 {build} from '../node/build.ts'\nimport {handleError} from './handleError.ts'\n\nexport async function buildAction(options: {\n emitDeclarationOnly?: boolean\n strict?: boolean\n tsconfig?: string\n clean?: boolean\n quiet?: boolean\n}): Promise<void> {\n try {\n await build({\n cwd: process.cwd(),\n emitDeclarationOnly: options.emitDeclarationOnly,\n strict: options.strict,\n tsconfig: options.tsconfig,\n clean: options.clean,\n quiet: options.quiet,\n })\n } catch (err) {\n handleError(err)\n }\n}\n"],"names":["findPkgPath"],"mappings":"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"}
1
+ {"version":3,"file":"buildAction.js","sources":["../../src/node/resolveBuildTasks.ts","../../src/node/build.ts","../../src/cli/buildAction.ts"],"sourcesContent":["import path from 'node:path'\nimport type {PkgExport, PkgFormat, PkgRuntime} from './core/config/types.ts'\nimport type {BuildContext} from './core/contexts/buildContext.ts'\nimport {getTargetPaths} from './tasks/dts/getTargetPaths.ts'\nimport type {DtsTask} from './tasks/dts/types.ts'\nimport type {BuildTask, RolldownDtsTask, RollupTask, RollupTaskEntry} from './tasks/types.ts'\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]) => Object.assign({}, exp, {_path}) 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 // Parse rollup:commonjs:node tasks\n for (const exp of exports) {\n const output = exp.node?.require\n\n if (!output) continue\n\n addRollupTaskEntry('commonjs', 'node', {\n path: exp._path,\n source: exp.node?.source || exp.source,\n output,\n })\n }\n\n // Parse rollup:esm:node tasks\n for (const exp of exports) {\n const output = exp.node?.import\n\n if (!output) continue\n\n addRollupTaskEntry('esm', 'node', {\n path: exp._path,\n source: exp.node?.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","import path from 'node:path'\nimport {up as findPkgPath} from 'empathic/package'\nimport {rimraf} from 'rimraf'\nimport {loadConfig} from './core/config/loadConfig.ts'\nimport {resolveVanillaExtract, resolveVanillaExtractCssName} from './core/config/vanillaExtract.ts'\nimport {loadPkgWithReporting} from './core/pkg/loadPkgWithReporting.ts'\nimport {writeBundleCssExports} from './core/pkg/writeBundleCssExports.ts'\nimport {createLogger} from './logger.ts'\nimport {resolveBuildContext} from './resolveBuildContext.ts'\nimport {resolveBuildTasks} from './resolveBuildTasks.ts'\nimport {createSpinner} from './spinner.ts'\nimport {buildTaskHandlers} from './tasks/index.ts'\nimport {type BuildTask, type TaskHandler} from './tasks/types.ts'\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 pkgPath = findPkgPath({cwd})\n if (!pkgPath) {\n throw new Error('no package.json found', {cause: {cwd}})\n }\n const config = await loadConfig({cwd, pkgPath})\n\n const {parseStrictOptions} = await import('./strict.ts')\n const strictOptions = parseStrictOptions(config?.strictOptions ?? {})\n const pkg = await loadPkgWithReporting({pkgPath, logger, strict, strictOptions})\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 // eslint-disable-next-line @typescript-eslint/no-unsafe-type-assertion -- TypeScript can't infer the correct handler type from discriminated union\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 // In vanilla-extract compat mode, make sure package.json declares the conditional `./<css>`\n // export that the injected `import \"<pkg>/<css>\"` resolves through.\n const vanillaExtract = resolveVanillaExtract(config)\n if (vanillaExtract.compatMode) {\n await writeBundleCssExports({\n cwd,\n distPath: ctx.distPath,\n cssName: resolveVanillaExtractCssName(vanillaExtract.options, {\n compatMode: true,\n runtime: '*',\n }),\n logger,\n })\n }\n}\n","import {build} from '../node/build.ts'\nimport {handleError} from './handleError.ts'\n\nexport async function buildAction(options: {\n emitDeclarationOnly?: boolean\n strict?: boolean\n tsconfig?: string\n clean?: boolean\n quiet?: boolean\n}): Promise<void> {\n try {\n await build({\n cwd: process.cwd(),\n emitDeclarationOnly: options.emitDeclarationOnly,\n strict: options.strict,\n tsconfig: options.tsconfig,\n clean: options.clean,\n quiet: options.quiet,\n })\n } catch (err) {\n handleError(err)\n }\n}\n"],"names":["findPkgPath"],"mappings":";;;;;;;;AAQO,SAAS,kBAAkB,KAAgC;AAChE,QAAM,EAAC,QAAQ,KAAK,OAAA,IAAU,KAExB,UAAU,QAAQ,WAAW,CAAA,GAE7B,QAAqB,CAAA,GAErB,UAAU,OAAO,QAAQ,IAAI,WAAW,CAAA,CAAE,EAAE;AAAA,IAChD,CAAC,CAAC,OAAO,GAAG,MAAM,OAAO,OAAO,CAAA,GAAI,KAAK,EAAC,MAAA,CAAM;AAAA,EAAA,GAG5C,UAAmB;AAAA,IACvB,MAAM;AAAA,IACN,SAAS,CAAA;AAAA,EAAC,GAGN,kBAAmD,IACnD,cAA0C,CAAA;AAEhD,WAAS,mBAAmB,QAAmB,SAAqB,OAAwB;AAC1F,UAAM,UAAU,GAAG,MAAM,IAAI,OAAO;AAEhC,QAAI,QAAQ,eACV,gBAAgB,OAAO,IACzB,gBAAgB,OAAO,EAAE,QAAQ,KAAK,KAAK,IAE3C,gBAAgB,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,OAAO,SAAS;AACzB,YAAM,WAAW,KAAK,KAAK,IAAI,MAAM,IAAI,KAAK;AAE1C,UAAI,QAAQ,SAAS,KAAK,KAC5B,QAAQ,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,KACrC,QAAQ,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,KAClC,QAAQ,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,WAAW,KAAK,KAAK,IAAI,MAAM,UAAU;AAE/C,gBAAQ,QAAQ,KAAK;AAAA,UACnB;AAAA,UACA;AAAA,UACA,YAAY,OAAO;AAAA,UACnB,aAAa,eAAe,IAAI,MAAM,MAAM;AAAA,QAAA,CAC7C;AAAA,MACH;AAIE,YAAQ,QAAQ,UAClB,MAAM,KAAK,OAAO;AAAA,EAEtB;AAGA,aAAW,OAAO,SAAS;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,OAAO,SAAS;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,OAAO,SAAS;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,OAAO,SAAS;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;AAGA,aAAW,OAAO,SAAS;AACzB,UAAM,SAAS,IAAI,MAAM;AAEpB,cAEL,mBAAmB,YAAY,QAAQ;AAAA,MACrC,MAAM,IAAI;AAAA,MACV,QAAQ,IAAI,MAAM,UAAU,IAAI;AAAA,MAChC;AAAA,IAAA,CACD;AAAA,EACH;AAGA,aAAW,OAAO,SAAS;AACzB,UAAM,SAAS,IAAI,MAAM;AAEpB,cAEL,mBAAmB,OAAO,QAAQ;AAAA,MAChC,MAAM,IAAI;AAAA,MACV,QAAQ,IAAI,MAAM,UAAU,IAAI;AAAA,MAChC;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,OAAO,eAAe,CAAC,GAI5C,MAAM,KAAK,GAAG,OAAO,OAAO,WAAW,CAAC,GAEjC;AACT;AC/LA,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,GAE3B,UAAUA,GAAY,EAAC,KAAI;AACjC,MAAI,CAAC;AACH,UAAM,IAAI,MAAM,yBAAyB,EAAC,OAAO,EAAC,IAAA,GAAK;AAEzD,QAAM,SAAS,MAAM,WAAW,EAAC,KAAK,SAAQ,GAExC,EAAC,mBAAA,IAAsB,MAAM,OAAO,0BAAa,EAAA,KAAA,SAAA,GAAA;AAAA,WAAA,EAAA;AAAA,EAAA,CAAA,GACjD,gBAAgB,mBAAmB,QAAQ,iBAAiB,CAAA,CAAE,GAC9D,MAAM,MAAM,qBAAqB,EAAC,SAAS,QAAQ,QAAQ,cAAA,CAAc,GAEzE,WAAW,kBAAkB,QAAQ,YAAY,iBAEjD,MAAM,MAAM,oBAAoB;AAAA,IACpC;AAAA,IACA;AAAA,IACA;AAAA,IACA;AAAA,IACA;AAAA,IACA;AAAA,IACA;AAAA,EAAA,CACD;AAEG,YACG,SACH,OAAO;AAAA,IACL,oCAAoC,KAAK,SAAS,KAAK,IAAI,QAAQ,CAAC;AAAA,EAAA,GAGxE,MAAM,OAAO,IAAI,QAAQ;AAG3B,QAAM,aAAa,kBAAkB,GAAG;AAExC,aAAW,QAAQ,YAAY;AAE7B,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,KAAK,GAAG;AAElC,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;AAIA,QAAM,iBAAiB,sBAAsB,MAAM;AAC/C,iBAAe,cACjB,MAAM,sBAAsB;AAAA,IAC1B;AAAA,IACA,UAAU,IAAI;AAAA,IACd,SAAS,6BAA6B,eAAe,SAAS;AAAA,MAC5D,YAAY;AAAA,MACZ,SAAS;AAAA,IAAA,CACV;AAAA,IACD;AAAA,EAAA,CACD;AAEL;AC7HA,eAAsB,YAAY,SAMhB;AAChB,MAAI;AACF,UAAM,MAAM;AAAA,MACV,KAAK,QAAQ,IAAA;AAAA,MACb,qBAAqB,QAAQ;AAAA,MAC7B,QAAQ,QAAQ;AAAA,MAChB,UAAU,QAAQ;AAAA,MAClB,OAAO,QAAQ;AAAA,MACf,OAAO,QAAQ;AAAA,IAAA,CAChB;AAAA,EACH,SAAS,KAAK;AACZ,gBAAY,GAAG;AAAA,EACjB;AACF;"}
@@ -1,12 +1,12 @@
1
+ import fs, { readFile, writeFile } from "node:fs/promises";
2
+ import path, { basename } from "node:path";
1
3
  import chalk from "chalk";
2
4
  import { from, Observable } from "rxjs";
3
5
  import { printExtractMessages } from "./printExtractMessages.js";
4
- import path, { basename } from "node:path";
5
6
  import { ExtractorConfig, Extractor, ExtractorLogLevel } from "@microsoft/api-extractor";
6
7
  import * as rimraf from "rimraf";
7
8
  import { rimraf as rimraf$1 } from "rimraf";
8
9
  import ts from "typescript";
9
- import fs from "node:fs/promises";
10
10
  import { mkdirp } from "mkdirp";
11
11
  import * as prettier from "prettier";
12
12
  import { createApiExtractorConfig } from "./createApiExtractorConfig.js";
@@ -27,6 +27,41 @@ import esbuild from "rollup-plugin-esbuild";
27
27
  import { DEFAULT_BROWSERSLIST_QUERY } from "./defaults.js";
28
28
  import browserslist from "browserslist";
29
29
  import { browserslistToTargets, transform } from "lightningcss";
30
+ const DEFAULT_VANILLA_EXTRACT_CSS_NAME = "bundle.css";
31
+ function resolveVanillaExtract(config) {
32
+ const value = config?.rollup?.vanillaExtract, enabled = !!value, options = value === !0 || !value ? {} : value, compatMode = enabled ? options.extract?.compatMode ?? !0 : !1;
33
+ return { enabled, options, compatMode };
34
+ }
35
+ function resolveVanillaExtractCssName(options, context) {
36
+ return options.extract?.name ? options.extract.name : context.compatMode ? DEFAULT_VANILLA_EXTRACT_CSS_NAME : context.runtime === "node" ? "bundle.node.css" : context.runtime === "browser" ? "bundle.browser.css" : DEFAULT_VANILLA_EXTRACT_CSS_NAME;
37
+ }
38
+ function createConditionalCssExport(cssFile, shimFile) {
39
+ return { browser: cssFile, style: cssFile, node: shimFile, default: shimFile };
40
+ }
41
+ function hasMatchingExport(value, expected) {
42
+ if (typeof value != "object" || value === null) return !1;
43
+ const actual = Object.fromEntries(Object.entries(value)), keys = Object.keys(expected);
44
+ return keys.length === Object.keys(actual).length && keys.every((key) => actual[key] === expected[key]);
45
+ }
46
+ function detectIndent(source) {
47
+ const match = source.match(/\n([ \t]+)\S/);
48
+ if (!match) return 2;
49
+ const indent = match[1];
50
+ return indent.includes(" ") ? " " : indent.length;
51
+ }
52
+ async function writeBundleCssExports(options) {
53
+ const { cwd, distPath, cssName, logger } = options, pkgPath = path.resolve(cwd, "package.json"), source = await readFile(pkgPath, "utf8"), pkg = JSON.parse(source), distRel = (path.relative(cwd, distPath) || "dist").split(path.sep).join("/"), exportKey = `./${cssName}`, cssFile = `./${path.posix.join(distRel, cssName)}`, shimFile = `./${path.posix.join(distRel, `${cssName}.js`)}`, conditionalExport = createConditionalCssExport(cssFile, shimFile);
54
+ if (hasMatchingExport(pkg.exports?.[exportKey], conditionalExport))
55
+ return;
56
+ const nextExports = {};
57
+ let inserted = !1;
58
+ for (const [key, value] of Object.entries(pkg.exports ?? {}))
59
+ key !== exportKey && (key === "./package.json" && !inserted && (nextExports[exportKey] = conditionalExport, inserted = !0), nextExports[key] = value);
60
+ inserted || (nextExports[exportKey] = conditionalExport), pkg.exports = nextExports, await writeFile(pkgPath, `${JSON.stringify(pkg, null, detectIndent(source))}
61
+ `), logger.log(
62
+ `Updated package.json: added \`exports["${exportKey}"]\` for vanilla-extract compat mode`
63
+ );
64
+ }
30
65
  function printDiagnostic(options) {
31
66
  const { cwd, logger, diagnostic } = options;
32
67
  if (diagnostic.file && diagnostic.start) {
@@ -379,6 +414,21 @@ function replaceFileEnding(filePath) {
379
414
  return filePath.replace(/\.js$/, ".d.ts");
380
415
  }
381
416
  }
417
+ function bundleCssShim(options) {
418
+ const cssName = options.fileName.replace(/\.js$/, "");
419
+ return {
420
+ name: "pkg-utils:bundle-css-shim",
421
+ generateBundle() {
422
+ this.emitFile({
423
+ type: "asset",
424
+ fileName: options.fileName,
425
+ source: `// No-op shim for \`${cssName}\` in runtimes that cannot import \`.css\` files directly.
426
+ export default ""
427
+ `
428
+ });
429
+ }
430
+ };
431
+ }
382
432
  function optimizeCss(options) {
383
433
  return {
384
434
  name: "optimize-css",
@@ -391,18 +441,19 @@ function optimizeCss(options) {
391
441
  await transformCss(
392
442
  asset,
393
443
  bundle[sourceMapFileName]?.type === "asset" ? bundle[sourceMapFileName] : void 0,
394
- options.browserslist
444
+ options.browserslist,
445
+ options.minify ?? !0
395
446
  );
396
447
  }
397
448
  }
398
449
  }
399
450
  };
400
451
  }
401
- async function transformCss(asset, sourceMapAsset, browserslistConfig) {
452
+ async function transformCss(asset, sourceMapAsset, browserslistConfig, minify) {
402
453
  const css = asset.source.toString(), file = asset.fileName, targets = browserslistToTargets(browserslist(browserslistConfig)), lightningCssResult = transform({
403
454
  filename: file,
404
455
  code: Buffer.from(css),
405
- minify: !0,
456
+ minify,
406
457
  cssModules: !1,
407
458
  targets,
408
459
  sourceMap: !!sourceMapAsset,
@@ -438,7 +489,10 @@ function resolveRollupConfig(ctx, buildTask) {
438
489
  name: path.relative(outDir, entry.output).replace(/\.[^/.]+$/, "")
439
490
  }), {}), exportIds = _exports && Object.keys(_exports).map((exportPath) => path.join(pkg.name, exportPath)), sourcePaths = _exports && Object.values(_exports).map((e) => path.resolve(cwd, e.source)), replacements = Object.fromEntries(
440
491
  Object.entries(config?.define || {}).map(([key, val]) => [key, JSON.stringify(val)])
441
- ), { optimizeLodash: enableOptimizeLodash = hasDependency(pkg, "lodash") } = config?.rollup || {}, enableStyledComponents = shouldEnableStyledComponents(config, pkg, logger), defaultPlugins = [
492
+ ), { optimizeLodash: enableOptimizeLodash = hasDependency(pkg, "lodash") } = config?.rollup || {}, enableStyledComponents = shouldEnableStyledComponents(config, pkg, logger), vanillaExtract = resolveVanillaExtract(config), vanillaExtractCssName = resolveVanillaExtractCssName(vanillaExtract.options, {
493
+ compatMode: vanillaExtract.compatMode,
494
+ runtime
495
+ }), defaultPlugins = [
442
496
  replace({
443
497
  preventAssignment: !0,
444
498
  values: pkg.name === "@sanity/pkg-utils" ? { ...replacements } : {
@@ -464,30 +518,27 @@ function resolveRollupConfig(ctx, buildTask) {
464
518
  }),
465
519
  commonjs(),
466
520
  json(),
467
- config?.rollup?.vanillaExtract && vanillaExtractPlugin(
468
- config?.rollup?.vanillaExtract === !0 ? {
469
- extract: {
470
- name: runtime === "node" ? "bundle.node.css" : runtime === "browser" ? "bundle.browser.css" : "bundle.css",
471
- sourcemap: !0
472
- },
473
- identifiers: "short"
474
- } : config?.rollup?.vanillaExtract
475
- ),
476
- config?.rollup?.vanillaExtract && optimizeCss(
477
- config?.rollup?.vanillaExtract === !0 ? {
478
- extractFileName: runtime === "node" ? "bundle.node.css" : runtime === "browser" ? "bundle.browser.css" : "bundle.css",
479
- browserslist: DEFAULT_BROWSERSLIST_QUERY
480
- } : {
481
- extractFileName: typeof config.rollup.vanillaExtract.extract == "object" && config.rollup.vanillaExtract.extract.name ? config.rollup.vanillaExtract.extract.name : runtime === "node" ? "bundle.node.css" : runtime === "browser" ? "bundle.browser.css" : "bundle.css",
482
- browserslist: config.rollup.vanillaExtract.browserslist || DEFAULT_BROWSERSLIST_QUERY
521
+ vanillaExtract.enabled && vanillaExtractPlugin({
522
+ identifiers: vanillaExtract.options.identifiers ?? "short",
523
+ cwd: vanillaExtract.options.cwd,
524
+ esbuildOptions: vanillaExtract.options.esbuildOptions,
525
+ unstable_injectFilescopes: vanillaExtract.options.unstable_injectFilescopes,
526
+ extract: {
527
+ name: vanillaExtractCssName,
528
+ sourcemap: vanillaExtract.options.extract?.sourcemap ?? !0
483
529
  }
484
- ),
530
+ }),
531
+ vanillaExtract.enabled && optimizeCss({
532
+ extractFileName: vanillaExtractCssName,
533
+ browserslist: vanillaExtract.options.browserslist || DEFAULT_BROWSERSLIST_QUERY,
534
+ minify: vanillaExtract.options.minify ?? !0
535
+ }),
536
+ // In compat mode, emit the no-op JS shim that the `node`/`default` conditions of the
537
+ // `./<css>` export resolve to.
538
+ vanillaExtract.compatMode && bundleCssShim({ fileName: `${vanillaExtractCssName}.js` }),
485
539
  (config?.babel?.reactCompiler || enableStyledComponents) && babel({
486
540
  babelrc: !1,
487
541
  presets: ["@babel/preset-typescript"],
488
- parserOpts: {
489
- plugins: ["jsx"]
490
- },
491
542
  babelHelpers: "bundled",
492
543
  parallel: !0,
493
544
  extensions: [".ts", ".tsx", ".js", ".jsx"],
@@ -599,10 +650,26 @@ function resolveRollupConfig(ctx, buildTask) {
599
650
  hoistTransitiveImports: !1,
600
651
  minifyInternalExports: minify,
601
652
  assetFileNames: "[name][extname]",
602
- ...config?.rollup?.output
653
+ ...config?.rollup?.output,
654
+ // In compat mode, inject the self-referential bundle.css import into entry chunks so userland
655
+ // does not need to set `rollup.output.intro` themselves. Use `require()` for CommonJS output
656
+ // (a top-level `import` would be invalid in a `.cjs` bundle).
657
+ ...vanillaExtract.compatMode ? {
658
+ intro: composeIntro(
659
+ format === "commonjs" ? `require(${JSON.stringify(`${pkg.name}/${vanillaExtractCssName}`)})` : `import ${JSON.stringify(`${pkg.name}/${vanillaExtractCssName}`)}`,
660
+ config?.rollup?.output?.intro
661
+ )
662
+ } : {}
603
663
  }
604
664
  };
605
665
  }
666
+ function composeIntro(autoImport, userIntro) {
667
+ return async (chunkInfo) => {
668
+ const auto = chunkInfo.isEntry ? `${autoImport}
669
+ ` : "", user = typeof userIntro == "function" ? await userIntro(chunkInfo) : typeof userIntro == "string" ? userIntro : "";
670
+ return `${auto}${user}`;
671
+ };
672
+ }
606
673
  function hasDependency(pkg, packageName) {
607
674
  return pkg.dependencies ? packageName in pkg.dependencies : pkg.peerDependencies ? packageName in pkg.peerDependencies : !1;
608
675
  }
@@ -722,6 +789,9 @@ const rollupWatchTask = {
722
789
  };
723
790
  export {
724
791
  buildTaskHandlers,
725
- watchTaskHandlers
792
+ resolveVanillaExtract,
793
+ resolveVanillaExtractCssName,
794
+ watchTaskHandlers,
795
+ writeBundleCssExports
726
796
  };
727
797
  //# sourceMappingURL=index.js.map
@@ -1 +1 @@
1
- {"version":3,"file":"index.js","sources":["../../src/node/tasks/dts/printDiagnostic.ts","../../src/node/tasks/dts/buildTypes.ts","../../src/node/tasks/dts/DtsError.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/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"],"sourcesContent":["import path from 'node:path'\nimport chalk from 'chalk'\nimport ts from 'typescript'\nimport type {Logger} from '../../logger.ts'\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.ts'\nimport {printDiagnostic} from './printDiagnostic.ts'\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 checkTypes?: boolean\n}): Promise<void> {\n const {cwd, logger, outDir, tsconfig, strict, checkTypes} = 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:\n checkTypes === false\n ? true\n : (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 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.ts'\nimport type {BuildFile} from '../../core/contexts/buildContext.ts'\nimport {createApiExtractorConfig} from './createApiExtractorConfig.ts'\nimport {createTSDocConfig} from './createTSDocConfig.ts'\nimport {getExtractMessagesConfig} from './getExtractMessagesConfig.ts'\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 {extractModuleBlocksFromTypes} = await import('./extractModuleBlocks.ts')\n const moduleBlocks = 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 {ExtractorLogLevel, type ExtractorMessage} from '@microsoft/api-extractor'\nimport {rimraf} from 'rimraf'\nimport type {BuildContext} from '../../core/contexts/buildContext.ts'\nimport {buildTypes} from './buildTypes.ts'\nimport {DtsError} from './DtsError.ts'\nimport {extractTypes} from './extractTypes.ts'\nimport type {DtsResult, DtsTask, DtsWatchTask} from './types.ts'\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({\n cwd,\n logger,\n outDir: tmpPath,\n strict,\n tsconfig: ts.config,\n checkTypes: config?.extract?.checkTypes,\n })\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 === ExtractorLogLevel.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 {from} from 'rxjs'\nimport {printExtractMessages} from '../../printExtractMessages.ts'\nimport type {TaskHandler} from '../types.ts'\nimport {doExtract} from './doExtract.ts'\nimport {DtsError} from './DtsError.ts'\nimport type {DtsResult, DtsTask} from './types.ts'\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 from(doExtract(ctx, task))\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.ts'\nimport type {TaskHandler} from '../types.ts'\nimport {buildTypes} from './buildTypes.ts'\nimport {DtsError} from './DtsError.ts'\nimport {extractTypes} from './extractTypes.ts'\nimport type {DtsResult, DtsWatchTask} from './types.ts'\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 checkTypes: config?.extract?.checkTypes,\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 noCheck:\n config?.extract?.checkTypes === false\n ? true\n : (tsContext.config.options.noCheck ?? tsContext.config.options.isolatedDeclarations),\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 // oxlint-disable-next-line unbound-method\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","import path from 'node:path'\nimport chalk from 'chalk'\nimport {from} from 'rxjs'\nimport {createConsoleSpy} from '../../consoleSpy.ts'\nimport type {BuildContext} from '../../core/contexts/buildContext.ts'\nimport type {RolldownDtsTask, TaskHandler} from '../types.ts'\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.ts'),\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(filePath: string) {\n switch (true) {\n case filePath.endsWith('.mjs'):\n return filePath.replace(/\\.mjs$/, '.d.mts')\n case filePath.endsWith('.cjs'):\n return filePath.replace(/\\.cjs$/, '.d.cts')\n default:\n return filePath.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 {optimizeLodashImports} from '@optimize-lodash/rollup-plugin'\nimport alias from '@rollup/plugin-alias'\nimport {babel, getBabelOutputPlugin} from '@rollup/plugin-babel'\nimport commonjs from '@rollup/plugin-commonjs'\nimport json from '@rollup/plugin-json'\nimport {nodeResolve} from '@rollup/plugin-node-resolve'\nimport replace from '@rollup/plugin-replace'\nimport terser from '@rollup/plugin-terser'\nimport type {PackageJSON} from '@sanity/parse-package-json'\nimport {vanillaExtractPlugin} from '@vanilla-extract/rollup-plugin'\nimport type {InputOptions, OutputOptions} from 'rollup'\nimport esbuild from 'rollup-plugin-esbuild'\nimport {pkgExtMap as extMap} from '../../../node/core/pkg/pkgExt.ts'\nimport {resolveConfigProperty} from '../../core/config/resolveConfigProperty.ts'\nimport type {BuildContext} from '../../core/contexts/buildContext.ts'\nimport {DEFAULT_BROWSERSLIST_QUERY} from '../../core/defaults.ts'\nimport type {RollupTask, RollupWatchTask} from '../types.ts'\nimport {optimizeCss} from './optimizeCss.ts'\n\n// Type guard to filter out falsy values\nfunction isTruthy<T>(value: T | false | null | undefined | 0 | ''): value is T {\n return Boolean(value)\n}\n\n/**\n * Check if a package is in the peerDependencies\n */\nfunction hasPeerDependency(pkg: PackageJSON, packageName: string): boolean {\n return pkg.peerDependencies ? packageName in pkg.peerDependencies : false\n}\n\n/**\n * Check if a package is in the devDependencies\n */\nfunction hasDevDependency(pkg: PackageJSON, packageName: string): boolean {\n return pkg.devDependencies ? packageName in pkg.devDependencies : false\n}\n\n// Track if we've already logged styled-components messages to avoid duplicates\nlet styledComponentsLogged = false\n\n/**\n * Determine if styled-components should be enabled\n */\nfunction shouldEnableStyledComponents(\n config: BuildContext['config'],\n pkg: PackageJSON,\n logger: BuildContext['logger'],\n): boolean {\n const hasStyledComponents = hasPeerDependency(pkg, 'styled-components')\n const hasBabelPluginStyledComponents = hasDevDependency(pkg, 'babel-plugin-styled-components')\n const styledComponentsConfigSet = config?.babel?.styledComponents !== undefined\n\n // If explicitly set, respect that\n if (styledComponentsConfigSet) {\n return !!config?.babel?.styledComponents\n }\n\n // Log messages only once per build\n if (!styledComponentsLogged) {\n styledComponentsLogged = true\n\n if (hasStyledComponents) {\n if (hasBabelPluginStyledComponents) {\n // Log that auto-enabling will happen\n logger.log(\n 'Detected styled-components in peerDependencies and babel-plugin-styled-components in devDependencies. Automatically enabling babel.styledComponents. To disable this, set `babel: { styledComponents: false }` in package.config.ts.',\n )\n } else {\n // Warn if styled-components is present but babel-plugin-styled-components is not\n logger.warn(\n 'Detected styled-components in peerDependencies. Consider installing babel-plugin-styled-components as a devDependency to enable better debugging and optimization. Add `\"babel-plugin-styled-components\": \"^2.0.0\"` to devDependencies and it will be automatically enabled, or set `babel: { styledComponents: false }` in package.config.ts to disable this warning.',\n )\n }\n }\n }\n\n // Auto-enable if both styled-components and babel plugin are present\n if (hasStyledComponents && hasBabelPluginStyledComponents) {\n return true\n }\n\n return false\n}\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 // Auto-detect if styled-components should be enabled\n const enableStyledComponents = shouldEnableStyledComponents(config, pkg, logger)\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 || enableStyledComponents) &&\n babel({\n babelrc: false,\n presets: ['@babel/preset-typescript'],\n parserOpts: {\n plugins: ['jsx'],\n },\n babelHelpers: 'bundled',\n parallel: true,\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 enableStyledComponents && [\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(isTruthy),\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 parallel: true,\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(isTruthy)\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, isExternal) => (id.endsWith('.css') ? true : !isExternal),\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 {from} from 'rxjs'\nimport {createConsoleSpy} from '../../consoleSpy.ts'\nimport type {BuildContext} from '../../core/contexts/buildContext.ts'\nimport type {RollupTask, TaskHandler} from '../types.ts'\nimport {resolveRollupConfig} from './resolveRollupConfig.ts'\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 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: 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.ts'\nimport {resolveRollupConfig} from './resolveRollupConfig.ts'\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 void 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.ts'\nimport {dtsWatchTask} from './dts/dtsWatchTask.ts'\nimport {rolldownDtsTask} from './rolldown/rolldownDtsTask.ts'\nimport {rollupTask} from './rollup/rollupTask.ts'\nimport {rollupWatchTask} from './rollup/rollupWatchTask.ts'\nimport type {BuildTaskHandlers, WatchTaskHandlers} from './types.ts'\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"],"names":["ts","rimraf","execPromise","extMap","rollupWatch"],"mappings":";;;;;;;;;;;;;;;;;;;;;;;;;;;;;AAKO,SAAS,gBAAgB,SAIvB;AACP,QAAM,EAAC,KAAK,QAAQ,WAAA,IAAc;AAElC,MAAI,WAAW,QAAQ,WAAW,OAAO;AACvC,UAAM,EAAC,MAAM,UAAA,IAAa,GAAG,8BAA8B,WAAW,MAAM,WAAW,KAAK,GACtF,UAAU,GAAG,6BAA6B,WAAW,aAAa;AAAA,CAAI,GAEtE,OAAO,KAAK,SAAS,KAAK,WAAW,KAAK,QAAQ,GAElD,SAAS;AAAA,MACb,GAAG,MAAM,OAAO,IAAI,CAAC,IAAI,MAAM,KAAK,OAAO,CAAC,CAAC,IAAI,MAAM,KAAK,YAAY,CAAC,CAAC;AAAA,MAC1E,GAAG,MAAM,KAAK,KAAK,WAAW,IAAI,GAAG,CAAC,IAAI,OAAO;AAAA,IAAA,EACjD,KAAK,EAAE;AAEL,eAAW,aAAa,GAAG,mBAAmB,SAChD,OAAO,MAAM,MAAM,GAGjB,WAAW,aAAa,GAAG,mBAAmB,WAChD,OAAO,KAAK,MAAM,GAGhB,WAAW,aAAa,GAAG,mBAAmB,WAChD,OAAO,IAAI,MAAM,GAGf,WAAW,aAAa,GAAG,mBAAmB,cAChD,OAAO,IAAI,MAAM;AAAA,EAErB;AACE,WAAO,IAAI,GAAG,6BAA6B,WAAW,aAAa;AAAA,CAAI,CAAC;AAE5E;ACpCA,eAAsB,WAAW,SAOf;AAChB,QAAM,EAAC,KAAK,QAAQ,QAAQ,UAAU,QAAQ,WAAA,IAAc,SAEtD,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,SACE,eAAe,KACX,KACC,SAAS,QAAQ,WAAW,SAAS,QAAQ;AAAA,IACpD;AAAA,EAAA,GAGI,UAAU,GAAG,cAAc,SAAS,WAAW,eAAe,GAE9D,aAAa,QAAQ,QAErB,iBAAiB,GAAG,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,aAAa,GAAG,mBAAmB,KAAK,EAEjF;AACT,UAAM,IAAI,MAAM,0CAA0C;AAGhE;AC3CO,MAAM,iBAAiB,MAAM;AAAA,EAClC;AAAA,EAEA,YAAY,SAAiB,UAA8B;AACzD,UAAM,OAAO,GACb,KAAK,WAAW;AAAA,EAClB;AACF;ACOA,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,kBAAmC,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,qBAAqB,KAAK,QAAQ,aAAa,cAAc;AAAA,EAAA,CAC9D,GAEK,WAA+B,CAAA,GAG/B,kBAAkB,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,YAAY,KAAK,QAAQ,UAAU,QAAQ,GAC3C,WAAW,MAAM,GAAG,SAAS,SAAS,GACtC,iBAAiB,MAAM,SAAS,cAAc,SAAS;AAE7D,QAAM,OAAO,KAAK,QAAQ,SAAS,CAAC;AAEpC,QAAM,EAAC,iCAAgC,MAAM,OAAO,0BAA0B,GACxE,eAAe,6BAA6B;AAAA,IAChD,eAAe;AAAA,IACf,UAAU;AAAA,EAAA,CACX,GAEK,OAAO,CAAC,SAAS,YAAY,GAAG,YAAY,EAAE,KAAK;AAAA;AAAA,CAAM,GACzD,aAAa,MAAM,SAAS,OAAO,MAAM;AAAA,IAC7C,GAAG;AAAA,IACH,UAAU;AAAA,EAAA,CACX;AAED,aAAW,eAAe,WAAW;AACnC,UAAM,eAAe,KAAK,QAAQ,UAAU,WAAW;AAEvD,UAAM,GAAG,UAAU,cAAc,UAAU,GAG3C,MAAM,KAAK;AAAA,MACT,MAAM;AAAA,MACN,MAAM;AAAA,IAAA,CACP;AAAA,EACH;AAEA,SAAI,oBACF,MAAM,GAAG,OAAO,SAAS,GAGpB,EAAC,iBAAiB,SAAA;AAC3B;ACjHA,eAAsB,UACpB,KACA,MACoB;AACpB,QAAM,EAAC,QAAQ,KAAK,OAAO,QAAQ,QAAQ,IAAAA,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,UAAU,KAAK,QAAQ,QAAQ,SAAS;AAE9C,QAAM,WAAW;AAAA,IACf;AAAA,IACA;AAAA,IACA,QAAQ;AAAA,IACR;AAAA,IACA,UAAUA,IAAG;AAAA,IACb,YAAY,QAAQ,SAAS;AAAA,EAAA,CAC9B;AACD,QAAM,WAA+B,IAE/B,UAAuD,CAAA;AAE7D,aAAW,SAAS,KAAK,SAAS;AAChC,UAAM,aAAa,MAAM,eAAe,MAAM,YAAY,MAAM,YAE1D,kBAAkB,KAAK;AAAA,MAC3B;AAAA,MACA,KAAK,SAAS,SAAS,KAAK,QAAQ,KAAK,MAAM,UAAU,CAAC,EAAE,QAAQ,SAAS,OAAO;AAAA,IAAA,GAGhF,cAAc,MAAM,YAAY,IAAI,CAAC,eAAe,KAAK,QAAQ,KAAK,UAAU,CAAC,GACjF,YAAY,YAAY,IAAI,CAAC,eAAe,KAAK,SAAS,QAAQ,UAAU,CAAC,GAC7E,SAAS,MAAM,aAAa;AAAA,MAChC,iBAAiB,mBAAmB,CAAA;AAAA,MACpC,YAAY,QAAQ,SAAS;AAAA,MAE7B,UAAU;AAAA,MACV;AAAA,MACA;AAAA,MACA;AAAA,MACA,aAAa;AAAA,MACb,OAAO,QAAQ,SAAS;AAAA,MACxB;AAAA,MACA,UAAUA,IAAG;AAAA,MACb;AAAA,MACA,cAAc,KAAK,QAAQ,KAAKA,IAAG,cAAc,eAAe;AAAA,MAChE,mBAAmB,QAAQ,SAAS,YAAY;AAAA,IAAA,CACjD;AAED,aAAS,KAAK,GAAG,OAAO,QAAQ;AAEhC,UAAM,SAAS,OAAO,SAAS,OAAO,CAAC,QAAQ,IAAI,aAAa,kBAAkB,KAAK;AAEvF,QAAI,OAAO,SAAS;AAClB,YAAA,MAAMC,SAAO,OAAO,GACd,IAAI,SAAS,eAAe,OAAO,MAAM,iCAAiC,MAAM;AAGxF,YAAQ,KAAK,EAAC,YAAY,KAAK,QAAQ,KAAK,MAAM,UAAU,GAAG,WAAW,YAAA,CAAY;AAAA,EACxF;AAEA,SAAA,MAAMA,SAAO,OAAO,GAEb,EAAC,MAAM,OAAO,UAAU,QAAA;AACjC;AC7EO,MAAM,UAA2C;AAAA,EACtD,MAAM,CAAC,KAAK,SACV;AAAA,IACE,+BAA+B,MAAM,KAAK,IAAI,GAAG,CAAC;AAAA,IAClD;AAAA,IACA,GAAG,KAAK,QAAQ,IAAI,CAAC,UACZ,MAAM,YACV,IAAI,CAAC,eACG;AAAA,MACL,SAAS,MAAM,KAAK,MAAM,QAAQ,CAAC;AAAA,MACnC,GAAG,MAAM,OAAO,MAAM,UAAU,CAAC,IAAI,MAAM,KAAK,QAAG,CAAC,IAAI,MAAM,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,KAAK,UAAU,KAAK,IAAI,CAAC;AAAA,EAElC,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,GC1Ba,eAAqD;AAAA,EAChE,MAAM,CAAC,MAAM,SACX;AAAA,IACE;AAAA,IACA,GAAG,KAAK,QAAQ,IAAI,CAAC,UACZ,MAAM,YAAY,IAAI,CAAC,eACrB;AAAA,MACL,SAAS,MAAM,KAAK,MAAM,QAAQ,CAAC;AAAA,MACnC,GAAG,MAAM,OAAO,MAAM,UAAU,CAAC,IAAI,MAAM,KAAK,QAAG,CAAC,IAAI,MAAM,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,QAAQ,KAAK,OAAO,QAAQ,QAAQ,IAAI,WAAW,gBAAA,IAAmB;AAE7E,WAAO,IAAI,WAAW,CAAC,aAAa;AAClC,UAAI,CAAC,UAAU,UAAU,CAAC,UAAU;AAClC,eAAA,SAAS,KAAK,EAAC,MAAM,OAAO,UAAU,IAAI,SAAS,CAAA,GAAG,GACtD,SAAS,SAAA,GAEF,MAAM;AAAA,QAAC;AAGhB,YAAM,EAAC,QAAQ,UAAU,IAAA,IAAO,UAAU,OAAO;AAEjD,UAAI,CAAC;AACH,eAAA,SAAS,MAAM,IAAI,MAAM,mDAAmD,CAAC,GAEtE,MAAM;AAAA,QAAC;AAGhB,YAAM,UAAU,KAAK,QAAQ,QAAQ,SAAS;AAE9C,iBAAW;AAAA,QACT;AAAA,QACA;AAAA,QACA,QAAQ;AAAA,QACR,UAAU,UAAU;AAAA,QACpB;AAAA,QACA,YAAY,QAAQ,SAAS;AAAA,MAAA,CAC9B,EAAE,MAAM,CAAC,QAAQ;AAChB,iBAAS,MAAM,GAAG;AAAA,MACpB,CAAC;AAED,YAAM,OAAO,GAAG;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,SACE,QAAQ,SAAS,eAAe,KAC5B,KACC,UAAU,OAAO,QAAQ,WAAW,UAAU,OAAO,QAAQ;AAAA,UACpE,QAAQ;AAAA,QAAA;AAAA,QAEV,GAAG;AAAA,QACH,GAAG;AAAA,QACH,CAAC,eAAe;AACd,iBAAO,MAAM,GAAG,6BAA6B,WAAW,aAAa;AAAA,CAAI,CAAC;AAAA,QAC5E;AAAA,QACA,CAAC,eAAe;AACd,iBAAO,KAAK,GAAG,6BAA6B,WAAW,aAAa;AAAA,CAAI,CAAC;AAAA,QAC3E;AAAA,MAAA,GAII,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,kBAAkB,KAAK;AAAA,YAC3B;AAAA,YACA,KAAK,SAAS,SAAS,KAAK,QAAQ,KAAK,MAAM,UAAU,CAAC,EAAE,QAAQ,SAAS,OAAO;AAAA,UAAA,GAGhF,cAAc,MAAM,YAAY,IAAI,CAAC,eAAe,KAAK,QAAQ,KAAK,UAAU,CAAC,GACjF,YAAY,YAAY,IAAI,CAAC,eAAe,KAAK,SAAS,QAAQ,UAAU,CAAC;AAEnF,cAAI;AACF,kBAAM,SAAS,MAAM,aAAa;AAAA,cAChC,iBAAiB,mBAAmB,CAAA;AAAA,cACpC,YAAY,QAAQ,SAAS;AAAA,cAC7B;AAAA,cACA,UAAU;AAAA,cACV;AAAA,cACA;AAAA,cACA;AAAA,cACA,aAAa;AAAA,cACb,OAAO,QAAQ,SAAS;AAAA,cACxB;AAAA,cACA,UAAU,UAAU;AAAA,cACpB;AAAA,cACA,cAAc,KAAK,QAAQ,KAAK,UAAU,cAAc,eAAe;AAAA,cACvE,mBAAmB,QAAQ,SAAS,YAAY;AAAA,YAAA,CACjD;AAED,qBAAS,KAAK,GAAG,OAAO,QAAQ,GAChC,QAAQ,KAAK,EAAC,YAAY,KAAK,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,eAAe,GAAG,mBAAmB,IAAI;AAE/C,aAAO,MAAM;AACX,qBAAa,MAAA,GACb,OAAO,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,SAAS,MAAM,KAAK,MAAM,QAAQ,CAAC,KAAK,MAAM,OAAO,MAAM,UAAU,CAAC,IAAI,MAAM,KAAK,QAAG,CAAC,IAAI,MAAM,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,GClKa,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,SAAS,MAAM,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,GAAG,MAAM,OAAO,EAAE,MAAM,CAAC,IAAI,MAAM,KAAK,QAAG,CAAC,IAAI,MAAM,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,GAAG,MAAM,KAAK,KAAK,KAAK,IAAI,IAAI,MAAM,EAAE,IAAI,CAAC,CAAC;AAAA,UAC9C,GAAG,MAAM,OAAO,EAAE,MAAM,CAAC,IAAI,MAAM,KAAK,QAAG,CAAC,IAAI,MAAM,OAAO,kBAAkB,EAAE,MAAM,CAAC,CAAC;AAAA,QAAA,EACzF,KAAK,EAAE;AAAA,MAAA;AAAA,IACX,IAEF,CAAA;AAEJ,WAAO;AAAA,MACL,+BAA+B,MAAM,KAAK,UAAU,CAAC;AAAA,MACrD,aAAa,MAAM,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,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,OAAO,4BAA4B;AAAA,EAAA,CACpC,GACK,EAAC,UAAU,OAAO,WAAU,KAC5B,SAAS,KAAK,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,MAAM,KAAK,QAAQ,QAAQ,aAAa,QAAQ;AAAA,MAAA,CACjD,IAED,MAAM,KAAK;AAAA,QACT,MAAM;AAAA,QACN,MAAM,KAAK,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,kBAAkB,UAAkB;AAC3C,UAAQ,IAAA;AAAA,IACN,KAAK,SAAS,SAAS,MAAM;AAC3B,aAAO,SAAS,QAAQ,UAAU,QAAQ;AAAA,IAC5C,KAAK,SAAS,SAAS,MAAM;AAC3B,aAAO,SAAS,QAAQ,UAAU,QAAQ;AAAA,IAC5C;AACE,aAAO,SAAS,QAAQ,SAAS,OAAO;AAAA,EAAA;AAE9C;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,UAAU,sBAAsB,aAAa,kBAAkB,CAAC,GAGhE,qBAAqB,UAAU;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,uBAA0B,SAAS,eAAe,QAAQ,CAAC;AAAA;AAE/E;ACzCA,SAAS,SAAY,OAA0D;AAC7E,SAAO,CAAA,CAAQ;AACjB;AAKA,SAAS,kBAAkB,KAAkB,aAA8B;AACzE,SAAO,IAAI,mBAAmB,eAAe,IAAI,mBAAmB;AACtE;AAKA,SAAS,iBAAiB,KAAkB,aAA8B;AACxE,SAAO,IAAI,kBAAkB,eAAe,IAAI,kBAAkB;AACpE;AAGA,IAAI,yBAAyB;AAK7B,SAAS,6BACP,QACA,KACA,QACS;AACT,QAAM,sBAAsB,kBAAkB,KAAK,mBAAmB,GAChE,iCAAiC,iBAAiB,KAAK,gCAAgC;AAI7F,SAHkC,QAAQ,OAAO,qBAAqB,SAI7D,CAAC,CAAC,QAAQ,OAAO,oBAIrB,2BACH,yBAAyB,IAErB,wBACE,iCAEF,OAAO;AAAA,IACL;AAAA,EAAA,IAIF,OAAO;AAAA,IACL;AAAA,EAAA,KAOJ,CAAA,EAAA,uBAAuB;AAK7B;AAQO,SAAS,oBACd,KACA,WACc;AACd,QAAM,EAAC,QAAQ,SAAS,OAAA,IAAU,WAC5B,EAAC,QAAQ,KAAK,SAAS,UAAU,UAAU,UAAU,QAAQ,KAAK,IAAAF,QAAM,KACxE,YAAYG,UAAO,IAAI,QAAQ,UAAU,EAAE,MAAM,GACjD,SAAS,QAAQ,UAAU,IAC3B,SAAS,KAAK,SAAS,KAAK,QAAQ,GAEpC,cAAc,OAAO;AAAA,IACzB,OAAO,QAAQH,IAAG,QAAQ,QAAQ,SAAS,CAAA,CAAE,EAAE,IAAI,CAAC,CAAC,KAAK,GAAG,MACpD,CAAC,KAAK,KAAK,QAAQ,KAAKA,IAAG,QAAQ,QAAQ,WAAW,KAAK,IAAI,CAAC,CAAE,CAAC,CAC3E;AAAA,EAAA,GAGG,UAAU,UAAU,QAAQ,IAAI,CAAC,WAC9B;AAAA,IACL,GAAG;AAAA,IACH,MAAM,KAAK,SAAS,QAAQ,MAAM,MAAM,EAAE,QAAQ,aAAa,EAAE;AAAA,EAAA,IAElE,CAAA,CAAE,GAEC,YACJ,YAAY,OAAO,KAAK,QAAQ,EAAE,IAAI,CAAC,eAAe,KAAK,KAAK,IAAI,MAAM,UAAU,CAAC,GAEjF,cAAc,YAAY,OAAO,OAAO,QAAQ,EAAE,IAAI,CAAC,MAAM,KAAK,QAAQ,KAAK,EAAE,MAAM,CAAC,GAExF,eAAe,OAAO;AAAA,IAC1B,OAAO,QAAQ,QAAQ,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,IAAK,QAAQ,UAAU,CAAA,GAG1F,yBAAyB,6BAA6B,QAAQ,KAAK,MAAM,GAEzE,iBAAiB;AAAA,IACrB,QAAQ;AAAA,MACN,mBAAmB;AAAA,MACnB,QACE,IAAI,SAAS,sBACT,EAAC,GAAG,iBACJ;AAAA,QACE,6BAA6B,CAAC,QAAQ;AACpC,gBAAM,aAAa,KAAK,KAAK,SAAS,KAAK,GAAG,CAAC,IACzC,QAAQ,QAAQ,KAAK,CAAC,MAAM,EAAE,WAAW,UAAU;AAEzD,iBAAK,QAME,KAAK;AAAA,YACV,KAAK,SAAS,KAAK,KAAK,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,IACD,MAAM;AAAA,MACJ,SAAS,EAAC,GAAG,YAAA;AAAA,IAAW,CACzB;AAAA,IACD,YAAY;AAAA,MACV,SAAS,YAAY;AAAA,MACrB,YAAY,CAAC,QAAQ,QAAQ,OAAO,QAAQ,SAAS,OAAO;AAAA,MAC5D,gBAAgB;AAAA,IAAA,CACjB;AAAA,IACD,SAAA;AAAA,IACA,KAAA;AAAA,IACA,QAAQ,QAAQ,kBACd;AAAA,MACE,QAAQ,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,IAEf,QAAQ,QAAQ;AAAA,IAAA;AAAA,IAExB,QAAQ,QAAQ,kBACd;AAAA,MACE,QAAQ,QAAQ,mBAAmB,KAC/B;AAAA,QACE,iBACE,YAAY,SACR,oBACA,YAAY,YACV,uBACA;AAAA,QACR,cAAc;AAAA,MAAA,IAEhB;AAAA,QACE,iBACE,OAAO,OAAO,OAAO,eAAe,WAAY,YAChD,OAAO,OAAO,eAAe,QAAQ,OACjC,OAAO,OAAO,eAAe,QAAQ,OACrC,YAAY,SACV,oBACA,YAAY,YACV,uBACA;AAAA,QACV,cAAc,OAAO,OAAO,eAAe,gBAAgB;AAAA,MAAA;AAAA,IAC7D;AAAA,KAEP,QAAQ,OAAO,iBAAiB,2BAC/B,MAAM;AAAA,MACJ,SAAS;AAAA,MACT,SAAS,CAAC,0BAA0B;AAAA,MACpC,YAAY;AAAA,QACV,SAAS,CAAC,KAAK;AAAA,MAAA;AAAA,MAEjB,cAAc;AAAA,MACd,UAAU;AAAA,MACV,YAAY,CAAC,OAAO,QAAQ,OAAO,MAAM;AAAA,MACzC,SAAS;AAAA;AAAA,QAEP,0BAA0B;AAAA,UACxB;AAAA,UACA;AAAA;AAAA,YAEE,UAAU;AAAA;AAAA,YAEV,2BAA2B;AAAA;AAAA,YAE3B,MAAM;AAAA;AAAA,YAEN,SAAS;AAAA,YACT,GAAI,OAAO,QAAQ,OAAO,oBAAqB,WAC3C,OAAO,MAAM,mBACb,CAAA;AAAA,UAAC;AAAA,QACP;AAAA,QAEF,QAAQ,OAAO,iBAAiB;AAAA,UAC9B;AAAA,UACA,QAAQ,wBAAwB,CAAA;AAAA,QAAC;AAAA,MACnC,EACA,OAAO,QAAQ;AAAA,IAAA,CAClB;AAAA,IACH,QAAQ;AAAA,MACN,KAAK,QAAQ,OAAO;AAAA,MACpB,YAAY,QAAQ,cAAc;AAAA,MAClC,aAAa,QAAQ,eAAe;AAAA,MACpC,iBAAiB,QAAQ,mBAAmB;AAAA,MAC5C;AAAA,MACA,UAAU,IAAI,GAAG,cAAc;AAAA,MAC/B,aAAa;AAAA,MACb,cAAc,QAAQ,WAAW;AAAA,MACjC,WAAW;AAAA,QACT,oBAAoB;AAAA,MAAA;AAAA,IACtB,CACD;AAAA,IACD,MAAM,QAAQ,QAAQ,OAAO,OAAO,KAClC,qBAAqB;AAAA,MACnB,SAAS;AAAA,MACT,UAAU;AAAA,MACV,SAAS,OAAO,MAAM;AAAA,IAAA,CACvB;AAAA,IACH,wBACE,sBAAsB;AAAA,MACpB,aAAa,WAAW,SAAS,cAAc,KAAK,WAAW,IAAI,KAAO;AAAA,MAC1E,GAAI,OAAO,QAAQ,QAAQ,kBAAmB,YAC1C,CAAA,IACA,QAAQ,QAAQ;AAAA,IAAA,CACrB;AAAA,IACH,UACE,OAAO;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,QAAQ,GAEX,cAAc,QAAQ,QAAQ,SAE9B,UAAU,MAAM,QAAQ,WAAW,IACrC,eAAe,OAAO,WAAW,IACjC,sBAAsB,QAAQ,QAAQ,SAAS,cAAc,GAE3D,qBAAqB,QAAQ,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,SAAS,KAAK,QAAQ,KAAK,QAAQ,QAAQ,GAAG,EAAE;AAEtD,cAAI,aAAa,SAAS,MAAM;AAC9B,mBAAA,OAAO;AAAA,cACL,iEAA4D,KAAK;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,IAAI,eAAgB,GAAG,SAAS,MAAM,IAAI,KAAO,CAAC;AAAA,QACtE,aAAa;AAAA,QACb,GAAG,QAAQ,QAAQ;AAAA,MAAA;AAAA,MAErB,4BAA4B,QAAQ,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,WAAW,QAAQ,aAAa;AAAA,MAChC,wBAAwB;AAAA,MACxB,uBAAuB;AAAA,MACvB,gBAAgB;AAAA,MAChB,GAAG,QAAQ,QAAQ;AAAA,IAAA;AAAA,EACrB;AAEJ;AAEA,SAAS,cAAc,KAAkB,aAA8B;AACrE,SAAO,IAAI,eACP,eAAe,IAAI,eACnB,IAAI,mBACF,eAAe,IAAI,mBACnB;AACR;ACvXO,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,SAAS,MAAM,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,GAAG,MAAM,OAAO,EAAE,MAAM,CAAC,IAAI,MAAM,KAAK,QAAG,CAAC,IAAI,MAAM,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,GAAG,MAAM,KAAK,KAAK,KAAK,IAAI,IAAI,MAAM,EAAE,IAAI,CAAC,CAAC;AAAA,UAC9C,GAAG,MAAM,OAAO,EAAE,MAAM,CAAC,IAAI,MAAM,KAAK,QAAG,CAAC,IAAI,MAAM,OAAO,EAAE,MAAM,CAAC;AAAA,QAAA,EACtE,KAAK,EAAE;AAAA,MAAA;AAAA,IACX,IAEF,CAAA;AAEJ,WAAO;AAAA,MACL;AAAA,MACA,aAAa,MAAM,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,KAAK,YAAY,KAAK,IAAI,CAAC;AAAA,EAEpC,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,SAAS,KAAK,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,MAAM,OAAO;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,MAAM,KAAK,QAAQ,QAAQ,aAAa,QAAQ;AAAA,MAAA,CACjD,IAED,MAAM,KAAK;AAAA,QACT,MAAM;AAAA,QACN,MAAM,KAAK,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;AC1IO,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,GAAG,MAAM,KAAK,KAAK,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,IAAI,WAAW,CAAC,aAAa;AAClC,YAAM,eAAmC;AAAA,QACvC,GAAG;AAAA,QACH,QAAQ;AAAA,MAAA,GAGJ,UAAUI,MAAY,YAAY;AAExC,aAAA,QAAQ,GAAG,SAAS,CAAC,UAAU;AAC7B,iBAAS,KAAK,KAAK;AAAA,MACrB,CAAC,GAEM,MAAM;AACN,gBAAQ,MAAA;AAAA,MACf;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,GAAG,MAAM,KAAK,KAAK,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;"}
1
+ {"version":3,"file":"index.js","sources":["../../src/node/core/config/vanillaExtract.ts","../../src/node/core/pkg/writeBundleCssExports.ts","../../src/node/tasks/dts/printDiagnostic.ts","../../src/node/tasks/dts/buildTypes.ts","../../src/node/tasks/dts/DtsError.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/tasks/rolldown/rolldownDtsTask.ts","../../src/node/tasks/rollup/bundleCssShim.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"],"sourcesContent":["import type {PkgConfigOptions, PkgRuntime, PkgVanillaExtractOptions} from './types.ts'\n\n/** The default name of the extracted CSS file. */\nconst DEFAULT_VANILLA_EXTRACT_CSS_NAME = 'bundle.css'\n\nexport interface ResolvedVanillaExtract {\n enabled: boolean\n /** Normalized options (the object form, or `{}` when `vanillaExtract: true`). */\n options: PkgVanillaExtractOptions\n /**\n * Whether to automatically wire up the conditional CSS export pattern (intro import, JS shim, and\n * the `package.json` export). Only `true` when vanilla-extract is enabled.\n */\n compatMode: boolean\n}\n\n/**\n * Normalize the `rollup.vanillaExtract` config into a consistent shape and resolve whether\n * compatibility mode is active.\n * @internal\n */\nexport function resolveVanillaExtract(\n config: PkgConfigOptions | undefined,\n): ResolvedVanillaExtract {\n const value = config?.rollup?.vanillaExtract\n const enabled = Boolean(value)\n const options: PkgVanillaExtractOptions = value === true || !value ? {} : value\n const compatMode = enabled ? (options.extract?.compatMode ?? true) : false\n\n return {enabled, options, compatMode}\n}\n\n/**\n * Resolve the name of the emitted CSS file. In compat mode this is a stable, runtime-independent\n * name (so it can back a single conditional export); otherwise it keeps the historical\n * runtime-suffixed defaults.\n * @internal\n */\nexport function resolveVanillaExtractCssName(\n options: PkgVanillaExtractOptions,\n context: {compatMode: boolean; runtime: PkgRuntime},\n): string {\n if (options.extract?.name) {\n return options.extract.name\n }\n\n if (context.compatMode) {\n return DEFAULT_VANILLA_EXTRACT_CSS_NAME\n }\n\n if (context.runtime === 'node') return 'bundle.node.css'\n if (context.runtime === 'browser') return 'bundle.browser.css'\n return DEFAULT_VANILLA_EXTRACT_CSS_NAME\n}\n","import {readFile, writeFile} from 'node:fs/promises'\nimport path from 'node:path'\nimport type {Logger} from '../../logger.ts'\n\n/**\n * Build the conditional CSS export object that vanilla-extract compat mode expects, e.g.\n * ```json\n * {\n * \"browser\": \"./dist/bundle.css\",\n * \"style\": \"./dist/bundle.css\",\n * \"node\": \"./dist/bundle.css.js\",\n * \"default\": \"./dist/bundle.css.js\"\n * }\n * ```\n */\nfunction createConditionalCssExport(cssFile: string, shimFile: string) {\n return {browser: cssFile, style: cssFile, node: shimFile, default: shimFile}\n}\n\nfunction hasMatchingExport(value: unknown, expected: Record<string, string>): boolean {\n if (typeof value !== 'object' || value === null) return false\n const actual = Object.fromEntries(Object.entries(value))\n const keys = Object.keys(expected)\n return (\n keys.length === Object.keys(actual).length && keys.every((key) => actual[key] === expected[key])\n )\n}\n\nfunction detectIndent(source: string): string | number {\n const match = source.match(/\\n([ \\t]+)\\S/)\n if (!match) return 2\n const indent = match[1]!\n return indent.includes('\\t') ? '\\t' : indent.length\n}\n\n/**\n * Write the conditional `\"./<cssName>\"` export to `package.json` (used by vanilla-extract compat\n * mode), so userland does not have to maintain it by hand. The write is idempotent: if the export\n * already matches, the file is left untouched.\n *\n * @internal\n */\nexport async function writeBundleCssExports(options: {\n cwd: string\n distPath: string\n cssName: string\n logger: Logger\n}): Promise<void> {\n const {cwd, distPath, cssName, logger} = options\n\n const pkgPath = path.resolve(cwd, 'package.json')\n const source = await readFile(pkgPath, 'utf8')\n // oxlint-disable-next-line no-unsafe-type-assertion\n const pkg = JSON.parse(source) as {exports?: Record<string, unknown>}\n\n // Normalize to POSIX separators - `path.relative` uses `\\\\` on Windows, but `exports` paths in\n // package.json must always use `/`.\n const distRel = (path.relative(cwd, distPath) || 'dist').split(path.sep).join('/')\n const exportKey = `./${cssName}`\n const cssFile = `./${path.posix.join(distRel, cssName)}`\n const shimFile = `./${path.posix.join(distRel, `${cssName}.js`)}`\n const conditionalExport = createConditionalCssExport(cssFile, shimFile)\n\n if (hasMatchingExport(pkg.exports?.[exportKey], conditionalExport)) {\n return\n }\n\n // Re-insert the css export (before `./package.json` when present) preserving the existing order.\n const nextExports: Record<string, unknown> = {}\n let inserted = false\n for (const [key, value] of Object.entries(pkg.exports ?? {})) {\n if (key === exportKey) continue\n if (key === './package.json' && !inserted) {\n nextExports[exportKey] = conditionalExport\n inserted = true\n }\n nextExports[key] = value\n }\n if (!inserted) {\n nextExports[exportKey] = conditionalExport\n }\n pkg.exports = nextExports\n\n await writeFile(pkgPath, `${JSON.stringify(pkg, null, detectIndent(source))}\\n`)\n logger.log(\n `Updated package.json: added \\`exports[\"${exportKey}\"]\\` for vanilla-extract compat mode`,\n )\n}\n","import path from 'node:path'\nimport chalk from 'chalk'\nimport ts from 'typescript'\nimport type {Logger} from '../../logger.ts'\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.ts'\nimport {printDiagnostic} from './printDiagnostic.ts'\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 checkTypes?: boolean\n}): Promise<void> {\n const {cwd, logger, outDir, tsconfig, strict, checkTypes} = 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:\n checkTypes === false\n ? true\n : (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 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.ts'\nimport type {BuildFile} from '../../core/contexts/buildContext.ts'\nimport {createApiExtractorConfig} from './createApiExtractorConfig.ts'\nimport {createTSDocConfig} from './createTSDocConfig.ts'\nimport {getExtractMessagesConfig} from './getExtractMessagesConfig.ts'\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 {extractModuleBlocksFromTypes} = await import('./extractModuleBlocks.ts')\n const moduleBlocks = 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 {ExtractorLogLevel, type ExtractorMessage} from '@microsoft/api-extractor'\nimport {rimraf} from 'rimraf'\nimport type {BuildContext} from '../../core/contexts/buildContext.ts'\nimport {buildTypes} from './buildTypes.ts'\nimport {DtsError} from './DtsError.ts'\nimport {extractTypes} from './extractTypes.ts'\nimport type {DtsResult, DtsTask, DtsWatchTask} from './types.ts'\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({\n cwd,\n logger,\n outDir: tmpPath,\n strict,\n tsconfig: ts.config,\n checkTypes: config?.extract?.checkTypes,\n })\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 === ExtractorLogLevel.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 {from} from 'rxjs'\nimport {printExtractMessages} from '../../printExtractMessages.ts'\nimport type {TaskHandler} from '../types.ts'\nimport {doExtract} from './doExtract.ts'\nimport {DtsError} from './DtsError.ts'\nimport type {DtsResult, DtsTask} from './types.ts'\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 from(doExtract(ctx, task))\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.ts'\nimport type {TaskHandler} from '../types.ts'\nimport {buildTypes} from './buildTypes.ts'\nimport {DtsError} from './DtsError.ts'\nimport {extractTypes} from './extractTypes.ts'\nimport type {DtsResult, DtsWatchTask} from './types.ts'\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 checkTypes: config?.extract?.checkTypes,\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 noCheck:\n config?.extract?.checkTypes === false\n ? true\n : (tsContext.config.options.noCheck ?? tsContext.config.options.isolatedDeclarations),\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 // oxlint-disable-next-line unbound-method\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","import path from 'node:path'\nimport chalk from 'chalk'\nimport {from} from 'rxjs'\nimport {createConsoleSpy} from '../../consoleSpy.ts'\nimport type {BuildContext} from '../../core/contexts/buildContext.ts'\nimport type {RolldownDtsTask, TaskHandler} from '../types.ts'\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.ts'),\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(filePath: string) {\n switch (true) {\n case filePath.endsWith('.mjs'):\n return filePath.replace(/\\.mjs$/, '.d.mts')\n case filePath.endsWith('.cjs'):\n return filePath.replace(/\\.cjs$/, '.d.cts')\n default:\n return filePath.replace(/\\.js$/, '.d.ts')\n }\n}\n","import type {Plugin} from 'rollup'\n\n/**\n * Emits a no-op JavaScript shim (`export default \"\"`) alongside the extracted CSS. The conditional\n * `./<css>` export points its `node`/`default` conditions at this file so that the self-referential\n * `import \"<pkg>/<css>\"` resolves to a harmless module in runtimes that cannot import `.css` files,\n * instead of throwing `Error: Unknown file extension \".css\"`.\n *\n * @param options.fileName - The shim file name, e.g. `bundle.css.js`.\n * @internal\n */\nexport function bundleCssShim(options: {fileName: string}): Plugin {\n const cssName = options.fileName.replace(/\\.js$/, '')\n\n return {\n name: 'pkg-utils:bundle-css-shim',\n generateBundle() {\n this.emitFile({\n type: 'asset',\n fileName: options.fileName,\n source: `// No-op shim for \\`${cssName}\\` in runtimes that cannot import \\`.css\\` files directly.\\nexport default \"\"\\n`,\n })\n },\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 minify?: boolean\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 options.minify ?? true,\n )\n }\n }\n }\n },\n }\n}\n\nasync function transformCss(\n asset: OutputAsset,\n sourceMapAsset: OutputAsset | undefined,\n browserslistConfig: string | string[],\n minify: boolean,\n) {\n const css = asset.source.toString()\n const file = asset.fileName\n\n const targets = browserslistToTargets(browserslist(browserslistConfig))\n\n // process (and, unless disabled, minify) css using lightningcss\n const lightningCssResult = transform({\n filename: file,\n code: Buffer.from(css),\n minify,\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 {optimizeLodashImports} from '@optimize-lodash/rollup-plugin'\nimport alias from '@rollup/plugin-alias'\nimport {babel, getBabelOutputPlugin} from '@rollup/plugin-babel'\nimport commonjs from '@rollup/plugin-commonjs'\nimport json from '@rollup/plugin-json'\nimport {nodeResolve} from '@rollup/plugin-node-resolve'\nimport replace from '@rollup/plugin-replace'\nimport terser from '@rollup/plugin-terser'\nimport type {PackageJSON} from '@sanity/parse-package-json'\nimport {vanillaExtractPlugin} from '@vanilla-extract/rollup-plugin'\nimport type {InputOptions, OutputOptions, RenderedChunk} from 'rollup'\nimport esbuild from 'rollup-plugin-esbuild'\nimport {pkgExtMap as extMap} from '../../../node/core/pkg/pkgExt.ts'\nimport {resolveConfigProperty} from '../../core/config/resolveConfigProperty.ts'\nimport {\n resolveVanillaExtract,\n resolveVanillaExtractCssName,\n} from '../../core/config/vanillaExtract.ts'\nimport type {BuildContext} from '../../core/contexts/buildContext.ts'\nimport {DEFAULT_BROWSERSLIST_QUERY} from '../../core/defaults.ts'\nimport type {RollupTask, RollupWatchTask} from '../types.ts'\nimport {bundleCssShim} from './bundleCssShim.ts'\nimport {optimizeCss} from './optimizeCss.ts'\n\n// Type guard to filter out falsy values\nfunction isTruthy<T>(value: T | false | null | undefined | 0 | ''): value is T {\n return Boolean(value)\n}\n\n/**\n * Check if a package is in the peerDependencies\n */\nfunction hasPeerDependency(pkg: PackageJSON, packageName: string): boolean {\n return pkg.peerDependencies ? packageName in pkg.peerDependencies : false\n}\n\n/**\n * Check if a package is in the devDependencies\n */\nfunction hasDevDependency(pkg: PackageJSON, packageName: string): boolean {\n return pkg.devDependencies ? packageName in pkg.devDependencies : false\n}\n\n// Track if we've already logged styled-components messages to avoid duplicates\nlet styledComponentsLogged = false\n\n/**\n * Determine if styled-components should be enabled\n */\nfunction shouldEnableStyledComponents(\n config: BuildContext['config'],\n pkg: PackageJSON,\n logger: BuildContext['logger'],\n): boolean {\n const hasStyledComponents = hasPeerDependency(pkg, 'styled-components')\n const hasBabelPluginStyledComponents = hasDevDependency(pkg, 'babel-plugin-styled-components')\n const styledComponentsConfigSet = config?.babel?.styledComponents !== undefined\n\n // If explicitly set, respect that\n if (styledComponentsConfigSet) {\n return !!config?.babel?.styledComponents\n }\n\n // Log messages only once per build\n if (!styledComponentsLogged) {\n styledComponentsLogged = true\n\n if (hasStyledComponents) {\n if (hasBabelPluginStyledComponents) {\n // Log that auto-enabling will happen\n logger.log(\n 'Detected styled-components in peerDependencies and babel-plugin-styled-components in devDependencies. Automatically enabling babel.styledComponents. To disable this, set `babel: { styledComponents: false }` in package.config.ts.',\n )\n } else {\n // Warn if styled-components is present but babel-plugin-styled-components is not\n logger.warn(\n 'Detected styled-components in peerDependencies. Consider installing babel-plugin-styled-components as a devDependency to enable better debugging and optimization. Add `\"babel-plugin-styled-components\": \"^2.0.0\"` to devDependencies and it will be automatically enabled, or set `babel: { styledComponents: false }` in package.config.ts to disable this warning.',\n )\n }\n }\n }\n\n // Auto-enable if both styled-components and babel plugin are present\n if (hasStyledComponents && hasBabelPluginStyledComponents) {\n return true\n }\n\n return false\n}\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 // Auto-detect if styled-components should be enabled\n const enableStyledComponents = shouldEnableStyledComponents(config, pkg, logger)\n\n // Resolve vanilla-extract options + the conditional CSS export \"compat mode\"\n const vanillaExtract = resolveVanillaExtract(config)\n const vanillaExtractCssName = resolveVanillaExtractCssName(vanillaExtract.options, {\n compatMode: vanillaExtract.compatMode,\n runtime,\n })\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 vanillaExtract.enabled &&\n vanillaExtractPlugin({\n identifiers: vanillaExtract.options.identifiers ?? 'short',\n cwd: vanillaExtract.options.cwd,\n esbuildOptions: vanillaExtract.options.esbuildOptions,\n unstable_injectFilescopes: vanillaExtract.options.unstable_injectFilescopes,\n extract: {\n name: vanillaExtractCssName,\n sourcemap: vanillaExtract.options.extract?.sourcemap ?? true,\n },\n }),\n vanillaExtract.enabled &&\n optimizeCss({\n extractFileName: vanillaExtractCssName,\n browserslist: vanillaExtract.options.browserslist || DEFAULT_BROWSERSLIST_QUERY,\n minify: vanillaExtract.options.minify ?? true,\n }),\n // In compat mode, emit the no-op JS shim that the `node`/`default` conditions of the\n // `./<css>` export resolve to.\n vanillaExtract.compatMode && bundleCssShim({fileName: `${vanillaExtractCssName}.js`}),\n (config?.babel?.reactCompiler || enableStyledComponents) &&\n babel({\n babelrc: false,\n presets: ['@babel/preset-typescript'],\n babelHelpers: 'bundled',\n parallel: true,\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 enableStyledComponents && [\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(isTruthy),\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 parallel: true,\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(isTruthy)\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, isExternal) => (id.endsWith('.css') ? true : !isExternal),\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 // In compat mode, inject the self-referential bundle.css import into entry chunks so userland\n // does not need to set `rollup.output.intro` themselves. Use `require()` for CommonJS output\n // (a top-level `import` would be invalid in a `.cjs` bundle).\n ...(vanillaExtract.compatMode\n ? {\n intro: composeIntro(\n format === 'commonjs'\n ? `require(${JSON.stringify(`${pkg.name}/${vanillaExtractCssName}`)})`\n : `import ${JSON.stringify(`${pkg.name}/${vanillaExtractCssName}`)}`,\n config?.rollup?.output?.intro,\n ),\n }\n : {}),\n },\n }\n}\n\n/**\n * Build an `intro` function that prepends `autoImport` to every entry chunk, preserving any\n * user-provided `intro`.\n */\nfunction composeIntro(\n autoImport: string,\n userIntro: OutputOptions['intro'],\n): (chunkInfo: RenderedChunk) => Promise<string> {\n return async (chunkInfo) => {\n const auto = chunkInfo.isEntry ? `${autoImport}\\n` : ''\n const user =\n typeof userIntro === 'function'\n ? await userIntro(chunkInfo)\n : typeof userIntro === 'string'\n ? userIntro\n : ''\n\n return `${auto}${user}`\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 {from} from 'rxjs'\nimport {createConsoleSpy} from '../../consoleSpy.ts'\nimport type {BuildContext} from '../../core/contexts/buildContext.ts'\nimport type {RollupTask, TaskHandler} from '../types.ts'\nimport {resolveRollupConfig} from './resolveRollupConfig.ts'\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 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: 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.ts'\nimport {resolveRollupConfig} from './resolveRollupConfig.ts'\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 void 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.ts'\nimport {dtsWatchTask} from './dts/dtsWatchTask.ts'\nimport {rolldownDtsTask} from './rolldown/rolldownDtsTask.ts'\nimport {rollupTask} from './rollup/rollupTask.ts'\nimport {rollupWatchTask} from './rollup/rollupWatchTask.ts'\nimport type {BuildTaskHandlers, WatchTaskHandlers} from './types.ts'\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"],"names":["ts","rimraf","execPromise","extMap","rollupWatch"],"mappings":"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"}
@@ -2,9 +2,9 @@ import path from "node:path";
2
2
  import { up } from "empathic/package";
3
3
  import { switchMap } from "rxjs";
4
4
  import { loadConfig } from "./defaults.js";
5
+ import { writeBundleCssExports, watchTaskHandlers, resolveVanillaExtract, resolveVanillaExtractCssName } from "./index.js";
5
6
  import { getTargetPaths, loadPkgWithReporting, resolveBuildContext } from "./resolveBuildContext.js";
6
7
  import { createLogger, handleError } from "./handleError.js";
7
- import { watchTaskHandlers } from "./index.js";
8
8
  function resolveWatchTasks(ctx) {
9
9
  const { pkg, target } = ctx, tasks = [], exports = Object.entries(ctx.exports || {}).map(
10
10
  ([_path, exp]) => Object.assign({}, exp, { _path })
@@ -107,6 +107,16 @@ async function watch(options) {
107
107
  for (const sub of taskSubscriptions)
108
108
  sub.unsubscribe();
109
109
  taskSubscriptions.length = 0;
110
+ const vanillaExtract = resolveVanillaExtract(ctx.config);
111
+ vanillaExtract.compatMode && await writeBundleCssExports({
112
+ cwd,
113
+ distPath: ctx.distPath,
114
+ cssName: resolveVanillaExtractCssName(vanillaExtract.options, {
115
+ compatMode: !0,
116
+ runtime: "*"
117
+ }),
118
+ logger
119
+ });
110
120
  const watchTasks = resolveWatchTasks(ctx);
111
121
  for (const task of watchTasks) {
112
122
  const handler = watchTaskHandlers[task.type], sub = handler.exec(ctx, task).subscribe({
@@ -1 +1 @@
1
- {"version":3,"file":"watchAction.js","sources":["../../src/node/resolveWatchTasks.ts","../../src/node/watch.ts","../../src/cli/watchAction.ts"],"sourcesContent":["import path from 'node:path'\nimport type {PkgExport, PkgFormat, PkgRuntime} from './core/config/types.ts'\nimport type {BuildContext} from './core/contexts/buildContext.ts'\nimport {getTargetPaths} from './tasks/dts/getTargetPaths.ts'\nimport type {DtsWatchTask} from './tasks/dts/types.ts'\nimport type {RollupTaskEntry, RollupWatchTask, WatchTask} from './tasks/types.ts'\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]) => Object.assign({}, exp, {_path}) 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 // Parse rollup:commonjs:node tasks\n for (const exp of exports) {\n const output = exp.node?.require\n\n if (!output) continue\n\n addRollupTaskEntry('commonjs', 'node', {\n path: exp._path,\n source: exp.node?.source || exp.source,\n output,\n })\n }\n\n // Parse rollup:esm:node tasks\n for (const exp of exports) {\n const output = exp.node?.import\n\n if (!output) continue\n\n addRollupTaskEntry('esm', 'node', {\n path: exp._path,\n source: exp.node?.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 {up as findPkgPath} from 'empathic/package'\nimport type {Subscription} from 'rxjs'\nimport {switchMap} from 'rxjs'\nimport {loadConfig} from './core/config/loadConfig.ts'\nimport {loadPkgWithReporting} from './core/pkg/loadPkgWithReporting.ts'\nimport {createLogger} from './logger.ts'\nimport {resolveBuildContext} from './resolveBuildContext.ts'\nimport {resolveWatchTasks} from './resolveWatchTasks.ts'\nimport {watchTaskHandlers} from './tasks/index.ts'\nimport {type TaskHandler, type WatchTask} from './tasks/types.ts'\n\n/** @public */\nexport async function watch(options: {\n cwd: string\n strict?: boolean\n tsconfig?: string\n signal?: AbortSignal\n}): Promise<void> {\n const {cwd, strict = false, tsconfig: tsconfigOption, signal} = options\n\n const logger = createLogger()\n\n const {watchConfigFiles} = await import('./watchConfigFiles.ts')\n const configFiles$ = await watchConfigFiles({cwd, logger})\n\n const taskSubscriptions: Subscription[] = []\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 const pkgPath = findPkgPath({cwd})\n if (!packageJsonPath || !pkgPath) {\n throw new Error('missing package.json', {cause: {cwd}})\n }\n\n const config = await loadConfig({cwd, pkgPath})\n const {parseStrictOptions} = await import('./strict.ts')\n const strictOptions = parseStrictOptions(config?.strictOptions ?? {})\n const pkg = await loadPkgWithReporting({pkgPath, logger, strict, strictOptions})\n const tsconfig = tsconfigOption || config?.tsconfig || 'tsconfig.json'\n\n return resolveBuildContext({config, cwd, logger, pkg, strict, tsconfig})\n }),\n )\n\n const ctxSubscription = ctx$.subscribe(async (ctx) => {\n // Unsubscribe previous task subscriptions when config changes trigger a new context\n for (const sub of taskSubscriptions) {\n sub.unsubscribe()\n }\n taskSubscriptions.length = 0\n\n const watchTasks = resolveWatchTasks(ctx)\n\n for (const task of watchTasks) {\n // eslint-disable-next-line @typescript-eslint/no-unsafe-type-assertion -- TypeScript can't infer the correct handler type from discriminated union\n const handler = watchTaskHandlers[task.type] as TaskHandler<WatchTask, unknown>\n const result$ = handler.exec(ctx, task)\n\n const sub = 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 taskSubscriptions.push(sub)\n }\n })\n\n if (signal) {\n signal.addEventListener(\n 'abort',\n () => {\n for (const sub of taskSubscriptions) {\n sub.unsubscribe()\n }\n taskSubscriptions.length = 0\n ctxSubscription.unsubscribe()\n },\n {once: true},\n )\n }\n}\n","import {watch} from '../node/watch.ts'\nimport {handleError} from './handleError.ts'\n\nexport async function watchAction(options: {strict?: boolean; tsconfig?: string}): Promise<void> {\n try {\n await watch({\n cwd: process.cwd(),\n strict: options.strict,\n tsconfig: options.tsconfig,\n })\n } catch (err) {\n handleError(err)\n }\n}\n"],"names":["findPkgPath"],"mappings":"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"}
1
+ {"version":3,"file":"watchAction.js","sources":["../../src/node/resolveWatchTasks.ts","../../src/node/watch.ts","../../src/cli/watchAction.ts"],"sourcesContent":["import path from 'node:path'\nimport type {PkgExport, PkgFormat, PkgRuntime} from './core/config/types.ts'\nimport type {BuildContext} from './core/contexts/buildContext.ts'\nimport {getTargetPaths} from './tasks/dts/getTargetPaths.ts'\nimport type {DtsWatchTask} from './tasks/dts/types.ts'\nimport type {RollupTaskEntry, RollupWatchTask, WatchTask} from './tasks/types.ts'\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]) => Object.assign({}, exp, {_path}) 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 // Parse rollup:commonjs:node tasks\n for (const exp of exports) {\n const output = exp.node?.require\n\n if (!output) continue\n\n addRollupTaskEntry('commonjs', 'node', {\n path: exp._path,\n source: exp.node?.source || exp.source,\n output,\n })\n }\n\n // Parse rollup:esm:node tasks\n for (const exp of exports) {\n const output = exp.node?.import\n\n if (!output) continue\n\n addRollupTaskEntry('esm', 'node', {\n path: exp._path,\n source: exp.node?.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 {up as findPkgPath} from 'empathic/package'\nimport type {Subscription} from 'rxjs'\nimport {switchMap} from 'rxjs'\nimport {loadConfig} from './core/config/loadConfig.ts'\nimport {resolveVanillaExtract, resolveVanillaExtractCssName} from './core/config/vanillaExtract.ts'\nimport {loadPkgWithReporting} from './core/pkg/loadPkgWithReporting.ts'\nimport {writeBundleCssExports} from './core/pkg/writeBundleCssExports.ts'\nimport {createLogger} from './logger.ts'\nimport {resolveBuildContext} from './resolveBuildContext.ts'\nimport {resolveWatchTasks} from './resolveWatchTasks.ts'\nimport {watchTaskHandlers} from './tasks/index.ts'\nimport {type TaskHandler, type WatchTask} from './tasks/types.ts'\n\n/** @public */\nexport async function watch(options: {\n cwd: string\n strict?: boolean\n tsconfig?: string\n signal?: AbortSignal\n}): Promise<void> {\n const {cwd, strict = false, tsconfig: tsconfigOption, signal} = options\n\n const logger = createLogger()\n\n const {watchConfigFiles} = await import('./watchConfigFiles.ts')\n const configFiles$ = await watchConfigFiles({cwd, logger})\n\n const taskSubscriptions: Subscription[] = []\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 const pkgPath = findPkgPath({cwd})\n if (!packageJsonPath || !pkgPath) {\n throw new Error('missing package.json', {cause: {cwd}})\n }\n\n const config = await loadConfig({cwd, pkgPath})\n const {parseStrictOptions} = await import('./strict.ts')\n const strictOptions = parseStrictOptions(config?.strictOptions ?? {})\n const pkg = await loadPkgWithReporting({pkgPath, logger, strict, strictOptions})\n const tsconfig = tsconfigOption || config?.tsconfig || 'tsconfig.json'\n\n return resolveBuildContext({config, cwd, logger, pkg, strict, tsconfig})\n }),\n )\n\n const ctxSubscription = ctx$.subscribe(async (ctx) => {\n // Unsubscribe previous task subscriptions when config changes trigger a new context\n for (const sub of taskSubscriptions) {\n sub.unsubscribe()\n }\n taskSubscriptions.length = 0\n\n // Keep the conditional `./<css>` export in package.json in sync with the injected\n // `import \"<pkg>/<css>\"` for watch builds too (idempotent, so it won't loop).\n const vanillaExtract = resolveVanillaExtract(ctx.config)\n if (vanillaExtract.compatMode) {\n await writeBundleCssExports({\n cwd,\n distPath: ctx.distPath,\n cssName: resolveVanillaExtractCssName(vanillaExtract.options, {\n compatMode: true,\n runtime: '*',\n }),\n logger,\n })\n }\n\n const watchTasks = resolveWatchTasks(ctx)\n\n for (const task of watchTasks) {\n // eslint-disable-next-line @typescript-eslint/no-unsafe-type-assertion -- TypeScript can't infer the correct handler type from discriminated union\n const handler = watchTaskHandlers[task.type] as TaskHandler<WatchTask, unknown>\n const result$ = handler.exec(ctx, task)\n\n const sub = 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 taskSubscriptions.push(sub)\n }\n })\n\n if (signal) {\n signal.addEventListener(\n 'abort',\n () => {\n for (const sub of taskSubscriptions) {\n sub.unsubscribe()\n }\n taskSubscriptions.length = 0\n ctxSubscription.unsubscribe()\n },\n {once: true},\n )\n }\n}\n","import {watch} from '../node/watch.ts'\nimport {handleError} from './handleError.ts'\n\nexport async function watchAction(options: {strict?: boolean; tsconfig?: string}): Promise<void> {\n try {\n await watch({\n cwd: process.cwd(),\n strict: options.strict,\n tsconfig: options.tsconfig,\n })\n } catch (err) {\n handleError(err)\n }\n}\n"],"names":["findPkgPath"],"mappings":";;;;;;;AAQO,SAAS,kBAAkB,KAAgC;AAChE,QAAM,EAAC,KAAK,OAAA,IAAU,KAChB,QAAqB,CAAA,GAErB,UAAU,OAAO,QAAQ,IAAI,WAAW,CAAA,CAAE,EAAE;AAAA,IAChD,CAAC,CAAC,OAAO,GAAG,MAAM,OAAO,OAAO,CAAA,GAAI,KAAK,EAAC,MAAA,CAAM;AAAA,EAAA,GAG5C,UAAwB;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,OAAO,SAAS;AACzB,UAAM,WAAW,KAAK,KAAK,IAAI,MAAM,IAAI,KAAK;AAE1C,QAAI,QAAQ,SAAS,KAAK,KAC5B,QAAQ,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,KACrC,QAAQ,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,KAClC,QAAQ,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,OAAO,SAAS;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,OAAO,SAAS;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,OAAO,SAAS;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,OAAO,SAAS;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;AAGA,aAAW,OAAO,SAAS;AACzB,UAAM,SAAS,IAAI,MAAM;AAEpB,cAEL,mBAAmB,YAAY,QAAQ;AAAA,MACrC,MAAM,IAAI;AAAA,MACV,QAAQ,IAAI,MAAM,UAAU,IAAI;AAAA,MAChC;AAAA,IAAA,CACD;AAAA,EACH;AAGA,aAAW,OAAO,SAAS;AACzB,UAAM,SAAS,IAAI,MAAM;AAEpB,cAEL,mBAAmB,OAAO,QAAQ;AAAA,MAChC,MAAM,IAAI;AAAA,MACV,QAAQ,IAAI,MAAM,UAAU,IAAI;AAAA,MAChC;AAAA,IAAA,CACD;AAAA,EACH;AAEA,SAAI,QAAQ,QAAQ,UAClB,MAAM,KAAK,OAAO,GAGpB,MAAM,KAAK,GAAG,OAAO,OAAO,WAAW,CAAC,GAEjC;AACT;AC9IA,eAAsB,MAAM,SAKV;AAChB,QAAM,EAAC,KAAK,SAAS,IAAO,UAAU,gBAAgB,OAAA,IAAU,SAE1D,SAAS,aAAA,GAET,EAAC,iBAAA,IAAoB,MAAM,OAAO,uBAAuB,GACzD,eAAe,MAAM,iBAAiB,EAAC,KAAK,OAAA,CAAO,GAEnD,oBAAoC,CAAA,GAuBpC,kBArBO,aAAa;AAAA,IACxB,UAAU,OAAO,gBAAgB;AAG/B,YAAM,kBAFQ,YAAY,IAAI,CAAC,MAAM,KAAK,SAAS,KAAK,CAAC,CAAC,EAE5B,KAAK,CAAC,MAAM,MAAM,cAAc,GAExD,UAAUA,GAAY,EAAC,KAAI;AACjC,UAAI,CAAC,mBAAmB,CAAC;AACvB,cAAM,IAAI,MAAM,wBAAwB,EAAC,OAAO,EAAC,IAAA,GAAK;AAGxD,YAAM,SAAS,MAAM,WAAW,EAAC,KAAK,QAAA,CAAQ,GACxC,EAAC,uBAAsB,MAAM,OAAO,0BAAa,EAAA,KAAA,SAAA,GAAA;AAAA,eAAA,EAAA;AAAA,MAAA,CAAA,GACjD,gBAAgB,mBAAmB,QAAQ,iBAAiB,CAAA,CAAE,GAC9D,MAAM,MAAM,qBAAqB,EAAC,SAAS,QAAQ,QAAQ,eAAc,GACzE,WAAW,kBAAkB,QAAQ,YAAY;AAEvD,aAAO,oBAAoB,EAAC,QAAQ,KAAK,QAAQ,KAAK,QAAQ,UAAS;AAAA,IACzE,CAAC;AAAA,EAAA,EAG0B,UAAU,OAAO,QAAQ;AAEpD,eAAW,OAAO;AAChB,UAAI,YAAA;AAEN,sBAAkB,SAAS;AAI3B,UAAM,iBAAiB,sBAAsB,IAAI,MAAM;AACnD,mBAAe,cACjB,MAAM,sBAAsB;AAAA,MAC1B;AAAA,MACA,UAAU,IAAI;AAAA,MACd,SAAS,6BAA6B,eAAe,SAAS;AAAA,QAC5D,YAAY;AAAA,QACZ,SAAS;AAAA,MAAA,CACV;AAAA,MACD;AAAA,IAAA,CACD;AAGH,UAAM,aAAa,kBAAkB,GAAG;AAExC,eAAW,QAAQ,YAAY;AAE7B,YAAM,UAAU,kBAAkB,KAAK,IAAI,GAGrC,MAFU,QAAQ,KAAK,KAAK,IAAI,EAElB,UAAU;AAAA,QAC5B,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;AAED,wBAAkB,KAAK,GAAG;AAAA,IAC5B;AAAA,EACF,CAAC;AAEG,YACF,OAAO;AAAA,IACL;AAAA,IACA,MAAM;AACJ,iBAAW,OAAO;AAChB,YAAI,YAAA;AAEN,wBAAkB,SAAS,GAC3B,gBAAgB,YAAA;AAAA,IAClB;AAAA,IACA,EAAC,MAAM,GAAA;AAAA,EAAI;AAGjB;AC9GA,eAAsB,YAAY,SAA+D;AAC/F,MAAI;AACF,UAAM,MAAM;AAAA,MACV,KAAK,QAAQ,IAAA;AAAA,MACb,QAAQ,QAAQ;AAAA,MAChB,UAAU,QAAQ;AAAA,IAAA,CACnB;AAAA,EACH,SAAS,KAAK;AACZ,gBAAY,GAAG;AAAA,EACjB;AACF;"}
package/dist/cli.js CHANGED
@@ -1,5 +1,5 @@
1
1
  import { cac } from "cac";
2
- var version = "10.6.0";
2
+ var version = "10.7.1";
3
3
  const cli = cac();
4
4
  cli.command("", "Check").alias("check").option("--strict", "Strict mode").option("--tsconfig [tsconfig]", "[string] tsconfig.json").action(async (options) => {
5
5
  const { checkAction } = await import("./_chunks-es/checkAction.js");
package/dist/index.d.ts CHANGED
@@ -66,6 +66,57 @@ interface StrictOptions {
66
66
  }
67
67
  /** @public */
68
68
  type PkgFormat = 'commonjs' | 'esm';
69
+ /**
70
+ * Options for the `@vanilla-extract/rollup-plugin` integration, including pkg-utils-specific
71
+ * extensions (`minify`, `browserslist`, and `extract.compatMode`).
72
+ * @alpha
73
+ */
74
+ interface PkgVanillaExtractOptions extends Omit<Options, 'extract'> {
75
+ /**
76
+ * Minify the extracted CSS with `lightningcss`.
77
+ * @defaultValue true
78
+ */
79
+ minify?: boolean;
80
+ /**
81
+ * Browserslist query passed to `lightningcss` when optimizing the extracted CSS.
82
+ * @defaultValue the project's browserslist config, falling back to pkg-utils' default query
83
+ */
84
+ browserslist?: string | string[];
85
+ /**
86
+ * Different formatting of identifiers (e.g. class names, keyframes, CSS Vars, etc).
87
+ * @defaultValue "short"
88
+ */
89
+ identifiers?: Options['identifiers'];
90
+ /**
91
+ * Extract the CSS into a separate file. pkg-utils always extracts, so this configures _how_.
92
+ */
93
+ extract?: {
94
+ /**
95
+ * Name of the emitted `.css` file (and, with `compatMode`, the `exports` subpath + shim base).
96
+ * @defaultValue "bundle.css"
97
+ */
98
+ name?: string;
99
+ /**
100
+ * Generate a `.css.map` sourcemap file.
101
+ * @defaultValue true
102
+ */
103
+ sourcemap?: boolean;
104
+ /**
105
+ * Compatibility mode automatically wires up the conditional CSS export pattern so userland does
106
+ * not have to. When enabled, pkg-utils:
107
+ *
108
+ * - injects `import "<pkg-name>/<name>"` into each entry chunk (no manual `rollup.output.intro`),
109
+ * - emits a no-op `<name>.js` shim for runtimes that cannot import `.css` files, and
110
+ * - writes the conditional `"./<name>"` export to `package.json`
111
+ * (`browser`/`style` → the real CSS, `node`/`default` → the shim).
112
+ *
113
+ * The result is that `import "<pkg>/<name>"` resolves to the real CSS in bundlers/browsers and
114
+ * to the no-op shim in Node and similar runtimes. Disable it to wire these up yourself.
115
+ * @defaultValue true
116
+ */
117
+ compatMode?: boolean;
118
+ };
119
+ }
69
120
  /** @public */
70
121
  type PkgRuntime = '*' | 'browser' | 'node';
71
122
  /** @public */
@@ -216,13 +267,15 @@ interface PkgConfigOptions {
216
267
  */
217
268
  optimizeLodash?: boolean | OptimizeLodashOptions;
218
269
  /**
219
- * Enables \@vanilla-extract/rollup-plugin to extract CSS into a separate file, with support for minifying the extracted CSS.
270
+ * Enables \@vanilla-extract/rollup-plugin to extract CSS into a separate file, with support for
271
+ * minifying the extracted CSS. Pass `true` to use the defaults, or an object to customize.
272
+ *
273
+ * By default (`extract.compatMode: true`) pkg-utils also injects the self-referential
274
+ * `import "<pkg>/bundle.css"`, emits a `bundle.css.js` shim, and writes the conditional
275
+ * `"./bundle.css"` export to `package.json` - see {@link PkgVanillaExtractOptions}.
220
276
  * @alpha
221
277
  */
222
- vanillaExtract?: boolean | (Options & {
223
- minify?: boolean;
224
- browserslist?: string | string[];
225
- });
278
+ vanillaExtract?: boolean | PkgVanillaExtractOptions;
226
279
  };
227
280
  /**
228
281
  * Default runtime of package exports
@@ -1 +1 @@
1
- {"version":3,"file":"index.d.ts","names":[],"sources":["../src/node/strict.ts","../src/node/core/config/types.ts","../src/node/core/config/defineConfig.ts","../src/node/core/config/loadConfig.ts","../src/node/core/defaults.ts","../src/node/core/template/types.ts","../src/node/core/template/define.ts"],"mappings":"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"}
1
+ {"version":3,"file":"index.d.ts","names":[],"sources":["../src/node/strict.ts","../src/node/core/config/types.ts","../src/node/core/config/defineConfig.ts","../src/node/core/config/loadConfig.ts","../src/node/core/defaults.ts","../src/node/core/template/types.ts","../src/node/core/template/define.ts"],"mappings":"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"}
package/package.json CHANGED
@@ -1,6 +1,6 @@
1
1
  {
2
2
  "name": "@sanity/pkg-utils",
3
- "version": "10.6.0",
3
+ "version": "10.7.1",
4
4
  "description": "Simple utilities for modern npm packages.",
5
5
  "keywords": [
6
6
  "sanity-io",
@@ -42,8 +42,8 @@
42
42
  ],
43
43
  "browserslist": "extends @sanity/browserslist-config",
44
44
  "dependencies": {
45
- "@babel/core": "^8.0.1",
46
- "@babel/preset-typescript": "^8.0.1",
45
+ "@babel/core": "^7.29.7",
46
+ "@babel/preset-typescript": "^7.29.7",
47
47
  "@microsoft/api-extractor": "^7.58.9",
48
48
  "@microsoft/tsdoc-config": "^0.18.1",
49
49
  "@optimize-lodash/rollup-plugin": "^6.0.0",
@@ -83,9 +83,10 @@
83
83
  "tsx": "^4.22.4",
84
84
  "zod": "^4.4.3",
85
85
  "zod-validation-error": "^5.0.0",
86
- "@sanity/parse-package-json": "^2.2.0"
86
+ "@sanity/parse-package-json": "^2.2.1"
87
87
  },
88
88
  "devDependencies": {
89
+ "@types/babel__core": "^7.20.5",
89
90
  "@types/find-config": "^1.0.4",
90
91
  "@types/node": "^24.13.2",
91
92
  "@types/prompts": "^2.4.9",