@sanity/pkg-utils 4.2.5 → 4.2.7

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 (41) hide show
  1. package/dist/_chunks/build-Dvr5eKKV.cjs +158 -0
  2. package/dist/_chunks/{build-CXc7iZ4I.cjs.map → build-Dvr5eKKV.cjs.map} +1 -1
  3. package/dist/_chunks/{buildAction-C7_2DRLs.cjs → buildAction-BqdY-x5D.cjs} +3 -7
  4. package/dist/_chunks/{buildAction-C7_2DRLs.cjs.map → buildAction-BqdY-x5D.cjs.map} +1 -1
  5. package/dist/_chunks/check-BSN1yLfm.cjs +118 -0
  6. package/dist/_chunks/check-BSN1yLfm.cjs.map +1 -0
  7. package/dist/_chunks/{checkAction-B86PejBD.cjs → checkAction-CplEAcgR.cjs} +3 -7
  8. package/dist/_chunks/{checkAction-B86PejBD.cjs.map → checkAction-CplEAcgR.cjs.map} +1 -1
  9. package/dist/_chunks/consoleSpy-1_g1SPGc.cjs +369 -0
  10. package/dist/_chunks/{consoleSpy-DnlN7UBk.cjs.map → consoleSpy-1_g1SPGc.cjs.map} +1 -1
  11. package/dist/_chunks/handleError-CGQ2DXMR.cjs +11 -0
  12. package/dist/_chunks/handleError-CGQ2DXMR.cjs.map +1 -0
  13. package/dist/_chunks/index-Dxhh31D_.cjs +19997 -0
  14. package/dist/_chunks/{index-KFzP3Jfd.cjs.map → index-Dxhh31D_.cjs.map} +1 -1
  15. package/dist/_chunks/{init-CZQh-Q_y.cjs → init-2mlaoNTF.cjs} +174 -261
  16. package/dist/_chunks/{init-CZQh-Q_y.cjs.map → init-2mlaoNTF.cjs.map} +1 -1
  17. package/dist/_chunks/{initAction-BYVnsbAj.cjs → initAction-BlTz_X1p.cjs} +3 -7
  18. package/dist/_chunks/{initAction-BYVnsbAj.cjs.map → initAction-BlTz_X1p.cjs.map} +1 -1
  19. package/dist/_chunks/{logger-CpjNjxqG.cjs → logger-CwHVwB-b.cjs} +11 -20
  20. package/dist/_chunks/logger-CwHVwB-b.cjs.map +1 -0
  21. package/dist/_chunks/watch-Dqp3kWd_.cjs +156 -0
  22. package/dist/_chunks/{watch-CvkxIHzY.cjs.map → watch-Dqp3kWd_.cjs.map} +1 -1
  23. package/dist/_chunks/{watchAction-CkOiWSyp.cjs → watchAction-4vv-wSLV.cjs} +3 -7
  24. package/dist/_chunks/{watchAction-CkOiWSyp.cjs.map → watchAction-4vv-wSLV.cjs.map} +1 -1
  25. package/dist/cli.cjs +18 -14
  26. package/dist/cli.cjs.map +1 -1
  27. package/dist/index.cjs +3 -13
  28. package/dist/index.cjs.map +1 -1
  29. package/dist/index.js +19893 -35944
  30. package/dist/index.js.map +1 -1
  31. package/package.json +2 -2
  32. package/src/node/tasks/rollup/resolveRollupConfig.ts +2 -2
  33. package/dist/_chunks/build-CXc7iZ4I.cjs +0 -216
  34. package/dist/_chunks/check-Do7O9Mjo.cjs +0 -223
  35. package/dist/_chunks/check-Do7O9Mjo.cjs.map +0 -1
  36. package/dist/_chunks/consoleSpy-DnlN7UBk.cjs +0 -632
  37. package/dist/_chunks/handleError-DB8KmYKe.cjs +0 -19
  38. package/dist/_chunks/handleError-DB8KmYKe.cjs.map +0 -1
  39. package/dist/_chunks/index-KFzP3Jfd.cjs +0 -35564
  40. package/dist/_chunks/logger-CpjNjxqG.cjs.map +0 -1
  41. package/dist/_chunks/watch-CvkxIHzY.cjs +0 -227
