@sanity/pkg-utils 2.3.11 → 2.3.13-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/build.js +69 -0
- package/dist/build.js.map +1 -0
- package/dist/check.js +152 -0
- package/dist/check.js.map +1 -0
- package/dist/cli.cjs +6 -6
- package/dist/cli.cjs.map +1 -1
- package/dist/consoleSpy.js +49 -0
- package/dist/consoleSpy.js.map +1 -0
- package/dist/core/config/defineConfig.js +5 -0
- package/dist/core/config/defineConfig.js.map +1 -0
- package/dist/core/config/findConfigFile.js +21 -0
- package/dist/core/config/findConfigFile.js.map +1 -0
- package/dist/core/config/loadConfig.js +34 -0
- package/dist/core/config/loadConfig.js.map +1 -0
- package/dist/core/config/resolveConfigProperty.js +9 -0
- package/dist/core/config/resolveConfigProperty.js.map +1 -0
- package/dist/core/defaults.js +3 -0
- package/dist/core/defaults.js.map +1 -0
- package/dist/core/findCommonPath.js +28 -0
- package/dist/core/findCommonPath.js.map +1 -0
- package/dist/core/isRecord.js +5 -0
- package/dist/core/isRecord.js.map +1 -0
- package/dist/core/pkg/helpers.js +24 -0
- package/dist/core/pkg/helpers.js.map +1 -0
- package/dist/core/pkg/loadPkg.js +18 -0
- package/dist/core/pkg/loadPkg.js.map +1 -0
- package/dist/core/pkg/loadPkgWithReporting.js +107 -0
- package/dist/core/pkg/loadPkgWithReporting.js.map +1 -0
- package/dist/core/pkg/parseExports.js +75 -0
- package/dist/core/pkg/parseExports.js.map +1 -0
- package/dist/core/pkg/pkgExt.js +29 -0
- package/dist/core/pkg/pkgExt.js.map +1 -0
- package/dist/core/pkg/validateExports.js +19 -0
- package/dist/core/pkg/validateExports.js.map +1 -0
- package/dist/core/pkg/validatePkg.js +49 -0
- package/dist/core/pkg/validatePkg.js.map +1 -0
- package/dist/core/template/createFromTemplate.js +59 -0
- package/dist/core/template/createFromTemplate.js.map +1 -0
- package/dist/core/template/define.js +5 -0
- package/dist/core/template/define.js.map +1 -0
- package/dist/core/ts/loadTSConfig.js +15 -0
- package/dist/core/ts/loadTSConfig.js.map +1 -0
- package/dist/fileExists.js +11 -0
- package/dist/fileExists.js.map +1 -0
- package/dist/getFilesize.js +8 -0
- package/dist/getFilesize.js.map +1 -0
- package/dist/globFiles.js +7 -0
- package/dist/globFiles.js.map +1 -0
- package/dist/index.cjs +44 -30
- package/dist/index.cjs.map +1 -1
- package/dist/index.d.ts +4 -2
- package/dist/index.js +24 -2505
- package/dist/index.js.map +1 -1
- package/dist/init.js +42 -0
- package/dist/init.js.map +1 -0
- package/dist/isEmptyDirectory.js +6 -0
- package/dist/isEmptyDirectory.js.map +1 -0
- package/dist/logger.js +37 -0
- package/dist/logger.js.map +1 -0
- package/dist/package.json.cjs +8 -0
- package/dist/package.json.cjs.map +1 -0
- package/dist/printExtractMessages.js +32 -0
- package/dist/printExtractMessages.js.map +1 -0
- package/dist/printPackageTree.js +92 -0
- package/dist/printPackageTree.js.map +1 -0
- package/dist/resolveBrowserTarget.js +27 -0
- package/dist/resolveBrowserTarget.js.map +1 -0
- package/dist/resolveBrowserslistVersions.js +44 -0
- package/dist/resolveBrowserslistVersions.js.map +1 -0
- package/dist/resolveBuildContext.js +109 -0
- package/dist/resolveBuildContext.js.map +1 -0
- package/dist/resolveBuildTasks.js +140 -0
- package/dist/resolveBuildTasks.js.map +1 -0
- package/dist/resolveNodeTarget.js +12 -0
- package/dist/resolveNodeTarget.js.map +1 -0
- package/dist/resolveWatchTasks.js +103 -0
- package/dist/resolveWatchTasks.js.map +1 -0
- package/dist/spinner.js +15 -0
- package/dist/spinner.js.map +1 -0
- package/dist/{_chunks/buildAction-b2571e76.cjs → src/cli/buildAction.cjs} +6 -3
- package/dist/src/cli/buildAction.cjs.map +1 -0
- package/dist/{_chunks/checkAction-c3e5da35.cjs → src/cli/checkAction.cjs} +6 -3
- package/dist/src/cli/checkAction.cjs.map +1 -0
- package/dist/{_chunks/handleError-13d87f55.cjs → src/cli/handleError.cjs} +4 -1
- package/dist/src/cli/handleError.cjs.map +1 -0
- package/dist/{_chunks/initAction-2abd8576.cjs → src/cli/initAction.cjs} +6 -3
- package/dist/src/cli/initAction.cjs.map +1 -0
- package/dist/{_chunks/watchAction-79480cb8.cjs → src/cli/watchAction.cjs} +6 -3
- package/dist/src/cli/watchAction.cjs.map +1 -0
- package/dist/src/node/build.cjs +74 -0
- package/dist/src/node/build.cjs.map +1 -0
- package/dist/src/node/check.cjs +164 -0
- package/dist/src/node/check.cjs.map +1 -0
- package/dist/src/node/consoleSpy.cjs +54 -0
- package/dist/src/node/consoleSpy.cjs.map +1 -0
- package/dist/src/node/core/config/defineConfig.cjs +10 -0
- package/dist/src/node/core/config/defineConfig.cjs.map +1 -0
- package/dist/src/node/core/config/findConfigFile.cjs +33 -0
- package/dist/src/node/core/config/findConfigFile.cjs.map +1 -0
- package/dist/src/node/core/config/loadConfig.cjs +46 -0
- package/dist/src/node/core/config/loadConfig.cjs.map +1 -0
- package/dist/src/node/core/config/resolveConfigProperty.cjs +14 -0
- package/dist/src/node/core/config/resolveConfigProperty.cjs.map +1 -0
- package/dist/src/node/core/defaults.cjs +8 -0
- package/dist/src/node/core/defaults.cjs.map +1 -0
- package/dist/src/node/core/findCommonPath.cjs +40 -0
- package/dist/src/node/core/findCommonPath.cjs.map +1 -0
- package/dist/src/node/core/isRecord.cjs +10 -0
- package/dist/src/node/core/isRecord.cjs.map +1 -0
- package/dist/src/node/core/pkg/helpers.cjs +31 -0
- package/dist/src/node/core/pkg/helpers.cjs.map +1 -0
- package/dist/src/node/core/pkg/loadPkg.cjs +30 -0
- package/dist/src/node/core/pkg/loadPkg.cjs.map +1 -0
- package/dist/src/node/core/pkg/loadPkgWithReporting.cjs +118 -0
- package/dist/src/node/core/pkg/loadPkgWithReporting.cjs.map +1 -0
- package/dist/src/node/core/pkg/parseExports.cjs +80 -0
- package/dist/src/node/core/pkg/parseExports.cjs.map +1 -0
- package/dist/src/node/core/pkg/pkgExt.cjs +35 -0
- package/dist/src/node/core/pkg/pkgExt.cjs.map +1 -0
- package/dist/src/node/core/pkg/validateExports.cjs +24 -0
- package/dist/src/node/core/pkg/validateExports.cjs.map +1 -0
- package/dist/src/node/core/pkg/validatePkg.cjs +54 -0
- package/dist/src/node/core/pkg/validatePkg.cjs.map +1 -0
- package/dist/src/node/core/template/createFromTemplate.cjs +70 -0
- package/dist/src/node/core/template/createFromTemplate.cjs.map +1 -0
- package/dist/src/node/core/template/define.cjs +10 -0
- package/dist/src/node/core/template/define.cjs.map +1 -0
- package/dist/src/node/core/ts/loadTSConfig.cjs +26 -0
- package/dist/src/node/core/ts/loadTSConfig.cjs.map +1 -0
- package/dist/src/node/fileExists.cjs +16 -0
- package/dist/src/node/fileExists.cjs.map +1 -0
- package/dist/src/node/getFilesize.cjs +19 -0
- package/dist/src/node/getFilesize.cjs.map +1 -0
- package/dist/src/node/globFiles.cjs +19 -0
- package/dist/src/node/globFiles.cjs.map +1 -0
- package/dist/src/node/init.cjs +47 -0
- package/dist/src/node/init.cjs.map +1 -0
- package/dist/src/node/isEmptyDirectory.cjs +11 -0
- package/dist/src/node/isEmptyDirectory.cjs.map +1 -0
- package/dist/src/node/logger.cjs +48 -0
- package/dist/src/node/logger.cjs.map +1 -0
- package/dist/src/node/printExtractMessages.cjs +44 -0
- package/dist/src/node/printExtractMessages.cjs.map +1 -0
- package/dist/src/node/printPackageTree.cjs +105 -0
- package/dist/src/node/printPackageTree.cjs.map +1 -0
- package/dist/src/node/resolveBrowserTarget.cjs +32 -0
- package/dist/src/node/resolveBrowserTarget.cjs.map +1 -0
- package/dist/src/node/resolveBrowserslistVersions.cjs +55 -0
- package/dist/src/node/resolveBrowserslistVersions.cjs.map +1 -0
- package/dist/src/node/resolveBuildContext.cjs +120 -0
- package/dist/src/node/resolveBuildContext.cjs.map +1 -0
- package/dist/{_chunks/build-62cd452e.cjs → src/node/resolveBuildTasks.cjs} +8 -80
- package/dist/src/node/resolveBuildTasks.cjs.map +1 -0
- package/dist/src/node/resolveNodeTarget.cjs +17 -0
- package/dist/src/node/resolveNodeTarget.cjs.map +1 -0
- package/dist/src/node/resolveWatchTasks.cjs +115 -0
- package/dist/src/node/resolveWatchTasks.cjs.map +1 -0
- package/dist/src/node/spinner.cjs +26 -0
- package/dist/src/node/spinner.cjs.map +1 -0
- package/dist/src/node/tasks/dts/DtsError.cjs +17 -0
- package/dist/src/node/tasks/dts/DtsError.cjs.map +1 -0
- package/dist/src/node/tasks/dts/buildTypes.cjs +50 -0
- package/dist/src/node/tasks/dts/buildTypes.cjs.map +1 -0
- package/dist/src/node/tasks/dts/createApiExtractorConfig.cjs +52 -0
- package/dist/src/node/tasks/dts/createApiExtractorConfig.cjs.map +1 -0
- package/dist/src/node/tasks/dts/createTSDocConfig.cjs +37 -0
- package/dist/src/node/tasks/dts/createTSDocConfig.cjs.map +1 -0
- package/dist/src/node/tasks/dts/doExtract.cjs +88 -0
- package/dist/src/node/tasks/dts/doExtract.cjs.map +1 -0
- package/dist/src/node/tasks/dts/dtsTask.cjs +44 -0
- package/dist/src/node/tasks/dts/dtsTask.cjs.map +1 -0
- package/dist/src/node/tasks/dts/dtsWatchTask.cjs +47 -0
- package/dist/src/node/tasks/dts/dtsWatchTask.cjs.map +1 -0
- package/dist/src/node/tasks/dts/extractModuleBlocks.cjs +38 -0
- package/dist/src/node/tasks/dts/extractModuleBlocks.cjs.map +1 -0
- package/dist/src/node/tasks/dts/extractTypes.cjs +90 -0
- package/dist/src/node/tasks/dts/extractTypes.cjs.map +1 -0
- package/dist/src/node/tasks/dts/getExtractMessagesConfig.cjs +73 -0
- package/dist/src/node/tasks/dts/getExtractMessagesConfig.cjs.map +1 -0
- package/dist/src/node/tasks/dts/printDiagnostic.cjs +48 -0
- package/dist/src/node/tasks/dts/printDiagnostic.cjs.map +1 -0
- package/dist/src/node/tasks/index.cjs +26 -0
- package/dist/src/node/tasks/index.cjs.map +1 -0
- package/dist/src/node/tasks/node/reexportCjsTask.cjs +64 -0
- package/dist/src/node/tasks/node/reexportCjsTask.cjs.map +1 -0
- package/dist/src/node/tasks/rollup/resolveRollupConfig.cjs +207 -0
- package/dist/src/node/tasks/rollup/resolveRollupConfig.cjs.map +1 -0
- package/dist/src/node/tasks/rollup/rollupTask.cjs +116 -0
- package/dist/src/node/tasks/rollup/rollupTask.cjs.map +1 -0
- package/dist/src/node/tasks/rollup/rollupWatchTask.cjs +72 -0
- package/dist/src/node/tasks/rollup/rollupWatchTask.cjs.map +1 -0
- package/dist/{_chunks/init-2377e6e5.cjs → src/node/templates/default/template.cjs} +23 -112
- package/dist/src/node/templates/default/template.cjs.map +1 -0
- package/dist/src/node/watch.cjs +90 -0
- package/dist/src/node/watch.cjs.map +1 -0
- package/dist/src/node/watchConfigFiles.cjs +40 -0
- package/dist/src/node/watchConfigFiles.cjs.map +1 -0
- package/dist/src/node/watchFiles.cjs +33 -0
- package/dist/src/node/watchFiles.cjs.map +1 -0
- package/dist/tasks/dts/DtsError.js +12 -0
- package/dist/tasks/dts/DtsError.js.map +1 -0
- package/dist/tasks/dts/buildTypes.js +39 -0
- package/dist/tasks/dts/buildTypes.js.map +1 -0
- package/dist/tasks/dts/createApiExtractorConfig.js +41 -0
- package/dist/tasks/dts/createApiExtractorConfig.js.map +1 -0
- package/dist/tasks/dts/createTSDocConfig.js +32 -0
- package/dist/tasks/dts/createTSDocConfig.js.map +1 -0
- package/dist/tasks/dts/doExtract.js +76 -0
- package/dist/tasks/dts/doExtract.js.map +1 -0
- package/dist/tasks/dts/dtsTask.js +33 -0
- package/dist/tasks/dts/dtsTask.js.map +1 -0
- package/dist/tasks/dts/dtsWatchTask.js +36 -0
- package/dist/tasks/dts/dtsWatchTask.js.map +1 -0
- package/dist/tasks/dts/extractModuleBlocks.js +26 -0
- package/dist/tasks/dts/extractModuleBlocks.js.map +1 -0
- package/dist/tasks/dts/extractTypes.js +77 -0
- package/dist/tasks/dts/extractTypes.js.map +1 -0
- package/dist/tasks/dts/getExtractMessagesConfig.js +68 -0
- package/dist/tasks/dts/getExtractMessagesConfig.js.map +1 -0
- package/dist/tasks/dts/printDiagnostic.js +35 -0
- package/dist/tasks/dts/printDiagnostic.js.map +1 -0
- package/dist/tasks/index.js +16 -0
- package/dist/tasks/index.js.map +1 -0
- package/dist/tasks/node/reexportCjsTask.js +52 -0
- package/dist/tasks/node/reexportCjsTask.js.map +1 -0
- package/dist/tasks/rollup/resolveRollupConfig.js +189 -0
- package/dist/tasks/rollup/resolveRollupConfig.js.map +1 -0
- package/dist/tasks/rollup/rollupTask.js +104 -0
- package/dist/tasks/rollup/rollupTask.js.map +1 -0
- package/dist/tasks/rollup/rollupWatchTask.js +60 -0
- package/dist/tasks/rollup/rollupWatchTask.js.map +1 -0
- package/dist/templates/default/template.js +366 -0
- package/dist/templates/default/template.js.map +1 -0
- package/dist/watch.js +79 -0
- package/dist/watch.js.map +1 -0
- package/dist/watchConfigFiles.js +29 -0
- package/dist/watchConfigFiles.js.map +1 -0
- package/dist/watchFiles.js +22 -0
- package/dist/watchFiles.js.map +1 -0
- package/package.json +3 -2
- package/src/node/core/pkg/loadPkgWithReporting.ts +91 -18
- package/src/node/core/pkg/types.ts +4 -2
- package/src/node/core/pkg/validatePkg.ts +31 -3
- package/src/node/resolveBuildTasks.ts +2 -2
- package/src/node/tasks/node/reexportCjsTask.ts +1 -1
- package/src/node/tasks/rollup/resolveRollupConfig.ts +4 -0
- package/src/node/tasks/rollup/rollupTask.ts +8 -0
- package/dist/_chunks/build-62cd452e.cjs.map +0 -1
- package/dist/_chunks/buildAction-b2571e76.cjs.map +0 -1
- package/dist/_chunks/check-0665cb35.cjs +0 -250
- package/dist/_chunks/check-0665cb35.cjs.map +0 -1
- package/dist/_chunks/checkAction-c3e5da35.cjs.map +0 -1
- package/dist/_chunks/consoleSpy-d738cb9f.cjs +0 -550
- package/dist/_chunks/consoleSpy-d738cb9f.cjs.map +0 -1
- package/dist/_chunks/handleError-13d87f55.cjs.map +0 -1
- package/dist/_chunks/index-ad3fa5bb.cjs +0 -865
- package/dist/_chunks/index-ad3fa5bb.cjs.map +0 -1
- package/dist/_chunks/init-2377e6e5.cjs.map +0 -1
- package/dist/_chunks/initAction-2abd8576.cjs.map +0 -1
- package/dist/_chunks/logger-c593f06b.cjs +0 -97
- package/dist/_chunks/logger-c593f06b.cjs.map +0 -1
- package/dist/_chunks/watch-425eab1e.cjs +0 -231
- package/dist/_chunks/watch-425eab1e.cjs.map +0 -1
- package/dist/_chunks/watchAction-79480cb8.cjs.map +0 -1
|
@@ -0,0 +1,107 @@
|
|
|
1
|
+
import chalk from 'chalk';
|
|
2
|
+
import { ZodError } from 'zod';
|
|
3
|
+
import { assertFirst, assertOrder, assertLast } from './helpers.js';
|
|
4
|
+
import { loadPkg } from './loadPkg.js';
|
|
5
|
+
async function loadPkgWithReporting(options) {
|
|
6
|
+
const {
|
|
7
|
+
cwd,
|
|
8
|
+
logger
|
|
9
|
+
} = options;
|
|
10
|
+
try {
|
|
11
|
+
const pkg = await loadPkg({
|
|
12
|
+
cwd
|
|
13
|
+
});
|
|
14
|
+
let shouldError = false;
|
|
15
|
+
if (pkg.exports) {
|
|
16
|
+
const _exports = Object.entries(pkg.exports);
|
|
17
|
+
for (const [expPath, exp] of _exports) {
|
|
18
|
+
if (typeof exp === "string") {
|
|
19
|
+
continue;
|
|
20
|
+
}
|
|
21
|
+
const keys = Object.keys(exp);
|
|
22
|
+
if (!assertFirst("types", keys)) {
|
|
23
|
+
shouldError = true;
|
|
24
|
+
logger.error("exports[\"".concat(expPath, "\"]: the `types` property should be the first property"));
|
|
25
|
+
}
|
|
26
|
+
if (exp.node) {
|
|
27
|
+
const nodeKeys = Object.keys(exp.node);
|
|
28
|
+
if (!assertOrder("module", "import", nodeKeys)) {
|
|
29
|
+
shouldError = true;
|
|
30
|
+
logger.error("exports[\"".concat(expPath, "\"]: the `node.module` property should come before the `node.import` property"));
|
|
31
|
+
}
|
|
32
|
+
if (!assertOrder("import", "require", nodeKeys)) {
|
|
33
|
+
logger.warn("exports[\"".concat(expPath, "\"]: the `node.import` property should come before the `node.require` property"));
|
|
34
|
+
}
|
|
35
|
+
if (!assertOrder("module", "require", nodeKeys)) {
|
|
36
|
+
logger.warn("exports[\"".concat(expPath, "\"]: the `node.module` property should come before `node.require` property"));
|
|
37
|
+
}
|
|
38
|
+
if (exp.import && exp.node.import && !assertOrder("node", "import", keys)) {
|
|
39
|
+
shouldError = true;
|
|
40
|
+
logger.error("exports[\"".concat(expPath, "\"]: the `node` property should come before the `import` property"));
|
|
41
|
+
}
|
|
42
|
+
if (exp.module && exp.node.module && !assertOrder("node", "module", keys)) {
|
|
43
|
+
shouldError = true;
|
|
44
|
+
logger.error("exports[\"".concat(expPath, "\"]: the `node` property should come before the `module` property"));
|
|
45
|
+
}
|
|
46
|
+
if (exp.node.import && !exp.node.require && !exp.node.module) {
|
|
47
|
+
shouldError = true;
|
|
48
|
+
logger.error("exports[\"".concat(expPath, "\"]: the `node.module` property should be added so bundlers don't unintentionally try to bundle `node.import`"));
|
|
49
|
+
}
|
|
50
|
+
if (exp.node.import && !exp.node.require && exp.node.module && exp.import && exp.node.module !== exp.import) {
|
|
51
|
+
shouldError = true;
|
|
52
|
+
logger.error("exports[\"".concat(expPath, "\"]: the `node.module` property should match `import`"));
|
|
53
|
+
}
|
|
54
|
+
if (exp.require && exp.node.require && exp.require === exp.node.require) {
|
|
55
|
+
shouldError = true;
|
|
56
|
+
logger.error("exports[\"".concat(expPath, "\"]: the `node.require` property isn't necessary as it's identical to `require`"));
|
|
57
|
+
} else if (exp.require && exp.node.require && !assertOrder("node", "require", keys)) {
|
|
58
|
+
shouldError = true;
|
|
59
|
+
logger.error("exports[\"".concat(expPath, "\"]: the `node` property should come before the `require` property"));
|
|
60
|
+
}
|
|
61
|
+
} else {
|
|
62
|
+
if (!assertOrder("import", "require", keys)) {
|
|
63
|
+
logger.warn("exports[\"".concat(expPath, "\"]: the `import` property should come before the `require` property"));
|
|
64
|
+
}
|
|
65
|
+
if (!assertOrder("module", "import", keys)) {
|
|
66
|
+
logger.warn("exports[\"".concat(expPath, "\"]: the `module` property should come before `import` property"));
|
|
67
|
+
}
|
|
68
|
+
}
|
|
69
|
+
if (!assertLast("default", keys)) {
|
|
70
|
+
shouldError = true;
|
|
71
|
+
logger.error("exports[\"".concat(expPath, "\"]: the `default` property should be the last property"));
|
|
72
|
+
}
|
|
73
|
+
}
|
|
74
|
+
}
|
|
75
|
+
if (shouldError) {
|
|
76
|
+
process.exit(1);
|
|
77
|
+
}
|
|
78
|
+
return pkg;
|
|
79
|
+
} catch (err) {
|
|
80
|
+
if (err instanceof ZodError) {
|
|
81
|
+
for (const issue of err.issues) {
|
|
82
|
+
if (issue.code === "invalid_type") {
|
|
83
|
+
logger.error(["`".concat(formatPath(issue.path), "` "), "in `./package.json` must be of type ".concat(chalk.magenta(issue.expected), " "), "(received ".concat(chalk.magenta(issue.received), ")")].join(""));
|
|
84
|
+
continue;
|
|
85
|
+
}
|
|
86
|
+
logger.error(issue);
|
|
87
|
+
}
|
|
88
|
+
} else {
|
|
89
|
+
logger.error(err);
|
|
90
|
+
}
|
|
91
|
+
process.exit(1);
|
|
92
|
+
}
|
|
93
|
+
}
|
|
94
|
+
function formatPath(segments) {
|
|
95
|
+
return segments.map((s, idx) => {
|
|
96
|
+
if (idx === 0) return s;
|
|
97
|
+
if (typeof s === "number") {
|
|
98
|
+
return "[".concat(s, "]");
|
|
99
|
+
}
|
|
100
|
+
if (s.startsWith(".")) {
|
|
101
|
+
return "[\"".concat(s, "\"]");
|
|
102
|
+
}
|
|
103
|
+
return ".".concat(s);
|
|
104
|
+
}).join("");
|
|
105
|
+
}
|
|
106
|
+
export { loadPkgWithReporting };
|
|
107
|
+
//# sourceMappingURL=loadPkgWithReporting.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"loadPkgWithReporting.js","sources":["../../../src/node/core/pkg/loadPkgWithReporting.ts"],"sourcesContent":["import chalk from 'chalk'\nimport {ZodError} from 'zod'\n\nimport {Logger} from '../../logger'\nimport {assertFirst, assertLast, assertOrder} from './helpers'\nimport {loadPkg} from './loadPkg'\nimport {PackageJSON} from './types'\n\n/** @internal */\nexport async function loadPkgWithReporting(options: {\n cwd: string\n logger: Logger\n}): Promise<PackageJSON> {\n const {cwd, logger} = options\n\n try {\n const pkg = await loadPkg({cwd})\n let shouldError = false\n\n // validate exports\n if (pkg.exports) {\n const _exports = Object.entries(pkg.exports)\n\n for (const [expPath, exp] of _exports) {\n if (typeof exp === 'string') {\n continue\n }\n\n const keys = Object.keys(exp)\n\n if (!assertFirst('types', keys)) {\n shouldError = true\n logger.error(`exports[\"${expPath}\"]: the \\`types\\` property should be the first property`)\n }\n\n if (exp.node) {\n const nodeKeys = Object.keys(exp.node)\n\n if (!assertOrder('module', 'import', nodeKeys)) {\n shouldError = true\n logger.error(\n `exports[\"${expPath}\"]: the \\`node.module\\` property should come before the \\`node.import\\` property`,\n )\n }\n\n if (!assertOrder('import', 'require', nodeKeys)) {\n logger.warn(\n `exports[\"${expPath}\"]: the \\`node.import\\` property should come before the \\`node.require\\` property`,\n )\n }\n\n if (!assertOrder('module', 'require', nodeKeys)) {\n logger.warn(\n `exports[\"${expPath}\"]: the \\`node.module\\` property should come before \\`node.require\\` property`,\n )\n }\n\n if (exp.import && exp.node.import && !assertOrder('node', 'import', keys)) {\n shouldError = true\n logger.error(\n `exports[\"${expPath}\"]: the \\`node\\` property should come before the \\`import\\` property`,\n )\n }\n\n if (exp.module && exp.node.module && !assertOrder('node', 'module', keys)) {\n shouldError = true\n logger.error(\n `exports[\"${expPath}\"]: the \\`node\\` property should come before the \\`module\\` property`,\n )\n }\n\n // If there's a `node.import` property but not a `node.require` we can assume `node.import` is wrapping `import` and `node.module` should be added for bundlers\n if (exp.node.import && !exp.node.require && !exp.node.module) {\n shouldError = true\n logger.error(\n `exports[\"${expPath}\"]: the \\`node.module\\` property should be added so bundlers don't unintentionally try to bundle \\`node.import\\``,\n )\n }\n\n if (\n exp.node.import &&\n !exp.node.require &&\n exp.node.module &&\n exp.import &&\n exp.node.module !== exp.import\n ) {\n shouldError = true\n logger.error(\n `exports[\"${expPath}\"]: the \\`node.module\\` property should match \\`import\\``,\n )\n }\n\n if (exp.require && exp.node.require && exp.require === exp.node.require) {\n shouldError = true\n logger.error(\n `exports[\"${expPath}\"]: the \\`node.require\\` property isn't necessary as it's identical to \\`require\\``,\n )\n } else if (exp.require && exp.node.require && !assertOrder('node', 'require', keys)) {\n shouldError = true\n logger.error(\n `exports[\"${expPath}\"]: the \\`node\\` property should come before the \\`require\\` property`,\n )\n }\n } else {\n if (!assertOrder('import', 'require', keys)) {\n logger.warn(\n `exports[\"${expPath}\"]: the \\`import\\` property should come before the \\`require\\` property`,\n )\n }\n\n if (!assertOrder('module', 'import', keys)) {\n logger.warn(\n `exports[\"${expPath}\"]: the \\`module\\` property should come before \\`import\\` property`,\n )\n }\n }\n\n if (!assertLast('default', keys)) {\n shouldError = true\n logger.error(\n `exports[\"${expPath}\"]: the \\`default\\` property should be the last property`,\n )\n }\n }\n }\n\n if (shouldError) {\n process.exit(1)\n }\n\n return pkg\n } catch (err) {\n if (err instanceof ZodError) {\n for (const issue of err.issues) {\n if (issue.code === 'invalid_type') {\n logger.error(\n [\n `\\`${formatPath(issue.path)}\\` `,\n `in \\`./package.json\\` must be of type ${chalk.magenta(issue.expected)} `,\n `(received ${chalk.magenta(issue.received)})`,\n ].join(''),\n )\n continue\n }\n\n logger.error(issue)\n }\n } else {\n logger.error(err)\n }\n\n process.exit(1)\n }\n}\n\nfunction formatPath(segments: Array<string | number>) {\n return segments\n .map((s, idx) => {\n if (idx === 0) return s\n\n if (typeof s === 'number') {\n return `[${s}]`\n }\n\n if (s.startsWith('.')) {\n return `[\"${s}\"]`\n }\n\n return `.${s}`\n })\n .join('')\n}\n"],"names":["loadPkgWithReporting","options","cwd","logger","pkg","loadPkg","shouldError","exports","_exports","Object","entries","expPath","exp","keys","assertFirst","error","concat","node","nodeKeys","assertOrder","warn","import","module","require","assertLast","process","exit","err","ZodError","issue","issues","code","formatPath","path","chalk","magenta","expected","received","join","segments","map","s","idx","startsWith"],"mappings":"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"}
|
|
@@ -0,0 +1,75 @@
|
|
|
1
|
+
import { isRecord } from '../isRecord.js';
|
|
2
|
+
import { validateExports } from './validateExports.js';
|
|
3
|
+
function parseExports(options) {
|
|
4
|
+
const {
|
|
5
|
+
extMap,
|
|
6
|
+
pkg,
|
|
7
|
+
strict
|
|
8
|
+
} = options;
|
|
9
|
+
const rootExport = {
|
|
10
|
+
_exported: true,
|
|
11
|
+
_path: ".",
|
|
12
|
+
types: pkg.types,
|
|
13
|
+
source: pkg.source || "",
|
|
14
|
+
browser: pkg.browser && {
|
|
15
|
+
source: pkg.source || "",
|
|
16
|
+
require: pkg.main && pkg.browser[pkg.main],
|
|
17
|
+
import: pkg.module && pkg.browser[pkg.module]
|
|
18
|
+
},
|
|
19
|
+
require: pkg.main,
|
|
20
|
+
import: pkg.module,
|
|
21
|
+
default: pkg.module || pkg.main || ""
|
|
22
|
+
};
|
|
23
|
+
const extraExports = [];
|
|
24
|
+
const errors = [];
|
|
25
|
+
if (pkg.exports) {
|
|
26
|
+
if (strict && !pkg.exports["./package.json"]) {
|
|
27
|
+
errors.push('package.json: `exports["./package.json"] must be declared.');
|
|
28
|
+
}
|
|
29
|
+
for (const [exportPath, exportEntry] of Object.entries(pkg.exports)) {
|
|
30
|
+
if (exportPath.endsWith(".json")) {
|
|
31
|
+
if (exportPath === "./package.json") {
|
|
32
|
+
if (exportEntry !== "./package.json") {
|
|
33
|
+
errors.push('package.json: `exports["./package.json"] must be "./package.json".');
|
|
34
|
+
}
|
|
35
|
+
}
|
|
36
|
+
} else if (isRecord(exportEntry)) {
|
|
37
|
+
if (exportPath === ".") {
|
|
38
|
+
if (exportEntry.require && rootExport.require && exportEntry.require !== rootExport.require) {
|
|
39
|
+
errors.push('package.json: mismatch between "main" and "exports.require". These must be equal.');
|
|
40
|
+
}
|
|
41
|
+
if (exportEntry.import && rootExport.import && exportEntry.import !== rootExport.import) {
|
|
42
|
+
errors.push('package.json: mismatch between "module" and "exports.import" These must be equal.');
|
|
43
|
+
}
|
|
44
|
+
if (exportEntry.types && rootExport.types && exportEntry.types !== rootExport.types) {
|
|
45
|
+
errors.push('package.json: mismatch between "types" and "exports.types". These must be equal.');
|
|
46
|
+
}
|
|
47
|
+
if (exportEntry.source && rootExport.source && exportEntry.source !== rootExport.source) {
|
|
48
|
+
errors.push('package.json: mismatch between "source" and "exports.source". These must be equal.');
|
|
49
|
+
}
|
|
50
|
+
Object.assign(rootExport, exportEntry);
|
|
51
|
+
} else {
|
|
52
|
+
const extraExport = {
|
|
53
|
+
_exported: true,
|
|
54
|
+
_path: exportPath,
|
|
55
|
+
...exportEntry
|
|
56
|
+
};
|
|
57
|
+
extraExports.push(extraExport);
|
|
58
|
+
}
|
|
59
|
+
} else {
|
|
60
|
+
errors.push("package.json: exports must be an object");
|
|
61
|
+
}
|
|
62
|
+
}
|
|
63
|
+
}
|
|
64
|
+
const _exports = [rootExport, ...extraExports];
|
|
65
|
+
errors.push(...validateExports(_exports, {
|
|
66
|
+
extMap,
|
|
67
|
+
pkg
|
|
68
|
+
}));
|
|
69
|
+
if (errors.length) {
|
|
70
|
+
throw new Error("\n- " + errors.join("\n- "));
|
|
71
|
+
}
|
|
72
|
+
return _exports;
|
|
73
|
+
}
|
|
74
|
+
export { parseExports };
|
|
75
|
+
//# sourceMappingURL=parseExports.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"parseExports.js","sources":["../../../src/node/core/pkg/parseExports.ts"],"sourcesContent":["import {PkgExport} from '../config'\nimport {isRecord} from '../isRecord'\nimport {PkgExtMap} from './pkgExt'\nimport {PackageJSON} from './types'\nimport {validateExports} from './validateExports'\n\n/** @internal */\nexport function parseExports(options: {\n extMap: PkgExtMap\n pkg: PackageJSON\n strict: boolean\n}): (PkgExport & {_path: string})[] {\n const {extMap, pkg, strict} = options\n\n const rootExport: PkgExport & {_path: string} = {\n _exported: true,\n _path: '.',\n types: pkg.types,\n source: pkg.source || '',\n browser: pkg.browser && {\n source: pkg.source || '',\n require: pkg.main && pkg.browser[pkg.main],\n import: pkg.module && pkg.browser[pkg.module],\n },\n require: pkg.main,\n import: pkg.module,\n default: pkg.module || pkg.main || '',\n }\n\n const extraExports: (PkgExport & {_path: string})[] = []\n\n const errors: string[] = []\n\n if (pkg.exports) {\n if (strict && !pkg.exports['./package.json']) {\n errors.push('package.json: `exports[\"./package.json\"] must be declared.')\n }\n\n for (const [exportPath, exportEntry] of Object.entries(pkg.exports)) {\n if (exportPath.endsWith('.json')) {\n if (exportPath === './package.json') {\n if (exportEntry !== './package.json') {\n errors.push('package.json: `exports[\"./package.json\"] must be \"./package.json\".')\n }\n }\n } else if (isRecord(exportEntry)) {\n if (exportPath === '.') {\n if (\n exportEntry.require &&\n rootExport.require &&\n exportEntry.require !== rootExport.require\n ) {\n errors.push(\n 'package.json: mismatch between \"main\" and \"exports.require\". These must be equal.',\n )\n }\n\n if (exportEntry.import && rootExport.import && exportEntry.import !== rootExport.import) {\n errors.push(\n 'package.json: mismatch between \"module\" and \"exports.import\" These must be equal.',\n )\n }\n\n if (exportEntry.types && rootExport.types && exportEntry.types !== rootExport.types) {\n errors.push(\n 'package.json: mismatch between \"types\" and \"exports.types\". These must be equal.',\n )\n }\n\n if (exportEntry.source && rootExport.source && exportEntry.source !== rootExport.source) {\n errors.push(\n 'package.json: mismatch between \"source\" and \"exports.source\". These must be equal.',\n )\n }\n\n Object.assign(rootExport, exportEntry)\n } else {\n const extraExport: PkgExport & {_path: string} = {\n _exported: true,\n _path: exportPath,\n ...exportEntry,\n }\n\n extraExports.push(extraExport)\n }\n } else {\n errors.push('package.json: exports must be an object')\n }\n }\n }\n\n const _exports = [rootExport, ...extraExports]\n\n errors.push(...validateExports(_exports, {extMap, pkg}))\n\n if (errors.length) {\n throw new Error('\\n- ' + errors.join('\\n- '))\n }\n\n return _exports\n}\n"],"names":["parseExports","options","extMap","pkg","strict","rootExport","_exported","_path","types","source","browser","require","main","import","module","default","extraExports","errors","exports","push","exportPath","exportEntry","Object","entries","endsWith","isRecord","assign","extraExport","_exports","validateExports","length","Error","join"],"mappings":";;AAOO,SAASA,aAAaC,OAIO,EAAA;EAClC,MAAM;IAACC,MAAA;IAAQC,GAAK;IAAAC;EAAA,CAAU,GAAAH,OAAA;EAE9B,MAAMI,UAA0C,GAAA;IAC9CC,SAAW,EAAA,IAAA;IACXC,KAAO,EAAA,GAAA;IACPC,OAAOL,GAAI,CAAAK,KAAA;IACXC,MAAA,EAAQN,IAAIM,MAAU,IAAA,EAAA;IACtBC,OAAA,EAASP,IAAIO,OAAW,IAAA;MACtBD,MAAA,EAAQN,IAAIM,MAAU,IAAA,EAAA;MACtBE,SAASR,GAAI,CAAAS,IAAA,IAAQT,GAAI,CAAAO,OAAA,CAAQP,IAAIS,IAAI,CAAA;MACzCC,QAAQV,GAAI,CAAAW,MAAA,IAAUX,GAAI,CAAAO,OAAA,CAAQP,IAAIW,MAAM;IAC9C,CAAA;IACAH,SAASR,GAAI,CAAAS,IAAA;IACbC,QAAQV,GAAI,CAAAW,MAAA;IACZC,OAAS,EAAAZ,GAAA,CAAIW,MAAU,IAAAX,GAAA,CAAIS,IAAQ,IAAA;EAAA,CACrC;EAEA,MAAMI,eAAgD,EAAC;EAEvD,MAAMC,SAAmB,EAAC;EAE1B,IAAId,IAAIe,OAAS,EAAA;IACf,IAAId,MAAU,IAAA,CAACD,GAAI,CAAAe,OAAA,CAAQ,gBAAgB,CAAG,EAAA;MAC5CD,MAAA,CAAOE,KAAK,4DAA4D,CAAA;IAC1E;IAEW,KAAA,MAAA,CAACC,YAAYC,WAAW,CAAA,IAAKC,OAAOC,OAAQ,CAAApB,GAAA,CAAIe,OAAO,CAAG,EAAA;MAC/D,IAAAE,UAAA,CAAWI,QAAS,CAAA,OAAO,CAAG,EAAA;QAChC,IAAIJ,eAAe,gBAAkB,EAAA;UACnC,IAAIC,gBAAgB,gBAAkB,EAAA;YACpCJ,MAAA,CAAOE,KAAK,oEAAoE,CAAA;UAClF;QACF;MAAA,CACF,MAAA,IAAWM,QAAS,CAAAJ,WAAW,CAAG,EAAA;QAChC,IAAID,eAAe,GAAK,EAAA;UACtB,IACEC,YAAYV,OACZ,IAAAN,UAAA,CAAWM,WACXU,WAAY,CAAAV,OAAA,KAAYN,WAAWM,OACnC,EAAA;YACOM,MAAA,CAAAE,IAAA,CACL,mFAAA,CACF;UACF;UAEA,IAAIE,YAAYR,MAAU,IAAAR,UAAA,CAAWQ,UAAUQ,WAAY,CAAAR,MAAA,KAAWR,WAAWQ,MAAQ,EAAA;YAChFI,MAAA,CAAAE,IAAA,CACL,mFAAA,CACF;UACF;UAEA,IAAIE,YAAYb,KAAS,IAAAH,UAAA,CAAWG,SAASa,WAAY,CAAAb,KAAA,KAAUH,WAAWG,KAAO,EAAA;YAC5ES,MAAA,CAAAE,IAAA,CACL,kFAAA,CACF;UACF;UAEA,IAAIE,YAAYZ,MAAU,IAAAJ,UAAA,CAAWI,UAAUY,WAAY,CAAAZ,MAAA,KAAWJ,WAAWI,MAAQ,EAAA;YAChFQ,MAAA,CAAAE,IAAA,CACL,oFAAA,CACF;UACF;UAEOG,MAAA,CAAAI,MAAA,CAAOrB,YAAYgB,WAAW,CAAA;QAAA,CAChC,MAAA;UACL,MAAMM,WAA2C,GAAA;YAC/CrB,SAAW,EAAA,IAAA;YACXC,KAAO,EAAAa,UAAA;YACP,GAAGC;UAAA,CACL;UAEAL,YAAA,CAAaG,KAAKQ,WAAW,CAAA;QAC/B;MAAA,CACK,MAAA;QACLV,MAAA,CAAOE,KAAK,yCAAyC,CAAA;MACvD;IACF;EACF;EAEA,MAAMS,QAAW,GAAA,CAACvB,UAAY,EAAA,GAAGW,YAAY,CAAA;EAEtCC,MAAA,CAAAE,IAAA,CAAK,GAAGU,eAAgB,CAAAD,QAAA,EAAU;IAAC1B,MAAQ;IAAAC;EAAI,CAAA,CAAC,CAAA;EAEvD,IAAIc,OAAOa,MAAQ,EAAA;IACjB,MAAM,IAAIC,KAAM,CAAA,MAAA,GAASd,MAAO,CAAAe,IAAA,CAAK,MAAM,CAAC,CAAA;EAC9C;EAEO,OAAAJ,QAAA;AACT;"}
|
|
@@ -0,0 +1,29 @@
|
|
|
1
|
+
const DEFAULT_PKG_EXT_MAP = {
|
|
2
|
+
// pkg.type: "commonjs"
|
|
3
|
+
commonjs: {
|
|
4
|
+
commonjs: ".js",
|
|
5
|
+
esm: ".mjs"
|
|
6
|
+
},
|
|
7
|
+
// pkg.type: "module"
|
|
8
|
+
module: {
|
|
9
|
+
commonjs: ".cjs",
|
|
10
|
+
esm: ".js"
|
|
11
|
+
}
|
|
12
|
+
};
|
|
13
|
+
function getPkgExtMap(options) {
|
|
14
|
+
const {
|
|
15
|
+
legacyExports
|
|
16
|
+
} = options;
|
|
17
|
+
const ret = {
|
|
18
|
+
...DEFAULT_PKG_EXT_MAP
|
|
19
|
+
};
|
|
20
|
+
if (legacyExports) {
|
|
21
|
+
ret["commonjs"] = {
|
|
22
|
+
commonjs: ".js",
|
|
23
|
+
esm: ".esm.js"
|
|
24
|
+
};
|
|
25
|
+
}
|
|
26
|
+
return ret;
|
|
27
|
+
}
|
|
28
|
+
export { DEFAULT_PKG_EXT_MAP, getPkgExtMap };
|
|
29
|
+
//# sourceMappingURL=pkgExt.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"pkgExt.js","sources":["../../../src/node/core/pkg/pkgExt.ts"],"sourcesContent":["/** @internal */\nexport interface PkgExtMap {\n commonjs: {commonjs: string; esm: string}\n module: {commonjs: string; esm: string}\n}\n\n/** @internal */\nexport const DEFAULT_PKG_EXT_MAP: PkgExtMap = {\n // pkg.type: \"commonjs\"\n commonjs: {\n commonjs: '.js',\n esm: '.mjs',\n },\n\n // pkg.type: \"module\"\n module: {\n commonjs: '.cjs',\n esm: '.js',\n },\n}\n\n/** @internal */\nexport function getPkgExtMap(options: {legacyExports: boolean}): PkgExtMap {\n const {legacyExports} = options\n\n const ret = {...DEFAULT_PKG_EXT_MAP}\n\n // Fall back to legacy file extensions for package.json with `\"type\": \"commonjs\"`\n // NOTE: Not supported by Node 14+ and will be removed in a future version\n if (legacyExports) {\n ret['commonjs'] = {\n commonjs: '.js',\n esm: '.esm.js',\n }\n }\n\n return ret\n}\n"],"names":["DEFAULT_PKG_EXT_MAP","commonjs","esm","module","getPkgExtMap","options","legacyExports","ret"],"mappings":"AAOO,MAAMA,mBAAiC,GAAA;EAAA;EAE5CC,QAAU,EAAA;IACRA,QAAU,EAAA,KAAA;IACVC,GAAK,EAAA;EACP,CAAA;EAAA;EAGAC,MAAQ,EAAA;IACNF,QAAU,EAAA,MAAA;IACVC,GAAK,EAAA;EACP;AACF,CAAA;AAGO,SAASE,aAAaC,OAA8C,EAAA;EACnE,MAAA;IAACC;EAAiB,CAAA,GAAAD,OAAA;EAElB,MAAAE,GAAA,GAAM;IAAC,GAAGP;GAAmB;EAInC,IAAIM,aAAe,EAAA;IACjBC,GAAA,CAAI,UAAU,CAAI,GAAA;MAChBN,QAAU,EAAA,KAAA;MACVC,GAAK,EAAA;IAAA,CACP;EACF;EAEO,OAAAK,GAAA;AACT;"}
|
|
@@ -0,0 +1,19 @@
|
|
|
1
|
+
function validateExports(_exports, options) {
|
|
2
|
+
const {
|
|
3
|
+
extMap,
|
|
4
|
+
pkg
|
|
5
|
+
} = options;
|
|
6
|
+
const ext = extMap[pkg.type || "commonjs"];
|
|
7
|
+
const errors = [];
|
|
8
|
+
for (const exp of _exports) {
|
|
9
|
+
if (exp.require && !exp.require.endsWith(ext.commonjs)) {
|
|
10
|
+
errors.push("package.json with `type: \"".concat(pkg.type, "\"` - `exports[\"").concat(exp._path, "\"].require` must end with \"").concat(ext.commonjs, "\""));
|
|
11
|
+
}
|
|
12
|
+
if (exp.import && !exp.import.endsWith(ext.esm)) {
|
|
13
|
+
errors.push("package.json with `type: \"".concat(pkg.type, "\"` - `exports[\"").concat(exp._path, "\"].import` must end with \"").concat(ext.esm, "\""));
|
|
14
|
+
}
|
|
15
|
+
}
|
|
16
|
+
return errors;
|
|
17
|
+
}
|
|
18
|
+
export { validateExports };
|
|
19
|
+
//# sourceMappingURL=validateExports.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"validateExports.js","sources":["../../../src/node/core/pkg/validateExports.ts"],"sourcesContent":["import {PkgExport} from '../config'\nimport {PkgExtMap} from './pkgExt'\nimport {PackageJSON} from './types'\n\nexport function validateExports(\n _exports: (PkgExport & {_path: string})[],\n options: {extMap: PkgExtMap; pkg: PackageJSON},\n): string[] {\n const {extMap, pkg} = options\n const ext = extMap[pkg.type || 'commonjs']\n\n const errors: string[] = []\n\n for (const exp of _exports) {\n if (exp.require && !exp.require.endsWith(ext.commonjs)) {\n errors.push(\n `package.json with \\`type: \"${pkg.type}\"\\` - \\`exports[\"${exp._path}\"].require\\` must end with \"${ext.commonjs}\"`,\n )\n }\n\n if (exp.import && !exp.import.endsWith(ext.esm)) {\n errors.push(\n `package.json with \\`type: \"${pkg.type}\"\\` - \\`exports[\"${exp._path}\"].import\\` must end with \"${ext.esm}\"`,\n )\n }\n }\n\n return errors\n}\n"],"names":["validateExports","_exports","options","extMap","pkg","ext","type","errors","exp","require","endsWith","commonjs","push","concat","_path","import","esm"],"mappings":"AAIgB,SAAAA,eAAAA,CACdC,UACAC,OACU,EAAA;EACJ,MAAA;IAACC,MAAQ;IAAAC;EAAO,CAAA,GAAAF,OAAA;EACtB,MAAMG,GAAM,GAAAF,MAAA,CAAOC,GAAI,CAAAE,IAAA,IAAQ,UAAU,CAAA;EAEzC,MAAMC,SAAmB,EAAC;EAE1B,KAAA,MAAWC,OAAOP,QAAU,EAAA;IACtB,IAAAO,GAAA,CAAIC,WAAW,CAACD,GAAA,CAAIC,QAAQC,QAAS,CAAAL,GAAA,CAAIM,QAAQ,CAAG,EAAA;MAC/CJ,MAAA,CAAAK,IAAA,+BAAAC,MAAA,CACyBT,IAAIE,IAAI,uBAAAO,MAAA,CAAoBL,IAAIM,KAAK,mCAAAD,MAAA,CAA+BR,IAAIM,QAAQ,OAAA,CAChH;IACF;IAEI,IAAAH,GAAA,CAAIO,UAAU,CAACP,GAAA,CAAIO,OAAOL,QAAS,CAAAL,GAAA,CAAIW,GAAG,CAAG,EAAA;MACxCT,MAAA,CAAAK,IAAA,+BAAAC,MAAA,CACyBT,IAAIE,IAAI,uBAAAO,MAAA,CAAoBL,IAAIM,KAAK,kCAAAD,MAAA,CAA8BR,IAAIW,GAAG,OAAA,CAC1G;IACF;EACF;EAEO,OAAAT,MAAA;AACT;"}
|
|
@@ -0,0 +1,49 @@
|
|
|
1
|
+
import { z } from 'zod';
|
|
2
|
+
import { assertFirst } from './helpers.js';
|
|
3
|
+
const pkgSchema = z.object({
|
|
4
|
+
type: z.optional(z.enum(["commonjs", "module"])),
|
|
5
|
+
name: z.string(),
|
|
6
|
+
version: z.string(),
|
|
7
|
+
license: z.string(),
|
|
8
|
+
bin: z.optional(z.record(z.string())),
|
|
9
|
+
dependencies: z.optional(z.record(z.string())),
|
|
10
|
+
devDependencies: z.optional(z.record(z.string())),
|
|
11
|
+
peerDependencies: z.optional(z.record(z.string())),
|
|
12
|
+
source: z.optional(z.string()),
|
|
13
|
+
main: z.optional(z.string()),
|
|
14
|
+
browser: z.optional(z.record(z.string())),
|
|
15
|
+
module: z.optional(z.string()),
|
|
16
|
+
types: z.optional(z.string()),
|
|
17
|
+
exports: z.optional(z.record(z.union([z.custom(val => /^\.\/.*\.json$/.test(val)), z.object({
|
|
18
|
+
types: z.optional(z.string()),
|
|
19
|
+
source: z.string(),
|
|
20
|
+
browser: z.optional(z.object({
|
|
21
|
+
source: z.string(),
|
|
22
|
+
import: z.optional(z.string()),
|
|
23
|
+
require: z.optional(z.string())
|
|
24
|
+
})),
|
|
25
|
+
module: z.optional(z.string()),
|
|
26
|
+
node: z.optional(z.object({
|
|
27
|
+
source: z.optional(z.string()),
|
|
28
|
+
import: z.optional(z.string()),
|
|
29
|
+
require: z.optional(z.string())
|
|
30
|
+
})),
|
|
31
|
+
import: z.optional(z.string()),
|
|
32
|
+
require: z.optional(z.string()),
|
|
33
|
+
default: z.string()
|
|
34
|
+
}).superRefine((val, ctx) => {
|
|
35
|
+
const keys = Object.keys(val);
|
|
36
|
+
if (!assertFirst("types", keys)) {
|
|
37
|
+
ctx.addIssue({
|
|
38
|
+
code: z.ZodIssueCode.custom,
|
|
39
|
+
message: "the `types` property should be the first property"
|
|
40
|
+
});
|
|
41
|
+
}
|
|
42
|
+
})]))),
|
|
43
|
+
browserslist: z.optional(z.array(z.string()))
|
|
44
|
+
});
|
|
45
|
+
function validatePkg(input) {
|
|
46
|
+
return pkgSchema.parse(input);
|
|
47
|
+
}
|
|
48
|
+
export { validatePkg };
|
|
49
|
+
//# sourceMappingURL=validatePkg.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"validatePkg.js","sources":["../../../src/node/core/pkg/validatePkg.ts"],"sourcesContent":["import {z} from 'zod'\n\nimport {PackageJSON} from './types'\nimport { assertFirst } from './helpers';\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.object({\n types: z.optional(z.string()),\n source: 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 module: z.optional(z.string()),\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 }).superRefine((val, ctx) => {\n const keys = Object.keys(val)\n\n if (!assertFirst('types', keys)) {\n ctx.addIssue({\n code: z.ZodIssueCode.custom,\n message:`the \\`types\\` property should be the first property`,\n });\n }\n\n // if (val.length > 3) {\n // ctx.addIssue({\n // code: z.ZodIssueCode.too_big,\n // maximum: 3,\n // type: \"array\",\n // inclusive: true,\n // message: \"Too many items 😡\",\n // });\n // }\n\n // if (val.length !== new Set(val).size) {\n // ctx.addIssue({\n // code: z.ZodIssueCode.custom,\n // message: `No duplicates allowed.`,\n // });\n // }\n }),\n ]),\n ),\n ),\n browserslist: z.optional(z.array(z.string())),\n})\n\nexport function validatePkg(input: unknown): PackageJSON {\n return pkgSchema.parse(input)\n}\n"],"names":["pkgSchema","z","object","type","optional","enum","name","string","version","license","bin","record","dependencies","devDependencies","peerDependencies","source","main","browser","module","types","exports","union","custom","val","test","import","require","node","default","superRefine","ctx","keys","Object","assertFirst","addIssue","code","ZodIssueCode","message","browserslist","array","validatePkg","input","parse"],"mappings":"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"}
|
|
@@ -0,0 +1,59 @@
|
|
|
1
|
+
import { writeFile } from 'fs/promises';
|
|
2
|
+
import { mkdirp } from 'mkdirp';
|
|
3
|
+
import { relative, resolve, dirname } from 'path';
|
|
4
|
+
import prompts from 'prompts';
|
|
5
|
+
const promptsTypes = {
|
|
6
|
+
string: "text"
|
|
7
|
+
};
|
|
8
|
+
async function createFromTemplate(options) {
|
|
9
|
+
const {
|
|
10
|
+
cwd,
|
|
11
|
+
logger,
|
|
12
|
+
packagePath,
|
|
13
|
+
template: templateOrResolver
|
|
14
|
+
} = options;
|
|
15
|
+
const template = typeof templateOrResolver === "function" ? await templateOrResolver({
|
|
16
|
+
cwd,
|
|
17
|
+
logger,
|
|
18
|
+
packagePath
|
|
19
|
+
}) : templateOrResolver;
|
|
20
|
+
logger.log("create new package at", relative(cwd, packagePath));
|
|
21
|
+
const templateOptions = {};
|
|
22
|
+
for (const templateOption of template.options) {
|
|
23
|
+
const templateValidate = templateOption.validate;
|
|
24
|
+
const res = await prompts({
|
|
25
|
+
type: promptsTypes[templateOption.type],
|
|
26
|
+
name: templateOption.name,
|
|
27
|
+
message: templateOption.description,
|
|
28
|
+
validate: templateValidate ? prev => templateValidate(prev) : void 0,
|
|
29
|
+
initial: typeof templateOption.initial === "function" ? templateOption.initial(templateOptions) : templateOption.initial
|
|
30
|
+
}, {
|
|
31
|
+
onCancel: () => process.exit(0)
|
|
32
|
+
});
|
|
33
|
+
templateOptions[templateOption.name] = templateOption.parse ? templateOption.parse(res[templateOption.name]) : res[templateOption.name];
|
|
34
|
+
}
|
|
35
|
+
const features = {};
|
|
36
|
+
for (const templateFeature of template.features) {
|
|
37
|
+
const res = templateFeature.optional ? await prompts({
|
|
38
|
+
type: "confirm",
|
|
39
|
+
name: "confirm",
|
|
40
|
+
message: "use ".concat(templateFeature.name, "?"),
|
|
41
|
+
initial: templateFeature.initial
|
|
42
|
+
}, {
|
|
43
|
+
onCancel: () => process.exit(0)
|
|
44
|
+
}) : void 0;
|
|
45
|
+
features[templateFeature.name] = (res == null ? void 0 : res.confirm) || !templateFeature.optional;
|
|
46
|
+
}
|
|
47
|
+
const files = await template.getFiles(templateOptions, features);
|
|
48
|
+
files.sort((a, b) => {
|
|
49
|
+
return a.name.localeCompare(b.name);
|
|
50
|
+
});
|
|
51
|
+
for (const file of files) {
|
|
52
|
+
const filePath = resolve(packagePath, file.name);
|
|
53
|
+
await mkdirp(dirname(filePath));
|
|
54
|
+
await writeFile(filePath, file.contents.trim() + "\n");
|
|
55
|
+
logger.success("wrote ".concat(relative(cwd, filePath)));
|
|
56
|
+
}
|
|
57
|
+
}
|
|
58
|
+
export { createFromTemplate };
|
|
59
|
+
//# sourceMappingURL=createFromTemplate.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"createFromTemplate.js","sources":["../../../src/node/core/template/createFromTemplate.ts"],"sourcesContent":["import {writeFile} from 'fs/promises'\nimport {mkdirp} from 'mkdirp'\nimport {dirname, relative, resolve} from 'path'\nimport prompts from 'prompts'\n\nimport {Logger} from '../../logger'\nimport {PkgTemplate} from './types'\n\nconst promptsTypes = {\n string: 'text' as const,\n}\n\n/** @internal */\nexport async function createFromTemplate(options: {\n cwd: string\n logger: Logger\n packagePath: string\n template: PkgTemplate\n}): Promise<void> {\n const {cwd, logger, packagePath, template: templateOrResolver} = options\n\n const template =\n typeof templateOrResolver === 'function'\n ? await templateOrResolver({cwd, logger, packagePath})\n : templateOrResolver\n\n logger.log('create new package at', relative(cwd, packagePath))\n\n const templateOptions: Record<string, string> = {}\n\n for (const templateOption of template.options) {\n const templateValidate = templateOption.validate\n\n const res = await prompts(\n {\n type: promptsTypes[templateOption.type],\n name: templateOption.name,\n message: templateOption.description,\n validate: templateValidate ? (prev) => templateValidate(prev) : undefined,\n initial:\n typeof templateOption.initial === 'function'\n ? templateOption.initial(templateOptions)\n : templateOption.initial,\n },\n {onCancel: () => process.exit(0)},\n )\n\n templateOptions[templateOption.name] = templateOption.parse\n ? templateOption.parse(res[templateOption.name])\n : res[templateOption.name]\n }\n\n const features: Record<string, boolean> = {}\n\n for (const templateFeature of template.features) {\n const res = templateFeature.optional\n ? await prompts(\n {\n type: 'confirm',\n name: 'confirm',\n message: `use ${templateFeature.name}?`,\n initial: templateFeature.initial,\n },\n {onCancel: () => process.exit(0)},\n )\n : undefined\n\n features[templateFeature.name] = res?.confirm || !templateFeature.optional\n }\n\n const files = await template.getFiles(templateOptions, features)\n\n files.sort((a, b) => {\n return a.name.localeCompare(b.name)\n })\n\n for (const file of files) {\n const filePath = resolve(packagePath, file.name)\n\n await mkdirp(dirname(filePath))\n await writeFile(filePath, file.contents.trim() + '\\n')\n\n logger.success(`wrote ${relative(cwd, filePath)}`)\n }\n}\n"],"names":["promptsTypes","string","createFromTemplate","options","cwd","logger","packagePath","template","templateOrResolver","log","relative","templateOptions","templateOption","templateValidate","validate","res","prompts","type","name","message","description","prev","initial","onCancel","process","exit","parse","features","templateFeature","optional","concat","confirm","files","getFiles","sort","a","b","localeCompare","file","filePath","resolve","mkdirp","dirname","writeFile","contents","trim","success"],"mappings":"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"}
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"define.js","sources":["../../../src/node/core/template/define.ts"],"sourcesContent":["import {PkgTemplateOption} from './types'\n\n/** @public */\nexport function defineTemplateOption<T>(option: PkgTemplateOption<T>): PkgTemplateOption<T> {\n return option\n}\n"],"names":["defineTemplateOption","option"],"mappings":"AAGO,SAASA,qBAAwBC,MAAoD,EAAA;EACnF,OAAAA,MAAA;AACT;"}
|
|
@@ -0,0 +1,15 @@
|
|
|
1
|
+
import ts from 'typescript';
|
|
2
|
+
async function loadTSConfig(options) {
|
|
3
|
+
const {
|
|
4
|
+
cwd,
|
|
5
|
+
tsconfigPath
|
|
6
|
+
} = options;
|
|
7
|
+
const configPath = ts.findConfigFile(cwd, ts.sys.fileExists, tsconfigPath);
|
|
8
|
+
if (!configPath) {
|
|
9
|
+
throw new Error("could not find a valid '".concat(tsconfigPath, "'"));
|
|
10
|
+
}
|
|
11
|
+
const configFile = ts.readConfigFile(configPath, ts.sys.readFile);
|
|
12
|
+
return ts.parseJsonConfigFileContent(configFile.config, ts.sys, cwd);
|
|
13
|
+
}
|
|
14
|
+
export { loadTSConfig };
|
|
15
|
+
//# sourceMappingURL=loadTSConfig.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"loadTSConfig.js","sources":["../../../src/node/core/ts/loadTSConfig.ts"],"sourcesContent":["import ts from 'typescript'\n\n/** @internal */\nexport async function loadTSConfig(options: {\n cwd: string\n tsconfigPath: string\n}): Promise<ts.ParsedCommandLine> {\n const {cwd, tsconfigPath} = options\n\n const configPath = ts.findConfigFile(cwd, ts.sys.fileExists, tsconfigPath)\n\n if (!configPath) {\n throw new Error(`could not find a valid '${tsconfigPath}'`)\n }\n\n const configFile = ts.readConfigFile(configPath, ts.sys.readFile)\n\n return ts.parseJsonConfigFileContent(configFile.config, ts.sys, cwd)\n}\n"],"names":["loadTSConfig","options","cwd","tsconfigPath","configPath","ts","findConfigFile","sys","fileExists","Error","concat","configFile","readConfigFile","readFile","parseJsonConfigFileContent","config"],"mappings":";AAGA,eAAsBA,aAAaC,OAGD,EAAA;EAC1B,MAAA;IAACC,GAAK;IAAAC;EAAgB,CAAA,GAAAF,OAAA;EAE5B,MAAMG,aAAaC,EAAG,CAAAC,cAAA,CAAeJ,KAAKG,EAAG,CAAAE,GAAA,CAAIC,YAAYL,YAAY,CAAA;EAEzE,IAAI,CAACC,UAAY,EAAA;IACf,MAAM,IAAIK,KAAA,4BAAAC,MAAA,CAAiCP,YAAY,MAAG,CAAA;EAC5D;EAEA,MAAMQ,aAAaN,EAAG,CAAAO,cAAA,CAAeR,UAAY,EAAAC,EAAA,CAAGE,IAAIM,QAAQ,CAAA;EAEhE,OAAOR,GAAGS,0BAA2B,CAAAH,UAAA,CAAWI,MAAQ,EAAAV,EAAA,CAAGE,KAAKL,GAAG,CAAA;AACrE;"}
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"fileExists.js","sources":["../src/node/fileExists.ts"],"sourcesContent":["import {statSync} from '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":["fileExists","filePath","statSync","_"],"mappings":";AAGO,SAASA,WAAWC,QAA2B,EAAA;EAChD,IAAA;IACFC,QAAA,CAASD,QAAQ,CAAA;IAEV,OAAA,IAAA;WACAE,CAAG,EAAA;IACH,OAAA,KAAA;EACT;AACF;"}
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"getFilesize.js","sources":["../src/node/getFilesize.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"],"names":["getFilesize","file","stats","statSync","prettyBytes","size"],"mappings":";;AAGO,SAASA,YAAYC,IAAsB,EAAA;EAC1C,MAAAC,KAAA,GAAQC,SAASF,IAAI,CAAA;EAEpB,OAAAG,WAAA,CAAYF,MAAMG,IAAI,CAAA;AAC/B;"}
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"globFiles.js","sources":["../src/node/globFiles.ts"],"sourcesContent":["import globby from 'globby'\nimport path from 'path'\n\nexport function globFiles(patterns: string[]): Promise<string[]> {\n return globby(patterns.map((pattern) => pattern.split(path.sep).join(path.posix.sep)))\n}\n"],"names":["globFiles","patterns","globby","map","pattern","split","path","sep","join","posix"],"mappings":";;AAGO,SAASA,UAAUC,QAAuC,EAAA;EAC/D,OAAOC,MAAO,CAAAD,QAAA,CAASE,GAAI,CAACC,WAAYA,OAAQ,CAAAC,KAAA,CAAMC,IAAK,CAAAC,GAAG,EAAEC,IAAK,CAAAF,IAAA,CAAKG,KAAM,CAAAF,GAAG,CAAC,CAAC,CAAA;AACvF;"}
|
package/dist/index.cjs
CHANGED
|
@@ -3,40 +3,54 @@
|
|
|
3
3
|
Object.defineProperty(exports, '__esModule', {
|
|
4
4
|
value: true
|
|
5
5
|
});
|
|
6
|
-
var build = require('./
|
|
7
|
-
var check = require('./
|
|
8
|
-
var
|
|
9
|
-
var
|
|
10
|
-
var
|
|
11
|
-
var
|
|
12
|
-
var
|
|
13
|
-
|
|
14
|
-
|
|
15
|
-
|
|
6
|
+
var build = require('./src/node/build.cjs');
|
|
7
|
+
var check = require('./src/node/check.cjs');
|
|
8
|
+
var defineConfig = require('./src/node/core/config/defineConfig.cjs');
|
|
9
|
+
var loadConfig = require('./src/node/core/config/loadConfig.cjs');
|
|
10
|
+
var resolveConfigProperty = require('./src/node/core/config/resolveConfigProperty.cjs');
|
|
11
|
+
var defaults = require('./src/node/core/defaults.cjs');
|
|
12
|
+
var isRecord = require('./src/node/core/isRecord.cjs');
|
|
13
|
+
var loadPkg = require('./src/node/core/pkg/loadPkg.cjs');
|
|
14
|
+
var loadPkgWithReporting = require('./src/node/core/pkg/loadPkgWithReporting.cjs');
|
|
15
|
+
var parseExports = require('./src/node/core/pkg/parseExports.cjs');
|
|
16
|
+
var pkgExt = require('./src/node/core/pkg/pkgExt.cjs');
|
|
17
|
+
var createFromTemplate = require('./src/node/core/template/createFromTemplate.cjs');
|
|
18
|
+
var define = require('./src/node/core/template/define.cjs');
|
|
19
|
+
var loadTSConfig = require('./src/node/core/ts/loadTSConfig.cjs');
|
|
20
|
+
var init = require('./src/node/init.cjs');
|
|
21
|
+
var logger = require('./src/node/logger.cjs');
|
|
22
|
+
var resolveBuildTasks = require('./src/node/resolveBuildTasks.cjs');
|
|
23
|
+
var index = require('./src/node/tasks/index.cjs');
|
|
24
|
+
var watch = require('./src/node/watch.cjs');
|
|
25
|
+
var dtsTask = require('./src/node/tasks/dts/dtsTask.cjs');
|
|
26
|
+
var dtsWatchTask = require('./src/node/tasks/dts/dtsWatchTask.cjs');
|
|
27
|
+
var getExtractMessagesConfig = require('./src/node/tasks/dts/getExtractMessagesConfig.cjs');
|
|
28
|
+
var rollupTask = require('./src/node/tasks/rollup/rollupTask.cjs');
|
|
29
|
+
var rollupWatchTask = require('./src/node/tasks/rollup/rollupWatchTask.cjs');
|
|
16
30
|
exports.build = build.build;
|
|
17
|
-
exports.resolveBuildTasks = build.resolveBuildTasks;
|
|
18
31
|
exports.check = check.check;
|
|
19
|
-
exports.
|
|
20
|
-
exports.
|
|
21
|
-
exports.
|
|
22
|
-
exports.
|
|
23
|
-
exports.
|
|
24
|
-
exports.
|
|
25
|
-
exports.
|
|
26
|
-
exports.parseExports =
|
|
27
|
-
exports.
|
|
28
|
-
exports.
|
|
29
|
-
exports.
|
|
30
|
-
exports.
|
|
31
|
-
exports.
|
|
32
|
+
exports.defineConfig = defineConfig.defineConfig;
|
|
33
|
+
exports.loadConfig = loadConfig.loadConfig;
|
|
34
|
+
exports.resolveConfigProperty = resolveConfigProperty.resolveConfigProperty;
|
|
35
|
+
exports.DEFAULT_BROWSERSLIST_QUERY = defaults.DEFAULT_BROWSERSLIST_QUERY;
|
|
36
|
+
exports.isRecord = isRecord.isRecord;
|
|
37
|
+
exports.loadPkg = loadPkg.loadPkg;
|
|
38
|
+
exports.loadPkgWithReporting = loadPkgWithReporting.loadPkgWithReporting;
|
|
39
|
+
exports.parseExports = parseExports.parseExports;
|
|
40
|
+
exports.DEFAULT_PKG_EXT_MAP = pkgExt.DEFAULT_PKG_EXT_MAP;
|
|
41
|
+
exports.getPkgExtMap = pkgExt.getPkgExtMap;
|
|
42
|
+
exports.createFromTemplate = createFromTemplate.createFromTemplate;
|
|
43
|
+
exports.defineTemplateOption = define.defineTemplateOption;
|
|
44
|
+
exports.loadTSConfig = loadTSConfig.loadTSConfig;
|
|
32
45
|
exports.init = init.init;
|
|
46
|
+
exports.createLogger = logger.createLogger;
|
|
47
|
+
exports.resolveBuildTasks = resolveBuildTasks.resolveBuildTasks;
|
|
33
48
|
exports.buildTaskHandlers = index.buildTaskHandlers;
|
|
34
|
-
exports.dtsTask = index.dtsTask;
|
|
35
|
-
exports.dtsWatchTask = index.dtsWatchTask;
|
|
36
|
-
exports.getExtractMessagesConfig = index.getExtractMessagesConfig;
|
|
37
|
-
exports.rollupTask = index.rollupTask;
|
|
38
|
-
exports.rollupWatchTask = index.rollupWatchTask;
|
|
39
49
|
exports.watchTaskHandlers = index.watchTaskHandlers;
|
|
40
50
|
exports.watch = watch.watch;
|
|
41
|
-
exports.
|
|
51
|
+
exports.dtsTask = dtsTask.dtsTask;
|
|
52
|
+
exports.dtsWatchTask = dtsWatchTask.dtsWatchTask;
|
|
53
|
+
exports.getExtractMessagesConfig = getExtractMessagesConfig.getExtractMessagesConfig;
|
|
54
|
+
exports.rollupTask = rollupTask.rollupTask;
|
|
55
|
+
exports.rollupWatchTask = rollupWatchTask.rollupWatchTask;
|
|
42
56
|
//# sourceMappingURL=index.cjs.map
|
package/dist/index.cjs.map
CHANGED
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"index.cjs","sources":[
|
|
1
|
+
{"version":3,"file":"index.cjs","sources":[],"sourcesContent":[],"names":[],"mappings":";;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;"}
|
package/dist/index.d.ts
CHANGED
|
@@ -218,14 +218,16 @@ export declare interface PackageJSON {
|
|
|
218
218
|
types?: string
|
|
219
219
|
browser?: {
|
|
220
220
|
source: string
|
|
221
|
-
require?: string
|
|
222
221
|
import?: string
|
|
222
|
+
require?: string
|
|
223
223
|
}
|
|
224
224
|
node?: {
|
|
225
225
|
source?: string
|
|
226
|
-
|
|
226
|
+
module?: string
|
|
227
227
|
import?: string
|
|
228
|
+
require?: string
|
|
228
229
|
}
|
|
230
|
+
module?: string
|
|
229
231
|
import?: string
|
|
230
232
|
require?: string
|
|
231
233
|
default: string
|