@sanity/pkg-utils 4.2.6 → 4.2.8
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-VF8OGFWI.cjs +158 -0
- package/dist/_chunks/{build-BxYgJfQq.cjs.map → build-VF8OGFWI.cjs.map} +1 -1
- package/dist/_chunks/{buildAction-KZkR53RZ.cjs → buildAction-BqCNrElB.cjs} +3 -7
- package/dist/_chunks/{buildAction-KZkR53RZ.cjs.map → buildAction-BqCNrElB.cjs.map} +1 -1
- package/dist/_chunks/check-BYmzjjzq.cjs +118 -0
- package/dist/_chunks/check-BYmzjjzq.cjs.map +1 -0
- package/dist/_chunks/{checkAction-B86PejBD.cjs → checkAction-BH_mZd8d.cjs} +3 -7
- package/dist/_chunks/{checkAction-B86PejBD.cjs.map → checkAction-BH_mZd8d.cjs.map} +1 -1
- package/dist/_chunks/consoleSpy-CHoeHT4P.cjs +369 -0
- package/dist/_chunks/consoleSpy-CHoeHT4P.cjs.map +1 -0
- package/dist/_chunks/handleError-CGQ2DXMR.cjs +11 -0
- package/dist/_chunks/handleError-CGQ2DXMR.cjs.map +1 -0
- package/dist/_chunks/index-DGGGzGO4.cjs +20000 -0
- package/dist/_chunks/{index-RwgAZs-y.cjs.map → index-DGGGzGO4.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-5pC_s_sw.cjs +156 -0
- package/dist/_chunks/{watch-JoaJL851.cjs.map → watch-5pC_s_sw.cjs.map} +1 -1
- package/dist/_chunks/{watchAction-DcoHeR8f.cjs → watchAction-DU24xubH.cjs} +3 -7
- package/dist/_chunks/{watchAction-DcoHeR8f.cjs.map → watchAction-DU24xubH.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 +19895 -35943
- package/dist/index.js.map +1 -1
- package/package.json +3 -3
- package/src/node/resolveBuildContext.ts +6 -4
- package/src/node/tasks/rollup/resolveRollupConfig.ts +4 -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/consoleSpy-DnlN7UBk.cjs.map +0 -1
- 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.8",
|
|
4
4
|
"description": "Simple utilities for modern npm packages.",
|
|
5
5
|
"keywords": [
|
|
6
6
|
"sanity-io",
|
|
@@ -71,7 +71,7 @@
|
|
|
71
71
|
"@rollup/plugin-node-resolve": "^15.2.3",
|
|
72
72
|
"@rollup/plugin-replace": "^5.0.5",
|
|
73
73
|
"@rollup/plugin-terser": "^0.4.4",
|
|
74
|
-
"@sanity/browserslist-config": "^1.0.
|
|
74
|
+
"@sanity/browserslist-config": "^1.0.3",
|
|
75
75
|
"browserslist": "^4.23.0",
|
|
76
76
|
"cac": "^6.7.14",
|
|
77
77
|
"chalk": "^4.1.2",
|
|
@@ -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.8"
|
|
137
137
|
},
|
|
138
138
|
"peerDependencies": {
|
|
139
139
|
"typescript": "^4.7 || ^5"
|
|
@@ -42,10 +42,12 @@ export async function resolveBuildContext(options: {
|
|
|
42
42
|
|
|
43
43
|
/* eslint-disable padding-line-between-statements */
|
|
44
44
|
let browserslist = pkg.browserslist
|
|
45
|
-
if (
|
|
46
|
-
|
|
47
|
-
|
|
48
|
-
|
|
45
|
+
if (!browserslist) {
|
|
46
|
+
if (strict) {
|
|
47
|
+
logger.warn(
|
|
48
|
+
'Could not detect a `browserslist` property in `package.json`, using default configuration. Add `"browserslist": "extends @sanity/browserslist-config"` to silence this warning.',
|
|
49
|
+
)
|
|
50
|
+
}
|
|
49
51
|
browserslist = DEFAULT_BROWSERSLIST_QUERY
|
|
50
52
|
}
|
|
51
53
|
const targetVersions = browserslistToEsbuild(browserslist)
|
|
@@ -99,7 +99,10 @@ 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
|
+
supported: {
|
|
104
|
+
'template-literal': true,
|
|
105
|
+
},
|
|
103
106
|
}),
|
|
104
107
|
Array.isArray(config?.babel?.plugins) &&
|
|
105
108
|
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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"}
|