@sanity/pkg-utils 9.0.9 → 9.1.1
This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
- package/dist/_chunks-es/build.js +3 -1
- package/dist/_chunks-es/build.js.map +1 -1
- package/dist/_chunks-es/check.js +3 -1
- package/dist/_chunks-es/check.js.map +1 -1
- package/dist/_chunks-es/consoleSpy.js +54 -19
- package/dist/_chunks-es/consoleSpy.js.map +1 -1
- package/dist/_chunks-es/index.js +1 -1
- package/dist/_chunks-es/index.js.map +1 -1
- package/dist/_chunks-es/watch.js +3 -1
- package/dist/_chunks-es/watch.js.map +1 -1
- package/dist/cli.js +1 -1
- package/dist/index.d.ts +27 -5
- package/package.json +9 -9
package/dist/_chunks-es/build.js
CHANGED
|
@@ -115,7 +115,9 @@ async function build(options) {
|
|
|
115
115
|
tsconfig: tsconfigOption,
|
|
116
116
|
clean = !1,
|
|
117
117
|
quiet = !1
|
|
118
|
-
} = options, logger = createLogger(quiet), config = await loadConfig({ cwd }),
|
|
118
|
+
} = options, logger = createLogger(quiet), config = await loadConfig({ cwd }), { parseStrictOptions } = await import("./consoleSpy.js").then(function(n) {
|
|
119
|
+
return n.strict;
|
|
120
|
+
}), strictOptions = parseStrictOptions(config?.strictOptions ?? {}), pkg = await loadPkgWithReporting({ cwd, logger, strict, strictOptions }), tsconfig = tsconfigOption || config?.tsconfig || "tsconfig.json", ctx = await resolveBuildContext({
|
|
119
121
|
config,
|
|
120
122
|
cwd,
|
|
121
123
|
emitDeclarationOnly,
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"build.js","sources":["../../src/node/resolveBuildTasks.ts","../../src/node/build.ts"],"sourcesContent":["import path from 'node:path'\nimport type {PkgExport, PkgFormat, PkgRuntime} from './core/config/types.ts'\nimport type {BuildContext} from './core/contexts/buildContext.ts'\nimport {getTargetPaths} from './tasks/dts/getTargetPaths.ts'\nimport type {DtsTask} from './tasks/dts/types.ts'\nimport type {BuildTask, RolldownDtsTask, RollupTask, RollupTaskEntry} from './tasks/types.ts'\n\n/** @internal */\nexport function resolveBuildTasks(ctx: BuildContext): BuildTask[] {\n const {config, pkg, target} = ctx\n\n const bundles = config?.bundles || []\n\n const tasks: BuildTask[] = []\n\n const exports = Object.entries(ctx.exports || {}).map(\n ([_path, exp]) => ({_path, ...exp}) as PkgExport & {_path: string},\n )\n\n const dtsTask: DtsTask = {\n type: 'build:dts',\n entries: [],\n }\n\n const rolldownDtsTask: Record<string, RolldownDtsTask> = {}\n const rollupTasks: Record<string, RollupTask> = {}\n\n function addRollupTaskEntry(format: PkgFormat, runtime: PkgRuntime, entry: RollupTaskEntry) {\n const buildId = `${format}:${runtime}`\n\n if (ctx.dts === 'rolldown') {\n if (rolldownDtsTask[buildId]) {\n rolldownDtsTask[buildId].entries.push(entry)\n } else {\n rolldownDtsTask[buildId] = {\n type: 'rolldown:dts',\n buildId,\n entries: [entry],\n runtime,\n format,\n target: target[runtime],\n }\n }\n }\n\n if (!ctx.emitDeclarationOnly) {\n if (rollupTasks[buildId]) {\n rollupTasks[buildId].entries.push(entry)\n } else {\n rollupTasks[buildId] = {\n type: 'build:js',\n buildId,\n entries: [entry],\n runtime,\n format,\n target: target[runtime],\n }\n }\n }\n }\n\n if (ctx.dts === 'api-extractor') {\n // Parse `dts` tasks\n for (const exp of exports) {\n const importId = path.join(pkg.name, exp._path)\n\n if (exp.source?.endsWith('.ts')) {\n dtsTask.entries.push({\n importId,\n exportPath: exp._path,\n sourcePath: exp.source,\n targetPaths: getTargetPaths(pkg.type, exp),\n })\n }\n\n if (exp.browser?.source?.endsWith('.ts')) {\n dtsTask.entries.push({\n importId,\n exportPath: exp._path,\n sourcePath: exp.browser.source,\n targetPaths: getTargetPaths(pkg.type, exp.browser),\n })\n }\n\n if (exp.node?.source?.endsWith('.ts')) {\n dtsTask.entries.push({\n importId,\n exportPath: exp._path,\n sourcePath: exp.node.source,\n targetPaths: getTargetPaths(pkg.type, exp.node),\n })\n }\n }\n\n // Handle dts tasks for bundles\n for (const bundle of bundles) {\n if (bundle.source?.endsWith('.ts')) {\n // importId needs to be how the bundle is used, like `@sanity/pkg-utils/dist/cli`\n // exportPath needs to be the path to the bundle, like `./dist/cli`\n // targetPaths is then: [./dist/cli.d.ts, ./dist/cli.d.cts]\n const exportPath = (bundle.import || bundle.require)!.replace(/\\.[mc]?js$/, '')\n const importId = path.join(pkg.name, exportPath)\n\n dtsTask.entries.push({\n importId,\n exportPath,\n sourcePath: bundle.source,\n targetPaths: getTargetPaths(pkg.type, bundle),\n })\n }\n }\n\n // Add dts task\n if (dtsTask.entries.length) {\n tasks.push(dtsTask)\n }\n }\n\n // Parse rollup:commonjs:* tasks\n for (const exp of exports) {\n const output = exp.require\n\n if (!output) continue\n\n addRollupTaskEntry('commonjs', ctx.runtime, {\n path: exp._path,\n source: exp.source,\n output,\n })\n }\n\n // Parse rollup:esm:* tasks\n for (const exp of exports) {\n const output = exp.import\n\n if (!output) continue\n\n addRollupTaskEntry('esm', ctx.runtime, {\n path: exp._path,\n source: exp.source,\n output,\n })\n }\n\n // Parse rollup:commonjs:browser tasks\n for (const exp of exports) {\n const output = exp.browser?.require\n\n if (!output) continue\n\n addRollupTaskEntry('commonjs', 'browser', {\n path: exp._path,\n source: exp.browser?.source || exp.source,\n output,\n })\n }\n\n // Parse rollup:esm:browser tasks\n for (const exp of exports) {\n const output = exp.browser?.import\n\n if (!output) continue\n\n addRollupTaskEntry('esm', 'browser', {\n path: exp._path,\n source: exp.browser?.source || exp.source,\n output,\n })\n }\n\n for (const bundle of bundles) {\n const idx = bundles.indexOf(bundle)\n\n if (bundle.require) {\n addRollupTaskEntry('commonjs', bundle.runtime || ctx.runtime, {\n path: `__$$bundle_cjs_${idx}$$__`,\n source: bundle.source,\n output: bundle.require,\n })\n }\n\n if (bundle.import) {\n addRollupTaskEntry('esm', bundle.runtime || ctx.runtime, {\n path: `__$$bundle_esm_${idx}$$__`,\n source: bundle.source,\n output: bundle.import,\n })\n }\n }\n\n // Perform rolldown dts tasks first, as they have special logic for removing non .d.ts chunks\n tasks.push(...Object.values(rolldownDtsTask))\n // Then run api-extractor tsdoc release tag checking (if rolldown is used for dts bundling, otherwise api-extractor performs both in the build:dts task)\n // @TODO\n // Then run rollup tasks\n tasks.push(...Object.values(rollupTasks))\n\n return tasks\n}\n","import path from 'node:path'\nimport {rimraf} from 'rimraf'\nimport {loadConfig} from './core/config/loadConfig.ts'\nimport {loadPkgWithReporting} from './core/pkg/loadPkgWithReporting.ts'\nimport {createLogger} from './logger.ts'\nimport {resolveBuildContext} from './resolveBuildContext.ts'\nimport {resolveBuildTasks} from './resolveBuildTasks.ts'\nimport {createSpinner} from './spinner.ts'\nimport {buildTaskHandlers} from './tasks/index.ts'\nimport {type BuildTask, type TaskHandler} from './tasks/types.ts'\n\n/**\n * Build the distribution files of a npm package.\n *\n * @example\n * ```ts\n * import {build} from '@sanity/pkg-utils'\n *\n * build({\n * cwd: process.cwd(),\n * tsconfig: 'tsconfig.dist.json,\n * }).then(() => {\n * console.log('successfully built')\n * }).catch((err) => {\n * console.log(`build error: ${err.message}`)\n * })\n * ```\n *\n * @public\n */\nexport async function build(options: {\n cwd: string\n emitDeclarationOnly?: boolean\n strict?: boolean\n tsconfig?: string\n clean?: boolean\n quiet?: boolean\n}): Promise<void> {\n const {\n cwd,\n emitDeclarationOnly,\n strict = false,\n tsconfig: tsconfigOption,\n clean = false,\n quiet = false,\n } = options\n const logger = createLogger(quiet)\n\n const config = await loadConfig({cwd})\n\n const pkg = await loadPkgWithReporting({cwd, logger, strict})\n\n const tsconfig = tsconfigOption || config?.tsconfig || 'tsconfig.json'\n\n const ctx = await resolveBuildContext({\n config,\n cwd,\n emitDeclarationOnly,\n logger,\n pkg,\n strict,\n tsconfig,\n })\n\n if (clean) {\n if (!quiet) {\n logger.log(\n `Deleting the \\`dist\\` folder: './${path.relative(cwd, ctx.distPath)}' before building...`,\n )\n }\n await rimraf(ctx.distPath)\n }\n\n const buildTasks = resolveBuildTasks(ctx)\n\n for (const task of buildTasks) {\n // eslint-disable-next-line @typescript-eslint/no-unsafe-type-assertion -- TypeScript can't infer the correct handler type from discriminated union\n const handler = buildTaskHandlers[task.type] as TaskHandler<BuildTask>\n const taskName = handler.name(ctx, task)\n\n const spinner = createSpinner(taskName, quiet)\n\n try {\n const result = await handler.exec(ctx, task).toPromise()\n\n spinner.complete()\n ctx.logger.log()\n\n handler.complete(ctx, task, result)\n } catch (err) {\n spinner.error()\n\n if (err instanceof Error) {\n const RE_CWD = new RegExp(cwd, 'g')\n\n ctx.logger.error(err.message.replace(RE_CWD, '.'))\n ctx.logger.log()\n }\n\n handler.error(ctx, task, err)\n\n process.exit(1)\n }\n }\n}\n"],"names":["exports"],"mappings":"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"}
|
|
1
|
+
{"version":3,"file":"build.js","sources":["../../src/node/resolveBuildTasks.ts","../../src/node/build.ts"],"sourcesContent":["import path from 'node:path'\nimport type {PkgExport, PkgFormat, PkgRuntime} from './core/config/types.ts'\nimport type {BuildContext} from './core/contexts/buildContext.ts'\nimport {getTargetPaths} from './tasks/dts/getTargetPaths.ts'\nimport type {DtsTask} from './tasks/dts/types.ts'\nimport type {BuildTask, RolldownDtsTask, RollupTask, RollupTaskEntry} from './tasks/types.ts'\n\n/** @internal */\nexport function resolveBuildTasks(ctx: BuildContext): BuildTask[] {\n const {config, pkg, target} = ctx\n\n const bundles = config?.bundles || []\n\n const tasks: BuildTask[] = []\n\n const exports = Object.entries(ctx.exports || {}).map(\n ([_path, exp]) => ({_path, ...exp}) as PkgExport & {_path: string},\n )\n\n const dtsTask: DtsTask = {\n type: 'build:dts',\n entries: [],\n }\n\n const rolldownDtsTask: Record<string, RolldownDtsTask> = {}\n const rollupTasks: Record<string, RollupTask> = {}\n\n function addRollupTaskEntry(format: PkgFormat, runtime: PkgRuntime, entry: RollupTaskEntry) {\n const buildId = `${format}:${runtime}`\n\n if (ctx.dts === 'rolldown') {\n if (rolldownDtsTask[buildId]) {\n rolldownDtsTask[buildId].entries.push(entry)\n } else {\n rolldownDtsTask[buildId] = {\n type: 'rolldown:dts',\n buildId,\n entries: [entry],\n runtime,\n format,\n target: target[runtime],\n }\n }\n }\n\n if (!ctx.emitDeclarationOnly) {\n if (rollupTasks[buildId]) {\n rollupTasks[buildId].entries.push(entry)\n } else {\n rollupTasks[buildId] = {\n type: 'build:js',\n buildId,\n entries: [entry],\n runtime,\n format,\n target: target[runtime],\n }\n }\n }\n }\n\n if (ctx.dts === 'api-extractor') {\n // Parse `dts` tasks\n for (const exp of exports) {\n const importId = path.join(pkg.name, exp._path)\n\n if (exp.source?.endsWith('.ts')) {\n dtsTask.entries.push({\n importId,\n exportPath: exp._path,\n sourcePath: exp.source,\n targetPaths: getTargetPaths(pkg.type, exp),\n })\n }\n\n if (exp.browser?.source?.endsWith('.ts')) {\n dtsTask.entries.push({\n importId,\n exportPath: exp._path,\n sourcePath: exp.browser.source,\n targetPaths: getTargetPaths(pkg.type, exp.browser),\n })\n }\n\n if (exp.node?.source?.endsWith('.ts')) {\n dtsTask.entries.push({\n importId,\n exportPath: exp._path,\n sourcePath: exp.node.source,\n targetPaths: getTargetPaths(pkg.type, exp.node),\n })\n }\n }\n\n // Handle dts tasks for bundles\n for (const bundle of bundles) {\n if (bundle.source?.endsWith('.ts')) {\n // importId needs to be how the bundle is used, like `@sanity/pkg-utils/dist/cli`\n // exportPath needs to be the path to the bundle, like `./dist/cli`\n // targetPaths is then: [./dist/cli.d.ts, ./dist/cli.d.cts]\n const exportPath = (bundle.import || bundle.require)!.replace(/\\.[mc]?js$/, '')\n const importId = path.join(pkg.name, exportPath)\n\n dtsTask.entries.push({\n importId,\n exportPath,\n sourcePath: bundle.source,\n targetPaths: getTargetPaths(pkg.type, bundle),\n })\n }\n }\n\n // Add dts task\n if (dtsTask.entries.length) {\n tasks.push(dtsTask)\n }\n }\n\n // Parse rollup:commonjs:* tasks\n for (const exp of exports) {\n const output = exp.require\n\n if (!output) continue\n\n addRollupTaskEntry('commonjs', ctx.runtime, {\n path: exp._path,\n source: exp.source,\n output,\n })\n }\n\n // Parse rollup:esm:* tasks\n for (const exp of exports) {\n const output = exp.import\n\n if (!output) continue\n\n addRollupTaskEntry('esm', ctx.runtime, {\n path: exp._path,\n source: exp.source,\n output,\n })\n }\n\n // Parse rollup:commonjs:browser tasks\n for (const exp of exports) {\n const output = exp.browser?.require\n\n if (!output) continue\n\n addRollupTaskEntry('commonjs', 'browser', {\n path: exp._path,\n source: exp.browser?.source || exp.source,\n output,\n })\n }\n\n // Parse rollup:esm:browser tasks\n for (const exp of exports) {\n const output = exp.browser?.import\n\n if (!output) continue\n\n addRollupTaskEntry('esm', 'browser', {\n path: exp._path,\n source: exp.browser?.source || exp.source,\n output,\n })\n }\n\n for (const bundle of bundles) {\n const idx = bundles.indexOf(bundle)\n\n if (bundle.require) {\n addRollupTaskEntry('commonjs', bundle.runtime || ctx.runtime, {\n path: `__$$bundle_cjs_${idx}$$__`,\n source: bundle.source,\n output: bundle.require,\n })\n }\n\n if (bundle.import) {\n addRollupTaskEntry('esm', bundle.runtime || ctx.runtime, {\n path: `__$$bundle_esm_${idx}$$__`,\n source: bundle.source,\n output: bundle.import,\n })\n }\n }\n\n // Perform rolldown dts tasks first, as they have special logic for removing non .d.ts chunks\n tasks.push(...Object.values(rolldownDtsTask))\n // Then run api-extractor tsdoc release tag checking (if rolldown is used for dts bundling, otherwise api-extractor performs both in the build:dts task)\n // @TODO\n // Then run rollup tasks\n tasks.push(...Object.values(rollupTasks))\n\n return tasks\n}\n","import path from 'node:path'\nimport {rimraf} from 'rimraf'\nimport {loadConfig} from './core/config/loadConfig.ts'\nimport {loadPkgWithReporting} from './core/pkg/loadPkgWithReporting.ts'\nimport {createLogger} from './logger.ts'\nimport {resolveBuildContext} from './resolveBuildContext.ts'\nimport {resolveBuildTasks} from './resolveBuildTasks.ts'\nimport {createSpinner} from './spinner.ts'\nimport {buildTaskHandlers} from './tasks/index.ts'\nimport {type BuildTask, type TaskHandler} from './tasks/types.ts'\n\n/**\n * Build the distribution files of a npm package.\n *\n * @example\n * ```ts\n * import {build} from '@sanity/pkg-utils'\n *\n * build({\n * cwd: process.cwd(),\n * tsconfig: 'tsconfig.dist.json,\n * }).then(() => {\n * console.log('successfully built')\n * }).catch((err) => {\n * console.log(`build error: ${err.message}`)\n * })\n * ```\n *\n * @public\n */\nexport async function build(options: {\n cwd: string\n emitDeclarationOnly?: boolean\n strict?: boolean\n tsconfig?: string\n clean?: boolean\n quiet?: boolean\n}): Promise<void> {\n const {\n cwd,\n emitDeclarationOnly,\n strict = false,\n tsconfig: tsconfigOption,\n clean = false,\n quiet = false,\n } = options\n const logger = createLogger(quiet)\n\n const config = await loadConfig({cwd})\n\n const {parseStrictOptions} = await import('./strict.ts')\n const strictOptions = parseStrictOptions(config?.strictOptions ?? {})\n const pkg = await loadPkgWithReporting({cwd, logger, strict, strictOptions})\n\n const tsconfig = tsconfigOption || config?.tsconfig || 'tsconfig.json'\n\n const ctx = await resolveBuildContext({\n config,\n cwd,\n emitDeclarationOnly,\n logger,\n pkg,\n strict,\n tsconfig,\n })\n\n if (clean) {\n if (!quiet) {\n logger.log(\n `Deleting the \\`dist\\` folder: './${path.relative(cwd, ctx.distPath)}' before building...`,\n )\n }\n await rimraf(ctx.distPath)\n }\n\n const buildTasks = resolveBuildTasks(ctx)\n\n for (const task of buildTasks) {\n // eslint-disable-next-line @typescript-eslint/no-unsafe-type-assertion -- TypeScript can't infer the correct handler type from discriminated union\n const handler = buildTaskHandlers[task.type] as TaskHandler<BuildTask>\n const taskName = handler.name(ctx, task)\n\n const spinner = createSpinner(taskName, quiet)\n\n try {\n const result = await handler.exec(ctx, task).toPromise()\n\n spinner.complete()\n ctx.logger.log()\n\n handler.complete(ctx, task, result)\n } catch (err) {\n spinner.error()\n\n if (err instanceof Error) {\n const RE_CWD = new RegExp(cwd, 'g')\n\n ctx.logger.error(err.message.replace(RE_CWD, '.'))\n ctx.logger.log()\n }\n\n handler.error(ctx, task, err)\n\n process.exit(1)\n }\n }\n}\n"],"names":["exports"],"mappings":"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"}
|
package/dist/_chunks-es/check.js
CHANGED
|
@@ -43,7 +43,9 @@ function printPackageTree(ctx) {
|
|
|
43
43
|
async function check(options) {
|
|
44
44
|
const { cwd, strict = !1, tsconfig: tsconfigOption } = options, logger = createLogger(), spinner = createSpinner("");
|
|
45
45
|
try {
|
|
46
|
-
const config = await loadConfig({ cwd }),
|
|
46
|
+
const config = await loadConfig({ cwd }), { parseStrictOptions } = await import("./consoleSpy.js").then(function(n) {
|
|
47
|
+
return n.strict;
|
|
48
|
+
}), strictOptions = parseStrictOptions(config?.strictOptions ?? {}), pkg = await loadPkgWithReporting({ cwd, logger, strict, strictOptions }), tsconfig = tsconfigOption || config?.tsconfig || "tsconfig.json", ctx = await resolveBuildContext({ config, cwd, logger, pkg, strict, tsconfig });
|
|
47
49
|
if (printPackageTree(ctx), strict) {
|
|
48
50
|
const missingFiles = [];
|
|
49
51
|
for (const [, exp] of Object.entries(ctx.exports || {}))
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"check.js","sources":["../../src/node/getFilesize.ts","../../src/node/printPackageTree.ts","../../src/node/check.ts"],"sourcesContent":["import {statSync} from 'node:fs'\nimport prettyBytes from 'pretty-bytes'\n\nexport function getFilesize(file: string): string {\n const stats = statSync(file)\n\n return prettyBytes(stats.size)\n}\n","import path from 'node:path'\nimport chalk from 'chalk'\nimport treeify from 'treeify'\nimport type {PkgExport} from './core/config/types.ts'\nimport type {BuildContext} from './core/contexts/buildContext.ts'\nimport {fileExists} from './fileExists.ts'\nimport {getFilesize} from './getFilesize.ts'\n\nfunction getFileInfo(cwd: string, filePath: string) {\n const p = path.resolve(cwd, filePath)\n const exists = fileExists(p)\n const size = exists ? getFilesize(p) : undefined\n\n return {exists, size}\n}\n\nexport function printPackageTree(ctx: BuildContext): void {\n const {cwd, exports, logger, pkg} = ctx\n\n if (!exports) return\n\n logger.log(`${chalk.blue(pkg.name)}@${chalk.green(pkg.version)}`)\n\n const tree: Record<string, unknown> = {}\n\n if (pkg.type) {\n tree['type'] = chalk.yellow(pkg.type)\n }\n\n if (pkg.bin) {\n tree['bin'] = Object.fromEntries(\n Object.entries(pkg.bin).map(([name, file]) => [chalk.cyan(name), fileInfo(file)]),\n )\n }\n\n function fileInfo(file: string) {\n const info = getFileInfo(cwd, file)\n\n if (!info.size) {\n return `${chalk.gray(file)} ${chalk.red('does not exist')}`\n }\n\n return `${chalk.yellow(file)} ${chalk.gray(info.size)}`\n }\n\n tree['exports'] = Object.fromEntries(\n Object.entries(exports)\n .filter(([, entry]) => entry._exported)\n .map(([exportPath, entry]) => {\n const exp: Omit<PkgExport, '_exported'> = {\n source: fileInfo(entry.source),\n browser: undefined,\n require: undefined,\n node: undefined,\n import: undefined,\n default: fileInfo(entry.default),\n }\n\n if (entry.browser) {\n exp.browser = {source: fileInfo(entry.browser.source)}\n\n if (entry.browser.import) exp.browser.import = fileInfo(entry.browser.import)\n if (entry.browser.require) exp.browser.require = fileInfo(entry.browser.require)\n } else {\n delete exp.browser\n }\n\n if (entry.require) {\n exp.require = fileInfo(entry.require)\n } else {\n delete exp.require\n }\n\n if (entry.node) {\n exp.node = {}\n\n if (entry.node.source) exp.node.source = fileInfo(entry.node.source)\n if (entry.node.import) exp.node.import = fileInfo(entry.node.import)\n if (entry.node.require) exp.node.require = fileInfo(entry.node.require)\n } else {\n delete exp.node\n }\n\n if (entry.import) {\n exp.import = fileInfo(entry.import)\n } else {\n delete exp.import\n }\n\n return [chalk.cyan(path.join(pkg.name, exportPath)), exp]\n }),\n )\n\n logger.log(treeify.asTree(tree as Record<string, any>, true, true))\n}\n","import path from 'node:path'\nimport type {ExtractorMessage} from '@microsoft/api-extractor'\nimport type {BuildFailure, Message} from 'esbuild'\nimport {createConsoleSpy} from './consoleSpy.ts'\nimport {loadConfig} from './core/config/loadConfig.ts'\nimport type {BuildContext} from './core/contexts/index.ts'\nimport {loadPkgWithReporting} from './core/pkg/loadPkgWithReporting.ts'\nimport {fileExists} from './fileExists.ts'\nimport {createLogger, type Logger} from './logger.ts'\nimport {printPackageTree} from './printPackageTree.ts'\nimport {resolveBuildContext} from './resolveBuildContext.ts'\nimport {createSpinner} from './spinner.ts'\n\n/** @public */\nexport async function check(options: {\n cwd: string\n strict?: boolean\n tsconfig?: string\n}): Promise<void> {\n const {cwd, strict = false, tsconfig: tsconfigOption} = options\n const logger = createLogger()\n const spinner = createSpinner('')\n try {\n const config = await loadConfig({cwd})\n const pkg = await loadPkgWithReporting({cwd, logger, strict})\n const tsconfig = tsconfigOption || config?.tsconfig || 'tsconfig.json'\n const ctx = await resolveBuildContext({config, cwd, logger, pkg, strict, tsconfig})\n\n printPackageTree(ctx)\n\n if (strict) {\n const missingFiles: string[] = []\n\n // Check if there are missing files\n for (const [, exp] of Object.entries(ctx.exports || {})) {\n if (exp.source && !fileExists(path.resolve(cwd, exp.source))) {\n missingFiles.push(exp.source)\n }\n\n if (exp.require && !fileExists(path.resolve(cwd, exp.require))) {\n missingFiles.push(exp.require)\n }\n\n if (exp.import && !fileExists(path.resolve(cwd, exp.import))) {\n missingFiles.push(exp.import)\n }\n }\n\n if (ctx.pkg.types && !fileExists(path.resolve(cwd, ctx.pkg.types))) {\n missingFiles.push(ctx.pkg.types)\n }\n\n if (missingFiles.length) {\n logger.error(`missing files: ${missingFiles.join(', ')}`)\n process.exit(1)\n }\n\n // Check if the files are resolved\n const exportPaths: {require: string[]; import: string[]} = {\n require: [],\n import: [],\n }\n\n for (const exp of Object.values(ctx.exports || {})) {\n if (!exp._exported) continue\n if (exp.require) exportPaths.require.push(exp.require)\n if (exp.import) exportPaths.import.push(exp.import)\n }\n\n const external = [\n ...Object.keys(pkg.dependencies || {}),\n ...Object.keys(pkg.devDependencies || {}),\n ]\n\n const consoleSpy = createConsoleSpy()\n\n const checks = []\n if (exportPaths.import.length) {\n checks.push(checkExports(exportPaths.import, {cwd, external, format: 'esm', logger}))\n }\n\n if (exportPaths.require.length) {\n checks.push(checkExports(exportPaths.require, {cwd, external, format: 'cjs', logger}))\n }\n\n await Promise.all(checks)\n\n consoleSpy.restore()\n }\n\n if (ctx.dts === 'rolldown' && ctx.config?.extract?.enabled !== false) {\n await checkApiExtractorReleaseTags(ctx)\n }\n\n spinner.complete()\n } catch (err) {\n spinner.error()\n\n if (err instanceof Error) {\n const RE_CWD = new RegExp(cwd, 'g')\n\n logger.error((err.stack || err.message).replace(RE_CWD, '.'))\n logger.log()\n }\n\n process.exit(1)\n }\n}\n\nasync function checkExports(\n exportPaths: string[],\n options: {cwd: string; external: string[]; format: 'esm' | 'cjs'; logger: Logger},\n) {\n const {build} = await import('esbuild')\n const {cwd, external, format, logger} = options\n\n const code = exportPaths\n .map((id) => (format ? `import('${id}');` : `require('${id}');`))\n .join('\\n')\n\n try {\n const esbuildResult = await build({\n bundle: true,\n external,\n format,\n logLevel: 'silent',\n // otherwise output maps to stdout as we're using stdin\n outfile: '/dev/null',\n platform: 'node',\n // We're not interested in CSS files that might be imported as a side effect, so we'll treat them as empty\n loader: {'.css': 'empty'},\n stdin: {\n contents: code,\n loader: 'js',\n resolveDir: cwd,\n },\n })\n\n if (esbuildResult.errors.length > 0) {\n for (const msg of esbuildResult.errors) {\n printEsbuildMessage(logger.warn, msg)\n\n logger.log()\n }\n\n process.exit(1)\n }\n\n const esbuildWarnings = esbuildResult.warnings.filter((msg) => {\n return !(msg.detail || msg.text).includes(`does not affect esbuild's own target setting`)\n })\n\n for (const msg of esbuildWarnings) {\n printEsbuildMessage(logger.warn, msg)\n\n logger.log()\n }\n } catch (err) {\n if (isEsbuildFailure(err)) {\n const {errors} = err\n\n for (const msg of errors) {\n printEsbuildMessage(logger.error, msg)\n\n logger.log()\n }\n } else if (err instanceof Error) {\n logger.error(err.stack || err.message)\n\n logger.log()\n } else {\n logger.error(String(err))\n\n logger.log()\n }\n\n process.exit(1)\n }\n}\n\nfunction printEsbuildMessage(log: (...args: unknown[]) => void, msg: Message) {\n if (msg.location) {\n log(\n [\n `${msg.detail || msg.text}\\n`,\n `${msg.location.line} | ${msg.location.lineText}\\n`,\n `in ./${msg.location.file}:${msg.location.line}:${msg.location.column}`,\n ].join(''),\n )\n } else {\n log(msg.detail || msg.text)\n }\n}\n\nfunction isEsbuildFailure(err: unknown): err is BuildFailure {\n return (\n err instanceof Error &&\n 'errors' in err &&\n Array.isArray(err.errors) &&\n err.errors.every(isEsbuildMessage) &&\n 'warnings' in err &&\n Array.isArray(err.warnings) &&\n err.warnings.every(isEsbuildMessage)\n )\n}\n\nfunction isEsbuildMessage(msg: unknown): msg is Message {\n return (\n typeof msg === 'object' &&\n msg !== null &&\n 'text' in msg &&\n typeof msg.text === 'string' &&\n 'location' in msg &&\n (msg.location === null || typeof msg.location === 'object')\n )\n}\n\nasync function checkApiExtractorReleaseTags(ctx: BuildContext) {\n const [\n {Extractor, ExtractorConfig},\n {createApiExtractorConfig},\n {createTSDocConfig},\n {getExtractMessagesConfig},\n {printExtractMessages},\n ] = await Promise.all([\n import('@microsoft/api-extractor'),\n import('./tasks/dts/createApiExtractorConfig.ts'),\n import('./tasks/dts/createTSDocConfig.ts'),\n import('./tasks/dts/getExtractMessagesConfig.ts'),\n import('./printExtractMessages.ts'),\n ])\n\n const customTags = ctx.config?.extract?.customTags || []\n const bundledPackages = ctx.bundledPackages\n const distPath = ctx.distPath\n const outDir = ctx.ts.config?.options.outDir\n const rules = ctx.config?.extract?.rules || {}\n\n if (!outDir) {\n throw new Error('tsconfig.json is missing `compilerOptions.outDir`')\n }\n\n for (const exp of Object.values(ctx.exports || {})) {\n if (!exp._exported || !exp.default.endsWith('.js')) continue\n const dtsPath = exp.default.replace(/\\.js$/, '.d.ts')\n const exportPath = path.resolve(ctx.cwd, dtsPath)\n\n const tsdocConfigFile = await createTSDocConfig({\n customTags,\n })\n const extractorConfig = ExtractorConfig.prepare({\n configObject: createApiExtractorConfig({\n bundledPackages,\n distPath,\n exportPath,\n filePath: path.relative(outDir, dtsPath),\n messages: getExtractMessagesConfig({rules}),\n projectFolder: ctx.cwd,\n mainEntryPointFilePath: exportPath,\n tsconfig: ctx.ts.config!,\n tsconfigPath: path.resolve(ctx.cwd, ctx.ts.configPath || 'tsconfig.json'),\n dtsRollupEnabled: false,\n }),\n configObjectFullPath: undefined,\n tsdocConfigFile,\n packageJsonFullPath: path.resolve(ctx.cwd, 'package.json'),\n })\n const messages: ExtractorMessage[] = []\n // Invoke API Extractor\n Extractor.invoke(extractorConfig, {\n // Equivalent to the \"--local\" command-line parameter\n localBuild: true,\n // Equivalent to the \"--verbose\" command-line parameter\n showVerboseMessages: true,\n // handle messages\n messageCallback(message: ExtractorMessage) {\n messages.push(message)\n message.handled = true\n },\n })\n\n printExtractMessages(ctx, messages)\n }\n}\n"],"names":["exports"],"mappings":"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"}
|
|
1
|
+
{"version":3,"file":"check.js","sources":["../../src/node/getFilesize.ts","../../src/node/printPackageTree.ts","../../src/node/check.ts"],"sourcesContent":["import {statSync} from 'node:fs'\nimport prettyBytes from 'pretty-bytes'\n\nexport function getFilesize(file: string): string {\n const stats = statSync(file)\n\n return prettyBytes(stats.size)\n}\n","import path from 'node:path'\nimport chalk from 'chalk'\nimport treeify from 'treeify'\nimport type {PkgExport} from './core/config/types.ts'\nimport type {BuildContext} from './core/contexts/buildContext.ts'\nimport {fileExists} from './fileExists.ts'\nimport {getFilesize} from './getFilesize.ts'\n\nfunction getFileInfo(cwd: string, filePath: string) {\n const p = path.resolve(cwd, filePath)\n const exists = fileExists(p)\n const size = exists ? getFilesize(p) : undefined\n\n return {exists, size}\n}\n\nexport function printPackageTree(ctx: BuildContext): void {\n const {cwd, exports, logger, pkg} = ctx\n\n if (!exports) return\n\n logger.log(`${chalk.blue(pkg.name)}@${chalk.green(pkg.version)}`)\n\n const tree: Record<string, unknown> = {}\n\n if (pkg.type) {\n tree['type'] = chalk.yellow(pkg.type)\n }\n\n if (pkg.bin) {\n tree['bin'] = Object.fromEntries(\n Object.entries(pkg.bin).map(([name, file]) => [chalk.cyan(name), fileInfo(file)]),\n )\n }\n\n function fileInfo(file: string) {\n const info = getFileInfo(cwd, file)\n\n if (!info.size) {\n return `${chalk.gray(file)} ${chalk.red('does not exist')}`\n }\n\n return `${chalk.yellow(file)} ${chalk.gray(info.size)}`\n }\n\n tree['exports'] = Object.fromEntries(\n Object.entries(exports)\n .filter(([, entry]) => entry._exported)\n .map(([exportPath, entry]) => {\n const exp: Omit<PkgExport, '_exported'> = {\n source: fileInfo(entry.source),\n browser: undefined,\n require: undefined,\n node: undefined,\n import: undefined,\n default: fileInfo(entry.default),\n }\n\n if (entry.browser) {\n exp.browser = {source: fileInfo(entry.browser.source)}\n\n if (entry.browser.import) exp.browser.import = fileInfo(entry.browser.import)\n if (entry.browser.require) exp.browser.require = fileInfo(entry.browser.require)\n } else {\n delete exp.browser\n }\n\n if (entry.require) {\n exp.require = fileInfo(entry.require)\n } else {\n delete exp.require\n }\n\n if (entry.node) {\n exp.node = {}\n\n if (entry.node.source) exp.node.source = fileInfo(entry.node.source)\n if (entry.node.import) exp.node.import = fileInfo(entry.node.import)\n if (entry.node.require) exp.node.require = fileInfo(entry.node.require)\n } else {\n delete exp.node\n }\n\n if (entry.import) {\n exp.import = fileInfo(entry.import)\n } else {\n delete exp.import\n }\n\n return [chalk.cyan(path.join(pkg.name, exportPath)), exp]\n }),\n )\n\n logger.log(treeify.asTree(tree as Record<string, any>, true, true))\n}\n","import path from 'node:path'\nimport type {ExtractorMessage} from '@microsoft/api-extractor'\nimport type {BuildFailure, Message} from 'esbuild'\nimport {createConsoleSpy} from './consoleSpy.ts'\nimport {loadConfig} from './core/config/loadConfig.ts'\nimport type {BuildContext} from './core/contexts/index.ts'\nimport {loadPkgWithReporting} from './core/pkg/loadPkgWithReporting.ts'\nimport {fileExists} from './fileExists.ts'\nimport {createLogger, type Logger} from './logger.ts'\nimport {printPackageTree} from './printPackageTree.ts'\nimport {resolveBuildContext} from './resolveBuildContext.ts'\nimport {createSpinner} from './spinner.ts'\n\n/** @public */\nexport async function check(options: {\n cwd: string\n strict?: boolean\n tsconfig?: string\n}): Promise<void> {\n const {cwd, strict = false, tsconfig: tsconfigOption} = options\n const logger = createLogger()\n const spinner = createSpinner('')\n try {\n const config = await loadConfig({cwd})\n const {parseStrictOptions} = await import('./strict.ts')\n const strictOptions = parseStrictOptions(config?.strictOptions ?? {})\n const pkg = await loadPkgWithReporting({cwd, logger, strict, strictOptions})\n const tsconfig = tsconfigOption || config?.tsconfig || 'tsconfig.json'\n const ctx = await resolveBuildContext({config, cwd, logger, pkg, strict, tsconfig})\n\n printPackageTree(ctx)\n\n if (strict) {\n const missingFiles: string[] = []\n\n // Check if there are missing files\n for (const [, exp] of Object.entries(ctx.exports || {})) {\n if (exp.source && !fileExists(path.resolve(cwd, exp.source))) {\n missingFiles.push(exp.source)\n }\n\n if (exp.require && !fileExists(path.resolve(cwd, exp.require))) {\n missingFiles.push(exp.require)\n }\n\n if (exp.import && !fileExists(path.resolve(cwd, exp.import))) {\n missingFiles.push(exp.import)\n }\n }\n\n if (ctx.pkg.types && !fileExists(path.resolve(cwd, ctx.pkg.types))) {\n missingFiles.push(ctx.pkg.types)\n }\n\n if (missingFiles.length) {\n logger.error(`missing files: ${missingFiles.join(', ')}`)\n process.exit(1)\n }\n\n // Check if the files are resolved\n const exportPaths: {require: string[]; import: string[]} = {\n require: [],\n import: [],\n }\n\n for (const exp of Object.values(ctx.exports || {})) {\n if (!exp._exported) continue\n if (exp.require) exportPaths.require.push(exp.require)\n if (exp.import) exportPaths.import.push(exp.import)\n }\n\n const external = [\n ...Object.keys(pkg.dependencies || {}),\n ...Object.keys(pkg.devDependencies || {}),\n ]\n\n const consoleSpy = createConsoleSpy()\n\n const checks = []\n if (exportPaths.import.length) {\n checks.push(checkExports(exportPaths.import, {cwd, external, format: 'esm', logger}))\n }\n\n if (exportPaths.require.length) {\n checks.push(checkExports(exportPaths.require, {cwd, external, format: 'cjs', logger}))\n }\n\n await Promise.all(checks)\n\n consoleSpy.restore()\n }\n\n if (ctx.dts === 'rolldown' && ctx.config?.extract?.enabled !== false) {\n await checkApiExtractorReleaseTags(ctx)\n }\n\n spinner.complete()\n } catch (err) {\n spinner.error()\n\n if (err instanceof Error) {\n const RE_CWD = new RegExp(cwd, 'g')\n\n logger.error((err.stack || err.message).replace(RE_CWD, '.'))\n logger.log()\n }\n\n process.exit(1)\n }\n}\n\nasync function checkExports(\n exportPaths: string[],\n options: {cwd: string; external: string[]; format: 'esm' | 'cjs'; logger: Logger},\n) {\n const {build} = await import('esbuild')\n const {cwd, external, format, logger} = options\n\n const code = exportPaths\n .map((id) => (format ? `import('${id}');` : `require('${id}');`))\n .join('\\n')\n\n try {\n const esbuildResult = await build({\n bundle: true,\n external,\n format,\n logLevel: 'silent',\n // otherwise output maps to stdout as we're using stdin\n outfile: '/dev/null',\n platform: 'node',\n // We're not interested in CSS files that might be imported as a side effect, so we'll treat them as empty\n loader: {'.css': 'empty'},\n stdin: {\n contents: code,\n loader: 'js',\n resolveDir: cwd,\n },\n })\n\n if (esbuildResult.errors.length > 0) {\n for (const msg of esbuildResult.errors) {\n printEsbuildMessage(logger.warn, msg)\n\n logger.log()\n }\n\n process.exit(1)\n }\n\n const esbuildWarnings = esbuildResult.warnings.filter((msg) => {\n return !(msg.detail || msg.text).includes(`does not affect esbuild's own target setting`)\n })\n\n for (const msg of esbuildWarnings) {\n printEsbuildMessage(logger.warn, msg)\n\n logger.log()\n }\n } catch (err) {\n if (isEsbuildFailure(err)) {\n const {errors} = err\n\n for (const msg of errors) {\n printEsbuildMessage(logger.error, msg)\n\n logger.log()\n }\n } else if (err instanceof Error) {\n logger.error(err.stack || err.message)\n\n logger.log()\n } else {\n logger.error(String(err))\n\n logger.log()\n }\n\n process.exit(1)\n }\n}\n\nfunction printEsbuildMessage(log: (...args: unknown[]) => void, msg: Message) {\n if (msg.location) {\n log(\n [\n `${msg.detail || msg.text}\\n`,\n `${msg.location.line} | ${msg.location.lineText}\\n`,\n `in ./${msg.location.file}:${msg.location.line}:${msg.location.column}`,\n ].join(''),\n )\n } else {\n log(msg.detail || msg.text)\n }\n}\n\nfunction isEsbuildFailure(err: unknown): err is BuildFailure {\n return (\n err instanceof Error &&\n 'errors' in err &&\n Array.isArray(err.errors) &&\n err.errors.every(isEsbuildMessage) &&\n 'warnings' in err &&\n Array.isArray(err.warnings) &&\n err.warnings.every(isEsbuildMessage)\n )\n}\n\nfunction isEsbuildMessage(msg: unknown): msg is Message {\n return (\n typeof msg === 'object' &&\n msg !== null &&\n 'text' in msg &&\n typeof msg.text === 'string' &&\n 'location' in msg &&\n (msg.location === null || typeof msg.location === 'object')\n )\n}\n\nasync function checkApiExtractorReleaseTags(ctx: BuildContext) {\n const [\n {Extractor, ExtractorConfig},\n {createApiExtractorConfig},\n {createTSDocConfig},\n {getExtractMessagesConfig},\n {printExtractMessages},\n ] = await Promise.all([\n import('@microsoft/api-extractor'),\n import('./tasks/dts/createApiExtractorConfig.ts'),\n import('./tasks/dts/createTSDocConfig.ts'),\n import('./tasks/dts/getExtractMessagesConfig.ts'),\n import('./printExtractMessages.ts'),\n ])\n\n const customTags = ctx.config?.extract?.customTags || []\n const bundledPackages = ctx.bundledPackages\n const distPath = ctx.distPath\n const outDir = ctx.ts.config?.options.outDir\n const rules = ctx.config?.extract?.rules || {}\n\n if (!outDir) {\n throw new Error('tsconfig.json is missing `compilerOptions.outDir`')\n }\n\n for (const exp of Object.values(ctx.exports || {})) {\n if (!exp._exported || !exp.default.endsWith('.js')) continue\n const dtsPath = exp.default.replace(/\\.js$/, '.d.ts')\n const exportPath = path.resolve(ctx.cwd, dtsPath)\n\n const tsdocConfigFile = await createTSDocConfig({\n customTags,\n })\n const extractorConfig = ExtractorConfig.prepare({\n configObject: createApiExtractorConfig({\n bundledPackages,\n distPath,\n exportPath,\n filePath: path.relative(outDir, dtsPath),\n messages: getExtractMessagesConfig({rules}),\n projectFolder: ctx.cwd,\n mainEntryPointFilePath: exportPath,\n tsconfig: ctx.ts.config!,\n tsconfigPath: path.resolve(ctx.cwd, ctx.ts.configPath || 'tsconfig.json'),\n dtsRollupEnabled: false,\n }),\n configObjectFullPath: undefined,\n tsdocConfigFile,\n packageJsonFullPath: path.resolve(ctx.cwd, 'package.json'),\n })\n const messages: ExtractorMessage[] = []\n // Invoke API Extractor\n Extractor.invoke(extractorConfig, {\n // Equivalent to the \"--local\" command-line parameter\n localBuild: true,\n // Equivalent to the \"--verbose\" command-line parameter\n showVerboseMessages: true,\n // handle messages\n messageCallback(message: ExtractorMessage) {\n messages.push(message)\n message.handled = true\n },\n })\n\n printExtractMessages(ctx, messages)\n }\n}\n"],"names":["exports"],"mappings":";;;;;;;;AAGO,SAAS,YAAY,MAAsB;AAChD,QAAM,QAAQ,SAAS,IAAI;AAE3B,SAAO,YAAY,MAAM,IAAI;AAC/B;ACCA,SAAS,YAAY,KAAa,UAAkB;AAClD,QAAM,IAAI,KAAK,QAAQ,KAAK,QAAQ,GAC9B,SAAS,WAAW,CAAC,GACrB,OAAO,SAAS,YAAY,CAAC,IAAI;AAEvC,SAAO,EAAC,QAAQ,KAAA;AAClB;AAEO,SAAS,iBAAiB,KAAyB;AACxD,QAAM,EAAC,KAAA,SAAKA,WAAS,QAAQ,QAAO;AAEpC,MAAI,CAACA,UAAS;AAEd,SAAO,IAAI,GAAG,MAAM,KAAK,IAAI,IAAI,CAAC,IAAI,MAAM,MAAM,IAAI,OAAO,CAAC,EAAE;AAEhE,QAAM,OAAgC,CAAA;AAElC,MAAI,SACN,KAAK,OAAU,MAAM,OAAO,IAAI,IAAI,IAGlC,IAAI,QACN,KAAK,MAAS,OAAO;AAAA,IACnB,OAAO,QAAQ,IAAI,GAAG,EAAE,IAAI,CAAC,CAAC,MAAM,IAAI,MAAM,CAAC,MAAM,KAAK,IAAI,GAAG,SAAS,IAAI,CAAC,CAAC;AAAA,EAAA;AAIpF,WAAS,SAAS,MAAc;AAC9B,UAAM,OAAO,YAAY,KAAK,IAAI;AAElC,WAAK,KAAK,OAIH,GAAG,MAAM,OAAO,IAAI,CAAC,IAAI,MAAM,KAAK,KAAK,IAAI,CAAC,KAH5C,GAAG,MAAM,KAAK,IAAI,CAAC,IAAI,MAAM,IAAI,gBAAgB,CAAC;AAAA,EAI7D;AAEA,OAAK,UAAa,OAAO;AAAA,IACvB,OAAO,QAAQA,SAAO,EACnB,OAAO,CAAC,CAAA,EAAG,KAAK,MAAM,MAAM,SAAS,EACrC,IAAI,CAAC,CAAC,YAAY,KAAK,MAAM;AAC5B,YAAM,MAAoC;AAAA,QACxC,QAAQ,SAAS,MAAM,MAAM;AAAA,QAC7B,SAAS;AAAA,QACT,SAAS;AAAA,QACT,MAAM;AAAA,QACN,QAAQ;AAAA,QACR,SAAS,SAAS,MAAM,OAAO;AAAA,MAAA;AAGjC,aAAI,MAAM,WACR,IAAI,UAAU,EAAC,QAAQ,SAAS,MAAM,QAAQ,MAAM,EAAA,GAEhD,MAAM,QAAQ,WAAQ,IAAI,QAAQ,SAAS,SAAS,MAAM,QAAQ,MAAM,IACxE,MAAM,QAAQ,YAAS,IAAI,QAAQ,UAAU,SAAS,MAAM,QAAQ,OAAO,MAE/E,OAAO,IAAI,SAGT,MAAM,UACR,IAAI,UAAU,SAAS,MAAM,OAAO,IAEpC,OAAO,IAAI,SAGT,MAAM,QACR,IAAI,OAAO,CAAA,GAEP,MAAM,KAAK,WAAQ,IAAI,KAAK,SAAS,SAAS,MAAM,KAAK,MAAM,IAC/D,MAAM,KAAK,WAAQ,IAAI,KAAK,SAAS,SAAS,MAAM,KAAK,MAAM,IAC/D,MAAM,KAAK,YAAS,IAAI,KAAK,UAAU,SAAS,MAAM,KAAK,OAAO,MAEtE,OAAO,IAAI,MAGT,MAAM,SACR,IAAI,SAAS,SAAS,MAAM,MAAM,IAElC,OAAO,IAAI,QAGN,CAAC,MAAM,KAAK,KAAK,KAAK,IAAI,MAAM,UAAU,CAAC,GAAG,GAAG;AAAA,IAC1D,CAAC;AAAA,EAAA,GAGL,OAAO,IAAI,QAAQ,OAAO,MAA6B,IAAM,EAAI,CAAC;AACpE;AChFA,eAAsB,MAAM,SAIV;AAChB,QAAM,EAAC,KAAK,SAAS,IAAO,UAAU,eAAA,IAAkB,SAClD,SAAS,aAAA,GACT,UAAU,cAAc,EAAE;AAChC,MAAI;AACF,UAAM,SAAS,MAAM,WAAW,EAAC,KAAI,GAC/B,EAAC,mBAAA,IAAsB,MAAM,OAAO,iBAAa,EAAA,KAAA,SAAA,GAAA;AAAA,aAAA,EAAA;AAAA,IAAA,CAAA,GACjD,gBAAgB,mBAAmB,QAAQ,iBAAiB,CAAA,CAAE,GAC9D,MAAM,MAAM,qBAAqB,EAAC,KAAK,QAAQ,QAAQ,eAAc,GACrE,WAAW,kBAAkB,QAAQ,YAAY,iBACjD,MAAM,MAAM,oBAAoB,EAAC,QAAQ,KAAK,QAAQ,KAAK,QAAQ,UAAS;AAIlF,QAFA,iBAAiB,GAAG,GAEhB,QAAQ;AACV,YAAM,eAAyB,CAAA;AAG/B,iBAAW,CAAA,EAAG,GAAG,KAAK,OAAO,QAAQ,IAAI,WAAW,EAAE;AAChD,YAAI,UAAU,CAAC,WAAW,KAAK,QAAQ,KAAK,IAAI,MAAM,CAAC,KACzD,aAAa,KAAK,IAAI,MAAM,GAG1B,IAAI,WAAW,CAAC,WAAW,KAAK,QAAQ,KAAK,IAAI,OAAO,CAAC,KAC3D,aAAa,KAAK,IAAI,OAAO,GAG3B,IAAI,UAAU,CAAC,WAAW,KAAK,QAAQ,KAAK,IAAI,MAAM,CAAC,KACzD,aAAa,KAAK,IAAI,MAAM;AAI5B,UAAI,IAAI,SAAS,CAAC,WAAW,KAAK,QAAQ,KAAK,IAAI,IAAI,KAAK,CAAC,KAC/D,aAAa,KAAK,IAAI,IAAI,KAAK,GAG7B,aAAa,WACf,OAAO,MAAM,kBAAkB,aAAa,KAAK,IAAI,CAAC,EAAE,GACxD,QAAQ,KAAK,CAAC;AAIhB,YAAM,cAAqD;AAAA,QACzD,SAAS,CAAA;AAAA,QACT,QAAQ,CAAA;AAAA,MAAC;AAGX,iBAAW,OAAO,OAAO,OAAO,IAAI,WAAW,EAAE;AAC1C,YAAI,cACL,IAAI,WAAS,YAAY,QAAQ,KAAK,IAAI,OAAO,GACjD,IAAI,UAAQ,YAAY,OAAO,KAAK,IAAI,MAAM;AAGpD,YAAM,WAAW;AAAA,QACf,GAAG,OAAO,KAAK,IAAI,gBAAgB,CAAA,CAAE;AAAA,QACrC,GAAG,OAAO,KAAK,IAAI,mBAAmB,CAAA,CAAE;AAAA,MAAA,GAGpC,aAAa,oBAEb,SAAS,CAAA;AACX,kBAAY,OAAO,UACrB,OAAO,KAAK,aAAa,YAAY,QAAQ,EAAC,KAAK,UAAU,QAAQ,OAAO,OAAA,CAAO,CAAC,GAGlF,YAAY,QAAQ,UACtB,OAAO,KAAK,aAAa,YAAY,SAAS,EAAC,KAAK,UAAU,QAAQ,OAAO,OAAA,CAAO,CAAC,GAGvF,MAAM,QAAQ,IAAI,MAAM,GAExB,WAAW,QAAA;AAAA,IACb;AAEI,QAAI,QAAQ,cAAc,IAAI,QAAQ,SAAS,YAAY,MAC7D,MAAM,6BAA6B,GAAG,GAGxC,QAAQ,SAAA;AAAA,EACV,SAAS,KAAK;AAGZ,QAFA,QAAQ,SAEJ,eAAe,OAAO;AACxB,YAAM,SAAS,IAAI,OAAO,KAAK,GAAG;AAElC,aAAO,OAAO,IAAI,SAAS,IAAI,SAAS,QAAQ,QAAQ,GAAG,CAAC,GAC5D,OAAO,IAAA;AAAA,IACT;AAEA,YAAQ,KAAK,CAAC;AAAA,EAChB;AACF;AAEA,eAAe,aACb,aACA,SACA;AACA,QAAM,EAAC,MAAA,IAAS,MAAM,OAAO,SAAS,GAChC,EAAC,KAAK,UAAU,QAAQ,WAAU,SAElC,OAAO,YACV,IAAI,CAAC,OAAQ,SAAS,WAAW,EAAE,QAAQ,YAAY,EAAE,KAAM,EAC/D,KAAK;AAAA,CAAI;AAEZ,MAAI;AACF,UAAM,gBAAgB,MAAM,MAAM;AAAA,MAChC,QAAQ;AAAA,MACR;AAAA,MACA;AAAA,MACA,UAAU;AAAA;AAAA,MAEV,SAAS;AAAA,MACT,UAAU;AAAA;AAAA,MAEV,QAAQ,EAAC,QAAQ,QAAA;AAAA,MACjB,OAAO;AAAA,QACL,UAAU;AAAA,QACV,QAAQ;AAAA,QACR,YAAY;AAAA,MAAA;AAAA,IACd,CACD;AAED,QAAI,cAAc,OAAO,SAAS,GAAG;AACnC,iBAAW,OAAO,cAAc;AAC9B,4BAAoB,OAAO,MAAM,GAAG,GAEpC,OAAO,IAAA;AAGT,cAAQ,KAAK,CAAC;AAAA,IAChB;AAEA,UAAM,kBAAkB,cAAc,SAAS,OAAO,CAAC,QAC9C,EAAE,IAAI,UAAU,IAAI,MAAM,SAAS,8CAA8C,CACzF;AAED,eAAW,OAAO;AAChB,0BAAoB,OAAO,MAAM,GAAG,GAEpC,OAAO,IAAA;AAAA,EAEX,SAAS,KAAK;AACZ,QAAI,iBAAiB,GAAG,GAAG;AACzB,YAAM,EAAC,WAAU;AAEjB,iBAAW,OAAO;AAChB,4BAAoB,OAAO,OAAO,GAAG,GAErC,OAAO,IAAA;AAAA,IAEX,MAAW,gBAAe,SACxB,OAAO,MAAM,IAAI,SAAS,IAAI,OAAO,GAErC,OAAO,IAAA,MAEP,OAAO,MAAM,OAAO,GAAG,CAAC,GAExB,OAAO;AAGT,YAAQ,KAAK,CAAC;AAAA,EAChB;AACF;AAEA,SAAS,oBAAoB,KAAmC,KAAc;AACxE,MAAI,WACN;AAAA,IACE;AAAA,MACE,GAAG,IAAI,UAAU,IAAI,IAAI;AAAA;AAAA,MACzB,GAAG,IAAI,SAAS,IAAI,MAAM,IAAI,SAAS,QAAQ;AAAA;AAAA,MAC/C,QAAQ,IAAI,SAAS,IAAI,IAAI,IAAI,SAAS,IAAI,IAAI,IAAI,SAAS,MAAM;AAAA,IAAA,EACrE,KAAK,EAAE;AAAA,EAAA,IAGX,IAAI,IAAI,UAAU,IAAI,IAAI;AAE9B;AAEA,SAAS,iBAAiB,KAAmC;AAC3D,SACE,eAAe,SACf,YAAY,OACZ,MAAM,QAAQ,IAAI,MAAM,KACxB,IAAI,OAAO,MAAM,gBAAgB,KACjC,cAAc,OACd,MAAM,QAAQ,IAAI,QAAQ,KAC1B,IAAI,SAAS,MAAM,gBAAgB;AAEvC;AAEA,SAAS,iBAAiB,KAA8B;AACtD,SACE,OAAO,OAAQ,YACf,QAAQ,QACR,UAAU,OACV,OAAO,IAAI,QAAS,YACpB,cAAc,QACb,IAAI,aAAa,QAAQ,OAAO,IAAI,YAAa;AAEtD;AAEA,eAAe,6BAA6B,KAAmB;AAC7D,QAAM;AAAA,IACJ,EAAC,WAAW,gBAAA;AAAA,IACZ,EAAC,yBAAA;AAAA,IACD,EAAC,kBAAA;AAAA,IACD,EAAC,yBAAA;AAAA,IACD,EAAC,qBAAA;AAAA,EAAoB,IACnB,MAAM,QAAQ,IAAI;AAAA,IACpB,OAAO,0BAA0B;AAAA,IACjC,OAAO,YAAyC,EAAA,KAAA,SAAA,GAAA;AAAA,aAAA,EAAA;AAAA,IAAA,CAAA;AAAA,IAChD,OAAO,YAAkC,EAAA,KAAA,SAAA,GAAA;AAAA,aAAA,EAAA;AAAA,IAAA,CAAA;AAAA,IACzC,OAAO,YAAyC,EAAA,KAAA,SAAA,GAAA;AAAA,aAAA,EAAA;AAAA,IAAA,CAAA;AAAA,IAChD,OAAO,YAA2B,EAAA,KAAA,SAAA,GAAA;AAAA,aAAA,EAAA;AAAA,IAAA,CAAA;AAAA,EAAA,CACnC,GAEK,aAAa,IAAI,QAAQ,SAAS,cAAc,CAAA,GAChD,kBAAkB,IAAI,iBACtB,WAAW,IAAI,UACf,SAAS,IAAI,GAAG,QAAQ,QAAQ,QAChC,QAAQ,IAAI,QAAQ,SAAS,SAAS,CAAA;AAE5C,MAAI,CAAC;AACH,UAAM,IAAI,MAAM,mDAAmD;AAGrE,aAAW,OAAO,OAAO,OAAO,IAAI,WAAW,CAAA,CAAE,GAAG;AAClD,QAAI,CAAC,IAAI,aAAa,CAAC,IAAI,QAAQ,SAAS,KAAK,EAAG;AACpD,UAAM,UAAU,IAAI,QAAQ,QAAQ,SAAS,OAAO,GAC9C,aAAa,KAAK,QAAQ,IAAI,KAAK,OAAO,GAE1C,kBAAkB,MAAM,kBAAkB;AAAA,MAC9C;AAAA,IAAA,CACD,GACK,kBAAkB,gBAAgB,QAAQ;AAAA,MAC9C,cAAc,yBAAyB;AAAA,QACrC;AAAA,QACA;AAAA,QACA;AAAA,QACA,UAAU,KAAK,SAAS,QAAQ,OAAO;AAAA,QACvC,UAAU,yBAAyB,EAAC,OAAM;AAAA,QAC1C,eAAe,IAAI;AAAA,QACnB,wBAAwB;AAAA,QACxB,UAAU,IAAI,GAAG;AAAA,QACjB,cAAc,KAAK,QAAQ,IAAI,KAAK,IAAI,GAAG,cAAc,eAAe;AAAA,QACxE,kBAAkB;AAAA,MAAA,CACnB;AAAA,MACD,sBAAsB;AAAA,MACtB;AAAA,MACA,qBAAqB,KAAK,QAAQ,IAAI,KAAK,cAAc;AAAA,IAAA,CAC1D,GACK,WAA+B,CAAA;AAErC,cAAU,OAAO,iBAAiB;AAAA;AAAA,MAEhC,YAAY;AAAA;AAAA,MAEZ,qBAAqB;AAAA;AAAA,MAErB,gBAAgB,SAA2B;AACzC,iBAAS,KAAK,OAAO,GACrB,QAAQ,UAAU;AAAA,MACpB;AAAA,IAAA,CACD,GAED,qBAAqB,KAAK,QAAQ;AAAA,EACpC;AACF;"}
|
|
@@ -122,13 +122,39 @@ async function loadPkg(options) {
|
|
|
122
122
|
return validatePkg(raw), raw;
|
|
123
123
|
}
|
|
124
124
|
async function loadPkgWithReporting(options) {
|
|
125
|
-
const { cwd, logger, strict } = options;
|
|
125
|
+
const { cwd, logger, strict: strict2, strictOptions: strictOptions2 } = options;
|
|
126
126
|
try {
|
|
127
127
|
const pkg = await loadPkg({ cwd });
|
|
128
128
|
let shouldError = !1;
|
|
129
|
-
if (
|
|
130
|
-
|
|
131
|
-
|
|
129
|
+
if (strict2) {
|
|
130
|
+
if (strictOptions2.preferModuleType !== "off")
|
|
131
|
+
if (pkg.type) {
|
|
132
|
+
if (pkg.type === "commonjs") {
|
|
133
|
+
const msg = 'package.json: `type` is set to "commonjs". Future versions of pkg-utils will require `"type": "module"`. Consider migrating to ES modules to prepare for this change.';
|
|
134
|
+
strictOptions2.preferModuleType === "error" ? (shouldError = !0, logger.error(msg)) : logger.warn(msg);
|
|
135
|
+
}
|
|
136
|
+
} else {
|
|
137
|
+
const msg = 'package.json: `type` field is missing. Future versions of pkg-utils will require `"type": "module"`. Consider adding `"type": "module"` to prepare for this change.';
|
|
138
|
+
strictOptions2.preferModuleType === "error" ? (shouldError = !0, logger.error(msg)) : logger.warn(msg);
|
|
139
|
+
}
|
|
140
|
+
if (strictOptions2.noPackageJsonMain !== "off" && pkg.main) {
|
|
141
|
+
const msg = "package.json: the `main` field is no longer needed. All modern versions of Node.js and bundlers support the `exports` field. Remove the `main` field and use `exports` instead.";
|
|
142
|
+
strictOptions2.noPackageJsonMain === "error" ? (shouldError = !0, logger.error(msg)) : logger.warn(msg);
|
|
143
|
+
}
|
|
144
|
+
if (strictOptions2.noPackageJsonModule !== "off" && pkg.module) {
|
|
145
|
+
const msg = "package.json: the `module` field is no longer needed. All modern versions of Node.js and bundlers support the `exports` field. Remove the `module` field and use `exports` instead.";
|
|
146
|
+
strictOptions2.noPackageJsonModule === "error" ? (shouldError = !0, logger.error(msg)) : logger.warn(msg);
|
|
147
|
+
}
|
|
148
|
+
if (strictOptions2.noPackageJsonBrowser !== "off" && pkg.browser) {
|
|
149
|
+
const msg = "package.json: the `browser` field is no longer needed. Use the `browser` condition in `exports` instead for better support across modern bundlers.";
|
|
150
|
+
strictOptions2.noPackageJsonBrowser === "error" ? (shouldError = !0, logger.error(msg)) : logger.warn(msg);
|
|
151
|
+
}
|
|
152
|
+
if (strictOptions2.noPackageJsonTypesVersions !== "off" && pkg.typesVersions) {
|
|
153
|
+
const msg = "package.json: the `typesVersions` field is no longer needed. TypeScript has long supported conditional exports and the `types` condition. Remove the `typesVersions` field and use the `types` condition in `exports` instead.";
|
|
154
|
+
strictOptions2.noPackageJsonTypesVersions === "error" ? (shouldError = !0, logger.error(msg)) : logger.warn(msg);
|
|
155
|
+
}
|
|
156
|
+
}
|
|
157
|
+
if (pkg.exports) {
|
|
132
158
|
const _exports = Object.entries(pkg.exports);
|
|
133
159
|
for (const [expPath, exp] of _exports) {
|
|
134
160
|
if (typeof exp == "string" || "svelte" in exp)
|
|
@@ -276,14 +302,14 @@ function isTruthy$1(value) {
|
|
|
276
302
|
return !!value;
|
|
277
303
|
}
|
|
278
304
|
function parseExports(options) {
|
|
279
|
-
const { cwd, pkg, strict, strictOptions: strictOptions2, logger } = options, type = pkg.type || "commonjs", errors = [], report = (kind, message) => {
|
|
305
|
+
const { cwd, pkg, strict: strict2, strictOptions: strictOptions2, logger } = options, type = pkg.type || "commonjs", errors = [], report = (kind, message) => {
|
|
280
306
|
kind === "warn" ? logger.warn(message) : errors.push(message);
|
|
281
307
|
};
|
|
282
|
-
if (!
|
|
308
|
+
if (!Array.isArray(pkg.files) && strict2 && strictOptions2.alwaysPackageJsonFiles !== "off" && report(
|
|
283
309
|
strictOptions2.alwaysPackageJsonFiles,
|
|
284
310
|
"package.json: `files` should be used over `.npmignore`"
|
|
285
311
|
), pkg.source) {
|
|
286
|
-
if (
|
|
312
|
+
if (strict2 && pkg.exports?.["."] && typeof pkg.exports["."] == "object" && "source" in pkg.exports["."] && pkg.exports["."].source === pkg.source)
|
|
287
313
|
errors.push(
|
|
288
314
|
'package.json: the "source" property can be removed, as it is equal to exports["."].source.'
|
|
289
315
|
);
|
|
@@ -342,10 +368,10 @@ function parseExports(options) {
|
|
|
342
368
|
- `)
|
|
343
369
|
);
|
|
344
370
|
const _exports = [];
|
|
345
|
-
|
|
371
|
+
strict2 && strictOptions2.noPackageJsonTypings !== "off" && "typings" in pkg && report(strictOptions2.noPackageJsonTypings, "package.json: `typings` should be `types`"), strict2 && strictOptions2.alwaysPackageJsonTypes !== "off" && !pkg.types && typeof pkg.exports?.["."] == "object" && "source" in pkg.exports["."] && pkg.exports["."].source?.endsWith(".ts") && report(
|
|
346
372
|
strictOptions2.alwaysPackageJsonTypes,
|
|
347
373
|
"package.json: `types` must be declared for the npm listing to show as a TypeScript module."
|
|
348
|
-
),
|
|
374
|
+
), strict2 && !pkg.exports["./package.json"] && errors.push('package.json: `exports["./package.json"] must be declared.');
|
|
349
375
|
for (const [exportPath, exportEntry] of Object.entries(pkg.exports))
|
|
350
376
|
if (exportPath.endsWith(".json") || typeof exportEntry == "string" && exportEntry.endsWith(".json"))
|
|
351
377
|
exportPath === "./package.json" && exportEntry !== "./package.json" && errors.push('package.json: `exports["./package.json"]` must be "./package.json".');
|
|
@@ -382,10 +408,10 @@ function isPkgExport(value) {
|
|
|
382
408
|
return isRecord(value) && "source" in value && typeof value.source == "string";
|
|
383
409
|
}
|
|
384
410
|
async function loadTSConfig(options) {
|
|
385
|
-
const { cwd, tsconfigPath } = options, configPath = ts.findConfigFile(cwd,
|
|
411
|
+
const { cwd, tsconfigPath } = options, configPath = ts.findConfigFile(cwd, ts.sys.fileExists, tsconfigPath);
|
|
386
412
|
if (!configPath)
|
|
387
413
|
return;
|
|
388
|
-
const configFile = ts.readConfigFile(configPath,
|
|
414
|
+
const configFile = ts.readConfigFile(configPath, ts.sys.readFile);
|
|
389
415
|
return ts.parseJsonConfigFileContent(configFile.config, ts.sys, cwd);
|
|
390
416
|
}
|
|
391
417
|
function resolveBrowserTarget(versions) {
|
|
@@ -405,15 +431,23 @@ const toggle = z.union([z.literal("error"), z.literal("warn"), z.literal("off")]
|
|
|
405
431
|
noImplicitSideEffects: toggle.default("warn"),
|
|
406
432
|
noImplicitBrowsersList: toggle.default("warn"),
|
|
407
433
|
alwaysPackageJsonTypes: toggle.default("error"),
|
|
408
|
-
alwaysPackageJsonMain: toggle.default("error"),
|
|
409
434
|
alwaysPackageJsonFiles: toggle.default("error"),
|
|
410
|
-
noCheckTypes: toggle.default("warn")
|
|
435
|
+
noCheckTypes: toggle.default("warn"),
|
|
436
|
+
noPackageJsonMain: toggle.default("warn"),
|
|
437
|
+
noPackageJsonModule: toggle.default("warn"),
|
|
438
|
+
noPackageJsonBrowser: toggle.default("warn"),
|
|
439
|
+
noPackageJsonTypesVersions: toggle.default("warn"),
|
|
440
|
+
preferModuleType: toggle.default("warn")
|
|
411
441
|
}).strict(), validationSchema = z.object({
|
|
412
442
|
strictOptions: strictOptions.default({})
|
|
413
443
|
});
|
|
414
444
|
function parseStrictOptions(input) {
|
|
415
445
|
return validationSchema.parse({ strictOptions: input }, { errorMap }).strictOptions;
|
|
416
446
|
}
|
|
447
|
+
var strict = /* @__PURE__ */ Object.freeze({
|
|
448
|
+
__proto__: null,
|
|
449
|
+
parseStrictOptions
|
|
450
|
+
});
|
|
417
451
|
function isTruthy(value) {
|
|
418
452
|
return !!value;
|
|
419
453
|
}
|
|
@@ -424,7 +458,7 @@ async function resolveBuildContext(options) {
|
|
|
424
458
|
emitDeclarationOnly = !1,
|
|
425
459
|
logger,
|
|
426
460
|
pkg,
|
|
427
|
-
strict,
|
|
461
|
+
strict: strict2,
|
|
428
462
|
tsconfig: tsconfigPath
|
|
429
463
|
} = options, tsconfig = await loadTSConfig({ cwd, tsconfigPath }), strictOptions2 = parseStrictOptions(config2?.strictOptions ?? {});
|
|
430
464
|
if (strictOptions2.noCheckTypes !== "off" && tsconfig?.options && config2?.dts !== "rolldown" && tsconfig.options.noCheck !== !1 && !tsconfig.options.noCheck) {
|
|
@@ -438,7 +472,7 @@ async function resolveBuildContext(options) {
|
|
|
438
472
|
}
|
|
439
473
|
let browserslist2 = pkg.browserslist;
|
|
440
474
|
if (!browserslist2) {
|
|
441
|
-
if (
|
|
475
|
+
if (strict2 && strictOptions2.noImplicitBrowsersList !== "off") {
|
|
442
476
|
if (strictOptions2.noImplicitBrowsersList === "error")
|
|
443
477
|
throw new Error(
|
|
444
478
|
'\n- package.json: "browserslist" is missing, set it to `"browserslist": "extends @sanity/browserslist-config"`'
|
|
@@ -450,7 +484,7 @@ async function resolveBuildContext(options) {
|
|
|
450
484
|
browserslist2 = DEFAULT_BROWSERSLIST_QUERY;
|
|
451
485
|
}
|
|
452
486
|
const targetVersions = browserslistToEsbuild(browserslist2);
|
|
453
|
-
if (
|
|
487
|
+
if (strict2 && strictOptions2.noImplicitSideEffects !== "off" && typeof pkg.sideEffects > "u") {
|
|
454
488
|
const msg = "package.json: `sideEffects` is missing, see https://webpack.js.org/guides/tree-shaking/#clarifying-tree-shaking-and-sideeffects for how to define `sideEffects`";
|
|
455
489
|
if (strictOptions2.noImplicitSideEffects === "error")
|
|
456
490
|
throw new Error(msg);
|
|
@@ -468,7 +502,7 @@ async function resolveBuildContext(options) {
|
|
|
468
502
|
}, parsedExports = parseExports({
|
|
469
503
|
cwd,
|
|
470
504
|
pkg,
|
|
471
|
-
strict,
|
|
505
|
+
strict: strict2,
|
|
472
506
|
strictOptions: strictOptions2,
|
|
473
507
|
logger
|
|
474
508
|
}).reduce(
|
|
@@ -512,7 +546,7 @@ async function resolveBuildContext(options) {
|
|
|
512
546
|
logger,
|
|
513
547
|
pkg,
|
|
514
548
|
runtime: config2?.runtime ?? "*",
|
|
515
|
-
strict,
|
|
549
|
+
strict: strict2,
|
|
516
550
|
target,
|
|
517
551
|
ts: {
|
|
518
552
|
config: tsconfig,
|
|
@@ -554,6 +588,7 @@ export {
|
|
|
554
588
|
parseStrictOptions,
|
|
555
589
|
pkgExtMap,
|
|
556
590
|
resolveBuildContext,
|
|
557
|
-
resolveConfigProperty
|
|
591
|
+
resolveConfigProperty,
|
|
592
|
+
strict
|
|
558
593
|
};
|
|
559
594
|
//# sourceMappingURL=consoleSpy.js.map
|