@sanity/pkg-utils 7.2.9 → 7.2.10-canary.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.
@@ -18,7 +18,7 @@ var __toESM = (mod, isNodeMode, target) => (target = mod != null ? __create(__ge
18
18
  isNodeMode || !mod || !mod.__esModule ? __defProp(target, "default", { value: mod, enumerable: !0 }) : target,
19
19
  mod
20
20
  ));
21
- var chalk = require("chalk"), rxjs = require("rxjs"), path = require("node:path"), rimraf = require("rimraf"), ts = require("typescript"), fs = require("node:fs/promises"), apiExtractor = require("@microsoft/api-extractor"), mkdirp = require("mkdirp"), prettier = require("prettier"), tsdocConfig = require("@microsoft/tsdoc-config"), jsoncParser = require("jsonc-parser"), recast = require("recast"), typeScriptParser = require("recast/parsers/typescript.js"), rollup = require("rollup"), consoleSpy = require("./consoleSpy.cjs"), rollupPlugin = require("@optimize-lodash/rollup-plugin"), alias = require("@rollup/plugin-alias"), pluginBabel = require("@rollup/plugin-babel"), commonjs = require("@rollup/plugin-commonjs"), json = require("@rollup/plugin-json"), pluginNodeResolve = require("@rollup/plugin-node-resolve"), replace = require("@rollup/plugin-replace"), terser = require("@rollup/plugin-terser"), esbuild = require("rollup-plugin-esbuild");
21
+ var chalk = require("chalk"), rxjs = require("rxjs"), path = require("node:path"), rimraf = require("rimraf"), ts = require("typescript"), fs = require("node:fs/promises"), apiExtractor = require("@microsoft/api-extractor"), mkdirp = require("mkdirp"), prettier = require("prettier"), tsdocConfig = require("@microsoft/tsdoc-config"), jsoncParser = require("jsonc-parser"), recast = require("recast"), typeScriptParser = require("recast/parsers/typescript.js"), rolldown = require("rolldown"), consoleSpy = require("./consoleSpy.cjs"), rollupPlugin = require("@optimize-lodash/rollup-plugin"), alias = require("@rollup/plugin-alias"), pluginBabel = require("@rollup/plugin-babel"), commonjs = require("@rollup/plugin-commonjs"), json = require("@rollup/plugin-json"), pluginNodeResolve = require("@rollup/plugin-node-resolve"), terser = require("@rollup/plugin-terser"), rolldownPluginDts = require("rolldown-plugin-dts"), esbuild = require("rollup-plugin-esbuild"), rollup = require("rollup"), replace = require("@rollup/plugin-replace");
22
22
  function _interopDefaultCompat(e) {
23
23
  return e && typeof e == "object" && "default" in e ? e : { default: e };
24
24
  }
@@ -37,7 +37,7 @@ function _interopNamespaceCompat(e) {
37
37
  }
38
38
  }), n.default = e, Object.freeze(n);
39
39
  }
