@sanity/pkg-utils 10.3.3 → 10.3.5

This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
@@ -1,21 +1,48 @@
1
- import { parse, print } from "recast";
2
- import typeScriptParser from "recast/parsers/typescript.js";
3
- async function extractModuleBlocksFromTypes({
1
+ import ts from "typescript";
2
+ function extractModuleBlocksFromTypes({
4
3
  tsOutDir,
5
4
  extractResult
6
5
  }) {
7
6
  const program = extractResult.compilerState.program, moduleBlocks = [], sourceFiles = [...program.getSourceFiles()].filter((sourceFile) => sourceFile.fileName.includes(tsOutDir));
8
7
  for (const sourceFile of sourceFiles)
9
- sourceFile.text.includes("declare module") && moduleBlocks.push(...extractModuleBlocks(sourceFile.text));
8
+ if (sourceFile.text.includes("declare module")) {
9
+ const parsedFile = ts.createSourceFile(
10
+ sourceFile.fileName,
11
+ sourceFile.text,
12
+ ts.ScriptTarget.Latest,
13
+ /* setParentNodes */
14
+ !0
15
+ );
16
+ moduleBlocks.push(...extractModuleBlocks(parsedFile));
17
+ }
10
18
  return moduleBlocks;
11
19
  }
12
- function extractModuleBlocks(fileContent) {
13
- return parse(fileContent, {
14
- parser: typeScriptParser
15
- }).program.body.filter((node) => node.type === "TSModuleDeclaration").map((node) => print(node).code);
20
+ function extractModuleBlocks(sourceFile) {
21
+ const text = sourceFile.text, moduleBlocks = [], statements = sourceFile.statements;
22
+ for (let i = 0; i < statements.length; i++) {
23
+ const statement = statements[i];
24
+ if (statement && ts.isModuleDeclaration(statement)) {
25
+ const fullStart = statement.getFullStart(), start = statement.getStart(sourceFile);
26
+ let end = statement.getEnd();
27
+ const lastTrailing = ts.getTrailingCommentRanges(text, end)?.at(-1);
28
+ if (lastTrailing)
29
+ end = lastTrailing.end;
30
+ else {
31
+ const nextStatementStart = statements[i + 1]?.getFullStart() ?? text.length, lastCommentAfter = ts.getLeadingCommentRanges(text, end)?.at(-1);
32
+ lastCommentAfter && lastCommentAfter.end <= nextStatementStart && (end = lastCommentAfter.end);
33
+ }
34
+ const leadingComments = ts.getLeadingCommentRanges(text, fullStart);
35
+ let blockStart = start;
36
+ if (leadingComments && leadingComments.length > 0) {
37
+ const lastComment = leadingComments.at(-1);
38
+ lastComment && text.slice(lastComment.pos, lastComment.end).startsWith("/**") && (blockStart = lastComment.pos);
39
+ }
40
+ moduleBlocks.push(text.slice(blockStart, end));
41
+ }
42
+ }
43
+ return moduleBlocks;
16
44
  }
17
45
  export {
18
- extractModuleBlocks,
19
46
  extractModuleBlocksFromTypes
20
47
  };
21
48
  //# sourceMappingURL=extractModuleBlocks.js.map
@@ -1 +1 @@
1
- {"version":3,"file":"extractModuleBlocks.js","sources":["../../src/node/tasks/dts/extractModuleBlocks.ts"],"sourcesContent":["import type {File} from '@babel/types'\nimport type {ExtractorResult} from '@microsoft/api-extractor'\nimport {parse, print} from 'recast'\nimport typeScriptParser from 'recast/parsers/typescript.js'\nimport type {Program} from 'typescript'\n\n/**\n * A workaround to find all module blocks in extract TS files.\n * @internal\n * */\nexport async function extractModuleBlocksFromTypes({\n tsOutDir,\n extractResult,\n}: {\n tsOutDir: string\n extractResult: ExtractorResult\n}): Promise<string[]> {\n // eslint-disable-next-line @typescript-eslint/no-unsafe-type-assertion -- ExtractorResult type from @microsoft/api-extractor is complex\n const program = extractResult.compilerState.program as Program\n const moduleBlocks: string[] = []\n\n // all program files, including node_modules\n const allProgramFiles = [...program.getSourceFiles()]\n\n // just our compiled files used in the program\n const sourceFiles = allProgramFiles.filter((sourceFile) => sourceFile.fileName.includes(tsOutDir))\n\n for (const sourceFile of sourceFiles) {\n if (sourceFile.text.includes('declare module')) {\n moduleBlocks.push(...extractModuleBlocks(sourceFile.text))\n }\n }\n\n return moduleBlocks\n}\n\n/** @internal */\nexport function extractModuleBlocks(fileContent: string): string[] {\n // eslint-disable-next-line @typescript-eslint/no-unsafe-type-assertion -- Babel parser returns any, but we know it's a File\n const ast = parse(fileContent, {\n parser: typeScriptParser,\n }) as File\n\n return ast.program.body\n .filter((node) => node.type === 'TSModuleDeclaration')\n .map((node) => print(node).code)\n}\n"],"names":[],"mappings":";;AAUA,eAAsB,6BAA6B;AAAA,EACjD;AAAA,EACA;AACF,GAGsB;AAEpB,QAAM,UAAU,cAAc,cAAc,SACtC,eAAyB,CAAA,GAMzB,cAHkB,CAAC,GAAG,QAAQ,gBAAgB,EAGhB,OAAO,CAAC,eAAe,WAAW,SAAS,SAAS,QAAQ,CAAC;AAEjG,aAAW,cAAc;AACnB,eAAW,KAAK,SAAS,gBAAgB,KAC3C,aAAa,KAAK,GAAG,oBAAoB,WAAW,IAAI,CAAC;AAI7D,SAAO;AACT;AAGO,SAAS,oBAAoB,aAA+B;AAMjE,SAJY,MAAM,aAAa;AAAA,IAC7B,QAAQ;AAAA,EAAA,CACT,EAEU,QAAQ,KAChB,OAAO,CAAC,SAAS,KAAK,SAAS,qBAAqB,EACpD,IAAI,CAAC,SAAS,MAAM,IAAI,EAAE,IAAI;AACnC;"}
1
+ {"version":3,"file":"extractModuleBlocks.js","sources":["../../src/node/tasks/dts/extractModuleBlocks.ts"],"sourcesContent":["import type {ExtractorResult} from '@microsoft/api-extractor'\nimport ts from 'typescript'\n\n/**\n * A workaround to find all module blocks in extract TS files.\n * @internal\n * */\nexport function extractModuleBlocksFromTypes({\n tsOutDir,\n extractResult,\n}: {\n tsOutDir: string\n extractResult: ExtractorResult\n}): string[] {\n // eslint-disable-next-line @typescript-eslint/no-unsafe-type-assertion -- ExtractorResult type from @microsoft/api-extractor is complex\n const program = extractResult.compilerState.program as ts.Program\n const moduleBlocks: string[] = []\n\n // all program files, including node_modules\n const allProgramFiles = [...program.getSourceFiles()]\n\n // just our compiled files used in the program\n const sourceFiles = allProgramFiles.filter((sourceFile) => sourceFile.fileName.includes(tsOutDir))\n\n for (const sourceFile of sourceFiles) {\n if (sourceFile.text.includes('declare module')) {\n // Re-parse the source file to ensure we have a complete AST\n // The source files from API Extractor's program may not have fully parsed statements\n const parsedFile = ts.createSourceFile(\n sourceFile.fileName,\n sourceFile.text,\n ts.ScriptTarget.Latest,\n /* setParentNodes */ true,\n )\n moduleBlocks.push(...extractModuleBlocks(parsedFile))\n }\n }\n\n return moduleBlocks\n}\n\n/**\n * Extract `declare module` blocks from a TypeScript source file.\n */\nfunction extractModuleBlocks(sourceFile: ts.SourceFile): string[] {\n const text = sourceFile.text\n const moduleBlocks: string[] = []\n\n const statements = sourceFile.statements\n for (let i = 0; i < statements.length; i++) {\n const statement = statements[i]\n if (statement && ts.isModuleDeclaration(statement)) {\n // Get positions for extracting text\n const fullStart = statement.getFullStart()\n const start = statement.getStart(sourceFile)\n let end = statement.getEnd()\n\n // Include trailing comments (like sourceMappingURL)\n // First check for same-line trailing comments\n const trailingComments = ts.getTrailingCommentRanges(text, end)\n const lastTrailing = trailingComments?.at(-1)\n if (lastTrailing) {\n end = lastTrailing.end\n } else {\n // Check for comments on following lines (only if this is the last statement\n // or if they come before the next statement)\n const nextStatement = statements[i + 1]\n const nextStatementStart = nextStatement?.getFullStart() ?? text.length\n const commentsAfter = ts.getLeadingCommentRanges(text, end)\n const lastCommentAfter = commentsAfter?.at(-1)\n if (lastCommentAfter && lastCommentAfter.end <= nextStatementStart) {\n end = lastCommentAfter.end\n }\n }\n\n // Check for leading JSDoc comments\n const leadingComments = ts.getLeadingCommentRanges(text, fullStart)\n\n let blockStart = start\n if (leadingComments && leadingComments.length > 0) {\n // Use the last comment if it's a JSDoc comment (starts with /**)\n const lastComment = leadingComments.at(-1)\n if (lastComment) {\n const commentText = text.slice(lastComment.pos, lastComment.end)\n if (commentText.startsWith('/**')) {\n blockStart = lastComment.pos\n }\n }\n }\n\n // Extract the text from blockStart to end\n // No need to dedent - the output will be formatted by prettier\n moduleBlocks.push(text.slice(blockStart, end))\n }\n }\n\n return moduleBlocks\n}\n"],"names":[],"mappings":";AAOO,SAAS,6BAA6B;AAAA,EAC3C;AAAA,EACA;AACF,GAGa;AAEX,QAAM,UAAU,cAAc,cAAc,SACtC,eAAyB,CAAA,GAMzB,cAHkB,CAAC,GAAG,QAAQ,gBAAgB,EAGhB,OAAO,CAAC,eAAe,WAAW,SAAS,SAAS,QAAQ,CAAC;AAEjG,aAAW,cAAc;AACvB,QAAI,WAAW,KAAK,SAAS,gBAAgB,GAAG;AAG9C,YAAM,aAAa,GAAG;AAAA,QACpB,WAAW;AAAA,QACX,WAAW;AAAA,QACX,GAAG,aAAa;AAAA;AAAA,QACK;AAAA,MAAA;AAEvB,mBAAa,KAAK,GAAG,oBAAoB,UAAU,CAAC;AAAA,IACtD;AAGF,SAAO;AACT;AAKA,SAAS,oBAAoB,YAAqC;AAChE,QAAM,OAAO,WAAW,MAClB,eAAyB,IAEzB,aAAa,WAAW;AAC9B,WAAS,IAAI,GAAG,IAAI,WAAW,QAAQ,KAAK;AAC1C,UAAM,YAAY,WAAW,CAAC;AAC9B,QAAI,aAAa,GAAG,oBAAoB,SAAS,GAAG;AAElD,YAAM,YAAY,UAAU,aAAA,GACtB,QAAQ,UAAU,SAAS,UAAU;AAC3C,UAAI,MAAM,UAAU,OAAA;AAKpB,YAAM,eADmB,GAAG,yBAAyB,MAAM,GAAG,GACvB,GAAG,EAAE;AAC5C,UAAI;AACF,cAAM,aAAa;AAAA,WACd;AAIL,cAAM,qBADgB,WAAW,IAAI,CAAC,GACI,kBAAkB,KAAK,QAE3D,mBADgB,GAAG,wBAAwB,MAAM,GAAG,GAClB,GAAG,EAAE;AACzC,4BAAoB,iBAAiB,OAAO,uBAC9C,MAAM,iBAAiB;AAAA,MAE3B;AAGA,YAAM,kBAAkB,GAAG,wBAAwB,MAAM,SAAS;AAElE,UAAI,aAAa;AACjB,UAAI,mBAAmB,gBAAgB,SAAS,GAAG;AAEjD,cAAM,cAAc,gBAAgB,GAAG,EAAE;AACrC,uBACkB,KAAK,MAAM,YAAY,KAAK,YAAY,GAAG,EAC/C,WAAW,KAAK,MAC9B,aAAa,YAAY;AAAA,MAG/B;AAIA,mBAAa,KAAK,KAAK,MAAM,YAAY,GAAG,CAAC;AAAA,IAC/C;AAAA,EACF;AAEA,SAAO;AACT;"}
@@ -106,7 +106,7 @@ async function extractTypes(options) {
106
106
  }
107
107
  }), typesPath = path.resolve(distPath, filePath), typesBuf = await fs.readFile(typesPath), prettierConfig = await prettier.resolveConfig(typesPath);
108
108
  await mkdirp(path.dirname(typesPath));
109
- const { extractModuleBlocksFromTypes } = await import("./extractModuleBlocks.js"), moduleBlocks = await extractModuleBlocksFromTypes({
109
+ const { extractModuleBlocksFromTypes } = await import("./extractModuleBlocks.js"), moduleBlocks = extractModuleBlocksFromTypes({
110
110
  extractResult: extractorResult,
111
111
  tsOutDir: tmpPath
112
112
  }), code = [typesBuf.toString(), ...moduleBlocks].join(`
@@ -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 = false, 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 = await extractModuleBlocksFromTypes({\n extractResult: extractorResult,\n tsOutDir: tmpPath,\n })\n\n const code = [typesBuf.toString(), ...moduleBlocks].join('\\n\\n')\n const prettyCode = await prettier.format(code, {\n ...prettierConfig,\n filepath: typesPath,\n })\n\n for (const expFilePath of filePaths) {\n const expTypesPath = path.resolve(distPath, expFilePath)\n\n await fs.writeFile(expTypesPath, prettyCode)\n\n // Add to `files` in context\n files.push({\n type: 'types',\n path: expTypesPath,\n })\n }\n\n if (shouldCleanUpDts) {\n await fs.unlink(typesPath)\n }\n\n return {extractorResult, messages}\n}\n","import path from 'node:path'\nimport {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(path: string) {\n switch (true) {\n case path.endsWith('.mjs'):\n return path.replace(/\\.mjs$/, '.d.mts')\n case path.endsWith('.cjs'):\n return path.replace(/\\.cjs$/, '.d.cts')\n default:\n return path.replace(/\\.js$/, '.d.ts')\n }\n}\n","import {basename} from 'node:path'\nimport browserslist from 'browserslist'\nimport {browserslistToTargets, transform} from 'lightningcss'\nimport type {OutputAsset, Plugin} from 'rollup'\n\nexport function optimizeCss(options: {\n extractFileName: string\n browserslist: string | string[]\n}): Plugin {\n return {\n name: 'optimize-css',\n\n async generateBundle(_outputOptions, bundle, _isWrite) {\n for (const [fileName, assetOrChunk] of Object.entries(bundle)) {\n // find CSS assets\n if (assetOrChunk.type === 'asset') {\n const asset = assetOrChunk\n if (asset.originalFileNames.includes(options.extractFileName)) {\n const sourceMapFileName = `${fileName}.map`\n await transformCss(\n asset,\n bundle[sourceMapFileName]?.type === 'asset' ? bundle[sourceMapFileName] : undefined,\n options.browserslist,\n )\n }\n }\n }\n },\n }\n}\n\nasync function transformCss(\n asset: OutputAsset,\n sourceMapAsset: OutputAsset | undefined,\n browserslistConfig: string | string[],\n) {\n const css = asset.source.toString()\n const file = asset.fileName\n\n const targets = browserslistToTargets(browserslist(browserslistConfig))\n\n // process and minify css using lightningcss\n const lightningCssResult = transform({\n filename: file,\n code: Buffer.from(css),\n minify: true,\n cssModules: false,\n targets,\n sourceMap: !!sourceMapAsset,\n inputSourceMap: sourceMapAsset ? sourceMapAsset.source.toString() : undefined,\n })\n\n if (lightningCssResult.warnings.length) {\n // eslint-disable-next-line no-console\n console.warn(lightningCssResult.warnings)\n }\n\n asset.source = new TextDecoder().decode(lightningCssResult.code)\n if (sourceMapAsset && lightningCssResult.map) {\n sourceMapAsset.source = new TextDecoder().decode(lightningCssResult.map)\n asset.source += `\\n/*# sourceMappingURL=${basename(sourceMapAsset.fileName)}*/\\n`\n }\n}\n","import path from 'node:path'\nimport {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\nexport interface RollupConfig {\n inputOptions: InputOptions\n outputOptions: OutputOptions\n}\n\n/** @internal */\nexport function resolveRollupConfig(\n ctx: BuildContext,\n buildTask: RollupTask | RollupWatchTask,\n): RollupConfig {\n const {format, runtime, target} = buildTask\n const {config, cwd, exports: _exports, external, distPath, logger, pkg, ts} = ctx\n const outputExt = extMap[pkg.type || 'commonjs'][format]\n const minify = config?.minify ?? false\n const outDir = path.relative(cwd, distPath)\n\n const pathAliases = Object.fromEntries(\n Object.entries(ts.config?.options.paths || {}).map(([key, val]) => {\n return [key, path.resolve(cwd, ts.config?.options.baseUrl || '.', val[0]!)]\n }),\n )\n\n const entries = buildTask.entries.map((entry) => {\n return {\n ...entry,\n name: path.relative(outDir, entry.output).replace(/\\.[^/.]+$/, ''),\n }\n }, {})\n\n const exportIds =\n _exports && Object.keys(_exports).map((exportPath) => path.join(pkg.name, exportPath))\n\n const sourcePaths = _exports && Object.values(_exports).map((e) => path.resolve(cwd, e.source))\n\n const replacements = Object.fromEntries(\n Object.entries(config?.define || {}).map(([key, val]) => [key, JSON.stringify(val)]),\n )\n\n const {optimizeLodash: enableOptimizeLodash = hasDependency(pkg, 'lodash')} = config?.rollup || {}\n\n const defaultPlugins = [\n replace({\n preventAssignment: true,\n values:\n pkg.name === '@sanity/pkg-utils'\n ? {...replacements}\n : {\n 'process.env.PKG_FILE_PATH': (arg) => {\n const sourcePath = `./${path.relative(cwd, arg)}`\n const entry = entries.find((e) => e.source === sourcePath)\n\n if (!entry) {\n console.error(`could not find source entry: ${sourcePath}`)\n\n return 'null'\n }\n\n return JSON.stringify(\n path.relative(cwd, path.resolve(outDir, entry.name + outputExt)),\n )\n },\n 'process.env.PKG_FORMAT': JSON.stringify(format),\n 'process.env.PKG_RUNTIME': JSON.stringify(runtime),\n 'process.env.PKG_VERSION': JSON.stringify(process.env['PKG_VERSION'] || pkg.version),\n ...replacements,\n },\n }),\n alias({\n entries: {...pathAliases},\n }),\n nodeResolve({\n browser: runtime === 'browser',\n extensions: ['.cjs', '.mjs', '.js', '.jsx', '.json', '.node'],\n preferBuiltins: true,\n }),\n commonjs(),\n json(),\n config?.rollup?.vanillaExtract &&\n vanillaExtractPlugin(\n config?.rollup?.vanillaExtract === true\n ? {\n extract: {\n name:\n runtime === 'node'\n ? 'bundle.node.css'\n : runtime === 'browser'\n ? 'bundle.browser.css'\n : 'bundle.css',\n sourcemap: true,\n },\n identifiers: 'short',\n }\n : config?.rollup?.vanillaExtract,\n ),\n config?.rollup?.vanillaExtract &&\n optimizeCss(\n config?.rollup?.vanillaExtract === true\n ? {\n extractFileName:\n runtime === 'node'\n ? 'bundle.node.css'\n : runtime === 'browser'\n ? 'bundle.browser.css'\n : 'bundle.css',\n browserslist: DEFAULT_BROWSERSLIST_QUERY,\n }\n : {\n extractFileName:\n typeof config.rollup.vanillaExtract.extract === 'object' &&\n config.rollup.vanillaExtract.extract.name\n ? config.rollup.vanillaExtract.extract.name\n : runtime === 'node'\n ? 'bundle.node.css'\n : runtime === 'browser'\n ? 'bundle.browser.css'\n : 'bundle.css',\n browserslist: config.rollup.vanillaExtract.browserslist || DEFAULT_BROWSERSLIST_QUERY,\n },\n ),\n (config?.babel?.reactCompiler || config?.babel?.styledComponents) &&\n babel({\n babelrc: false,\n presets: ['@babel/preset-typescript'],\n babelHelpers: 'bundled',\n extensions: ['.ts', '.tsx', '.js', '.jsx'],\n plugins: [\n // The styled-components plugin needs to run before the react-compiler plugin, in case the css prop is used\n config?.babel?.styledComponents && [\n 'babel-plugin-styled-components',\n {\n // Unnecessary, as the way we use styled-components in Sanity is usually by wrapping `@sanity/ui` primitives, not declaring new ones like \"const Button = styled.button``\"\n fileName: false,\n // Native template literals take less space than this transpilation\n transpileTemplateLiterals: false,\n // Massively helps dead code elimination and tree-shaking\n pure: true,\n // disabled, as pkg-utils tends to be used for npm publishing, while other tooling, like `sanity dev`, `next dev`, etc are used for testing\n cssProp: false,\n ...(typeof config.babel.styledComponents === 'object'\n ? config.babel.styledComponents\n : {}),\n },\n ],\n config?.babel?.reactCompiler && [\n 'babel-plugin-react-compiler',\n config?.reactCompilerOptions || {},\n ],\n ].filter(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 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, external) => (id.endsWith('.css') ? true : !external),\n annotations: true,\n ...config?.rollup?.treeshake,\n },\n experimentalLogSideEffects: config?.rollup?.experimentalLogSideEffects,\n },\n outputOptions: {\n chunkFileNames,\n compact: minify,\n dir: outDir,\n entryFileNames,\n esModule: true,\n format,\n interop: 'compat',\n sourcemap: config?.sourcemap ?? true,\n hoistTransitiveImports: false,\n minifyInternalExports: minify,\n assetFileNames: '[name][extname]',\n ...config?.rollup?.output,\n },\n }\n}\n\nfunction hasDependency(pkg: PackageJSON, packageName: string): boolean {\n return pkg.dependencies\n ? packageName in pkg.dependencies\n : pkg.peerDependencies\n ? packageName in pkg.peerDependencies\n : false\n}\n","import path from 'node:path'\nimport chalk from 'chalk'\nimport {rollup} from 'rollup'\nimport {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","path","extMap","external","rollupWatch"],"mappings":"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"}
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 = false, 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(path: string) {\n switch (true) {\n case path.endsWith('.mjs'):\n return path.replace(/\\.mjs$/, '.d.mts')\n case path.endsWith('.cjs'):\n return path.replace(/\\.cjs$/, '.d.cts')\n default:\n return path.replace(/\\.js$/, '.d.ts')\n }\n}\n","import {basename} from 'node:path'\nimport browserslist from 'browserslist'\nimport {browserslistToTargets, transform} from 'lightningcss'\nimport type {OutputAsset, Plugin} from 'rollup'\n\nexport function optimizeCss(options: {\n extractFileName: string\n browserslist: string | string[]\n}): Plugin {\n return {\n name: 'optimize-css',\n\n async generateBundle(_outputOptions, bundle, _isWrite) {\n for (const [fileName, assetOrChunk] of Object.entries(bundle)) {\n // find CSS assets\n if (assetOrChunk.type === 'asset') {\n const asset = assetOrChunk\n if (asset.originalFileNames.includes(options.extractFileName)) {\n const sourceMapFileName = `${fileName}.map`\n await transformCss(\n asset,\n bundle[sourceMapFileName]?.type === 'asset' ? bundle[sourceMapFileName] : undefined,\n options.browserslist,\n )\n }\n }\n }\n },\n }\n}\n\nasync function transformCss(\n asset: OutputAsset,\n sourceMapAsset: OutputAsset | undefined,\n browserslistConfig: string | string[],\n) {\n const css = asset.source.toString()\n const file = asset.fileName\n\n const targets = browserslistToTargets(browserslist(browserslistConfig))\n\n // process and minify css using lightningcss\n const lightningCssResult = transform({\n filename: file,\n code: Buffer.from(css),\n minify: true,\n cssModules: false,\n targets,\n sourceMap: !!sourceMapAsset,\n inputSourceMap: sourceMapAsset ? sourceMapAsset.source.toString() : undefined,\n })\n\n if (lightningCssResult.warnings.length) {\n // eslint-disable-next-line no-console\n console.warn(lightningCssResult.warnings)\n }\n\n asset.source = new TextDecoder().decode(lightningCssResult.code)\n if (sourceMapAsset && lightningCssResult.map) {\n sourceMapAsset.source = new TextDecoder().decode(lightningCssResult.map)\n asset.source += `\\n/*# sourceMappingURL=${basename(sourceMapAsset.fileName)}*/\\n`\n }\n}\n","import path from 'node:path'\nimport {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\nexport interface RollupConfig {\n inputOptions: InputOptions\n outputOptions: OutputOptions\n}\n\n/** @internal */\nexport function resolveRollupConfig(\n ctx: BuildContext,\n buildTask: RollupTask | RollupWatchTask,\n): RollupConfig {\n const {format, runtime, target} = buildTask\n const {config, cwd, exports: _exports, external, distPath, logger, pkg, ts} = ctx\n const outputExt = extMap[pkg.type || 'commonjs'][format]\n const minify = config?.minify ?? false\n const outDir = path.relative(cwd, distPath)\n\n const pathAliases = Object.fromEntries(\n Object.entries(ts.config?.options.paths || {}).map(([key, val]) => {\n return [key, path.resolve(cwd, ts.config?.options.baseUrl || '.', val[0]!)]\n }),\n )\n\n const entries = buildTask.entries.map((entry) => {\n return {\n ...entry,\n name: path.relative(outDir, entry.output).replace(/\\.[^/.]+$/, ''),\n }\n }, {})\n\n const exportIds =\n _exports && Object.keys(_exports).map((exportPath) => path.join(pkg.name, exportPath))\n\n const sourcePaths = _exports && Object.values(_exports).map((e) => path.resolve(cwd, e.source))\n\n const replacements = Object.fromEntries(\n Object.entries(config?.define || {}).map(([key, val]) => [key, JSON.stringify(val)]),\n )\n\n const {optimizeLodash: enableOptimizeLodash = hasDependency(pkg, 'lodash')} = config?.rollup || {}\n\n const defaultPlugins = [\n replace({\n preventAssignment: true,\n values:\n pkg.name === '@sanity/pkg-utils'\n ? {...replacements}\n : {\n 'process.env.PKG_FILE_PATH': (arg) => {\n const sourcePath = `./${path.relative(cwd, arg)}`\n const entry = entries.find((e) => e.source === sourcePath)\n\n if (!entry) {\n console.error(`could not find source entry: ${sourcePath}`)\n\n return 'null'\n }\n\n return JSON.stringify(\n path.relative(cwd, path.resolve(outDir, entry.name + outputExt)),\n )\n },\n 'process.env.PKG_FORMAT': JSON.stringify(format),\n 'process.env.PKG_RUNTIME': JSON.stringify(runtime),\n 'process.env.PKG_VERSION': JSON.stringify(process.env['PKG_VERSION'] || pkg.version),\n ...replacements,\n },\n }),\n alias({\n entries: {...pathAliases},\n }),\n nodeResolve({\n browser: runtime === 'browser',\n extensions: ['.cjs', '.mjs', '.js', '.jsx', '.json', '.node'],\n preferBuiltins: true,\n }),\n commonjs(),\n json(),\n config?.rollup?.vanillaExtract &&\n vanillaExtractPlugin(\n config?.rollup?.vanillaExtract === true\n ? {\n extract: {\n name:\n runtime === 'node'\n ? 'bundle.node.css'\n : runtime === 'browser'\n ? 'bundle.browser.css'\n : 'bundle.css',\n sourcemap: true,\n },\n identifiers: 'short',\n }\n : config?.rollup?.vanillaExtract,\n ),\n config?.rollup?.vanillaExtract &&\n optimizeCss(\n config?.rollup?.vanillaExtract === true\n ? {\n extractFileName:\n runtime === 'node'\n ? 'bundle.node.css'\n : runtime === 'browser'\n ? 'bundle.browser.css'\n : 'bundle.css',\n browserslist: DEFAULT_BROWSERSLIST_QUERY,\n }\n : {\n extractFileName:\n typeof config.rollup.vanillaExtract.extract === 'object' &&\n config.rollup.vanillaExtract.extract.name\n ? config.rollup.vanillaExtract.extract.name\n : runtime === 'node'\n ? 'bundle.node.css'\n : runtime === 'browser'\n ? 'bundle.browser.css'\n : 'bundle.css',\n browserslist: config.rollup.vanillaExtract.browserslist || DEFAULT_BROWSERSLIST_QUERY,\n },\n ),\n (config?.babel?.reactCompiler || config?.babel?.styledComponents) &&\n babel({\n babelrc: false,\n presets: ['@babel/preset-typescript'],\n babelHelpers: 'bundled',\n extensions: ['.ts', '.tsx', '.js', '.jsx'],\n plugins: [\n // The styled-components plugin needs to run before the react-compiler plugin, in case the css prop is used\n config?.babel?.styledComponents && [\n 'babel-plugin-styled-components',\n {\n // Unnecessary, as the way we use styled-components in Sanity is usually by wrapping `@sanity/ui` primitives, not declaring new ones like \"const Button = styled.button``\"\n fileName: false,\n // Native template literals take less space than this transpilation\n transpileTemplateLiterals: false,\n // Massively helps dead code elimination and tree-shaking\n pure: true,\n // disabled, as pkg-utils tends to be used for npm publishing, while other tooling, like `sanity dev`, `next dev`, etc are used for testing\n cssProp: false,\n ...(typeof config.babel.styledComponents === 'object'\n ? config.babel.styledComponents\n : {}),\n },\n ],\n config?.babel?.reactCompiler && [\n 'babel-plugin-react-compiler',\n config?.reactCompilerOptions || {},\n ],\n ].filter(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 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, external) => (id.endsWith('.css') ? true : !external),\n annotations: true,\n ...config?.rollup?.treeshake,\n },\n experimentalLogSideEffects: config?.rollup?.experimentalLogSideEffects,\n },\n outputOptions: {\n chunkFileNames,\n compact: minify,\n dir: outDir,\n entryFileNames,\n esModule: true,\n format,\n interop: 'compat',\n sourcemap: config?.sourcemap ?? true,\n hoistTransitiveImports: false,\n minifyInternalExports: minify,\n assetFileNames: '[name][extname]',\n ...config?.rollup?.output,\n },\n }\n}\n\nfunction hasDependency(pkg: PackageJSON, packageName: string): boolean {\n return pkg.dependencies\n ? packageName in pkg.dependencies\n : pkg.peerDependencies\n ? packageName in pkg.peerDependencies\n : false\n}\n","import path from 'node:path'\nimport chalk from 'chalk'\nimport {rollup} from 'rollup'\nimport {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","path","extMap","external","rollupWatch"],"mappings":"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"}
@@ -1 +1 @@
1
- {"version":3,"file":"initAction.js","sources":["../../src/node/core/template/createFromTemplate.ts","../../src/node/isEmptyDirectory.ts","../../../../../node_modules/.pnpm/@sanity+prettier-config@3.0.0_prettier@3.8.0/node_modules/@sanity/prettier-config/dist/index.js","../../src/node/templates/default/template.ts","../../src/node/init.ts","../../src/cli/initAction.ts"],"sourcesContent":["import {writeFile} from 'node:fs/promises'\nimport {dirname, relative, resolve} from 'node:path'\nimport {mkdirp} from 'mkdirp'\nimport prompts from 'prompts'\nimport type {Logger} from '../../logger.ts'\nimport type {PkgTemplate} from './types.ts'\n\nconst promptsTypes = {\n string: 'text' as const,\n}\n\n/** @internal */\nexport async function createFromTemplate(options: {\n cwd: string\n logger: Logger\n packagePath: string\n template: PkgTemplate\n}): Promise<void> {\n const {cwd, logger, packagePath, template: templateOrResolver} = options\n\n const template =\n typeof templateOrResolver === 'function'\n ? await templateOrResolver({cwd, logger, packagePath})\n : templateOrResolver\n\n logger.log('create new package at', relative(cwd, packagePath))\n\n const templateOptions: Record<string, string> = {}\n\n for (const templateOption of template.options) {\n const templateValidate = templateOption.validate\n\n const res = await prompts(\n {\n type: promptsTypes[templateOption.type],\n name: templateOption.name,\n message: templateOption.description,\n validate: templateValidate ? (prev) => templateValidate(prev) : undefined,\n initial:\n typeof templateOption.initial === 'function'\n ? templateOption.initial(templateOptions)\n : templateOption.initial,\n },\n {onCancel: () => process.exit(0)},\n )\n\n templateOptions[templateOption.name] = templateOption.parse\n ? templateOption.parse(res[templateOption.name])\n : res[templateOption.name]\n }\n\n const features: Record<string, boolean> = {}\n\n for (const templateFeature of template.features) {\n const res = templateFeature.optional\n ? await prompts(\n {\n type: 'confirm',\n name: 'confirm',\n message: `use ${templateFeature.name}?`,\n initial: templateFeature.initial,\n },\n {onCancel: () => process.exit(0)},\n )\n : undefined\n\n features[templateFeature.name] = res?.confirm || !templateFeature.optional\n }\n\n const files = await template.getFiles(templateOptions, features)\n\n files.sort((a, b) => {\n return a.name.localeCompare(b.name)\n })\n\n for (const file of files) {\n const filePath = resolve(packagePath, file.name)\n\n await mkdirp(dirname(filePath))\n await writeFile(filePath, file.contents.trim() + '\\n')\n\n logger.success(`wrote ${relative(cwd, filePath)}`)\n }\n}\n","import {readdir} from 'node:fs/promises'\n\nexport async function isEmptyDirectory(dirPath: string): Promise<boolean> {\n return (await readdir(dirPath)).length === 0\n}\n","const overridableDefaults = {\n endOfLine: \"lf\",\n tabWidth: 2,\n useTabs: !1\n}, json5 = {\n files: [\"*.json5\"],\n options: {\n quoteProps: \"preserve\",\n singleQuote: !1\n }\n}, yaml = {\n files: [\"*.yml\"],\n options: {\n singleQuote: !1\n }\n}, config = {\n ...overridableDefaults,\n printWidth: 100,\n semi: !1,\n singleQuote: !0,\n quoteProps: \"consistent\",\n bracketSpacing: !1,\n plugins: [\"prettier-plugin-packagejson\"],\n overrides: [json5, yaml]\n};\nexport {\n config as default\n};\n//# sourceMappingURL=index.js.map\n","import {execSync} from 'node:child_process'\nimport {resolve} from 'node:path'\nimport type {PackageJSON} from '@sanity/parse-package-json'\nimport prettierConfig from '@sanity/prettier-config'\nimport getLatestVersion from 'get-latest-version'\nimport gitUrlParse from 'git-url-parse'\nimport {outdent} from 'outdent'\nimport {format, type Config as PrettierConfig} from 'prettier'\nimport {isRecord} from '../../core/isRecord.ts'\nimport {defineTemplateOption} from '../../core/template/define.ts'\nimport {type PkgTemplate, type PkgTemplateFile} from '../../core/template/types.ts'\n\nconst RE_NAME = /^(?:@(?:[a-z0-9-*~][a-z0-9-*._~]*)\\/)?[a-z0-9-~][a-z0-9-._~]*$/i\n\nexport const defaultTemplate: PkgTemplate = async ({cwd, logger, packagePath}) => {\n const gitConfig = getGitUserConfig(cwd)\n\n return {\n options: [\n defineTemplateOption<{owner: string; name: string}>({\n name: 'repo',\n type: 'string',\n description: 'git url',\n validate: (v) => {\n if (!v) return true\n\n try {\n gitUrlParse(v)\n\n return true\n } catch {\n return 'invalid git url'\n }\n },\n parse: (v) => {\n if (!v) return null\n\n const result = gitUrlParse(v)\n\n return {source: result.source, owner: result.owner, name: result.name}\n },\n }),\n defineTemplateOption({\n name: 'pkgName',\n type: 'string',\n description: 'package name',\n initial: (options) => options['repo']?.name || undefined,\n validate: (v) => {\n if (!v) return 'package name is required'\n\n const match = RE_NAME.exec(v)\n\n if (!match) {\n return 'invalid package name'\n }\n\n return true\n },\n parse: (v) => {\n if (!v) {\n throw new Error('package name is required')\n }\n\n const match = RE_NAME.exec(v)\n\n if (!match) {\n throw new Error('invalid package name')\n }\n\n const [scope, name] = v.split('/')\n\n return {scope, name, fullName: v}\n },\n }),\n defineTemplateOption({\n name: 'description',\n type: 'string',\n description: 'package description',\n }),\n defineTemplateOption({\n name: 'authorName',\n type: 'string',\n description: 'package author name',\n initial: gitConfig.user,\n }),\n defineTemplateOption({\n name: 'authorEmail',\n type: 'string',\n description: 'package author email',\n initial: gitConfig.email,\n }),\n defineTemplateOption({\n name: 'license',\n type: 'string',\n description: 'package license',\n initial: 'MIT',\n validate: (v) => {\n if (!v) return 'license is required'\n\n return true\n },\n }),\n ],\n\n features: [\n {\n name: 'eslint',\n optional: true,\n initial: true,\n },\n {\n name: 'prettier',\n optional: true,\n initial: true,\n },\n {\n name: 'typescript',\n optional: true,\n initial: true,\n },\n ],\n\n async getFiles(options, features) {\n const {pkgName, repo} = options\n const {fullName: name} = pkgName\n\n const author =\n [options['authorName'], options['authorEmail'] && `<${options['authorEmail']}>`]\n .filter(Boolean)\n .join(' ') ?? undefined\n\n const pkgJson: PackageJSON & {\n prettier?: '@sanity/prettier-config'\n ['lint-staged']?: Record<string, string[]>\n } = {\n name,\n 'version': '0.0.0',\n 'description': options['description'] ?? undefined,\n 'keywords': [],\n 'homepage': undefined,\n 'bugs': undefined,\n 'repository': undefined,\n 'license': options['license'],\n author,\n 'sideEffects': false,\n 'type': 'module',\n 'exports': {\n '.': {\n source: features['typescript'] ? './src/index.ts' : './src/index.js',\n require: './dist/index.cjs',\n default: './dist/index.js',\n },\n './package.json': './package.json',\n },\n 'main': './dist/index.cjs',\n 'module': './dist/index.js',\n 'types': undefined,\n 'files': ['dist', 'src'],\n 'scripts': {\n build: 'pkg build --strict --clean --check',\n format: features['prettier'] ? 'prettier --write --cache --ignore-unknown .' : undefined,\n },\n 'lint-staged': features['prettier']\n ? {\n '*': ['prettier --write --cache --ignore-unknown'],\n }\n : undefined,\n 'browserslist': 'extends @sanity/browserslist-config',\n 'prettier': features['prettier'] ? '@sanity/prettier-config' : undefined,\n 'dependencies': {},\n 'devDependencies': {\n '@sanity/tsconfig': features['typescript'] ? '^1' : undefined,\n '@sanity/pkg-utils': '^9',\n '@sanity/prettier-config': features['prettier'] ? '^1' : undefined,\n '@typescript-eslint/eslint-plugin': undefined,\n '@typescript-eslint/parser': undefined,\n 'eslint': undefined,\n 'eslint-config-prettier': undefined,\n 'eslint-plugin-import': undefined,\n 'eslint-plugin-prettier': undefined,\n 'eslint-plugin-simple-import-sort': undefined,\n 'lint-staged': '^15',\n 'prettier': features['prettier'] ? '^3' : undefined,\n 'typescript': undefined,\n },\n 'engines': {\n node: '>=20.19 <22 || >=22.12',\n },\n }\n\n const files: PkgTemplateFile[] = []\n\n // .editorconfig\n files.push({\n name: '.editorconfig',\n contents: outdent`\n root = true\n\n [*]\n charset = utf-8\n indent_style = space\n indent_size = 2\n end_of_line = lf\n insert_final_newline = true\n trim_trailing_whitespace = true\n `,\n })\n\n // .gitignore\n files.push({\n name: '.gitignore',\n contents: outdent`\n *.local\n *.log\n *.tgz\n\n .DS_Store\n dist\n etc\n node_modules\n `,\n })\n\n if (features['prettier']) {\n files.push({\n name: '.prettierignore',\n contents: outdent`\n dist\n pnpm-lock.yaml\n `,\n })\n }\n\n if (repo) {\n pkgJson.repository = {\n type: 'git',\n url: `git+ssh://git@${repo.source}/${repo.owner}/${repo.name}.git`,\n }\n pkgJson.bugs = {\n url: `https://${repo.source}/${repo.owner}/${repo.name}/issues`,\n }\n pkgJson.homepage = `https://${repo.source}/${repo.owner}/${repo.name}#readme`\n }\n\n if (features['typescript']) {\n pkgJson.types = './dist/index.d.ts'\n\n pkgJson.scripts = {\n ...pkgJson.scripts,\n ['ts:check']: 'tsc --noEmit',\n }\n\n const devDependencies = pkgJson.devDependencies\n\n if (isRecord(devDependencies)) {\n devDependencies['typescript'] = '^5.9'\n }\n }\n\n if (features['eslint']) {\n const eslintConfig: any = {\n root: true,\n env: {\n browser: true,\n es6: true,\n node: true,\n },\n extends: [\n 'eslint:recommended',\n features['prettier'] ? 'plugin:prettier/recommended' : undefined,\n ].filter(Boolean),\n parserOptions: {\n ecmaVersion: 2020,\n sourceType: 'module',\n },\n plugins: [\n 'import',\n 'simple-import-sort',\n features['prettier'] ? 'prettier' : undefined,\n ].filter(Boolean),\n rules: {\n 'no-console': 'error',\n 'no-shadow': 'error',\n 'no-warning-comments': ['warn', {location: 'start', terms: ['todo', 'fixme']}],\n 'quote-props': ['warn', 'consistent-as-needed'],\n 'simple-import-sort/exports': 'warn',\n 'simple-import-sort/imports': 'warn',\n 'strict': ['warn', 'global'],\n },\n }\n\n files.push({\n name: '.eslintignore',\n contents: outdent`\n dist\n `,\n })\n\n pkgJson.scripts = {\n ...pkgJson.scripts,\n lint: features['typescript']\n ? 'eslint . --ext .cjs,.js,.ts,.tsx'\n : 'eslint . --ext .cjs,.js',\n }\n\n pkgJson.devDependencies = {\n ...pkgJson.devDependencies,\n 'eslint': '^8',\n 'eslint-config-prettier': features['prettier'] ? '^9' : undefined,\n 'eslint-plugin-import': '^2',\n 'eslint-plugin-prettier': features['prettier'] ? '^5' : undefined,\n 'eslint-plugin-simple-import-sort': '^12',\n }\n\n if (features['typescript']) {\n pkgJson.devDependencies = {\n ...pkgJson.devDependencies,\n '@typescript-eslint/eslint-plugin': '^7',\n '@typescript-eslint/parser': '^7',\n }\n\n const eslintConfigOverride: any = {\n files: ['**/*.ts', '**/*.tsx'],\n parser: '@typescript-eslint/parser',\n parserOptions: {\n project: ['./tsconfig.json'],\n },\n extends: [\n 'eslint:recommended',\n features['prettier'] ? 'plugin:prettier/recommended' : undefined,\n 'plugin:@typescript-eslint/eslint-recommended',\n 'plugin:@typescript-eslint/recommended',\n ].filter(Boolean),\n plugins: [\n 'import',\n '@typescript-eslint',\n 'simple-import-sort',\n features['prettier'] ? 'prettier' : undefined,\n ].filter(Boolean),\n rules: {\n '@typescript-eslint/explicit-module-boundary-types': 'error',\n '@typescript-eslint/interface-name-prefix': 'off',\n '@typescript-eslint/member-delimiter-style': 'off',\n '@typescript-eslint/no-empty-interface': 'off',\n },\n }\n\n eslintConfig.overrides = [eslintConfigOverride]\n }\n\n files.push({\n name: '.eslintrc.cjs',\n contents: await prettierFormat(\n resolve(packagePath, '.eslintrc.cjs'),\n outdent`\n 'use strict'\n\n /** @type import('eslint').Linter.Config */\n module.exports = ${JSON.stringify(eslintConfig, null, 2)}\n `,\n prettierConfig,\n ),\n })\n }\n\n if (features['typescript']) {\n files.push({\n name: 'tsconfig.settings.json',\n contents: await prettierFormat(\n resolve(packagePath, 'tsconfig.settings.json'),\n outdent`\n {\n \"extends\": \"@sanity/tsconfig/strictest\",\n \"compilerOptions\": {\n \"rootDir\": \".\",\n \"outDir\": \"./dist\"\n }\n }\n `,\n prettierConfig,\n ),\n })\n\n files.push({\n name: 'tsconfig.dist.json',\n contents: await prettierFormat(\n resolve(packagePath, 'tsconfig.dist.json'),\n outdent`\n {\n \"extends\": \"./tsconfig.settings\",\n \"include\": [\"./src\"],\n \"exclude\": [\"./src/**/*.test.ts\"]\n }\n `,\n prettierConfig,\n ),\n })\n\n files.push({\n name: 'tsconfig.json',\n contents: await prettierFormat(\n resolve(packagePath, 'tsconfig.json'),\n outdent`\n {\n \"extends\": \"./tsconfig.settings\",\n \"include\": [\"./**/*.cjs\", \"./**/*.ts\", \"./**/*.tsx\"],\n \"exclude\": [\"./node_modules\"]\n }\n `,\n prettierConfig,\n ),\n })\n }\n\n // source file\n if (features['typescript']) {\n files.push({\n name: 'package.config.ts',\n contents: await prettierFormat(\n resolve(packagePath, 'package.config.ts'),\n outdent`\n import {defineConfig} from '@sanity/pkg-utils'\n\n // https://github.com/sanity-io/pkg-utils#configuration\n export default defineConfig({\n // the path to the tsconfig file for distributed builds\n tsconfig: 'tsconfig.dist.json',\n })\n `,\n prettierConfig,\n ),\n })\n\n files.push({\n name: 'src/index.ts',\n contents: await prettierFormat(\n resolve(packagePath, 'src/index.ts'),\n outdent`\n /** @public */\n export function main(): void {\n //\n }\n `,\n prettierConfig,\n ),\n })\n } else {\n files.push({\n name: 'package.config.js',\n contents: await prettierFormat(\n resolve(packagePath, 'package.config.js'),\n outdent`\n import {defineConfig} from '@sanity/pkg-utils'\n\n export default defineConfig({\n extract: {\n rules: {\n // do not require internal members to be prefixed with \\`_\\`\n 'ae-internal-missing-underscore': 'off',\n },\n },\n })\n `,\n prettierConfig,\n ),\n })\n\n files.push({\n name: 'src/index.js',\n contents: await prettierFormat(\n resolve(packagePath, 'src/index.js'),\n outdent`\n /** @public */\n export function main() {\n //\n }\n `,\n prettierConfig,\n ),\n })\n }\n\n // Resolve latest dependencies\n try {\n pkgJson.dependencies = await resolveLatestDeps(pkgJson.dependencies ?? {})\n } catch (error) {\n logger.warn(error instanceof Error ? error.message : error)\n }\n\n // Resolve latest devDependencies\n try {\n pkgJson.devDependencies = await resolveLatestDeps(pkgJson.devDependencies ?? {})\n } catch (error) {\n logger.warn(error instanceof Error ? error.message : error)\n }\n\n files.push({\n name: 'package.json',\n contents: await prettierFormat(\n resolve(packagePath, 'package.json'),\n JSON.stringify(pkgJson, null, 2),\n prettierConfig,\n ),\n })\n\n return files\n },\n }\n}\n\nfunction prettierFormat(\n filepath: string,\n input: string,\n prettierOptions: PrettierConfig | undefined,\n) {\n return format(input, {...prettierOptions, plugins: [], filepath})\n}\n\nasync function resolveLatestDeps(deps: Record<string, string | undefined>) {\n const depsEntries = Object.entries(deps)\n const latestDeps: Record<string, string> = {}\n\n for (const entry of depsEntries) {\n const [name, version] = entry\n\n if (version) {\n const latestVersion = await getLatestVersion(name, version)\n\n latestDeps[name] = latestVersion ? `^${latestVersion}` : version\n }\n }\n\n return latestDeps\n}\n\nfunction getGitUserConfig(cwd: string): {user: string | undefined; email: string | undefined} {\n let user: string | undefined\n let email: string | undefined\n\n try {\n user = execSync('git config user.name', {encoding: 'utf8', cwd}).trim() || undefined\n email = execSync('git config user.email', {encoding: 'utf8', cwd}).trim() || undefined\n } catch {\n /* ignore */\n }\n\n return {user, email}\n}\n","import {lstat} from 'node:fs/promises'\nimport {resolve} from 'node:path'\nimport {mkdirp} from 'mkdirp'\nimport {createFromTemplate} from './core/template/index.ts'\nimport {fileExists} from './fileExists.ts'\nimport {isEmptyDirectory} from './isEmptyDirectory.ts'\nimport {createLogger} from './logger.ts'\nimport {defaultTemplate} from './templates/default/template.ts'\n\n/** @public */\nexport async function init(options: {cwd: string; path: string}): Promise<void> {\n if (!options.cwd) {\n throw new Error('Missing required option: cwd')\n }\n\n if (!options.path) {\n throw new Error('Missing required option: path')\n }\n\n const logger = createLogger()\n\n const packagePath = resolve(options.cwd, options.path)\n\n await ensurePackagePath(packagePath)\n\n await createFromTemplate({\n cwd: options.cwd,\n logger,\n template: defaultTemplate,\n packagePath,\n })\n}\n\nasync function ensurePackagePath(packagePath: string): Promise<void> {\n const exists = fileExists(packagePath)\n\n if (!exists) {\n await mkdirp(packagePath)\n\n return\n }\n\n const dir = (await lstat(packagePath)).isDirectory()\n\n if (!dir) {\n throw new Error('the package path is a file, not a directory')\n }\n\n const empty = await isEmptyDirectory(packagePath)\n\n if (!empty) {\n throw new Error('the package directory is not empty')\n }\n}\n","import {init} from '../node/init.ts'\nimport {handleError} from './handleError.ts'\n\nexport async function initAction(options: {path: string}): Promise<void> {\n try {\n await init({\n cwd: process.cwd(),\n path: options.path,\n })\n } catch (err) {\n handleError(err)\n }\n}\n"],"names":["prettierConfig"],"mappings":"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","x_google_ignoreList":[2]}
1
+ {"version":3,"file":"initAction.js","sources":["../../src/node/core/template/createFromTemplate.ts","../../src/node/isEmptyDirectory.ts","../../../../../node_modules/.pnpm/@sanity+prettier-config@3.0.0_prettier@3.8.1/node_modules/@sanity/prettier-config/dist/index.js","../../src/node/templates/default/template.ts","../../src/node/init.ts","../../src/cli/initAction.ts"],"sourcesContent":["import {writeFile} from 'node:fs/promises'\nimport {dirname, relative, resolve} from 'node:path'\nimport {mkdirp} from 'mkdirp'\nimport prompts from 'prompts'\nimport type {Logger} from '../../logger.ts'\nimport type {PkgTemplate} from './types.ts'\n\nconst promptsTypes = {\n string: 'text' as const,\n}\n\n/** @internal */\nexport async function createFromTemplate(options: {\n cwd: string\n logger: Logger\n packagePath: string\n template: PkgTemplate\n}): Promise<void> {\n const {cwd, logger, packagePath, template: templateOrResolver} = options\n\n const template =\n typeof templateOrResolver === 'function'\n ? await templateOrResolver({cwd, logger, packagePath})\n : templateOrResolver\n\n logger.log('create new package at', relative(cwd, packagePath))\n\n const templateOptions: Record<string, string> = {}\n\n for (const templateOption of template.options) {\n const templateValidate = templateOption.validate\n\n const res = await prompts(\n {\n type: promptsTypes[templateOption.type],\n name: templateOption.name,\n message: templateOption.description,\n validate: templateValidate ? (prev) => templateValidate(prev) : undefined,\n initial:\n typeof templateOption.initial === 'function'\n ? templateOption.initial(templateOptions)\n : templateOption.initial,\n },\n {onCancel: () => process.exit(0)},\n )\n\n templateOptions[templateOption.name] = templateOption.parse\n ? templateOption.parse(res[templateOption.name])\n : res[templateOption.name]\n }\n\n const features: Record<string, boolean> = {}\n\n for (const templateFeature of template.features) {\n const res = templateFeature.optional\n ? await prompts(\n {\n type: 'confirm',\n name: 'confirm',\n message: `use ${templateFeature.name}?`,\n initial: templateFeature.initial,\n },\n {onCancel: () => process.exit(0)},\n )\n : undefined\n\n features[templateFeature.name] = res?.confirm || !templateFeature.optional\n }\n\n const files = await template.getFiles(templateOptions, features)\n\n files.sort((a, b) => {\n return a.name.localeCompare(b.name)\n })\n\n for (const file of files) {\n const filePath = resolve(packagePath, file.name)\n\n await mkdirp(dirname(filePath))\n await writeFile(filePath, file.contents.trim() + '\\n')\n\n logger.success(`wrote ${relative(cwd, filePath)}`)\n }\n}\n","import {readdir} from 'node:fs/promises'\n\nexport async function isEmptyDirectory(dirPath: string): Promise<boolean> {\n return (await readdir(dirPath)).length === 0\n}\n","const overridableDefaults = {\n endOfLine: \"lf\",\n tabWidth: 2,\n useTabs: !1\n}, json5 = {\n files: [\"*.json5\"],\n options: {\n quoteProps: \"preserve\",\n singleQuote: !1\n }\n}, yaml = {\n files: [\"*.yml\"],\n options: {\n singleQuote: !1\n }\n}, config = {\n ...overridableDefaults,\n printWidth: 100,\n semi: !1,\n singleQuote: !0,\n quoteProps: \"consistent\",\n bracketSpacing: !1,\n plugins: [\"prettier-plugin-packagejson\"],\n overrides: [json5, yaml]\n};\nexport {\n config as default\n};\n//# sourceMappingURL=index.js.map\n","import {execSync} from 'node:child_process'\nimport {resolve} from 'node:path'\nimport type {PackageJSON} from '@sanity/parse-package-json'\nimport prettierConfig from '@sanity/prettier-config'\nimport getLatestVersion from 'get-latest-version'\nimport gitUrlParse from 'git-url-parse'\nimport {outdent} from 'outdent'\nimport {format, type Config as PrettierConfig} from 'prettier'\nimport {isRecord} from '../../core/isRecord.ts'\nimport {defineTemplateOption} from '../../core/template/define.ts'\nimport {type PkgTemplate, type PkgTemplateFile} from '../../core/template/types.ts'\n\nconst RE_NAME = /^(?:@(?:[a-z0-9-*~][a-z0-9-*._~]*)\\/)?[a-z0-9-~][a-z0-9-._~]*$/i\n\nexport const defaultTemplate: PkgTemplate = async ({cwd, logger, packagePath}) => {\n const gitConfig = getGitUserConfig(cwd)\n\n return {\n options: [\n defineTemplateOption<{owner: string; name: string}>({\n name: 'repo',\n type: 'string',\n description: 'git url',\n validate: (v) => {\n if (!v) return true\n\n try {\n gitUrlParse(v)\n\n return true\n } catch {\n return 'invalid git url'\n }\n },\n parse: (v) => {\n if (!v) return null\n\n const result = gitUrlParse(v)\n\n return {source: result.source, owner: result.owner, name: result.name}\n },\n }),\n defineTemplateOption({\n name: 'pkgName',\n type: 'string',\n description: 'package name',\n initial: (options) => options['repo']?.name || undefined,\n validate: (v) => {\n if (!v) return 'package name is required'\n\n const match = RE_NAME.exec(v)\n\n if (!match) {\n return 'invalid package name'\n }\n\n return true\n },\n parse: (v) => {\n if (!v) {\n throw new Error('package name is required')\n }\n\n const match = RE_NAME.exec(v)\n\n if (!match) {\n throw new Error('invalid package name')\n }\n\n const [scope, name] = v.split('/')\n\n return {scope, name, fullName: v}\n },\n }),\n defineTemplateOption({\n name: 'description',\n type: 'string',\n description: 'package description',\n }),\n defineTemplateOption({\n name: 'authorName',\n type: 'string',\n description: 'package author name',\n initial: gitConfig.user,\n }),\n defineTemplateOption({\n name: 'authorEmail',\n type: 'string',\n description: 'package author email',\n initial: gitConfig.email,\n }),\n defineTemplateOption({\n name: 'license',\n type: 'string',\n description: 'package license',\n initial: 'MIT',\n validate: (v) => {\n if (!v) return 'license is required'\n\n return true\n },\n }),\n ],\n\n features: [\n {\n name: 'eslint',\n optional: true,\n initial: true,\n },\n {\n name: 'prettier',\n optional: true,\n initial: true,\n },\n {\n name: 'typescript',\n optional: true,\n initial: true,\n },\n ],\n\n async getFiles(options, features) {\n const {pkgName, repo} = options\n const {fullName: name} = pkgName\n\n const author =\n [options['authorName'], options['authorEmail'] && `<${options['authorEmail']}>`]\n .filter(Boolean)\n .join(' ') ?? undefined\n\n const pkgJson: PackageJSON & {\n prettier?: '@sanity/prettier-config'\n ['lint-staged']?: Record<string, string[]>\n } = {\n name,\n 'version': '0.0.0',\n 'description': options['description'] ?? undefined,\n 'keywords': [],\n 'homepage': undefined,\n 'bugs': undefined,\n 'repository': undefined,\n 'license': options['license'],\n author,\n 'sideEffects': false,\n 'type': 'module',\n 'exports': {\n '.': {\n source: features['typescript'] ? './src/index.ts' : './src/index.js',\n require: './dist/index.cjs',\n default: './dist/index.js',\n },\n './package.json': './package.json',\n },\n 'main': './dist/index.cjs',\n 'module': './dist/index.js',\n 'types': undefined,\n 'files': ['dist', 'src'],\n 'scripts': {\n build: 'pkg build --strict --clean --check',\n format: features['prettier'] ? 'prettier --write --cache --ignore-unknown .' : undefined,\n },\n 'lint-staged': features['prettier']\n ? {\n '*': ['prettier --write --cache --ignore-unknown'],\n }\n : undefined,\n 'browserslist': 'extends @sanity/browserslist-config',\n 'prettier': features['prettier'] ? '@sanity/prettier-config' : undefined,\n 'dependencies': {},\n 'devDependencies': {\n '@sanity/tsconfig': features['typescript'] ? '^1' : undefined,\n '@sanity/pkg-utils': '^9',\n '@sanity/prettier-config': features['prettier'] ? '^1' : undefined,\n '@typescript-eslint/eslint-plugin': undefined,\n '@typescript-eslint/parser': undefined,\n 'eslint': undefined,\n 'eslint-config-prettier': undefined,\n 'eslint-plugin-import': undefined,\n 'eslint-plugin-prettier': undefined,\n 'eslint-plugin-simple-import-sort': undefined,\n 'lint-staged': '^15',\n 'prettier': features['prettier'] ? '^3' : undefined,\n 'typescript': undefined,\n },\n 'engines': {\n node: '>=20.19 <22 || >=22.12',\n },\n }\n\n const files: PkgTemplateFile[] = []\n\n // .editorconfig\n files.push({\n name: '.editorconfig',\n contents: outdent`\n root = true\n\n [*]\n charset = utf-8\n indent_style = space\n indent_size = 2\n end_of_line = lf\n insert_final_newline = true\n trim_trailing_whitespace = true\n `,\n })\n\n // .gitignore\n files.push({\n name: '.gitignore',\n contents: outdent`\n *.local\n *.log\n *.tgz\n\n .DS_Store\n dist\n etc\n node_modules\n `,\n })\n\n if (features['prettier']) {\n files.push({\n name: '.prettierignore',\n contents: outdent`\n dist\n pnpm-lock.yaml\n `,\n })\n }\n\n if (repo) {\n pkgJson.repository = {\n type: 'git',\n url: `git+ssh://git@${repo.source}/${repo.owner}/${repo.name}.git`,\n }\n pkgJson.bugs = {\n url: `https://${repo.source}/${repo.owner}/${repo.name}/issues`,\n }\n pkgJson.homepage = `https://${repo.source}/${repo.owner}/${repo.name}#readme`\n }\n\n if (features['typescript']) {\n pkgJson.types = './dist/index.d.ts'\n\n pkgJson.scripts = {\n ...pkgJson.scripts,\n ['ts:check']: 'tsc --noEmit',\n }\n\n const devDependencies = pkgJson.devDependencies\n\n if (isRecord(devDependencies)) {\n devDependencies['typescript'] = '^5.9'\n }\n }\n\n if (features['eslint']) {\n const eslintConfig: any = {\n root: true,\n env: {\n browser: true,\n es6: true,\n node: true,\n },\n extends: [\n 'eslint:recommended',\n features['prettier'] ? 'plugin:prettier/recommended' : undefined,\n ].filter(Boolean),\n parserOptions: {\n ecmaVersion: 2020,\n sourceType: 'module',\n },\n plugins: [\n 'import',\n 'simple-import-sort',\n features['prettier'] ? 'prettier' : undefined,\n ].filter(Boolean),\n rules: {\n 'no-console': 'error',\n 'no-shadow': 'error',\n 'no-warning-comments': ['warn', {location: 'start', terms: ['todo', 'fixme']}],\n 'quote-props': ['warn', 'consistent-as-needed'],\n 'simple-import-sort/exports': 'warn',\n 'simple-import-sort/imports': 'warn',\n 'strict': ['warn', 'global'],\n },\n }\n\n files.push({\n name: '.eslintignore',\n contents: outdent`\n dist\n `,\n })\n\n pkgJson.scripts = {\n ...pkgJson.scripts,\n lint: features['typescript']\n ? 'eslint . --ext .cjs,.js,.ts,.tsx'\n : 'eslint . --ext .cjs,.js',\n }\n\n pkgJson.devDependencies = {\n ...pkgJson.devDependencies,\n 'eslint': '^8',\n 'eslint-config-prettier': features['prettier'] ? '^9' : undefined,\n 'eslint-plugin-import': '^2',\n 'eslint-plugin-prettier': features['prettier'] ? '^5' : undefined,\n 'eslint-plugin-simple-import-sort': '^12',\n }\n\n if (features['typescript']) {\n pkgJson.devDependencies = {\n ...pkgJson.devDependencies,\n '@typescript-eslint/eslint-plugin': '^7',\n '@typescript-eslint/parser': '^7',\n }\n\n const eslintConfigOverride: any = {\n files: ['**/*.ts', '**/*.tsx'],\n parser: '@typescript-eslint/parser',\n parserOptions: {\n project: ['./tsconfig.json'],\n },\n extends: [\n 'eslint:recommended',\n features['prettier'] ? 'plugin:prettier/recommended' : undefined,\n 'plugin:@typescript-eslint/eslint-recommended',\n 'plugin:@typescript-eslint/recommended',\n ].filter(Boolean),\n plugins: [\n 'import',\n '@typescript-eslint',\n 'simple-import-sort',\n features['prettier'] ? 'prettier' : undefined,\n ].filter(Boolean),\n rules: {\n '@typescript-eslint/explicit-module-boundary-types': 'error',\n '@typescript-eslint/interface-name-prefix': 'off',\n '@typescript-eslint/member-delimiter-style': 'off',\n '@typescript-eslint/no-empty-interface': 'off',\n },\n }\n\n eslintConfig.overrides = [eslintConfigOverride]\n }\n\n files.push({\n name: '.eslintrc.cjs',\n contents: await prettierFormat(\n resolve(packagePath, '.eslintrc.cjs'),\n outdent`\n 'use strict'\n\n /** @type import('eslint').Linter.Config */\n module.exports = ${JSON.stringify(eslintConfig, null, 2)}\n `,\n prettierConfig,\n ),\n })\n }\n\n if (features['typescript']) {\n files.push({\n name: 'tsconfig.settings.json',\n contents: await prettierFormat(\n resolve(packagePath, 'tsconfig.settings.json'),\n outdent`\n {\n \"extends\": \"@sanity/tsconfig/strictest\",\n \"compilerOptions\": {\n \"rootDir\": \".\",\n \"outDir\": \"./dist\"\n }\n }\n `,\n prettierConfig,\n ),\n })\n\n files.push({\n name: 'tsconfig.dist.json',\n contents: await prettierFormat(\n resolve(packagePath, 'tsconfig.dist.json'),\n outdent`\n {\n \"extends\": \"./tsconfig.settings\",\n \"include\": [\"./src\"],\n \"exclude\": [\"./src/**/*.test.ts\"]\n }\n `,\n prettierConfig,\n ),\n })\n\n files.push({\n name: 'tsconfig.json',\n contents: await prettierFormat(\n resolve(packagePath, 'tsconfig.json'),\n outdent`\n {\n \"extends\": \"./tsconfig.settings\",\n \"include\": [\"./**/*.cjs\", \"./**/*.ts\", \"./**/*.tsx\"],\n \"exclude\": [\"./node_modules\"]\n }\n `,\n prettierConfig,\n ),\n })\n }\n\n // source file\n if (features['typescript']) {\n files.push({\n name: 'package.config.ts',\n contents: await prettierFormat(\n resolve(packagePath, 'package.config.ts'),\n outdent`\n import {defineConfig} from '@sanity/pkg-utils'\n\n // https://github.com/sanity-io/pkg-utils#configuration\n export default defineConfig({\n // the path to the tsconfig file for distributed builds\n tsconfig: 'tsconfig.dist.json',\n })\n `,\n prettierConfig,\n ),\n })\n\n files.push({\n name: 'src/index.ts',\n contents: await prettierFormat(\n resolve(packagePath, 'src/index.ts'),\n outdent`\n /** @public */\n export function main(): void {\n //\n }\n `,\n prettierConfig,\n ),\n })\n } else {\n files.push({\n name: 'package.config.js',\n contents: await prettierFormat(\n resolve(packagePath, 'package.config.js'),\n outdent`\n import {defineConfig} from '@sanity/pkg-utils'\n\n export default defineConfig({\n extract: {\n rules: {\n // do not require internal members to be prefixed with \\`_\\`\n 'ae-internal-missing-underscore': 'off',\n },\n },\n })\n `,\n prettierConfig,\n ),\n })\n\n files.push({\n name: 'src/index.js',\n contents: await prettierFormat(\n resolve(packagePath, 'src/index.js'),\n outdent`\n /** @public */\n export function main() {\n //\n }\n `,\n prettierConfig,\n ),\n })\n }\n\n // Resolve latest dependencies\n try {\n pkgJson.dependencies = await resolveLatestDeps(pkgJson.dependencies ?? {})\n } catch (error) {\n logger.warn(error instanceof Error ? error.message : error)\n }\n\n // Resolve latest devDependencies\n try {\n pkgJson.devDependencies = await resolveLatestDeps(pkgJson.devDependencies ?? {})\n } catch (error) {\n logger.warn(error instanceof Error ? error.message : error)\n }\n\n files.push({\n name: 'package.json',\n contents: await prettierFormat(\n resolve(packagePath, 'package.json'),\n JSON.stringify(pkgJson, null, 2),\n prettierConfig,\n ),\n })\n\n return files\n },\n }\n}\n\nfunction prettierFormat(\n filepath: string,\n input: string,\n prettierOptions: PrettierConfig | undefined,\n) {\n return format(input, {...prettierOptions, plugins: [], filepath})\n}\n\nasync function resolveLatestDeps(deps: Record<string, string | undefined>) {\n const depsEntries = Object.entries(deps)\n const latestDeps: Record<string, string> = {}\n\n for (const entry of depsEntries) {\n const [name, version] = entry\n\n if (version) {\n const latestVersion = await getLatestVersion(name, version)\n\n latestDeps[name] = latestVersion ? `^${latestVersion}` : version\n }\n }\n\n return latestDeps\n}\n\nfunction getGitUserConfig(cwd: string): {user: string | undefined; email: string | undefined} {\n let user: string | undefined\n let email: string | undefined\n\n try {\n user = execSync('git config user.name', {encoding: 'utf8', cwd}).trim() || undefined\n email = execSync('git config user.email', {encoding: 'utf8', cwd}).trim() || undefined\n } catch {\n /* ignore */\n }\n\n return {user, email}\n}\n","import {lstat} from 'node:fs/promises'\nimport {resolve} from 'node:path'\nimport {mkdirp} from 'mkdirp'\nimport {createFromTemplate} from './core/template/index.ts'\nimport {fileExists} from './fileExists.ts'\nimport {isEmptyDirectory} from './isEmptyDirectory.ts'\nimport {createLogger} from './logger.ts'\nimport {defaultTemplate} from './templates/default/template.ts'\n\n/** @public */\nexport async function init(options: {cwd: string; path: string}): Promise<void> {\n if (!options.cwd) {\n throw new Error('Missing required option: cwd')\n }\n\n if (!options.path) {\n throw new Error('Missing required option: path')\n }\n\n const logger = createLogger()\n\n const packagePath = resolve(options.cwd, options.path)\n\n await ensurePackagePath(packagePath)\n\n await createFromTemplate({\n cwd: options.cwd,\n logger,\n template: defaultTemplate,\n packagePath,\n })\n}\n\nasync function ensurePackagePath(packagePath: string): Promise<void> {\n const exists = fileExists(packagePath)\n\n if (!exists) {\n await mkdirp(packagePath)\n\n return\n }\n\n const dir = (await lstat(packagePath)).isDirectory()\n\n if (!dir) {\n throw new Error('the package path is a file, not a directory')\n }\n\n const empty = await isEmptyDirectory(packagePath)\n\n if (!empty) {\n throw new Error('the package directory is not empty')\n }\n}\n","import {init} from '../node/init.ts'\nimport {handleError} from './handleError.ts'\n\nexport async function initAction(options: {path: string}): Promise<void> {\n try {\n await init({\n cwd: process.cwd(),\n path: options.path,\n })\n } catch (err) {\n handleError(err)\n }\n}\n"],"names":["prettierConfig"],"mappings":";;;;;;;;;;;;AAOA,MAAM,eAAe;AAAA,EACnB,QAAQ;AACV;AAGA,eAAsB,mBAAmB,SAKvB;AAChB,QAAM,EAAC,KAAK,QAAQ,aAAa,UAAU,mBAAA,IAAsB,SAE3D,WACJ,OAAO,sBAAuB,aAC1B,MAAM,mBAAmB,EAAC,KAAK,QAAQ,YAAA,CAAY,IACnD;AAEN,SAAO,IAAI,yBAAyB,SAAS,KAAK,WAAW,CAAC;AAE9D,QAAM,kBAA0C,CAAA;AAEhD,aAAW,kBAAkB,SAAS,SAAS;AAC7C,UAAM,mBAAmB,eAAe,UAElC,MAAM,MAAM;AAAA,MAChB;AAAA,QACE,MAAM,aAAa,eAAe,IAAI;AAAA,QACtC,MAAM,eAAe;AAAA,QACrB,SAAS,eAAe;AAAA,QACxB,UAAU,mBAAmB,CAAC,SAAS,iBAAiB,IAAI,IAAI;AAAA,QAChE,SACE,OAAO,eAAe,WAAY,aAC9B,eAAe,QAAQ,eAAe,IACtC,eAAe;AAAA,MAAA;AAAA,MAEvB,EAAC,UAAU,MAAM,QAAQ,KAAK,CAAC,EAAA;AAAA,IAAC;AAGlC,oBAAgB,eAAe,IAAI,IAAI,eAAe,QAClD,eAAe,MAAM,IAAI,eAAe,IAAI,CAAC,IAC7C,IAAI,eAAe,IAAI;AAAA,EAC7B;AAEA,QAAM,WAAoC,CAAA;AAE1C,aAAW,mBAAmB,SAAS,UAAU;AAC/C,UAAM,MAAM,gBAAgB,WACxB,MAAM;AAAA,MACJ;AAAA,QACE,MAAM;AAAA,QACN,MAAM;AAAA,QACN,SAAS,OAAO,gBAAgB,IAAI;AAAA,QACpC,SAAS,gBAAgB;AAAA,MAAA;AAAA,MAE3B,EAAC,UAAU,MAAM,QAAQ,KAAK,CAAC,EAAA;AAAA,IAAC,IAElC;AAEJ,aAAS,gBAAgB,IAAI,IAAI,KAAK,WAAW,CAAC,gBAAgB;AAAA,EACpE;AAEA,QAAM,QAAQ,MAAM,SAAS,SAAS,iBAAiB,QAAQ;AAE/D,QAAM,KAAK,CAAC,GAAG,MACN,EAAE,KAAK,cAAc,EAAE,IAAI,CACnC;AAED,aAAW,QAAQ,OAAO;AACxB,UAAM,WAAW,QAAQ,aAAa,KAAK,IAAI;AAE/C,UAAM,OAAO,QAAQ,QAAQ,CAAC,GAC9B,MAAM,UAAU,UAAU,KAAK,SAAS,SAAS;AAAA,CAAI,GAErD,OAAO,QAAQ,SAAS,SAAS,KAAK,QAAQ,CAAC,EAAE;AAAA,EACnD;AACF;ACjFA,eAAsB,iBAAiB,SAAmC;AACxE,UAAQ,MAAM,QAAQ,OAAO,GAAG,WAAW;AAC7C;ACJA,MAAM,sBAAsB;AAAA,EAC1B,WAAW;AAAA,EACX,UAAU;AAAA,EACV,SAAS;AACX,GAAG,QAAQ;AAAA,EACT,OAAO,CAAC,SAAS;AAAA,EACjB,SAAS;AAAA,IACP,YAAY;AAAA,IACZ,aAAa;AAAA,EACjB;AACA,GAAG,OAAO;AAAA,EACR,OAAO,CAAC,OAAO;AAAA,EACf,SAAS;AAAA,IACP,aAAa;AAAA,EACjB;AACA,GAAG,SAAS;AAAA,EACV,GAAG;AAAA,EACH,YAAY;AAAA,EACZ,MAAM;AAAA,EACN,aAAa;AAAA,EACb,YAAY;AAAA,EACZ,gBAAgB;AAAA,EAChB,SAAS,CAAC,6BAA6B;AAAA,EACvC,WAAW,CAAC,OAAO,IAAI;AACzB,GCZM,UAAU,mEAEH,kBAA+B,OAAO,EAAC,KAAK,QAAQ,kBAAiB;AAChF,QAAM,YAAY,iBAAiB,GAAG;AAEtC,SAAO;AAAA,IACL,SAAS;AAAA,MACP,qBAAoD;AAAA,QAClD,MAAM;AAAA,QACN,MAAM;AAAA,QACN,aAAa;AAAA,QACb,UAAU,CAAC,MAAM;AACf,cAAI,CAAC,EAAG,QAAO;AAEf,cAAI;AACF,mBAAA,YAAY,CAAC,GAEN;AAAA,UACT,QAAQ;AACN,mBAAO;AAAA,UACT;AAAA,QACF;AAAA,QACA,OAAO,CAAC,MAAM;AACZ,cAAI,CAAC,EAAG,QAAO;AAEf,gBAAM,SAAS,YAAY,CAAC;AAE5B,iBAAO,EAAC,QAAQ,OAAO,QAAQ,OAAO,OAAO,OAAO,MAAM,OAAO,KAAA;AAAA,QACnE;AAAA,MAAA,CACD;AAAA,MACD,qBAAqB;AAAA,QACnB,MAAM;AAAA,QACN,MAAM;AAAA,QACN,aAAa;AAAA,QACb,SAAS,CAAC,YAAY,QAAQ,MAAS,QAAQ;AAAA,QAC/C,UAAU,CAAC,MACJ,IAES,QAAQ,KAAK,CAAC,IAMrB,KAHE,yBALM;AAAA,QAUjB,OAAO,CAAC,MAAM;AACZ,cAAI,CAAC;AACH,kBAAM,IAAI,MAAM,0BAA0B;AAK5C,cAAI,CAFU,QAAQ,KAAK,CAAC;AAG1B,kBAAM,IAAI,MAAM,sBAAsB;AAGxC,gBAAM,CAAC,OAAO,IAAI,IAAI,EAAE,MAAM,GAAG;AAEjC,iBAAO,EAAC,OAAO,MAAM,UAAU,EAAA;AAAA,QACjC;AAAA,MAAA,CACD;AAAA,MACD,qBAAqB;AAAA,QACnB,MAAM;AAAA,QACN,MAAM;AAAA,QACN,aAAa;AAAA,MAAA,CACd;AAAA,MACD,qBAAqB;AAAA,QACnB,MAAM;AAAA,QACN,MAAM;AAAA,QACN,aAAa;AAAA,QACb,SAAS,UAAU;AAAA,MAAA,CACpB;AAAA,MACD,qBAAqB;AAAA,QACnB,MAAM;AAAA,QACN,MAAM;AAAA,QACN,aAAa;AAAA,QACb,SAAS,UAAU;AAAA,MAAA,CACpB;AAAA,MACD,qBAAqB;AAAA,QACnB,MAAM;AAAA,QACN,MAAM;AAAA,QACN,aAAa;AAAA,QACb,SAAS;AAAA,QACT,UAAU,CAAC,MACJ,IAEE,KAFQ;AAAA,MAAA,CAIlB;AAAA,IAAA;AAAA,IAGH,UAAU;AAAA,MACR;AAAA,QACE,MAAM;AAAA,QACN,UAAU;AAAA,QACV,SAAS;AAAA,MAAA;AAAA,MAEX;AAAA,QACE,MAAM;AAAA,QACN,UAAU;AAAA,QACV,SAAS;AAAA,MAAA;AAAA,MAEX;AAAA,QACE,MAAM;AAAA,QACN,UAAU;AAAA,QACV,SAAS;AAAA,MAAA;AAAA,IACX;AAAA,IAGF,MAAM,SAAS,SAAS,UAAU;AAChC,YAAM,EAAC,SAAS,SAAQ,SAClB,EAAC,UAAU,KAAA,IAAQ,SAEnB,SACJ,CAAC,QAAQ,YAAe,QAAQ,eAAkB,IAAI,QAAQ,WAAc,GAAG,EAC5E,OAAO,OAAO,EACd,KAAK,GAAG,KAAK,QAEZ,UAGF;AAAA,QACF;AAAA,QACA,SAAW;AAAA,QACX,aAAe,QAAQ,eAAkB;AAAA,QACzC,UAAY,CAAA;AAAA,QACZ,UAAY;AAAA,QACZ,MAAQ;AAAA,QACR,YAAc;AAAA,QACd,SAAW,QAAQ;AAAA,QACnB;AAAA,QACA,aAAe;AAAA,QACf,MAAQ;AAAA,QACR,SAAW;AAAA,UACT,KAAK;AAAA,YACH,QAAQ,SAAS,aAAgB,mBAAmB;AAAA,YACpD,SAAS;AAAA,YACT,SAAS;AAAA,UAAA;AAAA,UAEX,kBAAkB;AAAA,QAAA;AAAA,QAEpB,MAAQ;AAAA,QACR,QAAU;AAAA,QACV,OAAS;AAAA,QACT,OAAS,CAAC,QAAQ,KAAK;AAAA,QACvB,SAAW;AAAA,UACT,OAAO;AAAA,UACP,QAAQ,SAAS,WAAc,gDAAgD;AAAA,QAAA;AAAA,QAEjF,eAAe,SAAS,WACpB;AAAA,UACE,KAAK,CAAC,2CAA2C;AAAA,QAAA,IAEnD;AAAA,QACJ,cAAgB;AAAA,QAChB,UAAY,SAAS,WAAc,4BAA4B;AAAA,QAC/D,cAAgB,CAAA;AAAA,QAChB,iBAAmB;AAAA,UACjB,oBAAoB,SAAS,aAAgB,OAAO;AAAA,UACpD,qBAAqB;AAAA,UACrB,2BAA2B,SAAS,WAAc,OAAO;AAAA,UACzD,oCAAoC;AAAA,UACpC,6BAA6B;AAAA,UAC7B,QAAU;AAAA,UACV,0BAA0B;AAAA,UAC1B,wBAAwB;AAAA,UACxB,0BAA0B;AAAA,UAC1B,oCAAoC;AAAA,UACpC,eAAe;AAAA,UACf,UAAY,SAAS,WAAc,OAAO;AAAA,UAC1C,YAAc;AAAA,QAAA;AAAA,QAEhB,SAAW;AAAA,UACT,MAAM;AAAA,QAAA;AAAA,MACR,GAGI,QAA2B,CAAA;AAsDjC,UAnDA,MAAM,KAAK;AAAA,QACT,MAAM;AAAA,QACN,UAAU;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA,MAAA,CAWX,GAGD,MAAM,KAAK;AAAA,QACT,MAAM;AAAA,QACN,UAAU;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA,MAAA,CAUX,GAEG,SAAS,YACX,MAAM,KAAK;AAAA,QACT,MAAM;AAAA,QACN,UAAU;AAAA;AAAA;AAAA;AAAA,MAAA,CAIX,GAGC,SACF,QAAQ,aAAa;AAAA,QACnB,MAAM;AAAA,QACN,KAAK,iBAAiB,KAAK,MAAM,IAAI,KAAK,KAAK,IAAI,KAAK,IAAI;AAAA,MAAA,GAE9D,QAAQ,OAAO;AAAA,QACb,KAAK,WAAW,KAAK,MAAM,IAAI,KAAK,KAAK,IAAI,KAAK,IAAI;AAAA,MAAA,GAExD,QAAQ,WAAW,WAAW,KAAK,MAAM,IAAI,KAAK,KAAK,IAAI,KAAK,IAAI,YAGlE,SAAS,YAAe;AAC1B,gBAAQ,QAAQ,qBAEhB,QAAQ,UAAU;AAAA,UAChB,GAAG,QAAQ;AAAA,UACV,YAAa;AAAA,QAAA;AAGhB,cAAM,kBAAkB,QAAQ;AAE5B,iBAAS,eAAe,MAC1B,gBAAgB,aAAgB;AAAA,MAEpC;AAEA,UAAI,SAAS,QAAW;AACtB,cAAM,eAAoB;AAAA,UACxB,MAAM;AAAA,UACN,KAAK;AAAA,YACH,SAAS;AAAA,YACT,KAAK;AAAA,YACL,MAAM;AAAA,UAAA;AAAA,UAER,SAAS;AAAA,YACP;AAAA,YACA,SAAS,WAAc,gCAAgC;AAAA,UAAA,EACvD,OAAO,OAAO;AAAA,UAChB,eAAe;AAAA,YACb,aAAa;AAAA,YACb,YAAY;AAAA,UAAA;AAAA,UAEd,SAAS;AAAA,YACP;AAAA,YACA;AAAA,YACA,SAAS,WAAc,aAAa;AAAA,UAAA,EACpC,OAAO,OAAO;AAAA,UAChB,OAAO;AAAA,YACL,cAAc;AAAA,YACd,aAAa;AAAA,YACb,uBAAuB,CAAC,QAAQ,EAAC,UAAU,SAAS,OAAO,CAAC,QAAQ,OAAO,GAAE;AAAA,YAC7E,eAAe,CAAC,QAAQ,sBAAsB;AAAA,YAC9C,8BAA8B;AAAA,YAC9B,8BAA8B;AAAA,YAC9B,QAAU,CAAC,QAAQ,QAAQ;AAAA,UAAA;AAAA,QAC7B;AA0BF,YAvBA,MAAM,KAAK;AAAA,UACT,MAAM;AAAA,UACN,UAAU;AAAA;AAAA;AAAA,QAAA,CAGX,GAED,QAAQ,UAAU;AAAA,UAChB,GAAG,QAAQ;AAAA,UACX,MAAM,SAAS,aACX,qCACA;AAAA,QAAA,GAGN,QAAQ,kBAAkB;AAAA,UACxB,GAAG,QAAQ;AAAA,UACX,QAAU;AAAA,UACV,0BAA0B,SAAS,WAAc,OAAO;AAAA,UACxD,wBAAwB;AAAA,UACxB,0BAA0B,SAAS,WAAc,OAAO;AAAA,UACxD,oCAAoC;AAAA,QAAA,GAGlC,SAAS,YAAe;AAC1B,kBAAQ,kBAAkB;AAAA,YACxB,GAAG,QAAQ;AAAA,YACX,oCAAoC;AAAA,YACpC,6BAA6B;AAAA,UAAA;AAG/B,gBAAM,uBAA4B;AAAA,YAChC,OAAO,CAAC,WAAW,UAAU;AAAA,YAC7B,QAAQ;AAAA,YACR,eAAe;AAAA,cACb,SAAS,CAAC,iBAAiB;AAAA,YAAA;AAAA,YAE7B,SAAS;AAAA,cACP;AAAA,cACA,SAAS,WAAc,gCAAgC;AAAA,cACvD;AAAA,cACA;AAAA,YAAA,EACA,OAAO,OAAO;AAAA,YAChB,SAAS;AAAA,cACP;AAAA,cACA;AAAA,cACA;AAAA,cACA,SAAS,WAAc,aAAa;AAAA,YAAA,EACpC,OAAO,OAAO;AAAA,YAChB,OAAO;AAAA,cACL,qDAAqD;AAAA,cACrD,4CAA4C;AAAA,cAC5C,6CAA6C;AAAA,cAC7C,yCAAyC;AAAA,YAAA;AAAA,UAC3C;AAGF,uBAAa,YAAY,CAAC,oBAAoB;AAAA,QAChD;AAEA,cAAM,KAAK;AAAA,UACT,MAAM;AAAA,UACN,UAAU,MAAM;AAAA,YACd,QAAQ,aAAa,eAAe;AAAA,YACpC;AAAA;AAAA;AAAA;AAAA,+BAImB,KAAK,UAAU,cAAc,MAAM,CAAC,CAAC;AAAA;AAAA,YAExDA;AAAAA,UAAA;AAAA,QACF,CACD;AAAA,MACH;AAEI,eAAS,eACX,MAAM,KAAK;AAAA,QACT,MAAM;AAAA,QACN,UAAU,MAAM;AAAA,UACd,QAAQ,aAAa,wBAAwB;AAAA,UAC7C;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA,UASAA;AAAAA,QAAA;AAAA,MACF,CACD,GAED,MAAM,KAAK;AAAA,QACT,MAAM;AAAA,QACN,UAAU,MAAM;AAAA,UACd,QAAQ,aAAa,oBAAoB;AAAA,UACzC;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA,UAOAA;AAAAA,QAAA;AAAA,MACF,CACD,GAED,MAAM,KAAK;AAAA,QACT,MAAM;AAAA,QACN,UAAU,MAAM;AAAA,UACd,QAAQ,aAAa,eAAe;AAAA,UACpC;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA,UAOAA;AAAAA,QAAA;AAAA,MACF,CACD,IAIC,SAAS,cACX,MAAM,KAAK;AAAA,QACT,MAAM;AAAA,QACN,UAAU,MAAM;AAAA,UACd,QAAQ,aAAa,mBAAmB;AAAA,UACxC;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA,UASAA;AAAAA,QAAA;AAAA,MACF,CACD,GAED,MAAM,KAAK;AAAA,QACT,MAAM;AAAA,QACN,UAAU,MAAM;AAAA,UACd,QAAQ,aAAa,cAAc;AAAA,UACnC;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA,UAMAA;AAAAA,QAAA;AAAA,MACF,CACD,MAED,MAAM,KAAK;AAAA,QACT,MAAM;AAAA,QACN,UAAU,MAAM;AAAA,UACd,QAAQ,aAAa,mBAAmB;AAAA,UACxC;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA,UAYAA;AAAAA,QAAA;AAAA,MACF,CACD,GAED,MAAM,KAAK;AAAA,QACT,MAAM;AAAA,QACN,UAAU,MAAM;AAAA,UACd,QAAQ,aAAa,cAAc;AAAA,UACnC;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA,UAMAA;AAAAA,QAAA;AAAA,MACF,CACD;AAIH,UAAI;AACF,gBAAQ,eAAe,MAAM,kBAAkB,QAAQ,gBAAgB,CAAA,CAAE;AAAA,MAC3E,SAAS,OAAO;AACd,eAAO,KAAK,iBAAiB,QAAQ,MAAM,UAAU,KAAK;AAAA,MAC5D;AAGA,UAAI;AACF,gBAAQ,kBAAkB,MAAM,kBAAkB,QAAQ,mBAAmB,CAAA,CAAE;AAAA,MACjF,SAAS,OAAO;AACd,eAAO,KAAK,iBAAiB,QAAQ,MAAM,UAAU,KAAK;AAAA,MAC5D;AAEA,aAAA,MAAM,KAAK;AAAA,QACT,MAAM;AAAA,QACN,UAAU,MAAM;AAAA,UACd,QAAQ,aAAa,cAAc;AAAA,UACnC,KAAK,UAAU,SAAS,MAAM,CAAC;AAAA,UAC/BA;AAAAA,QAAA;AAAA,MACF,CACD,GAEM;AAAA,IACT;AAAA,EAAA;AAEJ;AAEA,SAAS,eACP,UACA,OACA,iBACA;AACA,SAAO,OAAO,OAAO,EAAC,GAAG,iBAAiB,SAAS,CAAA,GAAI,UAAS;AAClE;AAEA,eAAe,kBAAkB,MAA0C;AACzE,QAAM,cAAc,OAAO,QAAQ,IAAI,GACjC,aAAqC,CAAA;AAE3C,aAAW,SAAS,aAAa;AAC/B,UAAM,CAAC,MAAM,OAAO,IAAI;AAExB,QAAI,SAAS;AACX,YAAM,gBAAgB,MAAM,iBAAiB,MAAM,OAAO;AAE1D,iBAAW,IAAI,IAAI,gBAAgB,IAAI,aAAa,KAAK;AAAA,IAC3D;AAAA,EACF;AAEA,SAAO;AACT;AAEA,SAAS,iBAAiB,KAAoE;AAC5F,MAAI,MACA;AAEJ,MAAI;AACF,WAAO,SAAS,wBAAwB,EAAC,UAAU,QAAQ,IAAA,CAAI,EAAE,KAAA,KAAU,QAC3E,QAAQ,SAAS,yBAAyB,EAAC,UAAU,QAAQ,KAAI,EAAE,KAAA,KAAU;AAAA,EAC/E,QAAQ;AAAA,EAER;AAEA,SAAO,EAAC,MAAM,MAAA;AAChB;ACzhBA,eAAsB,KAAK,SAAqD;AAC9E,MAAI,CAAC,QAAQ;AACX,UAAM,IAAI,MAAM,8BAA8B;AAGhD,MAAI,CAAC,QAAQ;AACX,UAAM,IAAI,MAAM,+BAA+B;AAGjD,QAAM,SAAS,gBAET,cAAc,QAAQ,QAAQ,KAAK,QAAQ,IAAI;AAErD,QAAM,kBAAkB,WAAW,GAEnC,MAAM,mBAAmB;AAAA,IACvB,KAAK,QAAQ;AAAA,IACb;AAAA,IACA,UAAU;AAAA,IACV;AAAA,EAAA,CACD;AACH;AAEA,eAAe,kBAAkB,aAAoC;AAGnE,MAAI,CAFW,WAAW,WAAW,GAExB;AACX,UAAM,OAAO,WAAW;AAExB;AAAA,EACF;AAIA,MAAI,EAFS,MAAM,MAAM,WAAW,GAAG,YAAA;AAGrC,UAAM,IAAI,MAAM,6CAA6C;AAK/D,MAAI,CAFU,MAAM,iBAAiB,WAAW;AAG9C,UAAM,IAAI,MAAM,oCAAoC;AAExD;AClDA,eAAsB,WAAW,SAAwC;AACvE,MAAI;AACF,UAAM,KAAK;AAAA,MACT,KAAK,QAAQ,IAAA;AAAA,MACb,MAAM,QAAQ;AAAA,IAAA,CACf;AAAA,EACH,SAAS,KAAK;AACZ,gBAAY,GAAG;AAAA,EACjB;AACF;","x_google_ignoreList":[2]}
package/dist/cli.js CHANGED
@@ -1,5 +1,5 @@
1
1
  import { cac } from "cac";
2
- var version = "10.3.3";
2
+ var version = "10.3.5";
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
@@ -10,58 +10,58 @@ type ToggleType = 'error' | 'warn' | 'off';
10
10
  */
11
11
  interface StrictOptions {
12
12
  /**
13
- * Disallows a top level `typings` field in `package.json` if it is equal to `exports['.'].source`.
14
- * @defaultValue 'error'
15
- */
13
+ * Disallows a top level `typings` field in `package.json` if it is equal to `exports['.'].source`.
14
+ * @defaultValue 'error'
15
+ */
16
16
  noPackageJsonTypings: ToggleType;
17
17
  /**
18
- * Requires specifying `sideEffects` in `package.json`.
19
- * @defaultValue 'warn'
20
- */
18
+ * Requires specifying `sideEffects` in `package.json`.
19
+ * @defaultValue 'warn'
20
+ */
21
21
  noImplicitSideEffects: ToggleType;
22
22
  /**
23
- * Requires specifying `browserslist` in `package.json`, instead of relying on it implicitly being:
24
- * @example
25
- * ```
26
- * "browserslist": "extends @sanity/browserslist-config"
27
- * ```
28
- * @defaultValue 'warn'
29
- */
23
+ * Requires specifying `browserslist` in `package.json`, instead of relying on it implicitly being:
24
+ * @example
25
+ * ```
26
+ * "browserslist": "extends @sanity/browserslist-config"
27
+ * ```
28
+ * @defaultValue 'warn'
29
+ */
30
30
  noImplicitBrowsersList: ToggleType;
31
31
  /**
32
- * If typescript is used then `types` in `package.json` should be specified for npm listings to show the TS icon.
33
- * @defaultValue 'error'
34
- */
32
+ * If typescript is used then `types` in `package.json` should be specified for npm listings to show the TS icon.
33
+ * @defaultValue 'error'
34
+ */
35
35
  alwaysPackageJsonTypes: ToggleType;
36
36
  /**
37
- * Using `.npmignore` is error prone, it's best practice to always declare `files` instead
38
- * @defaultValue 'error'
39
- */
37
+ * Using `.npmignore` is error prone, it's best practice to always declare `files` instead
38
+ * @defaultValue 'error'
39
+ */
40
40
  alwaysPackageJsonFiles: ToggleType;
41
41
  /**
42
- * It's slow to perform type checking while generating dts files, so it's best practice to disable it with a `"noCheck": true` in the tsconfig.json file used by `package.config.ts`
43
- * @defaultValue 'warn'
44
- */
42
+ * It's slow to perform type checking while generating dts files, so it's best practice to disable it with a `"noCheck": true` in the tsconfig.json file used by `package.config.ts`
43
+ * @defaultValue 'warn'
44
+ */
45
45
  noCheckTypes: ToggleType;
46
46
  /**
47
- * Disallows the `browser` field in `package.json` as the `browser` condition in `exports` is better supported.
48
- * @defaultValue 'warn'
49
- */
47
+ * Disallows the `browser` field in `package.json` as the `browser` condition in `exports` is better supported.
48
+ * @defaultValue 'warn'
49
+ */
50
50
  noPackageJsonBrowser: ToggleType;
51
51
  /**
52
- * Disallows the `typesVersions` field in `package.json` as TypeScript has long supported conditional exports and the `types` condition.
53
- * @defaultValue 'warn'
54
- */
52
+ * Disallows the `typesVersions` field in `package.json` as TypeScript has long supported conditional exports and the `types` condition.
53
+ * @defaultValue 'warn'
54
+ */
55
55
  noPackageJsonTypesVersions: ToggleType;
56
56
  /**
57
- * Warns if `type` field is missing or set to `commonjs`. Future versions will require `"type": "module"`.
58
- * @defaultValue 'warn'
59
- */
57
+ * Warns if `type` field is missing or set to `commonjs`. Future versions will require `"type": "module"`.
58
+ * @defaultValue 'warn'
59
+ */
60
60
  preferModuleType: ToggleType;
61
61
  /**
62
- * Warns if `publishConfig.exports` is missing when `source`, `development`, or `monorepo` conditions are used in exports.
63
- * @defaultValue 'warn'
64
- */
62
+ * Warns if `publishConfig.exports` is missing when `source`, `development`, or `monorepo` conditions are used in exports.
63
+ * @defaultValue 'warn'
64
+ */
65
65
  noPublishConfigExports: ToggleType;
66
66
  }
67
67
  /** @public */
@@ -97,9 +97,9 @@ interface PkgConfigOptions {
97
97
  styledComponents?: boolean | {
98
98
  /** @defaultValue true */displayName?: boolean;
99
99
  /**
100
- * @defaultValue []
101
- * @example ["\@xstyled/styled-components", "\@xstyled/styled-components/*"]
102
- */
100
+ * @defaultValue []
101
+ * @example ["\@xstyled/styled-components", "\@xstyled/styled-components/*"]
102
+ */
103
103
  topLevelImportPaths?: string[]; /** @defaultValue true */
104
104
  ssr?: boolean; /** @defaultValue fale */
105
105
  fileName?: boolean; /** @defaultValue ["index"] */
@@ -111,48 +111,48 @@ interface PkgConfigOptions {
111
111
  };
112
112
  };
113
113
  /**
114
- * Configure the React Compiler.
115
- * To enable it set `babel.reactCompiler` to `true`
116
- * @beta */
114
+ * Configure the React Compiler.
115
+ * To enable it set `babel.reactCompiler` to `true`
116
+ * @beta */
117
117
  reactCompilerOptions?: Partial<PluginOptions>;
118
118
  bundles?: PkgBundle[];
119
119
  /** @alpha */
120
120
  define?: Record<string, string | number | boolean | undefined | null>;
121
121
  /**
122
- * Directory of distributed & bundled files.
123
- */
122
+ * Directory of distributed & bundled files.
123
+ */
124
124
  dist?: string;
125
125
  exports?: PkgConfigProperty<PkgExports$1>;
126
126
  /**
127
- * Runs `@microsoft/api-extractor` to check that TSDoc tags are valid, and release tags are correct.
128
- * This is useful for packages that need to be consumed by TSDoc-based tooling.
129
- * It's enabled by default, it can be disabled by setting `extract: {enabled: false}`
130
- */
127
+ * Runs `@microsoft/api-extractor` to check that TSDoc tags are valid, and release tags are correct.
128
+ * This is useful for packages that need to be consumed by TSDoc-based tooling.
129
+ * It's enabled by default, it can be disabled by setting `extract: {enabled: false}`
130
+ */
131
131
  extract?: {
132
132
  /**
133
- * @defaultValue true
134
- */
133
+ * @defaultValue true
134
+ */
135
135
  enabled?: boolean;
136
136
  /**
137
- * When set to false, disables type checking during type definition generation.
138
- * This is equivalent to setting `"noCheck": true` in tsconfig.json but can be
139
- * controlled from package.config.ts without needing multiple tsconfig files.
140
- * @defaultValue undefined (uses tsconfig.json settings)
141
- */
137
+ * When set to false, disables type checking during type definition generation.
138
+ * This is equivalent to setting `"noCheck": true` in tsconfig.json but can be
139
+ * controlled from package.config.ts without needing multiple tsconfig files.
140
+ * @defaultValue undefined (uses tsconfig.json settings)
141
+ */
142
142
  checkTypes?: boolean;
143
143
  /**
144
- * Packages in `devDependencies` that are not in `external` are automatically added to the `bundledPackages` config.
145
- * You can exclude a package from being bundled by using a callback:
146
- * ```
147
- * bundledPackages: (prev) => prev.filter(package => package !== 'sanity')
148
- * ```
149
- */
144
+ * Packages in `devDependencies` that are not in `external` are automatically added to the `bundledPackages` config.
145
+ * You can exclude a package from being bundled by using a callback:
146
+ * ```
147
+ * bundledPackages: (prev) => prev.filter(package => package !== 'sanity')
148
+ * ```
149
+ */
150
150
  bundledPackages?: PkgConfigProperty<string[]>;
151
151
  customTags?: TSDocCustomTag[];
152
152
  rules?: {
153
153
  /**
154
- * @deprecated as it's no longer needed since TypeScript 5.5 https://github.com/microsoft/TypeScript/issues/42873
155
- */
154
+ * @deprecated as it's no longer needed since TypeScript 5.5 https://github.com/microsoft/TypeScript/issues/42873
155
+ */
156
156
  'ae-forgotten-export'?: never;
157
157
  'ae-incompatible-release-tags'?: PkgRuleLevel;
158
158
  'ae-internal-missing-underscore'?: PkgRuleLevel;
@@ -163,32 +163,32 @@ interface PkgConfigOptions {
163
163
  };
164
164
  };
165
165
  /**
166
- * Packages to exclude from bundles.
167
- * Provide an array to merge with default exclusions, use a function to replace them:
168
- * ```
169
- * exclude: (prev) => prev.filter(package => package !== 'foo')
170
- * ```
171
- */
166
+ * Packages to exclude from bundles.
167
+ * Provide an array to merge with default exclusions, use a function to replace them:
168
+ * ```
169
+ * exclude: (prev) => prev.filter(package => package !== 'foo')
170
+ * ```
171
+ */
172
172
  external?: PkgConfigProperty<string[]>;
173
173
  /**
174
- * Defaults to `"automatic"`
175
- */
174
+ * Defaults to `"automatic"`
175
+ */
176
176
  jsx?: 'transform' | 'preserve' | 'automatic';
177
177
  /**
178
- * Defaults to `"createElement"`
179
- */
178
+ * Defaults to `"createElement"`
179
+ */
180
180
  jsxFactory?: string;
181
181
  /**
182
- * Defaults to `"Fragment"`
183
- */
182
+ * Defaults to `"Fragment"`
183
+ */
184
184
  jsxFragment?: string;
185
185
  /**
186
- * Defaults to `"react"`
187
- */
186
+ * Defaults to `"react"`
187
+ */
188
188
  jsxImportSource?: string;
189
189
  /**
190
- * @deprecated no longer supported
191
- */
190
+ * @deprecated no longer supported
191
+ */
192
192
  legacyExports?: never;
193
193
  minify?: boolean;
194
194
  /** @alpha */
@@ -196,60 +196,60 @@ interface PkgConfigOptions {
196
196
  plugins?: PkgConfigProperty<Plugin[]>;
197
197
  output?: Partial<NormalizedOutputOptions>;
198
198
  /**
199
- * Default options are `preset: 'recommended'` and `propertyReadSideEffects: false`
200
- * @alpha
201
- */
199
+ * Default options are `preset: 'recommended'` and `propertyReadSideEffects: false`
200
+ * @alpha
201
+ */
202
202
  treeshake?: TreeshakingOptions; /** @alpha */
203
203
  experimentalLogSideEffects?: boolean;
204
204
  /**
205
- * Adds [hash] to chunk filenames, generally only useful if `@sanity/pkg-utils` is used to deploy a package directly to a CDN.
206
- * It's not needed when publishing to npm for consumption by other libraries, bundlers and frameworks.
207
- * @defaultValue false
208
- */
205
+ * Adds [hash] to chunk filenames, generally only useful if `@sanity/pkg-utils` is used to deploy a package directly to a CDN.
206
+ * It's not needed when publishing to npm for consumption by other libraries, bundlers and frameworks.
207
+ * @defaultValue false
208
+ */
209
209
  hashChunkFileNames?: boolean;
210
210
  /**
211
- * Optimizes lodash imports using `@optimize-lodash/rollup-plugin` when set to `true`.
212
- * It's enabled if `lodash` is found in `dependencies` or `peerDependencies`.
213
- * It will use `lodash-es` for ESM targets if found in `dependencies` or `peerDependencies`.
214
- * @defaultValue true
215
- * @alpha
216
- */
211
+ * Optimizes lodash imports using `@optimize-lodash/rollup-plugin` when set to `true`.
212
+ * It's enabled if `lodash` is found in `dependencies` or `peerDependencies`.
213
+ * It will use `lodash-es` for ESM targets if found in `dependencies` or `peerDependencies`.
214
+ * @defaultValue true
215
+ * @alpha
216
+ */
217
217
  optimizeLodash?: boolean | OptimizeLodashOptions;
218
218
  /**
219
- * Enables \@vanilla-extract/rollup-plugin to extract CSS into a separate file, with support for minifying the extracted CSS.
220
- * @alpha
221
- */
219
+ * Enables \@vanilla-extract/rollup-plugin to extract CSS into a separate file, with support for minifying the extracted CSS.
220
+ * @alpha
221
+ */
222
222
  vanillaExtract?: boolean | (Options & {
223
223
  minify?: boolean;
224
224
  browserslist?: string | string[];
225
225
  });
226
226
  };
227
227
  /**
228
- * Default runtime of package exports
229
- */
228
+ * Default runtime of package exports
229
+ */
230
230
  runtime?: PkgRuntime;
231
231
  sourcemap?: boolean;
232
232
  /**
233
- * Directory of source files.
234
- */
233
+ * Directory of source files.
234
+ */
235
235
  src?: string;
236
236
  tsconfig?: string;
237
237
  /**
238
- * Configure what checks are made when running `--strict` builds and checks
239
- */
238
+ * Configure what checks are made when running `--strict` builds and checks
239
+ */
240
240
  strictOptions?: Partial<StrictOptions>;
241
241
  /**
242
- * .d.ts files can be generated either by using `@microsoft/api-extractor` or `rolldown`.
243
- * `rolldown` is the faster option, but is not yet stable.
244
- * @defaultValue 'api-extractor'
245
- */
242
+ * .d.ts files can be generated either by using `@microsoft/api-extractor` or `rolldown`.
243
+ * `rolldown` is the faster option, but is not yet stable.
244
+ * @defaultValue 'api-extractor'
245
+ */
246
246
  dts?: DtsType;
247
247
  /**
248
- * When using `dts: 'rolldown'`, enables the use of `@typescript/native-preview` for type generation.
249
- * By default, `tsgo` is automatically enabled if `@typescript/native-preview` is found in `devDependencies`.
250
- * Set to `true` to explicitly enable or `false` to explicitly disable.
251
- * @alpha
252
- */
248
+ * When using `dts: 'rolldown'`, enables the use of `@typescript/native-preview` for type generation.
249
+ * By default, `tsgo` is automatically enabled if `@typescript/native-preview` is found in `devDependencies`.
250
+ * Set to `true` to explicitly enable or `false` to explicitly disable.
251
+ * @alpha
252
+ */
253
253
  tsgo?: boolean;
254
254
  }
255
255
  /** @public */
@@ -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.3.3",
3
+ "version": "10.3.5",
4
4
  "description": "Simple utilities for modern npm packages.",
5
5
  "keywords": [
6
6
  "sanity-io",
@@ -43,9 +43,7 @@
43
43
  "browserslist": "extends @sanity/browserslist-config",
44
44
  "dependencies": {
45
45
  "@babel/core": "^7.28.6",
46
- "@babel/parser": "^7.28.6",
47
46
  "@babel/preset-typescript": "^7.28.5",
48
- "@babel/types": "^7.28.6",
49
47
  "@microsoft/api-extractor": "^7.55.2",
50
48
  "@microsoft/tsdoc-config": "^0.18.0",
51
49
  "@optimize-lodash/rollup-plugin": "^6.0.0",
@@ -69,42 +67,39 @@
69
67
  "git-url-parse": "^16.1.0",
70
68
  "globby": "^16.1.0",
71
69
  "jsonc-parser": "^3.3.1",
72
- "lightningcss": "^1.30.2",
70
+ "lightningcss": "^1.31.1",
73
71
  "mkdirp": "^3.0.1",
74
72
  "outdent": "^0.8.0",
75
- "prettier": "^3.8.0",
73
+ "prettier": "^3.8.1",
76
74
  "pretty-bytes": "^7.1.0",
77
75
  "prompts": "^2.4.2",
78
- "recast": "^0.23.11",
79
76
  "rimraf": "^6.1.2",
80
- "rolldown": "1.0.0-beta.60",
81
- "rolldown-plugin-dts": "0.21.2",
82
- "rollup": "^4.55.1",
77
+ "rolldown": "1.0.0-rc.1",
78
+ "rolldown-plugin-dts": "0.21.6",
79
+ "rollup": "^4.56.0",
83
80
  "rollup-plugin-esbuild": "^6.2.1",
84
81
  "rxjs": "^7.8.2",
85
82
  "treeify": "^1.1.0",
86
83
  "tsx": "^4.21.0",
87
- "uuid": "^13.0.0",
88
- "zod": "^4.3.5",
84
+ "zod": "^4.3.6",
89
85
  "zod-validation-error": "^5.0.0",
90
- "@sanity/parse-package-json": "^2.1.2"
86
+ "@sanity/parse-package-json": "^2.1.3"
91
87
  },
92
88
  "devDependencies": {
93
89
  "@types/babel__core": "^7.20.5",
94
90
  "@types/find-config": "^1.0.4",
95
- "@types/fs-extra": "^11.0.4",
96
91
  "@types/node": "^24.10.9",
97
92
  "@types/prompts": "^2.4.9",
98
93
  "@types/semver": "^7.7.1",
99
94
  "@types/treeify": "^1.0.3",
100
- "@typescript/native-preview": "7.0.0-dev.20260117.1",
95
+ "@typescript/native-preview": "7.0.0-dev.20260124.1",
101
96
  "babel-plugin-react-compiler": "1.0.0",
102
97
  "browserslist-to-esbuild": "2.1.1",
103
- "fs-extra": "^11.3.3",
98
+ "nanoexec": "^1.1.0",
104
99
  "rollup-plugin-visualizer": "^6.0.5",
105
100
  "semver": "^7.7.3",
106
101
  "typescript": "5.9.3",
107
- "vitest": "^4.0.16",
102
+ "vitest": "^4.0.18",
108
103
  "@sanity/tsconfig": "^2.1.0"
109
104
  },
110
105
  "peerDependencies": {