@sanity/pkg-utils 1.1.0 → 1.3.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.
@@ -6,7 +6,9 @@ var require$$1 = require('fs');
6
6
  var require$$2 = require('module');
7
7
  var require$$3 = require('esbuild');
8
8
  var require$$4 = require('process');
9
+ var findConfig = require('find-config');
9
10
  var pkgUp = require('pkg-up');
11
+ var browserslist = require('browserslist');
10
12
  var util = require('util');
11
13
  var rimrafCallback = require('rimraf');
12
14
  var ts = require('typescript');
@@ -30,7 +32,9 @@ var require$$1__default = /*#__PURE__*/_interopDefaultLegacy(require$$1);
30
32
  var require$$2__default = /*#__PURE__*/_interopDefaultLegacy(require$$2);
31
33
  var require$$3__default = /*#__PURE__*/_interopDefaultLegacy(require$$3);
32
34
  var require$$4__default = /*#__PURE__*/_interopDefaultLegacy(require$$4);
35
+ var findConfig__default = /*#__PURE__*/_interopDefaultLegacy(findConfig);
33
36
  var pkgUp__default = /*#__PURE__*/_interopDefaultLegacy(pkgUp);
37
+ var browserslist__default = /*#__PURE__*/_interopDefaultLegacy(browserslist);
34
38
  var rimrafCallback__default = /*#__PURE__*/_interopDefaultLegacy(rimrafCallback);
35
39
  var ts__default = /*#__PURE__*/_interopDefaultLegacy(ts);
36
40
  var fs__default = /*#__PURE__*/_interopDefaultLegacy(fs);
@@ -39,6 +43,15 @@ var commonjs__default = /*#__PURE__*/_interopDefaultLegacy(commonjs);
39
43
  var json__default = /*#__PURE__*/_interopDefaultLegacy(json);
40
44
  var esbuild__default = /*#__PURE__*/_interopDefaultLegacy(esbuild);
41
45
 
46
+ const _DEFAULTS = {
47
+ browserslist: [
48
+ "> 0.2% and supports es6-module and supports es6-module-dynamic-import",
49
+ "not dead",
50
+ "not IE 11",
51
+ "maintained node versions"
52
+ ]
53
+ };
54
+
42
55
  function _isRecord(value) {
43
56
  return Boolean(value) && !Array.isArray(value) && typeof value === "object";
44
57
  }
@@ -4913,17 +4926,32 @@ async function _loadConfig(options) {
4913
4926
  if (!pkgPath)
4914
4927
  return void 0;
4915
4928
  const root = path__default["default"].dirname(pkgPath);
4929
+ const configFile = _findConfigFile(root);
4930
+ if (!configFile) {
4931
+ return void 0;
4932
+ }
4916
4933
  try {
4917
- const { unregister } = node.register({ extensions: [".js", ".ts"] });
4918
- const mod = require(path__default["default"].resolve(root, "package.config.ts"));
4934
+ const { unregister } = configFile.transform ? node.register({ extensions: [".js", ".ts"] }) : { unregister: () => void 0 };
4935
+ const mod = require(configFile.path);
4919
4936
  unregister();
4920
- return mod.default;
4937
+ return (mod == null ? void 0 : mod.default) || mod || void 0;
4921
4938
  } catch (_) {
4922
4939
  return void 0;
4923
4940
  }
4924
4941
  }
4942
+ function _findConfigFile(cwd) {
4943
+ const ts = findConfig__default["default"]("package.config.ts", { cwd });
4944
+ if (ts)
4945
+ return { path: ts, transform: true };
4946
+ const cjs = findConfig__default["default"]("package.config.cjs", { cwd });
4947
+ if (cjs)
4948
+ return { path: cjs, transform: false };
4949
+ return null;
4950
+ }
4925
4951
 