40
- var chalk__default = /* @__PURE__ */ _interopDefaultCompat(chalk), path__default = /* @__PURE__ */ _interopDefaultCompat(path), rimraf__namespace = /* @__PURE__ */ _interopNamespaceCompat(rimraf), ts__default = /* @__PURE__ */ _interopDefaultCompat(ts), fs__default = /* @__PURE__ */ _interopDefaultCompat(fs), prettier__namespace = /* @__PURE__ */ _interopNamespaceCompat(prettier), typeScriptParser__default = /* @__PURE__ */ _interopDefaultCompat(typeScriptParser), alias__default = /* @__PURE__ */ _interopDefaultCompat(alias), commonjs__default = /* @__PURE__ */ _interopDefaultCompat(commonjs), json__default = /* @__PURE__ */ _interopDefaultCompat(json), replace__default = /* @__PURE__ */ _interopDefaultCompat(replace), terser__default = /* @__PURE__ */ _interopDefaultCompat(terser), esbuild__default = /* @__PURE__ */ _interopDefaultCompat(esbuild);
40
+ var chalk__default = /* @__PURE__ */ _interopDefaultCompat(chalk), path__default = /* @__PURE__ */ _interopDefaultCompat(path), rimraf__namespace = /* @__PURE__ */ _interopNamespaceCompat(rimraf), ts__default = /* @__PURE__ */ _interopDefaultCompat(ts), fs__default = /* @__PURE__ */ _interopDefaultCompat(fs), prettier__namespace = /* @__PURE__ */ _interopNamespaceCompat(prettier), typeScriptParser__default = /* @__PURE__ */ _interopDefaultCompat(typeScriptParser), alias__default = /* @__PURE__ */ _interopDefaultCompat(alias), commonjs__default = /* @__PURE__ */ _interopDefaultCompat(commonjs), json__default = /* @__PURE__ */ _interopDefaultCompat(json), terser__default = /* @__PURE__ */ _interopDefaultCompat(terser), esbuild__default = /* @__PURE__ */ _interopDefaultCompat(esbuild), replace__default = /* @__PURE__ */ _interopDefaultCompat(replace);
41
41
  function printExtractMessages(ctx, messages) {
42
42
  const { cwd, logger } = ctx, warnings = messages.filter((msg) => msg.logLevel === "warning");
43
43
  warnings.length && logger.log();
@@ -117,7 +117,8 @@ function createApiExtractorConfig(options) {
117
117
  projectFolder,
118
118
  mainEntryPointFilePath,
119
119
  tsconfig,
120
- tsconfigPath
120
+ tsconfigPath,
121
+ dtsRollupEnabled
121
122
  } = options;
122
123
  return {
123
124
  apiReport: {
@@ -140,7 +141,7 @@ function createApiExtractorConfig(options) {
140
141
  apiJsonFilePath: path__default.default.resolve(distPath, `${exportPath}.api.json`)
141
142
  },
142
143
  dtsRollup: {
143
- enabled: !0,
144
+ enabled: dtsRollupEnabled,
144
145
  untrimmedFilePath: path__default.default.resolve(distPath, filePath)
145
146
  // betaTrimmedFilePath: path.resolve(distPath, filePath.replace('.d.ts', '-beta.d.ts')),
146
147
  // publicTrimmedFilePath: path.resolve(distPath, filePath.replace('.d.ts', '-public.d.ts')),
@@ -196,7 +197,7 @@ const LOG_LEVELS = {
196
197
  warn: "warning"
197
198
  };
198
199
  function getExtractMessagesConfig(options) {
199
- const { rules } = options;
200
+ const { rules, disabled = !1 } = options;
200
201
  function ruleToLogLevel(key, defaultLevel) {
201
202
  const r = rules?.[key];
202
203
  return r ? LOG_LEVELS[r] : defaultLevel || "warning";
@@ -204,10 +205,15 @@ function getExtractMessagesConfig(options) {
204
205
  return {
205
206
  compilerMessageReporting: {
206
207
  default: {
207
- logLevel: "warning"
208
+ logLevel: disabled ? "none" : "warning"
208
209
  }
209
210
  },
210
- extractorMessageReporting: {
211
+ extractorMessageReporting: disabled ? {
212
+ default: {
213
+ logLevel: "none",
214
+ addToApiReportFile: !1
215
+ }
216
+ } : {
211
217
  default: {
212
218
  logLevel: "warning",
213
219
  addToApiReportFile: !1
@@ -237,13 +243,21 @@ function getExtractMessagesConfig(options) {
237
243
  addToApiReportFile: !1
238
244
  }
239
245
  },
240
- tsdocMessageReporting: {
246
+ tsdocMessageReporting: disabled ? {
247
+ default: {
248
+ logLevel: "none",
249
+ addToApiReportFile: !1
250
+ }
251
+ } : {
241
252
  default: {
242
253
  logLevel: "warning",
243
254
  addToApiReportFile: !1
244
255
  },
245
256
  "tsdoc-link-tag-unescaped-text": {
246
- logLevel: ruleToLogLevel("tsdoc-link-tag-unescaped-text", "warning"),
257
+ logLevel: ruleToLogLevel(
258
+ "tsdoc-link-tag-unescaped-text",
259
+ "warning"
260
+ ),
247
261
  addToApiReportFile: !1
248
262
  },
249
263
  "tsdoc-undefined-tag": {
@@ -270,7 +284,8 @@ async function extractTypes(options) {
270
284
  sourceTypesPath,
271
285
  tmpPath,
272
286
  tsconfig,
273
- tsconfigPath
287
+ tsconfigPath,
288
+ extractorDisabled
274
289
  } = options, tsdocConfigFile = await createTSDocConfig({
275
290
  customTags: customTags || []
276
291
  }), filePath = filePaths[0].replace(/\.d\.[mc]ts$/, ".d.ts"), shouldCleanUpDts = !filePaths.includes(filePath), extractorConfig = apiExtractor.ExtractorConfig.prepare({
@@ -279,11 +294,12 @@ async function extractTypes(options) {
279
294
  distPath,
280
295
  exportPath,
281
296
  filePath,
282
- messages: getExtractMessagesConfig({ rules }),
297
+ messages: getExtractMessagesConfig({ rules, disabled: extractorDisabled }),
283
298
  projectFolder: projectPath,
284
299
  mainEntryPointFilePath: sourceTypesPath,
285
300
  tsconfig,
286
- tsconfigPath
301
+ tsconfigPath,
302
+ dtsRollupEnabled: !0
287
303
  }),
288
304
  configObjectFullPath: void 0,
289
305
  tsdocConfigFile,
@@ -343,7 +359,8 @@ async function doExtract(ctx, task) {
343
359
  sourceTypesPath,
344
360
  tsconfig: ts2.config,
345
361
  tmpPath,
346
- tsconfigPath: path__default.default.resolve(cwd, ts2.configPath || "tsconfig.json")
362
+ tsconfigPath: path__default.default.resolve(cwd, ts2.configPath || "tsconfig.json"),
363
+ extractorDisabled: config?.extract?.enabled === !1
347
364
  });
348
365
  messages.push(...result.messages);
349
366
  const errors = result.messages.filter((msg) => msg.logLevel === "error");
@@ -354,8 +371,8 @@ async function doExtract(ctx, task) {
354
371
  return await rimraf.rimraf(tmpPath), { type: "dts", messages, results };
355
372
  }
356
373
  const dtsTask = {
357
- name: (_ctx, task) => [
358
- "Build type definitions...",
374
+ name: (ctx, task) => [
375
+ `Build type definitions with ${chalk__default.default.bold(ctx.dts)}...`,
359
376
  " entries:",
360
377
  ...task.entries.map((entry) => entry.targetPaths.map((targetPath) => [
361
378
  ` - ${chalk__default.default.cyan(entry.importId)}: `,
@@ -453,7 +470,8 @@ const dtsTask = {
453
470
  sourceTypesPath,
454
471
  tsconfig: tsContext.config,
455
472
  tmpPath,
456
- tsconfigPath: path__default.default.resolve(cwd, tsContext.configPath || "tsconfig.json")
473
+ tsconfigPath: path__default.default.resolve(cwd, tsContext.configPath || "tsconfig.json"),
474
+ extractorDisabled: config?.extract?.enabled === !1
457
475
  });
458
476
  messages.push(...result.messages), results.push({ sourcePath: path__default.default.resolve(cwd, entry.sourcePath), filePaths: targetPaths });
459
477
  } catch (err) {
@@ -488,6 +506,174 @@ const dtsTask = {
488
506
  err instanceof DtsError ? printExtractMessages(ctx, err.messages) : err instanceof Error && logger.error(err);
489
507
  }
490
508
  };
509
+ function resolveRolldownConfig(ctx, buildTask) {
510
+ const { format, runtime, target } = buildTask, { config, cwd, exports: _exports, external, distPath, logger, pkg, ts: ts2 } = ctx, outputExt = consoleSpy.pkgExtMap[pkg.type || "commonjs"][format], minify = config?.minify ?? !1, outDir = path__default.default.relative(cwd, distPath), pathAliases = Object.fromEntries(
511
+ Object.entries(ts2.config?.options.paths || {}).map(([key, val]) => [key, path__default.default.resolve(cwd, ts2.config?.options.baseUrl || ".", val[0])])
512
+ ), entries = buildTask.entries.map((entry) => ({
513
+ ...entry,
514
+ name: path__default.default.relative(outDir, entry.output).replace(/\.[^/.]+$/, "")
515
+ }), {}), exportIds = _exports && Object.keys(_exports).map((exportPath) => path__default.default.join(pkg.name, exportPath)), sourcePaths = _exports && Object.values(_exports).map((e) => path__default.default.resolve(cwd, e.source)), replacements = Object.fromEntries(
516
+ Object.entries(config?.define || {}).map(([key, val]) => [key, JSON.stringify(val)])
517
+ ), { optimizeLodash: enableOptimizeLodash = hasDependency$1(pkg, "lodash") } = config?.rollup || {};
518
+ [
519
+ alias__default.default({
520
+ entries: { ...pathAliases }
521
+ }),
522
+ pluginNodeResolve.nodeResolve({
523
+ browser: runtime === "browser",
524
+ extensions: [".cjs", ".mjs", ".js", ".jsx", ".json", ".node"],
525
+ preferBuiltins: !0
526
+ }),
527
+ commonjs__default.default(),
528
+ json__default.default(),
529
+ esbuild__default.default({
530
+ target,
531
+ tsconfig: ctx.ts.configPath || "tsconfig.json",
532
+ treeShaking: !0,
533
+ minifySyntax: config?.minify !== !1,
534
+ supported: {
535
+ "template-literal": !0
536
+ }
537
+ }),
538
+ Array.isArray(config?.babel?.plugins) && pluginBabel.getBabelOutputPlugin({
539
+ babelrc: !1,
540
+ plugins: config.babel.plugins
541
+ }),
542
+ enableOptimizeLodash && rollupPlugin.optimizeLodashImports({
543
+ useLodashEs: format === "esm" && hasDependency$1(pkg, "lodash-es") ? !0 : void 0,
544
+ ...typeof config?.rollup?.optimizeLodash == "boolean" ? {} : config?.rollup?.optimizeLodash
545
+ }),
546
+ minify && terser__default.default({
547
+ compress: { directives: !1, passes: 10 },
548
+ ecma: 2020,
549
+ output: {
550
+ comments: (_node, comment) => {
551
+ const text = comment.value;
552
+ return comment.type === "comment2" ? /@preserve|@license|@cc_on/i.test(text) : !1;
553
+ },
554
+ preserve_annotations: !0
555
+ }
556
+ })
557
+ ].filter(Boolean);
558
+ const hashChunkFileNames = config?.rollup?.hashChunkFileNames ?? !1, chunkFileNames = `${hashChunkFileNames ? "_chunks" : "_chunks-[format]"}/${hashChunkFileNames ? "[name]-[hash]" : "[name]"}${outputExt}`, entryFileNames = `[name]${outputExt}`, inputOptions = {
559
+ cwd,
560
+ jsx: {
561
+ mode: config?.jsx === "automatic" ? "automatic" : config?.jsx === "preserve" ? "preserve" : config?.jsx === "transform" ? "classic" : "automatic",
562
+ factory: config?.jsxFactory,
563
+ fragment: config?.jsxFragment,
564
+ importSource: config?.jsxImportSource
565
+ },
566
+ define: pkg.name === "@sanity/pkg-utils" ? { ...replacements } : {
567
+ "process.env.PKG_FORMAT": JSON.stringify(format),
568
+ "process.env.PKG_RUNTIME": JSON.stringify(runtime),
569
+ "process.env.PKG_VERSION": JSON.stringify(process.env.PKG_VERSION || pkg.version),
570
+ ...replacements
571
+ },
572
+ external: (id, importer) => {
573
+ if (exportIds?.includes(id))
574
+ return !0;
575
+ if (importer && (id.startsWith(".") || id.startsWith("/"))) {
576
+ const idPath = path__default.default.resolve(path__default.default.dirname(importer), id);
577
+ if (sourcePaths?.includes(idPath))
578
+ return logger.warn(
579
+ `detected self-referencing import \u2013 treating as external: ${path__default.default.relative(
580
+ cwd,
581
+ idPath
582
+ )}`
583
+ ), !0;
584
+ }
585
+ const idParts = id.split("/"), name = idParts[0].startsWith("@") ? `${idParts[0]}/${idParts[1]}` : idParts[0];
586
+ return !!(name && external.includes(name));
587
+ },
588
+ input: entries.reduce(
589
+ (acc, entry) => Object.assign(acc, { [entry.name]: entry.source }),
590
+ {}
591
+ ),
592
+ plugins: [rolldownPluginDts.dts({ emitDtsOnly: !0, tsconfig: ctx.ts.configPath || "tsconfig.json" })],
593
+ treeshake: !0
594
+ }, outputOptions = {
595
+ chunkFileNames,
596
+ dir: outDir,
597
+ entryFileNames,
598
+ esModule: !0,
599
+ format: buildTask.type === "rolldown:dts" ? "es" : format,
600
+ sourcemap: buildTask.type === "rolldown:dts" ? !1 : config?.sourcemap ?? !0,
601
+ hoistTransitiveImports: !1
602
+ };
603
+ return { inputOptions, outputOptions };
604
+ }
605
+ function hasDependency$1(pkg, packageName) {
606
+ return pkg.dependencies ? packageName in pkg.dependencies : pkg.peerDependencies ? packageName in pkg.peerDependencies : !1;
607
+ }
608
+ const rolldownDtsTask = {
609
+ name: (ctx, task) => {
610
+ const bundleEntries = task.entries.filter((e) => e.path.includes("__$$bundle_")), entries = task.entries.filter((e) => !e.path.includes("__$$bundle_")), targetLines = task.target.length ? [" target:", ...task.target.map((t) => ` - ${chalk__default.default.yellow(t)}`)] : [], bundlesLines = bundleEntries.length ? [
611
+ " bundles:",
612
+ ...bundleEntries.map(
613
+ (e) => [
614
+ " - ",
615
+ `${chalk__default.default.yellow(e.source)} ${chalk__default.default.gray("\u2192")} ${chalk__default.default.yellow(e.output)}`
616
+ ].join("")
617
+ )
618
+ ] : [], entriesLines = entries.length ? [
619
+ " entries:",
620
+ ...entries.map(
621
+ (e) => [
622
+ " - ",
623
+ `${chalk__default.default.cyan(path__default.default.join(ctx.pkg.name, e.path))}: `,
624
+ `${chalk__default.default.yellow(e.source)} ${chalk__default.default.gray("\u2192")} ${chalk__default.default.yellow(e.output)}`
625
+ ].join("")
626
+ )
627
+ ] : [];
628
+ return [
629
+ `Build type definitions with ${chalk__default.default.bold("rolldown")}...`,
630
+ ` format: ${chalk__default.default.yellow(task.format)}`,
631
+ ...targetLines,
632
+ ...bundlesLines,
633
+ ...entriesLines
634
+ ].join(`
635
+ `);
636
+ },
637
+ exec: (ctx, task) => rxjs.from(execPromise$1(ctx, task)),
638
+ complete: () => {
639
+ },
640
+ error: (_ctx, _task, err) => {
641
+ console.error(err);
642
+ }
643
+ };
644
+ async function execPromise$1(ctx, task) {
645
+ const { distPath, files, logger } = ctx, outDir = path__default.default.relative(ctx.cwd, distPath), consoleSpy$1 = consoleSpy.createConsoleSpy({
646
+ onRestored: (messages) => {
647
+ for (const msg of messages) {
648
+ const text = String(msg.args[0]);
649
+ msg.code !== "CIRCULAR_DEPENDENCY" && (text.startsWith("Dynamic import can only") || text.startsWith("Sourcemap is likely to be incorrect") || (msg.type === "log" && logger.info(...msg.args), msg.type === "warn" && logger.warn(...msg.args), msg.type === "error" && logger.error(...msg.args)));
650
+ }
651
+ }
652
+ });
653
+ try {
654
+ const { inputOptions, outputOptions } = resolveRolldownConfig(ctx, task), bundle = await rolldown.rolldown({
655
+ ...inputOptions,
656
+ onwarn(warning) {
657
+ consoleSpy$1.messages.push({
658
+ type: "warn",
659
+ code: warning.code,
660
+ args: [warning.message]
661
+ });
662
+ }
663
+ }), { output } = await bundle.generate(outputOptions);
664
+ for (const chunkOrAsset of output)
665
+ chunkOrAsset.type === "asset" ? files.push({
666
+ type: "asset",
667
+ path: path__default.default.resolve(outDir, chunkOrAsset.fileName)
668
+ }) : files.push({
669
+ type: "chunk",
670
+ path: path__default.default.resolve(outDir, chunkOrAsset.fileName)
671
+ });
672
+ await bundle.write(outputOptions), await bundle.close(), consoleSpy$1.restore();
673
+ } catch (err) {
674
+ throw consoleSpy$1.restore(), err;
675
+ }
676
+ }
491
677
  function resolveRollupConfig(ctx, buildTask) {
492
678
  const { format, runtime, target } = buildTask, { config, cwd, exports: _exports, external, distPath, logger, pkg, ts: ts2 } = ctx, outputExt = consoleSpy.pkgExtMap[pkg.type || "commonjs"][format], minify = config?.minify ?? !1, outDir = path__default.default.relative(cwd, distPath), pathAliases = Object.fromEntries(
493
679
  Object.entries(ts2.config?.options.paths || {}).map(([key, val]) => [key, path__default.default.resolve(cwd, ts2.config?.options.baseUrl || ".", val[0])])
@@ -749,7 +935,8 @@ const rollupWatchTask = {
749
935
  }
750
936
  }, buildTaskHandlers = {
751
937
  "build:dts": dtsTask,
752
- "build:js": rollupTask
938
+ "build:js": rollupTask,
939
+ "rolldown:dts": rolldownDtsTask
753
940
  }, watchTaskHandlers = {
754
941
  "watch:dts": dtsWatchTask,
755
942
  "watch:js": rollupWatchTask