@sanity/pkg-utils 11.0.16 → 12.0.0

This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
Files changed (71) hide show
  1. package/MIGRATE.md +152 -0
  2. package/README.md +110 -55
  3. package/dist/buildAction-DFrmHzYY.js +146 -0
  4. package/dist/buildAction-DFrmHzYY.js.map +1 -0
  5. package/dist/checkAction-BMxszLZS.js +140 -0
  6. package/dist/checkAction-BMxszLZS.js.map +1 -0
  7. package/dist/cli.js +22 -28
  8. package/dist/cli.js.map +1 -1
  9. package/dist/createApiExtractorConfig-CJoZqw8e.js +30 -0
  10. package/dist/createApiExtractorConfig-CJoZqw8e.js.map +1 -0
  11. package/dist/createTSDocConfig-CwaWneTR.js +25 -0
  12. package/dist/createTSDocConfig-CwaWneTR.js.map +1 -0
  13. package/dist/getExtractMessagesConfig-CXljwFbQ.js +75 -0
  14. package/dist/getExtractMessagesConfig-CXljwFbQ.js.map +1 -0
  15. package/dist/handleError-83GwKIFM.js +40 -0
  16. package/dist/handleError-83GwKIFM.js.map +1 -0
  17. package/dist/index.d.ts +141 -195
  18. package/dist/index.d.ts.map +1 -1
  19. package/dist/index.js +203 -11
  20. package/dist/index.js.map +1 -1
  21. package/dist/initAction-Cv0oRwWP.js +618 -0
  22. package/dist/initAction-Cv0oRwWP.js.map +1 -0
  23. package/dist/printExtractMessages-DyaYtByp.js +33 -0
  24. package/dist/printExtractMessages-DyaYtByp.js.map +1 -0
  25. package/dist/resolveBuildContext-CwqbTV6p.js +713 -0
  26. package/dist/resolveBuildContext-CwqbTV6p.js.map +1 -0
  27. package/dist/resolveTsdownConfig-2OdGF-dM.js +258 -0
  28. package/dist/resolveTsdownConfig-2OdGF-dM.js.map +1 -0
  29. package/dist/spinner-DAHe7SuT.js +15 -0
  30. package/dist/spinner-DAHe7SuT.js.map +1 -0
  31. package/dist/watchAction-uRPAvgLE.js +179 -0
  32. package/dist/watchAction-uRPAvgLE.js.map +1 -0
  33. package/dist/watchConfigFiles-AGBDblwf.js +43 -0
  34. package/dist/watchConfigFiles-AGBDblwf.js.map +1 -0
  35. package/package.json +10 -24
  36. package/dist/_chunks-es/buildAction.js +0 -195
  37. package/dist/_chunks-es/buildAction.js.map +0 -1
  38. package/dist/_chunks-es/checkAction.js +0 -198
  39. package/dist/_chunks-es/checkAction.js.map +0 -1
  40. package/dist/_chunks-es/createApiExtractorConfig.js +0 -52
  41. package/dist/_chunks-es/createApiExtractorConfig.js.map +0 -1
  42. package/dist/_chunks-es/createTSDocConfig.js +0 -31
  43. package/dist/_chunks-es/createTSDocConfig.js.map +0 -1
  44. package/dist/_chunks-es/defaults.js +0 -36
  45. package/dist/_chunks-es/defaults.js.map +0 -1
  46. package/dist/_chunks-es/define.js +0 -7
  47. package/dist/_chunks-es/define.js.map +0 -1
  48. package/dist/_chunks-es/extractModuleBlocks.js +0 -48
  49. package/dist/_chunks-es/extractModuleBlocks.js.map +0 -1
  50. package/dist/_chunks-es/fileExists.js +0 -12
  51. package/dist/_chunks-es/fileExists.js.map +0 -1
  52. package/dist/_chunks-es/getExtractMessagesConfig.js +0 -83
  53. package/dist/_chunks-es/getExtractMessagesConfig.js.map +0 -1
  54. package/dist/_chunks-es/handleError.js +0 -32
  55. package/dist/_chunks-es/handleError.js.map +0 -1
  56. package/dist/_chunks-es/index.js +0 -825
  57. package/dist/_chunks-es/index.js.map +0 -1
  58. package/dist/_chunks-es/initAction.js +0 -654
  59. package/dist/_chunks-es/initAction.js.map +0 -1
  60. package/dist/_chunks-es/printExtractMessages.js +0 -44
  61. package/dist/_chunks-es/printExtractMessages.js.map +0 -1
  62. package/dist/_chunks-es/resolveBuildContext.js +0 -717
  63. package/dist/_chunks-es/resolveBuildContext.js.map +0 -1
  64. package/dist/_chunks-es/resolveRolldownConfig.js +0 -117
  65. package/dist/_chunks-es/resolveRolldownConfig.js.map +0 -1
  66. package/dist/_chunks-es/spinner.js +0 -16
  67. package/dist/_chunks-es/spinner.js.map +0 -1
  68. package/dist/_chunks-es/watchAction.js +0 -160
  69. package/dist/_chunks-es/watchAction.js.map +0 -1
  70. package/dist/_chunks-es/watchConfigFiles.js +0 -49
  71. package/dist/_chunks-es/watchConfigFiles.js.map +0 -1
