@sanity/pkg-utils 6.2.1 → 6.4.0

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,9 +1,9 @@
1
1
  "use strict";
2
- var consoleSpy = require("./consoleSpy.cjs"), logger = require("./logger.cjs"), fs = require("node:fs"), path = require("node:path"), chalk = require("chalk"), index = require("./index.cjs");
2
+ var path = require("node:path"), rimraf = require("rimraf"), consoleSpy = require("./consoleSpy.cjs"), logger = require("./logger.cjs"), fs = require("node:fs"), chalk = require("chalk"), index = require("./index.cjs");
3
3
  function _interopDefaultCompat(e) {
4
4
  return e && typeof e == "object" && "default" in e ? e : { default: e };
5
5
  }
6
- var fs__default = /* @__PURE__ */ _interopDefaultCompat(fs), path__default = /* @__PURE__ */ _interopDefaultCompat(path), chalk__default = /* @__PURE__ */ _interopDefaultCompat(chalk);
6
+ var path__default = /* @__PURE__ */ _interopDefaultCompat(path), rimraf__default = /* @__PURE__ */ _interopDefaultCompat(rimraf), fs__default = /* @__PURE__ */ _interopDefaultCompat(fs), chalk__default = /* @__PURE__ */ _interopDefaultCompat(chalk);
7
7
  function resolveBuildTasks(ctx) {
8
8
  const { config, cwd, pkg, target } = ctx, bundles = config?.bundles || [], tasks = [], exports2 = Object.entries(ctx.exports || {}).map(
9
9
  ([_path, exp]) => ({ _path, ...exp })
@@ -148,7 +148,13 @@ function createSpinner(msg) {
148
148
  };
149
149
  }
150
150
  async function build(options) {
151
- const { cwd, emitDeclarationOnly, strict = !1, tsconfig: tsconfigOption } = options, logger$1 = logger.createLogger(), config = await consoleSpy.loadConfig({ cwd }), legacyExports = config?.legacyExports ?? !1, pkg = await consoleSpy.loadPkgWithReporting({ cwd, logger: logger$1, strict, legacyExports }), tsconfig = tsconfigOption || config?.tsconfig || "tsconfig.json", ctx = await consoleSpy.resolveBuildContext({
151
+ const {
152
+ cwd,
153
+ emitDeclarationOnly,
154
+ strict = !1,
155
+ tsconfig: tsconfigOption,
156
+ clean = !1
157
+ } = options, logger$1 = logger.createLogger(), config = await consoleSpy.loadConfig({ cwd }), legacyExports = config?.legacyExports ?? !1, pkg = await consoleSpy.loadPkgWithReporting({ cwd, logger: logger$1, strict, legacyExports }), tsconfig = tsconfigOption || config?.tsconfig || "tsconfig.json", ctx = await consoleSpy.resolveBuildContext({
152
158
  config,
153
159
  cwd,
154
160
  emitDeclarationOnly,
@@ -156,7 +162,11 @@ async function build(options) {
156
162
  pkg,
157
163
  strict,
158
164
  tsconfig
159
- }), buildTasks = resolveBuildTasks(ctx);
165
+ });
166
+ clean && (logger$1.log(
167
+ `Cleaning the contents of the \`dist\` folder: './${path__default.default.relative(cwd, ctx.distPath)}'`
168
+ ), await rimraf__default.default(ctx.distPath));
169
+ const buildTasks = resolveBuildTasks(ctx);
160
170
  for (const task of buildTasks) {
161
171
  const handler = index.buildTaskHandlers[task.type], taskName = handler.name(ctx, task), spinner = createSpinner(taskName);
162
172
  try {
@@ -1 +1 @@
1
- {"version":3,"file":"build.cjs","sources":["../../src/node/resolveBuildTasks.ts","../../src/node/spinner.ts","../../src/node/build.ts"],"sourcesContent":["import fs from 'node:fs'\nimport path from 'node:path'\n\nimport type {BuildContext, PkgExport, PkgFormat, PkgRuntime} from './core'\nimport type {BuildTask, DtsTask, RollupLegacyTask, RollupTask, RollupTaskEntry} from './tasks'\nimport {fileEnding, getTargetPaths, legacyEnding} from './tasks/dts/getTargetPaths'\n\n/** @internal */\nexport function resolveBuildTasks(ctx: BuildContext): BuildTask[] {\n const {config, cwd, 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 rollupTasks: Record<string, RollupTask> = {}\n const rollupLegacyTasks: Record<string, RollupLegacyTask> = {}\n\n function addRollupTaskEntry(format: PkgFormat, runtime: PkgRuntime, entry: RollupTaskEntry) {\n const buildId = `${format}:${runtime}`\n\n if (rollupTasks[buildId]) {\n rollupTasks[buildId].entries.push(entry)\n } else {\n rollupTasks[buildId] = {\n type: 'build:js',\n buildId,\n entries: [entry],\n runtime,\n format,\n target: target[runtime],\n }\n }\n }\n\n function addRollupLegacyTaskEntry(runtime: PkgRuntime, entry: RollupTaskEntry) {\n const buildId = `esm:${runtime}`\n\n if (rollupLegacyTasks[buildId]) {\n rollupLegacyTasks[buildId].entries.push(entry)\n } else {\n rollupLegacyTasks[buildId] = {\n type: 'build:legacy',\n buildId,\n entries: [entry],\n runtime,\n format: 'esm',\n // @TODO set a different target here that is compatible with legacy bundlers and testing tools like brownfield jest\n target: target[runtime],\n }\n }\n }\n\n // Parse `dts` tasks\n for (const exp of exports) {\n const importId = path.join(pkg.name, exp._path)\n\n if (exp.source?.endsWith('.ts')) {\n dtsTask.entries.push({\n importId,\n exportPath: exp._path,\n sourcePath: exp.source,\n targetPaths: getTargetPaths(pkg.type, exp),\n })\n }\n\n if (exp.browser?.source?.endsWith('.ts')) {\n dtsTask.entries.push({\n importId,\n exportPath: exp._path,\n sourcePath: exp.browser.source,\n targetPaths: getTargetPaths(pkg.type, exp.browser),\n })\n }\n\n if (exp.node?.source?.endsWith('.ts')) {\n dtsTask.entries.push({\n importId,\n exportPath: exp._path,\n sourcePath: exp.node.source,\n targetPaths: getTargetPaths(pkg.type, exp.node),\n })\n }\n }\n\n // 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 if (!ctx.emitDeclarationOnly) {\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 // Create rollup bundles that legacy export files will re-export\n if (config?.legacyExports) {\n for (const exp of exports) {\n const runtime = exp.browser?.import ? 'browser' : ctx.runtime\n const output = exp.browser?.import || exp.import\n\n if (!output) continue\n\n // Change the suffix to what the legacy exports will use\n const legacyOutput = output.replace(fileEnding, legacyEnding)\n\n addRollupLegacyTaskEntry(runtime, {\n path: exp._path,\n source: exp.browser?.source || exp.source,\n output: legacyOutput,\n })\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 tasks.push(...Object.values(rollupTasks), ...Object.values(rollupLegacyTasks))\n\n // Write legacy exports files\n if (config?.legacyExports) {\n for (const exp of exports) {\n if (exp._exported && exp._path !== '.') {\n const output = (exp.browser?.import || exp.import || '').replace(fileEnding, legacyEnding)\n const relativeTargetPath = output.replace(/\\.[^/.]+$/, '')\n\n if (relativeTargetPath) {\n fs.writeFileSync(\n path.resolve(cwd, `${exp._path}.js`),\n ['// AUTO-GENERATED – DO NOT EDIT', `export * from '${relativeTargetPath}'`, ''].join(\n '\\n',\n ),\n )\n }\n }\n }\n }\n }\n\n return tasks\n}\n","/* eslint-disable no-console */\n\nimport chalk from 'chalk'\n\nexport function createSpinner(msg: string): {complete: () => void; error: () => void} {\n const startTime = Date.now()\n\n console.log(msg)\n\n return {\n complete: () => {\n console.log(`${chalk.green('[success]')} ${chalk.gray(`${Date.now() - startTime}ms`)}`)\n },\n error: () => {\n console.log(`${chalk.red('[error]')} ${chalk.gray(`${Date.now() - startTime}ms`)}`)\n },\n }\n}\n","import {loadConfig, loadPkgWithReporting} from './core'\nimport {createLogger} from './logger'\nimport {resolveBuildContext} from './resolveBuildContext'\nimport {resolveBuildTasks} from './resolveBuildTasks'\nimport {createSpinner} from './spinner'\nimport {type BuildTask, buildTaskHandlers, type TaskHandler} from './tasks'\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}): Promise<void> {\n const {cwd, emitDeclarationOnly, strict = false, tsconfig: tsconfigOption} = options\n const logger = createLogger()\n\n const config = await loadConfig({cwd})\n const legacyExports = config?.legacyExports ?? false\n const pkg = await loadPkgWithReporting({cwd, logger, strict, legacyExports})\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 const buildTasks = resolveBuildTasks(ctx)\n\n for (const task of buildTasks) {\n const handler = buildTaskHandlers[task.type] as TaskHandler<BuildTask>\n const taskName = handler.name(ctx, task)\n\n const spinner = createSpinner(taskName)\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","path","getTargetPaths","fileEnding","legacyEnding","fs","chalk","logger","createLogger","loadConfig","loadPkgWithReporting","resolveBuildContext","buildTaskHandlers"],"mappings":"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"}
1
+ {"version":3,"file":"build.cjs","sources":["../../src/node/resolveBuildTasks.ts","../../src/node/spinner.ts","../../src/node/build.ts"],"sourcesContent":["import fs from 'node:fs'\nimport path from 'node:path'\n\nimport type {BuildContext, PkgExport, PkgFormat, PkgRuntime} from './core'\nimport type {BuildTask, DtsTask, RollupLegacyTask, RollupTask, RollupTaskEntry} from './tasks'\nimport {fileEnding, getTargetPaths, legacyEnding} from './tasks/dts/getTargetPaths'\n\n/** @internal */\nexport function resolveBuildTasks(ctx: BuildContext): BuildTask[] {\n const {config, cwd, 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 rollupTasks: Record<string, RollupTask> = {}\n const rollupLegacyTasks: Record<string, RollupLegacyTask> = {}\n\n function addRollupTaskEntry(format: PkgFormat, runtime: PkgRuntime, entry: RollupTaskEntry) {\n const buildId = `${format}:${runtime}`\n\n if (rollupTasks[buildId]) {\n rollupTasks[buildId].entries.push(entry)\n } else {\n rollupTasks[buildId] = {\n type: 'build:js',\n buildId,\n entries: [entry],\n runtime,\n format,\n target: target[runtime],\n }\n }\n }\n\n function addRollupLegacyTaskEntry(runtime: PkgRuntime, entry: RollupTaskEntry) {\n const buildId = `esm:${runtime}`\n\n if (rollupLegacyTasks[buildId]) {\n rollupLegacyTasks[buildId].entries.push(entry)\n } else {\n rollupLegacyTasks[buildId] = {\n type: 'build:legacy',\n buildId,\n entries: [entry],\n runtime,\n format: 'esm',\n // @TODO set a different target here that is compatible with legacy bundlers and testing tools like brownfield jest\n target: target[runtime],\n }\n }\n }\n\n // Parse `dts` tasks\n for (const exp of exports) {\n const importId = path.join(pkg.name, exp._path)\n\n if (exp.source?.endsWith('.ts')) {\n dtsTask.entries.push({\n importId,\n exportPath: exp._path,\n sourcePath: exp.source,\n targetPaths: getTargetPaths(pkg.type, exp),\n })\n }\n\n if (exp.browser?.source?.endsWith('.ts')) {\n dtsTask.entries.push({\n importId,\n exportPath: exp._path,\n sourcePath: exp.browser.source,\n targetPaths: getTargetPaths(pkg.type, exp.browser),\n })\n }\n\n if (exp.node?.source?.endsWith('.ts')) {\n dtsTask.entries.push({\n importId,\n exportPath: exp._path,\n sourcePath: exp.node.source,\n targetPaths: getTargetPaths(pkg.type, exp.node),\n })\n }\n }\n\n // 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 if (!ctx.emitDeclarationOnly) {\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 // Create rollup bundles that legacy export files will re-export\n if (config?.legacyExports) {\n for (const exp of exports) {\n const runtime = exp.browser?.import ? 'browser' : ctx.runtime\n const output = exp.browser?.import || exp.import\n\n if (!output) continue\n\n // Change the suffix to what the legacy exports will use\n const legacyOutput = output.replace(fileEnding, legacyEnding)\n\n addRollupLegacyTaskEntry(runtime, {\n path: exp._path,\n source: exp.browser?.source || exp.source,\n output: legacyOutput,\n })\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 tasks.push(...Object.values(rollupTasks), ...Object.values(rollupLegacyTasks))\n\n // Write legacy exports files\n if (config?.legacyExports) {\n for (const exp of exports) {\n if (exp._exported && exp._path !== '.') {\n const output = (exp.browser?.import || exp.import || '').replace(fileEnding, legacyEnding)\n const relativeTargetPath = output.replace(/\\.[^/.]+$/, '')\n\n if (relativeTargetPath) {\n fs.writeFileSync(\n path.resolve(cwd, `${exp._path}.js`),\n ['// AUTO-GENERATED – DO NOT EDIT', `export * from '${relativeTargetPath}'`, ''].join(\n '\\n',\n ),\n )\n }\n }\n }\n }\n }\n\n return tasks\n}\n","/* eslint-disable no-console */\n\nimport chalk from 'chalk'\n\nexport function createSpinner(msg: string): {complete: () => void; error: () => void} {\n const startTime = Date.now()\n\n console.log(msg)\n\n return {\n complete: () => {\n console.log(`${chalk.green('[success]')} ${chalk.gray(`${Date.now() - startTime}ms`)}`)\n },\n error: () => {\n console.log(`${chalk.red('[error]')} ${chalk.gray(`${Date.now() - startTime}ms`)}`)\n },\n }\n}\n","import path from 'node:path'\n\nimport rimraf from 'rimraf'\n\nimport {loadConfig, loadPkgWithReporting} from './core'\nimport {createLogger} from './logger'\nimport {resolveBuildContext} from './resolveBuildContext'\nimport {resolveBuildTasks} from './resolveBuildTasks'\nimport {createSpinner} from './spinner'\nimport {type BuildTask, buildTaskHandlers, type TaskHandler} from './tasks'\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}): Promise<void> {\n const {\n cwd,\n emitDeclarationOnly,\n strict = false,\n tsconfig: tsconfigOption,\n clean = false,\n } = options\n const logger = createLogger()\n\n const config = await loadConfig({cwd})\n\n const legacyExports = config?.legacyExports ?? false\n const pkg = await loadPkgWithReporting({cwd, logger, strict, legacyExports})\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 logger.log(\n `Cleaning the contents of the \\`dist\\` folder: './${path.relative(cwd, ctx.distPath)}'`,\n )\n await rimraf(ctx.distPath)\n }\n\n const buildTasks = resolveBuildTasks(ctx)\n\n for (const task of buildTasks) {\n const handler = buildTaskHandlers[task.type] as TaskHandler<BuildTask>\n const taskName = handler.name(ctx, task)\n\n const spinner = createSpinner(taskName)\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","path","getTargetPaths","fileEnding","legacyEnding","fs","chalk","logger","createLogger","loadConfig","loadPkgWithReporting","resolveBuildContext","rimraf","buildTaskHandlers"],"mappings":"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"}
@@ -6,7 +6,8 @@ async function buildAction(options) {
6
6
  cwd: process.cwd(),
7
7
  emitDeclarationOnly: options.emitDeclarationOnly,
8
8
  strict: options.strict,
9
- tsconfig: options.tsconfig
9
+ tsconfig: options.tsconfig,
10
+ clean: options.clean
10
11
  });
11
12
  } catch (err) {
12
13
  handleError.handleError(err);
@@ -1 +1 @@
1
- {"version":3,"file":"buildAction.cjs","sources":["../../src/cli/buildAction.ts"],"sourcesContent":["import {build} from '../node/build'\nimport {handleError} from './handleError'\n\nexport async function buildAction(options: {\n emitDeclarationOnly?: boolean\n strict?: boolean\n tsconfig?: string\n}): Promise<void> {\n try {\n await build({\n cwd: process.cwd(),\n emitDeclarationOnly: options.emitDeclarationOnly,\n strict: options.strict,\n tsconfig: options.tsconfig,\n })\n } catch (err) {\n handleError(err)\n }\n}\n"],"names":["build","handleError"],"mappings":";;AAGA,eAAsB,YAAY,SAIhB;AACZ,MAAA;AACF,UAAMA,YAAM;AAAA,MACV,KAAK,QAAQ,IAAI;AAAA,MACjB,qBAAqB,QAAQ;AAAA,MAC7B,QAAQ,QAAQ;AAAA,MAChB,UAAU,QAAQ;AAAA,IAAA,CACnB;AAAA,WACM,KAAK;AACZC,gBAAA,YAAY,GAAG;AAAA,EACjB;AACF;;"}
1
+ {"version":3,"file":"buildAction.cjs","sources":["../../src/cli/buildAction.ts"],"sourcesContent":["import {build} from '../node/build'\nimport {handleError} from './handleError'\n\nexport async function buildAction(options: {\n emitDeclarationOnly?: boolean\n strict?: boolean\n tsconfig?: string\n clean?: boolean\n}): Promise<void> {\n try {\n await build({\n cwd: process.cwd(),\n emitDeclarationOnly: options.emitDeclarationOnly,\n strict: options.strict,\n tsconfig: options.tsconfig,\n clean: options.clean,\n })\n } catch (err) {\n handleError(err)\n }\n}\n"],"names":["build","handleError"],"mappings":";;AAGA,eAAsB,YAAY,SAKhB;AACZ,MAAA;AACF,UAAMA,YAAM;AAAA,MACV,KAAK,QAAQ,IAAI;AAAA,MACjB,qBAAqB,QAAQ;AAAA,MAC7B,QAAQ,QAAQ;AAAA,MAChB,UAAU,QAAQ;AAAA,MAClB,OAAO,QAAQ;AAAA,IAAA,CAChB;AAAA,WACM,KAAK;AACZC,gBAAA,YAAY,GAAG;AAAA,EACjB;AACF;;"}
package/dist/cli.cjs CHANGED
@@ -3,7 +3,7 @@ var cac = require("cac");
3
3
  function _interopDefaultCompat(e) {
4
4
  return e && typeof e == "object" && "default" in e ? e : { default: e };
5
5
  }
6
- var cac__default = /* @__PURE__ */ _interopDefaultCompat(cac), version = "6.2.1";
6
+ var cac__default = /* @__PURE__ */ _interopDefaultCompat(cac), version = "6.4.0";
7
7
  const cli = cac__default.default();
8
8
  cli.command("", "Check").alias("check").option("--strict", "Strict mode").option("--tsconfig [tsconfig]", "[string] tsconfig.json").action(async (options) => {
9
9
  const { checkAction } = await Promise.resolve().then(function() {
@@ -11,11 +11,19 @@ cli.command("", "Check").alias("check").option("--strict", "Strict mode").option
11
11
  });
12
12
  return checkAction(options);
13
13
  });
14
- cli.command("build", "Build package").option("--emitDeclarationOnly", "Emit d.ts only").option("--strict", "Strict mode").option("--tsconfig [tsconfig]", "[string] tsconfig.json").action(async (options) => {
15
- const { buildAction } = await Promise.resolve().then(function() {
14
+ cli.command("build", "Build package").option("--emitDeclarationOnly", "Emit d.ts only").option("--strict", "Strict mode").option("--tsconfig [tsconfig]", "[string] tsconfig.json").option("--check", "Run the check command after build (same as running `pkg build && pkg check`)").option("--clean", "Clean the dist directory before building").action(async (options) => {
15
+ const { check = !1, ...buildOptions } = options, { buildAction } = await Promise.resolve().then(function() {
16
16
  return require("./_chunks-cjs/buildAction.cjs");
17
17
  });
18
- return buildAction(options);
18
+ if (await buildAction(buildOptions), check) {
19
+ const { checkAction } = await Promise.resolve().then(function() {
20
+ return require("./_chunks-cjs/checkAction.cjs");
21
+ });
22
+ await checkAction({
23
+ strict: options.strict,
24
+ tsconfig: options.tsconfig
25
+ });
26
+ }
19
27
  });
20
28
  cli.command("init [path]", "Initialize package").action(async (p) => {
21
29
  const { initAction } = await Promise.resolve().then(function() {
package/dist/cli.cjs.map CHANGED
@@ -1 +1 @@
1
- {"version":3,"file":"cli.cjs","sources":["../src/cli/index.ts"],"sourcesContent":["import cac from 'cac'\n\nimport {version} from '../../package.json'\n\nconst cli = cac()\n\ncli\n .command('', 'Check')\n .alias('check') // alias to align with the action name\n .option('--strict', 'Strict mode')\n .option('--tsconfig [tsconfig]', '[string] tsconfig.json')\n .action(async (options) => {\n const {checkAction} = await import('./checkAction')\n\n return checkAction(options)\n })\n\ncli\n .command('build', 'Build package')\n .option('--emitDeclarationOnly', 'Emit d.ts only')\n .option('--strict', 'Strict mode')\n .option('--tsconfig [tsconfig]', '[string] tsconfig.json')\n .action(async (options) => {\n const {buildAction} = await import('./buildAction')\n\n return buildAction(options)\n })\n\ncli.command('init [path]', 'Initialize package').action(async (p) => {\n const {initAction} = await import('./initAction')\n\n return initAction({\n path: p,\n })\n})\n\ncli\n .command('watch', 'Watch package')\n .option('--strict', 'Strict mode')\n .option('--tsconfig [tsconfig]', '[string] tsconfig.json')\n .action(async (options) => {\n const {watchAction} = await import('./watchAction')\n\n return watchAction(options)\n })\n\n// Display help message when `-h` or `--help` appears\ncli.help()\n\n// Display version number when `-v` or `--version` appears\n// It's also used in help message\ncli.version(version)\n\ncli.parse()\n"],"names":["cac"],"mappings":";;;;;;AAIA,MAAM,MAAMA,aAAI,QAAA;AAEhB,IACG,QAAQ,IAAI,OAAO,EACnB,MAAM,OAAO,EACb,OAAO,YAAY,aAAa,EAChC,OAAO,yBAAyB,wBAAwB,EACxD,OAAO,OAAO,YAAY;AACzB,QAAM,EAAC,YAAA,IAAe,MAAM,QAAA,QAAA,EAAA,KAAA,WAAA;AAAA,WAAA,QAAO,+BAAe;AAAA,EAAA,CAAA;AAElD,SAAO,YAAY,OAAO;AAC5B,CAAC;AAEH,IACG,QAAQ,SAAS,eAAe,EAChC,OAAO,yBAAyB,gBAAgB,EAChD,OAAO,YAAY,aAAa,EAChC,OAAO,yBAAyB,wBAAwB,EACxD,OAAO,OAAO,YAAY;AACzB,QAAM,EAAC,YAAA,IAAe,MAAM,QAAA,QAAA,EAAA,KAAA,WAAA;AAAA,WAAA,QAAO,+BAAe;AAAA,EAAA,CAAA;AAElD,SAAO,YAAY,OAAO;AAC5B,CAAC;AAEH,IAAI,QAAQ,eAAe,oBAAoB,EAAE,OAAO,OAAO,MAAM;AACnE,QAAM,EAAC,WAAA,IAAc,MAAM,QAAA,QAAA,EAAA,KAAA,WAAA;AAAA,WAAA,QAAO,8BAAc;AAAA,EAAA,CAAA;AAEhD,SAAO,WAAW;AAAA,IAChB,MAAM;AAAA,EAAA,CACP;AACH,CAAC;AAED,IACG,QAAQ,SAAS,eAAe,EAChC,OAAO,YAAY,aAAa,EAChC,OAAO,yBAAyB,wBAAwB,EACxD,OAAO,OAAO,YAAY;AACzB,QAAM,EAAC,YAAA,IAAe,MAAM,QAAA,QAAA,EAAA,KAAA,WAAA;AAAA,WAAA,QAAO,+BAAe;AAAA,EAAA,CAAA;AAElD,SAAO,YAAY,OAAO;AAC5B,CAAC;AAGH,IAAI,KAAK;AAIT,IAAI,QAAQ,OAAO;AAEnB,IAAI,MAAM;"}
1
+ {"version":3,"file":"cli.cjs","sources":["../src/cli/index.ts"],"sourcesContent":["import cac from 'cac'\n\nimport {version} from '../../package.json'\n\nconst cli = cac()\n\ncli\n .command('', 'Check')\n .alias('check') // alias to align with the action name\n .option('--strict', 'Strict mode')\n .option('--tsconfig [tsconfig]', '[string] tsconfig.json')\n .action(async (options) => {\n const {checkAction} = await import('./checkAction')\n\n return checkAction(options)\n })\n\ncli\n .command('build', 'Build package')\n .option('--emitDeclarationOnly', 'Emit d.ts only')\n .option('--strict', 'Strict mode')\n .option('--tsconfig [tsconfig]', '[string] tsconfig.json')\n .option('--check', 'Run the check command after build (same as running `pkg build && pkg check`)')\n .option('--clean', 'Clean the dist directory before building')\n .action(async (options) => {\n const {check = false, ...buildOptions} = options\n const {buildAction} = await import('./buildAction')\n\n await buildAction(buildOptions)\n\n if (check) {\n const {checkAction} = await import('./checkAction')\n\n await checkAction({\n strict: options.strict,\n tsconfig: options.tsconfig,\n })\n }\n })\n\ncli.command('init [path]', 'Initialize package').action(async (p) => {\n const {initAction} = await import('./initAction')\n\n return initAction({\n path: p,\n })\n})\n\ncli\n .command('watch', 'Watch package')\n .option('--strict', 'Strict mode')\n .option('--tsconfig [tsconfig]', '[string] tsconfig.json')\n .action(async (options) => {\n const {watchAction} = await import('./watchAction')\n\n return watchAction(options)\n })\n\n// Display help message when `-h` or `--help` appears\ncli.help()\n\n// Display version number when `-v` or `--version` appears\n// It's also used in help message\ncli.version(version)\n\ncli.parse()\n"],"names":["cac"],"mappings":";;;;;;AAIA,MAAM,MAAMA,aAAI,QAAA;AAEhB,IACG,QAAQ,IAAI,OAAO,EACnB,MAAM,OAAO,EACb,OAAO,YAAY,aAAa,EAChC,OAAO,yBAAyB,wBAAwB,EACxD,OAAO,OAAO,YAAY;AACzB,QAAM,EAAC,YAAA,IAAe,MAAM,QAAA,QAAA,EAAA,KAAA,WAAA;AAAA,WAAA,QAAO,+BAAe;AAAA,EAAA,CAAA;AAElD,SAAO,YAAY,OAAO;AAC5B,CAAC;AAEH,IACG,QAAQ,SAAS,eAAe,EAChC,OAAO,yBAAyB,gBAAgB,EAChD,OAAO,YAAY,aAAa,EAChC,OAAO,yBAAyB,wBAAwB,EACxD,OAAO,WAAW,8EAA8E,EAChG,OAAO,WAAW,0CAA0C,EAC5D,OAAO,OAAO,YAAY;AACzB,QAAM,EAAC,QAAQ,IAAO,GAAG,aAAY,IAAI,SACnC,EAAC,YAAW,IAAI,MAAM,QAAA,QAAA,EAAA,KAAA,WAAA;AAAA,WAAA,QAAO,+BAAe;AAAA,EAAA,CAAA;AAIlD,MAFA,MAAM,YAAY,YAAY,GAE1B,OAAO;AACT,UAAM,EAAC,YAAA,IAAe,MAAM,QAAA,QAAA,EAAA,KAAA,WAAA;AAAA,aAAA,QAAO,+BAAe;AAAA,IAAA,CAAA;AAElD,UAAM,YAAY;AAAA,MAChB,QAAQ,QAAQ;AAAA,MAChB,UAAU,QAAQ;AAAA,IAAA,CACnB;AAAA,EACH;AACF,CAAC;AAEH,IAAI,QAAQ,eAAe,oBAAoB,EAAE,OAAO,OAAO,MAAM;AACnE,QAAM,EAAC,WAAA,IAAc,MAAM,QAAA,QAAA,EAAA,KAAA,WAAA;AAAA,WAAA,QAAO,8BAAc;AAAA,EAAA,CAAA;AAEhD,SAAO,WAAW;AAAA,IAChB,MAAM;AAAA,EAAA,CACP;AACH,CAAC;AAED,IACG,QAAQ,SAAS,eAAe,EAChC,OAAO,YAAY,aAAa,EAChC,OAAO,yBAAyB,wBAAwB,EACxD,OAAO,OAAO,YAAY;AACzB,QAAM,EAAC,YAAA,IAAe,MAAM,QAAA,QAAA,EAAA,KAAA,WAAA;AAAA,WAAA,QAAO,+BAAe;AAAA,EAAA,CAAA;AAElD,SAAO,YAAY,OAAO;AAC5B,CAAC;AAGH,IAAI,KAAK;AAIT,IAAI,QAAQ,OAAO;AAEnB,IAAI,MAAM;"}
package/dist/index.d.cts CHANGED
@@ -33,6 +33,7 @@ export declare function build(options: {
33
33
  emitDeclarationOnly?: boolean
34
34
  strict?: boolean
35
35
  tsconfig?: string
36
+ clean?: boolean
36
37
  }): Promise<void>
37
38
 
38
39
  /** @internal */
package/dist/index.d.ts CHANGED
@@ -33,6 +33,7 @@ export declare function build(options: {
33
33
  emitDeclarationOnly?: boolean
34
34
  strict?: boolean
35
35
  tsconfig?: string
36
+ clean?: boolean
36
37
  }): Promise<void>
37
38
 
38
39
  /** @internal */
package/dist/index.js CHANGED
@@ -1,4 +1,5 @@
1
1
  import path$1, { relative, resolve, dirname } from "node:path";
2
+ import rimraf from "rimraf";
2
3
  import { register } from "esbuild-register/dist/node";
3
4
  import pkgUp from "pkg-up";
4
5
  import findConfig from "find-config";
@@ -10,7 +11,6 @@ import browserslist from "browserslist";
10
11
  import config from "@sanity/browserslist-config";
11
12
  import ts from "typescript";
12
13
  import { Observable, switchMap } from "rxjs";
13
- import rimraf from "rimraf";
14
14
  import { ExtractorConfig, Extractor } from "@microsoft/api-extractor";
15
15
  import { mkdirp } from "mkdirp";
16
16
  import prettier from "prettier";
@@ -20778,7 +20778,13 @@ const rollupWatchTask = {
20778
20778
  "watch:js": rollupWatchTask
20779
20779
  };
20780
20780
  async function build(options2) {
20781
- const { cwd, emitDeclarationOnly, strict = !1, tsconfig: tsconfigOption } = options2, logger = createLogger(), config2 = await loadConfig({ cwd }), legacyExports = config2?.legacyExports ?? !1, pkg = await loadPkgWithReporting({ cwd, logger, strict, legacyExports }), tsconfig = tsconfigOption || config2?.tsconfig || "tsconfig.json", ctx = await resolveBuildContext({
20781
+ const {
20782
+ cwd,
20783
+ emitDeclarationOnly,
20784
+ strict = !1,
20785
+ tsconfig: tsconfigOption,
20786
+ clean = !1
20787
+ } = options2, logger = createLogger(), config2 = await loadConfig({ cwd }), legacyExports = config2?.legacyExports ?? !1, pkg = await loadPkgWithReporting({ cwd, logger, strict, legacyExports }), tsconfig = tsconfigOption || config2?.tsconfig || "tsconfig.json", ctx = await resolveBuildContext({
20782
20788
  config: config2,
20783
20789
  cwd,
20784
20790
  emitDeclarationOnly,
@@ -20786,7 +20792,11 @@ async function build(options2) {
20786
20792
  pkg,
20787
20793
  strict,
20788
20794
  tsconfig
20789
- }), buildTasks = resolveBuildTasks(ctx);
20795
+ });
20796
+ clean && (logger.log(
20797
+ `Cleaning the contents of the \`dist\` folder: './${path$1.relative(cwd, ctx.distPath)}'`
20798
+ ), await rimraf(ctx.distPath));
20799
+ const buildTasks = resolveBuildTasks(ctx);
20790
20800
  for (const task of buildTasks) {
20791
20801
  const handler = buildTaskHandlers[task.type], taskName = handler.name(ctx, task), spinner = createSpinner(taskName);
20792
20802
  try {