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.
Files changed (73) hide show
  1. package/__compiled__/cjs/src/PrettyErrors.d.ts +2 -0
  2. package/__compiled__/cjs/src/PrettyErrors.js +6 -0
  3. package/__compiled__/cjs/src/PrettyErrors.js.map +1 -0
  4. package/__compiled__/cjs/src/createViteConfig.d.ts +2 -1
  5. package/__compiled__/cjs/src/createViteConfig.js +8 -35
  6. package/__compiled__/cjs/src/createViteConfig.js.map +1 -1
  7. package/__compiled__/cjs/src/detectModules.d.ts +14 -2
  8. package/__compiled__/cjs/src/detectModules.js +58 -9
  9. package/__compiled__/cjs/src/detectModules.js.map +1 -1
  10. package/__compiled__/cjs/src/index.d.ts +6 -2
  11. package/__compiled__/cjs/src/index.js +20 -3
  12. package/__compiled__/cjs/src/index.js.map +1 -1
  13. package/__compiled__/cjs/src/plugins/babel/index.js +2 -6
  14. package/__compiled__/cjs/src/plugins/babel/index.js.map +1 -1
  15. package/__compiled__/cjs/src/plugins/imports/ImportError.d.ts +7 -0
  16. package/__compiled__/cjs/src/plugins/imports/ImportError.js +35 -0
  17. package/__compiled__/cjs/src/plugins/imports/ImportError.js.map +1 -0
  18. package/__compiled__/cjs/src/plugins/imports/index.d.ts +3 -0
  19. package/__compiled__/cjs/src/plugins/imports/index.js +89 -0
  20. package/__compiled__/cjs/src/plugins/imports/index.js.map +1 -0
  21. package/__compiled__/cjs/src/promiseSettledResultErrors.js +1 -1
  22. package/__compiled__/cjs/src/promiseSettledResultErrors.js.map +1 -1
  23. package/__compiled__/cjs/src/run.js +13 -4
  24. package/__compiled__/cjs/src/run.js.map +1 -1
  25. package/__compiled__/cjs/src/tasks/buildTypesTask/callTypescript.d.ts +2 -1
  26. package/__compiled__/cjs/src/tasks/buildTypesTask/callTypescript.js +13 -34
  27. package/__compiled__/cjs/src/tasks/buildTypesTask/callTypescript.js.map +1 -1
  28. package/__compiled__/cjs/src/tasks/buildTypesTask/findTypingsNames.d.ts +2 -1
  29. package/__compiled__/cjs/src/tasks/buildTypesTask/findTypingsNames.js +12 -30
  30. package/__compiled__/cjs/src/tasks/buildTypesTask/findTypingsNames.js.map +1 -1
  31. package/__compiled__/cjs/src/tasks/buildTypesTask/findTypingsPackages.d.ts +2 -1
  32. package/__compiled__/cjs/src/tasks/buildTypesTask/findTypingsPackages.js +13 -13
  33. package/__compiled__/cjs/src/tasks/buildTypesTask/findTypingsPackages.js.map +1 -1
  34. package/__compiled__/cjs/src/tasks/viteTask.d.ts +1 -11
  35. package/__compiled__/cjs/src/tasks/viteTask.js +11 -5
  36. package/__compiled__/cjs/src/tasks/viteTask.js.map +1 -1
  37. package/__compiled__/esm/src/PrettyErrors.d.mts +2 -0
  38. package/__compiled__/esm/src/PrettyErrors.mjs +6 -0
  39. package/__compiled__/esm/src/PrettyErrors.mjs.map +1 -0
  40. package/__compiled__/esm/src/createViteConfig.d.mts +2 -1
  41. package/__compiled__/esm/src/createViteConfig.mjs +4 -31
  42. package/__compiled__/esm/src/createViteConfig.mjs.map +1 -1
  43. package/__compiled__/esm/src/detectModules.d.mts +14 -2
  44. package/__compiled__/esm/src/detectModules.mjs +59 -10
  45. package/__compiled__/esm/src/detectModules.mjs.map +1 -1
  46. package/__compiled__/esm/src/index.d.mts +6 -2
  47. package/__compiled__/esm/src/index.mjs +20 -3
  48. package/__compiled__/esm/src/index.mjs.map +1 -1
  49. package/__compiled__/esm/src/plugins/babel/index.mjs +2 -6
  50. package/__compiled__/esm/src/plugins/babel/index.mjs.map +1 -1
  51. package/__compiled__/esm/src/plugins/imports/ImportError.d.mts +7 -0
  52. package/__compiled__/esm/src/plugins/imports/ImportError.mjs +35 -0
  53. package/__compiled__/esm/src/plugins/imports/ImportError.mjs.map +1 -0
  54. package/__compiled__/esm/src/plugins/imports/index.d.mts +3 -0
  55. package/__compiled__/esm/src/plugins/imports/index.mjs +72 -0
  56. package/__compiled__/esm/src/plugins/imports/index.mjs.map +1 -0
  57. package/__compiled__/esm/src/promiseSettledResultErrors.mjs +1 -1
  58. package/__compiled__/esm/src/promiseSettledResultErrors.mjs.map +1 -1
  59. package/__compiled__/esm/src/run.mjs +13 -4
  60. package/__compiled__/esm/src/run.mjs.map +1 -1
  61. package/__compiled__/esm/src/tasks/buildTypesTask/callTypescript.d.mts +2 -1
  62. package/__compiled__/esm/src/tasks/buildTypesTask/callTypescript.mjs +13 -34
  63. package/__compiled__/esm/src/tasks/buildTypesTask/callTypescript.mjs.map +1 -1
  64. package/__compiled__/esm/src/tasks/buildTypesTask/findTypingsNames.d.mts +2 -1
  65. package/__compiled__/esm/src/tasks/buildTypesTask/findTypingsNames.mjs +3 -4
  66. package/__compiled__/esm/src/tasks/buildTypesTask/findTypingsNames.mjs.map +1 -1
  67. package/__compiled__/esm/src/tasks/buildTypesTask/findTypingsPackages.d.mts +2 -1
  68. package/__compiled__/esm/src/tasks/buildTypesTask/findTypingsPackages.mjs +5 -4
  69. package/__compiled__/esm/src/tasks/buildTypesTask/findTypingsPackages.mjs.map +1 -1
  70. package/__compiled__/esm/src/tasks/viteTask.d.mts +1 -11
  71. package/__compiled__/esm/src/tasks/viteTask.mjs +11 -5
  72. package/__compiled__/esm/src/tasks/viteTask.mjs.map +1 -1
  73. package/package.json +2 -1
