@sanity/pkg-utils 1.20.1 → 1.20.3

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 (35) hide show
  1. package/dist/_chunks/{build-bcb33ba5.js → build-983490bb.js} +16 -14
  2. package/dist/_chunks/build-983490bb.js.map +1 -0
  3. package/dist/_chunks/{buildAction-f240dab8.js → buildAction-240dc427.js} +6 -6
  4. package/dist/_chunks/{buildAction-f240dab8.js.map → buildAction-240dc427.js.map} +1 -1
  5. package/dist/_chunks/{check-1ea361f5.js → check-6c4e87a9.js} +24 -24
  6. package/dist/_chunks/check-6c4e87a9.js.map +1 -0
  7. package/dist/_chunks/{checkAction-16be1201.js → checkAction-abd2cc3d.js} +4 -4
  8. package/dist/_chunks/{checkAction-16be1201.js.map → checkAction-abd2cc3d.js.map} +1 -1
  9. package/dist/_chunks/handleError-4062ca45.js +17 -0
  10. package/dist/_chunks/{handleError-65cf3242.js.map → handleError-4062ca45.js.map} +1 -1
  11. package/dist/_chunks/{index-79fdb33f.js → index-60a8ccaf.js} +96 -78
  12. package/dist/_chunks/index-60a8ccaf.js.map +1 -0
  13. package/dist/_chunks/{resolveBuildContext-f2feec19.js → resolveBuildContext-904acf0f.js} +46 -45
  14. package/dist/_chunks/resolveBuildContext-904acf0f.js.map +1 -0
  15. package/dist/_chunks/{watch-02c85f8a.js → watch-580faef0.js} +21 -19
  16. package/dist/_chunks/{watch-02c85f8a.js.map → watch-580faef0.js.map} +1 -1
  17. package/dist/_chunks/{watchAction-9cb9681b.js → watchAction-aabcb0fb.js} +6 -6
  18. package/dist/_chunks/{watchAction-9cb9681b.js.map → watchAction-aabcb0fb.js.map} +1 -1
  19. package/dist/cli.js +8 -8
  20. package/dist/cli.js.map +1 -1
  21. package/dist/index.esm.js +38 -22
  22. package/dist/index.esm.js.map +1 -1
  23. package/dist/index.js +6 -6
  24. package/dist/index.js.map +1 -1
  25. package/package.json +39 -39
  26. package/src/global.ts +6 -0
  27. package/src/node/core/config/loadConfig.ts +7 -9
  28. package/src/node/spinner.ts +1 -1
  29. package/src/node/tasks/rollup/resolveRollupConfig.ts +5 -8
  30. package/src/node/tasks/rollup/rollupTask.ts +23 -4
  31. package/dist/_chunks/build-bcb33ba5.js.map +0 -1
  32. package/dist/_chunks/check-1ea361f5.js.map +0 -1
  33. package/dist/_chunks/handleError-65cf3242.js +0 -17
  34. package/dist/_chunks/index-79fdb33f.js.map +0 -1
  35. package/dist/_chunks/resolveBuildContext-f2feec19.js.map +0 -1
@@ -2,7 +2,9 @@
2
2
 
3
3
  function ownKeys(object, enumerableOnly) { var keys = Object.keys(object); if (Object.getOwnPropertySymbols) { var symbols = Object.getOwnPropertySymbols(object); enumerableOnly && (symbols = symbols.filter(function (sym) { return Object.getOwnPropertyDescriptor(object, sym).enumerable; })), keys.push.apply(keys, symbols); } return keys; }
4
4
  function _objectSpread(target) { for (var i = 1; i < arguments.length; i++) { var source = null != arguments[i] ? arguments[i] : {}; i % 2 ? ownKeys(Object(source), !0).forEach(function (key) { _defineProperty(target, key, source[key]); }) : Object.getOwnPropertyDescriptors ? Object.defineProperties(target, Object.getOwnPropertyDescriptors(source)) : ownKeys(Object(source)).forEach(function (key) { Object.defineProperty(target, key, Object.getOwnPropertyDescriptor(source, key)); }); } return target; }
5
- function _defineProperty(obj, key, value) { if (key in obj) { Object.defineProperty(obj, key, { value: value, enumerable: true, configurable: true, writable: true }); } else { obj[key] = value; } return obj; }
5
+ function _defineProperty(obj, key, value) { key = _toPropertyKey(key); if (key in obj) { Object.defineProperty(obj, key, { value: value, enumerable: true, configurable: true, writable: true }); } else { obj[key] = value; } return obj; }
6
+ function _toPropertyKey(arg) { var key = _toPrimitive(arg, "string"); return typeof key === "symbol" ? key : String(key); }
7
+ function _toPrimitive(input, hint) { if (typeof input !== "object" || input === null) return input; var prim = input[Symbol.toPrimitive]; if (prim !== undefined) { var res = prim.call(input, hint || "default"); if (typeof res !== "object") return res; throw new TypeError("@@toPrimitive must return a primitive value."); } return (hint === "string" ? String : Number)(input); }
6
8
  var chalk = require('chalk');
7
9
  var rxjs = require('rxjs');
8
10
  var path = require('path');
@@ -24,31 +26,32 @@ var commonjs = require('@rollup/plugin-commonjs');
24
26
  var json = require('@rollup/plugin-json');
25
27
  var pluginNodeResolve = require('@rollup/plugin-node-resolve');
26
28
  var replace = require('@rollup/plugin-replace');
29
+ var terser = require('@rollup/plugin-terser');
27
30
  var esbuild = require('rollup-plugin-esbuild');
28
- var rollupPluginTerser = require('rollup-plugin-terser');
29
- var resolveBuildContext = require('./resolveBuildContext-f2feec19.js');
31
+ var resolveBuildContext = require('./resolveBuildContext-904acf0f.js');
30
32
  require('esbuild-register/dist/node');
31
33
  require('pkg-up');
32
34
  require('find-config');
33
35
  require('zod');