package/package.json CHANGED
@@ -1,6 +1,6 @@
1
1
  {
2
2
  "name": "@sanity/pkg-utils",
3
- "version": "4.2.5",
3
+ "version": "4.2.7",
4
4
  "description": "Simple utilities for modern npm packages.",
5
5
  "keywords": [
6
6
  "sanity-io",
@@ -133,7 +133,7 @@
133
133
  "typescript": "^5.3.3",
134
134
  "vitest": "^1.3.1",
135
135
  "vitest-github-actions-reporter": "^0.11.1",
136
- "@sanity/pkg-utils": "4.2.5"
136
+ "@sanity/pkg-utils": "4.2.7"
137
137
  },
138
138
  "peerDependencies": {
139
139
  "typescript": "^4.7 || ^5"
@@ -99,7 +99,7 @@ export function resolveRollupConfig(
99
99
  target,
100
100
  tsconfig: ctx.ts.configPath || 'tsconfig.json',
101
101
  treeShaking: true,
102
- minifySyntax: minify,
102
+ minifySyntax: config?.minify !== false,
103
103
  }),
104
104
  Array.isArray(config?.babel?.plugins) &&
105
105
  getBabelOutputPlugin({
@@ -108,7 +108,7 @@ export function resolveRollupConfig(
108
108
  }),
109
109
  minify &&
110
110
  terser({
111
- compress: true,
111
+ compress: {directives: false},
112
112
  output: {
113
113
  comments: (_node, comment) => {
114
114
  const text = comment.value
@@ -1,216 +0,0 @@
1
- 'use strict';
2
-
3
- var consoleSpy = require('./consoleSpy-DnlN7UBk.cjs');
4
- require('@sanity/browserslist-config');
5
- require('fs/promises');
6
- require('pkg-up');
7
- var logger = require('./logger-CpjNjxqG.cjs');
8
- require('mkdirp');
9
- var path = require('path');
10
- require('prompts');
11
- require('typescript');
12
- var fs = require('fs');
13
- var chalk = require('chalk');
14
- var index = require('./index-KFzP3Jfd.cjs');
15
-
16
- function _interopDefaultCompat (e) { return e && typeof e === 'object' && 'default' in e ? e : { default: e }; }
17
-
18
- var path__default = /*#__PURE__*/_interopDefaultCompat(path);
19
- var fs__default = /*#__PURE__*/_interopDefaultCompat(fs);
20
- var chalk__default = /*#__PURE__*/_interopDefaultCompat(chalk);
21
-
22
- function resolveBuildTasks(ctx) {
23
- const { config, cwd, pkg, target } = ctx;
24
- const bundles = config?.bundles || [];
25
- const tasks = [];
26
- const exports = Object.entries(ctx.exports || {}).map(
27
- ([_path, exp]) => ({ _path, ...exp })
28
- );
29
- const dtsTask = {
30
- type: "build:dts",
31
- entries: []
32
- };
33
- const rollupTasks = {};
34
- function addRollupTaskEntry(format, runtime, entry) {
35
- const buildId = `${format}:${runtime}`;
36
- if (rollupTasks[buildId]) {
37
- rollupTasks[buildId].entries.push(entry);
38
- } else {
39
- rollupTasks[buildId] = {
40
- type: "build:js",
41
- buildId,
42
- entries: [entry],
43
- runtime,
44
- format,
45
- target: target[runtime]
46
- };
47
- }
48
- }
49
- for (const exp of exports) {
50
- const importId = path__default.default.join(pkg.name, exp._path);
51
- if (exp.types) {
52
- dtsTask.entries.push({
53
- importId,
54
- exportPath: exp._path,
55
- sourcePath: exp.source,
56
- targetPath: exp.types
57
- });
58
- }
59
- }
60
- if (dtsTask.entries.length) {
61
- tasks.push(dtsTask);
62
- }
63
- if (!ctx.emitDeclarationOnly) {
64
- for (const exp of exports) {
65
- const output = exp.require;
66
- if (!output)
67
- continue;
68
- addRollupTaskEntry("commonjs", ctx.runtime, {
69
- path: exp._path,
70
- source: exp.source,
71
- output
72
- });
73
- }
74
- for (const exp of exports) {
75
- const output = exp.import;
76
- if (!output)
77
- continue;
78
- addRollupTaskEntry("esm", ctx.runtime, {
79
- path: exp._path,
80
- source: exp.source,
81
- output
82
- });
83
- }
84
- for (const exp of exports) {
85
- const output = exp.browser?.require;
86
- if (!output)
87
- continue;
88
- addRollupTaskEntry("commonjs", "browser", {
89
- path: exp._path,
90
- source: exp.browser?.source || exp.source,
91
- output
92
- });
93
- }
94
- for (const exp of exports) {
95
- const output = exp.browser?.import;
96
- if (!output)
97
- continue;
98
- addRollupTaskEntry("esm", "browser", {
99
- path: exp._path,
100
- source: exp.browser?.source || exp.source,
101
- output
102
- });
103
- }
104
- for (const bundle of bundles) {
105
- const idx = bundles.indexOf(bundle);
106
- if (bundle.require) {
107
- addRollupTaskEntry("commonjs", bundle.runtime || ctx.runtime, {
108
- path: `__$$bundle_cjs_${idx}$$__`,
109
- source: bundle.source,
110
- output: bundle.require
111
- });
112
- }
113
- if (bundle.import) {
114
- addRollupTaskEntry("esm", bundle.runtime || ctx.runtime, {
115
- path: `__$$bundle_esm_${idx}$$__`,
116
- source: bundle.source,
117
- output: bundle.import
118
- });
119
- }
120
- }
121
- tasks.push(...Object.values(rollupTasks));
122
- if (config?.legacyExports) {
123
- for (const exp of exports) {
124
- if (exp._exported && exp._path !== ".") {
125
- const relativeTargetPath = (exp.browser?.import || exp.import || "").replace(
126
- /\.[^/.]+$/,
127
- ""
128
- );
129
- if (relativeTargetPath) {
130
- fs__default.default.writeFileSync(
131
- path__default.default.resolve(cwd, `${exp._path}.js`),
132
- [`// AUTO-GENERATED \u2013 DO NOT EDIT`, `export * from '${relativeTargetPath}'`, ``].join(
133
- "\n"
134
- )
135
- );
136
- }
137
- }
138
- }
139
- }
140
- }
141
- const nodeReexportCjsEntries = [];
142
- for (const exp of exports) {
143
- if (exp.node && !exp.node.source && exp.node.import && (exp.node.require || exp.require) && (exp.node.import.endsWith(".cjs.js") || exp.node.import.endsWith(".cjs.mjs"))) {
144
- const importId = path__default.default.join(pkg.name, exp._path);
145
- nodeReexportCjsEntries.push({
146
- importId,
147
- import: exp.node.import,
148
- require: exp.node.require || exp.require
149
- });
150
- }
151
- }
152
- if (nodeReexportCjsEntries.length) {
153
- tasks.push({
154
- type: "node:reexport-cjs",
155
- entries: nodeReexportCjsEntries
156
- });
157
- }
158
- return tasks;
159
- }
160
-
161
- function createSpinner(msg) {
162
- const startTime = Date.now();
163
- console.log(msg);
164
- return {
165
- complete: () => {
166
- console.log(`${chalk__default.default.green("[success]")} ${chalk__default.default.gray(`${Date.now() - startTime}ms`)}`);
167
- },
168
- error: () => {
169
- console.log(`${chalk__default.default.red(`[error]`)} ${chalk__default.default.gray(`${Date.now() - startTime}ms`)}`);
170
- }
171
- };
172
- }
173
-
174
- async function build(options) {
175
- const { cwd, emitDeclarationOnly, strict = false, tsconfig: tsconfigOption } = options;
176
- const logger$1 = logger.createLogger();
177
- const pkg = await consoleSpy.loadPkgWithReporting({ cwd, logger: logger$1 });
178
- const config = await consoleSpy.loadConfig({ cwd });
179
- const extMap = consoleSpy.getPkgExtMap({ legacyExports: config?.legacyExports ?? false });
180
- const tsconfig = tsconfigOption || config?.tsconfig || "tsconfig.json";
181
- const ctx = await consoleSpy.resolveBuildContext({
182
- config,
183
- cwd,
184
- emitDeclarationOnly,
185
- extMap,
186
- logger: logger$1,
187
- pkg,
188
- strict,
189
- tsconfig
190
- });
191
- const buildTasks = resolveBuildTasks(ctx);
192
- for (const task of buildTasks) {
193
- const handler = index.buildTaskHandlers[task.type];
194
- const taskName = handler.name(ctx, task);
195
- const spinner = createSpinner(taskName);
196
- try {
197
- const result = await handler.exec(ctx, task).toPromise();
198
- spinner.complete();
199
- ctx.logger.log();
200
- handler.complete(ctx, task, result);
201
- } catch (err) {
202
- spinner.error();
203
- if (err instanceof Error) {
204
- const RE_CWD = new RegExp(`${cwd}`, "g");
205
- ctx.logger.error(err.message.replace(RE_CWD, "."));
206
- ctx.logger.log();
207
- }
208
- handler.error(ctx, task, err);
209
- process.exit(1);
210
- }
211
- }
212
- }
213
-
214
- exports.build = build;
215
- exports.resolveBuildTasks = resolveBuildTasks;
216
- //# sourceMappingURL=build-CXc7iZ4I.cjs.map
@@ -1,223 +0,0 @@
1
- 'use strict';
2
-
3
- var esbuild = require('esbuild');
4
- var path = require('path');
5
- var consoleSpy = require('./consoleSpy-DnlN7UBk.cjs');
6
- require('@sanity/browserslist-config');
7
- require('fs/promises');
8
- require('pkg-up');
9
- var logger = require('./logger-CpjNjxqG.cjs');
10
- require('mkdirp');
11
- require('prompts');
12
- require('typescript');
13
- var chalk = require('chalk');
14
- var treeify = require('treeify');
15
- var fs = require('fs');
16
- var prettyBytes = require('pretty-bytes');
17
-
18
- function _interopDefaultCompat (e) { return e && typeof e === 'object' && 'default' in e ? e : { default: e }; }
19
-
20
- var esbuild__default = /*#__PURE__*/_interopDefaultCompat(esbuild);
21
- var path__default = /*#__PURE__*/_interopDefaultCompat(path);
22
- var chalk__default = /*#__PURE__*/_interopDefaultCompat(chalk);
23
- var treeify__default = /*#__PURE__*/_interopDefaultCompat(treeify);
24
- var prettyBytes__default = /*#__PURE__*/_interopDefaultCompat(prettyBytes);
25
-
26
- function getFilesize(file) {
27
- const stats = fs.statSync(file);
28
- return prettyBytes__default.default(stats.size);
29
- }
30
-
31
- function getFileInfo(cwd, filePath) {
32
- const p = path__default.default.resolve(cwd, filePath);
33
- const exists = logger.fileExists(p);
34
- const size = exists ? getFilesize(p) : void 0;
35
- return { exists, size };
36
- }
37
- function printPackageTree(ctx) {
38
- const { cwd, exports, logger, pkg } = ctx;
39
- if (!exports)
40
- return;
41
- logger.log(`${chalk__default.default.blue(pkg.name)}@${chalk__default.default.green(pkg.version)}`);
42
- const tree = {};
43
- if (pkg.type) {
44
- tree.type = chalk__default.default.yellow(pkg.type);
45
- }
46
- if (pkg.bin) {
47
- tree.bin = Object.fromEntries(
48
- Object.entries(pkg.bin).map(([name, file]) => [chalk__default.default.cyan(name), fileInfo(file)])
49
- );
50
- }
51
- function fileInfo(file) {
52
- const info = getFileInfo(cwd, file);
53
- if (!info.size) {
54
- return `${chalk__default.default.gray(file)} ${chalk__default.default.red("does not exist")}`;
55
- }
56
- return `${chalk__default.default.yellow(file)} ${chalk__default.default.gray(info.size)}`;
57
- }
58
- tree.exports = Object.fromEntries(
59
- Object.entries(exports).filter(([, entry]) => entry._exported).map(([exportPath, entry]) => {
60
- const exp = {
61
- types: void 0,
62
- source: fileInfo(entry.source),
63
- browser: void 0,
64
- require: void 0,
65
- node: void 0,
66
- import: void 0,
67
- default: fileInfo(entry.default)
68
- };
69
- if (entry.types) {
70
- exp.types = fileInfo(entry.types);
71
- } else {
72
- delete exp.types;
73
- }
74
- if (entry.browser) {
75
- exp.browser = { source: fileInfo(entry.browser.source) };
76
- if (entry.browser.import)
77
- exp.browser.import = fileInfo(entry.browser.import);
78
- if (entry.browser.require)
79
- exp.browser.require = fileInfo(entry.browser.require);
80
- } else {
81
- delete exp.browser;
82
- }
83
- if (entry.require) {
84
- exp.require = fileInfo(entry.require);
85
- } else {
86
- delete exp.require;
87
- }
88
- if (entry.node) {
89
- exp.node = {};
90
- if (entry.node.source)
91
- exp.node.source = fileInfo(entry.node.source);
92
- if (entry.node.import)
93
- exp.node.import = fileInfo(entry.node.import);
94
- if (entry.node.require)
95
- exp.node.require = fileInfo(entry.node.require);
96
- } else {
97
- delete exp.node;
98
- }
99
- if (entry.import) {
100
- exp.import = fileInfo(entry.import);
101
- } else {
102
- delete exp.import;
103
- }
104
- return [chalk__default.default.cyan(path__default.default.join(pkg.name, exportPath)), exp];
105
- })
106
- );
107
- logger.log(treeify__default.default.asTree(tree, true, true));
108
- }
109
-
110
- async function check(options) {
111
- const { cwd, strict = false, tsconfig: tsconfigOption } = options;
112
- const logger$1 = logger.createLogger();
113
- const pkg = await consoleSpy.loadPkgWithReporting({ cwd, logger: logger$1 });
114
- const config = await consoleSpy.loadConfig({ cwd });
115
- const extMap = consoleSpy.getPkgExtMap({ legacyExports: config?.legacyExports ?? false });
116
- const tsconfig = tsconfigOption || config?.tsconfig || "tsconfig.json";
117
- const ctx = await consoleSpy.resolveBuildContext({ config, cwd, extMap, logger: logger$1, pkg, strict, tsconfig });
118
- printPackageTree(ctx);
119
- if (strict) {
120
- const missingFiles = [];
121
- for (const [, exp] of Object.entries(ctx.exports || {})) {
122
- if (exp.source && !logger.fileExists(path__default.default.resolve(cwd, exp.source))) {
123
- missingFiles.push(exp.source);
124
- }
125
- if (exp.require && !logger.fileExists(path__default.default.resolve(cwd, exp.require))) {
126
- missingFiles.push(exp.require);
127
- }
128
- if (exp.import && !logger.fileExists(path__default.default.resolve(cwd, exp.import))) {
129
- missingFiles.push(exp.import);
130
- }
131
- if (exp.types && !logger.fileExists(path__default.default.resolve(cwd, exp.types))) {
132
- missingFiles.push(exp.types);
133
- }
134
- }
135
- if (missingFiles.length) {
136
- logger$1.error("missing files");
137
- process.exit(1);
138
- }
139
- const exportPaths = {
140
- require: [],
141
- import: []
142
- };
143
- for (const exp of Object.values(ctx.exports || {})) {
144
- if (!exp._exported)
145
- continue;
146
- if (exp.require)
147
- exportPaths.require.push(exp.require);
148
- if (exp.import)
149
- exportPaths.import.push(exp.import);
150
- }
151
- const external = [
152
- ...Object.keys(pkg.dependencies || {}),
153
- ...Object.keys(pkg.devDependencies || {})
154
- ];
155
- const consoleSpy$1 = consoleSpy.createConsoleSpy();
156
- if (exportPaths.import.length) {
157
- checkExports(exportPaths.import, { cwd, external, format: "esm", logger: logger$1 });
158
- }
159
- if (exportPaths.require.length) {
160
- checkExports(exportPaths.require, { cwd, external, format: "cjs", logger: logger$1 });
161
- }
162
- consoleSpy$1.restore();
163
- }
164
- }
165
- async function checkExports(exportPaths, options) {
166
- const { cwd, external, format, logger } = options;
167
- const code = exportPaths.map((id) => format ? `import('${id}');` : `require('${id}');`).join("\n");
168
- try {
169
- const esbuildResult = await esbuild__default.default.build({
170
- bundle: true,
171
- external,
172
- format,
173
- logLevel: "silent",
174
- // otherwise output maps to stdout as we're using stdin
175
- outfile: "/dev/null",
176
- platform: "node",
177
- stdin: {
178
- contents: code,
179
- loader: "js",
180
- resolveDir: cwd
181
- }
182
- });
183
- if (esbuildResult.errors.length > 0) {
184
- for (const msg of esbuildResult.errors) {
185
- printEsbuildMessage(logger.warn, msg);
186
- logger.log();
187
- }
188
- process.exit(1);
189
- }
190
- const esbuildWarnings = esbuildResult.warnings.filter((msg) => {
191
- !(msg.detail || msg.text).includes(`does not affect esbuild's own target setting`);
192
- });
193
- for (const msg of esbuildWarnings) {
194
- printEsbuildMessage(logger.warn, msg);
195
- logger.log();
196
- }
197
- } catch (err) {
198
- const { errors } = err;
199
- for (const msg of errors) {
200
- printEsbuildMessage(logger.error, msg);
201
- logger.log();
202
- }
203
- process.exit(1);
204
- }
205
- }
206
- function printEsbuildMessage(log, msg) {
207
- if (msg.location) {
208
- log(
209
- [
210
- `${msg.detail || msg.text}
211
- `,
212
- `${msg.location.line} | ${msg.location.lineText}
213
- `,
214
- `in ./${msg.location.file}:${msg.location.line}:${msg.location.column}`
215
- ].join("")
216
- );
217
- } else {
218
- log(msg.detail || msg.text);
219
- }
220
- }
221
-
222
- exports.check = check;
223
- //# sourceMappingURL=check-Do7O9Mjo.cjs.map
@@ -1 +0,0 @@
1
- {"version":3,"file":"check-Do7O9Mjo.cjs","sources":["../../src/node/getFilesize.ts","../../src/node/printPackageTree.ts","../../src/node/check.ts"],"sourcesContent":["import {statSync} from '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 chalk from 'chalk'\nimport path from 'path'\nimport treeify from 'treeify'\n\nimport {BuildContext, PkgExport} from './core'\nimport {fileExists} from './fileExists'\nimport {getFilesize} from './getFilesize'\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 // eslint-disable-next-line @typescript-eslint/no-explicit-any\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 types: undefined,\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.types) {\n exp.types = fileInfo(entry.types)\n } else {\n delete exp.types\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 // eslint-disable-next-line @typescript-eslint/no-explicit-any\n logger.log(treeify.asTree(tree as Record<string, any>, true, true))\n}\n","import esbuild, {BuildFailure} from 'esbuild'\nimport path from 'path'\n\nimport {createConsoleSpy} from './consoleSpy'\nimport {getPkgExtMap, loadConfig, loadPkgWithReporting} from './core'\nimport {fileExists} from './fileExists'\nimport {createLogger, Logger} from './logger'\nimport {printPackageTree} from './printPackageTree'\nimport {resolveBuildContext} from './resolveBuildContext'\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\n const pkg = await loadPkgWithReporting({cwd, logger})\n const config = await loadConfig({cwd})\n const extMap = getPkgExtMap({legacyExports: config?.legacyExports ?? false})\n const tsconfig = tsconfigOption || config?.tsconfig || 'tsconfig.json'\n const ctx = await resolveBuildContext({config, cwd, extMap, 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 if (exp.types && !fileExists(path.resolve(cwd, exp.types))) {\n missingFiles.push(exp.types)\n }\n }\n\n if (missingFiles.length) {\n logger.error('missing files')\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 if (exportPaths.import.length) {\n checkExports(exportPaths.import, {cwd, external, format: 'esm', logger})\n }\n\n if (exportPaths.require.length) {\n checkExports(exportPaths.require, {cwd, external, format: 'cjs', logger})\n }\n\n consoleSpy.restore()\n }\n}\n\nasync function checkExports(\n exportPaths: string[],\n options: {cwd: string; external: string[]; format: 'esm' | 'cjs'; logger: Logger},\n) {\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 esbuild.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 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 !(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 const {errors} = err as BuildFailure\n\n for (const msg of errors) {\n printEsbuildMessage(logger.error, msg)\n\n logger.log()\n }\n\n process.exit(1)\n }\n}\n\nfunction printEsbuildMessage(log: (...args: unknown[]) => void, msg: esbuild.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"],"names":["statSync","prettyBytes","path","fileExists","chalk","treeify","logger","createLogger","loadPkgWithReporting","loadConfig","getPkgExtMap","resolveBuildContext","consoleSpy","createConsoleSpy","esbuild"],"mappings":"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"}