@sanity/pkg-utils 7.3.0 → 7.4.0-canary.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.
Files changed (57) hide show
  1. package/bin/pkg-utils.js +2 -0
  2. package/dist/_chunks-cjs/index.cjs +1499 -43
  3. package/dist/_chunks-cjs/index.cjs.map +1 -1
  4. package/dist/_chunks-cjs/resolveRolldownConfig.cjs +2 -2
  5. package/dist/_chunks-cjs/resolveRolldownConfig.cjs.map +1 -1
  6. package/dist/{_chunks-cjs/build.cjs → _chunks-es/build.js} +28 -26
  7. package/dist/_chunks-es/build.js.map +1 -0
  8. package/dist/{_chunks-cjs/buildAction.cjs → _chunks-es/buildAction.js} +8 -6
  9. package/dist/_chunks-es/buildAction.js.map +1 -0
  10. package/dist/{_chunks-cjs/check.cjs → _chunks-es/check.js} +30 -26
  11. package/dist/_chunks-es/check.js.map +1 -0
  12. package/dist/_chunks-es/checkAction.js +17 -0
  13. package/dist/_chunks-es/checkAction.js.map +1 -0
  14. package/dist/{_chunks-cjs/consoleSpy.cjs → _chunks-es/consoleSpy.js} +107 -96
  15. package/dist/_chunks-es/consoleSpy.js.map +1 -0
  16. package/dist/_chunks-es/handleError.js +8 -0
  17. package/dist/_chunks-es/handleError.js.map +1 -0
  18. package/dist/_chunks-es/index.js +42 -1516
  19. package/dist/_chunks-es/index.js.map +1 -1
  20. package/dist/{_chunks-cjs/init.cjs → _chunks-es/init.js} +53 -47
  21. package/dist/_chunks-es/init.js.map +1 -0
  22. package/dist/_chunks-es/initAction.js +16 -0
  23. package/dist/_chunks-es/initAction.js.map +1 -0
  24. package/dist/_chunks-es/isRecord.js +37 -0
  25. package/dist/_chunks-es/isRecord.js.map +1 -0
  26. package/dist/_chunks-es/resolveRolldownConfig.js +1 -1
  27. package/dist/_chunks-es/watch.js +146 -0
  28. package/dist/_chunks-es/watch.js.map +1 -0
  29. package/dist/_chunks-es/watchAction.js +17 -0
  30. package/dist/_chunks-es/watchAction.js.map +1 -0
  31. package/dist/{cli.cjs → cli.js} +9 -19
  32. package/dist/cli.js.map +1 -0
  33. package/dist/index.cjs +16 -19
  34. package/dist/index.cjs.map +1 -1
  35. package/dist/index.js +10 -1
  36. package/dist/index.js.map +1 -1
  37. package/package.json +4 -4
  38. package/bin/pkg-utils.cjs +0 -2
  39. package/dist/_chunks-cjs/build.cjs.map +0 -1
  40. package/dist/_chunks-cjs/buildAction.cjs.map +0 -1
  41. package/dist/_chunks-cjs/check.cjs.map +0 -1
  42. package/dist/_chunks-cjs/checkAction.cjs +0 -15
  43. package/dist/_chunks-cjs/checkAction.cjs.map +0 -1
  44. package/dist/_chunks-cjs/consoleSpy.cjs.map +0 -1
  45. package/dist/_chunks-cjs/handleError.cjs +0 -11
  46. package/dist/_chunks-cjs/handleError.cjs.map +0 -1
  47. package/dist/_chunks-cjs/init.cjs.map +0 -1
  48. package/dist/_chunks-cjs/initAction.cjs +0 -14
  49. package/dist/_chunks-cjs/initAction.cjs.map +0 -1
  50. package/dist/_chunks-cjs/isRecord.cjs +0 -39
  51. package/dist/_chunks-cjs/isRecord.cjs.map +0 -1
  52. package/dist/_chunks-cjs/watch.cjs +0 -157
  53. package/dist/_chunks-cjs/watch.cjs.map +0 -1
  54. package/dist/_chunks-cjs/watchAction.cjs +0 -15
  55. package/dist/_chunks-cjs/watchAction.cjs.map +0 -1
  56. package/dist/cli.cjs.map +0 -1
  57. /package/dist/{cli.d.cts → cli.d.ts} +0 -0
@@ -1,9 +1,17 @@
1
- "use strict";
2
- var path = require("node:path"), node = require("esbuild-register/dist/node"), pkgUp = require("pkg-up"), findConfig = require("find-config"), isRecord = require("./isRecord.cjs"), chalk = require("chalk"), zod = require("zod"), fs = require("node:fs/promises"), browserslist = require("browserslist"), config = require("@sanity/browserslist-config"), node_fs = require("node:fs"), ts = require("typescript"), zodValidationError = require("zod-validation-error");
3
- function _interopDefaultCompat(e) {
4
- return e && typeof e == "object" && "default" in e ? e : { default: e };
5
- }
6
- var path__default = /* @__PURE__ */ _interopDefaultCompat(path), pkgUp__default = /* @__PURE__ */ _interopDefaultCompat(pkgUp), findConfig__default = /* @__PURE__ */ _interopDefaultCompat(findConfig), chalk__default = /* @__PURE__ */ _interopDefaultCompat(chalk), fs__default = /* @__PURE__ */ _interopDefaultCompat(fs), browserslist__default = /* @__PURE__ */ _interopDefaultCompat(browserslist), config__default = /* @__PURE__ */ _interopDefaultCompat(config), ts__default = /* @__PURE__ */ _interopDefaultCompat(ts);
1
+ import { createRequire } from "node:module";
2
+ import path, { resolve } from "node:path";
3
+ import { register } from "esbuild-register/dist/node";
4
+ import pkgUp from "pkg-up";
5
+ import findConfig from "find-config";
6
+ import { fileExists, isRecord } from "./isRecord.js";
7
+ import chalk from "chalk";
8
+ import { z, ZodError } from "zod";
9
+ import fs from "node:fs/promises";
10
+ import browserslist from "browserslist";
11
+ import config from "@sanity/browserslist-config";
12
+ import { existsSync } from "node:fs";
13
+ import ts from "typescript";
14
+ import { errorMap } from "zod-validation-error";
7
15
  const CONFIG_FILE_NAMES = [
8
16
  "package.config.ts",
9
17
  "package.config.js",
@@ -11,23 +19,24 @@ const CONFIG_FILE_NAMES = [
11
19
  "package.config.mjs"
12
20
  ];
13
21
  function findConfigFile(cwd) {
14
- const pkgJsonPath = findConfig__default.default("package.json", { cwd });
22
+ const pkgJsonPath = findConfig("package.json", { cwd });
15
23
  if (!pkgJsonPath) return;
16
- const pkgPath = path__default.default.dirname(pkgJsonPath);
24
+ const pkgPath = path.dirname(pkgJsonPath);
17
25
  for (const fileName of CONFIG_FILE_NAMES) {
18
- const configPath = path__default.default.resolve(pkgPath, fileName);
19
- if (isRecord.fileExists(configPath))
26
+ const configPath = path.resolve(pkgPath, fileName);
27
+ if (fileExists(configPath))
20
28
  return configPath;
21
29
  }
22
30
  }
31
+ const require2 = createRequire(import.meta.url);
23
32
  async function loadConfig(options) {
24
- const { cwd } = options, pkgPath = await pkgUp__default.default({ cwd });
33
+ const { cwd } = options, pkgPath = await pkgUp({ cwd });
25
34
  if (!pkgPath) return;
26
- const root = path__default.default.dirname(pkgPath), configFile = await findConfigFile(root);
35
+ const root = path.dirname(pkgPath), configFile = await findConfigFile(root);
27
36
  if (!configFile || !configFile.startsWith(cwd))
28
37
  return;
29
38
  const esbuildOptions = { extensions: [".js", ".mjs", ".ts"] }, { unregister } = globalThis.__DEV__ ? { unregister: () => {
30
- } } : node.register(esbuildOptions), mod = require(configFile);
39
+ } } : register(esbuildOptions), mod = require2(configFile);
31
40
  return unregister(), mod?.default || mod || void 0;
32
41
  }