@@ -1,198 +0,0 @@
1
- import path from "node:path";
2
- import { up } from "empathic/package";
3
- import { loadPkgWithReporting, resolveBuildContext, createConsoleSpy } from "./resolveBuildContext.js";
4
- import { loadConfig } from "./defaults.js";
5
- import { fileExists } from "./fileExists.js";
6
- import { createLogger, handleError } from "./handleError.js";
7
- import chalk from "chalk";
8
- import treeify from "treeify";
9
- import { statSync } from "node:fs";
10
- import prettyBytes from "pretty-bytes";
11
- import { createSpinner } from "./spinner.js";
12
- function getFilesize(file) {
13
- const stats = statSync(file);
14
- return prettyBytes(stats.size);
15
- }
16
- function getFileInfo(cwd, filePath) {
17
- const p = path.resolve(cwd, filePath), exists = fileExists(p), size = exists ? getFilesize(p) : void 0;
18
- return { exists, size };
19
- }
20
- function printPackageTree(ctx) {
21
- const { cwd, exports, logger, pkg } = ctx;
22
- if (!exports) return;
23
- logger.log(`${chalk.blue(pkg.name)}@${chalk.green(pkg.version)}`);
24
- const tree = {};
25
- pkg.type && (tree.type = chalk.yellow(pkg.type)), pkg.bin && (tree.bin = Object.fromEntries(
26
- Object.entries(pkg.bin).map(([name, file]) => [chalk.cyan(name), fileInfo(file)])
27
- ));
28
- function fileInfo(file) {
29
- const info = getFileInfo(cwd, file);
30
- return info.size ? `${chalk.yellow(file)} ${chalk.gray(info.size)}` : `${chalk.gray(file)} ${chalk.red("does not exist")}`;
31
- }
32
- tree.exports = Object.fromEntries(
33
- Object.entries(exports).filter(([, entry]) => entry._exported).map(([exportPath, entry]) => {
34
- const exp = {
35
- source: fileInfo(entry.source),
36
- browser: void 0,
37
- require: void 0,
38
- node: void 0,
39
- import: void 0,
40
- default: fileInfo(entry.default)
41
- };
42
- return entry.browser ? (exp.browser = { source: fileInfo(entry.browser.source) }, entry.browser.import && (exp.browser.import = fileInfo(entry.browser.import)), entry.browser.require && (exp.browser.require = fileInfo(entry.browser.require))) : delete exp.browser, entry.require ? exp.require = fileInfo(entry.require) : delete exp.require, entry.node ? (exp.node = {}, entry.node.source && (exp.node.source = fileInfo(entry.node.source)), entry.node.import && (exp.node.import = fileInfo(entry.node.import)), entry.node.require && (exp.node.require = fileInfo(entry.node.require))) : delete exp.node, entry.import ? exp.import = fileInfo(entry.import) : delete exp.import, [chalk.cyan(path.join(pkg.name, exportPath)), exp];
43
- })
44
- ), logger.log(treeify.asTree(tree, !0, !0));
45
- }
46
- async function check(options) {
47
- const { cwd, strict = !1, tsconfig: tsconfigOption } = options, logger = createLogger(), spinner = createSpinner("");
48
- try {
49
- const pkgPath = up({ cwd });
50
- if (!pkgPath)
51
- throw new Error("no package.json found", { cause: { cwd } });
52
- const config = await loadConfig({ cwd, pkgPath }), { parseStrictOptions } = await import("./resolveBuildContext.js").then(function(n) {
53
- return n.strict;
54
- }), strictOptions = parseStrictOptions(config?.strictOptions ?? {}), pkg = await loadPkgWithReporting({ pkgPath, logger, strict, strictOptions }), tsconfig = tsconfigOption || config?.tsconfig || "tsconfig.json", ctx = await resolveBuildContext({ config, cwd, logger, pkg, strict, tsconfig });
55
- if (printPackageTree(ctx), strict) {
56
- const missingFiles = [];
57
- for (const [, exp] of Object.entries(ctx.exports || {}))
58
- exp.source && !fileExists(path.resolve(cwd, exp.source)) && missingFiles.push(exp.source), exp.require && !fileExists(path.resolve(cwd, exp.require)) && missingFiles.push(exp.require), exp.import && !fileExists(path.resolve(cwd, exp.import)) && missingFiles.push(exp.import);
59
- ctx.pkg.types && !fileExists(path.resolve(cwd, ctx.pkg.types)) && missingFiles.push(ctx.pkg.types), missingFiles.length && (logger.error(`missing files: ${missingFiles.join(", ")}`), process.exit(1));
60
- const exportPaths = {
61
- require: [],
62
- import: []
63
- };
64
- for (const exp of Object.values(ctx.exports || {}))
65
- exp._exported && (exp.require && exportPaths.require.push(exp.require), exp.import && exportPaths.import.push(exp.import));
66
- const external = [
67
- ...Object.keys(pkg.dependencies || {}),
68
- ...Object.keys(pkg.devDependencies || {})
69
- ], consoleSpy = createConsoleSpy(), checks = [];
70
- exportPaths.import.length && checks.push(checkExports(exportPaths.import, { cwd, external, format: "esm", logger })), exportPaths.require.length && checks.push(checkExports(exportPaths.require, { cwd, external, format: "cjs", logger })), await Promise.all(checks), consoleSpy.restore();
71
- }
72
- ctx.dts === "rolldown" && ctx.config?.extract?.enabled !== !1 && await checkApiExtractorReleaseTags(ctx), spinner.complete();
73
- } catch (err) {
74
- if (spinner.error(), err instanceof Error) {
75
- const RE_CWD = new RegExp(cwd, "g");
76
- logger.error((err.stack || err.message).replace(RE_CWD, ".")), logger.log();
77
- }
78
- process.exit(1);
79
- }
80
- }
81
- async function checkExports(exportPaths, options) {
82
- const { build } = await import("esbuild"), { cwd, external, format, logger } = options, code = exportPaths.map((id) => format ? `import('${id}');` : `require('${id}');`).join(`
83
- `);
84
- try {
85
- const esbuildResult = await build({
86
- bundle: !0,
87
- external,
88
- format,
89
- logLevel: "silent",
90
- // otherwise output maps to stdout as we're using stdin
91
- outfile: "/dev/null",
92
- platform: "node",
93
- // We're not interested in CSS files that might be imported as a side effect, so we'll treat them as empty
94
- loader: { ".css": "empty" },
95
- stdin: {
96
- contents: code,
97
- loader: "js",
98
- resolveDir: cwd
99
- }
100
- });
101
- if (esbuildResult.errors.length > 0) {
102
- for (const msg of esbuildResult.errors)
103
- printEsbuildMessage(logger.warn, msg), logger.log();
104
- process.exit(1);
105
- }
106
- const esbuildWarnings = esbuildResult.warnings.filter((msg) => !(msg.detail || msg.text).includes("does not affect esbuild's own target setting"));
107
- for (const msg of esbuildWarnings)
108
- printEsbuildMessage(logger.warn, msg), logger.log();
109
- } catch (err) {
110
- if (isEsbuildFailure(err)) {
111
- const { errors } = err;
112
- for (const msg of errors)
113
- printEsbuildMessage(logger.error, msg), logger.log();
114
- } else err instanceof Error ? (logger.error(err.stack || err.message), logger.log()) : (logger.error(String(err)), logger.log());
115
- process.exit(1);
116
- }
117
- }
118
- function printEsbuildMessage(log, msg) {
119
- msg.location ? log(
120
- [
121
- `${msg.detail || msg.text}
122
- `,
123
- `${msg.location.line} | ${msg.location.lineText}
124
- `,
125
- `in ./${msg.location.file}:${msg.location.line}:${msg.location.column}`
126
- ].join("")
127
- ) : log(msg.detail || msg.text);
128
- }
129
- function isEsbuildFailure(err) {
130
- return err instanceof Error && "errors" in err && Array.isArray(err.errors) && err.errors.every(isEsbuildMessage) && "warnings" in err && Array.isArray(err.warnings) && err.warnings.every(isEsbuildMessage);
131
- }
132
- function isEsbuildMessage(msg) {
133
- return typeof msg == "object" && msg !== null && "text" in msg && typeof msg.text == "string" && "location" in msg && (msg.location === null || typeof msg.location == "object");
134
- }
135
- async function checkApiExtractorReleaseTags(ctx) {
136
- const [
137
- { Extractor, ExtractorConfig },
138
- { createApiExtractorConfig },
139
- { createTSDocConfig },
140
- { getExtractMessagesConfig },
141
- { printExtractMessages }
142
- ] = await Promise.all([
143
- import("@microsoft/api-extractor"),
144
- import("./createApiExtractorConfig.js"),
145
- import("./createTSDocConfig.js"),
146
- import("./getExtractMessagesConfig.js"),
147
- import("./printExtractMessages.js")
148
- ]), customTags = ctx.config?.extract?.customTags || [], bundledPackages = ctx.bundledPackages, distPath = ctx.distPath, outDir = ctx.ts.config?.options.outDir, rules = ctx.config?.extract?.rules || {};
149
- if (!outDir)
150
- throw new Error("tsconfig.json is missing `compilerOptions.outDir`");
151
- for (const exp of Object.values(ctx.exports || {})) {
152
- if (!exp._exported || !exp.default.endsWith(".js")) continue;
153
- const dtsPath = exp.default.replace(/\.js$/, ".d.ts"), exportPath = path.resolve(ctx.cwd, dtsPath), tsdocConfigFile = await createTSDocConfig({
154
- customTags
155
- }), extractorConfig = ExtractorConfig.prepare({
156
- configObject: createApiExtractorConfig({
157
- bundledPackages,
158
- distPath,
159
- exportPath,
160
- filePath: path.relative(outDir, dtsPath),
161
- messages: getExtractMessagesConfig({ rules }),
162
- projectFolder: ctx.cwd,
163
- mainEntryPointFilePath: exportPath,
164
- tsconfig: ctx.ts.config,
165
- tsconfigPath: path.resolve(ctx.cwd, ctx.ts.configPath || "tsconfig.json"),
166
- dtsRollupEnabled: !1
167
- }),
168
- configObjectFullPath: void 0,
169
- tsdocConfigFile,
170
- packageJsonFullPath: path.resolve(ctx.cwd, "package.json")
171
- }), messages = [];
172
- Extractor.invoke(extractorConfig, {
173
- // Equivalent to the "--local" command-line parameter
174
- localBuild: !0,
175
- // Equivalent to the "--verbose" command-line parameter
176
- showVerboseMessages: !0,
177
- // handle messages
178
- messageCallback(message) {
179
- messages.push(message), message.handled = !0;
180
- }
181
- }), printExtractMessages(ctx, messages);
182
- }
183
- }
184
- async function checkAction(options) {
185
- try {
186
- await check({
187
- cwd: process.cwd(),
188
- strict: options.strict,
189
- tsconfig: options.tsconfig
190
- });
191
- } catch (err) {
192
- handleError(err);
193
- }
194
- }
195
- export {
196
- checkAction
197
- };
198
- //# sourceMappingURL=checkAction.js.map
@@ -1 +0,0 @@
1
- {"version":3,"file":"checkAction.js","sources":["../../src/node/getFilesize.ts","../../src/node/printPackageTree.ts","../../src/node/check.ts","../../src/cli/checkAction.ts"],"sourcesContent":["import {statSync} from 'node:fs'\nimport prettyBytes from 'pretty-bytes'\n\nexport function getFilesize(file: string): string {\n const stats = statSync(file)\n\n return prettyBytes(stats.size)\n}\n","import path from 'node:path'\nimport chalk from 'chalk'\nimport treeify from 'treeify'\nimport type {PkgExport} from './core/config/types.ts'\nimport type {BuildContext} from './core/contexts/buildContext.ts'\nimport {fileExists} from './fileExists.ts'\nimport {getFilesize} from './getFilesize.ts'\n\nfunction getFileInfo(cwd: string, filePath: string) {\n const p = path.resolve(cwd, filePath)\n const exists = fileExists(p)\n const size = exists ? getFilesize(p) : undefined\n\n return {exists, size}\n}\n\nexport function printPackageTree(ctx: BuildContext): void {\n const {cwd, exports, logger, pkg} = ctx\n\n if (!exports) return\n\n logger.log(`${chalk.blue(pkg.name)}@${chalk.green(pkg.version)}`)\n\n const tree: Record<string, unknown> = {}\n\n if (pkg.type) {\n tree['type'] = chalk.yellow(pkg.type)\n }\n\n if (pkg.bin) {\n tree['bin'] = Object.fromEntries(\n Object.entries(pkg.bin).map(([name, file]) => [chalk.cyan(name), fileInfo(file)]),\n )\n }\n\n function fileInfo(file: string) {\n const info = getFileInfo(cwd, file)\n\n if (!info.size) {\n return `${chalk.gray(file)} ${chalk.red('does not exist')}`\n }\n\n return `${chalk.yellow(file)} ${chalk.gray(info.size)}`\n }\n\n tree['exports'] = Object.fromEntries(\n Object.entries(exports)\n .filter(([, entry]) => entry._exported)\n .map(([exportPath, entry]) => {\n const exp: Omit<PkgExport, '_exported'> = {\n source: fileInfo(entry.source),\n browser: undefined,\n require: undefined,\n node: undefined,\n import: undefined,\n default: fileInfo(entry.default),\n }\n\n if (entry.browser) {\n exp.browser = {source: fileInfo(entry.browser.source)}\n\n if (entry.browser.import) exp.browser.import = fileInfo(entry.browser.import)\n if (entry.browser.require) exp.browser.require = fileInfo(entry.browser.require)\n } else {\n delete exp.browser\n }\n\n if (entry.require) {\n exp.require = fileInfo(entry.require)\n } else {\n delete exp.require\n }\n\n if (entry.node) {\n exp.node = {}\n\n if (entry.node.source) exp.node.source = fileInfo(entry.node.source)\n if (entry.node.import) exp.node.import = fileInfo(entry.node.import)\n if (entry.node.require) exp.node.require = fileInfo(entry.node.require)\n } else {\n delete exp.node\n }\n\n if (entry.import) {\n exp.import = fileInfo(entry.import)\n } else {\n delete exp.import\n }\n\n return [chalk.cyan(path.join(pkg.name, exportPath)), exp]\n }),\n )\n\n logger.log(treeify.asTree(tree as Record<string, any>, true, true))\n}\n","import path from 'node:path'\nimport type {ExtractorMessage} from '@microsoft/api-extractor'\nimport {up as findPkgPath} from 'empathic/package'\nimport type {BuildFailure, Message} from 'esbuild'\nimport {createConsoleSpy} from './consoleSpy.ts'\nimport {loadConfig} from './core/config/loadConfig.ts'\nimport type {BuildContext} from './core/contexts/index.ts'\nimport {loadPkgWithReporting} from './core/pkg/loadPkgWithReporting.ts'\nimport {fileExists} from './fileExists.ts'\nimport {createLogger, type Logger} from './logger.ts'\nimport {printPackageTree} from './printPackageTree.ts'\nimport {resolveBuildContext} from './resolveBuildContext.ts'\nimport {createSpinner} from './spinner.ts'\n\n/** @public */\nexport async function check(options: {\n cwd: string\n strict?: boolean\n tsconfig?: string\n}): Promise<void> {\n const {cwd, strict = false, tsconfig: tsconfigOption} = options\n const logger = createLogger()\n const spinner = createSpinner('')\n try {\n const pkgPath = findPkgPath({cwd})\n if (!pkgPath) {\n throw new Error('no package.json found', {cause: {cwd}})\n }\n const config = await loadConfig({cwd, pkgPath})\n const {parseStrictOptions} = await import('./strict.ts')\n const strictOptions = parseStrictOptions(config?.strictOptions ?? {})\n const pkg = await loadPkgWithReporting({pkgPath, logger, strict, strictOptions})\n const tsconfig = tsconfigOption || config?.tsconfig || 'tsconfig.json'\n const ctx = await resolveBuildContext({config, cwd, logger, pkg, strict, tsconfig})\n\n printPackageTree(ctx)\n\n if (strict) {\n const missingFiles: string[] = []\n\n // Check if there are missing files\n for (const [, exp] of Object.entries(ctx.exports || {})) {\n if (exp.source && !fileExists(path.resolve(cwd, exp.source))) {\n missingFiles.push(exp.source)\n }\n\n if (exp.require && !fileExists(path.resolve(cwd, exp.require))) {\n missingFiles.push(exp.require)\n }\n\n if (exp.import && !fileExists(path.resolve(cwd, exp.import))) {\n missingFiles.push(exp.import)\n }\n }\n\n if (ctx.pkg.types && !fileExists(path.resolve(cwd, ctx.pkg.types))) {\n missingFiles.push(ctx.pkg.types)\n }\n\n if (missingFiles.length) {\n logger.error(`missing files: ${missingFiles.join(', ')}`)\n process.exit(1)\n }\n\n // Check if the files are resolved\n const exportPaths: {require: string[]; import: string[]} = {\n require: [],\n import: [],\n }\n\n for (const exp of Object.values(ctx.exports || {})) {\n if (!exp._exported) continue\n if (exp.require) exportPaths.require.push(exp.require)\n if (exp.import) exportPaths.import.push(exp.import)\n }\n\n const external = [\n ...Object.keys(pkg.dependencies || {}),\n ...Object.keys(pkg.devDependencies || {}),\n ]\n\n const consoleSpy = createConsoleSpy()\n\n const checks = []\n if (exportPaths.import.length) {\n checks.push(checkExports(exportPaths.import, {cwd, external, format: 'esm', logger}))\n }\n\n if (exportPaths.require.length) {\n checks.push(checkExports(exportPaths.require, {cwd, external, format: 'cjs', logger}))\n }\n\n await Promise.all(checks)\n\n consoleSpy.restore()\n }\n\n if (ctx.dts === 'rolldown' && ctx.config?.extract?.enabled !== false) {\n await checkApiExtractorReleaseTags(ctx)\n }\n\n spinner.complete()\n } catch (err) {\n spinner.error()\n\n if (err instanceof Error) {\n const RE_CWD = new RegExp(cwd, 'g')\n\n logger.error((err.stack || err.message).replace(RE_CWD, '.'))\n logger.log()\n }\n\n process.exit(1)\n }\n}\n\nasync function checkExports(\n exportPaths: string[],\n options: {cwd: string; external: string[]; format: 'esm' | 'cjs'; logger: Logger},\n) {\n const {build} = await import('esbuild')\n const {cwd, external, format, logger} = options\n\n const code = exportPaths\n .map((id) => (format ? `import('${id}');` : `require('${id}');`))\n .join('\\n')\n\n try {\n const esbuildResult = await build({\n bundle: true,\n external,\n format,\n logLevel: 'silent',\n // otherwise output maps to stdout as we're using stdin\n outfile: '/dev/null',\n platform: 'node',\n // We're not interested in CSS files that might be imported as a side effect, so we'll treat them as empty\n loader: {'.css': 'empty'},\n stdin: {\n contents: code,\n loader: 'js',\n resolveDir: cwd,\n },\n })\n\n if (esbuildResult.errors.length > 0) {\n for (const msg of esbuildResult.errors) {\n printEsbuildMessage(logger.warn, msg)\n\n logger.log()\n }\n\n process.exit(1)\n }\n\n const esbuildWarnings = esbuildResult.warnings.filter((msg) => {\n return !(msg.detail || msg.text).includes(`does not affect esbuild's own target setting`)\n })\n\n for (const msg of esbuildWarnings) {\n printEsbuildMessage(logger.warn, msg)\n\n logger.log()\n }\n } catch (err) {\n if (isEsbuildFailure(err)) {\n const {errors} = err\n\n for (const msg of errors) {\n printEsbuildMessage(logger.error, msg)\n\n logger.log()\n }\n } else if (err instanceof Error) {\n logger.error(err.stack || err.message)\n\n logger.log()\n } else {\n logger.error(String(err))\n\n logger.log()\n }\n\n process.exit(1)\n }\n}\n\nfunction printEsbuildMessage(log: (...args: unknown[]) => void, msg: Message) {\n if (msg.location) {\n log(\n [\n `${msg.detail || msg.text}\\n`,\n `${msg.location.line} | ${msg.location.lineText}\\n`,\n `in ./${msg.location.file}:${msg.location.line}:${msg.location.column}`,\n ].join(''),\n )\n } else {\n log(msg.detail || msg.text)\n }\n}\n\nfunction isEsbuildFailure(err: unknown): err is BuildFailure {\n return (\n err instanceof Error &&\n 'errors' in err &&\n Array.isArray(err.errors) &&\n err.errors.every(isEsbuildMessage) &&\n 'warnings' in err &&\n Array.isArray(err.warnings) &&\n err.warnings.every(isEsbuildMessage)\n )\n}\n\nfunction isEsbuildMessage(msg: unknown): msg is Message {\n return (\n typeof msg === 'object' &&\n msg !== null &&\n 'text' in msg &&\n typeof msg.text === 'string' &&\n 'location' in msg &&\n (msg.location === null || typeof msg.location === 'object')\n )\n}\n\nasync function checkApiExtractorReleaseTags(ctx: BuildContext) {\n const [\n {Extractor, ExtractorConfig},\n {createApiExtractorConfig},\n {createTSDocConfig},\n {getExtractMessagesConfig},\n {printExtractMessages},\n ] = await Promise.all([\n import('@microsoft/api-extractor'),\n import('./tasks/dts/createApiExtractorConfig.ts'),\n import('./tasks/dts/createTSDocConfig.ts'),\n import('./tasks/dts/getExtractMessagesConfig.ts'),\n import('./printExtractMessages.ts'),\n ])\n\n const customTags = ctx.config?.extract?.customTags || []\n const bundledPackages = ctx.bundledPackages\n const distPath = ctx.distPath\n const outDir = ctx.ts.config?.options.outDir\n const rules = ctx.config?.extract?.rules || {}\n\n if (!outDir) {\n throw new Error('tsconfig.json is missing `compilerOptions.outDir`')\n }\n\n for (const exp of Object.values(ctx.exports || {})) {\n if (!exp._exported || !exp.default.endsWith('.js')) continue\n const dtsPath = exp.default.replace(/\\.js$/, '.d.ts')\n const exportPath = path.resolve(ctx.cwd, dtsPath)\n\n const tsdocConfigFile = await createTSDocConfig({\n customTags,\n })\n const extractorConfig = ExtractorConfig.prepare({\n configObject: createApiExtractorConfig({\n bundledPackages,\n distPath,\n exportPath,\n filePath: path.relative(outDir, dtsPath),\n messages: getExtractMessagesConfig({rules}),\n projectFolder: ctx.cwd,\n mainEntryPointFilePath: exportPath,\n tsconfig: ctx.ts.config!,\n tsconfigPath: path.resolve(ctx.cwd, ctx.ts.configPath || 'tsconfig.json'),\n dtsRollupEnabled: false,\n }),\n configObjectFullPath: undefined,\n tsdocConfigFile,\n packageJsonFullPath: path.resolve(ctx.cwd, 'package.json'),\n })\n const messages: ExtractorMessage[] = []\n // Invoke API Extractor\n 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 printExtractMessages(ctx, messages)\n }\n}\n","import {check} from '../node/check.ts'\nimport {handleError} from './handleError.ts'\n\nexport async function checkAction(options: {strict?: boolean; tsconfig?: string}): Promise<void> {\n try {\n await check({\n cwd: process.cwd(),\n strict: options.strict,\n tsconfig: options.tsconfig,\n })\n } catch (err) {\n handleError(err)\n }\n}\n"],"names":["findPkgPath"],"mappings":"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"}
@@ -1,52 +0,0 @@
1
- import path from "node:path";
2
- function createApiExtractorConfig(options) {
3
- const {
4
- bundledPackages,
5
- distPath,
6
- exportPath,
7
- filePath,
8
- messages,
9
- projectFolder,
10
- mainEntryPointFilePath,
11
- tsconfig,
12
- tsconfigPath,
13
- dtsRollupEnabled
14
- } = options;
15
- return {
16
- apiReport: {
17
- enabled: !1,
18
- reportFileName: "<unscopedPackageName>.api.md"
19
- },
20
- bundledPackages,
21
- // If `paths` are used for self-referencing imports (e.g. the module is named `sanity`, and the `sanity/structure` export is also importing from `sanity/router`),
22
- compiler: tsconfig.options.paths ? {
23
- overrideTsconfig: {
24
- extends: tsconfigPath,
25
- compilerOptions: {
26
- // An empty object replaces whatever is in the original tsconfig file
27
- paths: {}
28
- }
29
- }
30
- } : { tsconfigFilePath: tsconfigPath },
31
- docModel: {
32
- enabled: !1,
33
- apiJsonFilePath: path.resolve(distPath, `${exportPath}.api.json`)
34
- },
35
- dtsRollup: {
36
- enabled: dtsRollupEnabled,
37
- untrimmedFilePath: path.resolve(distPath, filePath)
38
- // betaTrimmedFilePath: path.resolve(distPath, filePath.replace('.d.ts', '-beta.d.ts')),
39
- // publicTrimmedFilePath: path.resolve(distPath, filePath.replace('.d.ts', '-public.d.ts')),
40
- },
41
- tsdocMetadata: {
42
- enabled: !1
43
- },
44
- messages,
45
- mainEntryPointFilePath,
46
- projectFolder
47
- };
48
- }
49
- export {
50
- createApiExtractorConfig
51
- };
52
- //# sourceMappingURL=createApiExtractorConfig.js.map
@@ -1 +0,0 @@
1
- {"version":3,"file":"createApiExtractorConfig.js","sources":["../../src/node/tasks/dts/createApiExtractorConfig.ts"],"sourcesContent":["import path from 'node:path'\nimport type {IConfigFile, IExtractorMessagesConfig} from '@microsoft/api-extractor'\nimport type ts from '@typescript/typescript6'\n\nexport function createApiExtractorConfig(options: {\n bundledPackages?: string[]\n distPath: string\n exportPath: string\n filePath: string\n messages: IExtractorMessagesConfig\n projectFolder: string\n mainEntryPointFilePath: string\n tsconfig: ts.ParsedCommandLine\n tsconfigPath: string\n dtsRollupEnabled: boolean\n}): IConfigFile {\n const {\n bundledPackages,\n distPath,\n exportPath,\n filePath,\n messages,\n projectFolder,\n mainEntryPointFilePath,\n tsconfig,\n tsconfigPath,\n dtsRollupEnabled,\n } = options\n\n return {\n apiReport: {\n enabled: false,\n reportFileName: '<unscopedPackageName>.api.md',\n },\n bundledPackages,\n\n // If `paths` are used for self-referencing imports (e.g. the module is named `sanity`, and the `sanity/structure` export is also importing from `sanity/router`),\n compiler: tsconfig.options.paths\n ? {\n overrideTsconfig: {\n extends: tsconfigPath,\n compilerOptions: {\n // An empty object replaces whatever is in the original tsconfig file\n paths: {},\n },\n },\n }\n : {tsconfigFilePath: tsconfigPath},\n\n docModel: {\n enabled: false,\n apiJsonFilePath: path.resolve(distPath, `${exportPath}.api.json`),\n },\n dtsRollup: {\n enabled: dtsRollupEnabled,\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"],"names":[],"mappings":";AAIO,SAAS,yBAAyB,SAWzB;AACd,QAAM;AAAA,IACJ;AAAA,IACA;AAAA,IACA;AAAA,IACA;AAAA,IACA;AAAA,IACA;AAAA,IACA;AAAA,IACA;AAAA,IACA;AAAA,IACA;AAAA,EAAA,IACE;AAEJ,SAAO;AAAA,IACL,WAAW;AAAA,MACT,SAAS;AAAA,MACT,gBAAgB;AAAA,IAAA;AAAA,IAElB;AAAA;AAAA,IAGA,UAAU,SAAS,QAAQ,QACvB;AAAA,MACE,kBAAkB;AAAA,QAChB,SAAS;AAAA,QACT,iBAAiB;AAAA;AAAA,UAEf,OAAO,CAAA;AAAA,QAAC;AAAA,MACV;AAAA,IACF,IAEF,EAAC,kBAAkB,aAAA;AAAA,IAEvB,UAAU;AAAA,MACR,SAAS;AAAA,MACT,iBAAiB,KAAK,QAAQ,UAAU,GAAG,UAAU,WAAW;AAAA,IAAA;AAAA,IAElE,WAAW;AAAA,MACT,SAAS;AAAA,MACT,mBAAmB,KAAK,QAAQ,UAAU,QAAQ;AAAA;AAAA;AAAA,IAAA;AAAA,IAIpD,eAAe;AAAA,MACb,SAAS;AAAA,IAAA;AAAA,IAEX;AAAA,IACA;AAAA,IACA;AAAA,EAAA;AAEJ;"}
@@ -1,31 +0,0 @@
1
- import { readFile } from "node:fs/promises";
2
- import { createRequire } from "node:module";
3
- import { TSDocConfigFile } from "@microsoft/tsdoc-config";
4
- import { parse } from "jsonc-parser";
5
- const require$1 = createRequire(import.meta.url);
6
- async function createTSDocConfig(opts) {
7
- const { customTags } = opts;
8
- if (customTags.length === 0)
9
- return;
10
- const tsDocBaseBuf = await readFile(
11
- require$1.resolve("@microsoft/api-extractor/extends/tsdoc-base.json")
12
- ), tsDocBaseConfig = parse(tsDocBaseBuf.toString()), tagDefinitions = (tsDocBaseConfig.tagDefinitions || []).concat(
13
- customTags.map((t) => ({
14
- tagName: `@${t.name}`,
15
- syntaxKind: t.syntaxKind,
16
- allowMultiple: t.allowMultiple
17
- }))
18
- ), supportForTags = { ...tsDocBaseConfig.supportForTags };
19
- for (const customTag of customTags)
20
- supportForTags[`@${customTag.name}`] = !0;
21
- return TSDocConfigFile.loadFromObject({
22
- ...tsDocBaseConfig,
23
- noStandardTags: !1,
24
- tagDefinitions,
25
- supportForTags
26
- });
27
- }
28
- export {
29
- createTSDocConfig
30
- };
31
- //# sourceMappingURL=createTSDocConfig.js.map
@@ -1 +0,0 @@
1
- {"version":3,"file":"createTSDocConfig.js","sources":["../../src/node/tasks/dts/createTSDocConfig.ts"],"sourcesContent":["import {readFile} from 'node:fs/promises'\nimport {createRequire} from 'node:module'\nimport {TSDocConfigFile} from '@microsoft/tsdoc-config'\nimport {parse} from 'jsonc-parser'\n\nconst require = createRequire(import.meta.url)\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"],"names":["require"],"mappings":";;;;AAKA,MAAMA,YAAU,cAAc,YAAY,GAAG;AAU7C,eAAsB,kBAAkB,MAEC;AACvC,QAAM,EAAC,eAAc;AAErB,MAAI,WAAW,WAAW;AACxB;AAGF,QAAM,eAAe,MAAM;AAAA,IACzBA,UAAQ,QAAQ,kDAAkD;AAAA,EAAA,GAK9D,kBAAkB,MAAM,aAAa,SAAA,CAAU,GAG/C,kBAAkB,gBAAgB,kBAAkB,CAAA,GAAI;AAAA,IAC5D,WAAW,IAAI,CAAC,OAAO;AAAA,MACrB,SAAS,IAAI,EAAE,IAAI;AAAA,MACnB,YAAY,EAAE;AAAA,MACd,eAAe,EAAE;AAAA,IAAA,EACjB;AAAA,EAAA,GAKE,iBAAiB,EAAC,GAAG,gBAAgB,eAAA;AAE3C,aAAW,aAAa;AACtB,mBAAe,IAAI,UAAU,IAAI,EAAE,IAAI;AAGzC,SAAO,gBAAgB,eAAe;AAAA,IACpC,GAAG;AAAA,IACH,gBAAgB;AAAA,IAChB;AAAA,IACA;AAAA,EAAA,CACD;AACH;"}
@@ -1,36 +0,0 @@
1
- import path from "node:path";
2
- import { pathToFileURL } from "node:url";
3
- import { tsImport } from "tsx/esm/api";
4
- import findConfig from "find-config";
5
- import { fileExists } from "./fileExists.js";
6
- import config from "@sanity/browserslist-config";
7
- const CONFIG_FILE_NAMES = [
8
- "package.config.ts",
9
- "package.config.js",
10
- "package.config.cjs",
11
- "package.config.mts",
12
- "package.config.mjs"
13
- ];
14
- function findConfigFile(cwd) {
15
- const pkgJsonPath = findConfig("package.json", { cwd });
16
- if (!pkgJsonPath) return;
17
- const pkgPath = path.dirname(pkgJsonPath);
18
- for (const fileName of CONFIG_FILE_NAMES) {
19
- const configPath = path.resolve(pkgPath, fileName);
20
- if (fileExists(configPath))
21
- return configPath;
22
- }
23
- }
24
- async function loadConfig(options) {
25
- const { cwd, pkgPath } = options, root = path.dirname(pkgPath), configFile = findConfigFile(root);
26
- if (!configFile || !configFile.startsWith(cwd))
27
- return;
28
- const mod = await tsImport(pathToFileURL(configFile).toString(), import.meta.url);
29
- return mod?.default || mod || void 0;
30
- }
31
- const DEFAULT_BROWSERSLIST_QUERY = config;
32
- export {
33
- DEFAULT_BROWSERSLIST_QUERY,
34
- loadConfig
35
- };
36
- //# sourceMappingURL=defaults.js.map
@@ -1 +0,0 @@
1
- {"version":3,"file":"defaults.js","sources":["../../src/node/core/config/findConfigFile.ts","../../src/node/core/config/loadConfig.ts","../../src/node/core/defaults.ts"],"sourcesContent":["import path from 'node:path'\nimport findConfig from 'find-config'\nimport {fileExists} from '../../fileExists.ts'\n\nconst CONFIG_FILE_NAMES = [\n 'package.config.ts',\n 'package.config.js',\n 'package.config.cjs',\n 'package.config.mts',\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 path from 'node:path'\nimport {pathToFileURL} from 'node:url'\nimport {tsImport} from 'tsx/esm/api'\nimport {findConfigFile} from './findConfigFile.ts'\nimport type {PkgConfigOptions} from './types.ts'\n\n/** @alpha */\nexport async function loadConfig(options: {\n cwd: string\n pkgPath: string\n}): Promise<PkgConfigOptions | undefined> {\n const {cwd, pkgPath} = options\n\n const root = path.dirname(pkgPath)\n\n const configFile = 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 mod = await tsImport(pathToFileURL(configFile).toString(), import.meta.url)\n\n return mod?.default || mod || undefined\n}\n","import config from '@sanity/browserslist-config'\n\n/** @public */\nexport const DEFAULT_BROWSERSLIST_QUERY: string[] = config\n"],"names":[],"mappings":";;;;;;AAIA,MAAM,oBAAoB;AAAA,EACxB;AAAA,EACA;AAAA,EACA;AAAA,EACA;AAAA,EACA;AACF;AAGO,SAAS,eAAe,KAAiC;AAC9D,QAAM,cAAc,WAAW,gBAAgB,EAAC,KAAI;AAEpD,MAAI,CAAC,YAAa;AAElB,QAAM,UAAU,KAAK,QAAQ,WAAW;AAExC,aAAW,YAAY,mBAAmB;AACxC,UAAM,aAAa,KAAK,QAAQ,SAAS,QAAQ;AAIjD,QAFe,WAAW,UAAU;AAGlC,aAAO;AAAA,EAEX;AAGF;ACxBA,eAAsB,WAAW,SAGS;AACxC,QAAM,EAAC,KAAK,QAAA,IAAW,SAEjB,OAAO,KAAK,QAAQ,OAAO,GAE3B,aAAa,eAAe,IAAI;AAOtC,MALI,CAAC,cAKD,CAAC,WAAW,WAAW,GAAG;AAC5B;AAGF,QAAM,MAAM,MAAM,SAAS,cAAc,UAAU,EAAE,YAAY,YAAY,GAAG;AAEhF,SAAO,KAAK,WAAW,OAAO;AAChC;AC1BO,MAAM,6BAAuC;"}
@@ -1,7 +0,0 @@
1
- function defineTemplateOption(option) {
2
- return option;
3
- }
4
- export {
5
- defineTemplateOption
6
- };
7
- //# sourceMappingURL=define.js.map
@@ -1 +0,0 @@
1
- {"version":3,"file":"define.js","sources":["../../src/node/core/template/define.ts"],"sourcesContent":["import type {PkgTemplateOption} from './types.ts'\n\n/** @public */\nexport function defineTemplateOption<T>(option: PkgTemplateOption<T>): PkgTemplateOption<T> {\n return option\n}\n"],"names":[],"mappings":"AAGO,SAAS,qBAAwB,QAAoD;AAC1F,SAAO;AACT;"}
@@ -1,48 +0,0 @@
1
- import ts from "@typescript/typescript6";
2
- function extractModuleBlocksFromTypes({
3
- tsOutDir,
4
- extractResult
5
- }) {
6
- const program = extractResult.compilerState.program, moduleBlocks = [], sourceFiles = [...program.getSourceFiles()].filter((sourceFile) => sourceFile.fileName.includes(tsOutDir));
7
- for (const sourceFile of sourceFiles)
8
- if (sourceFile.text.includes("declare module")) {
9
- const parsedFile = ts.createSourceFile(
10
- sourceFile.fileName,
11
- sourceFile.text,
12
- ts.ScriptTarget.Latest,
13
- /* setParentNodes */
14
- !0
15
- );
16
- moduleBlocks.push(...extractModuleBlocks(parsedFile));
17
- }
18
- return moduleBlocks;
19
- }
20
- function extractModuleBlocks(sourceFile) {
21
- const text = sourceFile.text, moduleBlocks = [], statements = sourceFile.statements;
22
- for (let i = 0; i < statements.length; i++) {
23
- const statement = statements[i];
24
- if (statement && ts.isModuleDeclaration(statement)) {
25
- const fullStart = statement.getFullStart(), start = statement.getStart(sourceFile);
26
- let end = statement.getEnd();
27
- const lastTrailing = ts.getTrailingCommentRanges(text, end)?.at(-1);
28
- if (lastTrailing)
29
- end = lastTrailing.end;
30
- else {
31
- const nextStatementStart = statements[i + 1]?.getFullStart() ?? text.length, lastCommentAfter = ts.getLeadingCommentRanges(text, end)?.at(-1);
32
- lastCommentAfter && lastCommentAfter.end <= nextStatementStart && (end = lastCommentAfter.end);
33
- }
34
- const leadingComments = ts.getLeadingCommentRanges(text, fullStart);
35
- let blockStart = start;
36
- if (leadingComments && leadingComments.length > 0) {
37
- const lastComment = leadingComments.at(-1);
38
- lastComment && text.slice(lastComment.pos, lastComment.end).startsWith("/**") && (blockStart = lastComment.pos);
39
- }
40
- moduleBlocks.push(text.slice(blockStart, end));
41
- }
42
- }
43
- return moduleBlocks;
44
- }
45
- export {
46
- extractModuleBlocksFromTypes
47
- };
48
- //# sourceMappingURL=extractModuleBlocks.js.map
@@ -1 +0,0 @@
1
- {"version":3,"file":"extractModuleBlocks.js","sources":["../../src/node/tasks/dts/extractModuleBlocks.ts"],"sourcesContent":["import type {ExtractorResult} from '@microsoft/api-extractor'\nimport ts from '@typescript/typescript6'\n\n/**\n * A workaround to find all module blocks in extract TS files.\n * @internal\n * */\nexport function extractModuleBlocksFromTypes({\n tsOutDir,\n extractResult,\n}: {\n tsOutDir: string\n extractResult: ExtractorResult\n}): string[] {\n // eslint-disable-next-line @typescript-eslint/no-unsafe-type-assertion -- ExtractorResult type from @microsoft/api-extractor is complex\n const program = extractResult.compilerState.program as ts.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 // Re-parse the source file to ensure we have a complete AST\n // The source files from API Extractor's program may not have fully parsed statements\n const parsedFile = ts.createSourceFile(\n sourceFile.fileName,\n sourceFile.text,\n ts.ScriptTarget.Latest,\n /* setParentNodes */ true,\n )\n moduleBlocks.push(...extractModuleBlocks(parsedFile))\n }\n }\n\n return moduleBlocks\n}\n\n/**\n * Extract `declare module` blocks from a TypeScript source file.\n */\nfunction extractModuleBlocks(sourceFile: ts.SourceFile): string[] {\n const text = sourceFile.text\n const moduleBlocks: string[] = []\n\n const statements = sourceFile.statements\n for (let i = 0; i < statements.length; i++) {\n const statement = statements[i]\n if (statement && ts.isModuleDeclaration(statement)) {\n // Get positions for extracting text\n const fullStart = statement.getFullStart()\n const start = statement.getStart(sourceFile)\n let end = statement.getEnd()\n\n // Include trailing comments (like sourceMappingURL)\n // First check for same-line trailing comments\n const trailingComments = ts.getTrailingCommentRanges(text, end)\n const lastTrailing = trailingComments?.at(-1)\n if (lastTrailing) {\n end = lastTrailing.end\n } else {\n // Check for comments on following lines (only if this is the last statement\n // or if they come before the next statement)\n const nextStatement = statements[i + 1]\n const nextStatementStart = nextStatement?.getFullStart() ?? text.length\n const commentsAfter = ts.getLeadingCommentRanges(text, end)\n const lastCommentAfter = commentsAfter?.at(-1)\n if (lastCommentAfter && lastCommentAfter.end <= nextStatementStart) {\n end = lastCommentAfter.end\n }\n }\n\n // Check for leading JSDoc comments\n const leadingComments = ts.getLeadingCommentRanges(text, fullStart)\n\n let blockStart = start\n if (leadingComments && leadingComments.length > 0) {\n // Use the last comment if it's a JSDoc comment (starts with /**)\n const lastComment = leadingComments.at(-1)\n if (lastComment) {\n const commentText = text.slice(lastComment.pos, lastComment.end)\n if (commentText.startsWith('/**')) {\n blockStart = lastComment.pos\n }\n }\n }\n\n // Extract the text from blockStart to end\n // No need to dedent - the output will be formatted by prettier\n moduleBlocks.push(text.slice(blockStart, end))\n }\n }\n\n return moduleBlocks\n}\n"],"names":[],"mappings":";AAOO,SAAS,6BAA6B;AAAA,EAC3C;AAAA,EACA;AACF,GAGa;AAEX,QAAM,UAAU,cAAc,cAAc,SACtC,eAAyB,CAAA,GAMzB,cAHkB,CAAC,GAAG,QAAQ,gBAAgB,EAGhB,OAAO,CAAC,eAAe,WAAW,SAAS,SAAS,QAAQ,CAAC;AAEjG,aAAW,cAAc;AACvB,QAAI,WAAW,KAAK,SAAS,gBAAgB,GAAG;AAG9C,YAAM,aAAa,GAAG;AAAA,QACpB,WAAW;AAAA,QACX,WAAW;AAAA,QACX,GAAG,aAAa;AAAA;AAAA,QACK;AAAA,MAAA;AAEvB,mBAAa,KAAK,GAAG,oBAAoB,UAAU,CAAC;AAAA,IACtD;AAGF,SAAO;AACT;AAKA,SAAS,oBAAoB,YAAqC;AAChE,QAAM,OAAO,WAAW,MAClB,eAAyB,IAEzB,aAAa,WAAW;AAC9B,WAAS,IAAI,GAAG,IAAI,WAAW,QAAQ,KAAK;AAC1C,UAAM,YAAY,WAAW,CAAC;AAC9B,QAAI,aAAa,GAAG,oBAAoB,SAAS,GAAG;AAElD,YAAM,YAAY,UAAU,aAAA,GACtB,QAAQ,UAAU,SAAS,UAAU;AAC3C,UAAI,MAAM,UAAU,OAAA;AAKpB,YAAM,eADmB,GAAG,yBAAyB,MAAM,GAAG,GACvB,GAAG,EAAE;AAC5C,UAAI;AACF,cAAM,aAAa;AAAA,WACd;AAIL,cAAM,qBADgB,WAAW,IAAI,CAAC,GACI,kBAAkB,KAAK,QAE3D,mBADgB,GAAG,wBAAwB,MAAM,GAAG,GAClB,GAAG,EAAE;AACzC,4BAAoB,iBAAiB,OAAO,uBAC9C,MAAM,iBAAiB;AAAA,MAE3B;AAGA,YAAM,kBAAkB,GAAG,wBAAwB,MAAM,SAAS;AAElE,UAAI,aAAa;AACjB,UAAI,mBAAmB,gBAAgB,SAAS,GAAG;AAEjD,cAAM,cAAc,gBAAgB,GAAG,EAAE;AACrC,uBACkB,KAAK,MAAM,YAAY,KAAK,YAAY,GAAG,EAC/C,WAAW,KAAK,MAC9B,aAAa,YAAY;AAAA,MAG/B;AAIA,mBAAa,KAAK,KAAK,MAAM,YAAY,GAAG,CAAC;AAAA,IAC/C;AAAA,EACF;AAEA,SAAO;AACT;"}
@@ -1,12 +0,0 @@
1
- import { statSync } from "node:fs";
2
- function fileExists(filePath) {
3
- try {
4
- return statSync(filePath), !0;
5
- } catch {
6
- return !1;
7
- }
8
- }
9
- export {
10
- fileExists
11
- };
12
- //# sourceMappingURL=fileExists.js.map
@@ -1 +0,0 @@
1
- {"version":3,"file":"fileExists.js","sources":["../../src/node/fileExists.ts"],"sourcesContent":["import {statSync} from 'node:fs'\n\n/** @internal */\nexport function fileExists(filePath: string): boolean {\n try {\n statSync(filePath)\n\n return true\n } catch {\n return false\n }\n}\n"],"names":[],"mappings":";AAGO,SAAS,WAAW,UAA2B;AACpD,MAAI;AACF,WAAA,SAAS,QAAQ,GAEV;AAAA,EACT,QAAQ;AACN,WAAO;AAAA,EACT;AACF;"}
@@ -1,83 +0,0 @@
1
- import { ExtractorLogLevel } from "@microsoft/api-extractor";
2
- const LOG_LEVELS = {
3
- error: ExtractorLogLevel.Error,
4
- info: ExtractorLogLevel.Info,
5
- off: ExtractorLogLevel.None,
6
- warn: ExtractorLogLevel.Warning
7
- };
8
- function getExtractMessagesConfig(options) {
9
- const { rules, disabled = !1 } = options;
10
- function ruleToLogLevel(key, defaultLevel) {
11
- const r = rules?.[key];
12
- return r ? LOG_LEVELS[r] : defaultLevel || ExtractorLogLevel.Warning;
13
- }
14
- return {
15
- compilerMessageReporting: {
16
- default: {
17
- logLevel: disabled ? ExtractorLogLevel.None : ExtractorLogLevel.Warning
18
- }
19
- },
20
- extractorMessageReporting: disabled ? {
21
- default: {
22
- logLevel: ExtractorLogLevel.None,
23
- addToApiReportFile: !1
24
- }
25
- } : {
26
- default: {
27
- logLevel: ExtractorLogLevel.Warning,
28
- addToApiReportFile: !1
29
- },
30
- "ae-forgotten-export": {
31
- /**
32
- * This is hardcoded to `none` as it's no longer needed since TypeScript 5.5 https://github.com/microsoft/TypeScript/issues/42873
33
- * It's hardcoded to `none` since supported by API Extractor when using `module: 'Preserve'` doesn't support it well since `@microsoft/api-extractor` v7.49.0, which upgraded from TS 5.4 to 5.7 internally
34
- */
35
- logLevel: ExtractorLogLevel.None,
36
- addToApiReportFile: !1
37
- },
38
- "ae-incompatible-release-tags": {
39
- logLevel: ruleToLogLevel("ae-incompatible-release-tags", ExtractorLogLevel.Error),
40
- addToApiReportFile: !1
41
- },
42
- "ae-internal-missing-underscore": {
43
- logLevel: ruleToLogLevel("ae-internal-missing-underscore"),
44
- addToApiReportFile: !1
45
- },
46
- "ae-missing-release-tag": {
47
- logLevel: ruleToLogLevel("ae-missing-release-tag", ExtractorLogLevel.Error),
48
- addToApiReportFile: !1
49
- },
50
- "ae-wrong-input-file-type": {
51
- logLevel: ExtractorLogLevel.None,
52
- addToApiReportFile: !1
53
- }
54
- },
55
- tsdocMessageReporting: disabled ? {
56
- default: {
57
- logLevel: ExtractorLogLevel.None,
58
- addToApiReportFile: !1
59
- }
60
- } : {
61
- default: {
62
- logLevel: ExtractorLogLevel.Warning,
63
- addToApiReportFile: !1
64
- },
65
- "tsdoc-link-tag-unescaped-text": {
66
- logLevel: ruleToLogLevel("tsdoc-link-tag-unescaped-text", ExtractorLogLevel.Warning),
67
- addToApiReportFile: !1
68
- },
69
- "tsdoc-undefined-tag": {
70
- logLevel: ruleToLogLevel("tsdoc-undefined-tag", ExtractorLogLevel.Error),
71
- addToApiReportFile: !1
72
- },
73
- "tsdoc-unsupported-tag": {
74
- logLevel: ruleToLogLevel("tsdoc-unsupported-tag", ExtractorLogLevel.None),
75
- addToApiReportFile: !1
76
- }
77
- }
78
- };
79
- }
80
- export {
81
- getExtractMessagesConfig
82
- };
83
- //# sourceMappingURL=getExtractMessagesConfig.js.map
@@ -1 +0,0 @@
1
- {"version":3,"file":"getExtractMessagesConfig.js","sources":["../../src/node/tasks/dts/getExtractMessagesConfig.ts"],"sourcesContent":["import {ExtractorLogLevel, type IExtractorMessagesConfig} from '@microsoft/api-extractor'\nimport type {PkgConfigOptions, PkgRuleLevel} from '../../core/config/types.ts'\n\nconst LOG_LEVELS: Record<PkgRuleLevel, ExtractorLogLevel> = {\n error: ExtractorLogLevel.Error,\n info: ExtractorLogLevel.Info,\n off: ExtractorLogLevel.None,\n warn: ExtractorLogLevel.Warning,\n}\n\n/** @alpha */\nexport function getExtractMessagesConfig(options: {\n rules: NonNullable<PkgConfigOptions['extract']>['rules']\n disabled?: boolean\n}): IExtractorMessagesConfig {\n const {rules, disabled = false} = 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 || ExtractorLogLevel.Warning\n }\n\n return {\n compilerMessageReporting: {\n default: {\n logLevel: disabled ? ExtractorLogLevel.None : ExtractorLogLevel.Warning,\n },\n },\n\n extractorMessageReporting: disabled\n ? {\n default: {\n logLevel: ExtractorLogLevel.None,\n addToApiReportFile: false,\n },\n }\n : {\n 'default': {\n logLevel: ExtractorLogLevel.Warning,\n addToApiReportFile: false,\n },\n\n 'ae-forgotten-export': {\n /**\n * This is hardcoded to `none` as it's no longer needed since TypeScript 5.5 https://github.com/microsoft/TypeScript/issues/42873\n * It's hardcoded to `none` since supported by API Extractor when using `module: 'Preserve'` doesn't support it well since `@microsoft/api-extractor` v7.49.0, which upgraded from TS 5.4 to 5.7 internally\n */\n logLevel: ExtractorLogLevel.None,\n addToApiReportFile: false,\n },\n\n 'ae-incompatible-release-tags': {\n logLevel: ruleToLogLevel('ae-incompatible-release-tags', ExtractorLogLevel.Error),\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', ExtractorLogLevel.Error),\n addToApiReportFile: false,\n },\n\n 'ae-wrong-input-file-type': {\n logLevel: ExtractorLogLevel.None,\n addToApiReportFile: false,\n },\n },\n\n tsdocMessageReporting: disabled\n ? {\n default: {\n logLevel: ExtractorLogLevel.None,\n addToApiReportFile: false,\n },\n }\n : {\n 'default': {\n logLevel: ExtractorLogLevel.Warning,\n addToApiReportFile: false,\n },\n\n 'tsdoc-link-tag-unescaped-text': {\n logLevel: ruleToLogLevel('tsdoc-link-tag-unescaped-text', ExtractorLogLevel.Warning),\n addToApiReportFile: false,\n },\n\n 'tsdoc-undefined-tag': {\n logLevel: ruleToLogLevel('tsdoc-undefined-tag', ExtractorLogLevel.Error),\n addToApiReportFile: false,\n },\n\n 'tsdoc-unsupported-tag': {\n logLevel: ruleToLogLevel('tsdoc-unsupported-tag', ExtractorLogLevel.None),\n addToApiReportFile: false,\n },\n },\n }\n}\n"],"names":[],"mappings":";AAGA,MAAM,aAAsD;AAAA,EAC1D,OAAO,kBAAkB;AAAA,EACzB,MAAM,kBAAkB;AAAA,EACxB,KAAK,kBAAkB;AAAA,EACvB,MAAM,kBAAkB;AAC1B;AAGO,SAAS,yBAAyB,SAGZ;AAC3B,QAAM,EAAC,OAAO,WAAW,GAAA,IAAS;AAElC,WAAS,eACP,KACA,cACA;AACA,UAAM,IAAI,QAAQ,GAAG;AAErB,WAAO,IAAI,WAAW,CAAC,IAAI,gBAAgB,kBAAkB;AAAA,EAC/D;AAEA,SAAO;AAAA,IACL,0BAA0B;AAAA,MACxB,SAAS;AAAA,QACP,UAAU,WAAW,kBAAkB,OAAO,kBAAkB;AAAA,MAAA;AAAA,IAClE;AAAA,IAGF,2BAA2B,WACvB;AAAA,MACE,SAAS;AAAA,QACP,UAAU,kBAAkB;AAAA,QAC5B,oBAAoB;AAAA,MAAA;AAAA,IACtB,IAEF;AAAA,MACE,SAAW;AAAA,QACT,UAAU,kBAAkB;AAAA,QAC5B,oBAAoB;AAAA,MAAA;AAAA,MAGtB,uBAAuB;AAAA;AAAA;AAAA;AAAA;AAAA,QAKrB,UAAU,kBAAkB;AAAA,QAC5B,oBAAoB;AAAA,MAAA;AAAA,MAGtB,gCAAgC;AAAA,QAC9B,UAAU,eAAe,gCAAgC,kBAAkB,KAAK;AAAA,QAChF,oBAAoB;AAAA,MAAA;AAAA,MAGtB,kCAAkC;AAAA,QAChC,UAAU,eAAe,gCAAgC;AAAA,QACzD,oBAAoB;AAAA,MAAA;AAAA,MAGtB,0BAA0B;AAAA,QACxB,UAAU,eAAe,0BAA0B,kBAAkB,KAAK;AAAA,QAC1E,oBAAoB;AAAA,MAAA;AAAA,MAGtB,4BAA4B;AAAA,QAC1B,UAAU,kBAAkB;AAAA,QAC5B,oBAAoB;AAAA,MAAA;AAAA,IACtB;AAAA,IAGN,uBAAuB,WACnB;AAAA,MACE,SAAS;AAAA,QACP,UAAU,kBAAkB;AAAA,QAC5B,oBAAoB;AAAA,MAAA;AAAA,IACtB,IAEF;AAAA,MACE,SAAW;AAAA,QACT,UAAU,kBAAkB;AAAA,QAC5B,oBAAoB;AAAA,MAAA;AAAA,MAGtB,iCAAiC;AAAA,QAC/B,UAAU,eAAe,iCAAiC,kBAAkB,OAAO;AAAA,QACnF,oBAAoB;AAAA,MAAA;AAAA,MAGtB,uBAAuB;AAAA,QACrB,UAAU,eAAe,uBAAuB,kBAAkB,KAAK;AAAA,QACvE,oBAAoB;AAAA,MAAA;AAAA,MAGtB,yBAAyB;AAAA,QACvB,UAAU,eAAe,yBAAyB,kBAAkB,IAAI;AAAA,QACxE,oBAAoB;AAAA,MAAA;AAAA,IACtB;AAAA,EACF;AAER;"}
@@ -1,32 +0,0 @@
1
- import chalk from "chalk";
2
- function createLogger(quiet = !1) {
3
- return {
4
- log: (...args) => {
5
- quiet || console.log(...args);
6
- },
7
- info: (...args) => {
8
- quiet || console.log(chalk.blue("[info]"), ...args);
9
- },
10
- warn: (...args) => {
11
- console.log(chalk.yellow("[warning]"), ...args);
12
- },
13
- error: (...args) => {
14
- console.log(chalk.red("[error]"), ...args);
15
- },
16
- success: (...args) => {
17
- quiet || console.log(chalk.green("[success]"), ...args);
18
- }
19
- };
20
- }
21
- function isRecord(value) {
22
- return !!value && !Array.isArray(value) && typeof value == "object";
23
- }
24
- function handleError(err) {
25
- err instanceof Error ? console.error(chalk.red("error"), err.stack) : console.error(err), process.exit(1);
26
- }
27
- export {
28
- createLogger,
29
- handleError,
30
- isRecord
31
- };
32
- //# sourceMappingURL=handleError.js.map
@@ -1 +0,0 @@
1
- {"version":3,"file":"handleError.js","sources":["../../src/node/logger.ts","../../src/node/core/isRecord.ts","../../src/cli/handleError.ts"],"sourcesContent":["// oxlint-disable no-console\nimport chalk from 'chalk'\n\n/** @alpha */\nexport interface Logger {\n log: (...args: unknown[]) => void\n info: (...args: unknown[]) => void\n warn: (...args: unknown[]) => void\n error: (...args: unknown[]) => void\n success: (...args: unknown[]) => void\n}\n\n/** @alpha */\nexport function createLogger(quiet = false): Logger {\n return {\n log: (...args) => {\n if (!quiet) console.log(...args)\n },\n info: (...args) => {\n if (!quiet) console.log(chalk.blue('[info]'), ...args)\n },\n warn: (...args) => {\n console.log(chalk.yellow('[warning]'), ...args)\n },\n error: (...args) => {\n console.log(chalk.red('[error]'), ...args)\n },\n success: (...args) => {\n if (!quiet) console.log(chalk.green('[success]'), ...args)\n },\n }\n}\n","/** @internal */\nexport function isRecord(value: unknown): value is Record<string, unknown> {\n return Boolean(value) && !Array.isArray(value) && typeof value === 'object'\n}\n","import chalk from 'chalk'\n\nexport function handleError(err: unknown): void {\n if (err instanceof Error) {\n console.error(chalk.red('error'), err.stack)\n } else {\n console.error(err)\n }\n\n process.exit(1)\n}\n"],"names":[],"mappings":";AAaO,SAAS,aAAa,QAAQ,IAAe;AAClD,SAAO;AAAA,IACL,KAAK,IAAI,SAAS;AACX,eAAO,QAAQ,IAAI,GAAG,IAAI;AAAA,IACjC;AAAA,IACA,MAAM,IAAI,SAAS;AACZ,eAAO,QAAQ,IAAI,MAAM,KAAK,QAAQ,GAAG,GAAG,IAAI;AAAA,IACvD;AAAA,IACA,MAAM,IAAI,SAAS;AACjB,cAAQ,IAAI,MAAM,OAAO,WAAW,GAAG,GAAG,IAAI;AAAA,IAChD;AAAA,IACA,OAAO,IAAI,SAAS;AAClB,cAAQ,IAAI,MAAM,IAAI,SAAS,GAAG,GAAG,IAAI;AAAA,IAC3C;AAAA,IACA,SAAS,IAAI,SAAS;AACf,eAAO,QAAQ,IAAI,MAAM,MAAM,WAAW,GAAG,GAAG,IAAI;AAAA,IAC3D;AAAA,EAAA;AAEJ;AC9BO,SAAS,SAAS,OAAkD;AACzE,SAAO,CAAA,CAAQ,SAAU,CAAC,MAAM,QAAQ,KAAK,KAAK,OAAO,SAAU;AACrE;ACDO,SAAS,YAAY,KAAoB;AAC1C,iBAAe,QACjB,QAAQ,MAAM,MAAM,IAAI,OAAO,GAAG,IAAI,KAAK,IAE3C,QAAQ,MAAM,GAAG,GAGnB,QAAQ,KAAK,CAAC;AAChB;"}