34
- function _interopDefaultLegacy(e) {
36
+ function _interopDefaultCompat(e) {
35
37
  return e && typeof e === 'object' && 'default' in e ? e : {
36
- 'default': e
38
+ default: e
37
39
  };
38
40
  }
39
- var chalk__default = /*#__PURE__*/_interopDefaultLegacy(chalk);
40
- var path__default = /*#__PURE__*/_interopDefaultLegacy(path);
41
- var rimrafCallback__default = /*#__PURE__*/_interopDefaultLegacy(rimrafCallback);
42
- var ts__default = /*#__PURE__*/_interopDefaultLegacy(ts);
43
- var fs__default = /*#__PURE__*/_interopDefaultLegacy(fs);
44
- var mkdirp__default = /*#__PURE__*/_interopDefaultLegacy(mkdirp);
45
- var prettier__default = /*#__PURE__*/_interopDefaultLegacy(prettier);
46
- var typeScriptParser__default = /*#__PURE__*/_interopDefaultLegacy(typeScriptParser);
47
- var alias__default = /*#__PURE__*/_interopDefaultLegacy(alias);
48
- var commonjs__default = /*#__PURE__*/_interopDefaultLegacy(commonjs);
49
- var json__default = /*#__PURE__*/_interopDefaultLegacy(json);
50
- var replace__default = /*#__PURE__*/_interopDefaultLegacy(replace);
51
- var esbuild__default = /*#__PURE__*/_interopDefaultLegacy(esbuild);
41
+ var chalk__default = /*#__PURE__*/_interopDefaultCompat(chalk);
42
+ var path__default = /*#__PURE__*/_interopDefaultCompat(path);
43
+ var rimrafCallback__default = /*#__PURE__*/_interopDefaultCompat(rimrafCallback);
44
+ var ts__default = /*#__PURE__*/_interopDefaultCompat(ts);
45
+ var fs__default = /*#__PURE__*/_interopDefaultCompat(fs);
46
+ var mkdirp__default = /*#__PURE__*/_interopDefaultCompat(mkdirp);
47
+ var prettier__default = /*#__PURE__*/_interopDefaultCompat(prettier);
48
+ var typeScriptParser__default = /*#__PURE__*/_interopDefaultCompat(typeScriptParser);
49
+ var alias__default = /*#__PURE__*/_interopDefaultCompat(alias);
50
+ var commonjs__default = /*#__PURE__*/_interopDefaultCompat(commonjs);
51
+ var json__default = /*#__PURE__*/_interopDefaultCompat(json);
52
+ var replace__default = /*#__PURE__*/_interopDefaultCompat(replace);
53
+ var terser__default = /*#__PURE__*/_interopDefaultCompat(terser);
54
+ var esbuild__default = /*#__PURE__*/_interopDefaultCompat(esbuild);
52
55
  function printExtractMessages(ctx, messages) {
53
56
  const {
54
57
  cwd,
@@ -59,28 +62,28 @@ function printExtractMessages(ctx, messages) {
59
62
  logger.log();
60
63
  }
61
64
  for (const msg of warnings) {
62
- const sourceFilePath = msg.sourceFilePath && path__default["default"].relative(cwd, msg.sourceFilePath);
65
+ const sourceFilePath = msg.sourceFilePath && path__default.default.relative(cwd, msg.sourceFilePath);
63
66
  if (msg.messageId === "TS6307") {
64
67
  continue;
65
68
  }
66
- logger.log(["".concat(chalk__default["default"].cyan(sourceFilePath || "?")), ":".concat(chalk__default["default"].yellow(msg.sourceFileLine), ":").concat(chalk__default["default"].yellow(msg.sourceFileColumn)), " - ".concat(chalk__default["default"].yellow("warning"), " ").concat(chalk__default["default"].gray(msg.messageId), "\n"), msg.text, "\n"].join(""));
69
+ logger.log(["".concat(chalk__default.default.cyan(sourceFilePath || "?")), ":".concat(chalk__default.default.yellow(msg.sourceFileLine), ":").concat(chalk__default.default.yellow(msg.sourceFileColumn)), " - ".concat(chalk__default.default.yellow("warning"), " ").concat(chalk__default.default.gray(msg.messageId), "\n"), msg.text, "\n"].join(""));
67
70
  }
68
71
  const errors = messages.filter(msg => msg.logLevel === "error");
69
72
  if (!warnings.length && errors.length) {
70
73
  logger.log("");
71
74
  }
72
75
  for (const msg of errors) {
73
- const sourceFilePath = msg.sourceFilePath && path__default["default"].relative(cwd, msg.sourceFilePath);
74
- logger.log(["".concat(chalk__default["default"].cyan(sourceFilePath || "?")), ":".concat(chalk__default["default"].yellow(msg.sourceFileLine), ":").concat(chalk__default["default"].yellow(msg.sourceFileColumn)), " - ".concat(chalk__default["default"].red("error"), " ").concat(chalk__default["default"].gray(msg.messageId), "\n"), msg.text, "\n"].join(""));
76
+ const sourceFilePath = msg.sourceFilePath && path__default.default.relative(cwd, msg.sourceFilePath);
77
+ logger.log(["".concat(chalk__default.default.cyan(sourceFilePath || "?")), ":".concat(chalk__default.default.yellow(msg.sourceFileLine), ":").concat(chalk__default.default.yellow(msg.sourceFileColumn)), " - ".concat(chalk__default.default.red("error"), " ").concat(chalk__default.default.gray(msg.messageId), "\n"), msg.text, "\n"].join(""));
75
78
  }
76
79
  if (errors.length) {
77
80
  process.exit(1);
78
81
  }
79
82
  }
80
83
  const formatHost = {
81
- getCurrentDirectory: () => ts__default["default"].sys.getCurrentDirectory(),
82
- getNewLine: () => ts__default["default"].sys.newLine,
83
- getCanonicalFileName: ts__default["default"].sys.useCaseSensitiveFileNames ? f => f : f => f.toLowerCase()
84
+ getCurrentDirectory: () => ts__default.default.sys.getCurrentDirectory(),
85
+ getNewLine: () => ts__default.default.sys.newLine,
86
+ getCanonicalFileName: ts__default.default.sys.useCaseSensitiveFileNames ? f => f : f => f.toLowerCase()
84
87
  };
85
88
  async function buildTypes(options) {
86
89
  const {
@@ -95,25 +98,25 @@ async function buildTypes(options) {
95
98
  noEmit: false,
96
99
  outDir
97
100
  });
98
- const program = ts__default["default"].createProgram(tsconfig.fileNames, compilerOptions);
101
+ const program = ts__default.default.createProgram(tsconfig.fileNames, compilerOptions);
99
102
  const emitResult = program.emit();
100
- const allDiagnostics = ts__default["default"].getPreEmitDiagnostics(program).concat(emitResult.diagnostics);
103
+ const allDiagnostics = ts__default.default.getPreEmitDiagnostics(program).concat(emitResult.diagnostics);
101
104
  allDiagnostics.forEach(diagnostic => {
102
105
  if (diagnostic.file && diagnostic.start) {
103
106
  const {
104
107
  line,
105
108
  character
106
- } = ts__default["default"].getLineAndCharacterOfPosition(diagnostic.file, diagnostic.start);
107
- const message = ts__default["default"].flattenDiagnosticMessageText(diagnostic.messageText, "\n");
109
+ } = ts__default.default.getLineAndCharacterOfPosition(diagnostic.file, diagnostic.start);
110
+ const message = ts__default.default.flattenDiagnosticMessageText(diagnostic.messageText, "\n");
108
111
  console.log("".concat(diagnostic.file.fileName, " ").concat(line + 1, ":").concat(character + 1, "\n").concat(message));
109
112
  } else {
110
- console.log(ts__default["default"].flattenDiagnosticMessageText(diagnostic.messageText, "\n"));
113
+ console.log(ts__default.default.flattenDiagnosticMessageText(diagnostic.messageText, "\n"));
111
114
  }
112
115
  });
113
116
  if (emitResult.emitSkipped) {
114
- const errors = allDiagnostics.filter(diag => diag.category === ts__default["default"].DiagnosticCategory.Error);
117
+ const errors = allDiagnostics.filter(diag => diag.category === ts__default.default.DiagnosticCategory.Error);
115
118
  if (errors.length) {
116
- console.error(ts__default["default"].formatDiagnostics(errors, formatHost));
119
+ console.error(ts__default.default.formatDiagnostics(errors, formatHost));
117
120
  if (strict) {
118
121
  throw new Error("failed to compile TypeScript definitions");
119
122
  }
@@ -146,11 +149,11 @@ function createApiExtractorConfig(options) {
146
149
  },
147
150
  docModel: {
148
151
  enabled: false,
149
- apiJsonFilePath: path__default["default"].resolve(distPath, "".concat(exportPath, ".api.json"))
152
+ apiJsonFilePath: path__default.default.resolve(distPath, "".concat(exportPath, ".api.json"))
150
153
  },
151
154
  dtsRollup: {
152
155
  enabled: true,
153
- untrimmedFilePath: path__default["default"].resolve(distPath, filePath)
156
+ untrimmedFilePath: path__default.default.resolve(distPath, filePath)
154
157
  },
155
158
  tsdocMetadata: {
156
159
  enabled: false
@@ -202,7 +205,7 @@ async function extractModuleBlocksFromTypes(_ref) {
202
205
  }
203
206
  function extractModuleBlocks(fileContent) {
204
207
  const ast = recast.parse(fileContent, {
205
- parser: typeScriptParser__default["default"]
208
+ parser: typeScriptParser__default.default
206
209
  });
207
210
  return ast.program.body.filter(node => node.type === "TSModuleDeclaration").map(node => recast.print(node).code);
208
211
  }
@@ -302,7 +305,7 @@ async function extractTypes(options) {
302
305
  }),
303
306
  configObjectFullPath: void 0,
304
307
  tsdocConfigFile,
305
- packageJsonFullPath: path__default["default"].resolve(projectPath, "package.json")
308
+ packageJsonFullPath: path__default.default.resolve(projectPath, "package.json")
306
309
  });
307
310
  const messages = [];
308
311
  const extractorResult = apiExtractor.Extractor.invoke(extractorConfig, {
@@ -313,16 +316,16 @@ async function extractTypes(options) {
313
316
  message.handled = true;
314
317
  }
315
318
  });
316
- const typesPath = path__default["default"].resolve(distPath, filePath);
317
- const typesBuf = await fs__default["default"].readFile(typesPath);
318
- const prettierConfig = await prettier__default["default"].resolveConfig(typesPath);
319
- await mkdirp__default["default"](path__default["default"].dirname(typesPath));
319
+ const typesPath = path__default.default.resolve(distPath, filePath);
320
+ const typesBuf = await fs__default.default.readFile(typesPath);
321
+ const prettierConfig = await prettier__default.default.resolveConfig(typesPath);
322
+ await mkdirp__default.default(path__default.default.dirname(typesPath));
320
323
  const moduleBlocks = await extractModuleBlocksFromTypes({
321
324
  extractResult: extractorResult,
322
325
  tsOutDir: tmpPath
323
326
  });
324
327
  const code = [typesBuf.toString(), ...moduleBlocks].join("\n\n");
325
- await fs__default["default"].writeFile(typesPath, prettier__default["default"].format(code, _objectSpread(_objectSpread({}, prettierConfig), {}, {
328
+ await fs__default.default.writeFile(typesPath, prettier__default.default.format(code, _objectSpread(_objectSpread({}, prettierConfig), {}, {
326
329
  filepath: typesPath
327
330
  })));
328
331
  files.push({
@@ -334,7 +337,7 @@ async function extractTypes(options) {
334
337
  messages
335
338
  };
336
339
  }
337
- const rimraf = util.promisify(rimrafCallback__default["default"]);
340
+ const rimraf = util.promisify(rimrafCallback__default.default);
338
341
  async function doExtract(ctx, task) {
339
342
  var _a, _b;
340
343
  const {
@@ -358,7 +361,7 @@ async function doExtract(ctx, task) {
358
361
  if (!outDir) {
359
362
  throw new Error("tsconfig.json is missing `compilerOptions.outDir`");
360
363
  }
361
- const tmpPath = path__default["default"].resolve(outDir, "__tmp__");
364
+ const tmpPath = path__default.default.resolve(outDir, "__tmp__");
362
365
  await buildTypes({
363
366
  cwd,
364
367
  outDir: tmpPath,
@@ -369,9 +372,9 @@ async function doExtract(ctx, task) {
369
372
  const results = [];
370
373
  for (const entry of task.entries) {
371
374
  const exportPath = entry.exportPath === "." ? "./index" : entry.exportPath;
372
- const sourceTypesPath = path__default["default"].resolve(tmpPath, path__default["default"].relative(rootDir, path__default["default"].resolve(cwd, entry.sourcePath)).replace(/\.ts$/, ".d.ts"));
373
- const targetPath = path__default["default"].resolve(cwd, entry.targetPath);
374
- const filePath = path__default["default"].relative(outDir, targetPath);
375
+ const sourceTypesPath = path__default.default.resolve(tmpPath, path__default.default.relative(rootDir, path__default.default.resolve(cwd, entry.sourcePath)).replace(/\.ts$/, ".d.ts"));
376
+ const targetPath = path__default.default.resolve(cwd, entry.targetPath);
377
+ const filePath = path__default.default.relative(outDir, targetPath);
375
378
  const result = await extractTypes({
376
379
  customTags: (_a = config == null ? void 0 : config.extract) == null ? void 0 : _a.customTags,
377
380
  cwd,
@@ -383,7 +386,7 @@ async function doExtract(ctx, task) {
383
386
  rules: (_b = config == null ? void 0 : config.extract) == null ? void 0 : _b.rules,
384
387
  sourceTypesPath,
385
388
  tmpPath,
386
- tsconfigPath: path__default["default"].resolve(cwd, ts.configPath || "tsconfig.json")
389
+ tsconfigPath: path__default.default.resolve(cwd, ts.configPath || "tsconfig.json")
387
390
  });
388
391
  messages.push(...result.messages);
389
392
  if (result.messages.some(msg => msg.logLevel === "error")) {
@@ -391,7 +394,7 @@ async function doExtract(ctx, task) {
391
394
  throw new DtsError("encountered errors when extracting types", result.messages);
392
395
  }
393
396
  results.push({
394
- sourcePath: path__default["default"].resolve(cwd, entry.sourcePath),
397
+ sourcePath: path__default.default.resolve(cwd, entry.sourcePath),
395
398
  filePath: targetPath
396
399
  });
397
400
  }
@@ -403,7 +406,7 @@ async function doExtract(ctx, task) {
403
406
  };
404
407
  }
405
408
  const dtsTask = {
406
- name: (_ctx, task) => ["build type definitions", ...task.entries.map(entry => " ".concat(chalk__default["default"].blue(entry.importId), ": ").concat(entry.sourcePath, " -> ").concat(entry.targetPath))].join("\n"),
409
+ name: (_ctx, task) => ["build type definitions", ...task.entries.map(entry => " ".concat(chalk__default.default.blue(entry.importId), ": ").concat(entry.sourcePath, " -> ").concat(entry.targetPath))].join("\n"),
407
410
  exec: (ctx, task) => {
408
411
  return new rxjs.Observable(observer => {
409
412
  doExtract(ctx, task).then(result => {
@@ -429,7 +432,7 @@ const dtsTask = {
429
432
  }
430
433
  };
431
434
  const dtsWatchTask = {
432
- name: (_ctx, task) => ["build type definitions", ...task.entries.map(entry => " ".concat(chalk__default["default"].blue(entry.importId), ": ").concat(entry.sourcePath, " -> ").concat(entry.targetPath))].join("\n"),
435
+ name: (_ctx, task) => ["build type definitions", ...task.entries.map(entry => " ".concat(chalk__default.default.blue(entry.importId), ": ").concat(entry.sourcePath, " -> ").concat(entry.targetPath))].join("\n"),
433
436
  exec: (ctx, task) => {
434
437
  return new rxjs.Observable(observer => {
435
438
  doExtract(ctx, task).then(result => {
@@ -477,49 +480,49 @@ function resolveRollupConfig(ctx, buildTask) {
477
480
  } = ctx;
478
481
  const outputExt = resolveBuildContext.MODULE_EXT[pkg.type][format];
479
482
  const minify = (_ref2 = config == null ? void 0 : config.minify) !== null && _ref2 !== void 0 ? _ref2 : true;
480
- const outDir = path__default["default"].relative(cwd, distPath);
483
+ const outDir = path__default.default.relative(cwd, distPath);
481
484
  const pathAliases = Object.fromEntries(Object.entries(((_a = ts.config) == null ? void 0 : _a.options.paths) || {}).map(_ref3 => {
482
485
  let [key, val] = _ref3;
483
486
  var _a2;
484
- return [key, path__default["default"].resolve(cwd, ((_a2 = ts.config) == null ? void 0 : _a2.options.baseUrl) || ".", val[0])];
487
+ return [key, path__default.default.resolve(cwd, ((_a2 = ts.config) == null ? void 0 : _a2.options.baseUrl) || ".", val[0])];
485
488
  }));
486
489
  const entries = buildTask.entries.map(entry => {
487
490
  return _objectSpread(_objectSpread({}, entry), {}, {
488
- name: path__default["default"].relative(outDir, entry.output).replace(/\.[^/.]+$/, "")
491
+ name: path__default.default.relative(outDir, entry.output).replace(/\.[^/.]+$/, "")
489
492
  });
490
493
  }, {});
491
- const exportIds = _exports && Object.keys(_exports).map(exportPath => path__default["default"].join(pkg.name, exportPath));
492
- const sourcePaths = _exports && Object.values(_exports).map(e => path__default["default"].resolve(cwd, e.source));
494
+ const exportIds = _exports && Object.keys(_exports).map(exportPath => path__default.default.join(pkg.name, exportPath));
495
+ const sourcePaths = _exports && Object.values(_exports).map(e => path__default.default.resolve(cwd, e.source));
493
496
  const replacements = Object.fromEntries(Object.entries((config == null ? void 0 : config.define) || {}).map(_ref4 => {
494
497
  let [key, val] = _ref4;
495
498
  return [key, JSON.stringify(val)];
496
499
  }));
497
- const defaultPlugins = [replace__default["default"]({
500
+ const defaultPlugins = [replace__default.default({
498
501
  preventAssignment: true,
499
502
  values: _objectSpread({}, pkg.name === "@sanity/pkg-utils" ? _objectSpread({}, replacements) : _objectSpread({
500
503
  "process.env.PKG_FILE_PATH": arg => {
501
- const sourcePath = "./" + path__default["default"].relative(cwd, arg);
504
+ const sourcePath = "./" + path__default.default.relative(cwd, arg);
502
505
  const entry = entries.find(e => e.source === sourcePath);
503
506
  if (!entry) {
504
507
  console.error("could not find source entry: ".concat(sourcePath));
505
508
  return "null";
506
509
  }
507
- return JSON.stringify(path__default["default"].relative(cwd, path__default["default"].resolve(outDir, entry.name + outputExt)));
510
+ return JSON.stringify(path__default.default.relative(cwd, path__default.default.resolve(outDir, entry.name + outputExt)));
508
511
  },
509
512
  "process.env.PKG_FORMAT": JSON.stringify(format),
510
513
  "process.env.PKG_RUNTIME": JSON.stringify(runtime),
511
514
  "process.env.PKG_VERSION": JSON.stringify(process.env.PKG_VERSION || pkg.version)
512
515
  }, replacements))
513
- }), alias__default["default"]({
516
+ }), alias__default.default({
514
517
  entries: _objectSpread({}, pathAliases)
515
518
  }), pluginNodeResolve.nodeResolve({
516
519
  browser: runtime === "browser",
517
520
  extensions: [".cjs", ".mjs", ".js", ".jsx", ".json", ".node"],
518
521
  preferBuiltins: true
519
- }), commonjs__default["default"]({
522
+ }), commonjs__default.default({
520
523
  esmExternals: false,
521
524
  extensions: [".js"]
522
- }), json__default["default"](), esbuild__default["default"]({
525
+ }), json__default.default(), esbuild__default.default({
523
526
  jsx: (_ref5 = config == null ? void 0 : config.jsx) !== null && _ref5 !== void 0 ? _ref5 : "automatic",
524
527
  jsxFactory: (_ref6 = config == null ? void 0 : config.jsxFactory) !== null && _ref6 !== void 0 ? _ref6 : "createElement",
525
528
  jsxFragment: (_ref7 = config == null ? void 0 : config.jsxFragment) !== null && _ref7 !== void 0 ? _ref7 : "Fragment",
@@ -532,7 +535,7 @@ function resolveRollupConfig(ctx, buildTask) {
532
535
  presets: [["@babel/preset-env", {
533
536
  targets: pkg.browserslist || resolveBuildContext.DEFAULT_BROWSERSLIST_QUERY
534
537
  }]]
535
- }), minify && rollupPluginTerser.terser({
538
+ }), minify && terser__default.default({
536
539
  output: {
537
540
  comments: (_node, comment) => {
538
541
  const text = comment.value;
@@ -554,9 +557,9 @@ function resolveRollupConfig(ctx, buildTask) {
554
557
  return true;
555
558
  }
556
559
  if (importer && (id.startsWith(".") || id.startsWith("/"))) {
557
- const idPath = path__default["default"].resolve(path__default["default"].dirname(importer), id);
560
+ const idPath = path__default.default.resolve(path__default.default.dirname(importer), id);
558
561
  if (sourcePaths == null ? void 0 : sourcePaths.includes(idPath)) {
559
- logger.warn("detected self-referencing import \u2013 treating as external: ".concat(path__default["default"].relative(cwd, idPath)));
562
+ logger.warn("detected self-referencing import \u2013 treating as external: ".concat(path__default.default.relative(cwd, idPath)));
560
563
  return true;
561
564
  }
562
565
  }
@@ -572,11 +575,6 @@ function resolveRollupConfig(ctx, buildTask) {
572
575
  [entry.name]: entry.source
573
576
  });
574
577
  }, {}),
575
- onwarn(warning, rollupWarn) {
576
- if (!warning.code || !["CIRCULAR_DEPENDENCY"].includes(warning.code)) {
577
- rollupWarn(warning);
578
- }
579
- },
580
578
  plugins,
581
579
  treeshake: {
582
580
  propertyReadSideEffects: false
@@ -584,16 +582,19 @@ function resolveRollupConfig(ctx, buildTask) {
584
582
  },
585
583
  outputOptions: {
586
584
  chunkFileNames: () => "_chunks/[name]-[hash]".concat(outputExt),
585
+ compact: minify,
587
586
  dir: outDir,
588
587
  entryFileNames: () => outputExt === ".esm.js" ? "[name].js" : "[name]".concat(outputExt),
588
+ esModule: true,
589
589
  format,
590
- exports: "auto",
590
+ interop: "compat",
591
+ minifyInternalExports: minify,
591
592
  sourcemap: (_ref9 = config == null ? void 0 : config.sourcemap) !== null && _ref9 !== void 0 ? _ref9 : true
592
593
  }
593
594
  };
594
595
  }
595
596
  const rollupTask = {
596
- name: (ctx, task) => "build javascript files (target ".concat(task.target.join(" + "), ", format ").concat(task.format, ")\n ").concat(task.entries.map(e => "".concat(chalk__default["default"].blue(path__default["default"].join(ctx.pkg.name, e.path)), ": ").concat(e.source, " -> ").concat(e.output)).join("\n ")),
597
+ name: (ctx, task) => "build javascript files (target ".concat(task.target.join(" + "), ", format ").concat(task.format, ")\n ").concat(task.entries.map(e => "".concat(chalk__default.default.blue(path__default.default.join(ctx.pkg.name, e.path)), ": ").concat(e.source, " -> ").concat(e.output)).join("\n ")),
597
598
  exec: (ctx, task) => {
598
599
  return new rxjs.Observable(observer => {
599
600
  execPromise(ctx, task).then(result => {
@@ -614,25 +615,42 @@ async function execPromise(ctx, task) {
614
615
  files,
615
616
  distPath
616
617
  } = ctx;
617
- const outDir = path__default["default"].relative(ctx.cwd, distPath);
618
+ const outDir = path__default.default.relative(ctx.cwd, distPath);
619
+ const _console = {
620
+ log: console.log,
621
+ warn: console.warn,
622
+ error: console.error
623
+ };
618
624
  const {
619
625
  inputOptions,
620
626
  outputOptions
621
627
  } = resolveRollupConfig(ctx, task);
622
- const bundle = await rollup.rollup(inputOptions);
628
+ console.log = () => void 0;
629
+ console.warn = () => void 0;
630
+ console.error = () => void 0;
631
+ const bundle = await rollup.rollup(_objectSpread(_objectSpread({}, inputOptions), {}, {
632
+ onwarn(warning) {
633
+ if (!warning.code || !["CIRCULAR_DEPENDENCY"].includes(warning.code)) {
634
+ _console.warn.bind(console)(chalk__default.default.yellow("warn "), warning.message);
635
+ }
636
+ }
637
+ }));
623
638
  const {
624
639
  output
625
640
  } = await bundle.generate(outputOptions);
641
+ console.log = _console.log;
642
+ console.warn = _console.warn;
643
+ console.error = _console.error;
626
644
  for (const chunkOrAsset of output) {
627
645
  if (chunkOrAsset.type === "asset") {
628
646
  files.push({
629
647
  type: "asset",
630
- path: path__default["default"].resolve(outDir, chunkOrAsset.fileName)
648
+ path: path__default.default.resolve(outDir, chunkOrAsset.fileName)
631
649
  });
632
650
  } else {
633
651
  files.push({
634
652
  type: "chunk",
635
- path: path__default["default"].resolve(outDir, chunkOrAsset.fileName)
653
+ path: path__default.default.resolve(outDir, chunkOrAsset.fileName)
636
654
  });
637
655
  }
638
656
  }
@@ -640,7 +658,7 @@ async function execPromise(ctx, task) {
640
658
  await bundle.close();
641
659
  }
642
660
  const rollupWatchTask = {
643
- name: (ctx, task) => "build javascript files (target ".concat(task.target.join(" + "), ", format ").concat(task.format, ")\n ").concat(task.entries.map(e => "".concat(chalk__default["default"].blue(path__default["default"].join(ctx.pkg.name, e.path)), ": ").concat(e.source, " -> ").concat(e.output)).join("\n ")),
661
+ name: (ctx, task) => "build javascript files (target ".concat(task.target.join(" + "), ", format ").concat(task.format, ")\n ").concat(task.entries.map(e => "".concat(chalk__default.default.blue(path__default.default.join(ctx.pkg.name, e.path)), ": ").concat(e.source, " -> ").concat(e.output)).join("\n ")),
644
662
  exec: (ctx, task) => {
645
663
  const {
646
664
  inputOptions,
@@ -664,7 +682,7 @@ const rollupWatchTask = {
664
682
  logger
665
683
  } = ctx;
666
684
  if (event.code === "BUNDLE_END") {
667
- logger.success("build javascript files (target ".concat(task.target.join(" + "), ", format ").concat(task.format, ")\n ").concat(task.entries.map(e => "".concat(chalk__default["default"].blue(path__default["default"].join(ctx.pkg.name, e.path)), ": ").concat(e.source, " -> ").concat(e.output)).join("\n ")));
685
+ logger.success("build javascript files (target ".concat(task.target.join(" + "), ", format ").concat(task.format, ")\n ").concat(task.entries.map(e => "".concat(chalk__default.default.blue(path__default.default.join(ctx.pkg.name, e.path)), ": ").concat(e.source, " -> ").concat(e.output)).join("\n ")));
668
686
  logger.log("");
669
687
  return;
670
688
  }
@@ -706,4 +724,4 @@ exports.getExtractMessagesConfig = getExtractMessagesConfig;
706
724
  exports.rollupTask = rollupTask;
707
725
  exports.rollupWatchTask = rollupWatchTask;
708
726
  exports.watchTaskHandlers = watchTaskHandlers;
709
- //# sourceMappingURL=index-79fdb33f.js.map
727
+ //# sourceMappingURL=index-60a8ccaf.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"index-60a8ccaf.js","sources":["../../src/node/printExtractMessages.ts","../../src/node/tasks/dts/buildTypes.ts","../../src/node/tasks/dts/DtsError.ts","../../src/node/tasks/dts/createApiExtractorConfig.ts","../../src/node/tasks/dts/createTSDocConfig.ts","../../src/node/tasks/dts/extractModuleBlocks.ts","../../src/node/tasks/dts/getExtractMessagesConfig.ts","../../src/node/tasks/dts/extractTypes.ts","../../src/node/tasks/dts/doExtract.ts","../../src/node/tasks/dts/dtsTask.ts","../../src/node/tasks/dts/dtsWatchTask.ts","../../src/node/tasks/rollup/resolveRollupConfig.ts","../../src/node/tasks/rollup/rollupTask.ts","../../src/node/tasks/rollup/rollupWatchTask.ts","../../src/node/tasks/index.ts"],"sourcesContent":["import path from 'path'\nimport {ExtractorMessage} from '@microsoft/api-extractor'\nimport chalk from 'chalk'\nimport {BuildContext} from './core'\n\nexport function printExtractMessages(ctx: BuildContext, messages: ExtractorMessage[]): void {\n const {cwd, logger} = ctx\n\n const warnings = messages.filter((msg) => msg.logLevel === 'warning')\n\n if (warnings.length) {\n logger.log()\n }\n\n for (const msg of warnings) {\n const sourceFilePath = msg.sourceFilePath && path.relative(cwd, msg.sourceFilePath)\n\n if (msg.messageId === 'TS6307') {\n // Ignore this warning:\n // > TS6307: <filename> is not in project file list.\n // > Projects must list all files or use an 'include' pattern.\n continue\n }\n\n logger.log(\n [\n `${chalk.cyan(sourceFilePath || '?')}`,\n `:${chalk.yellow(msg.sourceFileLine)}:${chalk.yellow(msg.sourceFileColumn)}`,\n ` - ${chalk.yellow('warning')} ${chalk.gray(msg.messageId)}\\n`,\n msg.text,\n '\\n',\n ].join('')\n )\n }\n\n const errors: ExtractorMessage[] = messages.filter((msg) => msg.logLevel === 'error')\n\n if (!warnings.length && errors.length) {\n logger.log('')\n }\n\n for (const msg of errors) {\n const sourceFilePath = msg.sourceFilePath && path.relative(cwd, msg.sourceFilePath)\n\n logger.log(\n [\n `${chalk.cyan(sourceFilePath || '?')}`,\n `:${chalk.yellow(msg.sourceFileLine)}:${chalk.yellow(msg.sourceFileColumn)}`,\n ` - ${chalk.red('error')} ${chalk.gray(msg.messageId)}\\n`,\n msg.text,\n '\\n',\n ].join('')\n )\n }\n\n if (errors.length) {\n process.exit(1)\n }\n}\n","/* eslint-disable no-console */\n\nimport ts from 'typescript'\n\nexport const formatHost: ts.FormatDiagnosticsHost = {\n getCurrentDirectory: () => ts.sys.getCurrentDirectory(),\n getNewLine: () => ts.sys.newLine,\n getCanonicalFileName: ts.sys.useCaseSensitiveFileNames ? (f) => f : (f) => f.toLowerCase(),\n}\n\n/** @internal */\nexport async function buildTypes(options: {\n cwd: string\n outDir: string\n tsconfig: ts.ParsedCommandLine\n strict: boolean\n}): Promise<void> {\n const {outDir, tsconfig, strict = false} = options\n\n const compilerOptions: ts.CompilerOptions = {\n ...tsconfig.options,\n declaration: true,\n declarationDir: outDir,\n emitDeclarationOnly: true,\n noEmit: false,\n outDir,\n }\n\n const program = ts.createProgram(tsconfig.fileNames, compilerOptions)\n\n const emitResult = program.emit()\n\n const allDiagnostics = ts.getPreEmitDiagnostics(program).concat(emitResult.diagnostics)\n\n // TODO: improve logging\n allDiagnostics.forEach((diagnostic) => {\n if (diagnostic.file && diagnostic.start) {\n const {line, character} = ts.getLineAndCharacterOfPosition(diagnostic.file, diagnostic.start)\n const message = ts.flattenDiagnosticMessageText(diagnostic.messageText, '\\n')\n\n console.log(`${diagnostic.file.fileName} ${line + 1}:${character + 1}\\n${message}`)\n } else {\n console.log(ts.flattenDiagnosticMessageText(diagnostic.messageText, '\\n'))\n }\n })\n\n if (emitResult.emitSkipped) {\n const errors = allDiagnostics.filter((diag) => diag.category === ts.DiagnosticCategory.Error)\n\n if (errors.length) {\n console.error(ts.formatDiagnostics(errors, formatHost))\n\n if (strict) {\n throw new Error('failed to compile TypeScript definitions')\n }\n }\n }\n}\n","import {ExtractorMessage} from '@microsoft/api-extractor'\n\n/** @internal */\nexport class DtsError extends Error {\n messages: ExtractorMessage[]\n\n constructor(message: string, messages: ExtractorMessage[]) {\n super(message)\n this.messages = messages\n }\n}\n","import path from 'path'\nimport {IConfigFile, IExtractorMessagesConfig} from '@microsoft/api-extractor'\n\nexport function createApiExtractorConfig(options: {\n distPath: string\n exportPath: string\n filePath: string\n messages: IExtractorMessagesConfig\n projectFolder: string\n mainEntryPointFilePath: string\n tsconfigPath: string\n}): IConfigFile {\n const {\n distPath,\n exportPath,\n filePath,\n messages,\n projectFolder,\n mainEntryPointFilePath,\n tsconfigPath,\n } = options\n\n return {\n apiReport: {\n enabled: false,\n reportFileName: '<unscopedPackageName>.api.md',\n },\n // bundledPackages: [],\n compiler: {\n tsconfigFilePath: tsconfigPath,\n },\n docModel: {\n enabled: false,\n apiJsonFilePath: path.resolve(distPath, `${exportPath}.api.json`),\n },\n dtsRollup: {\n enabled: true,\n untrimmedFilePath: path.resolve(distPath, filePath),\n // betaTrimmedFilePath: path.resolve(distPath, filePath.replace('.d.ts', '-beta.d.ts')),\n // publicTrimmedFilePath: path.resolve(distPath, filePath.replace('.d.ts', '-public.d.ts')),\n },\n tsdocMetadata: {\n enabled: false,\n },\n messages,\n mainEntryPointFilePath,\n projectFolder,\n }\n}\n","import {readFile} from 'fs/promises'\nimport {TSDocConfigFile} from '@microsoft/tsdoc-config'\nimport {parse} from 'jsonc-parser'\n\n/** @public */\nexport interface TSDocCustomTag {\n name: string\n syntaxKind: 'block' | 'modifier'\n allowMultiple?: boolean\n}\n\n/** @internal */\nexport async function createTSDocConfig(opts: {\n customTags: TSDocCustomTag[]\n}): Promise<TSDocConfigFile | undefined> {\n const {customTags} = opts\n\n if (customTags.length === 0) {\n return undefined\n }\n\n const tsDocBaseBuf = await readFile(\n require.resolve('@microsoft/api-extractor/extends/tsdoc-base.json')\n )\n\n // Include the definitions that are required for API Extractor\n // extends: ['@microsoft/api-extractor/extends/tsdoc-base.json'],\n const tsDocBaseConfig = parse(tsDocBaseBuf.toString())\n\n // Define custom tags and specify how they should be parsed\n const tagDefinitions = (tsDocBaseConfig.tagDefinitions || []).concat(\n customTags.map((t) => ({\n tagName: `@${t.name}`,\n syntaxKind: t.syntaxKind,\n allowMultiple: t.allowMultiple,\n }))\n )\n\n // Indicate that custom tags are supported by your tooling.\n // (Without this, warnings may be reported saying that a tag is unsupported.)\n const supportForTags = {...tsDocBaseConfig.supportForTags}\n\n for (const customTag of customTags) {\n supportForTags[`@${customTag.name}`] = true\n }\n\n return TSDocConfigFile.loadFromObject({\n ...tsDocBaseConfig,\n noStandardTags: false,\n tagDefinitions,\n supportForTags,\n })\n}\n","import type {File} from '@babel/types'\nimport {ExtractorResult} from '@microsoft/api-extractor'\nimport {parse, print} from 'recast'\nimport typeScriptParser from 'recast/parsers/typescript'\nimport {Program} from 'typescript'\n\n/**\n * A workaround to find all module blocks in extract TS files.\n * @internal\n * */\nexport async function extractModuleBlocksFromTypes({\n tsOutDir,\n extractResult,\n}: {\n tsOutDir: string\n extractResult: ExtractorResult\n}): Promise<string[]> {\n const program = extractResult.compilerState.program as Program\n const moduleBlocks: string[] = []\n\n // all program files, including node_modules\n const allProgramFiles = [...program.getSourceFiles()]\n\n // just our compiled files used in the program\n const sourceFiles = allProgramFiles.filter((sourceFile) => sourceFile.fileName.includes(tsOutDir))\n\n for (const sourceFile of sourceFiles) {\n if (sourceFile.text.includes('declare module')) {\n moduleBlocks.push(...extractModuleBlocks(sourceFile.text))\n }\n }\n\n return moduleBlocks\n}\n\n/** @internal */\nexport function extractModuleBlocks(fileContent: string): string[] {\n const ast = parse(fileContent, {\n parser: typeScriptParser,\n }) as File\n\n return ast.program.body\n .filter((node) => node.type === 'TSModuleDeclaration')\n .map((node) => print(node).code)\n}\n","import {ExtractorLogLevel, IExtractorMessagesConfig} from '@microsoft/api-extractor'\nimport {PkgRuleLevel, PkgConfigOptions} from '../../core'\n\nconst LOG_LEVELS: Record<PkgRuleLevel, ExtractorLogLevel> = {\n error: 'error' as ExtractorLogLevel.Error,\n info: 'info' as ExtractorLogLevel.Info,\n off: 'none' as ExtractorLogLevel.None,\n warn: 'warning' as ExtractorLogLevel.Warning,\n}\n\n/** @internal */\nexport function getExtractMessagesConfig(options: {\n rules: NonNullable<PkgConfigOptions['extract']>['rules']\n}): IExtractorMessagesConfig {\n const {rules} = options\n\n function ruleToLogLevel(\n key: keyof NonNullable<NonNullable<PkgConfigOptions['extract']>['rules']>,\n defaultLevel?: ExtractorLogLevel\n ) {\n const r = rules?.[key]\n\n return (r ? LOG_LEVELS[r] : defaultLevel || 'warning') as ExtractorLogLevel\n }\n\n return {\n compilerMessageReporting: {\n default: {\n logLevel: 'warning' as ExtractorLogLevel,\n },\n },\n\n extractorMessageReporting: {\n default: {\n logLevel: 'warning' as ExtractorLogLevel,\n addToApiReportFile: false,\n },\n\n 'ae-forgotten-export': {\n logLevel: ruleToLogLevel('ae-forgotten-export', 'error' as ExtractorLogLevel),\n addToApiReportFile: false,\n },\n\n 'ae-incompatible-release-tags': {\n logLevel: ruleToLogLevel('ae-incompatible-release-tags', 'error' as ExtractorLogLevel),\n addToApiReportFile: false,\n },\n\n 'ae-internal-missing-underscore': {\n logLevel: ruleToLogLevel('ae-internal-missing-underscore'),\n addToApiReportFile: false,\n },\n\n 'ae-missing-release-tag': {\n logLevel: ruleToLogLevel('ae-missing-release-tag', 'error' as ExtractorLogLevel),\n addToApiReportFile: false,\n },\n\n 'ae-wrong-input-file-type': {\n logLevel: 'none' as ExtractorLogLevel,\n addToApiReportFile: false,\n },\n },\n\n tsdocMessageReporting: {\n default: {\n logLevel: 'warning' as ExtractorLogLevel,\n addToApiReportFile: false,\n },\n\n 'tsdoc-link-tag-unescaped-text': {\n logLevel: ruleToLogLevel('tsdoc-link-tag-unescaped-text', 'warning' as ExtractorLogLevel),\n addToApiReportFile: false,\n },\n\n 'tsdoc-undefined-tag': {\n logLevel: ruleToLogLevel('tsdoc-undefined-tag', 'error' as ExtractorLogLevel),\n addToApiReportFile: false,\n },\n\n 'tsdoc-unsupported-tag': {\n logLevel: ruleToLogLevel('tsdoc-unsupported-tag', 'none' as ExtractorLogLevel),\n addToApiReportFile: false,\n },\n },\n }\n}\n","import fs from 'fs/promises'\nimport path from 'path'\nimport {\n Extractor,\n ExtractorConfig,\n ExtractorMessage,\n ExtractorResult,\n} from '@microsoft/api-extractor'\nimport mkdirp from 'mkdirp'\nimport prettier from 'prettier'\nimport {PkgConfigOptions, BuildFile} from '../../core'\nimport {createApiExtractorConfig} from './createApiExtractorConfig'\nimport {createTSDocConfig} from './createTSDocConfig'\nimport {extractModuleBlocksFromTypes} from './extractModuleBlocks'\nimport {getExtractMessagesConfig} from './getExtractMessagesConfig'\n\nexport async function extractTypes(options: {\n customTags: NonNullable<PkgConfigOptions['extract']>['customTags']\n cwd: string\n distPath: string\n exportPath: string\n filePath: string\n files: BuildFile[]\n projectPath: string\n rules?: NonNullable<PkgConfigOptions['extract']>['rules']\n sourceTypesPath: string\n tmpPath: string\n tsconfigPath: string\n}): Promise<{extractorResult: ExtractorResult; messages: ExtractorMessage[]}> {\n const {\n customTags,\n distPath,\n exportPath,\n files,\n filePath,\n projectPath,\n rules,\n sourceTypesPath,\n tmpPath,\n tsconfigPath,\n } = options\n\n const tsdocConfigFile = await createTSDocConfig({\n customTags: customTags || [],\n })\n\n const extractorConfig: ExtractorConfig = ExtractorConfig.prepare({\n configObject: createApiExtractorConfig({\n distPath,\n exportPath,\n filePath,\n messages: getExtractMessagesConfig({rules}),\n projectFolder: projectPath,\n mainEntryPointFilePath: sourceTypesPath,\n tsconfigPath,\n }),\n configObjectFullPath: undefined,\n tsdocConfigFile,\n packageJsonFullPath: path.resolve(projectPath, 'package.json'),\n })\n\n const messages: ExtractorMessage[] = []\n\n // Invoke API Extractor\n const extractorResult = Extractor.invoke(extractorConfig, {\n // Equivalent to the \"--local\" command-line parameter\n localBuild: true,\n // Equivalent to the \"--verbose\" command-line parameter\n showVerboseMessages: true,\n // handle messages\n messageCallback(message: ExtractorMessage) {\n messages.push(message)\n message.handled = true\n },\n })\n\n const typesPath = path.resolve(distPath, filePath)\n const typesBuf = await fs.readFile(typesPath)\n const prettierConfig = await prettier.resolveConfig(typesPath)\n\n await mkdirp(path.dirname(typesPath))\n\n const moduleBlocks = await extractModuleBlocksFromTypes({\n extractResult: extractorResult,\n tsOutDir: tmpPath,\n })\n\n const code = [typesBuf.toString(), ...moduleBlocks].join('\\n\\n')\n\n await fs.writeFile(\n typesPath,\n prettier.format(code, {\n ...prettierConfig,\n filepath: typesPath,\n })\n )\n\n // Add to `files` in context\n files.push({\n type: 'types',\n path: typesPath,\n })\n\n return {extractorResult, messages}\n}\n","import path from 'path'\nimport {promisify} from 'util'\nimport {ExtractorMessage} from '@microsoft/api-extractor'\nimport rimrafCallback from 'rimraf'\nimport {BuildContext} from '../../core'\nimport {buildTypes} from './buildTypes'\nimport {DtsError} from './DtsError'\nimport {extractTypes} from './extractTypes'\nimport {DtsResult, DtsTask, DtsWatchTask} from './types'\n\nconst rimraf = promisify(rimrafCallback)\n\n/**\n * - Build type definitions to a temporary directory using TypeScript compiler.\n * - Create a type definition bundle for each export entry.\n * - When done, remove the temporary directory.\n */\nexport async function doExtract(\n ctx: BuildContext,\n task: DtsTask | DtsWatchTask\n): Promise<DtsResult> {\n const {config, cwd, files, strict, ts} = ctx\n\n if (!ts.config || !ts.configPath) {\n return {type: 'dts', messages: [], results: []}\n }\n\n const {outDir, rootDir = cwd} = ts.config.options\n\n if (!outDir) {\n throw new Error('tsconfig.json is missing `compilerOptions.outDir`')\n }\n\n const tmpPath = path.resolve(outDir, '__tmp__')\n\n await buildTypes({cwd, outDir: tmpPath, strict, tsconfig: ts.config})\n const messages: ExtractorMessage[] = []\n\n const results: {sourcePath: string; filePath: string}[] = []\n\n for (const entry of task.entries) {\n const exportPath = entry.exportPath === '.' ? './index' : entry.exportPath\n\n const sourceTypesPath = path.resolve(\n tmpPath,\n path.relative(rootDir, path.resolve(cwd, entry.sourcePath)).replace(/\\.ts$/, '.d.ts')\n )\n\n const targetPath = path.resolve(cwd, entry.targetPath)\n const filePath = path.relative(outDir, targetPath)\n const result = await extractTypes({\n customTags: config?.extract?.customTags,\n cwd,\n distPath: outDir,\n exportPath,\n files,\n filePath: filePath,\n projectPath: cwd,\n rules: config?.extract?.rules,\n sourceTypesPath: sourceTypesPath,\n tmpPath,\n tsconfigPath: path.resolve(cwd, ts.configPath || 'tsconfig.json'),\n })\n\n messages.push(...result.messages)\n\n if (result.messages.some((msg) => msg.logLevel === 'error')) {\n await rimraf(tmpPath)\n\n throw new DtsError('encountered errors when extracting types', result.messages)\n }\n\n results.push({sourcePath: path.resolve(cwd, entry.sourcePath), filePath: targetPath})\n }\n\n await rimraf(tmpPath)\n\n return {type: 'dts', messages, results}\n}\n","import chalk from 'chalk'\nimport {Observable} from 'rxjs'\nimport {printExtractMessages} from '../../printExtractMessages'\nimport {TaskHandler} from '../types'\nimport {doExtract} from './doExtract'\nimport {DtsError} from './DtsError'\nimport {DtsResult, DtsTask} from './types'\n\n/** @internal */\nexport const dtsTask: TaskHandler<DtsTask, DtsResult> = {\n name: (_ctx, task) =>\n [\n `build type definitions`,\n ...task.entries.map(\n (entry) =>\n ` ${chalk.blue(entry.importId)}: ${entry.sourcePath} -> ${entry.targetPath}`\n ),\n ].join('\\n'),\n exec: (ctx, task) => {\n return new Observable((observer) => {\n doExtract(ctx, task)\n .then((result) => {\n observer.next(result)\n observer.complete()\n })\n .catch((err) => {\n observer.error(err)\n })\n })\n },\n complete: (ctx, _task, result) => {\n printExtractMessages(ctx, result.messages)\n },\n error: (ctx, _task, err) => {\n const {logger} = ctx\n\n if (err instanceof DtsError) {\n printExtractMessages(ctx, err.messages)\n } else if (err instanceof Error) {\n logger.error(err)\n }\n },\n}\n","import chalk from 'chalk'\nimport {Observable} from 'rxjs'\nimport {printExtractMessages} from '../../printExtractMessages'\nimport {TaskHandler} from '../types'\nimport {doExtract} from './doExtract'\nimport {DtsError} from './DtsError'\nimport {DtsResult, DtsWatchTask} from './types'\n\n/** @internal */\nexport const dtsWatchTask: TaskHandler<DtsWatchTask, DtsResult> = {\n name: (_ctx, task) =>\n [\n `build type definitions`,\n ...task.entries.map(\n (entry) =>\n ` ${chalk.blue(entry.importId)}: ${entry.sourcePath} -> ${entry.targetPath}`\n ),\n ].join('\\n'),\n exec: (ctx, task) => {\n return new Observable((observer) => {\n doExtract(ctx, task)\n .then((result) => {\n observer.next(result)\n observer.complete()\n })\n .catch((err) => observer.error(err))\n })\n },\n complete: (ctx, _task, result) => {\n const {logger} = ctx\n\n printExtractMessages(ctx, result.messages)\n\n logger.warn('watching typescript definitions is currently not supported')\n logger.log()\n },\n error: (ctx, _task, err) => {\n const {logger} = ctx\n\n if (err instanceof DtsError) {\n printExtractMessages(ctx, err.messages)\n } else if (err instanceof Error) {\n logger.error(err)\n }\n },\n}\n","import path from 'path'\nimport alias from '@rollup/plugin-alias'\nimport {getBabelOutputPlugin} from '@rollup/plugin-babel'\nimport commonjs from '@rollup/plugin-commonjs'\nimport json from '@rollup/plugin-json'\nimport {nodeResolve} from '@rollup/plugin-node-resolve'\nimport replace from '@rollup/plugin-replace'\nimport terser from '@rollup/plugin-terser'\nimport {InputOptions, OutputOptions, Plugin} from 'rollup'\nimport esbuild from 'rollup-plugin-esbuild'\nimport {\n BuildContext,\n DEFAULT_BROWSERSLIST_QUERY,\n MODULE_EXT,\n resolveConfigProperty,\n} from '../../core'\nimport {RollupTask, RollupWatchTask} from '../types'\n\nexport interface RollupConfig {\n inputOptions: InputOptions\n outputOptions: OutputOptions\n}\n\n/** @internal */\nexport function resolveRollupConfig(\n ctx: BuildContext,\n buildTask: RollupTask | RollupWatchTask\n): RollupConfig {\n const {format, runtime, target} = buildTask\n const {config, cwd, exports: _exports, external, distPath, logger, pkg, ts} = ctx\n const outputExt = MODULE_EXT[pkg.type][format]\n const minify = config?.minify ?? true\n const outDir = path.relative(cwd, distPath)\n\n const pathAliases = Object.fromEntries(\n Object.entries(ts.config?.options.paths || {}).map(([key, val]) => {\n return [key, path.resolve(cwd, ts.config?.options.baseUrl || '.', val[0])]\n })\n )\n\n const entries = buildTask.entries.map((entry) => {\n return {\n ...entry,\n name: path.relative(outDir, entry.output).replace(/\\.[^/.]+$/, ''),\n }\n }, {})\n\n const exportIds =\n _exports && Object.keys(_exports).map((exportPath) => path.join(pkg.name, exportPath))\n\n const sourcePaths = _exports && Object.values(_exports).map((e) => path.resolve(cwd, e.source))\n\n const replacements = Object.fromEntries(\n Object.entries(config?.define || {}).map(([key, val]) => [key, JSON.stringify(val)])\n )\n\n const defaultPlugins = [\n replace({\n preventAssignment: true,\n values: {\n ...(pkg.name === '@sanity/pkg-utils'\n ? {...replacements}\n : {\n 'process.env.PKG_FILE_PATH': (arg) => {\n const sourcePath = './' + path.relative(cwd, arg)\n const entry = entries.find((e) => e.source === sourcePath)\n\n if (!entry) {\n // eslint-disable-next-line no-console\n console.error(`could not find source entry: ${sourcePath}`)\n\n return 'null'\n }\n\n return JSON.stringify(\n path.relative(cwd, path.resolve(outDir, entry.name + outputExt))\n )\n },\n 'process.env.PKG_FORMAT': JSON.stringify(format),\n 'process.env.PKG_RUNTIME': JSON.stringify(runtime),\n 'process.env.PKG_VERSION': JSON.stringify(process.env.PKG_VERSION || pkg.version),\n ...replacements,\n }),\n },\n }),\n alias({\n entries: {...pathAliases},\n }),\n nodeResolve({\n // mainFields: ['module', 'jsnext', 'main'],\n browser: runtime === 'browser',\n // exportConditions: [runtime === 'node' ? 'node' : 'browser'],\n extensions: ['.cjs', '.mjs', '.js', '.jsx', '.json', '.node'],\n preferBuiltins: true, // runtime === 'node',\n }),\n commonjs({\n esmExternals: false,\n extensions: ['.js'],\n // include: /\\/node_modules\\//,\n // requireReturnsDefault: 'namespace',\n }),\n json(),\n esbuild({\n jsx: config?.jsx ?? 'automatic',\n jsxFactory: config?.jsxFactory ?? 'createElement',\n jsxFragment: config?.jsxFragment ?? 'Fragment',\n jsxImportSource: config?.jsxImportSource ?? 'react',\n target,\n tsconfig: ctx.ts.configPath || 'tsconfig.json',\n }),\n getBabelOutputPlugin({\n babelrc: false,\n plugins: ['@babel/plugin-proposal-object-rest-spread'],\n presets: [['@babel/preset-env', {targets: pkg.browserslist || DEFAULT_BROWSERSLIST_QUERY}]],\n }),\n minify &&\n terser({\n output: {\n comments: (_node, comment) => {\n const text = comment.value\n const type = comment.type\n\n // Check if this is a multiline comment\n if (type == 'comment2') {\n // Keep licensing comments\n return /@preserve|@license|@cc_on/i.test(text)\n }\n\n return false\n },\n },\n }),\n ].filter(Boolean) as Plugin[]\n\n const userPlugins = config?.rollup?.plugins\n\n const plugins = Array.isArray(userPlugins)\n ? defaultPlugins.concat(userPlugins)\n : resolveConfigProperty(config?.rollup?.plugins, defaultPlugins)\n\n return {\n inputOptions: {\n context: cwd,\n\n external: (id, importer) => {\n // Check if the id is a self-referencing import\n if (exportIds?.includes(id)) {\n return true\n }\n\n // Check if the id is a file path that points to an exported source file\n if (importer && (id.startsWith('.') || id.startsWith('/'))) {\n const idPath = path.resolve(path.dirname(importer), id)\n\n if (sourcePaths?.includes(idPath)) {\n logger.warn(\n `detected self-referencing import – treating as external: ${path.relative(\n cwd,\n idPath\n )}`\n )\n\n return true\n }\n }\n\n const idParts = id.split('/')\n\n const name = idParts[0].startsWith('@') ? `${idParts[0]}/${idParts[1]}` : idParts[0]\n\n if (name && external.includes(name)) {\n return true\n }\n\n return false\n },\n\n input: entries.reduce<{[entryAlias: string]: string}>((acc, entry) => {\n return {...acc, [entry.name]: entry.source}\n }, {}),\n\n plugins,\n\n treeshake: {\n propertyReadSideEffects: false,\n },\n },\n outputOptions: {\n chunkFileNames: () => `_chunks/[name]-[hash]${outputExt}`,\n compact: minify,\n dir: outDir,\n entryFileNames: () => (outputExt === '.esm.js' ? `[name].js` : `[name]${outputExt}`),\n esModule: true,\n format,\n interop: 'compat',\n minifyInternalExports: minify,\n sourcemap: config?.sourcemap ?? true,\n },\n }\n}\n","/* eslint-disable no-console */\n\nimport path from 'path'\nimport chalk from 'chalk'\nimport {rollup} from 'rollup'\nimport {Observable} from 'rxjs'\nimport {BuildContext} from '../../core'\nimport {RollupTask, TaskHandler} from '../types'\nimport {resolveRollupConfig} from './resolveRollupConfig'\n\n/** @internal */\nexport const rollupTask: TaskHandler<RollupTask> = {\n name: (ctx, task) =>\n `build javascript files (target ${task.target.join(' + ')}, format ${\n task.format\n })\\n ${task.entries\n .map((e) => `${chalk.blue(path.join(ctx.pkg.name, e.path))}: ${e.source} -> ${e.output}`)\n .join('\\n ')}`,\n exec: (ctx, task) => {\n return new Observable((observer) => {\n execPromise(ctx, task)\n .then((result) => {\n observer.next(result)\n observer.complete()\n })\n .catch((err) => observer.error(err))\n })\n },\n complete: () => {\n //\n },\n error: (_ctx, _task, err) => {\n if (err instanceof Error) {\n console.log(err)\n }\n },\n}\n\nasync function execPromise(ctx: BuildContext, task: RollupTask) {\n const {files, distPath} = ctx\n const outDir = path.relative(ctx.cwd, distPath)\n\n const _console = {\n log: console.log,\n warn: console.warn,\n error: console.error,\n }\n\n const {inputOptions, outputOptions} = resolveRollupConfig(ctx, task)\n\n console.log = () => undefined\n console.warn = () => undefined\n console.error = () => undefined\n\n // Create bundle\n const bundle = await rollup({\n ...inputOptions,\n onwarn(warning) {\n if (!warning.code || !['CIRCULAR_DEPENDENCY'].includes(warning.code)) {\n // rollupWarn(warning)\n _console.warn.bind(console)(chalk.yellow('warn '), warning.message)\n }\n },\n })\n\n // generate output specific code in-memory\n // you can call this function multiple times on the same bundle object\n const {output} = await bundle.generate(outputOptions)\n\n console.log = _console.log\n console.warn = _console.warn\n console.error = _console.error\n\n for (const chunkOrAsset of output) {\n if (chunkOrAsset.type === 'asset') {\n files.push({\n type: 'asset',\n path: path.resolve(outDir, chunkOrAsset.fileName),\n })\n } else {\n files.push({\n type: 'chunk',\n path: path.resolve(outDir, chunkOrAsset.fileName),\n })\n }\n }\n\n // or write the bundle to disk\n await bundle.write(outputOptions)\n\n // closes the bundle\n await bundle.close()\n}\n","import path from 'path'\nimport chalk from 'chalk'\nimport {RollupWatcherEvent, RollupWatchOptions, watch as rollupWatch} from 'rollup'\nimport {Observable} from 'rxjs'\nimport {RollupWatchTask, TaskHandler} from '../types'\nimport {resolveRollupConfig} from './resolveRollupConfig'\n\n/** @internal */\nexport const rollupWatchTask: TaskHandler<RollupWatchTask, RollupWatcherEvent> = {\n name: (ctx, task) =>\n `build javascript files (target ${task.target.join(' + ')}, format ${\n task.format\n })\\n ${task.entries\n .map((e) => `${chalk.blue(path.join(ctx.pkg.name, e.path))}: ${e.source} -> ${e.output}`)\n .join('\\n ')}`,\n exec: (ctx, task) => {\n const {inputOptions, outputOptions} = resolveRollupConfig(ctx, task)\n\n return new Observable((observer) => {\n const watchOptions: RollupWatchOptions = {\n ...inputOptions,\n output: outputOptions,\n }\n\n const watcher = rollupWatch(watchOptions)\n\n watcher.on('event', (event) => {\n observer.next(event)\n })\n\n return () => {\n watcher.close()\n }\n })\n },\n complete: (ctx, task, event) => {\n const {logger} = ctx\n\n if (event.code === 'BUNDLE_END') {\n logger.success(\n `build javascript files (target ${task.target.join(' + ')}, format ${\n task.format\n })\\n ${task.entries\n .map((e) => `${chalk.blue(path.join(ctx.pkg.name, e.path))}: ${e.source} -> ${e.output}`)\n .join('\\n ')}`\n )\n logger.log('')\n\n return\n }\n\n if (event.code === 'BUNDLE_START') {\n return\n }\n\n if (event.code === 'END') {\n return\n }\n\n if (event.code === 'ERROR') {\n // logger.log('')\n logger.error(event.code, event)\n\n return\n }\n\n if (event.code === 'START') {\n return\n }\n },\n error: (ctx, _task, err) => {\n const {logger} = ctx\n\n if (err instanceof Error) {\n logger.log(err)\n }\n },\n}\n","import {dtsTask, dtsWatchTask} from './dts'\nimport {rollupTask, rollupWatchTask} from './rollup'\nimport {BuildTaskHandlers, WatchTaskHandlers} from './types'\n\nexport * from './types'\nexport * from './dts'\nexport * from './rollup'\n\n/** @internal */\nexport const buildTaskHandlers: BuildTaskHandlers = {\n 'build:dts': dtsTask,\n 'build:js': rollupTask,\n}\n\n/** @internal */\nexport const watchTaskHandlers: WatchTaskHandlers = {\n 'watch:dts': dtsWatchTask,\n 'watch:js': rollupWatchTask,\n}\n"],"names":["printExtractMessages","ctx","messages","cwd","logger","warnings","filter","msg","logLevel","length","log","sourceFilePath","path","relative","messageId","chalk","cyan","yellow","sourceFileLine","default","sourceFileColumn","gray","text","join","errors","red","process","exit","formatHost","getCurrentDirectory","ts","sys","getNewLine","newLine","getCanonicalFileName","useCaseSensitiveFileNames","f","toLowerCase","buildTypes","options","outDir","tsconfig","strict","compilerOptions","declaration","declarationDir","emitDeclarationOnly","noEmit","program","createProgram","fileNames","emitResult","emit","allDiagnostics","getPreEmitDiagnostics","concat","diagnostics","forEach","diagnostic","file","start","line","character","getLineAndCharacterOfPosition","message","flattenDiagnosticMessageText","messageText","console","fileName","emitSkipped","diag","category","DiagnosticCategory","Error","error","formatDiagnostics","DtsError","constructor","createApiExtractorConfig","distPath","exportPath","filePath","projectFolder","mainEntryPointFilePath","tsconfigPath","apiReport","enabled","reportFileName","compiler","tsconfigFilePath","docModel","apiJsonFilePath","resolve","dtsRollup","untrimmedFilePath","tsdocMetadata","createTSDocConfig","opts","customTags","tsDocBaseBuf","readFile","require","tsDocBaseConfig","parse","toString","tagDefinitions","map","t","tagName","name","syntaxKind","allowMultiple","supportForTags","customTag","TSDocConfigFile","loadFromObject","noStandardTags","extractModuleBlocksFromTypes","tsOutDir","extractResult","compilerState","moduleBlocks","allProgramFiles","getSourceFiles","sourceFiles","sourceFile","includes","push","extractModuleBlocks","fileContent","ast","parser","typeScriptParser","body","node","type","print","code","LOG_LEVELS","info","off","warn","getExtractMessagesConfig","rules","ruleToLogLevel","key","defaultLevel","r","compilerMessageReporting","extractorMessageReporting","addToApiReportFile","tsdocMessageReporting","extractTypes","files","projectPath","sourceTypesPath","tmpPath","tsdocConfigFile","extractorConfig","ExtractorConfig","prepare","configObject","configObjectFullPath","packageJsonFullPath","extractorResult","Extractor","invoke","localBuild","showVerboseMessages","messageCallback","handled","typesPath","typesBuf","fs","prettierConfig","prettier","resolveConfig","mkdirp","dirname","writeFile","format","filepath","rimraf","promisify","rimrafCallback","doExtract","task","_a","_b","config","configPath","results","rootDir","entry","entries","sourcePath","replace","targetPath","result","extract","some","dtsTask","_ctx","blue","importId","exec","Observable","observer","then","next","complete","catch","err","_task","dtsWatchTask","resolveRollupConfig","buildTask","_c","runtime","target","exports","_exports","external","pkg","outputExt","MODULE_EXT","minify","pathAliases","Object","fromEntries","paths","val","baseUrl","output","exportIds","keys","sourcePaths","values","e","source","replacements","define","JSON","stringify","defaultPlugins","preventAssignment","arg","find","env","PKG_VERSION","version","alias","nodeResolve","browser","extensions","preferBuiltins","commonjs","esmExternals","json","esbuild","jsx","jsxFactory","jsxFragment","jsxImportSource","getBabelOutputPlugin","babelrc","plugins","presets","targets","browserslist","DEFAULT_BROWSERSLIST_QUERY","terser","comments","_node","comment","value","test","Boolean","userPlugins","rollup","Array","isArray","resolveConfigProperty","inputOptions","context","id","importer","startsWith","idPath","idParts","split","input","reduce","acc","treeshake","propertyReadSideEffects","outputOptions","chunkFileNames","compact","dir","entryFileNames","esModule","interop","minifyInternalExports","sourcemap","rollupTask","execPromise","_console","bundle","onwarn","warning","bind","generate","chunkOrAsset","write","close","rollupWatchTask","watchOptions","watcher","rollupWatch","on","event","success","buildTaskHandlers","watchTaskHandlers"],"mappings":"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"}