@sanity/pkg-utils 4.2.6 → 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.
- package/dist/_chunks/build-Dvr5eKKV.cjs +158 -0
- package/dist/_chunks/{build-BxYgJfQq.cjs.map → build-Dvr5eKKV.cjs.map} +1 -1
- package/dist/_chunks/{buildAction-KZkR53RZ.cjs → buildAction-BqdY-x5D.cjs} +3 -7
- package/dist/_chunks/{buildAction-KZkR53RZ.cjs.map → buildAction-BqdY-x5D.cjs.map} +1 -1
- package/dist/_chunks/check-BSN1yLfm.cjs +118 -0
- package/dist/_chunks/check-BSN1yLfm.cjs.map +1 -0
- package/dist/_chunks/{checkAction-B86PejBD.cjs → checkAction-CplEAcgR.cjs} +3 -7
- package/dist/_chunks/{checkAction-B86PejBD.cjs.map → checkAction-CplEAcgR.cjs.map} +1 -1
- package/dist/_chunks/consoleSpy-1_g1SPGc.cjs +369 -0
- package/dist/_chunks/{consoleSpy-DnlN7UBk.cjs.map → consoleSpy-1_g1SPGc.cjs.map} +1 -1
- package/dist/_chunks/handleError-CGQ2DXMR.cjs +11 -0
- package/dist/_chunks/handleError-CGQ2DXMR.cjs.map +1 -0
- package/dist/_chunks/index-Dxhh31D_.cjs +19997 -0
- package/dist/_chunks/{index-RwgAZs-y.cjs.map → index-Dxhh31D_.cjs.map} +1 -1
- package/dist/_chunks/{init-CZQh-Q_y.cjs → init-2mlaoNTF.cjs} +174 -261
- package/dist/_chunks/{init-CZQh-Q_y.cjs.map → init-2mlaoNTF.cjs.map} +1 -1
- package/dist/_chunks/{initAction-BYVnsbAj.cjs → initAction-BlTz_X1p.cjs} +3 -7
- package/dist/_chunks/{initAction-BYVnsbAj.cjs.map → initAction-BlTz_X1p.cjs.map} +1 -1
- package/dist/_chunks/{logger-CpjNjxqG.cjs → logger-CwHVwB-b.cjs} +11 -20
- package/dist/_chunks/logger-CwHVwB-b.cjs.map +1 -0
- package/dist/_chunks/watch-Dqp3kWd_.cjs +156 -0
- package/dist/_chunks/{watch-JoaJL851.cjs.map → watch-Dqp3kWd_.cjs.map} +1 -1
- package/dist/_chunks/{watchAction-DcoHeR8f.cjs → watchAction-4vv-wSLV.cjs} +3 -7
- package/dist/_chunks/{watchAction-DcoHeR8f.cjs.map → watchAction-4vv-wSLV.cjs.map} +1 -1
- package/dist/cli.cjs +18 -14
- package/dist/cli.cjs.map +1 -1
- package/dist/index.cjs +3 -13
- package/dist/index.cjs.map +1 -1
- package/dist/index.js +19893 -35944
- package/dist/index.js.map +1 -1
- package/package.json +2 -2
- package/src/node/tasks/rollup/resolveRollupConfig.ts +1 -1
- package/dist/_chunks/build-BxYgJfQq.cjs +0 -216
- package/dist/_chunks/check-Do7O9Mjo.cjs +0 -223
- package/dist/_chunks/check-Do7O9Mjo.cjs.map +0 -1
- package/dist/_chunks/consoleSpy-DnlN7UBk.cjs +0 -632
- package/dist/_chunks/handleError-DB8KmYKe.cjs +0 -19
- package/dist/_chunks/handleError-DB8KmYKe.cjs.map +0 -1
- package/dist/_chunks/index-RwgAZs-y.cjs +0 -35564
- package/dist/_chunks/logger-CpjNjxqG.cjs.map +0 -1
- package/dist/_chunks/watch-JoaJL851.cjs +0 -227
package/package.json
CHANGED
|
@@ -1,6 +1,6 @@
|
|
|
1
1
|
{
|
|
2
2
|
"name": "@sanity/pkg-utils",
|
|
3
|
-
"version": "4.2.
|
|
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.
|
|
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({
|
|
@@ -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-RwgAZs-y.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-BxYgJfQq.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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"}
|