@sanity/pkg-utils 7.4.0-canary.2 → 7.4.1-canary.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.
- package/dist/_chunks-cjs/findConfigFile.cjs +24 -0
- package/dist/_chunks-cjs/findConfigFile.cjs.map +1 -0
- package/dist/_chunks-cjs/index.cjs +231 -1910
- package/dist/_chunks-cjs/index.cjs.map +1 -1
- package/dist/_chunks-cjs/index2.cjs +781 -0
- package/dist/_chunks-cjs/index2.cjs.map +1 -0
- package/dist/_chunks-cjs/index3.cjs +50 -0
- package/dist/_chunks-cjs/index3.cjs.map +1 -0
- package/dist/_chunks-cjs/printPackageTree.cjs +42 -0
- package/dist/_chunks-cjs/printPackageTree.cjs.map +1 -0
- package/dist/_chunks-cjs/resolveBuildContext.cjs +176 -0
- package/dist/_chunks-cjs/resolveBuildContext.cjs.map +1 -0
- package/dist/_chunks-cjs/resolveBuildTasks.cjs +111 -0
- package/dist/_chunks-cjs/resolveBuildTasks.cjs.map +1 -0
- package/dist/_chunks-cjs/resolveConfigProperty.cjs +6 -0
- package/dist/_chunks-cjs/resolveConfigProperty.cjs.map +1 -0
- package/dist/_chunks-cjs/resolveWatchTasks.cjs +79 -0
- package/dist/_chunks-cjs/resolveWatchTasks.cjs.map +1 -0
- package/dist/_chunks-cjs/template.cjs +446 -0
- package/dist/_chunks-cjs/template.cjs.map +1 -0
- package/dist/_chunks-cjs/validatePkg.cjs +71 -0
- package/dist/_chunks-cjs/validatePkg.cjs.map +1 -0
- package/dist/_chunks-cjs/watchConfigFiles.cjs +59 -0
- package/dist/_chunks-cjs/watchConfigFiles.cjs.map +1 -0
- package/dist/_chunks-es/build.js +7 -107
- package/dist/_chunks-es/build.js.map +1 -1
- package/dist/_chunks-es/check.js +23 -44
- package/dist/_chunks-es/check.js.map +1 -1
- package/dist/_chunks-es/fileExists.js +12 -0
- package/dist/_chunks-es/fileExists.js.map +1 -0
- package/dist/_chunks-es/findConfigFile.js +23 -0
- package/dist/_chunks-es/findConfigFile.js.map +1 -0
- package/dist/_chunks-es/index.js +180 -754
- package/dist/_chunks-es/index.js.map +1 -1
- package/dist/_chunks-es/index2.js +769 -0
- package/dist/_chunks-es/index2.js.map +1 -0
- package/dist/_chunks-es/index3.js +51 -0
- package/dist/_chunks-es/index3.js.map +1 -0
- package/dist/_chunks-es/init.js +9 -493
- package/dist/_chunks-es/init.js.map +1 -1
- package/dist/_chunks-es/loadPkgWithReporting.js +100 -0
- package/dist/_chunks-es/loadPkgWithReporting.js.map +1 -0
- package/dist/_chunks-es/{isRecord.js → logger.js} +2 -15
- package/dist/_chunks-es/logger.js.map +1 -0
- package/dist/_chunks-es/printPackageTree.js +44 -0
- package/dist/_chunks-es/printPackageTree.js.map +1 -0
- package/dist/_chunks-es/resolveBuildContext.js +177 -0
- package/dist/_chunks-es/resolveBuildContext.js.map +1 -0
- package/dist/_chunks-es/resolveBuildTasks.js +109 -0
- package/dist/_chunks-es/resolveBuildTasks.js.map +1 -0
- package/dist/_chunks-es/resolveConfigProperty.js +7 -0
- package/dist/_chunks-es/resolveConfigProperty.js.map +1 -0
- package/dist/_chunks-es/resolveRolldownConfig.js +1 -1
- package/dist/_chunks-es/resolveWatchTasks.js +77 -0
- package/dist/_chunks-es/resolveWatchTasks.js.map +1 -0
- package/dist/_chunks-es/template.js +449 -0
- package/dist/_chunks-es/template.js.map +1 -0
- package/dist/_chunks-es/validatePkg.js +72 -0
- package/dist/_chunks-es/validatePkg.js.map +1 -0
- package/dist/_chunks-es/watch.js +9 -115
- package/dist/_chunks-es/watch.js.map +1 -1
- package/dist/_chunks-es/watchConfigFiles.js +45 -0
- package/dist/_chunks-es/watchConfigFiles.js.map +1 -0
- package/dist/cli.js +1 -1
- package/dist/index.js +4 -7
- package/dist/index.js.map +1 -1
- package/package.json +2 -2
- package/dist/_chunks-es/consoleSpy.js +0 -541
- package/dist/_chunks-es/consoleSpy.js.map +0 -1
- package/dist/_chunks-es/isRecord.js.map +0 -1
|
@@ -0,0 +1,71 @@
|
|
|
1
|
+
"use strict";
|
|
2
|
+
var zod = require("zod");
|
|
3
|
+
const pkgSchema = zod.z.object({
|
|
4
|
+
type: zod.z.optional(zod.z.enum(["commonjs", "module"])),
|
|
5
|
+
name: zod.z.string(),
|
|
6
|
+
version: zod.z.string(),
|
|
7
|
+
license: zod.z.string(),
|
|
8
|
+
bin: zod.z.optional(zod.z.record(zod.z.string())),
|
|
9
|
+
dependencies: zod.z.optional(zod.z.record(zod.z.string())),
|
|
10
|
+
devDependencies: zod.z.optional(zod.z.record(zod.z.string())),
|
|
11
|
+
peerDependencies: zod.z.optional(zod.z.record(zod.z.string())),
|
|
12
|
+
source: zod.z.optional(zod.z.string()),
|
|
13
|
+
main: zod.z.optional(zod.z.string()),
|
|
14
|
+
browser: zod.z.optional(zod.z.record(zod.z.string())),
|
|
15
|
+
module: zod.z.optional(zod.z.string()),
|
|
16
|
+
types: zod.z.optional(zod.z.string()),
|
|
17
|
+
exports: zod.z.optional(
|
|
18
|
+
zod.z.record(
|
|
19
|
+
zod.z.union([
|
|
20
|
+
zod.z.custom((val) => /^\.\/.*\.json$/.test(val)),
|
|
21
|
+
zod.z.custom((val) => /^\.\/.*\.css$/.test(val)),
|
|
22
|
+
zod.z.object({
|
|
23
|
+
types: zod.z.optional(zod.z.string()),
|
|
24
|
+
source: zod.z.optional(zod.z.string()),
|
|
25
|
+
browser: zod.z.optional(
|
|
26
|
+
zod.z.object({
|
|
27
|
+
source: zod.z.string(),
|
|
28
|
+
import: zod.z.optional(zod.z.string()),
|
|
29
|
+
require: zod.z.optional(zod.z.string())
|
|
30
|
+
})
|
|
31
|
+
),
|
|
32
|
+
node: zod.z.optional(
|
|
33
|
+
zod.z.object({
|
|
34
|
+
source: zod.z.optional(zod.z.string()),
|
|
35
|
+
import: zod.z.optional(zod.z.string()),
|
|
36
|
+
require: zod.z.optional(zod.z.string())
|
|
37
|
+
})
|
|
38
|
+
),
|
|
39
|
+
import: zod.z.optional(zod.z.string()),
|
|
40
|
+
require: zod.z.optional(zod.z.string()),
|
|
41
|
+
default: zod.z.string()
|
|
42
|
+
}),
|
|
43
|
+
zod.z.object({
|
|
44
|
+
types: zod.z.optional(zod.z.string()),
|
|
45
|
+
svelte: zod.z.string(),
|
|
46
|
+
default: zod.z.optional(zod.z.string())
|
|
47
|
+
})
|
|
48
|
+
])
|
|
49
|
+
)
|
|
50
|
+
),
|
|
51
|
+
browserslist: zod.z.optional(zod.z.union([zod.z.string(), zod.z.array(zod.z.string())])),
|
|
52
|
+
sideEffects: zod.z.optional(zod.z.union([zod.z.boolean(), zod.z.array(zod.z.string())])),
|
|
53
|
+
// @TODO type this properly
|
|
54
|
+
typesVersions: zod.z.optional(zod.z.any())
|
|
55
|
+
}), typoMap = /* @__PURE__ */ new Map();
|
|
56
|
+
for (const key of pkgSchema.keyof()._def.values)
|
|
57
|
+
typoMap.set(key.toUpperCase(), key);
|
|
58
|
+
function validatePkg(input) {
|
|
59
|
+
const pkg = pkgSchema.parse(input), invalidKey = Object.keys(input).find((key) => {
|
|
60
|
+
const needle = key.toUpperCase();
|
|
61
|
+
return typoMap.has(needle) ? typoMap.get(needle) !== key : !1;
|
|
62
|
+
});
|
|
63
|
+
if (invalidKey)
|
|
64
|
+
throw new TypeError(
|
|
65
|
+
`
|
|
66
|
+
- package.json: "${invalidKey}" is not a valid key. Did you mean "${typoMap.get(invalidKey.toUpperCase())}"?`
|
|
67
|
+
);
|
|
68
|
+
return pkg;
|
|
69
|
+
}
|
|
70
|
+
exports.validatePkg = validatePkg;
|
|
71
|
+
//# sourceMappingURL=validatePkg.cjs.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"validatePkg.cjs","sources":["../../src/node/core/pkg/validatePkg.ts"],"sourcesContent":["import {z} from 'zod'\nimport type {PackageJSON} from './types'\n\nconst pkgSchema = z.object({\n type: z.optional(z.enum(['commonjs', 'module'])),\n name: z.string(),\n version: z.string(),\n license: z.string(),\n bin: z.optional(z.record(z.string())),\n dependencies: z.optional(z.record(z.string())),\n devDependencies: z.optional(z.record(z.string())),\n peerDependencies: z.optional(z.record(z.string())),\n source: z.optional(z.string()),\n main: z.optional(z.string()),\n browser: z.optional(z.record(z.string())),\n module: z.optional(z.string()),\n types: z.optional(z.string()),\n exports: z.optional(\n z.record(\n z.union([\n z.custom<`./${string}.json`>((val) => /^\\.\\/.*\\.json$/.test(val as string)),\n z.custom<`./${string}.css`>((val) => /^\\.\\/.*\\.css$/.test(val as string)),\n z.object({\n types: z.optional(z.string()),\n source: z.optional(z.string()),\n browser: z.optional(\n z.object({\n source: z.string(),\n import: z.optional(z.string()),\n require: z.optional(z.string()),\n }),\n ),\n node: z.optional(\n z.object({\n source: z.optional(z.string()),\n import: z.optional(z.string()),\n require: z.optional(z.string()),\n }),\n ),\n import: z.optional(z.string()),\n require: z.optional(z.string()),\n default: z.string(),\n }),\n z.object({\n types: z.optional(z.string()),\n svelte: z.string(),\n default: z.optional(z.string()),\n }),\n ]),\n ),\n ),\n browserslist: z.optional(z.union([z.string(), z.array(z.string())])),\n sideEffects: z.optional(z.union([z.boolean(), z.array(z.string())])),\n // @TODO type this properly\n typesVersions: z.optional(z.any()),\n})\n\n// Create a map over known keys to catch casing mistakes\nconst typoMap = new Map<string, string>()\n\nfor (const key of pkgSchema.keyof()._def.values) {\n typoMap.set(key.toUpperCase(), key)\n}\n\nexport function validatePkg(input: unknown): PackageJSON {\n const pkg = pkgSchema.parse(input)\n\n const invalidKey = Object.keys(input as PackageJSON).find((key) => {\n const needle = key.toUpperCase()\n\n return typoMap.has(needle) ? typoMap.get(needle) !== key : false\n })\n\n if (invalidKey) {\n throw new TypeError(\n `\n- package.json: \"${invalidKey}\" is not a valid key. Did you mean \"${typoMap.get(invalidKey.toUpperCase())}\"?`,\n )\n }\n\n return pkg\n}\n"],"names":["z"],"mappings":"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"}
|
|
@@ -0,0 +1,59 @@
|
|
|
1
|
+
"use strict";
|
|
2
|
+
var path = require("node:path"), operators = require("rxjs/operators"), globby = require("globby"), chokidar = require("chokidar"), rxjs = require("rxjs");
|
|
3
|
+
function _interopDefaultCompat(e) {
|
|
4
|
+
return e && typeof e == "object" && "default" in e ? e : { default: e };
|
|
5
|
+
}
|
|
6
|
+
function _interopNamespaceCompat(e) {
|
|
7
|
+
if (e && typeof e == "object" && "default" in e) return e;
|
|
8
|
+
var n = /* @__PURE__ */ Object.create(null);
|
|
9
|
+
return e && Object.keys(e).forEach(function(k) {
|
|
10
|
+
if (k !== "default") {
|
|
11
|
+
var d = Object.getOwnPropertyDescriptor(e, k);
|
|
12
|
+
Object.defineProperty(n, k, d.get ? d : {
|
|
13
|
+
enumerable: !0,
|
|
14
|
+
get: function() {
|
|
15
|
+
return e[k];
|
|
16
|
+
}
|
|
17
|
+
});
|
|
18
|
+
}
|
|
19
|
+
}), n.default = e, Object.freeze(n);
|
|
20
|
+
}
|
|
21
|
+
var path__default = /* @__PURE__ */ _interopDefaultCompat(path), globby__default = /* @__PURE__ */ _interopDefaultCompat(globby), chokidar__namespace = /* @__PURE__ */ _interopNamespaceCompat(chokidar);
|
|
22
|
+
function globFiles(patterns) {
|
|
23
|
+
return globby__default.default(patterns.map((pattern) => pattern.split(path__default.default.sep).join(path__default.default.posix.sep)));
|
|
24
|
+
}
|
|
25
|
+
function watchFiles(patterns) {
|
|
26
|
+
return new rxjs.Observable((observer) => {
|
|
27
|
+
const watcher = chokidar__namespace.watch(patterns, {
|
|
28
|
+
ignoreInitial: !0
|
|
29
|
+
});
|
|
30
|
+
function handleFileEvent(type, file) {
|
|
31
|
+
type === "error" || file instanceof Error ? observer.error(file) : observer.next({ type, file });
|
|
32
|
+
}
|
|
33
|
+
return watcher.on("all", handleFileEvent), () => {
|
|
34
|
+
watcher.off("all", handleFileEvent), watcher.close();
|
|
35
|
+
};
|
|
36
|
+
});
|
|
37
|
+
}
|
|
38
|
+
async function watchConfigFiles(options) {
|
|
39
|
+
const { cwd, logger } = options, initialFiles = await globFiles([
|
|
40
|
+
path__default.default.resolve(cwd, "package.json"),
|
|
41
|
+
path__default.default.resolve(cwd, "package.config.cjs"),
|
|
42
|
+
path__default.default.resolve(cwd, "package.config.js"),
|
|
43
|
+
path__default.default.resolve(cwd, "package.config.ts")
|
|
44
|
+
]);
|
|
45
|
+
return watchFiles([
|
|
46
|
+
path__default.default.resolve(cwd, "package.json"),
|
|
47
|
+
path__default.default.resolve(cwd, "package.config.cjs"),
|
|
48
|
+
path__default.default.resolve(cwd, "package.config.js"),
|
|
49
|
+
path__default.default.resolve(cwd, "package.config.ts")
|
|
50
|
+
]).pipe(
|
|
51
|
+
operators.scan((files, fileEvent) => fileEvent.type === "add" ? files.concat(fileEvent.file) : fileEvent.type === "unlink" ? files.filter((f) => f !== fileEvent.file) : fileEvent.type === "change" ? (logger.log(
|
|
52
|
+
"--------------------------------------------------------------------------------"
|
|
53
|
+
), logger.info(path__default.default.relative(cwd, fileEvent.file), "changed"), logger.log(""), files.slice(0)) : files, initialFiles),
|
|
54
|
+
operators.startWith(initialFiles),
|
|
55
|
+
operators.distinctUntilChanged()
|
|
56
|
+
);
|
|
57
|
+
}
|
|
58
|
+
exports.watchConfigFiles = watchConfigFiles;
|
|
59
|
+
//# sourceMappingURL=watchConfigFiles.cjs.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"watchConfigFiles.cjs","sources":["../../src/node/globFiles.ts","../../src/node/watchFiles.ts","../../src/node/watchConfigFiles.ts"],"sourcesContent":["import path from 'node:path'\nimport globby from 'globby'\n\nexport function globFiles(patterns: string[]): Promise<string[]> {\n return globby(patterns.map((pattern) => pattern.split(path.sep).join(path.posix.sep)))\n}\n","import * as chokidar from 'chokidar'\nimport type {EventName} from 'chokidar/handler.js'\nimport {Observable} from 'rxjs'\n\nexport interface FileEvent {\n type: EventName\n file: string\n}\n\nexport function watchFiles(patterns: string[]): Observable<FileEvent> {\n return new Observable((observer) => {\n const watcher = chokidar.watch(patterns, {\n ignoreInitial: true,\n })\n\n function handleFileEvent(type: EventName, file: string | Error) {\n if (type === 'error' || file instanceof Error) {\n observer.error(file)\n } else {\n observer.next({type, file})\n }\n }\n\n watcher.on('all', handleFileEvent)\n\n return () => {\n watcher.off('all', handleFileEvent)\n watcher.close()\n }\n })\n}\n","import path from 'node:path'\nimport type {Observable} from 'rxjs'\nimport {distinctUntilChanged, scan, startWith} from 'rxjs/operators'\nimport {globFiles} from './globFiles'\nimport type {Logger} from './logger'\nimport {watchFiles} from './watchFiles'\n\nexport async function watchConfigFiles(options: {\n cwd: string\n logger: Logger\n}): Promise<Observable<string[]>> {\n const {cwd, logger} = options\n\n const initialFiles = await globFiles([\n path.resolve(cwd, 'package.json'),\n path.resolve(cwd, 'package.config.cjs'),\n path.resolve(cwd, 'package.config.js'),\n path.resolve(cwd, 'package.config.ts'),\n ])\n\n const fileEvent$ = watchFiles([\n path.resolve(cwd, 'package.json'),\n path.resolve(cwd, 'package.config.cjs'),\n path.resolve(cwd, 'package.config.js'),\n path.resolve(cwd, 'package.config.ts'),\n ])\n\n return fileEvent$.pipe(\n scan((files, fileEvent) => {\n if (fileEvent.type === 'add') {\n return files.concat(fileEvent.file)\n }\n\n if (fileEvent.type === 'unlink') {\n return files.filter((f) => f !== fileEvent.file)\n }\n\n if (fileEvent.type === 'change') {\n logger.log(\n '--------------------------------------------------------------------------------',\n )\n logger.info(path.relative(cwd, fileEvent.file), 'changed')\n logger.log('')\n\n return files.slice(0) // trigger update\n }\n\n return files\n }, initialFiles),\n startWith(initialFiles),\n distinctUntilChanged(),\n )\n}\n"],"names":["globby","path","Observable","chokidar","scan","startWith","distinctUntilChanged"],"mappings":";;;;;;;;;;;;;;;;;;;;;AAGO,SAAS,UAAU,UAAuC;AAC/D,SAAOA,gBAAAA,QAAO,SAAS,IAAI,CAAC,YAAY,QAAQ,MAAMC,cAAK,QAAA,GAAG,EAAE,KAAKA,cAAAA,QAAK,MAAM,GAAG,CAAC,CAAC;AACvF;ACIO,SAAS,WAAW,UAA2C;AAC7D,SAAA,IAAIC,KAAAA,WAAW,CAAC,aAAa;AAC5B,UAAA,UAAUC,oBAAS,MAAM,UAAU;AAAA,MACvC,eAAe;AAAA,IAAA,CAChB;AAEQ,aAAA,gBAAgB,MAAiB,MAAsB;AAC1D,eAAS,WAAW,gBAAgB,QACtC,SAAS,MAAM,IAAI,IAEnB,SAAS,KAAK,EAAC,MAAM,MAAK;AAAA,IAAA;AAI9B,WAAA,QAAQ,GAAG,OAAO,eAAe,GAE1B,MAAM;AACX,cAAQ,IAAI,OAAO,eAAe,GAClC,QAAQ,MAAM;AAAA,IAChB;AAAA,EAAA,CACD;AACH;ACvBA,eAAsB,iBAAiB,SAGL;AAChC,QAAM,EAAC,KAAK,OAAA,IAAU,SAEhB,eAAe,MAAM,UAAU;AAAA,IACnCF,sBAAK,QAAQ,KAAK,cAAc;AAAA,IAChCA,sBAAK,QAAQ,KAAK,oBAAoB;AAAA,IACtCA,sBAAK,QAAQ,KAAK,mBAAmB;AAAA,IACrCA,sBAAK,QAAQ,KAAK,mBAAmB;AAAA,EAAA,CACtC;AASD,SAPmB,WAAW;AAAA,IAC5BA,sBAAK,QAAQ,KAAK,cAAc;AAAA,IAChCA,sBAAK,QAAQ,KAAK,oBAAoB;AAAA,IACtCA,sBAAK,QAAQ,KAAK,mBAAmB;AAAA,IACrCA,sBAAK,QAAQ,KAAK,mBAAmB;AAAA,EACtC,CAAA,EAEiB;AAAA,IAChBG,UAAAA,KAAK,CAAC,OAAO,cACP,UAAU,SAAS,QACd,MAAM,OAAO,UAAU,IAAI,IAGhC,UAAU,SAAS,WACd,MAAM,OAAO,CAAC,MAAM,MAAM,UAAU,IAAI,IAG7C,UAAU,SAAS,YACrB,OAAO;AAAA,MACL;AAAA,IAAA,GAEF,OAAO,KAAKH,sBAAK,SAAS,KAAK,UAAU,IAAI,GAAG,SAAS,GACzD,OAAO,IAAI,EAAE,GAEN,MAAM,MAAM,CAAC,KAGf,OACN,YAAY;AAAA,IACfI,UAAAA,UAAU,YAAY;AAAA,IACtBC,UAAqB,qBAAA;AAAA,EACvB;AACF;;"}
|
package/dist/_chunks-es/build.js
CHANGED
|
@@ -1,112 +1,8 @@
|
|
|
1
1
|
import path from "node:path";
|
|
2
2
|
import { rimraf } from "rimraf";
|
|
3
|
-
import {
|
|
4
|
-
import { createLogger } from "./
|
|
3
|
+
import { loadConfig, loadPkgWithReporting } from "./loadPkgWithReporting.js";
|
|
4
|
+
import { createLogger } from "./logger.js";
|
|
5
5
|
import chalk from "chalk";
|
|
6
|
-
import { buildTaskHandlers } from "./index.js";
|
|
7
|
-
function resolveBuildTasks(ctx) {
|
|
8
|
-
const { config, pkg, target } = ctx, bundles = config?.bundles || [], tasks = [], exports = Object.entries(ctx.exports || {}).map(
|
|
9
|
-
([_path, exp]) => ({ _path, ...exp })
|
|
10
|
-
), dtsTask = {
|
|
11
|
-
type: "build:dts",
|
|
12
|
-
entries: []
|
|
13
|
-
}, rolldownDtsTask = {}, rollupTasks = {};
|
|
14
|
-
function addRollupTaskEntry(format, runtime, entry) {
|
|
15
|
-
const buildId = `${format}:${runtime}`;
|
|
16
|
-
ctx.dts === "rolldown" && (rolldownDtsTask[buildId] ? rolldownDtsTask[buildId].entries.push(entry) : rolldownDtsTask[buildId] = {
|
|
17
|
-
type: "rolldown:dts",
|
|
18
|
-
buildId,
|
|
19
|
-
entries: [entry],
|
|
20
|
-
runtime,
|
|
21
|
-
format,
|
|
22
|
-
target: target[runtime]
|
|
23
|
-
}), ctx.emitDeclarationOnly || (rollupTasks[buildId] ? rollupTasks[buildId].entries.push(entry) : rollupTasks[buildId] = {
|
|
24
|
-
type: "build:js",
|
|
25
|
-
buildId,
|
|
26
|
-
entries: [entry],
|
|
27
|
-
runtime,
|
|
28
|
-
format,
|
|
29
|
-
target: target[runtime]
|
|
30
|
-
});
|
|
31
|
-
}
|
|
32
|
-
if (ctx.dts === "api-extractor") {
|
|
33
|
-
for (const exp of exports) {
|
|
34
|
-
const importId = path.join(pkg.name, exp._path);
|
|
35
|
-
exp.source?.endsWith(".ts") && dtsTask.entries.push({
|
|
36
|
-
importId,
|
|
37
|
-
exportPath: exp._path,
|
|
38
|
-
sourcePath: exp.source,
|
|
39
|
-
targetPaths: getTargetPaths(pkg.type, exp)
|
|
40
|
-
}), exp.browser?.source?.endsWith(".ts") && dtsTask.entries.push({
|
|
41
|
-
importId,
|
|
42
|
-
exportPath: exp._path,
|
|
43
|
-
sourcePath: exp.browser.source,
|
|
44
|
-
targetPaths: getTargetPaths(pkg.type, exp.browser)
|
|
45
|
-
}), exp.node?.source?.endsWith(".ts") && dtsTask.entries.push({
|
|
46
|
-
importId,
|
|
47
|
-
exportPath: exp._path,
|
|
48
|
-
sourcePath: exp.node.source,
|
|
49
|
-
targetPaths: getTargetPaths(pkg.type, exp.node)
|
|
50
|
-
});
|
|
51
|
-
}
|
|
52
|
-
for (const bundle of bundles)
|
|
53
|
-
if (bundle.source?.endsWith(".ts")) {
|
|
54
|
-
const exportPath = (bundle.import || bundle.require).replace(/\.[mc]?js$/, ""), importId = path.join(pkg.name, exportPath);
|
|
55
|
-
dtsTask.entries.push({
|
|
56
|
-
importId,
|
|
57
|
-
exportPath,
|
|
58
|
-
sourcePath: bundle.source,
|
|
59
|
-
targetPaths: getTargetPaths(pkg.type, bundle)
|
|
60
|
-
});
|
|
61
|
-
}
|
|
62
|
-
dtsTask.entries.length && tasks.push(dtsTask);
|
|
63
|
-
}
|
|
64
|
-
for (const exp of exports) {
|
|
65
|
-
const output = exp.require;
|
|
66
|
-
output && addRollupTaskEntry("commonjs", ctx.runtime, {
|
|
67
|
-
path: exp._path,
|
|
68
|
-
source: exp.source,
|
|
69
|
-
output
|
|
70
|
-
});
|
|
71
|
-
}
|
|
72
|
-
for (const exp of exports) {
|
|
73
|
-
const output = exp.import;
|
|
74
|
-
output && addRollupTaskEntry("esm", ctx.runtime, {
|
|
75
|
-
path: exp._path,
|
|
76
|
-
source: exp.source,
|
|
77
|
-
output
|
|
78
|
-
});
|
|
79
|
-
}
|
|
80
|
-
for (const exp of exports) {
|
|
81
|
-
const output = exp.browser?.require;
|
|
82
|
-
output && addRollupTaskEntry("commonjs", "browser", {
|
|
83
|
-
path: exp._path,
|
|
84
|
-
source: exp.browser?.source || exp.source,
|
|
85
|
-
output
|
|
86
|
-
});
|
|
87
|
-
}
|
|
88
|
-
for (const exp of exports) {
|
|
89
|
-
const output = exp.browser?.import;
|
|
90
|
-
output && addRollupTaskEntry("esm", "browser", {
|
|
91
|
-
path: exp._path,
|
|
92
|
-
source: exp.browser?.source || exp.source,
|
|
93
|
-
output
|
|
94
|
-
});
|
|
95
|
-
}
|
|
96
|
-
for (const bundle of bundles) {
|
|
97
|
-
const idx = bundles.indexOf(bundle);
|
|
98
|
-
bundle.require && addRollupTaskEntry("commonjs", bundle.runtime || ctx.runtime, {
|
|
99
|
-
path: `__$$bundle_cjs_${idx}$$__`,
|
|
100
|
-
source: bundle.source,
|
|
101
|
-
output: bundle.require
|
|
102
|
-
}), bundle.import && addRollupTaskEntry("esm", bundle.runtime || ctx.runtime, {
|
|
103
|
-
path: `__$$bundle_esm_${idx}$$__`,
|
|
104
|
-
source: bundle.source,
|
|
105
|
-
output: bundle.import
|
|
106
|
-
});
|
|
107
|
-
}
|
|
108
|
-
return tasks.push(...Object.values(rolldownDtsTask)), tasks.push(...Object.values(rollupTasks)), tasks;
|
|
109
|
-
}
|
|
110
6
|
function createSpinner(msg) {
|
|
111
7
|
const startTime = Date.now();
|
|
112
8
|
return console.log(msg), {
|
|
@@ -119,7 +15,11 @@ function createSpinner(msg) {
|
|
|
119
15
|
};
|
|
120
16
|
}
|
|
121
17
|
async function build(options) {
|
|
122
|
-
const {
|
|
18
|
+
const [{ resolveBuildContext }, { resolveBuildTasks }, { buildTaskHandlers }] = await Promise.all([
|
|
19
|
+
import("./resolveBuildContext.js"),
|
|
20
|
+
import("./resolveBuildTasks.js"),
|
|
21
|
+
import("./index2.js")
|
|
22
|
+
]), {
|
|
123
23
|
cwd,
|
|
124
24
|
emitDeclarationOnly,
|
|
125
25
|
strict = !1,
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"build.js","sources":["../../src/node/resolveBuildTasks.ts","../../src/node/spinner.ts","../../src/node/build.ts"],"sourcesContent":["import path from 'node:path'\nimport type {PkgExport, PkgFormat, PkgRuntime} from './core/config/types'\nimport type {BuildContext} from './core/contexts/buildContext'\nimport {getTargetPaths} from './tasks/dts/getTargetPaths'\nimport type {DtsTask} from './tasks/dts/types'\nimport type {BuildTask, RolldownDtsTask, RollupTask, RollupTaskEntry} from './tasks/types'\n\n/** @internal */\nexport function resolveBuildTasks(ctx: BuildContext): BuildTask[] {\n const {config, pkg, target} = ctx\n\n const bundles = config?.bundles || []\n\n const tasks: BuildTask[] = []\n\n const exports = Object.entries(ctx.exports || {}).map(\n ([_path, exp]) => ({_path, ...exp}) as PkgExport & {_path: string},\n )\n\n const dtsTask: DtsTask = {\n type: 'build:dts',\n entries: [],\n }\n\n const rolldownDtsTask: Record<string, RolldownDtsTask> = {}\n const rollupTasks: Record<string, RollupTask> = {}\n\n function addRollupTaskEntry(format: PkgFormat, runtime: PkgRuntime, entry: RollupTaskEntry) {\n const buildId = `${format}:${runtime}`\n\n if (ctx.dts === 'rolldown') {\n if (rolldownDtsTask[buildId]) {\n rolldownDtsTask[buildId].entries.push(entry)\n } else {\n rolldownDtsTask[buildId] = {\n type: 'rolldown:dts',\n buildId,\n entries: [entry],\n runtime,\n format,\n target: target[runtime],\n }\n }\n }\n\n if (!ctx.emitDeclarationOnly) {\n if (rollupTasks[buildId]) {\n rollupTasks[buildId].entries.push(entry)\n } else {\n rollupTasks[buildId] = {\n type: 'build:js',\n buildId,\n entries: [entry],\n runtime,\n format,\n target: target[runtime],\n }\n }\n }\n }\n\n if (ctx.dts === 'api-extractor') {\n // Parse `dts` tasks\n for (const exp of exports) {\n const importId = path.join(pkg.name, exp._path)\n\n if (exp.source?.endsWith('.ts')) {\n dtsTask.entries.push({\n importId,\n exportPath: exp._path,\n sourcePath: exp.source,\n targetPaths: getTargetPaths(pkg.type, exp),\n })\n }\n\n if (exp.browser?.source?.endsWith('.ts')) {\n dtsTask.entries.push({\n importId,\n exportPath: exp._path,\n sourcePath: exp.browser.source,\n targetPaths: getTargetPaths(pkg.type, exp.browser),\n })\n }\n\n if (exp.node?.source?.endsWith('.ts')) {\n dtsTask.entries.push({\n importId,\n exportPath: exp._path,\n sourcePath: exp.node.source,\n targetPaths: getTargetPaths(pkg.type, exp.node),\n })\n }\n }\n\n // Handle dts tasks for bundles\n for (const bundle of bundles) {\n if (bundle.source?.endsWith('.ts')) {\n // importId needs to be how the bundle is used, like `@sanity/pkg-utils/dist/cli`\n // exportPath needs to be the path to the bundle, like `./dist/cli`\n // targetPaths is then: [./dist/cli.d.ts, ./dist/cli.d.cts]\n const exportPath = (bundle.import || bundle.require)!.replace(/\\.[mc]?js$/, '')\n const importId = path.join(pkg.name, exportPath)\n\n dtsTask.entries.push({\n importId,\n exportPath,\n sourcePath: bundle.source,\n targetPaths: getTargetPaths(pkg.type, bundle),\n })\n }\n }\n\n // Add dts task\n if (dtsTask.entries.length) {\n tasks.push(dtsTask)\n }\n }\n\n // Parse rollup:commonjs:* tasks\n for (const exp of exports) {\n const output = exp.require\n\n if (!output) continue\n\n addRollupTaskEntry('commonjs', ctx.runtime, {\n path: exp._path,\n source: exp.source,\n output,\n })\n }\n\n // Parse rollup:esm:* tasks\n for (const exp of exports) {\n const output = exp.import\n\n if (!output) continue\n\n addRollupTaskEntry('esm', ctx.runtime, {\n path: exp._path,\n source: exp.source,\n output,\n })\n }\n\n // Parse rollup:commonjs:browser tasks\n for (const exp of exports) {\n const output = exp.browser?.require\n\n if (!output) continue\n\n addRollupTaskEntry('commonjs', 'browser', {\n path: exp._path,\n source: exp.browser?.source || exp.source,\n output,\n })\n }\n\n // Parse rollup:esm:browser tasks\n for (const exp of exports) {\n const output = exp.browser?.import\n\n if (!output) continue\n\n addRollupTaskEntry('esm', 'browser', {\n path: exp._path,\n source: exp.browser?.source || exp.source,\n output,\n })\n }\n\n for (const bundle of bundles) {\n const idx = bundles.indexOf(bundle)\n\n if (bundle.require) {\n addRollupTaskEntry('commonjs', bundle.runtime || ctx.runtime, {\n path: `__$$bundle_cjs_${idx}$$__`,\n source: bundle.source,\n output: bundle.require,\n })\n }\n\n if (bundle.import) {\n addRollupTaskEntry('esm', bundle.runtime || ctx.runtime, {\n path: `__$$bundle_esm_${idx}$$__`,\n source: bundle.source,\n output: bundle.import,\n })\n }\n }\n\n // Perform rolldown dts tasks first, as they have special logic for removing non .d.ts chunks\n tasks.push(...Object.values(rolldownDtsTask))\n // Then run api-extractor tsdoc release tag checking (if rolldown is used for dts bundling, otherwise api-extractor performs both in the build:dts task)\n // @TODO\n // Then run rollup tasks\n tasks.push(...Object.values(rollupTasks))\n\n return tasks\n}\n","// oxlint-disable no-console\nimport chalk from 'chalk'\n\nexport function createSpinner(msg: string): {complete: () => void; error: () => void} {\n const startTime = Date.now()\n\n console.log(msg)\n\n return {\n complete: () => {\n console.log(`${chalk.green('[success]')} ${chalk.gray(`${Date.now() - startTime}ms`)}`)\n },\n error: () => {\n console.log(`${chalk.red('[error]')} ${chalk.gray(`${Date.now() - startTime}ms`)}`)\n },\n }\n}\n","import path from 'node:path'\nimport {rimraf} from 'rimraf'\nimport {loadConfig} from './core/config/loadConfig'\nimport {loadPkgWithReporting} from './core/pkg/loadPkgWithReporting'\nimport {createLogger} from './logger'\nimport {resolveBuildContext} from './resolveBuildContext'\nimport {resolveBuildTasks} from './resolveBuildTasks'\nimport {createSpinner} from './spinner'\nimport {buildTaskHandlers} from './tasks'\nimport {type BuildTask, type TaskHandler} from './tasks/types'\n\n/**\n * Build the distribution files of a npm package.\n *\n * @example\n * ```ts\n * import {build} from '@sanity/pkg-utils'\n *\n * build({\n * cwd: process.cwd(),\n * tsconfig: 'tsconfig.dist.json,\n * }).then(() => {\n * console.log('successfully built')\n * }).catch((err) => {\n * console.log(`build error: ${err.message}`)\n * })\n * ```\n *\n * @public\n */\nexport async function build(options: {\n cwd: string\n emitDeclarationOnly?: boolean\n strict?: boolean\n tsconfig?: string\n clean?: boolean\n}): Promise<void> {\n const {\n cwd,\n emitDeclarationOnly,\n strict = false,\n tsconfig: tsconfigOption,\n clean = false,\n } = options\n const logger = createLogger()\n\n const config = await loadConfig({cwd})\n\n const pkg = await loadPkgWithReporting({cwd, logger, strict})\n\n const tsconfig = tsconfigOption || config?.tsconfig || 'tsconfig.json'\n\n const ctx = await resolveBuildContext({\n config,\n cwd,\n emitDeclarationOnly,\n logger,\n pkg,\n strict,\n tsconfig,\n })\n\n if (clean) {\n logger.log(\n `Deleting the \\`dist\\` folder: './${path.relative(cwd, ctx.distPath)}' before building...`,\n )\n await rimraf(ctx.distPath)\n }\n\n const buildTasks = resolveBuildTasks(ctx)\n\n for (const task of buildTasks) {\n const handler = buildTaskHandlers[task.type] as TaskHandler<BuildTask>\n const taskName = handler.name(ctx, task)\n\n const spinner = createSpinner(taskName)\n\n try {\n const result = await handler.exec(ctx, task).toPromise()\n\n spinner.complete()\n ctx.logger.log()\n\n handler.complete(ctx, task, result)\n } catch (err) {\n spinner.error()\n\n if (err instanceof Error) {\n const RE_CWD = new RegExp(`${cwd}`, 'g')\n\n ctx.logger.error(err.message.replace(RE_CWD, '.'))\n ctx.logger.log()\n }\n\n handler.error(ctx, task, err)\n\n process.exit(1)\n }\n }\n}\n"],"names":[],"mappings":"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"}
|
|
1
|
+
{"version":3,"file":"build.js","sources":["../../src/node/spinner.ts","../../src/node/build.ts"],"sourcesContent":["// oxlint-disable no-console\nimport chalk from 'chalk'\n\nexport function createSpinner(msg: string): {complete: () => void; error: () => void} {\n const startTime = Date.now()\n\n console.log(msg)\n\n return {\n complete: () => {\n console.log(`${chalk.green('[success]')} ${chalk.gray(`${Date.now() - startTime}ms`)}`)\n },\n error: () => {\n console.log(`${chalk.red('[error]')} ${chalk.gray(`${Date.now() - startTime}ms`)}`)\n },\n }\n}\n","import path from 'node:path'\nimport {rimraf} from 'rimraf'\nimport {loadConfig} from './core/config/loadConfig'\nimport {loadPkgWithReporting} from './core/pkg/loadPkgWithReporting'\nimport {createLogger} from './logger'\nimport {createSpinner} from './spinner'\nimport type {BuildTask, TaskHandler} from './tasks/types'\n\n/**\n * Build the distribution files of a npm package.\n *\n * @example\n * ```ts\n * import {build} from '@sanity/pkg-utils'\n *\n * build({\n * cwd: process.cwd(),\n * tsconfig: 'tsconfig.dist.json,\n * }).then(() => {\n * console.log('successfully built')\n * }).catch((err) => {\n * console.log(`build error: ${err.message}`)\n * })\n * ```\n *\n * @public\n */\nexport async function build(options: {\n cwd: string\n emitDeclarationOnly?: boolean\n strict?: boolean\n tsconfig?: string\n clean?: boolean\n}): Promise<void> {\n const [{resolveBuildContext}, {resolveBuildTasks}, {buildTaskHandlers}] = await Promise.all([\n import('./resolveBuildContext'),\n import('./resolveBuildTasks'),\n import('./tasks'),\n ])\n const {\n cwd,\n emitDeclarationOnly,\n strict = false,\n tsconfig: tsconfigOption,\n clean = false,\n } = options\n const logger = createLogger()\n\n const config = await loadConfig({cwd})\n\n const pkg = await loadPkgWithReporting({cwd, logger, strict})\n\n const tsconfig = tsconfigOption || config?.tsconfig || 'tsconfig.json'\n\n const ctx = await resolveBuildContext({\n config,\n cwd,\n emitDeclarationOnly,\n logger,\n pkg,\n strict,\n tsconfig,\n })\n\n if (clean) {\n logger.log(\n `Deleting the \\`dist\\` folder: './${path.relative(cwd, ctx.distPath)}' before building...`,\n )\n await rimraf(ctx.distPath)\n }\n\n const buildTasks = resolveBuildTasks(ctx)\n\n for (const task of buildTasks) {\n const handler = buildTaskHandlers[task.type] as TaskHandler<BuildTask>\n const taskName = handler.name(ctx, task)\n\n const spinner = createSpinner(taskName)\n\n try {\n const result = await handler.exec(ctx, task).toPromise()\n\n spinner.complete()\n ctx.logger.log()\n\n handler.complete(ctx, task, result)\n } catch (err) {\n spinner.error()\n\n if (err instanceof Error) {\n const RE_CWD = new RegExp(`${cwd}`, 'g')\n\n ctx.logger.error(err.message.replace(RE_CWD, '.'))\n ctx.logger.log()\n }\n\n handler.error(ctx, task, err)\n\n process.exit(1)\n }\n }\n}\n"],"names":[],"mappings":";;;;;AAGO,SAAS,cAAc,KAAwD;AAC9E,QAAA,YAAY,KAAK,IAAI;AAEnB,SAAA,QAAA,IAAI,GAAG,GAER;AAAA,IACL,UAAU,MAAM;AACd,cAAQ,IAAI,GAAG,MAAM,MAAM,WAAW,CAAC,IAAI,MAAM,KAAK,GAAG,KAAK,IAAI,IAAI,SAAS,IAAI,CAAC,EAAE;AAAA,IACxF;AAAA,IACA,OAAO,MAAM;AACX,cAAQ,IAAI,GAAG,MAAM,IAAI,SAAS,CAAC,IAAI,MAAM,KAAK,GAAG,KAAK,IAAI,IAAI,SAAS,IAAI,CAAC,EAAE;AAAA,IAAA;AAAA,EAEtF;AACF;ACWA,eAAsB,MAAM,SAMV;AAChB,QAAM,CAAC,EAAC,oBAAmB,GAAG,EAAC,kBAAA,GAAoB,EAAC,mBAAkB,IAAI,MAAM,QAAQ,IAAI;AAAA,IAC1F,OAAO,0BAAuB;AAAA,IAC9B,OAAO,wBAAqB;AAAA,IAC5B,OAAO,aAAS;AAAA,EAAA,CACjB,GACK;AAAA,IACJ;AAAA,IACA;AAAA,IACA,SAAS;AAAA,IACT,UAAU;AAAA,IACV,QAAQ;AAAA,EACN,IAAA,SACE,SAAS,aAAA,GAET,SAAS,MAAM,WAAW,EAAC,IAAA,CAAI,GAE/B,MAAM,MAAM,qBAAqB,EAAC,KAAK,QAAQ,QAAO,GAEtD,WAAW,kBAAkB,QAAQ,YAAY,iBAEjD,MAAM,MAAM,oBAAoB;AAAA,IACpC;AAAA,IACA;AAAA,IACA;AAAA,IACA;AAAA,IACA;AAAA,IACA;AAAA,IACA;AAAA,EAAA,CACD;AAEG,YACF,OAAO;AAAA,IACL,oCAAoC,KAAK,SAAS,KAAK,IAAI,QAAQ,CAAC;AAAA,EAEtE,GAAA,MAAM,OAAO,IAAI,QAAQ;AAGrB,QAAA,aAAa,kBAAkB,GAAG;AAExC,aAAW,QAAQ,YAAY;AAC7B,UAAM,UAAU,kBAAkB,KAAK,IAAI,GACrC,WAAW,QAAQ,KAAK,KAAK,IAAI,GAEjC,UAAU,cAAc,QAAQ;AAElC,QAAA;AACF,YAAM,SAAS,MAAM,QAAQ,KAAK,KAAK,IAAI,EAAE,UAAU;AAE/C,cAAA,SAAA,GACR,IAAI,OAAO,OAEX,QAAQ,SAAS,KAAK,MAAM,MAAM;AAAA,aAC3B,KAAK;AAGZ,UAFA,QAAQ,SAEJ,eAAe,OAAO;AACxB,cAAM,SAAS,IAAI,OAAO,GAAG,GAAG,IAAI,GAAG;AAEnC,YAAA,OAAO,MAAM,IAAI,QAAQ,QAAQ,QAAQ,GAAG,CAAC,GACjD,IAAI,OAAO,IAAI;AAAA,MAAA;AAGjB,cAAQ,MAAM,KAAK,MAAM,GAAG,GAE5B,QAAQ,KAAK,CAAC;AAAA,IAAA;AAAA,EAChB;AAEJ;"}
|
package/dist/_chunks-es/check.js
CHANGED
|
@@ -1,47 +1,25 @@
|
|
|
1
1
|
import path from "node:path";
|
|
2
|
-
import
|
|
3
|
-
import {
|
|
4
|
-
import {
|
|
5
|
-
|
|
6
|
-
|
|
7
|
-
|
|
8
|
-
|
|
9
|
-
|
|
10
|
-
|
|
11
|
-
return
|
|
12
|
-
|
|
13
|
-
|
|
14
|
-
|
|
15
|
-
|
|
16
|
-
}
|
|
17
|
-
function printPackageTree(ctx) {
|
|
18
|
-
const { cwd, exports, logger, pkg } = ctx;
|
|
19
|
-
if (!exports) return;
|
|
20
|
-
logger.log(`${chalk.blue(pkg.name)}@${chalk.green(pkg.version)}`);
|
|
21
|
-
const tree = {};
|
|
22
|
-
pkg.type && (tree.type = chalk.yellow(pkg.type)), pkg.bin && (tree.bin = Object.fromEntries(
|
|
23
|
-
Object.entries(pkg.bin).map(([name, file]) => [chalk.cyan(name), fileInfo(file)])
|
|
24
|
-
));
|
|
25
|
-
function fileInfo(file) {
|
|
26
|
-
const info = getFileInfo(cwd, file);
|
|
27
|
-
return info.size ? `${chalk.yellow(file)} ${chalk.gray(info.size)}` : `${chalk.gray(file)} ${chalk.red("does not exist")}`;
|
|
28
|
-
}
|
|
29
|
-
tree.exports = Object.fromEntries(
|
|
30
|
-
Object.entries(exports).filter(([, entry]) => entry._exported).map(([exportPath, entry]) => {
|
|
31
|
-
const exp = {
|
|
32
|
-
source: fileInfo(entry.source),
|
|
33
|
-
browser: void 0,
|
|
34
|
-
require: void 0,
|
|
35
|
-
node: void 0,
|
|
36
|
-
import: void 0,
|
|
37
|
-
default: fileInfo(entry.default)
|
|
38
|
-
};
|
|
39
|
-
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];
|
|
40
|
-
})
|
|
41
|
-
), logger.log(treeify.asTree(tree, !0, !0));
|
|
2
|
+
import { loadConfig, loadPkgWithReporting } from "./loadPkgWithReporting.js";
|
|
3
|
+
import { fileExists } from "./fileExists.js";
|
|
4
|
+
import { createLogger } from "./logger.js";
|
|
5
|
+
function createConsoleSpy(options) {
|
|
6
|
+
const { onRestored } = options || {}, original = {
|
|
7
|
+
log: console.log,
|
|
8
|
+
warn: console.warn,
|
|
9
|
+
error: console.error
|
|
10
|
+
}, messages = [];
|
|
11
|
+
return console.log = (...args) => messages.push({ type: "log", args }), console.warn = (...args) => messages.push({ type: "warn", args }), console.error = (...args) => messages.push({ type: "error", args }), {
|
|
12
|
+
messages,
|
|
13
|
+
restore: () => {
|
|
14
|
+
console.log = original.log, console.warn = original.warn, console.error = original.error, onRestored?.(messages);
|
|
15
|
+
}
|
|
16
|
+
};
|
|
42
17
|
}
|
|
43
18
|
async function check(options) {
|
|
44
|
-
const {
|
|
19
|
+
const [{ resolveBuildContext }, { printPackageTree }] = await Promise.all([
|
|
20
|
+
import("./resolveBuildContext.js"),
|
|
21
|
+
import("./printPackageTree.js")
|
|
22
|
+
]), { cwd, strict = !1, tsconfig: tsconfigOption } = options, logger = createLogger(), config = await loadConfig({ cwd }), pkg = await loadPkgWithReporting({ cwd, logger, strict }), tsconfig = tsconfigOption || config?.tsconfig || "tsconfig.json", ctx = await resolveBuildContext({ config, cwd, logger, pkg, strict, tsconfig });
|
|
45
23
|
if (printPackageTree(ctx), strict) {
|
|
46
24
|
const missingFiles = [];
|
|
47
25
|
for (const [, exp] of Object.entries(ctx.exports || {}))
|
|
@@ -61,10 +39,10 @@ async function check(options) {
|
|
|
61
39
|
}
|
|
62
40
|
}
|
|
63
41
|
async function checkExports(exportPaths, options) {
|
|
64
|
-
const { cwd, external, format, logger } = options, code = exportPaths.map((id) => format ? `import('${id}');` : `require('${id}');`).join(`
|
|
42
|
+
const { build } = await import("esbuild"), { cwd, external, format, logger } = options, code = exportPaths.map((id) => format ? `import('${id}');` : `require('${id}');`).join(`
|
|
65
43
|
`);
|
|
66
44
|
try {
|
|
67
|
-
const esbuildResult = await
|
|
45
|
+
const esbuildResult = await build({
|
|
68
46
|
bundle: !0,
|
|
69
47
|
external,
|
|
70
48
|
format,
|
|
@@ -115,6 +93,7 @@ function isEsbuildMessage(msg) {
|
|
|
115
93
|
return typeof msg == "object" && msg !== null && "text" in msg && typeof msg.text == "string" && "location" in msg && (msg.location === null || typeof msg.location == "object");
|
|
116
94
|
}
|
|
117
95
|
export {
|
|
118
|
-
check
|
|
96
|
+
check,
|
|
97
|
+
createConsoleSpy
|
|
119
98
|
};
|
|
120
99
|
//# sourceMappingURL=check.js.map
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"check.js","sources":["../../src/node/getFilesize.ts","../../src/node/printPackageTree.ts","../../src/node/check.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'\nimport type {BuildContext} from './core/contexts/buildContext'\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 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 esbuild, {type BuildFailure, type Message} from 'esbuild'\nimport {createConsoleSpy} from './consoleSpy'\nimport {loadConfig} from './core/config/loadConfig'\nimport {loadPkgWithReporting} from './core/pkg/loadPkgWithReporting'\nimport {fileExists} from './fileExists'\nimport {createLogger, type 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 config = await loadConfig({cwd})\n const pkg = await loadPkgWithReporting({cwd, logger, strict})\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 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 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(`${err}`)\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\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"],"names":[],"mappings":"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"}
|
|
1
|
+
{"version":3,"file":"check.js","sources":["../../src/node/consoleSpy.ts","../../src/node/check.ts"],"sourcesContent":["export interface ConsoleSpyMsg {\n type: 'log' | 'warn' | 'error'\n code?: string\n args: unknown[]\n}\n\nexport interface ConsoleSpy {\n messages: ConsoleSpyMsg[]\n restore: () => void\n}\n\nexport function createConsoleSpy(options?: {\n onRestored?: (messages: ConsoleSpyMsg[]) => void\n}): ConsoleSpy {\n const {onRestored} = options || {}\n\n const original = {\n log: console.log,\n warn: console.warn,\n error: console.error,\n }\n\n const messages: ConsoleSpyMsg[] = []\n\n console.log = (...args: unknown[]) => messages.push({type: 'log', args})\n console.warn = (...args: unknown[]) => messages.push({type: 'warn', args})\n console.error = (...args: unknown[]) => messages.push({type: 'error', args})\n\n return {\n messages,\n restore: () => {\n console.log = original.log\n console.warn = original.warn\n console.error = original.error\n\n onRestored?.(messages)\n },\n }\n}\n","import path from 'node:path'\nimport type {BuildFailure, Message} from 'esbuild'\nimport {createConsoleSpy} from './consoleSpy'\nimport {loadConfig} from './core/config/loadConfig'\nimport {loadPkgWithReporting} from './core/pkg/loadPkgWithReporting'\nimport {fileExists} from './fileExists'\nimport {createLogger, type Logger} from './logger'\n\n/** @public */\nexport async function check(options: {\n cwd: string\n strict?: boolean\n tsconfig?: string\n}): Promise<void> {\n const [{resolveBuildContext}, {printPackageTree}] = await Promise.all([\n import('./resolveBuildContext'),\n import('./printPackageTree'),\n ])\n\n const {cwd, strict = false, tsconfig: tsconfigOption} = options\n const logger = createLogger()\n\n const config = await loadConfig({cwd})\n const pkg = await loadPkgWithReporting({cwd, logger, strict})\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 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 {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 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 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(`${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"],"names":[],"mappings":"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"}
|
|
@@ -0,0 +1 @@
|
|
|
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;AAChD,MAAA;AACF,WAAA,SAAS,QAAQ,GAEV;AAAA,EAAA,QACD;AACC,WAAA;AAAA,EAAA;AAEX;"}
|
|
@@ -0,0 +1,23 @@
|
|
|
1
|
+
import path from "node:path";
|
|
2
|
+
import findConfig from "find-config";
|
|
3
|
+
import { fileExists } from "./fileExists.js";
|
|
4
|
+
const CONFIG_FILE_NAMES = [
|
|
5
|
+
"package.config.ts",
|
|
6
|
+
"package.config.js",
|
|
7
|
+
"package.config.cjs",
|
|
8
|
+
"package.config.mjs"
|
|
9
|
+
];
|
|
10
|
+
function findConfigFile(cwd) {
|
|
11
|
+
const pkgJsonPath = findConfig("package.json", { cwd });
|
|
12
|
+
if (!pkgJsonPath) return;
|
|
13
|
+
const pkgPath = path.dirname(pkgJsonPath);
|
|
14
|
+
for (const fileName of CONFIG_FILE_NAMES) {
|
|
15
|
+
const configPath = path.resolve(pkgPath, fileName);
|
|
16
|
+
if (fileExists(configPath))
|
|
17
|
+
return configPath;
|
|
18
|
+
}
|
|
19
|
+
}
|
|
20
|
+
export {
|
|
21
|
+
findConfigFile
|
|
22
|
+
};
|
|
23
|
+
//# sourceMappingURL=findConfigFile.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"findConfigFile.js","sources":["../../src/node/core/config/findConfigFile.ts"],"sourcesContent":["import path from 'node:path'\nimport findConfig from 'find-config'\nimport {fileExists} from '../../fileExists'\n\nconst CONFIG_FILE_NAMES = [\n 'package.config.ts',\n 'package.config.js',\n 'package.config.cjs',\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"],"names":[],"mappings":";;;AAIA,MAAM,oBAAoB;AAAA,EACxB;AAAA,EACA;AAAA,EACA;AAAA,EACA;AACF;AAGO,SAAS,eAAe,KAAiC;AAC9D,QAAM,cAAc,WAAW,gBAAgB,EAAC,KAAI;AAEpD,MAAI,CAAC,YAAa;AAEZ,QAAA,UAAU,KAAK,QAAQ,WAAW;AAExC,aAAW,YAAY,mBAAmB;AACxC,UAAM,aAAa,KAAK,QAAQ,SAAS,QAAQ;AAIjD,QAFe,WAAW,UAAU;AAG3B,aAAA;AAAA,EAAA;AAKb;"}
|