@@ -0,0 +1,2 @@
1
+ export declare class PrettyError extends Error {
2
+ }
@@ -0,0 +1,6 @@
1
+ "use strict";
2
+ Object.defineProperty(exports, Symbol.toStringTag, { value: "Module" });
3
+ class PrettyError extends Error {
4
+ }
5
+ exports.PrettyError = PrettyError;
6
+ //# sourceMappingURL=PrettyErrors.js.map
@@ -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$1 = require("./plugins/babel/index.js");
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.reactPlugin({ modules }),
72
- index$1.babelPlugin({ packageJson, dirs, modules })
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\nfunction createExternalDepValidator(packageJson: PackageJson) {\n const allExternalPackages = new Set();\n for (const key of [\n \"dependencies\",\n \"optionalDependencies\",\n \"peerDependencies\",\n ] as const) {\n for (const dep of Object.keys(packageJson[key] ?? {})) {\n allExternalPackages.add(dep);\n }\n }\n allExternalPackages.add(packageJson.name);\n\n return (id: string) => {\n if (id.startsWith(\"node:\")) {\n return true;\n }\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 (allExternalPackages.has(current)) {\n return true;\n }\n current += \"/\";\n }\n return false;\n };\n}\n\nexport function createViteConfig({\n dirs,\n packageJson,\n modules,\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 depsValidator = createExternalDepValidator(packageJson);\n\n const esmRelativeOutPath = relative(outDir, esmOutDir);\n const cjsRelativeOutPath = relative(outDir, cjsOutDir);\n const viteConfig = defineConfig({\n plugins: [\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 external: depsValidator,\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","reactPlugin","babelPlugin"],"mappings":"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"}
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?: typeof import("typescript");
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<DetectedModules>;
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 detectModules(packageJson) {
88
- const result = {};
89
- log.log("Detecting modules");
87
+ async function detectTypescript(dirs) {
88
+ let ts;
90
89
  try {
91
- result.ts = (await import("typescript")).default;
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 DetectedModules = {\n ts?: typeof import(\"typescript\");\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\nexport async function detectModules(\n packageJson: PackageJson,\n): Promise<DetectedModules> {\n const result: DetectedModules = {};\n log(\"Detecting modules\");\n try {\n // ts <=4.3 has no named exports. The all methods is located in the default export\n result.ts = (await import(\"typescript\")).default;\n okLog(\"typescript, version:\", result.ts.version);\n } catch {\n errorLog(\"typescript\");\n }\n\n result.babel = await detectBabel(packageJson);\n result.react = await detectReact(packageJson);\n\n lineLog();\n return result;\n}\n"],"names":["warnLog","errorLog","okLog","log","lineLog"],"mappings":";;;;;;;;;;;;;;;;;;;;;;;;;;;;;AAegB,SAAA,cACd,aACA,SACA,SACsB;;AAChB,QAAA,iCAAiB,IAAa;AAAA,IAClC;AAAA,IACA;AAAA,IACA;AAAA,IACA;AAAA,EAAA,CACD;AACD,aAAW,KAAK,SAAS;AACvB,eAAW,OAAO,CAAC;AAAA,EAAA;AAGrB,MAAI,aAAmC;AACvC,aAAW,UAAU,YAAY;AAC/B,UAAM,cAAa,iBAAY,MAAM,MAAlB,mBAAsB;AACzC,QAAI,YAAY;AACR,YAAA,UAAU,OAAO,WAAW,UAAU;AAC5C,UAAI,CAAC,SAAS;AACJA,YAAAA,QAAA,uCAAuC,SAAS,QAAQ,MAAM;AACtEA,YAAA,QAAQ,YAAY,UAAU;AAC9B;AAAA,MAAA;AAEF,UAAI,CAAC,YAAY;AACF,qBAAA;AACb;AAAA,MAAA;AAEF,UAAI,OAAO,GAAG,SAAS,UAAU,GAAG;AACrB,qBAAA;AAAA,MAAA;AAAA,IACf;AAAA,EACF;AAGK,SAAA;AACT;AAEA,eAAe,YACb,aACmD;AACnD,MAAI,kBAAkB,YAAY,wBAAwB,CAAK,IAAA;AAC7DC,QAAAA,SAAS,oDAAoD;AAC7D;AAAA,EAAA;AAGE,MAAA;AACI,UAAA,QAAQ,MAAM,OAAO,aAAa;AAClCC,cAAA,mBAAmB,MAAM,OAAO;AAC/B,WAAA;AAAA,EAAA,QACD;AACND,QAAAA,SAAS,OAAO;AAAA,EAAA;AAEpB;AAEA,eAAe,YACb,aAC0C;AAC1C,QAAM,eAAe,cAAc,aAAa,SAAS,CAAC,iBAAiB,CAAC;AAC5E,MAAI,cAAc;AAChB,UAAM,WAAW,OAAO,GAAG,cAAc,QAAQ;AAC3C,UAAA,YAAY,WAAW,WAAW;AACxCC,QAAA;AAAA,MACE,uBAAuB,aAAa,OAAO,gBAAgB,SAAS;AAAA,IACtE;AACO,WAAA;AAAA,EAAA;AAETD,MAAAA,SAAS,OAAO;AAClB;AAEA,eAAsB,cACpB,aAC0B;AAC1B,QAAM,SAA0B,CAAC;AACjCE,MAAAA,IAAI,mBAAmB;AACnB,MAAA;AAEF,WAAO,MAAM,MAAM,OAAO,YAAY,GAAG;AACnCD,QAAAA,MAAA,wBAAwB,OAAO,GAAG,OAAO;AAAA,EAAA,QACzC;AACND,QAAAA,SAAS,YAAY;AAAA,EAAA;AAGhB,SAAA,QAAQ,MAAM,YAAY,WAAW;AACrC,SAAA,QAAQ,MAAM,YAAY,WAAW;AAEpCG,cAAA;AACD,SAAA;AACT;;;"}
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
- export declare function defineViteConfig(args?: Args): Promise<import("vite").UserConfig>;
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 modules = await detectModules.detectModules(packageJson$1);
36
- const { viteConfig } = createViteConfig.createViteConfig({ dirs, packageJson: packageJson$1, modules });
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 modules = await detectModules.detectModules(packageJson$1);
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 modules = await detectModules(packageJson);\n const { viteConfig } = createViteConfig({ dirs, packageJson, modules });\n\n return viteConfig;\n}\n\ntype RunResult =\n | {\n error: false;\n }\n | {\n error: true;\n errors: Array<string>;\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 modules = await detectModules(packageJson);\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 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","BuildError","writePackageJson","lineLog","log"],"mappings":"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"}
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 (!error) {
73
- if (modules.babel && hasBabelConfig) {
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 (!error) {\n if (modules.babel && hasBabelConfig) {\n okLog(\"Babel\");\n }\n } else {\n this.error(error);\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;AACd,UAAI,CAAC,OAAO;AACN,YAAA,QAAQ,SAAS,gBAAgB;AACnCC,cAAAA,MAAM,OAAO;AAAA,QAAA;AAAA,MACf,OACK;AACL,aAAK,MAAM,KAAK;AAAA,MAAA;AAAA,IAClB;AAAA,EAEJ;AACF;;"}
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,3 @@
1
+ import type { Plugin } from "vite";
2
+ import type { PackageJson } from "../../packageJson.js";
3
+ export declare function importsPlugin(packageJson: PackageJson, test?: boolean): Plugin;
@@ -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 instanceof Array) {
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 instanceof Array) {\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;AAC5B,QAAI,kBAAkB,OAAO;AACpB,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
+ {"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
- _.run(args.args).then((res) => {
5
- if (res.error) {
6
- for (const error of res.errors) {
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\nrun(args).then((res) => {\n if (res.error) {\n for (const error of res.errors) {\n console.error(\"\\x1b[31m[ERROR]\", error, \"\\x1b[0m\");\n }\n }\n});\n"],"names":["run","args"],"mappings":";;;AAGAA,EAAA,IAAIC,SAAI,EAAE,KAAK,CAAC,QAAQ;AACtB,MAAI,IAAI,OAAO;AACF,eAAA,SAAS,IAAI,QAAQ;AACtB,cAAA,MAAM,mBAAmB,OAAO,SAAS;AAAA,IAAA;AAAA,EACnD;AAEJ,CAAC;"}
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;"}