smartbundle 0.12.3 → 0.13.0-alpha.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/__compiled__/cjs/src/PrettyErrors.d.ts +2 -0
- package/__compiled__/cjs/src/PrettyErrors.js +6 -0
- package/__compiled__/cjs/src/PrettyErrors.js.map +1 -0
- package/__compiled__/cjs/src/createViteConfig.d.ts +2 -1
- package/__compiled__/cjs/src/createViteConfig.js +8 -35
- package/__compiled__/cjs/src/createViteConfig.js.map +1 -1
- package/__compiled__/cjs/src/detectModules.d.ts +14 -2
- package/__compiled__/cjs/src/detectModules.js +58 -9
- package/__compiled__/cjs/src/detectModules.js.map +1 -1
- package/__compiled__/cjs/src/index.d.ts +6 -2
- package/__compiled__/cjs/src/index.js +20 -3
- package/__compiled__/cjs/src/index.js.map +1 -1
- package/__compiled__/cjs/src/plugins/babel/index.js +2 -6
- package/__compiled__/cjs/src/plugins/babel/index.js.map +1 -1
- package/__compiled__/cjs/src/plugins/imports/ImportError.d.ts +7 -0
- package/__compiled__/cjs/src/plugins/imports/ImportError.js +35 -0
- package/__compiled__/cjs/src/plugins/imports/ImportError.js.map +1 -0
- package/__compiled__/cjs/src/plugins/imports/index.d.ts +3 -0
- package/__compiled__/cjs/src/plugins/imports/index.js +89 -0
- package/__compiled__/cjs/src/plugins/imports/index.js.map +1 -0
- package/__compiled__/cjs/src/promiseSettledResultErrors.js +1 -1
- package/__compiled__/cjs/src/promiseSettledResultErrors.js.map +1 -1
- package/__compiled__/cjs/src/run.js +13 -4
- package/__compiled__/cjs/src/run.js.map +1 -1
- package/__compiled__/cjs/src/tasks/buildTypesTask/callTypescript.d.ts +2 -1
- package/__compiled__/cjs/src/tasks/buildTypesTask/callTypescript.js +13 -34
- package/__compiled__/cjs/src/tasks/buildTypesTask/callTypescript.js.map +1 -1
- package/__compiled__/cjs/src/tasks/buildTypesTask/findTypingsNames.d.ts +2 -1
- package/__compiled__/cjs/src/tasks/buildTypesTask/findTypingsNames.js +12 -30
- package/__compiled__/cjs/src/tasks/buildTypesTask/findTypingsNames.js.map +1 -1
- package/__compiled__/cjs/src/tasks/buildTypesTask/findTypingsPackages.d.ts +2 -1
- package/__compiled__/cjs/src/tasks/buildTypesTask/findTypingsPackages.js +13 -13
- package/__compiled__/cjs/src/tasks/buildTypesTask/findTypingsPackages.js.map +1 -1
- package/__compiled__/cjs/src/tasks/viteTask.d.ts +1 -11
- package/__compiled__/cjs/src/tasks/viteTask.js +11 -5
- package/__compiled__/cjs/src/tasks/viteTask.js.map +1 -1
- package/__compiled__/esm/src/PrettyErrors.d.mts +2 -0
- package/__compiled__/esm/src/PrettyErrors.mjs +6 -0
- package/__compiled__/esm/src/PrettyErrors.mjs.map +1 -0
- package/__compiled__/esm/src/createViteConfig.d.mts +2 -1
- package/__compiled__/esm/src/createViteConfig.mjs +4 -31
- package/__compiled__/esm/src/createViteConfig.mjs.map +1 -1
- package/__compiled__/esm/src/detectModules.d.mts +14 -2
- package/__compiled__/esm/src/detectModules.mjs +59 -10
- package/__compiled__/esm/src/detectModules.mjs.map +1 -1
- package/__compiled__/esm/src/index.d.mts +6 -2
- package/__compiled__/esm/src/index.mjs +20 -3
- package/__compiled__/esm/src/index.mjs.map +1 -1
- package/__compiled__/esm/src/plugins/babel/index.mjs +2 -6
- package/__compiled__/esm/src/plugins/babel/index.mjs.map +1 -1
- package/__compiled__/esm/src/plugins/imports/ImportError.d.mts +7 -0
- package/__compiled__/esm/src/plugins/imports/ImportError.mjs +35 -0
- package/__compiled__/esm/src/plugins/imports/ImportError.mjs.map +1 -0
- package/__compiled__/esm/src/plugins/imports/index.d.mts +3 -0
- package/__compiled__/esm/src/plugins/imports/index.mjs +72 -0
- package/__compiled__/esm/src/plugins/imports/index.mjs.map +1 -0
- package/__compiled__/esm/src/promiseSettledResultErrors.mjs +1 -1
- package/__compiled__/esm/src/promiseSettledResultErrors.mjs.map +1 -1
- package/__compiled__/esm/src/run.mjs +13 -4
- package/__compiled__/esm/src/run.mjs.map +1 -1
- package/__compiled__/esm/src/tasks/buildTypesTask/callTypescript.d.mts +2 -1
- package/__compiled__/esm/src/tasks/buildTypesTask/callTypescript.mjs +13 -34
- package/__compiled__/esm/src/tasks/buildTypesTask/callTypescript.mjs.map +1 -1
- package/__compiled__/esm/src/tasks/buildTypesTask/findTypingsNames.d.mts +2 -1
- package/__compiled__/esm/src/tasks/buildTypesTask/findTypingsNames.mjs +3 -4
- package/__compiled__/esm/src/tasks/buildTypesTask/findTypingsNames.mjs.map +1 -1
- package/__compiled__/esm/src/tasks/buildTypesTask/findTypingsPackages.d.mts +2 -1
- package/__compiled__/esm/src/tasks/buildTypesTask/findTypingsPackages.mjs +5 -4
- package/__compiled__/esm/src/tasks/buildTypesTask/findTypingsPackages.mjs.map +1 -1
- package/__compiled__/esm/src/tasks/viteTask.d.mts +1 -11
- package/__compiled__/esm/src/tasks/viteTask.mjs +11 -5
- package/__compiled__/esm/src/tasks/viteTask.mjs.map +1 -1
- package/package.json +2 -1
@@ -0,0 +1 @@
|
|
1
|
+
{"version":3,"file":"PrettyErrors.js","sources":["../../../../src/PrettyErrors.ts"],"sourcesContent":["export class PrettyError extends Error {}\n"],"names":[],"mappings":";;AAAO,MAAM,oBAAoB,MAAM;AAAC;;"}
|
@@ -5,8 +5,9 @@ type CreateViteConfigParam = {
|
|
5
5
|
dirs: Dirs;
|
6
6
|
packageJson: PackageJson;
|
7
7
|
modules: DetectedModules;
|
8
|
+
test?: boolean;
|
8
9
|
};
|
9
|
-
export declare function createViteConfig({ dirs, packageJson, modules, }: CreateViteConfigParam): {
|
10
|
+
export declare function createViteConfig({ dirs, packageJson, modules, test, }: CreateViteConfigParam): {
|
10
11
|
viteConfig: import("vite").UserConfig;
|
11
12
|
entrypoints: Map<string, string>;
|
12
13
|
bins: Map<string, string>;
|
@@ -5,9 +5,10 @@ require("./args.js");
|
|
5
5
|
require("node:fs/promises");
|
6
6
|
require("zod");
|
7
7
|
const vite = require("vite");
|
8
|
-
const index$
|
9
|
-
const index = require("./plugins/react/index.js");
|
8
|
+
const index$2 = require("./plugins/babel/index.js");
|
9
|
+
const index$1 = require("./plugins/react/index.js");
|
10
10
|
require("semver");
|
11
|
+
const index = require("./plugins/imports/index.js");
|
11
12
|
function mapToObject(map) {
|
12
13
|
const obj = {};
|
13
14
|
for (const [key, value] of map) {
|
@@ -15,38 +16,11 @@ function mapToObject(map) {
|
|
15
16
|
}
|
16
17
|
return obj;
|
17
18
|
}
|
18
|
-
function createExternalDepValidator(packageJson) {
|
19
|
-
const allExternalPackages = /* @__PURE__ */ new Set();
|
20
|
-
for (const key of [
|
21
|
-
"dependencies",
|
22
|
-
"optionalDependencies",
|
23
|
-
"peerDependencies"
|
24
|
-
]) {
|
25
|
-
for (const dep of Object.keys(packageJson[key] ?? {})) {
|
26
|
-
allExternalPackages.add(dep);
|
27
|
-
}
|
28
|
-
}
|
29
|
-
allExternalPackages.add(packageJson.name);
|
30
|
-
return (id) => {
|
31
|
-
if (id.startsWith("node:")) {
|
32
|
-
return true;
|
33
|
-
}
|
34
|
-
const segments = id.split("/");
|
35
|
-
let current = "";
|
36
|
-
for (const segment of segments) {
|
37
|
-
current += segment;
|
38
|
-
if (allExternalPackages.has(current)) {
|
39
|
-
return true;
|
40
|
-
}
|
41
|
-
current += "/";
|
42
|
-
}
|
43
|
-
return false;
|
44
|
-
};
|
45
|
-
}
|
46
19
|
function createViteConfig({
|
47
20
|
dirs,
|
48
21
|
packageJson,
|
49
|
-
modules
|
22
|
+
modules,
|
23
|
+
test
|
50
24
|
}) {
|
51
25
|
const { sourceDir, outDir, esmOutDir, cjsOutDir } = dirs;
|
52
26
|
const entrypoints = /* @__PURE__ */ new Map();
|
@@ -63,13 +37,13 @@ function createViteConfig({
|
|
63
37
|
}
|
64
38
|
}
|
65
39
|
const mergedEntries = new Map([...entrypoints, ...bins]);
|
66
|
-
const depsValidator = createExternalDepValidator(packageJson);
|
67
40
|
const esmRelativeOutPath = path.relative(outDir, esmOutDir);
|
68
41
|
const cjsRelativeOutPath = path.relative(outDir, cjsOutDir);
|
69
42
|
const viteConfig = vite.defineConfig({
|
70
43
|
plugins: [
|
71
|
-
index.
|
72
|
-
index$1.
|
44
|
+
index.importsPlugin(packageJson, test),
|
45
|
+
index$1.reactPlugin({ modules }),
|
46
|
+
index$2.babelPlugin({ packageJson, dirs, modules })
|
73
47
|
],
|
74
48
|
publicDir: false,
|
75
49
|
root: sourceDir,
|
@@ -112,7 +86,6 @@ function createViteConfig({
|
|
112
86
|
}
|
113
87
|
},
|
114
88
|
rollupOptions: {
|
115
|
-
external: depsValidator,
|
116
89
|
output: {
|
117
90
|
preserveModulesRoot: sourceDir,
|
118
91
|
exports: "named",
|
@@ -1 +1 @@
|
|
1
|
-
{"version":3,"file":"createViteConfig.js","sources":["../../../../src/createViteConfig.ts"],"sourcesContent":["import { type Dirs } from \"./resolveDirs.js\";\nimport { type PackageJson } from \"./packageJson.js\";\nimport { join, relative } from \"node:path\";\nimport { defineConfig } from \"vite\";\nimport { babelPlugin } from \"./plugins/babel/index.js\";\nimport { reactPlugin } from \"./plugins/react/index.js\";\nimport { type DetectedModules } from \"./detectModules.js\";\n\ntype CreateViteConfigParam = {\n dirs: Dirs;\n packageJson: PackageJson;\n modules: DetectedModules;\n};\n\nfunction mapToObject(map: Map<string, string>) {\n const obj: Record<string, string> = {};\n for (const [key, value] of map) {\n obj[key] = value;\n }\n return obj;\n}\n\
|
1
|
+
{"version":3,"file":"createViteConfig.js","sources":["../../../../src/createViteConfig.ts"],"sourcesContent":["import { type Dirs } from \"./resolveDirs.js\";\nimport { type PackageJson } from \"./packageJson.js\";\nimport { join, relative } from \"node:path\";\nimport { defineConfig } from \"vite\";\nimport { babelPlugin } from \"./plugins/babel/index.js\";\nimport { reactPlugin } from \"./plugins/react/index.js\";\nimport { type DetectedModules } from \"./detectModules.js\";\nimport { importsPlugin } from \"./plugins/imports/index.js\";\n\ntype CreateViteConfigParam = {\n dirs: Dirs;\n packageJson: PackageJson;\n modules: DetectedModules;\n test?: boolean;\n};\n\nfunction mapToObject(map: Map<string, string>) {\n const obj: Record<string, string> = {};\n for (const [key, value] of map) {\n obj[key] = value;\n }\n return obj;\n}\n\nexport function createViteConfig({\n dirs,\n packageJson,\n modules,\n test,\n}: CreateViteConfigParam) {\n const { sourceDir, outDir, esmOutDir, cjsOutDir } = dirs;\n\n const entrypoints = new Map<string, string>();\n if (packageJson.exports) {\n for (const [key, value] of packageJson.exports) {\n const entry = join(sourceDir, value);\n entrypoints.set(key, entry);\n }\n }\n\n const bins = new Map<string, string>();\n if (packageJson.bin) {\n for (const [key, value] of packageJson.bin) {\n bins.set(key, join(sourceDir, value));\n }\n }\n\n const mergedEntries = new Map([...entrypoints, ...bins]);\n\n const esmRelativeOutPath = relative(outDir, esmOutDir);\n const cjsRelativeOutPath = relative(outDir, cjsOutDir);\n const viteConfig = defineConfig({\n plugins: [\n importsPlugin(packageJson, test),\n reactPlugin({ modules }),\n babelPlugin({ packageJson, dirs, modules }),\n ],\n publicDir: false,\n root: sourceDir,\n logLevel: \"silent\",\n build: {\n outDir,\n write: true,\n minify: false,\n emptyOutDir: false,\n sourcemap: true,\n assetsInlineLimit: 0,\n terserOptions: {\n compress: false,\n mangle: false,\n },\n lib: {\n entry: mapToObject(mergedEntries),\n formats: [\"es\", \"cjs\"],\n fileName: (format, entryName) => {\n const entrypoint = mergedEntries.get(entryName);\n if (!entrypoint) {\n const noExt = entryName.replace(/\\.[^.]+$/, \"\");\n if (format === \"es\") {\n return join(esmRelativeOutPath, `${noExt}.mjs`);\n } else {\n return join(cjsRelativeOutPath, `${noExt}.js`);\n }\n }\n\n if (format === \"es\") {\n return join(\n esmRelativeOutPath,\n relative(sourceDir, entrypoint).replace(/\\.[^.]+$/, \"\") + \".mjs\",\n );\n } else {\n return join(\n cjsRelativeOutPath,\n relative(sourceDir, entrypoint).replace(/\\.[^.]+$/, \"\") + \".js\",\n );\n }\n },\n },\n rollupOptions: {\n output: {\n preserveModulesRoot: sourceDir,\n exports: \"named\",\n preserveModules: true,\n },\n },\n },\n });\n\n return { viteConfig, entrypoints, bins };\n}\n"],"names":["join","relative","defineConfig","importsPlugin","reactPlugin","babelPlugin"],"mappings":";;;;;;;;;;;AAgBA,SAAS,YAAY,KAA0B;AAC7C,QAAM,MAA8B,CAAC;AACrC,aAAW,CAAC,KAAK,KAAK,KAAK,KAAK;AAC9B,QAAI,GAAG,IAAI;AAAA,EAAA;AAEN,SAAA;AACT;AAEO,SAAS,iBAAiB;AAAA,EAC/B;AAAA,EACA;AAAA,EACA;AAAA,EACA;AACF,GAA0B;AACxB,QAAM,EAAE,WAAW,QAAQ,WAAW,UAAc,IAAA;AAE9C,QAAA,kCAAkB,IAAoB;AAC5C,MAAI,YAAY,SAAS;AACvB,eAAW,CAAC,KAAK,KAAK,KAAK,YAAY,SAAS;AACxC,YAAA,QAAQA,KAAAA,KAAK,WAAW,KAAK;AACvB,kBAAA,IAAI,KAAK,KAAK;AAAA,IAAA;AAAA,EAC5B;AAGI,QAAA,2BAAW,IAAoB;AACrC,MAAI,YAAY,KAAK;AACnB,eAAW,CAAC,KAAK,KAAK,KAAK,YAAY,KAAK;AAC1C,WAAK,IAAI,KAAKA,KAAK,KAAA,WAAW,KAAK,CAAC;AAAA,IAAA;AAAA,EACtC;AAGI,QAAA,gBAAgB,IAAI,IAAI,CAAC,GAAG,aAAa,GAAG,IAAI,CAAC;AAEjD,QAAA,qBAAqBC,KAAAA,SAAS,QAAQ,SAAS;AAC/C,QAAA,qBAAqBA,KAAAA,SAAS,QAAQ,SAAS;AACrD,QAAM,aAAaC,KAAAA,aAAa;AAAA,IAC9B,SAAS;AAAA,MACPC,MAAA,cAAc,aAAa,IAAI;AAAA,MAC/BC,QAAA,YAAY,EAAE,SAAS;AAAA,MACvBC,QAAAA,YAAY,EAAE,aAAa,MAAM,QAAS,CAAA;AAAA,IAC5C;AAAA,IACA,WAAW;AAAA,IACX,MAAM;AAAA,IACN,UAAU;AAAA,IACV,OAAO;AAAA,MACL;AAAA,MACA,OAAO;AAAA,MACP,QAAQ;AAAA,MACR,aAAa;AAAA,MACb,WAAW;AAAA,MACX,mBAAmB;AAAA,MACnB,eAAe;AAAA,QACb,UAAU;AAAA,QACV,QAAQ;AAAA,MACV;AAAA,MACA,KAAK;AAAA,QACH,OAAO,YAAY,aAAa;AAAA,QAChC,SAAS,CAAC,MAAM,KAAK;AAAA,QACrB,UAAU,CAAC,QAAQ,cAAc;AACzB,gBAAA,aAAa,cAAc,IAAI,SAAS;AAC9C,cAAI,CAAC,YAAY;AACf,kBAAM,QAAQ,UAAU,QAAQ,YAAY,EAAE;AAC9C,gBAAI,WAAW,MAAM;AACnB,qBAAOL,KAAK,KAAA,oBAAoB,GAAG,KAAK,MAAM;AAAA,YAAA,OACzC;AACL,qBAAOA,KAAK,KAAA,oBAAoB,GAAG,KAAK,KAAK;AAAA,YAAA;AAAA,UAC/C;AAGF,cAAI,WAAW,MAAM;AACZ,mBAAAA,KAAA;AAAA,cACL;AAAA,cACAC,cAAS,WAAW,UAAU,EAAE,QAAQ,YAAY,EAAE,IAAI;AAAA,YAC5D;AAAA,UAAA,OACK;AACE,mBAAAD,KAAA;AAAA,cACL;AAAA,cACAC,cAAS,WAAW,UAAU,EAAE,QAAQ,YAAY,EAAE,IAAI;AAAA,YAC5D;AAAA,UAAA;AAAA,QACF;AAAA,MAEJ;AAAA,MACA,eAAe;AAAA,QACb,QAAQ;AAAA,UACN,qBAAqB;AAAA,UACrB,SAAS;AAAA,UACT,iBAAiB;AAAA,QAAA;AAAA,MACnB;AAAA,IACF;AAAA,EACF,CACD;AAEM,SAAA,EAAE,YAAY,aAAa,KAAK;AACzC;;"}
|
@@ -1,11 +1,23 @@
|
|
1
1
|
import { type PackageJson } from "./packageJson.js";
|
2
2
|
import semver from "semver";
|
3
|
+
import type { Dirs } from "./resolveDirs.js";
|
4
|
+
export type TS = {
|
5
|
+
ts: typeof import("typescript");
|
6
|
+
parsedConfig: import("typescript").ParsedCommandLine;
|
7
|
+
host: import("typescript").CompilerHost;
|
8
|
+
};
|
3
9
|
export type DetectedModules = {
|
4
|
-
ts?:
|
10
|
+
ts?: TS;
|
5
11
|
babel?: typeof import("@babel/core");
|
6
12
|
react?: "legacy" | "modern";
|
7
13
|
};
|
8
14
|
type DepType = "dependencies" | "devDependencies" | "peerDependencies" | "optionalDependencies";
|
9
15
|
export declare function getMinVersion(packageJson: PackageJson, depName: string, exclude: DepType[]): semver.SemVer | null;
|
10
|
-
export declare function detectModules(packageJson: PackageJson): Promise<
|
16
|
+
export declare function detectModules(packageJson: PackageJson, dirs: Dirs): Promise<{
|
17
|
+
error: false;
|
18
|
+
modules: DetectedModules;
|
19
|
+
} | {
|
20
|
+
error: true;
|
21
|
+
errors: Array<string>;
|
22
|
+
}>;
|
11
23
|
export {};
|
@@ -84,19 +84,68 @@ async function detectReact(packageJson) {
|
|
84
84
|
}
|
85
85
|
log.errorLog("react");
|
86
86
|
}
|
87
|
-
async function
|
88
|
-
|
89
|
-
log.log("Detecting modules");
|
87
|
+
async function detectTypescript(dirs) {
|
88
|
+
let ts;
|
90
89
|
try {
|
91
|
-
|
92
|
-
log.okLog("typescript, version:", result.ts.version);
|
90
|
+
ts = (await import("typescript")).default;
|
93
91
|
} catch {
|
94
92
|
log.errorLog("typescript");
|
93
|
+
return;
|
94
|
+
}
|
95
|
+
log.okLog("typescript, version:", ts.version);
|
96
|
+
const configFilePath = ts.findConfigFile(dirs.sourceDir, ts.sys.fileExists);
|
97
|
+
if (!configFilePath) {
|
98
|
+
throw new Error(
|
99
|
+
"Cannot find a tsconfig.json file. You should declare it. Please, read the https://github.com/XaveScor/smartbundle/issues/131 for more information"
|
100
|
+
);
|
101
|
+
}
|
102
|
+
const configFile = ts.readConfigFile(configFilePath, ts.sys.readFile);
|
103
|
+
if (configFile.error) {
|
104
|
+
const readableError = ts.flattenDiagnosticMessageText(
|
105
|
+
configFile.error.messageText,
|
106
|
+
"\n"
|
107
|
+
);
|
108
|
+
throw new Error(`Cannot read tsconfig.json file, error: ${readableError}`);
|
109
|
+
}
|
110
|
+
const parsedConfig = ts.parseJsonConfigFileContent(
|
111
|
+
configFile.config,
|
112
|
+
ts.sys,
|
113
|
+
dirs.sourceDir,
|
114
|
+
{
|
115
|
+
declaration: true,
|
116
|
+
emitDeclarationOnly: true,
|
117
|
+
strict: false,
|
118
|
+
strictNullChecks: false,
|
119
|
+
strictFunctionTypes: false,
|
120
|
+
strictPropertyInitialization: false,
|
121
|
+
skipLibCheck: true,
|
122
|
+
skipDefaultLibCheck: true,
|
123
|
+
outDir: "",
|
124
|
+
// https://github.com/XaveScor/bobrik/issues/22#issuecomment-2308552352
|
125
|
+
noEmit: false
|
126
|
+
},
|
127
|
+
configFilePath
|
128
|
+
);
|
129
|
+
if (!parsedConfig.options.verbatimModuleSyntax) {
|
130
|
+
throw new Error(
|
131
|
+
"verbatimModuleSyntax should be enabled in tsconfig.json. Read https://github.com/XaveScor/smartbundle/issues/131 for more explanation.\nYou also can upvote the issue if you need the support of verbatimModuleSyntax: false in your library"
|
132
|
+
);
|
133
|
+
}
|
134
|
+
const host = ts.createCompilerHost(parsedConfig.options);
|
135
|
+
return { ts, parsedConfig, host };
|
136
|
+
}
|
137
|
+
async function detectModules(packageJson, dirs) {
|
138
|
+
try {
|
139
|
+
const result = {};
|
140
|
+
log.log("Detecting modules");
|
141
|
+
result.ts = await detectTypescript(dirs);
|
142
|
+
result.babel = await detectBabel(packageJson);
|
143
|
+
result.react = await detectReact(packageJson);
|
144
|
+
log.lineLog();
|
145
|
+
return { error: false, modules: result };
|
146
|
+
} catch (e) {
|
147
|
+
return { error: true, errors: [e.message] };
|
95
148
|
}
|
96
|
-
result.babel = await detectBabel(packageJson);
|
97
|
-
result.react = await detectReact(packageJson);
|
98
|
-
log.lineLog();
|
99
|
-
return result;
|
100
149
|
}
|
101
150
|
exports.detectModules = detectModules;
|
102
151
|
exports.getMinVersion = getMinVersion;
|
@@ -1 +1 @@
|
|
1
|
-
{"version":3,"file":"detectModules.js","sources":["../../../../src/detectModules.ts"],"sourcesContent":["import { type PackageJson } from \"./packageJson.js\";\nimport semver from \"semver\";\nimport { okLog, errorLog, log, lineLog, warnLog } from \"./log.js\";\n\nexport type
|
1
|
+
{"version":3,"file":"detectModules.js","sources":["../../../../src/detectModules.ts"],"sourcesContent":["import { type PackageJson } from \"./packageJson.js\";\nimport semver from \"semver\";\nimport { okLog, errorLog, log, lineLog, warnLog } from \"./log.js\";\nimport type { Dirs } from \"./resolveDirs.js\";\n\nexport type TS = {\n ts: typeof import(\"typescript\");\n parsedConfig: import(\"typescript\").ParsedCommandLine;\n host: import(\"typescript\").CompilerHost;\n};\nexport type DetectedModules = {\n ts?: TS;\n babel?: typeof import(\"@babel/core\");\n react?: \"legacy\" | \"modern\";\n};\n\ntype DepType =\n | \"dependencies\"\n | \"devDependencies\"\n | \"peerDependencies\"\n | \"optionalDependencies\";\nexport function getMinVersion(\n packageJson: PackageJson,\n depName: string,\n exclude: DepType[],\n): semver.SemVer | null {\n const allDepKeys = new Set<DepType>([\n \"dependencies\",\n \"devDependencies\",\n \"peerDependencies\",\n \"optionalDependencies\",\n ]);\n for (const e of exclude) {\n allDepKeys.delete(e);\n }\n\n let minVersion: semver.SemVer | null = null;\n for (const depKey of allDepKeys) {\n const depVersion = packageJson[depKey]?.[depName];\n if (depVersion) {\n const version = semver.minVersion(depVersion);\n if (!version) {\n warnLog(\"node-semver cannot parse version of\", depName, \"from\", depKey);\n warnLog(\"Version:\", depVersion);\n continue;\n }\n if (!minVersion) {\n minVersion = version;\n continue;\n }\n if (semver.lt(version, minVersion)) {\n minVersion = version;\n }\n }\n }\n\n return minVersion;\n}\n\nasync function detectBabel(\n packageJson: PackageJson,\n): Promise<typeof import(\"@babel/core\") | undefined> {\n if (\"@babel/core\" in (packageJson.optionalDependencies ?? {})) {\n errorLog(\"babel excluded because inside optionalDependencies\");\n return;\n }\n\n try {\n const babel = await import(\"@babel/core\");\n okLog(\"babel, version:\", babel.version);\n return babel;\n } catch {\n errorLog(\"babel\");\n }\n}\n\nasync function detectReact(\n packageJson: PackageJson,\n): Promise<\"legacy\" | \"modern\" | undefined> {\n const reactVersion = getMinVersion(packageJson, \"react\", [\"devDependencies\"]);\n if (reactVersion) {\n const isLegacy = semver.lt(reactVersion, \"17.0.0\");\n const transform = isLegacy ? \"legacy\" : \"modern\";\n okLog(\n `react, min version: ${reactVersion.version}. Transform: ${transform}`,\n );\n return transform;\n }\n errorLog(\"react\");\n}\n\nasync function detectTypescript(dirs: Dirs): Promise<TS | undefined> {\n let ts: typeof import(\"typescript\");\n try {\n // ts <=4.3 has no named exports. The all methods is located in the default export\n ts = (await import(\"typescript\")).default;\n } catch {\n errorLog(\"typescript\");\n return;\n }\n\n okLog(\"typescript, version:\", ts.version);\n\n const configFilePath = ts.findConfigFile(dirs.sourceDir, ts.sys.fileExists);\n if (!configFilePath) {\n throw new Error(\n \"Cannot find a tsconfig.json file. You should declare it. Please, read the https://github.com/XaveScor/smartbundle/issues/131 for more information\",\n );\n }\n const configFile = ts.readConfigFile(configFilePath, ts.sys.readFile);\n if (configFile.error) {\n const readableError = ts.flattenDiagnosticMessageText(\n configFile.error.messageText,\n \"\\n\",\n );\n throw new Error(`Cannot read tsconfig.json file, error: ${readableError}`);\n }\n const parsedConfig = ts.parseJsonConfigFileContent(\n configFile.config,\n ts.sys,\n dirs.sourceDir,\n {\n declaration: true,\n emitDeclarationOnly: true,\n strict: false,\n strictNullChecks: false,\n strictFunctionTypes: false,\n strictPropertyInitialization: false,\n skipLibCheck: true,\n skipDefaultLibCheck: true,\n outDir: \"\",\n // https://github.com/XaveScor/bobrik/issues/22#issuecomment-2308552352\n noEmit: false,\n },\n configFilePath,\n );\n\n if (!parsedConfig.options.verbatimModuleSyntax) {\n throw new Error(\n \"verbatimModuleSyntax should be enabled in tsconfig.json. Read https://github.com/XaveScor/smartbundle/issues/131 for more explanation.\\n\" +\n \"You also can upvote the issue if you need the support of verbatimModuleSyntax: false in your library\",\n );\n }\n\n const host = ts.createCompilerHost(parsedConfig.options);\n\n return { ts, parsedConfig, host };\n}\n\nexport async function detectModules(\n packageJson: PackageJson,\n dirs: Dirs,\n): Promise<\n | { error: false; modules: DetectedModules }\n | { error: true; errors: Array<string> }\n> {\n try {\n const result: DetectedModules = {};\n log(\"Detecting modules\");\n\n result.ts = await detectTypescript(dirs);\n result.babel = await detectBabel(packageJson);\n result.react = await detectReact(packageJson);\n\n lineLog();\n return { error: false, modules: result };\n } catch (e: any) {\n return { error: true, errors: [e.message] };\n }\n}\n"],"names":["warnLog","errorLog","okLog","log","lineLog"],"mappings":"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"}
|
@@ -1,10 +1,14 @@
|
|
1
1
|
import { type Args } from "./args.js";
|
2
|
-
|
2
|
+
import { PrettyError } from "./PrettyErrors.js";
|
3
|
+
export declare function defineViteConfig(args?: Args): Promise<import("vite").UserConfig | {
|
4
|
+
error: boolean;
|
5
|
+
errors: string[];
|
6
|
+
}>;
|
3
7
|
type RunResult = {
|
4
8
|
error: false;
|
5
9
|
} | {
|
6
10
|
error: true;
|
7
|
-
errors: Array<string>;
|
11
|
+
errors: Array<string | PrettyError>;
|
8
12
|
};
|
9
13
|
export declare function run(args: Args): Promise<RunResult>;
|
10
14
|
export {};
|
@@ -17,6 +17,7 @@ const pipeline = require("./pipeline.js");
|
|
17
17
|
require("./args.js");
|
18
18
|
const viteTask = require("./tasks/viteTask.js");
|
19
19
|
const promiseSettledResultErrors = require("./promiseSettledResultErrors.js");
|
20
|
+
const PrettyErrors = require("./PrettyErrors.js");
|
20
21
|
function setExports(exportsMap, exportName, mapFn) {
|
21
22
|
const entry = exportsMap.get(exportName) ?? {};
|
22
23
|
exportsMap.set(exportName, mapFn(entry));
|
@@ -32,8 +33,17 @@ async function defineViteConfig(args = {}) {
|
|
32
33
|
console.error(packageJson$1);
|
33
34
|
throw new Error("Failed to parse package.json");
|
34
35
|
}
|
35
|
-
const
|
36
|
-
|
36
|
+
const modulesResult = await detectModules.detectModules(packageJson$1, dirs);
|
37
|
+
if (modulesResult.error) {
|
38
|
+
return { error: true, errors: modulesResult.errors };
|
39
|
+
}
|
40
|
+
const { modules } = modulesResult;
|
41
|
+
const { viteConfig } = createViteConfig.createViteConfig({
|
42
|
+
dirs,
|
43
|
+
packageJson: packageJson$1,
|
44
|
+
modules,
|
45
|
+
test: true
|
46
|
+
});
|
37
47
|
return viteConfig;
|
38
48
|
}
|
39
49
|
async function run(args) {
|
@@ -45,7 +55,11 @@ async function run(args) {
|
|
45
55
|
if (Array.isArray(packageJson$1)) {
|
46
56
|
return { error: true, errors: packageJson$1 };
|
47
57
|
}
|
48
|
-
const
|
58
|
+
const modulesResult = await detectModules.detectModules(packageJson$1, dirs);
|
59
|
+
if (modulesResult.error) {
|
60
|
+
return { error: true, errors: modulesResult.errors };
|
61
|
+
}
|
62
|
+
const { modules } = modulesResult;
|
49
63
|
const { viteConfig, entrypoints, bins } = createViteConfig.createViteConfig({
|
50
64
|
dirs,
|
51
65
|
packageJson: packageJson$1,
|
@@ -102,6 +116,9 @@ async function run(args) {
|
|
102
116
|
)
|
103
117
|
]);
|
104
118
|
const errors = promiseSettledResultErrors.promiseSettledResultErrors(tasksRes).map((res) => {
|
119
|
+
if (res instanceof PrettyErrors.PrettyError) {
|
120
|
+
return res;
|
121
|
+
}
|
105
122
|
if (res instanceof error.BuildError) {
|
106
123
|
return res.error;
|
107
124
|
}
|
@@ -1 +1 @@
|
|
1
|
-
{"version":3,"file":"index.js","sources":["../../../../src/index.ts"],"sourcesContent":["import { relative } from \"node:path\";\nimport { mkdir, rm } from \"node:fs/promises\";\nimport { parsePackageJson } from \"./packageJson.js\";\nimport { type ExportsObject, writePackageJson } from \"./writePackageJson.js\";\nimport { resolveDirs } from \"./resolveDirs.js\";\nimport { createViteConfig } from \"./createViteConfig.js\";\nimport { copyStaticFilesTask } from \"./tasks/copyStaticFilesTask.js\";\nimport { buildTypesTask } from \"./tasks/buildTypesTask/buildTypesTask.js\";\nimport { BuildError } from \"./error.js\";\nimport { jsFilesTask } from \"./tasks/jsFilesTask.js\";\nimport { binsTask } from \"./tasks/binsTask.js\";\nimport { detectModules } from \"./detectModules.js\";\nimport { disableLog, lineLog, log, okLog } from \"./log.js\";\nimport { runSettled } from \"./pipeline.js\";\nimport { type Args } from \"./args.js\";\nimport { viteTask } from \"./tasks/viteTask.js\";\nimport { promiseSettledResultErrors } from \"./promiseSettledResultErrors.js\";\n\nfunction setExports(\n exportsMap: Map<string, ExportsObject>,\n exportName: string,\n mapFn: (entry: ExportsObject) => ExportsObject,\n) {\n const entry = exportsMap.get(exportName) ?? ({} as ExportsObject);\n exportsMap.set(exportName, mapFn(entry));\n}\n\nexport async function defineViteConfig(args: Args = {}) {\n disableLog();\n const dirs = resolveDirs(args);\n const { sourceDir, outDir, packagePath } = dirs;\n\n await rm(outDir, { recursive: true, force: true });\n await mkdir(outDir, { recursive: true });\n const packageJson = await parsePackageJson({ sourceDir, packagePath });\n\n if (Array.isArray(packageJson)) {\n console.error(packageJson);\n throw new Error(\"Failed to parse package.json\");\n }\n\n const
|
1
|
+
{"version":3,"file":"index.js","sources":["../../../../src/index.ts"],"sourcesContent":["import { relative } from \"node:path\";\nimport { mkdir, rm } from \"node:fs/promises\";\nimport { parsePackageJson } from \"./packageJson.js\";\nimport { type ExportsObject, writePackageJson } from \"./writePackageJson.js\";\nimport { resolveDirs } from \"./resolveDirs.js\";\nimport { createViteConfig } from \"./createViteConfig.js\";\nimport { copyStaticFilesTask } from \"./tasks/copyStaticFilesTask.js\";\nimport { buildTypesTask } from \"./tasks/buildTypesTask/buildTypesTask.js\";\nimport { BuildError } from \"./error.js\";\nimport { jsFilesTask } from \"./tasks/jsFilesTask.js\";\nimport { binsTask } from \"./tasks/binsTask.js\";\nimport { detectModules } from \"./detectModules.js\";\nimport { disableLog, lineLog, log, okLog } from \"./log.js\";\nimport { runSettled } from \"./pipeline.js\";\nimport { type Args } from \"./args.js\";\nimport { viteTask } from \"./tasks/viteTask.js\";\nimport { promiseSettledResultErrors } from \"./promiseSettledResultErrors.js\";\nimport { PrettyError } from \"./PrettyErrors.js\";\n\nfunction setExports(\n exportsMap: Map<string, ExportsObject>,\n exportName: string,\n mapFn: (entry: ExportsObject) => ExportsObject,\n) {\n const entry = exportsMap.get(exportName) ?? ({} as ExportsObject);\n exportsMap.set(exportName, mapFn(entry));\n}\n\nexport async function defineViteConfig(args: Args = {}) {\n disableLog();\n const dirs = resolveDirs(args);\n const { sourceDir, outDir, packagePath } = dirs;\n\n await rm(outDir, { recursive: true, force: true });\n await mkdir(outDir, { recursive: true });\n const packageJson = await parsePackageJson({ sourceDir, packagePath });\n\n if (Array.isArray(packageJson)) {\n console.error(packageJson);\n throw new Error(\"Failed to parse package.json\");\n }\n\n const modulesResult = await detectModules(packageJson, dirs);\n if (modulesResult.error) {\n return { error: true, errors: modulesResult.errors };\n }\n const { modules } = modulesResult;\n const { viteConfig } = createViteConfig({\n dirs,\n packageJson,\n modules,\n test: true,\n });\n\n return viteConfig;\n}\n\ntype RunResult =\n | {\n error: false;\n }\n | {\n error: true;\n errors: Array<string | PrettyError>;\n };\n\nexport async function run(args: Args): Promise<RunResult> {\n const dirs = resolveDirs(args);\n const { sourceDir, outDir, packagePath, outBinsDir } = dirs;\n\n await rm(outDir, { recursive: true, force: true });\n await mkdir(outDir, { recursive: true });\n const packageJson = await parsePackageJson({ sourceDir, packagePath });\n\n if (Array.isArray(packageJson)) {\n return { error: true, errors: packageJson };\n }\n\n const modulesResult = await detectModules(packageJson, dirs);\n if (modulesResult.error) {\n return { error: true, errors: modulesResult.errors };\n }\n const { modules } = modulesResult;\n const { viteConfig, entrypoints, bins } = createViteConfig({\n dirs,\n packageJson,\n modules,\n });\n\n const exportsMap = new Map<string, ExportsObject>();\n const binsMap = new Map<string, string>();\n\n const tasksRes = await runSettled(args, [\n copyStaticFilesTask(sourceDir, outDir),\n buildTypesTask({\n dirs,\n packageJson,\n entrypoints,\n modules,\n }).then(({ entrypointToEsDtsMap, entrypointToCjsDtsMap }) => {\n for (const [entrypoint, dts] of entrypointToEsDtsMap) {\n setExports(exportsMap, entrypoint, (entry) => {\n entry.dmts = \"./\" + relative(outDir, dts);\n return entry;\n });\n }\n\n for (const [entrypoint, dts] of entrypointToCjsDtsMap) {\n setExports(exportsMap, entrypoint, (entry) => {\n entry.dcts = \"./\" + relative(outDir, dts);\n return entry;\n });\n }\n }),\n viteTask({ viteConfig }).then((viteOutput) =>\n runSettled(args, [\n jsFilesTask({ buildOutput: viteOutput, entrypoints, outDir }).then(\n (res) => {\n for (const [filePath, name] of res) {\n setExports(exportsMap, name, (entry) => {\n const format = filePath.endsWith(\".js\") ? \"cjs\" : \"es\";\n if (format === \"es\") {\n entry.mjs = \"./\" + filePath;\n } else if (format === \"cjs\") {\n entry.cjs = \"./\" + filePath;\n }\n return entry;\n });\n }\n },\n ),\n binsTask({ outBinsDir, bins, buildOutput: viteOutput, outDir }).then(\n (res) => {\n for (const [value, key] of res) {\n binsMap.set(key, value);\n }\n },\n ),\n ]),\n ),\n ]);\n\n const errors = promiseSettledResultErrors(tasksRes).map((res) => {\n if (res instanceof PrettyError) {\n return res;\n }\n\n if (res instanceof BuildError) {\n return res.error;\n }\n\n return res.message;\n });\n\n if (errors.length > 0) {\n return { error: true, errors };\n }\n\n await writePackageJson(outDir, packageJson, {\n exportsMap,\n binsMap,\n });\n\n lineLog();\n log(`Build finished: ./${relative(sourceDir, outDir)}`);\n return { error: false };\n}\n"],"names":["disableLog","resolveDirs","rm","mkdir","packageJson","parsePackageJson","detectModules","createViteConfig","runSettled","copyStaticFilesTask","buildTypesTask","relative","viteTask","jsFilesTask","binsTask","promiseSettledResultErrors","PrettyError","BuildError","writePackageJson","lineLog","log"],"mappings":"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"}
|
@@ -69,12 +69,8 @@ function babelPlugin({
|
|
69
69
|
};
|
70
70
|
},
|
71
71
|
buildEnd(error) {
|
72
|
-
if (
|
73
|
-
|
74
|
-
log.okLog("Babel");
|
75
|
-
}
|
76
|
-
} else {
|
77
|
-
this.error(error);
|
72
|
+
if (modules.babel && hasBabelConfig) {
|
73
|
+
log.okLog("Babel");
|
78
74
|
}
|
79
75
|
}
|
80
76
|
};
|
@@ -1 +1 @@
|
|
1
|
-
{"version":3,"file":"index.js","sources":["../../../../../../src/plugins/babel/index.ts"],"sourcesContent":["import type { Plugin } from \"vite\";\nimport * as path from \"node:path\";\nimport { findBabelConfig } from \"./findBabelConfig.js\";\nimport { type PackageJson } from \"../../packageJson.js\";\nimport { type Dirs } from \"../../resolveDirs.js\";\nimport { type DetectedModules } from \"../../detectModules.js\";\nimport { okLog } from \"../../log.js\";\n\ntype BabelPluginOptions = {\n packageJson: PackageJson;\n dirs: Dirs;\n modules: DetectedModules;\n};\n\nexport function babelPlugin({\n packageJson,\n dirs,\n modules,\n}: BabelPluginOptions): Plugin {\n let hasBabelConfig = false;\n\n return {\n name: \"smartbundle:babel\",\n async buildStart() {\n hasBabelConfig = await findBabelConfig(dirs.sourceDir, packageJson);\n if (modules.babel && !hasBabelConfig) {\n this.warn(\n \"We have found a @babel/core package, but config was not found. It could be a bug\",\n );\n } else if (!modules.babel && hasBabelConfig) {\n this.error(\n new Error(\n \"We have found a babel config. Please install @babel/core to devDeps or remove the config file\",\n ),\n );\n }\n },\n async transform(code, id) {\n if (!modules.babel || !hasBabelConfig) {\n return null;\n }\n\n const extname = path.extname(id);\n if (![\".js\", \".ts\"].includes(extname)) {\n return null;\n }\n\n const map = this.getCombinedSourcemap();\n\n const result = await modules.babel.transformAsync(code, {\n filename: id,\n sourceMaps: true,\n inputSourceMap: map,\n });\n\n if (!result?.code) {\n throw new Error(\"Babel transformation failed\");\n }\n\n return {\n code: result.code,\n map: result.map,\n };\n },\n buildEnd(error) {\n if (
|
1
|
+
{"version":3,"file":"index.js","sources":["../../../../../../src/plugins/babel/index.ts"],"sourcesContent":["import type { Plugin } from \"vite\";\nimport * as path from \"node:path\";\nimport { findBabelConfig } from \"./findBabelConfig.js\";\nimport { type PackageJson } from \"../../packageJson.js\";\nimport { type Dirs } from \"../../resolveDirs.js\";\nimport { type DetectedModules } from \"../../detectModules.js\";\nimport { okLog } from \"../../log.js\";\n\ntype BabelPluginOptions = {\n packageJson: PackageJson;\n dirs: Dirs;\n modules: DetectedModules;\n};\n\nexport function babelPlugin({\n packageJson,\n dirs,\n modules,\n}: BabelPluginOptions): Plugin {\n let hasBabelConfig = false;\n\n return {\n name: \"smartbundle:babel\",\n async buildStart() {\n hasBabelConfig = await findBabelConfig(dirs.sourceDir, packageJson);\n if (modules.babel && !hasBabelConfig) {\n this.warn(\n \"We have found a @babel/core package, but config was not found. It could be a bug\",\n );\n } else if (!modules.babel && hasBabelConfig) {\n this.error(\n new Error(\n \"We have found a babel config. Please install @babel/core to devDeps or remove the config file\",\n ),\n );\n }\n },\n async transform(code, id) {\n if (!modules.babel || !hasBabelConfig) {\n return null;\n }\n\n const extname = path.extname(id);\n if (![\".js\", \".ts\"].includes(extname)) {\n return null;\n }\n\n const map = this.getCombinedSourcemap();\n\n const result = await modules.babel.transformAsync(code, {\n filename: id,\n sourceMaps: true,\n inputSourceMap: map,\n });\n\n if (!result?.code) {\n throw new Error(\"Babel transformation failed\");\n }\n\n return {\n code: result.code,\n map: result.map,\n };\n },\n buildEnd(error) {\n if (modules.babel && hasBabelConfig) {\n okLog(\"Babel\");\n }\n },\n };\n}\n"],"names":["findBabelConfig","path","okLog"],"mappings":";;;;;;;;;;;;;;;;;;;;;;;;;;AAcO,SAAS,YAAY;AAAA,EAC1B;AAAA,EACA;AAAA,EACA;AACF,GAA+B;AAC7B,MAAI,iBAAiB;AAEd,SAAA;AAAA,IACL,MAAM;AAAA,IACN,MAAM,aAAa;AACjB,uBAAiB,MAAMA,gBAAA,gBAAgB,KAAK,WAAW,WAAW;AAC9D,UAAA,QAAQ,SAAS,CAAC,gBAAgB;AAC/B,aAAA;AAAA,UACH;AAAA,QACF;AAAA,MACS,WAAA,CAAC,QAAQ,SAAS,gBAAgB;AACtC,aAAA;AAAA,UACH,IAAI;AAAA,YACF;AAAA,UAAA;AAAA,QAEJ;AAAA,MAAA;AAAA,IAEJ;AAAA,IACA,MAAM,UAAU,MAAM,IAAI;AACxB,UAAI,CAAC,QAAQ,SAAS,CAAC,gBAAgB;AAC9B,eAAA;AAAA,MAAA;AAGH,YAAA,UAAUC,gBAAK,QAAQ,EAAE;AAC/B,UAAI,CAAC,CAAC,OAAO,KAAK,EAAE,SAAS,OAAO,GAAG;AAC9B,eAAA;AAAA,MAAA;AAGH,YAAA,MAAM,KAAK,qBAAqB;AAEtC,YAAM,SAAS,MAAM,QAAQ,MAAM,eAAe,MAAM;AAAA,QACtD,UAAU;AAAA,QACV,YAAY;AAAA,QACZ,gBAAgB;AAAA,MAAA,CACjB;AAEG,UAAA,EAAC,iCAAQ,OAAM;AACX,cAAA,IAAI,MAAM,6BAA6B;AAAA,MAAA;AAGxC,aAAA;AAAA,QACL,MAAM,OAAO;AAAA,QACb,KAAK,OAAO;AAAA,MACd;AAAA,IACF;AAAA,IACA,SAAS,OAAO;AACV,UAAA,QAAQ,SAAS,gBAAgB;AACnCC,YAAAA,MAAM,OAAO;AAAA,MAAA;AAAA,IACf;AAAA,EAEJ;AACF;;"}
|
@@ -0,0 +1,7 @@
|
|
1
|
+
import { PrettyError } from "../../PrettyErrors.js";
|
2
|
+
export declare class ImportError extends PrettyError {
|
3
|
+
private importName;
|
4
|
+
private path;
|
5
|
+
private constructor();
|
6
|
+
static create(importName: string, path: string | undefined, fsReadFile: typeof import("fs/promises").readFile): Promise<ImportError>;
|
7
|
+
}
|
@@ -0,0 +1,35 @@
|
|
1
|
+
"use strict";
|
2
|
+
Object.defineProperty(exports, Symbol.toStringTag, { value: "Module" });
|
3
|
+
const PrettyErrors = require("../../PrettyErrors.js");
|
4
|
+
class ImportError extends PrettyErrors.PrettyError {
|
5
|
+
constructor(importName, path) {
|
6
|
+
super(
|
7
|
+
`ImportError: The "${importName}" library is marked as an optional dependency.
|
8
|
+
It cannot be imported directly in:
|
9
|
+
"${path ?? "unknown path"}"
|
10
|
+
|
11
|
+
To resolve this, consider:
|
12
|
+
1. Using a type import (e.g., 'import type').
|
13
|
+
2. Dynamically importing the library (e.g., 'await import("${importName}")').
|
14
|
+
|
15
|
+
This ensures compatibility with environments where "${importName}" is not installed.`
|
16
|
+
);
|
17
|
+
this.importName = importName;
|
18
|
+
this.path = path;
|
19
|
+
}
|
20
|
+
static async create(importName, path, fsReadFile) {
|
21
|
+
if (!path) {
|
22
|
+
return new ImportError(importName, path);
|
23
|
+
}
|
24
|
+
const content = await fsReadFile(path, "utf-8");
|
25
|
+
const lines = content.split("\n");
|
26
|
+
const affectedLine = lines.findIndex((line) => line.includes(importName));
|
27
|
+
const error = new ImportError(importName, path);
|
28
|
+
error.stack = `ImportError: you cannot import ${importName} because it marked as optional inside package.json
|
29
|
+
|
30
|
+
at ${path}:${affectedLine + 1}:0`;
|
31
|
+
return error;
|
32
|
+
}
|
33
|
+
}
|
34
|
+
exports.ImportError = ImportError;
|
35
|
+
//# sourceMappingURL=ImportError.js.map
|
@@ -0,0 +1 @@
|
|
1
|
+
{"version":3,"file":"ImportError.js","sources":["../../../../../../src/plugins/imports/ImportError.ts"],"sourcesContent":["import { PrettyError } from \"../../PrettyErrors.js\";\n\nexport class ImportError extends PrettyError {\n private constructor(\n private importName: string,\n private path: string | undefined,\n ) {\n super(\n `ImportError: The \"${importName}\" library is marked as an optional dependency.\\n` +\n `It cannot be imported directly in:\\n` +\n ` \"${path ?? \"unknown path\"}\"\\n\\n` +\n `To resolve this, consider:\\n` +\n `1. Using a type import (e.g., 'import type').\\n` +\n `2. Dynamically importing the library (e.g., 'await import(\"${importName}\")').\\n\\n` +\n `This ensures compatibility with environments where \"${importName}\" is not installed.`,\n );\n }\n\n static async create(\n importName: string,\n path: string | undefined,\n fsReadFile: typeof import(\"fs/promises\").readFile,\n ) {\n if (!path) {\n return new ImportError(importName, path);\n }\n const content = await fsReadFile(path, \"utf-8\");\n const lines = content.split(\"\\n\");\n\n const affectedLine = lines.findIndex((line) => line.includes(importName));\n\n const error = new ImportError(importName, path);\n error.stack = `ImportError: you cannot import ${importName} because it marked as optional inside package.json \\n\n at ${path}:${affectedLine + 1}:0`;\n\n return error;\n }\n}\n"],"names":["PrettyError"],"mappings":";;;AAEO,MAAM,oBAAoBA,aAAAA,YAAY;AAAA,EACnC,YACE,YACA,MACR;AACA;AAAA,MACE,qBAAqB,UAAU;AAAA;AAAA,KAEvB,QAAQ,cAAc;AAAA;AAAA;AAAA;AAAA,6DAGkC,UAAU;AAAA;AAAA,sDACjB,UAAU;AAAA,IACrE;AAXQ,SAAA,aAAA;AACA,SAAA,OAAA;AAAA,EAAA;AAAA,EAaV,aAAa,OACX,YACA,MACA,YACA;AACA,QAAI,CAAC,MAAM;AACF,aAAA,IAAI,YAAY,YAAY,IAAI;AAAA,IAAA;AAEzC,UAAM,UAAU,MAAM,WAAW,MAAM,OAAO;AACxC,UAAA,QAAQ,QAAQ,MAAM,IAAI;AAE1B,UAAA,eAAe,MAAM,UAAU,CAAC,SAAS,KAAK,SAAS,UAAU,CAAC;AAExE,UAAM,QAAQ,IAAI,YAAY,YAAY,IAAI;AACxC,UAAA,QAAQ,kCAAkC,UAAU;AAAA;AAAA,SACrD,IAAI,IAAI,eAAe,CAAC;AAEtB,WAAA;AAAA,EAAA;AAEX;;"}
|
@@ -0,0 +1,89 @@
|
|
1
|
+
"use strict";
|
2
|
+
Object.defineProperty(exports, Symbol.toStringTag, { value: "Module" });
|
3
|
+
const ImportError = require("./ImportError.js");
|
4
|
+
const fs = require("node:fs/promises");
|
5
|
+
function _interopNamespaceDefault(e) {
|
6
|
+
const n = Object.create(null, { [Symbol.toStringTag]: { value: "Module" } });
|
7
|
+
if (e) {
|
8
|
+
for (const k in e) {
|
9
|
+
if (k !== "default") {
|
10
|
+
const d = Object.getOwnPropertyDescriptor(e, k);
|
11
|
+
Object.defineProperty(n, k, d.get ? d : {
|
12
|
+
enumerable: true,
|
13
|
+
get: () => e[k]
|
14
|
+
});
|
15
|
+
}
|
16
|
+
}
|
17
|
+
}
|
18
|
+
n.default = e;
|
19
|
+
return Object.freeze(n);
|
20
|
+
}
|
21
|
+
const fs__namespace = /* @__PURE__ */ _interopNamespaceDefault(fs);
|
22
|
+
function isNodeModule(id) {
|
23
|
+
return id.startsWith("node:");
|
24
|
+
}
|
25
|
+
function importsPlugin(packageJson, test) {
|
26
|
+
var _a, _b;
|
27
|
+
if (test) {
|
28
|
+
return {
|
29
|
+
name: "smartbundle:imports"
|
30
|
+
};
|
31
|
+
}
|
32
|
+
const dynamicDeps = /* @__PURE__ */ new Set();
|
33
|
+
const staticDeps = /* @__PURE__ */ new Set();
|
34
|
+
for (const dep of Object.keys(packageJson.dependencies ?? {})) {
|
35
|
+
dynamicDeps.add(dep);
|
36
|
+
staticDeps.add(dep);
|
37
|
+
}
|
38
|
+
for (const dep of Object.keys(packageJson.peerDependencies ?? {})) {
|
39
|
+
if (!((_b = (_a = packageJson.peerDependenciesMeta) == null ? void 0 : _a[dep]) == null ? void 0 : _b.optional)) {
|
40
|
+
staticDeps.add(dep);
|
41
|
+
}
|
42
|
+
dynamicDeps.add(dep);
|
43
|
+
}
|
44
|
+
for (const dep of Object.keys(packageJson.optionalDependencies ?? {})) {
|
45
|
+
dynamicDeps.add(dep);
|
46
|
+
}
|
47
|
+
dynamicDeps.add(packageJson.name);
|
48
|
+
staticDeps.add(packageJson.name);
|
49
|
+
function createDepResolver(depsSet) {
|
50
|
+
return (id) => {
|
51
|
+
const segments = id.split("/");
|
52
|
+
let current = "";
|
53
|
+
for (const segment of segments) {
|
54
|
+
current += segment;
|
55
|
+
if (depsSet.has(current)) {
|
56
|
+
return true;
|
57
|
+
}
|
58
|
+
current += "/";
|
59
|
+
}
|
60
|
+
return false;
|
61
|
+
};
|
62
|
+
}
|
63
|
+
const dynamicDepResolver = createDepResolver(dynamicDeps);
|
64
|
+
const staticDepResolver = createDepResolver(staticDeps);
|
65
|
+
return {
|
66
|
+
name: "smartbundle:imports",
|
67
|
+
enforce: "pre",
|
68
|
+
async resolveId(id, importer) {
|
69
|
+
if (isNodeModule(id) || staticDepResolver(id)) {
|
70
|
+
return false;
|
71
|
+
}
|
72
|
+
if (dynamicDepResolver(id)) {
|
73
|
+
this.error(await ImportError.ImportError.create(id, importer, fs__namespace.readFile));
|
74
|
+
}
|
75
|
+
return null;
|
76
|
+
},
|
77
|
+
resolveDynamicImport(id) {
|
78
|
+
if (typeof id !== "string") {
|
79
|
+
return null;
|
80
|
+
}
|
81
|
+
if (isNodeModule(id) || dynamicDepResolver(id)) {
|
82
|
+
return false;
|
83
|
+
}
|
84
|
+
return null;
|
85
|
+
}
|
86
|
+
};
|
87
|
+
}
|
88
|
+
exports.importsPlugin = importsPlugin;
|
89
|
+
//# sourceMappingURL=index.js.map
|
@@ -0,0 +1 @@
|
|
1
|
+
{"version":3,"file":"index.js","sources":["../../../../../../src/plugins/imports/index.ts"],"sourcesContent":["import type { Plugin } from \"vite\";\nimport type { PackageJson } from \"../../packageJson.js\";\nimport { ImportError } from \"./ImportError.js\";\nimport * as fs from \"node:fs/promises\";\n\nfunction isNodeModule(id: string) {\n return id.startsWith(\"node:\");\n}\n\nexport function importsPlugin(\n packageJson: PackageJson,\n test?: boolean,\n): Plugin {\n if (test) {\n return {\n name: \"smartbundle:imports\",\n };\n }\n\n const dynamicDeps = new Set<string>();\n const staticDeps = new Set<string>();\n for (const dep of Object.keys(packageJson.dependencies ?? {})) {\n dynamicDeps.add(dep);\n staticDeps.add(dep);\n }\n for (const dep of Object.keys(packageJson.peerDependencies ?? {})) {\n if (!packageJson.peerDependenciesMeta?.[dep]?.optional) {\n staticDeps.add(dep);\n }\n dynamicDeps.add(dep);\n }\n for (const dep of Object.keys(packageJson.optionalDependencies ?? {})) {\n dynamicDeps.add(dep);\n }\n dynamicDeps.add(packageJson.name);\n staticDeps.add(packageJson.name);\n\n function createDepResolver(depsSet: Set<string>) {\n return (id: string) => {\n const segments = id.split(\"/\");\n let current = \"\";\n for (const segment of segments) {\n current += segment;\n // import {} from \"a/b/c/d\"; case\n if (depsSet.has(current)) {\n return true;\n }\n current += \"/\";\n }\n return false;\n };\n }\n\n const dynamicDepResolver = createDepResolver(dynamicDeps);\n const staticDepResolver = createDepResolver(staticDeps);\n return {\n name: \"smartbundle:imports\",\n enforce: \"pre\",\n async resolveId(id, importer) {\n if (isNodeModule(id) || staticDepResolver(id)) {\n return false;\n }\n if (dynamicDepResolver(id)) {\n this.error(await ImportError.create(id, importer, fs.readFile));\n }\n return null;\n },\n resolveDynamicImport(id) {\n if (typeof id !== \"string\") {\n return null;\n }\n if (isNodeModule(id) || dynamicDepResolver(id)) {\n return false;\n }\n\n return null;\n },\n };\n}\n"],"names":["ImportError","fs"],"mappings":";;;;;;;;;;;;;;;;;;;;;AAKA,SAAS,aAAa,IAAY;AACzB,SAAA,GAAG,WAAW,OAAO;AAC9B;AAEgB,SAAA,cACd,aACA,MACQ;;AACR,MAAI,MAAM;AACD,WAAA;AAAA,MACL,MAAM;AAAA,IACR;AAAA,EAAA;AAGI,QAAA,kCAAkB,IAAY;AAC9B,QAAA,iCAAiB,IAAY;AACnC,aAAW,OAAO,OAAO,KAAK,YAAY,gBAAgB,CAAA,CAAE,GAAG;AAC7D,gBAAY,IAAI,GAAG;AACnB,eAAW,IAAI,GAAG;AAAA,EAAA;AAEpB,aAAW,OAAO,OAAO,KAAK,YAAY,oBAAoB,CAAA,CAAE,GAAG;AACjE,QAAI,GAAC,uBAAY,yBAAZ,mBAAmC,SAAnC,mBAAyC,WAAU;AACtD,iBAAW,IAAI,GAAG;AAAA,IAAA;AAEpB,gBAAY,IAAI,GAAG;AAAA,EAAA;AAErB,aAAW,OAAO,OAAO,KAAK,YAAY,wBAAwB,CAAA,CAAE,GAAG;AACrE,gBAAY,IAAI,GAAG;AAAA,EAAA;AAET,cAAA,IAAI,YAAY,IAAI;AACrB,aAAA,IAAI,YAAY,IAAI;AAE/B,WAAS,kBAAkB,SAAsB;AAC/C,WAAO,CAAC,OAAe;AACf,YAAA,WAAW,GAAG,MAAM,GAAG;AAC7B,UAAI,UAAU;AACd,iBAAW,WAAW,UAAU;AACnB,mBAAA;AAEP,YAAA,QAAQ,IAAI,OAAO,GAAG;AACjB,iBAAA;AAAA,QAAA;AAEE,mBAAA;AAAA,MAAA;AAEN,aAAA;AAAA,IACT;AAAA,EAAA;AAGI,QAAA,qBAAqB,kBAAkB,WAAW;AAClD,QAAA,oBAAoB,kBAAkB,UAAU;AAC/C,SAAA;AAAA,IACL,MAAM;AAAA,IACN,SAAS;AAAA,IACT,MAAM,UAAU,IAAI,UAAU;AAC5B,UAAI,aAAa,EAAE,KAAK,kBAAkB,EAAE,GAAG;AACtC,eAAA;AAAA,MAAA;AAEL,UAAA,mBAAmB,EAAE,GAAG;AACrB,aAAA,MAAM,MAAMA,wBAAY,OAAO,IAAI,UAAUC,cAAG,QAAQ,CAAC;AAAA,MAAA;AAEzD,aAAA;AAAA,IACT;AAAA,IACA,qBAAqB,IAAI;AACnB,UAAA,OAAO,OAAO,UAAU;AACnB,eAAA;AAAA,MAAA;AAET,UAAI,aAAa,EAAE,KAAK,mBAAmB,EAAE,GAAG;AACvC,eAAA;AAAA,MAAA;AAGF,aAAA;AAAA,IAAA;AAAA,EAEX;AACF;;"}
|
@@ -3,7 +3,7 @@ Object.defineProperty(exports, Symbol.toStringTag, { value: "Module" });
|
|
3
3
|
function promiseSettledResultErrors(results) {
|
4
4
|
const errors = [];
|
5
5
|
for (const result of results) {
|
6
|
-
if (result
|
6
|
+
if (Array.isArray(result)) {
|
7
7
|
errors.push(promiseSettledResultErrors(result));
|
8
8
|
} else if (result.status === "rejected") {
|
9
9
|
errors.push(result.reason);
|
@@ -1 +1 @@
|
|
1
|
-
{"version":3,"file":"promiseSettledResultErrors.js","sources":["../../../../src/promiseSettledResultErrors.ts"],"sourcesContent":["type Hierarchy = Array<PromiseSettledResult<any> | Hierarchy>;\n\nexport function promiseSettledResultErrors<H extends Hierarchy>(results: H) {\n const errors: Array<any> = [];\n for (const result of results) {\n if (result
|
1
|
+
{"version":3,"file":"promiseSettledResultErrors.js","sources":["../../../../src/promiseSettledResultErrors.ts"],"sourcesContent":["type Hierarchy = Array<PromiseSettledResult<any> | Hierarchy>;\n\nexport function promiseSettledResultErrors<H extends Hierarchy>(results: H) {\n const errors: Array<any> = [];\n for (const result of results) {\n if (Array.isArray(result)) {\n errors.push(promiseSettledResultErrors(result));\n } else if (result.status === \"rejected\") {\n errors.push(result.reason);\n }\n }\n return errors.flat(Infinity);\n}\n"],"names":[],"mappings":";;AAEO,SAAS,2BAAgD,SAAY;AAC1E,QAAM,SAAqB,CAAC;AAC5B,aAAW,UAAU,SAAS;AACxB,QAAA,MAAM,QAAQ,MAAM,GAAG;AAClB,aAAA,KAAK,2BAA2B,MAAM,CAAC;AAAA,IAAA,WACrC,OAAO,WAAW,YAAY;AAChC,aAAA,KAAK,OAAO,MAAM;AAAA,IAAA;AAAA,EAC3B;AAEK,SAAA,OAAO,KAAK,QAAQ;AAC7B;;"}
|
@@ -1,11 +1,20 @@
|
|
1
1
|
"use strict";
|
2
2
|
const args = require("./args.js");
|
3
3
|
const _ = require("./index.js");
|
4
|
-
|
5
|
-
|
6
|
-
|
4
|
+
const PrettyErrors = require("./PrettyErrors.js");
|
5
|
+
const youch$1 = require("youch");
|
6
|
+
const youch = new youch$1.Youch();
|
7
|
+
(async () => {
|
8
|
+
const res = await _.run(args.args);
|
9
|
+
if (!res.error) {
|
10
|
+
return;
|
11
|
+
}
|
12
|
+
for (const error of res.errors) {
|
13
|
+
if (!(error instanceof PrettyErrors.PrettyError)) {
|
7
14
|
console.error("\x1B[31m[ERROR]", error, "\x1B[0m");
|
15
|
+
continue;
|
8
16
|
}
|
17
|
+
console.error(await youch.toANSI(error));
|
9
18
|
}
|
10
|
-
});
|
19
|
+
})();
|
11
20
|
//# sourceMappingURL=run.js.map
|
@@ -1 +1 @@
|
|
1
|
-
{"version":3,"file":"run.js","sources":["../../../../src/run.ts"],"sourcesContent":["import { args } from \"./args.js\";\nimport { run } from \"./index.js\";\n\
|
1
|
+
{"version":3,"file":"run.js","sources":["../../../../src/run.ts"],"sourcesContent":["import { args } from \"./args.js\";\nimport { run } from \"./index.js\";\nimport { PrettyError } from \"./PrettyErrors.js\";\nimport { Youch } from \"youch\";\n\nconst youch = new Youch();\n\n(async () => {\n const res = await run(args);\n\n if (!res.error) {\n return;\n }\n\n for (const error of res.errors) {\n if (!(error instanceof PrettyError)) {\n console.error(\"\\x1b[31m[ERROR]\", error, \"\\x1b[0m\");\n continue;\n }\n\n console.error(await youch.toANSI(error));\n }\n})();\n"],"names":["Youch","run","args","PrettyError"],"mappings":";;;;;AAKA,MAAM,QAAQ,IAAIA,QAAAA,MAAM;AAAA,CAEvB,YAAY;AACL,QAAA,MAAM,MAAMC,EAAA,IAAIC,SAAI;AAEtB,MAAA,CAAC,IAAI,OAAO;AACd;AAAA,EAAA;AAGS,aAAA,SAAS,IAAI,QAAQ;AAC1B,QAAA,EAAE,iBAAiBC,aAAAA,cAAc;AAC3B,cAAA,MAAM,mBAAmB,OAAO,SAAS;AACjD;AAAA,IAAA;AAGF,YAAQ,MAAM,MAAM,MAAM,OAAO,KAAK,CAAC;AAAA,EAAA;AAE3C,GAAG;"}
|