4926
4952
  function _resolveConfigProperty(prop, initialValue) {
4953
+ if (!prop)
4954
+ return initialValue;
4927
4955
  if (typeof prop === "function") {
4928
4956
  return prop(initialValue);
4929
4957
  }
@@ -4939,7 +4967,7 @@ async function _loadPkg(options) {
4939
4967
  function _parseExports(pkg) {
4940
4968
  const rootExport = {
4941
4969
  path: ".",
4942
- runtime: "web",
4970
+ runtime: void 0,
4943
4971
  source: pkg.source || "index.js",
4944
4972
  require: pkg.main,
4945
4973
  default: pkg.module,
@@ -4954,7 +4982,6 @@ function _parseExports(pkg) {
4954
4982
  } else {
4955
4983
  extraExports.push({
4956
4984
  path: exportPath,
4957
- runtime: "web",
4958
4985
  source: exportEntry.source,
4959
4986
  ...exportEntry
4960
4987
  });
@@ -4967,8 +4994,58 @@ function _parseExports(pkg) {
4967
4994
  return [rootExport, ...extraExports];
4968
4995
  }
4969
4996
 
4997
+ function _sortAsNumber(a, b) {
4998
+ const aVersion = Number(a);
4999
+ const bVersion = Number(b);
5000
+ return aVersion - bVersion;
5001
+ }
5002
+ function _parseBrowserslistVersions(query) {
5003
+ const result = browserslist__default["default"](query);
5004
+ const entries = result.map((key) => {
5005
+ const [name, version] = key.split(" ");
5006
+ return { name, version: version.split("-")[0].split(".")[0] };
5007
+ });
5008
+ const andChr = entries.filter((b) => b.name === "and_chr");
5009
+ const andFf = entries.filter((b) => b.name === "and_ff");
5010
+ const chrome = entries.filter((b) => b.name === "chrome");
5011
+ const edge = entries.filter((b) => b.name === "edge");
5012
+ const ff = entries.filter((b) => b.name === "firefox");
5013
+ const iosSaf = entries.filter((b) => b.name === "ios_saf");
5014
+ const saf = entries.filter((b) => b.name === "safari");
5015
+ const opera = entries.filter((b) => b.name === "opera");
5016
+ const node = entries.filter((b) => b.name === "node");
5017
+ const versions = {
5018
+ chrome: andChr.concat(chrome).map((b) => b.version),
5019
+ ff: andFf.concat(ff).map((b) => b.version),
5020
+ edge: edge.map((b) => b.version),
5021
+ iosSaf: iosSaf.map((b) => b.version),
5022
+ saf: saf.map((b) => b.version),
5023
+ opera: opera.map((b) => b.version),
5024
+ node: node.map((b) => b.version)
5025
+ };
5026
+ versions.chrome.sort(_sortAsNumber);
5027
+ versions.ff.sort(_sortAsNumber);
5028
+ versions.edge.sort(_sortAsNumber);
5029
+ versions.iosSaf.sort(_sortAsNumber);
5030
+ versions.saf.sort(_sortAsNumber);
5031
+ versions.opera.sort(_sortAsNumber);
5032
+ versions.node.sort(_sortAsNumber);
5033
+ return versions;
5034
+ }
5035
+
5036
+ function _parseNodeTarget(versions) {
5037
+ const target = [];
5038
+ if (versions.node.length) {
5039
+ target.push(`node${versions.node[0]}`);
5040
+ }
5041
+ if (target.length === 0) {
5042
+ return void 0;
5043
+ }
5044
+ return target;
5045
+ }
5046
+
4970
5047
  function _parseTasks(ctx) {
4971
- const { pkg } = ctx;
5048
+ const { config, pkg } = ctx;
4972
5049
  const entries = Object.entries(ctx.exports || {}).map(
4973
5050
  ([path2, entry]) => ({ path: path2, ...entry })
4974
5051
  );
@@ -4989,6 +5066,7 @@ function _parseTasks(ctx) {
4989
5066
  }
4990
5067
  }
4991
5068
  for (const entry of entries) {
5069
+ const runtime = entry.runtime || (config == null ? void 0 : config.runtime) || "web";
4992
5070
  const format = [];
4993
5071
  const target = [];
4994
5072
  if (entry.require) {
@@ -4997,20 +5075,20 @@ function _parseTasks(ctx) {
4997
5075
  if (entry.default) {
4998
5076
  format.push("esm");
4999
5077
  }
5000
- if (entry.runtime === "node") {
5001
- target.push("node12");
5078
+ if (runtime === "node") {
5079
+ target.push(...ctx.target.node);
5002
5080
  }
5003
- if (entry.runtime === "web") {
5004
- target.push("chrome104");
5081
+ if (runtime === "web") {
5082
+ target.push(...ctx.target.web);
5005
5083
  }
5006
5084
  for (const f of format) {
5007
- const buildId = `${entry.runtime}:${f}:${target.join(",")}`;
5085
+ const buildId = `${runtime}:${f}:${target.join(",")}`;
5008
5086
  if (!rollupTasks[buildId]) {
5009
5087
  rollupTasks[buildId] = {
5010
5088
  type: "rollup",
5011
5089
  buildId,
5012
5090
  entries: [entry],
5013
- runtime: entry.runtime,
5091
+ runtime,
5014
5092
  format: f,
5015
5093
  target
5016
5094
  };
@@ -5029,6 +5107,32 @@ function _parseTasks(ctx) {
5029
5107
  return tasks;
5030
5108
  }
5031
5109
 
5110
+ function _parseWebTarget(versions) {
5111
+ const target = [];
5112
+ if (versions.chrome.length) {
5113
+ target.push(`chrome${versions.chrome[0]}`);
5114
+ }
5115
+ if (versions.ff.length) {
5116
+ target.push(`firefox${versions.ff[0]}`);
5117
+ }
5118
+ if (versions.edge.length) {
5119
+ target.push(`edge${versions.edge[0]}`);
5120
+ }
5121
+ if (versions.iosSaf.length) {
5122
+ target.push(`ios${versions.iosSaf[0]}`);
5123
+ }
5124
+ if (versions.saf.length) {
5125
+ target.push(`safari${versions.saf[0]}`);
5126
+ }
5127
+ if (versions.opera.length) {
5128
+ target.push(`opera${versions.opera[0]}`);
5129
+ }
5130
+ if (target.length === 0) {
5131
+ return void 0;
5132
+ }
5133
+ return target;
5134
+ }
5135
+
5032
5136
  async function _loadTSConfig(options) {
5033
5137
  const { cwd, tsconfigPath } = options;
5034
5138
  const configPath = ts__default["default"].findConfigFile(cwd, ts__default["default"].sys.fileExists, tsconfigPath);
@@ -5383,14 +5487,23 @@ async function build(options) {
5383
5487
  const { path: exportPath, ...exportEntry } = x;
5384
5488
  return { ...acc, [exportPath]: exportEntry };
5385
5489
  }, {});
5386
- const exports = (config == null ? void 0 : config.exports) ? _resolveConfigProperty(config.exports, parsedExports) : parsedExports;
5387
- const initialExternal = [
5490
+ const exports = _resolveConfigProperty(config == null ? void 0 : config.exports, parsedExports);
5491
+ const parsedExternal = [
5388
5492
  ...pkg.dependencies ? Object.keys(pkg.dependencies) : [],
5389
5493
  ...pkg.peerDependencies ? Object.keys(pkg.peerDependencies) : []
5390
5494
  ];
5391
- const external = (config == null ? void 0 : config.external) ? _resolveConfigProperty(config.external, initialExternal) : initialExternal;
5495
+ const external = _resolveConfigProperty(config == null ? void 0 : config.external, parsedExternal);
5496
+ const targetVersions = _parseBrowserslistVersions(pkg.browserslist || _DEFAULTS.browserslist);
5392
5497
  const srcPath = path__default["default"].resolve(cwd, (config == null ? void 0 : config.src) || "src");
5393
5498
  const distPath = path__default["default"].resolve(cwd, (config == null ? void 0 : config.dist) || "dist");
5499
+ const nodeTarget = _parseNodeTarget(targetVersions);
5500
+ const webTarget = _parseWebTarget(targetVersions);
5501
+ if (!nodeTarget) {
5502
+ throw new Error("no matching `node` target");
5503
+ }
5504
+ if (!webTarget) {
5505
+ throw new Error("no matching `web` target");
5506
+ }
5394
5507
  const context = {
5395
5508
  config,
5396
5509
  cwd,
@@ -5401,6 +5514,7 @@ async function build(options) {
5401
5514
  dist: path__default["default"].relative(cwd, distPath),
5402
5515
  pkg,
5403
5516
  src: path__default["default"].relative(cwd, srcPath),
5517
+ target: { node: nodeTarget, web: webTarget },
5404
5518
  tsconfig
5405
5519
  };
5406
5520
  console.log(chalk__default["default"].gray("cwd "), context.cwd);
@@ -5425,10 +5539,11 @@ async function build(options) {
5425
5539
  }
5426
5540
  }
5427
5541
 
5542
+ exports._DEFAULTS = _DEFAULTS;
5428
5543
  exports._isRecord = _isRecord;
5429
5544
  exports._loadConfig = _loadConfig;
5430
5545
  exports._loadPkg = _loadPkg;
5431
5546
  exports._parseExports = _parseExports;
5432
5547
  exports._resolveConfigProperty = _resolveConfigProperty;
5433
5548
  exports.build = build;
5434
- //# sourceMappingURL=_build-f5ddd6ac.cjs.map
5549
+ //# sourceMappingURL=_build-5bf997de.cjs.map