33
42
  function assertLast(a, arr) {
@@ -38,58 +47,58 @@ function assertOrder(a, b, arr) {
38
47
  const aIdx = arr.indexOf(a), bIdx = arr.indexOf(b);
39
48
  return aIdx === -1 || bIdx === -1 ? !0 : aIdx < bIdx;
40
49
  }
41
- const pkgSchema = zod.z.object({
42
- type: zod.z.optional(zod.z.enum(["commonjs", "module"])),
43
- name: zod.z.string(),
44
- version: zod.z.string(),
45
- license: zod.z.string(),
46
- bin: zod.z.optional(zod.z.record(zod.z.string())),
47
- dependencies: zod.z.optional(zod.z.record(zod.z.string())),
48
- devDependencies: zod.z.optional(zod.z.record(zod.z.string())),
49
- peerDependencies: zod.z.optional(zod.z.record(zod.z.string())),
50
- source: zod.z.optional(zod.z.string()),
51
- main: zod.z.optional(zod.z.string()),
52
- browser: zod.z.optional(zod.z.record(zod.z.string())),
53
- module: zod.z.optional(zod.z.string()),
54
- types: zod.z.optional(zod.z.string()),
55
- exports: zod.z.optional(
56
- zod.z.record(
57
- zod.z.union([
58
- zod.z.custom((val) => /^\.\/.*\.json$/.test(val)),
59
- zod.z.custom((val) => /^\.\/.*\.css$/.test(val)),
60
- zod.z.object({
61
- types: zod.z.optional(zod.z.string()),
62
- source: zod.z.optional(zod.z.string()),
63
- browser: zod.z.optional(
64
- zod.z.object({
65
- source: zod.z.string(),
66
- import: zod.z.optional(zod.z.string()),
67
- require: zod.z.optional(zod.z.string())
50
+ const pkgSchema = z.object({
51
+ type: z.optional(z.enum(["commonjs", "module"])),
52
+ name: z.string(),
53
+ version: z.string(),
54
+ license: z.string(),
55
+ bin: z.optional(z.record(z.string())),
56
+ dependencies: z.optional(z.record(z.string())),
57
+ devDependencies: z.optional(z.record(z.string())),
58
+ peerDependencies: z.optional(z.record(z.string())),
59
+ source: z.optional(z.string()),
60
+ main: z.optional(z.string()),
61
+ browser: z.optional(z.record(z.string())),
62
+ module: z.optional(z.string()),
63
+ types: z.optional(z.string()),
64
+ exports: z.optional(
65
+ z.record(
66
+ z.union([
67
+ z.custom((val) => /^\.\/.*\.json$/.test(val)),
68
+ z.custom((val) => /^\.\/.*\.css$/.test(val)),
69
+ z.object({
70
+ types: z.optional(z.string()),
71
+ source: z.optional(z.string()),
72
+ browser: z.optional(
73
+ z.object({
74
+ source: z.string(),
75
+ import: z.optional(z.string()),
76
+ require: z.optional(z.string())
68
77
  })
69
78
  ),
70
- node: zod.z.optional(
71
- zod.z.object({
72
- source: zod.z.optional(zod.z.string()),
73
- import: zod.z.optional(zod.z.string()),
74
- require: zod.z.optional(zod.z.string())
79
+ node: z.optional(
80
+ z.object({
81
+ source: z.optional(z.string()),
82
+ import: z.optional(z.string()),
83
+ require: z.optional(z.string())
75
84
  })
76
85
  ),
77
- import: zod.z.optional(zod.z.string()),
78
- require: zod.z.optional(zod.z.string()),
79
- default: zod.z.string()
86
+ import: z.optional(z.string()),
87
+ require: z.optional(z.string()),
88
+ default: z.string()
80
89
  }),
81
- zod.z.object({
82
- types: zod.z.optional(zod.z.string()),
83
- svelte: zod.z.string(),
84
- default: zod.z.optional(zod.z.string())
90
+ z.object({
91
+ types: z.optional(z.string()),
92
+ svelte: z.string(),
93
+ default: z.optional(z.string())
85
94
  })
86
95
  ])
87
96
  )
88
97
  ),
89
- browserslist: zod.z.optional(zod.z.union([zod.z.string(), zod.z.array(zod.z.string())])),
90
- sideEffects: zod.z.optional(zod.z.union([zod.z.boolean(), zod.z.array(zod.z.string())])),
98
+ browserslist: z.optional(z.union([z.string(), z.array(z.string())])),
99
+ sideEffects: z.optional(z.union([z.boolean(), z.array(z.string())])),
91
100
  // @TODO type this properly
92
- typesVersions: zod.z.optional(zod.z.any())
101
+ typesVersions: z.optional(z.any())
93
102
  }), typoMap = /* @__PURE__ */ new Map();
94
103
  for (const key of pkgSchema.keyof()._def.values)
95
104
  typoMap.set(key.toUpperCase(), key);
@@ -106,9 +115,9 @@ function validatePkg(input) {
106
115
  return pkg;
107
116
  }
108
117
  async function loadPkg(options) {
109
- const { cwd } = options, pkgPath = await pkgUp__default.default({ cwd });
118
+ const { cwd } = options, pkgPath = await pkgUp({ cwd });
110
119
  if (!pkgPath) throw new Error("no package.json found");
111
- const buf = await fs__default.default.readFile(pkgPath), raw = JSON.parse(buf.toString());
120
+ const buf = await fs.readFile(pkgPath), raw = JSON.parse(buf.toString());
112
121
  return validatePkg(raw), raw;
113
122
  }
114
123
  async function loadPkgWithReporting(options) {
@@ -147,14 +156,14 @@ async function loadPkgWithReporting(options) {
147
156
  }
148
157
  return shouldError && process.exit(1), pkg;
149
158
  } catch (err) {
150
- if (err instanceof zod.ZodError)
159
+ if (err instanceof ZodError)
151
160
  for (const issue of err.issues) {
152
161
  if (issue.code === "invalid_type") {
153
162
  logger.error(
154
163
  [
155
164
  `\`${formatPath(issue.path)}\` `,
156
- `in \`./package.json\` must be of type ${chalk__default.default.magenta(issue.expected)} `,
157
- `(received ${chalk__default.default.magenta(issue.received)})`
165
+ `in \`./package.json\` must be of type ${chalk.magenta(issue.expected)} `,
166
+ `(received ${chalk.magenta(issue.received)})`
158
167
  ].join("")
159
168
  );
160
169
  continue;
@@ -172,7 +181,7 @@ function formatPath(segments) {
172
181
  function browserslistToEsbuild(browserslistConfig, options = {}) {
173
182
  if (!browserslistConfig) {
174
183
  const path2 = process.cwd();
175
- browserslistConfig = browserslist__default.default.loadConfig({ path: path2, ...options });
184
+ browserslistConfig = browserslist.loadConfig({ path: path2, ...options });
176
185
  }
177
186
  const SUPPORTED_ESBUILD_TARGETS = [
178
187
  "es",
@@ -188,7 +197,7 @@ function browserslistToEsbuild(browserslistConfig, options = {}) {
188
197
  ios_saf: "ios",
189
198
  android: "chrome"
190
199
  }, separator = " ";
191
- return browserslist__default.default(browserslistConfig, options).filter((b) => !UNSUPPORTED.some((u) => b.startsWith(u))).map((b) => b === "safari TP" ? browserslist__default.default("last 1 safari version")[0] : b).map((b) => b.split(separator)).map((b) => (replaces[b[0]] && (b[0] = replaces[b[0]]), b)).map((b) => (b[1].includes("-") && (b[1] = b[1].slice(0, b[1].indexOf("-"))), b)).map((b) => (b[1].endsWith(".0") && (b[1] = b[1].slice(0, -2)), b)).filter((b) => /^\d+(\.\d+)*$/.test(b[1])).filter((b) => SUPPORTED_ESBUILD_TARGETS.includes(b[0])).reduce((acc, b) => {
200
+ return browserslist(browserslistConfig, options).filter((b) => !UNSUPPORTED.some((u) => b.startsWith(u))).map((b) => b === "safari TP" ? browserslist("last 1 safari version")[0] : b).map((b) => b.split(separator)).map((b) => (replaces[b[0]] && (b[0] = replaces[b[0]]), b)).map((b) => (b[1].includes("-") && (b[1] = b[1].slice(0, b[1].indexOf("-"))), b)).map((b) => (b[1].endsWith(".0") && (b[1] = b[1].slice(0, -2)), b)).filter((b) => /^\d+(\.\d+)*$/.test(b[1])).filter((b) => SUPPORTED_ESBUILD_TARGETS.includes(b[0])).reduce((acc, b) => {
192
201
  const existingIndex = acc.findIndex((br) => br[0] === b[0]);
193
202
  return existingIndex !== -1 ? acc[existingIndex][1] = b[1] : acc.push(b), acc;
194
203
  }, []).map((b) => b.join(""));
@@ -196,19 +205,19 @@ function browserslistToEsbuild(browserslistConfig, options = {}) {
196
205
  function resolveConfigProperty(prop, initialValue) {
197
206
  return prop ? typeof prop == "function" ? prop(initialValue) : prop : initialValue;
198
207
  }
199
- const DEFAULT_BROWSERSLIST_QUERY = config__default.default;
208
+ const DEFAULT_BROWSERSLIST_QUERY = config;
200
209
  function pathContains(containerPath, itemPath) {
201
- return !path__default.default.relative(containerPath, itemPath).startsWith("..");
210
+ return !path.relative(containerPath, itemPath).startsWith("..");
202
211
  }
203
212
  function findCommonDirPath(filePaths) {
204
213
  let ret;
205
214
  for (const filePath of filePaths) {
206
- let dirPath = path__default.default.dirname(filePath);
215
+ let dirPath = path.dirname(filePath);
207
216
  if (!ret) {
208
217
  ret = dirPath;
209
218
  continue;
210
219
  }
211
- for (; dirPath !== ret && (dirPath = path__default.default.dirname(dirPath), dirPath !== ret); ) {
220
+ for (; dirPath !== ret && (dirPath = path.dirname(dirPath), dirPath !== ret); ) {
212
221
  if (pathContains(dirPath, ret)) {
213
222
  ret = dirPath;
214
223
  break;
@@ -334,12 +343,12 @@ function parseExports(options) {
334
343
  if (exportPath.endsWith(".json") || typeof exportEntry == "string" && exportEntry.endsWith(".json"))
335
344
  exportPath === "./package.json" && exportEntry !== "./package.json" && errors.push('package.json: `exports["./package.json"]` must be "./package.json".');
336
345
  else if (exportPath.endsWith(".css"))
337
- typeof exportEntry == "string" && !node_fs.existsSync(path.resolve(cwd, exportEntry)) ? errors.push(
346
+ typeof exportEntry == "string" && !existsSync(resolve(cwd, exportEntry)) ? errors.push(
338
347
  `package.json: \`exports[${JSON.stringify(exportPath)}]\`: file does not exist.`
339
348
  ) : typeof exportEntry != "string" && errors.push(
340
349
  `package.json: \`exports[${JSON.stringify(exportPath)}]\`: export conditions not supported for CSS files.`
341
350
  );
342
- else if (!(isRecord.isRecord(exportEntry) && "svelte" in exportEntry))
351
+ else if (!(isRecord(exportEntry) && "svelte" in exportEntry))
343
352
  if (isPkgExport(exportEntry)) {
344
353
  const exp = {
345
354
  _exported: !0,
@@ -355,7 +364,7 @@ function parseExports(options) {
355
364
  ), exportEntry.import && pkg.module && exportEntry.import !== pkg.module && errors.push(
356
365
  'package.json: mismatch between "module" and "exports.import" These must be equal.'
357
366
  )), _exports.push(exp);
358
- } else isRecord.isRecord(exportEntry) || errors.push("package.json: exports must be an object");
367
+ } else isRecord(exportEntry) || errors.push("package.json: exports must be an object");
359
368
  if (errors.push(...validateExports(_exports, { pkg })), errors.length)
360
369
  throw new Error(`
361
370
  - ` + errors.join(`
@@ -363,14 +372,14 @@ function parseExports(options) {
363
372
  return _exports;
364
373
  }
365
374
  function isPkgExport(value) {
366
- return isRecord.isRecord(value) && "source" in value && typeof value.source == "string";
375
+ return isRecord(value) && "source" in value && typeof value.source == "string";
367
376
  }
368
377
  async function loadTSConfig(options) {
369
- const { cwd, tsconfigPath } = options, configPath = ts__default.default.findConfigFile(cwd, ts__default.default.sys.fileExists, tsconfigPath);
378
+ const { cwd, tsconfigPath } = options, configPath = ts.findConfigFile(cwd, ts.sys.fileExists, tsconfigPath);
370
379
  if (!configPath)
371
380
  return;
372
- const configFile = ts__default.default.readConfigFile(configPath, ts__default.default.sys.readFile);
373
- return ts__default.default.parseJsonConfigFileContent(configFile.config, ts__default.default.sys, cwd);
381
+ const configFile = ts.readConfigFile(configPath, ts.sys.readFile);
382
+ return ts.parseJsonConfigFileContent(configFile.config, ts.sys, cwd);
374
383
  }
375
384
  function resolveBrowserTarget(versions) {
376
385
  const target = versions.filter(
@@ -384,18 +393,18 @@ function resolveNodeTarget(versions) {
384
393
  if (target.length !== 0)
385
394
  return target;
386
395
  }
387
- const toggle = zod.z.union([zod.z.literal("error"), zod.z.literal("warn"), zod.z.literal("off")]), strictOptions = zod.z.object({
396
+ const toggle = z.union([z.literal("error"), z.literal("warn"), z.literal("off")]), strictOptions = z.object({
388
397
  noPackageJsonTypings: toggle.default("error"),
389
398
  noImplicitSideEffects: toggle.default("warn"),
390
399
  noImplicitBrowsersList: toggle.default("warn"),
391
400
  alwaysPackageJsonTypes: toggle.default("error"),
392
401
  alwaysPackageJsonMain: toggle.default("error"),
393
402
  alwaysPackageJsonFiles: toggle.default("error")
394
- }).strict(), validationSchema = zod.z.object({
403
+ }).strict(), validationSchema = z.object({
395
404
  strictOptions: strictOptions.default({})
396
405
  });
397
406
  function parseStrictOptions(input) {
398
- return validationSchema.parse({ strictOptions: input }, { errorMap: zodValidationError.errorMap }).strictOptions;
407
+ return validationSchema.parse({ strictOptions: input }, { errorMap }).strictOptions;
399
408
  }
400
409
  async function resolveBuildContext(options) {
401
410
  const {
@@ -445,29 +454,29 @@ async function resolveBuildContext(options) {
445
454
  }).reduce(
446
455
  (acc, { _path: exportPath, ...exportEntry }) => Object.assign(acc, { [exportPath]: exportEntry }),
447
456
  {}
448
- ), exports2 = resolveConfigProperty(config2?.exports, parsedExports), parsedExternal = [
457
+ ), exports = resolveConfigProperty(config2?.exports, parsedExports), parsedExternal = [
449
458
  ...pkg.dependencies ? Object.keys(pkg.dependencies) : [],
450
459
  ...pkg.peerDependencies ? Object.keys(pkg.peerDependencies) : []
451
460
  ], external = config2 && Array.isArray(config2.external) ? [...parsedExternal, ...config2.external] : resolveConfigProperty(config2?.external, parsedExternal), externalWithTypes = /* @__PURE__ */ new Set([pkg.name, ...external, ...external.map(transformPackageName)]), bundledDependencies = (pkg.devDependencies ? Object.keys(pkg.devDependencies) : []).filter(
452
461
  // Do not bundle anything that is marked as external
453
462
  (_) => !externalWithTypes.has(_)
454
- ), bundledPackages = config2 && Array.isArray(config2.extract?.bundledPackages) ? [...bundledDependencies, ...config2.extract.bundledPackages] : resolveConfigProperty(config2?.extract?.bundledPackages, bundledDependencies), outputPaths = Object.values(exports2).flatMap((exportEntry) => [
463
+ ), bundledPackages = config2 && Array.isArray(config2.extract?.bundledPackages) ? [...bundledDependencies, ...config2.extract.bundledPackages] : resolveConfigProperty(config2?.extract?.bundledPackages, bundledDependencies), outputPaths = Object.values(exports).flatMap((exportEntry) => [
455
464
  exportEntry.import,
456
465
  exportEntry.require,
457
466
  exportEntry.browser?.import,
458
467
  exportEntry.browser?.require,
459
468
  exportEntry.node?.source && exportEntry.node.import,
460
469
  exportEntry.node?.source && exportEntry.node.require
461
- ].filter(Boolean)).map((p) => path__default.default.resolve(cwd, p)), commonDistPath = findCommonDirPath(outputPaths);
470
+ ].filter(Boolean)).map((p) => path.resolve(cwd, p)), commonDistPath = findCommonDirPath(outputPaths);
462
471
  if (commonDistPath === cwd)
463
472
  throw new Error(
464
473
  "all output files must share a common parent directory which is not the root package directory"
465
474
  );
466
475
  if (commonDistPath && !pathContains(cwd, commonDistPath))
467
476
  throw new Error("all output files must be located within the package");
468
- const configDistPath = config2?.dist ? path__default.default.resolve(cwd, config2.dist) : void 0;
477
+ const configDistPath = config2?.dist ? path.resolve(cwd, config2.dist) : void 0;
469
478
  if (configDistPath && commonDistPath && configDistPath !== commonDistPath && !pathContains(configDistPath, commonDistPath))
470
- throw logger.log(`did you mean to configure \`dist: './${path__default.default.relative(cwd, commonDistPath)}'\`?`), new Error("all output files must be located with the configured `dist` path");
479
+ throw logger.log(`did you mean to configure \`dist: './${path.relative(cwd, commonDistPath)}'\`?`), new Error("all output files must be located with the configured `dist` path");
471
480
  const distPath = configDistPath || commonDistPath;
472
481
  if (!distPath)
473
482
  throw new Error("could not detect `dist` path");
@@ -476,7 +485,7 @@ async function resolveBuildContext(options) {
476
485
  cwd,
477
486
  distPath,
478
487
  emitDeclarationOnly,
479
- exports: exports2,
488
+ exports,
480
489
  external,
481
490
  bundledPackages,
482
491
  files: [],
@@ -514,17 +523,19 @@ function createConsoleSpy(options) {
514
523
  }
515
524
  };
516
525
  }
517
- exports.DEFAULT_BROWSERSLIST_QUERY = DEFAULT_BROWSERSLIST_QUERY;
518
- exports.createConsoleSpy = createConsoleSpy;
519
- exports.getTargetPaths = getTargetPaths;
520
- exports.loadConfig = loadConfig;
521
- exports.loadPkg = loadPkg;
522
- exports.loadPkgWithReporting = loadPkgWithReporting;
523
- exports.parseExports = parseExports;
524
- exports.parseStrictOptions = parseStrictOptions;
525
- exports.pkgExtMap = pkgExtMap;
526
- exports.resolveBuildContext = resolveBuildContext;
527
- exports.resolveConfigProperty = resolveConfigProperty;
528
- exports.strictOptions = strictOptions;
529
- exports.toggle = toggle;
530
- //# sourceMappingURL=consoleSpy.cjs.map
526
+ export {
527
+ DEFAULT_BROWSERSLIST_QUERY,
528
+ createConsoleSpy,
529
+ getTargetPaths,
530
+ loadConfig,
531
+ loadPkg,
532
+ loadPkgWithReporting,
533
+ parseExports,
534
+ parseStrictOptions,
535
+ pkgExtMap,
536
+ resolveBuildContext,
537
+ resolveConfigProperty,
538
+ strictOptions,
539
+ toggle
540
+ };
541
+ //# sourceMappingURL=consoleSpy.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"consoleSpy.js","sources":["../../src/node/core/config/findConfigFile.ts","../../src/node/core/config/loadConfig.ts","../../src/node/core/pkg/helpers.ts","../../src/node/core/pkg/validatePkg.ts","../../src/node/core/pkg/loadPkg.ts","../../src/node/core/pkg/loadPkgWithReporting.ts","../../node_modules/.pnpm/browserslist-to-esbuild@2.1.1_browserslist@4.25.0/node_modules/browserslist-to-esbuild/src/index.js","../../src/node/core/config/resolveConfigProperty.ts","../../src/node/core/defaults.ts","../../src/node/core/findCommonPath.ts","../../src/node/tasks/dts/getTargetPaths.ts","../../src/node/core/pkg/pkgExt.ts","../../src/node/core/pkg/validateExports.ts","../../src/node/core/pkg/parseExports.ts","../../src/node/core/ts/loadTSConfig.ts","../../src/node/resolveBrowserTarget.ts","../../src/node/resolveNodeTarget.ts","../../src/node/strict.ts","../../src/node/resolveBuildContext.ts","../../src/node/consoleSpy.ts"],"sourcesContent":["import path from 'node:path'\nimport findConfig from 'find-config'\nimport {fileExists} from '../../fileExists'\n\nconst CONFIG_FILE_NAMES = [\n 'package.config.ts',\n 'package.config.js',\n 'package.config.cjs',\n 'package.config.mjs',\n]\n\n/** @internal */\nexport function findConfigFile(cwd: string): string | undefined {\n const pkgJsonPath = findConfig('package.json', {cwd})\n\n if (!pkgJsonPath) return undefined\n\n const pkgPath = path.dirname(pkgJsonPath)\n\n for (const fileName of CONFIG_FILE_NAMES) {\n const configPath = path.resolve(pkgPath, fileName)\n\n const exists = fileExists(configPath)\n\n if (exists) {\n return configPath\n }\n }\n\n return undefined\n}\n","import {createRequire} from 'node:module'\nimport path from 'node:path'\nimport {register} from 'esbuild-register/dist/node'\nimport pkgUp from 'pkg-up'\nimport {findConfigFile} from './findConfigFile'\nimport type {PkgConfigOptions} from './types'\n\nconst require = createRequire(import.meta.url)\n\n/** @alpha */\nexport async function loadConfig(options: {cwd: string}): Promise<PkgConfigOptions | undefined> {\n const {cwd} = options\n\n const pkgPath = await pkgUp({cwd})\n\n if (!pkgPath) return undefined\n\n const root = path.dirname(pkgPath)\n\n const configFile = await findConfigFile(root)\n\n if (!configFile) {\n return undefined\n }\n\n // Do not accept config files outside of the root\n if (!configFile.startsWith(cwd)) {\n return undefined\n }\n\n const esbuildOptions = {extensions: ['.js', '.mjs', '.ts']}\n\n const {unregister} = globalThis.__DEV__ ? {unregister: () => undefined} : register(esbuildOptions)\n\n const mod = require(configFile)\n\n unregister()\n\n return mod?.default || mod || undefined\n}\n","/** @internal */\nexport function assertFirst<T>(a: T, arr: T[]): boolean {\n const aIdx = arr.indexOf(a)\n\n // if not found, then we don't care\n if (aIdx === -1) {\n return true\n }\n\n return aIdx === 0\n}\n\n/** @internal */\nexport function assertLast<T>(a: T, arr: T[]): boolean {\n const aIdx = arr.indexOf(a)\n\n // if not found, then we don't care\n if (aIdx === -1) {\n return true\n }\n\n return aIdx === arr.length - 1\n}\n\n/** @internal */\nexport function assertOrder<T>(a: T, b: T, arr: T[]): boolean {\n const aIdx = arr.indexOf(a)\n const bIdx = arr.indexOf(b)\n\n // if either is not found, then we don't care\n if (aIdx === -1 || bIdx === -1) {\n return true\n }\n\n return aIdx < bIdx\n}\n","import {z} from 'zod'\nimport type {PackageJSON} from './types'\n\nconst pkgSchema = z.object({\n type: z.optional(z.enum(['commonjs', 'module'])),\n name: z.string(),\n version: z.string(),\n license: z.string(),\n bin: z.optional(z.record(z.string())),\n dependencies: z.optional(z.record(z.string())),\n devDependencies: z.optional(z.record(z.string())),\n peerDependencies: z.optional(z.record(z.string())),\n source: z.optional(z.string()),\n main: z.optional(z.string()),\n browser: z.optional(z.record(z.string())),\n module: z.optional(z.string()),\n types: z.optional(z.string()),\n exports: z.optional(\n z.record(\n z.union([\n z.custom<`./${string}.json`>((val) => /^\\.\\/.*\\.json$/.test(val as string)),\n z.custom<`./${string}.css`>((val) => /^\\.\\/.*\\.css$/.test(val as string)),\n z.object({\n types: z.optional(z.string()),\n source: z.optional(z.string()),\n browser: z.optional(\n z.object({\n source: z.string(),\n import: z.optional(z.string()),\n require: z.optional(z.string()),\n }),\n ),\n node: z.optional(\n z.object({\n source: z.optional(z.string()),\n import: z.optional(z.string()),\n require: z.optional(z.string()),\n }),\n ),\n import: z.optional(z.string()),\n require: z.optional(z.string()),\n default: z.string(),\n }),\n z.object({\n types: z.optional(z.string()),\n svelte: z.string(),\n default: z.optional(z.string()),\n }),\n ]),\n ),\n ),\n browserslist: z.optional(z.union([z.string(), z.array(z.string())])),\n sideEffects: z.optional(z.union([z.boolean(), z.array(z.string())])),\n // @TODO type this properly\n typesVersions: z.optional(z.any()),\n})\n\n// Create a map over known keys to catch casing mistakes\nconst typoMap = new Map<string, string>()\n\nfor (const key of pkgSchema.keyof()._def.values) {\n typoMap.set(key.toUpperCase(), key)\n}\n\nexport function validatePkg(input: unknown): PackageJSON {\n const pkg = pkgSchema.parse(input)\n\n const invalidKey = Object.keys(input as PackageJSON).find((key) => {\n const needle = key.toUpperCase()\n\n return typoMap.has(needle) ? typoMap.get(needle) !== key : false\n })\n\n if (invalidKey) {\n throw new TypeError(\n `\n- package.json: \"${invalidKey}\" is not a valid key. Did you mean \"${typoMap.get(invalidKey.toUpperCase())}\"?`,\n )\n }\n\n return pkg\n}\n","import fs from 'node:fs/promises'\nimport pkgUp from 'pkg-up'\nimport type {PackageJSON} from './types'\nimport {validatePkg} from './validatePkg'\n\n/** @internal */\nexport async function loadPkg(options: {cwd: string}): Promise<PackageJSON> {\n const {cwd} = options\n\n const pkgPath = await pkgUp({cwd})\n\n if (!pkgPath) throw new Error('no package.json found')\n\n const buf = await fs.readFile(pkgPath)\n\n const raw = JSON.parse(buf.toString())\n\n validatePkg(raw)\n\n return raw\n}\n","import chalk from 'chalk'\nimport {ZodError} from 'zod'\nimport type {Logger} from '../../logger'\nimport {assertLast, assertOrder} from './helpers'\nimport {loadPkg} from './loadPkg'\nimport type {PackageJSON} from './types'\n\n/** @alpha */\nexport async function loadPkgWithReporting(options: {\n cwd: string\n logger: Logger\n strict: boolean\n}): Promise<PackageJSON> {\n const {cwd, logger, strict} = options\n\n try {\n const pkg = await loadPkg({cwd})\n let shouldError = false\n\n if (strict) {\n if (!pkg.type) {\n shouldError = true\n logger.error(\n `the \\`type\\` field in \\`./package.json\\` must be either \"module\" or \"commonjs\")`,\n )\n }\n }\n\n // validate exports\n if (pkg.exports) {\n const _exports = Object.entries(pkg.exports)\n\n for (const [expPath, exp] of _exports) {\n if (typeof exp === 'string' || 'svelte' in exp) {\n continue\n }\n\n const keys = Object.keys(exp)\n\n if (exp.types) {\n shouldError = true\n logger.error(\n `exports[\"${expPath}\"]: the \\`types\\` condition shouldn't be used as dts files are generated in such a way that both CJS and ESM is supported`,\n )\n }\n\n if (exp.module) {\n shouldError = true\n logger.error(\n `exports[\"${expPath}\"]: the \\`module\\` condition shouldn't be used as it's not well supported in all bundlers.`,\n )\n }\n\n if (exp.node) {\n if (exp.import && exp.node.import && !assertOrder('node', 'import', keys)) {\n shouldError = true\n logger.error(\n `exports[\"${expPath}\"]: the \\`node\\` property should come before the \\`import\\` property`,\n )\n }\n\n if (exp.node.module) {\n shouldError = true\n logger.error(\n `exports[\"${expPath}\"]: the \\`node.module\\` condition shouldn't be used as it's not well supported in all bundlers. A better strategy is to refactor the codebase to no longer be vulnerable to the \"dual package hazard\"`,\n )\n }\n\n if (\n !exp.node.source &&\n exp.node.import &&\n (exp.node.require || exp.require) &&\n (exp.node.import.endsWith('.cjs.js') || exp.node.import.endsWith('.cjs.mjs'))\n ) {\n shouldError = true\n logger.error(\n `exports[\"${expPath}\"]: the \\`node.import\\` re-export pattern shouldn't be used as it's not well supported in all bundlers. A better strategy is to refactor the codebase to no longer be vulnerable to the \"dual package hazard\"`,\n )\n }\n\n if (exp.require && exp.node.require && exp.require === exp.node.require) {\n shouldError = true\n logger.error(\n `exports[\"${expPath}\"]: the \\`node.require\\` property isn't necessary as it's identical to \\`require\\``,\n )\n } else if (exp.require && exp.node.require && !assertOrder('node', 'require', keys)) {\n shouldError = true\n logger.error(\n `exports[\"${expPath}\"]: the \\`node\\` property should come before the \\`require\\` property`,\n )\n }\n } else {\n if (!assertOrder('import', 'require', keys)) {\n logger.warn(\n `exports[\"${expPath}\"]: the \\`import\\` property should come before the \\`require\\` property`,\n )\n }\n }\n\n if (!assertLast('default', keys)) {\n shouldError = true\n logger.error(\n `exports[\"${expPath}\"]: the \\`default\\` property should be the last property`,\n )\n }\n }\n }\n\n if (shouldError) {\n process.exit(1)\n }\n\n return pkg\n } catch (err) {\n if (err instanceof ZodError) {\n for (const issue of err.issues) {\n if (issue.code === 'invalid_type') {\n logger.error(\n [\n `\\`${formatPath(issue.path)}\\` `,\n `in \\`./package.json\\` must be of type ${chalk.magenta(issue.expected)} `,\n `(received ${chalk.magenta(issue.received)})`,\n ].join(''),\n )\n continue\n }\n\n logger.error(issue)\n }\n } else {\n logger.error(err)\n }\n\n process.exit(1)\n }\n}\n\nfunction formatPath(segments: Array<string | number>) {\n return segments\n .map((s, idx) => {\n if (idx === 0) return s\n\n if (typeof s === 'number') {\n return `[${s}]`\n }\n\n if (s.startsWith('.')) {\n return `[\"${s}\"]`\n }\n\n return `.${s}`\n })\n .join('')\n}\n","import browserslist from 'browserslist'\n\n// convert the browserslist field in package.json to\n// esbuild compatible array of browsers\nexport default function browserslistToEsbuild(browserslistConfig, options = {}) {\n if (!browserslistConfig) {\n // the path from where the script is run\n const path = process.cwd()\n\n // read config if none is passed\n browserslistConfig = browserslist.loadConfig({ path, ...options })\n }\n\n const SUPPORTED_ESBUILD_TARGETS = [\n 'es',\n 'chrome',\n 'edge',\n 'firefox',\n 'ios',\n 'node',\n 'safari',\n 'opera',\n 'ie',\n ]\n\n // https://github.com/eBay/browserslist-config/issues/16#issuecomment-863870093\n const UNSUPPORTED = ['android 4']\n\n const replaces = {\n ios_saf: 'ios',\n android: 'chrome',\n }\n\n const separator = ' '\n\n return (\n browserslist(browserslistConfig, options)\n // filter out the unsupported ones\n .filter((b) => !UNSUPPORTED.some((u) => b.startsWith(u)))\n // replaces safari TP with latest safari version\n .map((b) => {\n if (b === 'safari TP') {\n return browserslist('last 1 safari version')[0]\n }\n\n return b\n })\n // transform into ['chrome', '88']\n .map((b) => b.split(separator))\n // replace the similar browser\n .map((b) => {\n if (replaces[b[0]]) {\n b[0] = replaces[b[0]]\n }\n\n return b\n })\n // 11.0-12.0 --> 11.0\n .map((b) => {\n if (b[1].includes('-')) {\n b[1] = b[1].slice(0, b[1].indexOf('-'))\n }\n\n return b\n })\n // 11.0 --> 11\n .map((b) => {\n if (b[1].endsWith('.0')) {\n b[1] = b[1].slice(0, -2)\n }\n\n return b\n })\n // removes invalid versions that will break esbuild\n // https://github.com/evanw/esbuild/blob/35c0d65b9d4f29a26176404d2890d1b499634e9f/compat-table/src/caniuse.ts#L119-L122\n .filter((b) => /^\\d+(\\.\\d+)*$/.test(b[1]))\n // only get the targets supported by esbuild\n .filter((b) => SUPPORTED_ESBUILD_TARGETS.includes(b[0]))\n // only get the oldest version, assuming that the older version\n // is last in the array\n .reduce((acc, b) => {\n const existingIndex = acc.findIndex((br) => br[0] === b[0])\n\n if (existingIndex !== -1) {\n acc[existingIndex][1] = b[1]\n } else {\n acc.push(b)\n }\n return acc\n }, [])\n // remove separator\n .map((b) => b.join(''))\n )\n}\n","import type {PkgConfigProperty, PkgConfigPropertyResolver} from './types'\n\n/** @internal */\nexport function resolveConfigProperty<T>(\n prop: PkgConfigProperty<T> | undefined,\n initialValue: T,\n): T {\n if (!prop) return initialValue\n\n if (typeof prop === 'function') {\n return (prop as PkgConfigPropertyResolver<T>)(initialValue)\n }\n\n return prop\n}\n","import config from '@sanity/browserslist-config'\n\n/** @public */\nexport const DEFAULT_BROWSERSLIST_QUERY = config\n","import path from 'node:path'\n\nexport function pathContains(containerPath: string, itemPath: string): boolean {\n return !path.relative(containerPath, itemPath).startsWith('..')\n}\n\nexport function findCommonDirPath(filePaths: string[]): string | undefined {\n let ret: string | undefined = undefined\n\n for (const filePath of filePaths) {\n let dirPath = path.dirname(filePath)\n\n if (!ret) {\n ret = dirPath\n continue\n }\n\n while (dirPath !== ret) {\n dirPath = path.dirname(dirPath)\n\n if (dirPath === ret) {\n break\n }\n\n if (pathContains(dirPath, ret)) {\n ret = dirPath\n break\n }\n\n if (dirPath === '.') return undefined\n }\n }\n\n return ret\n}\n","import type {PkgBundle, PkgExport} from '../../core/config/types'\nimport type {PackageJSON} from '../../core/pkg/types'\n\n/** @internal */\nexport const fileEnding = /\\.[mc]?js$/\n/** @internal */\nexport const dtsEnding = '.d.ts' as const\n/** @internal */\nexport const defaultEnding = '.js' as const\n/** @internal */\nexport const mjsEnding = '.mjs' as const\n/** @internal */\nexport const cjsEnding = '.cjs' as const\nconst mtsEnding = '.d.mts' as const\nconst ctsEnding = '.d.cts' as const\n\n/** @internal */\nexport function getTargetPaths(\n _type: PackageJSON['type'],\n expOrBundle: PkgExport | PkgExport['browser'] | PkgExport['node'] | PkgBundle,\n): string[] {\n const type = (_type === 'module' ? 'module' : 'commonjs') satisfies PackageJSON['type']\n\n const set = new Set<string>()\n\n if (expOrBundle?.import) {\n set.add(expOrBundle.import.replace(fileEnding, type === 'module' ? dtsEnding : mtsEnding))\n }\n\n if (expOrBundle?.require) {\n set.add(expOrBundle.require.replace(fileEnding, type === 'commonjs' ? dtsEnding : ctsEnding))\n }\n\n if (isPkgExport(expOrBundle)) {\n if (!expOrBundle.browser?.source) {\n if (expOrBundle.browser?.import) {\n set.add(\n expOrBundle.browser.import.replace(fileEnding, type === 'module' ? dtsEnding : mtsEnding),\n )\n }\n\n if (expOrBundle.browser?.require) {\n set.add(\n expOrBundle.browser.require.replace(\n fileEnding,\n type === 'commonjs' ? dtsEnding : ctsEnding,\n ),\n )\n }\n }\n\n if (!expOrBundle.node?.source) {\n if (expOrBundle.node?.import) {\n set.add(\n expOrBundle.node.import.replace(fileEnding, type === 'module' ? dtsEnding : mtsEnding),\n )\n }\n\n if (expOrBundle.node?.require) {\n set.add(\n expOrBundle.node.require.replace(fileEnding, type === 'commonjs' ? dtsEnding : ctsEnding),\n )\n }\n }\n }\n\n return Array.from(set)\n}\n\nfunction isPkgExport(exp: any): exp is PkgExport {\n return exp?.browser || exp?.node || exp?.default\n}\n","import {cjsEnding, defaultEnding, mjsEnding} from '../../tasks/dts/getTargetPaths'\n\n/** @internal */\nexport interface PkgExtMap {\n commonjs: {commonjs: string; esm: string}\n module: {commonjs: string; esm: string}\n}\n\n/** @internal */\nexport const pkgExtMap = {\n // pkg.type: \"commonjs\"\n commonjs: {\n commonjs: defaultEnding,\n esm: mjsEnding,\n },\n\n // pkg.type: \"module\"\n module: {\n commonjs: cjsEnding,\n esm: defaultEnding,\n },\n} satisfies PkgExtMap\n","import type {PkgExport} from '../config/types'\nimport {pkgExtMap as extMap} from './pkgExt'\nimport type {PackageJSON} from './types'\n\nexport function validateExports(\n _exports: (PkgExport & {_path: string})[],\n options: {pkg: PackageJSON},\n): string[] {\n const {pkg} = options\n const type = pkg.type || 'commonjs'\n const ext = extMap[type]\n\n const errors: string[] = []\n\n for (const exp of _exports) {\n if (exp.require && !exp.require.endsWith(ext.commonjs)) {\n errors.push(\n `package.json with \\`type: \"${type}\"\\` - \\`exports[\"${exp._path}\"].require\\` must end with \"${ext.commonjs}\"`,\n )\n }\n\n if (exp.import && !exp.import.endsWith(ext.esm)) {\n errors.push(\n `package.json with \\`type: \"${type}\"\\` - \\`exports[\"${exp._path}\"].import\\` must end with \"${ext.esm}\"`,\n )\n }\n }\n\n return errors\n}\n","import {existsSync} from 'node:fs'\nimport {resolve as resolvePath} from 'node:path'\nimport type {Logger} from '../../logger'\nimport type {InferredStrictOptions} from '../../strict'\nimport {defaultEnding, fileEnding} from '../../tasks/dts/getTargetPaths'\nimport type {PkgExport} from '../config/types'\nimport {isRecord} from '../isRecord'\nimport {pkgExtMap} from './pkgExt'\nimport type {PackageJSON} from './types'\nimport {validateExports} from './validateExports'\n\n/** @alpha */\nexport function parseExports(options: {\n cwd: string\n pkg: PackageJSON\n strict: boolean\n strictOptions: InferredStrictOptions\n logger: Logger\n}): (PkgExport & {_path: string})[] {\n const {cwd, pkg, strict, strictOptions, logger} = options\n const type = pkg.type || 'commonjs'\n const errors: string[] = []\n\n const report = (kind: 'warn' | 'error', message: string) => {\n if (kind === 'warn') {\n logger.warn(message)\n } else {\n errors.push(message)\n }\n }\n\n if (!pkg.main && strict && strictOptions.alwaysPackageJsonMain !== 'off') {\n report(strictOptions.alwaysPackageJsonMain, 'package.json: `main` must be declared')\n }\n\n if (!Array.isArray(pkg.files) && strict && strictOptions.alwaysPackageJsonFiles !== 'off') {\n report(\n strictOptions.alwaysPackageJsonFiles,\n 'package.json: `files` should be used over `.npmignore`',\n )\n }\n\n if (pkg.source) {\n if (\n strict &&\n pkg.exports?.['.'] &&\n typeof pkg.exports['.'] === 'object' &&\n 'source' in pkg.exports['.'] &&\n pkg.exports['.'].source === pkg.source\n ) {\n errors.push(\n 'package.json: the \"source\" property can be removed, as it is equal to exports[\".\"].source.',\n )\n } else if (!pkg.exports && pkg.main) {\n const extMap = pkgExtMap[type]\n const importExport = pkg.main.replace(fileEnding, extMap.esm)\n const requireExport = pkg.main.replace(fileEnding, extMap.commonjs)\n const defaultExport = pkg.main.replace(fileEnding, defaultEnding)\n\n const maybeBrowserCondition = []\n\n if (pkg.browser) {\n const browserConditions = []\n\n if (pkg.module && pkg.browser?.[pkg.module]) {\n browserConditions.push(\n ` \"import\": ${JSON.stringify(pkg.browser[pkg.module].replace(fileEnding, extMap.esm))}`,\n )\n } else if (pkg.browser?.[pkg.main]) {\n browserConditions.push(\n ` \"import\": ${JSON.stringify(pkg.browser?.[pkg.main].replace(fileEnding, extMap.esm))}`,\n )\n }\n\n if (pkg.browser?.[pkg.main]) {\n browserConditions.push(\n ` \"require\": ${JSON.stringify(pkg.browser[pkg.main].replace(fileEnding, extMap.commonjs))}`,\n )\n }\n\n if (browserConditions.length) {\n maybeBrowserCondition.push(\n ` \"browser\": {`,\n ` \"source\": ${JSON.stringify(pkg.browser?.[pkg.source] || pkg.source)},`,\n ...browserConditions,\n ` }`,\n )\n }\n }\n\n errors.push(\n ...([\n 'package.json: `exports` are missing, it should be:',\n `\"exports\": {`,\n ` \".\": {`,\n ` \"source\": ${JSON.stringify(pkg.source)},`,\n // If browser conditions are detected then add them to the suggestion\n ...(maybeBrowserCondition.length > 0 ? maybeBrowserCondition : []),\n type === 'commonjs' && ` \"import\": ${JSON.stringify(importExport)},`,\n type === 'module' && ` \"require\": ${JSON.stringify(requireExport)},`,\n ` \"default\": ${JSON.stringify(defaultExport)}`,\n ` },`,\n ` \"./package.json\": \"./package.json\"`,\n `}`,\n ].filter(Boolean) as string[]),\n )\n }\n }\n\n if (errors.length) {\n throw new Error('\\n- ' + errors.join('\\n- '))\n }\n\n if (!pkg.exports) {\n throw new Error(\n '\\n- ' +\n [\n 'package.json: `exports` are missing, please set a minimal configuration, for example:',\n `\"exports\": {`,\n ` \".\": {`,\n ` \"source\": \"./src/index.js\",`,\n ` \"default\": \"./dist/index.js\"`,\n ` },`,\n ` \"./package.json\": \"./package.json\"`,\n `}`,\n ].join('\\n- '),\n )\n }\n\n const _exports: (PkgExport & {_path: string})[] = []\n\n if (strict && strictOptions.noPackageJsonTypings !== 'off' && 'typings' in pkg) {\n report(strictOptions.noPackageJsonTypings, 'package.json: `typings` should be `types`')\n }\n\n if (\n strict &&\n strictOptions.alwaysPackageJsonTypes !== 'off' &&\n !pkg.types &&\n typeof pkg.exports?.['.'] === 'object' &&\n 'source' in pkg.exports['.'] &&\n pkg.exports['.'].source?.endsWith('.ts')\n ) {\n report(\n strictOptions.alwaysPackageJsonTypes,\n 'package.json: `types` must be declared for the npm listing to show as a TypeScript module.',\n )\n }\n\n if (strict && !pkg.exports['./package.json']) {\n errors.push('package.json: `exports[\"./package.json\"] must be declared.')\n }\n\n for (const [exportPath, exportEntry] of Object.entries(pkg.exports)) {\n if (\n exportPath.endsWith('.json') ||\n (typeof exportEntry === 'string' && exportEntry.endsWith('.json'))\n ) {\n if (exportPath === './package.json') {\n if (exportEntry !== './package.json') {\n errors.push('package.json: `exports[\"./package.json\"]` must be \"./package.json\".')\n }\n }\n } else if (exportPath.endsWith('.css')) {\n if (typeof exportEntry === 'string' && !existsSync(resolvePath(cwd, exportEntry))) {\n errors.push(\n `package.json: \\`exports[${JSON.stringify(exportPath)}]\\`: file does not exist.`,\n )\n } else if (typeof exportEntry !== 'string') {\n errors.push(\n `package.json: \\`exports[${JSON.stringify(exportPath)}]\\`: export conditions not supported for CSS files.`,\n )\n }\n } else if (isRecord(exportEntry) && 'svelte' in exportEntry) {\n // @TODO should we report a warning or a debug message here about a detected svelte export that is ignored?\n } else if (isPkgExport(exportEntry)) {\n const exp = {\n _exported: true,\n _path: exportPath,\n ...exportEntry,\n } satisfies PkgExport & {_path: string}\n\n // Infer the `default` condition based on the `type` and other conditions\n if (!exp.default) {\n const fallback = type === 'module' ? exp.import : exp.require\n\n if (fallback) {\n exp.default = fallback\n }\n }\n\n // Infer the `require` condition based on the `type` and other conditions\n if (!exp.require && type === 'commonjs' && exp.default) {\n exp.require = exp.default\n }\n\n // Infer the `import` condition based on the `type` and other conditions\n if (!exp.import && type === 'module' && exp.default) {\n exp.import = exp.default\n }\n\n if (exportPath === '.') {\n if (exportEntry.require && pkg.main && exportEntry.require !== pkg.main) {\n errors.push(\n 'package.json: mismatch between \"main\" and \"exports.require\". These must be equal.',\n )\n }\n\n if (exportEntry.import && pkg.module && exportEntry.import !== pkg.module) {\n errors.push(\n 'package.json: mismatch between \"module\" and \"exports.import\" These must be equal.',\n )\n }\n }\n\n _exports.push(exp)\n } else if (!isRecord(exportEntry)) {\n errors.push('package.json: exports must be an object')\n }\n }\n\n errors.push(...validateExports(_exports, {pkg}))\n\n if (errors.length) {\n throw new Error('\\n- ' + errors.join('\\n- '))\n }\n\n return _exports\n}\n\nfunction isPkgExport(value: unknown): value is PkgExport {\n return isRecord(value) && 'source' in value && typeof value['source'] === 'string'\n}\n","import ts from 'typescript'\n\n/** @internal */\nexport async function loadTSConfig(options: {\n cwd: string\n tsconfigPath: string\n}): Promise<ts.ParsedCommandLine | undefined> {\n const {cwd, tsconfigPath} = options\n\n const configPath = ts.findConfigFile(cwd, ts.sys.fileExists, tsconfigPath)\n\n if (!configPath) {\n return undefined\n }\n\n const configFile = ts.readConfigFile(configPath, ts.sys.readFile)\n\n return ts.parseJsonConfigFileContent(configFile.config, ts.sys, cwd)\n}\n","export function resolveBrowserTarget(versions: string[]): string[] | undefined {\n const target: string[] = versions.filter(\n (version) =>\n version.startsWith('chrome') ||\n version.startsWith('edge') ||\n version.startsWith('firefox') ||\n version.startsWith('ios') ||\n version.startsWith('safari') ||\n version.startsWith('opera'),\n )\n\n if (target.length === 0) {\n return undefined\n }\n\n return target\n}\n","export function resolveNodeTarget(versions: string[]): string[] | undefined {\n const target: string[] = versions.filter((version) => version.startsWith('node'))\n\n if (target.length === 0) {\n return undefined\n }\n\n return target\n}\n","import {z} from 'zod'\nimport {errorMap} from 'zod-validation-error'\n\n/**\n * @public\n */\nexport const toggle = z.union([z.literal('error'), z.literal('warn'), z.literal('off')])\n\n/**\n * @public\n */\nexport type ToggleType = z.infer<typeof toggle>\n\n/**\n * @public\n */\nexport const strictOptions = z\n .object({\n noPackageJsonTypings: toggle.default('error'),\n noImplicitSideEffects: toggle.default('warn'),\n noImplicitBrowsersList: toggle.default('warn'),\n alwaysPackageJsonTypes: toggle.default('error'),\n alwaysPackageJsonMain: toggle.default('error'),\n alwaysPackageJsonFiles: toggle.default('error'),\n })\n .strict()\n\n/**\n * To make error message paths line up with the paths in package.config.ts the schema is hoisted into a root schema\n * This way errors will say `Expected boolean, received string at \"strict.noPackageJsonTypings\"` instead of `Expected boolean, received string at \"noPackageJsonTypings\"`.\n */\nconst validationSchema = z.object({\n strictOptions: strictOptions.default({}),\n})\n\n/**\n * @public\n */\nexport type InferredStrictOptions = z.infer<typeof strictOptions>\n\n/**\n * @public\n */\nexport interface StrictOptions {\n /**\n * Disallows a top level `typings` field in `package.json` if it is equal to `exports['.'].source`.\n * @defaultValue 'error'\n */\n noPackageJsonTypings?: ToggleType\n /**\n * Requires specifying `sideEffects` in `package.json`.\n * @defaultValue 'warn'\n */\n noImplicitSideEffects?: ToggleType\n /**\n * Requires specifying `browserslist` in `package.json`, instead of relying on it implicitly being:\n * @example\n * ```\n * \"browserslist\": \"extends @sanity/browserslist-config\"\n * ```\n * @defaultValue 'warn'\n */\n noImplicitBrowsersList?: ToggleType\n /**\n * If typescript is used then `types` in `package.json` should be specified for npm listings to show the TS icon.\n * @defaultValue 'error'\n */\n alwaysPackageJsonTypes?: ToggleType\n /**\n * A lot of analysis tooling requiers the `main` field to work (like bundlephobia) and so it's best practice to always include it\n * @defaultValue 'error'\n */\n alwaysPackageJsonMain?: ToggleType\n /**\n * Using `.npmignore` is error prone, it's best practice to always declare `files` instead\n * @defaultValue 'error'\n */\n alwaysPackageJsonFiles?: ToggleType\n}\n\n/** @alpha */\nexport function parseStrictOptions(input: unknown): InferredStrictOptions {\n return validationSchema.parse({strictOptions: input}, {errorMap}).strictOptions\n}\n","import path from 'node:path'\nimport browserslistToEsbuild from 'browserslist-to-esbuild'\nimport {resolveConfigProperty} from './core/config/resolveConfigProperty'\nimport {type PkgConfigOptions, type PkgExports, type PkgRuntime} from './core/config/types'\nimport type {BuildContext} from './core/contexts/buildContext'\nimport {DEFAULT_BROWSERSLIST_QUERY} from './core/defaults'\nimport {findCommonDirPath, pathContains} from './core/findCommonPath'\nimport {parseExports} from './core/pkg/parseExports'\nimport type {PackageJSON} from './core/pkg/types'\nimport {loadTSConfig} from './core/ts/loadTSConfig'\nimport type {Logger} from './logger'\nimport {resolveBrowserTarget} from './resolveBrowserTarget'\nimport {resolveNodeTarget} from './resolveNodeTarget'\nimport {parseStrictOptions} from './strict'\n\nexport async function resolveBuildContext(options: {\n config?: PkgConfigOptions\n cwd: string\n emitDeclarationOnly?: boolean\n logger: Logger\n pkg: PackageJSON\n strict: boolean\n tsconfig: string\n}): Promise<BuildContext> {\n const {\n config,\n cwd,\n emitDeclarationOnly = false,\n logger,\n pkg,\n strict,\n tsconfig: tsconfigPath,\n } = options\n const tsconfig = await loadTSConfig({cwd, tsconfigPath})\n const strictOptions = parseStrictOptions(config?.strictOptions ?? {})\n\n let browserslist = pkg.browserslist\n if (!browserslist) {\n if (strict && strictOptions.noImplicitBrowsersList !== 'off') {\n if (strictOptions.noImplicitBrowsersList === 'error') {\n throw new Error(\n '\\n- ' +\n `package.json: \"browserslist\" is missing, set it to \\`\"browserslist\": \"extends @sanity/browserslist-config\"\\``,\n )\n } else {\n logger.warn(\n 'Could not detect a `browserslist` property in `package.json`, using default configuration. Add `\"browserslist\": \"extends @sanity/browserslist-config\"` to silence this warning.',\n )\n }\n }\n browserslist = DEFAULT_BROWSERSLIST_QUERY\n }\n const targetVersions = browserslistToEsbuild(browserslist)\n\n if (\n strict &&\n strictOptions.noImplicitSideEffects !== 'off' &&\n typeof pkg.sideEffects === 'undefined'\n ) {\n const msg =\n 'package.json: `sideEffects` is missing, see https://webpack.js.org/guides/tree-shaking/#clarifying-tree-shaking-and-sideeffects for how to define `sideEffects`'\n\n if (strictOptions.noImplicitSideEffects === 'error') {\n throw new Error(msg)\n } else {\n logger.warn(msg)\n }\n }\n\n const nodeTarget = resolveNodeTarget(targetVersions)\n const webTarget = resolveBrowserTarget(targetVersions)\n\n if (!nodeTarget) {\n throw new Error('no matching `node` target')\n }\n\n if (!webTarget) {\n throw new Error('no matching `web` target')\n }\n\n const target: Record<PkgRuntime, string[]> = {\n '*': webTarget.concat(nodeTarget),\n 'browser': webTarget,\n 'node': nodeTarget,\n }\n\n const parsedExports = parseExports({\n cwd,\n pkg,\n strict,\n strictOptions,\n logger,\n }).reduce<PkgExports>(\n (acc, {_path: exportPath, ...exportEntry}) => Object.assign(acc, {[exportPath]: exportEntry}),\n {},\n )\n\n const exports = resolveConfigProperty(config?.exports, parsedExports)\n\n const parsedExternal = [\n ...(pkg.dependencies ? Object.keys(pkg.dependencies) : []),\n ...(pkg.peerDependencies ? Object.keys(pkg.peerDependencies) : []),\n ]\n\n // Merge externals if an array is provided, replace if it's a function\n const external =\n config && Array.isArray(config.external)\n ? [...parsedExternal, ...config.external]\n : resolveConfigProperty(config?.external, parsedExternal)\n // Merge bundledPackages with dev deps, replace if it's a function\n const externalWithTypes = new Set([pkg.name, ...external, ...external.map(transformPackageName)])\n const bundledDependencies = (pkg.devDependencies ? Object.keys(pkg.devDependencies) : []).filter(\n // Do not bundle anything that is marked as external\n (_) => !externalWithTypes.has(_),\n )\n const bundledPackages =\n config && Array.isArray(config.extract?.bundledPackages)\n ? [...bundledDependencies, ...config.extract.bundledPackages]\n : resolveConfigProperty(config?.extract?.bundledPackages, bundledDependencies)\n\n const outputPaths = Object.values(exports)\n .flatMap((exportEntry) => {\n return [\n exportEntry.import,\n exportEntry.require,\n exportEntry.browser?.import,\n exportEntry.browser?.require,\n exportEntry.node?.source && exportEntry.node.import,\n exportEntry.node?.source && exportEntry.node.require,\n ].filter(Boolean) as string[]\n })\n .map((p) => path.resolve(cwd, p))\n\n const commonDistPath = findCommonDirPath(outputPaths)\n\n if (commonDistPath === cwd) {\n throw new Error(\n 'all output files must share a common parent directory which is not the root package directory',\n )\n }\n\n if (commonDistPath && !pathContains(cwd, commonDistPath)) {\n throw new Error('all output files must be located within the package')\n }\n\n const configDistPath = config?.dist ? path.resolve(cwd, config.dist) : undefined\n\n if (\n configDistPath &&\n commonDistPath &&\n configDistPath !== commonDistPath &&\n !pathContains(configDistPath, commonDistPath)\n ) {\n logger.log(`did you mean to configure \\`dist: './${path.relative(cwd, commonDistPath)}'\\`?`)\n\n throw new Error('all output files must be located with the configured `dist` path')\n }\n\n const distPath = configDistPath || commonDistPath\n\n if (!distPath) {\n throw new Error('could not detect `dist` path')\n }\n\n const ctx: BuildContext = {\n config,\n cwd,\n distPath,\n emitDeclarationOnly,\n exports,\n external,\n bundledPackages,\n files: [],\n logger,\n pkg,\n runtime: config?.runtime ?? '*',\n strict,\n target,\n ts: {\n config: tsconfig,\n configPath: tsconfigPath,\n },\n dts: config?.dts === 'rolldown' ? 'rolldown' : 'api-extractor',\n }\n\n return ctx\n}\n\nfunction transformPackageName(packageName: string): string {\n if (packageName.startsWith('@types/')) {\n // If it already starts with @types, return it as is\n return packageName\n } else if (packageName.startsWith('@')) {\n // Handle scoped packages\n const [scope, name] = packageName.split('/')\n\n return `@types/${scope.slice(1)}__${name}`\n } else {\n // Handle regular packages\n return `@types/${packageName}`\n }\n}\n","export interface ConsoleSpyMsg {\n type: 'log' | 'warn' | 'error'\n code?: string\n args: unknown[]\n}\n\nexport interface ConsoleSpy {\n messages: ConsoleSpyMsg[]\n restore: () => void\n}\n\nexport function createConsoleSpy(options?: {\n onRestored?: (messages: ConsoleSpyMsg[]) => void\n}): ConsoleSpy {\n const {onRestored} = options || {}\n\n const original = {\n log: console.log,\n warn: console.warn,\n error: console.error,\n }\n\n const messages: ConsoleSpyMsg[] = []\n\n console.log = (...args: unknown[]) => messages.push({type: 'log', args})\n console.warn = (...args: unknown[]) => messages.push({type: 'warn', args})\n console.error = (...args: unknown[]) => messages.push({type: 'error', args})\n\n return {\n messages,\n restore: () => {\n console.log = original.log\n console.warn = original.warn\n console.error = original.error\n\n onRestored?.(messages)\n },\n }\n}\n"],"names":["require","path","isPkgExport","extMap","strictOptions","resolvePath","config","browserslist"],"mappings":"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","x_google_ignoreList":[6]}
@@ -0,0 +1,8 @@
1
+ import chalk from "chalk";
2
+ function handleError(err) {
3
+ err instanceof Error ? console.error(chalk.red("error"), err.message) : console.error(err), process.exit(1);
4
+ }
5
+ export {
6
+ handleError
7
+ };
8
+ //# sourceMappingURL=handleError.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"handleError.js","sources":["../../src/cli/handleError.ts"],"sourcesContent":["import chalk from 'chalk'\n\nexport function handleError(err: unknown): void {\n if (err instanceof Error) {\n console.error(chalk.red('error'), err.message)\n } else {\n console.error(err)\n }\n\n process.exit(1)\n}\n"],"names":[],"mappings":";AAEO,SAAS,YAAY,KAAoB;AAC1C,iBAAe,QACjB,QAAQ,MAAM,MAAM,IAAI,OAAO,GAAG,IAAI,OAAO,IAE7C,QAAQ,MAAM,GAAG,GAGnB,QAAQ,KAAK,CAAC;AAChB;"}