smartbundle 0.11.0-alpha.1 → 0.11.0-alpha.3

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 (77) hide show
  1. package/__compiled__/cjs/src/buildVite.d.ts +1 -1
  2. package/__compiled__/cjs/src/buildVite.js.map +1 -1
  3. package/__compiled__/cjs/src/createViteConfig.d.ts +3 -1
  4. package/__compiled__/cjs/src/createViteConfig.js +10 -2
  5. package/__compiled__/cjs/src/createViteConfig.js.map +1 -1
  6. package/__compiled__/cjs/src/detectModules.d.ts +7 -0
  7. package/__compiled__/cjs/src/detectModules.js +102 -0
  8. package/__compiled__/cjs/src/detectModules.js.map +1 -0
  9. package/__compiled__/cjs/src/index.js +19 -4
  10. package/__compiled__/cjs/src/index.js.map +1 -1
  11. package/__compiled__/cjs/src/log.d.ts +6 -0
  12. package/__compiled__/cjs/src/log.js +32 -0
  13. package/__compiled__/cjs/src/log.js.map +1 -0
  14. package/__compiled__/cjs/src/plugins/babel/index.d.ts +4 -2
  15. package/__compiled__/cjs/src/plugins/babel/index.js +20 -36
  16. package/__compiled__/cjs/src/plugins/babel/index.js.map +1 -1
  17. package/__compiled__/cjs/src/plugins/react/index.d.ts +4 -4
  18. package/__compiled__/cjs/src/plugins/react/index.js +15 -10
  19. package/__compiled__/cjs/src/plugins/react/index.js.map +1 -1
  20. package/__compiled__/cjs/src/tasks/binsTask.d.ts +1 -1
  21. package/__compiled__/cjs/src/tasks/binsTask.js +4 -1
  22. package/__compiled__/cjs/src/tasks/binsTask.js.map +1 -1
  23. package/__compiled__/cjs/src/tasks/buildTypesTask/buildTypesTask.d.ts +3 -1
  24. package/__compiled__/cjs/src/tasks/buildTypesTask/buildTypesTask.js +11 -32
  25. package/__compiled__/cjs/src/tasks/buildTypesTask/buildTypesTask.js.map +1 -1
  26. package/__compiled__/cjs/src/tasks/buildTypesTask/callTypescript.js +14 -2
  27. package/__compiled__/cjs/src/tasks/buildTypesTask/callTypescript.js.map +1 -1
  28. package/__compiled__/cjs/src/tasks/buildTypesTask/inlineExtensions.d.ts +3 -2
  29. package/__compiled__/cjs/src/tasks/buildTypesTask/inlineExtensions.js +13 -8
  30. package/__compiled__/cjs/src/tasks/buildTypesTask/inlineExtensions.js.map +1 -1
  31. package/__compiled__/cjs/src/tasks/copyStaticFilesTask.d.ts +1 -1
  32. package/__compiled__/cjs/src/tasks/copyStaticFilesTask.js +7 -1
  33. package/__compiled__/cjs/src/tasks/copyStaticFilesTask.js.map +1 -1
  34. package/__compiled__/cjs/src/tasks/jsFilesTask.d.ts +1 -1
  35. package/__compiled__/cjs/src/tasks/jsFilesTask.js +2 -1
  36. package/__compiled__/cjs/src/tasks/jsFilesTask.js.map +1 -1
  37. package/__compiled__/cjs/src/writePackageJson.js +2 -0
  38. package/__compiled__/cjs/src/writePackageJson.js.map +1 -1
  39. package/__compiled__/esm/src/buildVite.d.mts +1 -1
  40. package/__compiled__/esm/src/buildVite.mjs.map +1 -1
  41. package/__compiled__/esm/src/createViteConfig.d.mts +3 -1
  42. package/__compiled__/esm/src/createViteConfig.mjs +10 -2
  43. package/__compiled__/esm/src/createViteConfig.mjs.map +1 -1
  44. package/__compiled__/esm/src/detectModules.d.mts +7 -0
  45. package/__compiled__/esm/src/detectModules.mjs +80 -0
  46. package/__compiled__/esm/src/detectModules.mjs.map +1 -0
  47. package/__compiled__/esm/src/index.mjs +19 -4
  48. package/__compiled__/esm/src/index.mjs.map +1 -1
  49. package/__compiled__/esm/src/log.d.mts +6 -0
  50. package/__compiled__/esm/src/log.mjs +32 -0
  51. package/__compiled__/esm/src/log.mjs.map +1 -0
  52. package/__compiled__/esm/src/plugins/babel/index.d.mts +4 -2
  53. package/__compiled__/esm/src/plugins/babel/index.mjs +20 -14
  54. package/__compiled__/esm/src/plugins/babel/index.mjs.map +1 -1
  55. package/__compiled__/esm/src/plugins/react/index.d.mts +4 -4
  56. package/__compiled__/esm/src/plugins/react/index.mjs +15 -10
  57. package/__compiled__/esm/src/plugins/react/index.mjs.map +1 -1
  58. package/__compiled__/esm/src/tasks/binsTask.d.mts +1 -1
  59. package/__compiled__/esm/src/tasks/binsTask.mjs +4 -1
  60. package/__compiled__/esm/src/tasks/binsTask.mjs.map +1 -1
  61. package/__compiled__/esm/src/tasks/buildTypesTask/buildTypesTask.d.mts +3 -1
  62. package/__compiled__/esm/src/tasks/buildTypesTask/buildTypesTask.mjs +11 -10
  63. package/__compiled__/esm/src/tasks/buildTypesTask/buildTypesTask.mjs.map +1 -1
  64. package/__compiled__/esm/src/tasks/buildTypesTask/callTypescript.mjs +14 -2
  65. package/__compiled__/esm/src/tasks/buildTypesTask/callTypescript.mjs.map +1 -1
  66. package/__compiled__/esm/src/tasks/buildTypesTask/inlineExtensions.d.mts +3 -2
  67. package/__compiled__/esm/src/tasks/buildTypesTask/inlineExtensions.mjs +13 -8
  68. package/__compiled__/esm/src/tasks/buildTypesTask/inlineExtensions.mjs.map +1 -1
  69. package/__compiled__/esm/src/tasks/copyStaticFilesTask.d.mts +1 -1
  70. package/__compiled__/esm/src/tasks/copyStaticFilesTask.mjs +7 -1
  71. package/__compiled__/esm/src/tasks/copyStaticFilesTask.mjs.map +1 -1
  72. package/__compiled__/esm/src/tasks/jsFilesTask.d.mts +1 -1
  73. package/__compiled__/esm/src/tasks/jsFilesTask.mjs +2 -1
  74. package/__compiled__/esm/src/tasks/jsFilesTask.mjs.map +1 -1
  75. package/__compiled__/esm/src/writePackageJson.mjs +2 -0
  76. package/__compiled__/esm/src/writePackageJson.mjs.map +1 -1
  77. package/package.json +1 -1
@@ -1 +1 @@
1
- {"version":3,"file":"binsTask.js","sources":["../../../../../src/tasks/binsTask.ts"],"sourcesContent":["import { mkdir, writeFile } from \"node:fs/promises\";\nimport { join, relative } from \"node:path\";\nimport { type Rollup } from \"vite\";\nimport { reverseMap } from \"./utils.js\";\n\ntype BinsTaskOption = {\n buildOutput: Rollup.OutputChunk[];\n bins: Map<string, string>;\n outBinsDir: string;\n outDir: string;\n};\n\nexport async function binsTask({\n buildOutput,\n bins,\n outBinsDir,\n outDir,\n}: BinsTaskOption) {\n if (bins.size === 0) {\n return new Map<string, string>();\n }\n await mkdir(outBinsDir, { recursive: true });\n const reversedEntrypoints = reverseMap(bins);\n const res = new Map<string, string>();\n for (const el of buildOutput) {\n if (el.facadeModuleId == null) {\n continue;\n }\n if (el.fileName.endsWith(\".js\")) {\n continue;\n }\n const binsNames = reversedEntrypoints.get(el.facadeModuleId);\n if (!binsNames) {\n continue;\n }\n for (const binName of binsNames) {\n const totalPath = relative(outBinsDir, join(outDir, el.fileName));\n const execPath = join(outBinsDir, `${binName}.js`);\n await writeFile(\n execPath,\n `#!/usr/bin/env node\nimport(\"${totalPath}\");\n`,\n );\n res.set(relative(outDir, execPath), binName);\n }\n }\n\n return res;\n}\n"],"names":["mkdir","reverseMap","relative","join","writeFile"],"mappings":";;;;;;AAYA,eAAsB,SAAS;AAAA,EAC7B;AAAA,EACA;AAAA,EACA;AAAA,EACA;AACF,GAAmB;AACb,MAAA,KAAK,SAAS,GAAG;AACnB,+BAAW,IAAoB;AAAA,EACjC;AACA,QAAMA,GAAM,MAAA,YAAY,EAAE,WAAW,KAAM,CAAA;AACrC,QAAA,sBAAsBC,iBAAW,IAAI;AACrC,QAAA,0BAAU;AAChB,aAAW,MAAM,aAAa;AACxB,QAAA,GAAG,kBAAkB,MAAM;AAC7B;AAAA,IACF;AACA,QAAI,GAAG,SAAS,SAAS,KAAK,GAAG;AAC/B;AAAA,IACF;AACA,UAAM,YAAY,oBAAoB,IAAI,GAAG,cAAc;AAC3D,QAAI,CAAC,WAAW;AACd;AAAA,IACF;AACA,eAAW,WAAW,WAAW;AAC/B,YAAM,YAAYC,KAAS,SAAA,YAAYC,KAAAA,KAAK,QAAQ,GAAG,QAAQ,CAAC;AAChE,YAAM,WAAWA,KAAAA,KAAK,YAAY,GAAG,OAAO,KAAK;AAC3C,YAAAC,GAAA;AAAA,QACJ;AAAA,QACA;AAAA,UACE,SAAS;AAAA;AAAA,MAAA;AAGb,UAAI,IAAIF,KAAA,SAAS,QAAQ,QAAQ,GAAG,OAAO;AAAA,IAC7C;AAAA,EACF;AAEO,SAAA;AACT;;"}
1
+ {"version":3,"file":"binsTask.js","sources":["../../../../../src/tasks/binsTask.ts"],"sourcesContent":["import { mkdir, writeFile } from \"node:fs/promises\";\nimport { join, relative } from \"node:path\";\nimport type { Rollup } from \"vite\";\nimport { reverseMap } from \"./utils.js\";\nimport { okLog } from \"../log.js\";\n\ntype BinsTaskOption = {\n buildOutput: Rollup.OutputChunk[];\n bins: Map<string, string>;\n outBinsDir: string;\n outDir: string;\n};\n\nexport async function binsTask({\n buildOutput,\n bins,\n outBinsDir,\n outDir,\n}: BinsTaskOption) {\n if (bins.size === 0) {\n return new Map<string, string>();\n }\n await mkdir(outBinsDir, { recursive: true });\n const reversedEntrypoints = reverseMap(bins);\n const res = new Map<string, string>();\n for (const el of buildOutput) {\n if (el.facadeModuleId == null) {\n continue;\n }\n if (el.fileName.endsWith(\".js\")) {\n continue;\n }\n const binsNames = reversedEntrypoints.get(el.facadeModuleId);\n if (!binsNames) {\n continue;\n }\n for (const binName of binsNames) {\n const totalPath = relative(outBinsDir, join(outDir, el.fileName));\n const execPath = join(outBinsDir, `${binName}.js`);\n await writeFile(\n execPath,\n `#!/usr/bin/env node\nimport(\"${totalPath}\");\n`,\n );\n res.set(relative(outDir, execPath), binName);\n }\n }\n\n if (res.size) {\n okLog(\"Bin:\", [...res.values()].join(\", \"));\n }\n\n return res;\n}\n"],"names":["mkdir","reverseMap","relative","join","writeFile","okLog"],"mappings":";;;;;;AAaA,eAAsB,SAAS;AAAA,EAC7B;AAAA,EACA;AAAA,EACA;AAAA,EACA;AACF,GAAmB;AACb,MAAA,KAAK,SAAS,GAAG;AACnB,+BAAW,IAAoB;AAAA,EACjC;AACA,QAAMA,GAAM,MAAA,YAAY,EAAE,WAAW,KAAM,CAAA;AACrC,QAAA,sBAAsBC,iBAAW,IAAI;AACrC,QAAA,0BAAU;AAChB,aAAW,MAAM,aAAa;AACxB,QAAA,GAAG,kBAAkB,MAAM;AAC7B;AAAA,IACF;AACA,QAAI,GAAG,SAAS,SAAS,KAAK,GAAG;AAC/B;AAAA,IACF;AACA,UAAM,YAAY,oBAAoB,IAAI,GAAG,cAAc;AAC3D,QAAI,CAAC,WAAW;AACd;AAAA,IACF;AACA,eAAW,WAAW,WAAW;AAC/B,YAAM,YAAYC,KAAS,SAAA,YAAYC,KAAAA,KAAK,QAAQ,GAAG,QAAQ,CAAC;AAChE,YAAM,WAAWA,KAAAA,KAAK,YAAY,GAAG,OAAO,KAAK;AAC3C,YAAAC,GAAA;AAAA,QACJ;AAAA,QACA;AAAA,UACE,SAAS;AAAA;AAAA,MAAA;AAGb,UAAI,IAAIF,KAAA,SAAS,QAAQ,QAAQ,GAAG,OAAO;AAAA,IAC7C;AAAA,EACF;AAEA,MAAI,IAAI,MAAM;AACNG,cAAA,QAAQ,CAAC,GAAG,IAAI,QAAQ,EAAE,KAAK,IAAI,CAAC;AAAA,EAC5C;AAEO,SAAA;AACT;;"}
@@ -1,9 +1,11 @@
1
1
  import { type Rollup } from "vite";
2
+ import type { DetectedModules } from "../../detectModules.js";
2
3
  type BuildTypesTaskOption = {
3
4
  buildOutput: Rollup.OutputChunk[];
4
5
  entrypoints: Map<string, string>;
5
6
  sourceDir: string;
6
7
  outDir: string;
8
+ modules: DetectedModules;
7
9
  };
8
- export declare function buildTypesTask({ buildOutput, entrypoints, sourceDir, outDir, }: BuildTypesTaskOption): Promise<Map<string, string>>;
10
+ export declare function buildTypesTask({ buildOutput, entrypoints, sourceDir, outDir, modules, }: BuildTypesTaskOption): Promise<Map<string, string>>;
9
11
  export {};
@@ -1,52 +1,30 @@
1
1
  "use strict";
2
- var __create = Object.create;
3
- var __defProp = Object.defineProperty;
4
- var __getOwnPropDesc = Object.getOwnPropertyDescriptor;
5
- var __getOwnPropNames = Object.getOwnPropertyNames;
6
- var __getProtoOf = Object.getPrototypeOf;
7
- var __hasOwnProp = Object.prototype.hasOwnProperty;
8
- var __copyProps = (to, from, except, desc) => {
9
- if (from && typeof from === "object" || typeof from === "function") {
10
- for (let key of __getOwnPropNames(from))
11
- if (!__hasOwnProp.call(to, key) && key !== except)
12
- __defProp(to, key, { get: () => from[key], enumerable: !(desc = __getOwnPropDesc(from, key)) || desc.enumerable });
13
- }
14
- return to;
15
- };
16
- var __toESM = (mod, isNodeMode, target) => (target = mod != null ? __create(__getProtoOf(mod)) : {}, __copyProps(
17
- // If the importer is in node compatibility mode or this is not an ESM
18
- // file that has been converted to a CommonJS file using a Babel-
19
- // compatible transform (i.e. "__esModule" has not been set), then set
20
- // "default" to the CommonJS "module.exports" for node compatibility.
21
- isNodeMode || !mod || !mod.__esModule ? __defProp(target, "default", { value: mod, enumerable: true }) : target,
22
- mod
23
- ));
24
2
  Object.defineProperty(exports, Symbol.toStringTag, { value: "Module" });
25
3
  require("vite");
26
- const errors = require("../../errors.js");
27
4
  const callTypescript = require("./callTypescript.js");
28
5
  const utils = require("../utils.js");
6
+ const log = require("../../log.js");
29
7
  async function buildTypesTask({
30
8
  buildOutput,
31
9
  entrypoints,
32
10
  sourceDir,
33
- outDir
11
+ outDir,
12
+ modules
34
13
  }) {
35
14
  const reversedEntrypoints = utils.reverseMap(entrypoints);
36
15
  const tsEntrypoints = [...entrypoints.values()].filter(
37
16
  (entry) => entry.endsWith(".ts")
38
17
  );
39
- if (tsEntrypoints.length === 0) {
18
+ if (tsEntrypoints.length === 0 || modules.ts == null) {
40
19
  return /* @__PURE__ */ new Map();
41
20
  }
42
- let ts;
43
- try {
44
- ts = (await import("typescript")).default;
45
- } catch (e) {
46
- throw errors.errors.typescriptNotFound;
47
- }
48
21
  const files = buildOutput.map((el) => el.facadeModuleId ?? "");
49
- const dtsMap = await callTypescript.callTypescript({ ts, sourceDir, files, outDir });
22
+ const dtsMap = await callTypescript.callTypescript({
23
+ ts: modules.ts,
24
+ sourceDir,
25
+ files,
26
+ outDir
27
+ });
50
28
  const result = /* @__PURE__ */ new Map();
51
29
  for (const [types, source] of dtsMap) {
52
30
  const exportPath = reversedEntrypoints.get(source);
@@ -57,6 +35,7 @@ async function buildTypesTask({
57
35
  result.set(types, path);
58
36
  }
59
37
  }
38
+ log.okLog(".d.ts");
60
39
  return result;
61
40
  }
62
41
  exports.buildTypesTask = buildTypesTask;
@@ -1 +1 @@
1
- {"version":3,"file":"buildTypesTask.js","sources":["../../../../../../src/tasks/buildTypesTask/buildTypesTask.ts"],"sourcesContent":["import { type Rollup } from \"vite\";\nimport { errors } from \"../../errors.js\";\nimport { callTypescript } from \"./callTypescript.js\";\nimport { reverseMap } from \"../utils.js\";\n\ntype BuildTypesTaskOption = {\n buildOutput: Rollup.OutputChunk[];\n entrypoints: Map<string, string>;\n sourceDir: string;\n outDir: string;\n};\n\nexport async function buildTypesTask({\n buildOutput,\n entrypoints,\n sourceDir,\n outDir,\n}: BuildTypesTaskOption) {\n const reversedEntrypoints = reverseMap(entrypoints);\n const tsEntrypoints = [...entrypoints.values()].filter((entry) =>\n entry.endsWith(\".ts\"),\n );\n if (tsEntrypoints.length === 0) {\n return new Map<string, string>();\n }\n\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 (e) {\n throw errors.typescriptNotFound;\n }\n\n const files = buildOutput.map((el) => el.facadeModuleId ?? \"\");\n const dtsMap = await callTypescript({ ts, sourceDir, files, outDir });\n\n const result = new Map<string, string>();\n for (const [types, source] of dtsMap) {\n const exportPath = reversedEntrypoints.get(source);\n if (!exportPath) {\n continue;\n }\n for (const path of exportPath) {\n result.set(types, path);\n }\n }\n\n return result;\n}\n"],"names":["reverseMap","errors","callTypescript"],"mappings":";;;;;;;;;;;;;;;;;;;;;;;;;;;;AAYA,eAAsB,eAAe;AAAA,EACnC;AAAA,EACA;AAAA,EACA;AAAA,EACA;AACF,GAAyB;AACjB,QAAA,sBAAsBA,iBAAW,WAAW;AAClD,QAAM,gBAAgB,CAAC,GAAG,YAAY,OAAA,CAAQ,EAAE;AAAA,IAAO,CAAC,UACtD,MAAM,SAAS,KAAK;AAAA,EAAA;AAElB,MAAA,cAAc,WAAW,GAAG;AAC9B,+BAAW,IAAoB;AAAA,EACjC;AAEI,MAAA;AACA,MAAA;AAEI,UAAA,MAAM,OAAO,YAAY,GAAG;AAAA,WAC3B,GAAG;AACV,UAAMC,OAAAA,OAAO;AAAA,EACf;AAEA,QAAM,QAAQ,YAAY,IAAI,CAAC,OAAO,GAAG,kBAAkB,EAAE;AACvD,QAAA,SAAS,MAAMC,eAAAA,eAAe,EAAE,IAAI,WAAW,OAAO,QAAQ;AAE9D,QAAA,6BAAa;AACnB,aAAW,CAAC,OAAO,MAAM,KAAK,QAAQ;AAC9B,UAAA,aAAa,oBAAoB,IAAI,MAAM;AACjD,QAAI,CAAC,YAAY;AACf;AAAA,IACF;AACA,eAAW,QAAQ,YAAY;AACtB,aAAA,IAAI,OAAO,IAAI;AAAA,IACxB;AAAA,EACF;AAEO,SAAA;AACT;;"}
1
+ {"version":3,"file":"buildTypesTask.js","sources":["../../../../../../src/tasks/buildTypesTask/buildTypesTask.ts"],"sourcesContent":["import { type Rollup } from \"vite\";\nimport { callTypescript } from \"./callTypescript.js\";\nimport { reverseMap } from \"../utils.js\";\nimport { okLog } from \"../../log.js\";\nimport type { DetectedModules } from \"../../detectModules.js\";\n\ntype BuildTypesTaskOption = {\n buildOutput: Rollup.OutputChunk[];\n entrypoints: Map<string, string>;\n sourceDir: string;\n outDir: string;\n modules: DetectedModules;\n};\n\nexport async function buildTypesTask({\n buildOutput,\n entrypoints,\n sourceDir,\n outDir,\n modules,\n}: BuildTypesTaskOption) {\n const reversedEntrypoints = reverseMap(entrypoints);\n const tsEntrypoints = [...entrypoints.values()].filter((entry) =>\n entry.endsWith(\".ts\"),\n );\n if (tsEntrypoints.length === 0 || modules.ts == null) {\n return new Map<string, string>();\n }\n\n const files = buildOutput.map((el) => el.facadeModuleId ?? \"\");\n const dtsMap = await callTypescript({\n ts: modules.ts,\n sourceDir,\n files,\n outDir,\n });\n\n const result = new Map<string, string>();\n for (const [types, source] of dtsMap) {\n const exportPath = reversedEntrypoints.get(source);\n if (!exportPath) {\n continue;\n }\n for (const path of exportPath) {\n result.set(types, path);\n }\n }\n\n okLog(\".d.ts\");\n\n return result;\n}\n"],"names":["reverseMap","callTypescript","okLog"],"mappings":";;;;;;AAcA,eAAsB,eAAe;AAAA,EACnC;AAAA,EACA;AAAA,EACA;AAAA,EACA;AAAA,EACA;AACF,GAAyB;AACjB,QAAA,sBAAsBA,iBAAW,WAAW;AAClD,QAAM,gBAAgB,CAAC,GAAG,YAAY,OAAA,CAAQ,EAAE;AAAA,IAAO,CAAC,UACtD,MAAM,SAAS,KAAK;AAAA,EAAA;AAEtB,MAAI,cAAc,WAAW,KAAK,QAAQ,MAAM,MAAM;AACpD,+BAAW,IAAoB;AAAA,EACjC;AAEA,QAAM,QAAQ,YAAY,IAAI,CAAC,OAAO,GAAG,kBAAkB,EAAE;AACvD,QAAA,SAAS,MAAMC,8BAAe;AAAA,IAClC,IAAI,QAAQ;AAAA,IACZ;AAAA,IACA;AAAA,IACA;AAAA,EAAA,CACD;AAEK,QAAA,6BAAa;AACnB,aAAW,CAAC,OAAO,MAAM,KAAK,QAAQ;AAC9B,UAAA,aAAa,oBAAoB,IAAI,MAAM;AACjD,QAAI,CAAC,YAAY;AACf;AAAA,IACF;AACA,eAAW,QAAQ,YAAY;AACtB,aAAA,IAAI,OAAO,IAAI;AAAA,IACxB;AAAA,EACF;AAEAC,MAAA,MAAM,OAAO;AAEN,SAAA;AACT;;"}
@@ -21,6 +21,12 @@ function _interopNamespaceDefault(e) {
21
21
  }
22
22
  const path__namespace = /* @__PURE__ */ _interopNamespaceDefault(path);
23
23
  const fs__namespace = /* @__PURE__ */ _interopNamespaceDefault(fs);
24
+ function makeFileExists(outDir, type, filePath) {
25
+ return (p) => {
26
+ const dir = path__namespace.join(outDir, "__compiled__", type, path__namespace.dirname(filePath));
27
+ return fs__namespace.existsSync(path__namespace.join(dir, p));
28
+ };
29
+ }
24
30
  async function callTypescript({
25
31
  ts,
26
32
  sourceDir,
@@ -63,10 +69,16 @@ async function callTypescript({
63
69
  const esmFinalPath = finalEsmPath.replace(/\.d\.ts$/, ".d.mts");
64
70
  sourceToDtsMap.set(esmFinalPath, sourceFileName);
65
71
  fs__namespace.mkdirSync(path__namespace.dirname(esmFinalPath), { recursive: true });
66
- fs__namespace.writeFileSync(esmFinalPath, inlineExtensions.inlineExtensionsMjs(data));
72
+ fs__namespace.writeFileSync(
73
+ esmFinalPath,
74
+ inlineExtensions.inlineExtensionsMjs(data, makeFileExists(outDir, "esm", relativePath))
75
+ );
67
76
  const finalCjsPath = path__namespace.join(outDir, "__compiled__", "cjs", relativePath);
68
77
  const cjsFinalPath = finalCjsPath.replace(/\.d\.ts$/, ".d.ts");
69
- fs__namespace.writeFileSync(cjsFinalPath, inlineExtensions.inlineExtensionsCjs(data));
78
+ fs__namespace.writeFileSync(
79
+ cjsFinalPath,
80
+ inlineExtensions.inlineExtensionsCjs(data, makeFileExists(outDir, "cjs", relativePath))
81
+ );
70
82
  sourceToDtsMap.set(cjsFinalPath, sourceFileName);
71
83
  });
72
84
  return sourceToDtsMap;
@@ -1 +1 @@
1
- {"version":3,"file":"callTypescript.js","sources":["../../../../../../src/tasks/buildTypesTask/callTypescript.ts"],"sourcesContent":["import * as path from \"node:path\";\nimport * as fs from \"node:fs\";\nimport { inlineExtensionsMjs, inlineExtensionsCjs } from \"./inlineExtensions.js\";\n\ntype BuildTypesOptions = {\n ts: typeof import(\"typescript\");\n sourceDir: string;\n files: string[];\n outDir: string;\n};\n\n// It needs for vscode. It cannot resolve the import/export if it has no extension\nconst reexportRegex = /export { (.+?) } from \"(.+)\"/g;\nfunction inlineExtensionMjs(content: string) {}\n\nexport async function callTypescript({\n ts,\n sourceDir,\n files,\n outDir,\n}: BuildTypesOptions) {\n const configPath = path.join(sourceDir, \"tsconfig.json\");\n const configFile = ts.readConfigFile(configPath, (path) =>\n // https://github.com/XaveScor/bobrik/issues/22\n fs.readFileSync(path, \"utf-8\"),\n );\n\n const parsedCommandLine = ts.parseJsonConfigFileContent(\n configFile.config,\n ts.sys,\n 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 // https://github.com/XaveScor/bobrik/issues/22#issuecomment-2308552352\n noEmit: false,\n },\n configPath,\n );\n\n const host = ts.createCompilerHost(parsedCommandLine.options);\n\n const sourceToDtsMap = new Map<string, string>();\n const program = ts.createProgram(files, parsedCommandLine.options, host);\n program.emit(undefined, (fileName, data) => {\n // .d.ts for cjs because \"type\": \"commonjs\" in package.json\n // .d.mts for esm\n const relativePath = path.relative(sourceDir, fileName);\n const sourceFileName = fileName.replace(/\\.d\\.ts$/, \".ts\"); // Assuming source files have .ts extension\n\n const finalEsmPath = path.join(outDir, \"__compiled__\", \"esm\", relativePath);\n const esmFinalPath = finalEsmPath.replace(/\\.d\\.ts$/, \".d.mts\");\n sourceToDtsMap.set(esmFinalPath, sourceFileName);\n fs.mkdirSync(path.dirname(esmFinalPath), { recursive: true });\n fs.writeFileSync(esmFinalPath, inlineExtensionsMjs(data));\n\n const finalCjsPath = path.join(outDir, \"__compiled__\", \"cjs\", relativePath);\n const cjsFinalPath = finalCjsPath.replace(/\\.d\\.ts$/, \".d.ts\");\n fs.writeFileSync(cjsFinalPath, inlineExtensionsCjs(data));\n sourceToDtsMap.set(cjsFinalPath, sourceFileName);\n });\n\n return sourceToDtsMap;\n}\n"],"names":["path","fs","inlineExtensionsMjs","inlineExtensionsCjs"],"mappings":";;;;;;;;;;;;;;;;;;;;;;;AAeA,eAAsB,eAAe;AAAA,EACnC;AAAA,EACA;AAAA,EACA;AAAA,EACA;AACF,GAAsB;AACpB,QAAM,aAAaA,gBAAK,KAAK,WAAW,eAAe;AACvD,QAAM,aAAa,GAAG;AAAA,IAAe;AAAA,IAAY,CAACA;AAAAA;AAAAA,MAEhDC,cAAG,aAAaD,OAAM,OAAO;AAAA;AAAA,EAAA;AAG/B,QAAM,oBAAoB,GAAG;AAAA,IAC3B,WAAW;AAAA,IACX,GAAG;AAAA,IACH;AAAA,IACA;AAAA,MACE,aAAa;AAAA,MACb,qBAAqB;AAAA,MACrB,QAAQ;AAAA,MACR,kBAAkB;AAAA,MAClB,qBAAqB;AAAA,MACrB,8BAA8B;AAAA,MAC9B,cAAc;AAAA,MACd,qBAAqB;AAAA;AAAA,MAErB,QAAQ;AAAA,IACV;AAAA,IACA;AAAA,EAAA;AAGF,QAAM,OAAO,GAAG,mBAAmB,kBAAkB,OAAO;AAEtD,QAAA,qCAAqB;AAC3B,QAAM,UAAU,GAAG,cAAc,OAAO,kBAAkB,SAAS,IAAI;AACvE,UAAQ,KAAK,QAAW,CAAC,UAAU,SAAS;AAG1C,UAAM,eAAeA,gBAAK,SAAS,WAAW,QAAQ;AACtD,UAAM,iBAAiB,SAAS,QAAQ,YAAY,KAAK;AAEzD,UAAM,eAAeA,gBAAK,KAAK,QAAQ,gBAAgB,OAAO,YAAY;AAC1E,UAAM,eAAe,aAAa,QAAQ,YAAY,QAAQ;AAC/C,mBAAA,IAAI,cAAc,cAAc;AAC5CC,kBAAA,UAAUD,gBAAK,QAAQ,YAAY,GAAG,EAAE,WAAW,MAAM;AAC5DC,kBAAG,cAAc,cAAcC,iBAAAA,oBAAoB,IAAI,CAAC;AAExD,UAAM,eAAeF,gBAAK,KAAK,QAAQ,gBAAgB,OAAO,YAAY;AAC1E,UAAM,eAAe,aAAa,QAAQ,YAAY,OAAO;AAC7DC,kBAAG,cAAc,cAAcE,iBAAAA,oBAAoB,IAAI,CAAC;AACzC,mBAAA,IAAI,cAAc,cAAc;AAAA,EAAA,CAChD;AAEM,SAAA;AACT;;"}
1
+ {"version":3,"file":"callTypescript.js","sources":["../../../../../../src/tasks/buildTypesTask/callTypescript.ts"],"sourcesContent":["import * as path from \"node:path\";\nimport * as fs from \"node:fs\";\nimport {\n inlineExtensionsMjs,\n inlineExtensionsCjs,\n} from \"./inlineExtensions.js\";\n\ntype BuildTypesOptions = {\n ts: typeof import(\"typescript\");\n sourceDir: string;\n files: string[];\n outDir: string;\n};\n\nfunction makeFileExists(outDir: string, type: \"esm\" | \"cjs\", filePath: string) {\n return (p: string) => {\n const dir = path.join(outDir, \"__compiled__\", type, path.dirname(filePath));\n return fs.existsSync(path.join(dir, p));\n };\n}\n\nexport async function callTypescript({\n ts,\n sourceDir,\n files,\n outDir,\n}: BuildTypesOptions) {\n const configPath = path.join(sourceDir, \"tsconfig.json\");\n const configFile = ts.readConfigFile(configPath, (path) =>\n // https://github.com/XaveScor/bobrik/issues/22\n fs.readFileSync(path, \"utf-8\"),\n );\n\n const parsedCommandLine = ts.parseJsonConfigFileContent(\n configFile.config,\n ts.sys,\n 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 // https://github.com/XaveScor/bobrik/issues/22#issuecomment-2308552352\n noEmit: false,\n },\n configPath,\n );\n\n const host = ts.createCompilerHost(parsedCommandLine.options);\n\n const sourceToDtsMap = new Map<string, string>();\n const program = ts.createProgram(files, parsedCommandLine.options, host);\n program.emit(undefined, (fileName, data) => {\n // .d.ts for cjs because \"type\": \"commonjs\" in package.json\n // .d.mts for esm\n const relativePath = path.relative(sourceDir, fileName);\n const sourceFileName = fileName.replace(/\\.d\\.ts$/, \".ts\"); // Assuming source files have .ts extension\n\n const finalEsmPath = path.join(outDir, \"__compiled__\", \"esm\", relativePath);\n const esmFinalPath = finalEsmPath.replace(/\\.d\\.ts$/, \".d.mts\");\n sourceToDtsMap.set(esmFinalPath, sourceFileName);\n fs.mkdirSync(path.dirname(esmFinalPath), { recursive: true });\n fs.writeFileSync(\n esmFinalPath,\n inlineExtensionsMjs(data, makeFileExists(outDir, \"esm\", relativePath)),\n );\n\n const finalCjsPath = path.join(outDir, \"__compiled__\", \"cjs\", relativePath);\n const cjsFinalPath = finalCjsPath.replace(/\\.d\\.ts$/, \".d.ts\");\n fs.writeFileSync(\n cjsFinalPath,\n inlineExtensionsCjs(data, makeFileExists(outDir, \"cjs\", relativePath)),\n );\n sourceToDtsMap.set(cjsFinalPath, sourceFileName);\n });\n\n return sourceToDtsMap;\n}\n"],"names":["path","fs","inlineExtensionsMjs","inlineExtensionsCjs"],"mappings":";;;;;;;;;;;;;;;;;;;;;;;AAcA,SAAS,eAAe,QAAgB,MAAqB,UAAkB;AAC7E,SAAO,CAAC,MAAc;AACd,UAAA,MAAMA,gBAAK,KAAK,QAAQ,gBAAgB,MAAMA,gBAAK,QAAQ,QAAQ,CAAC;AAC1E,WAAOC,cAAG,WAAWD,gBAAK,KAAK,KAAK,CAAC,CAAC;AAAA,EAAA;AAE1C;AAEA,eAAsB,eAAe;AAAA,EACnC;AAAA,EACA;AAAA,EACA;AAAA,EACA;AACF,GAAsB;AACpB,QAAM,aAAaA,gBAAK,KAAK,WAAW,eAAe;AACvD,QAAM,aAAa,GAAG;AAAA,IAAe;AAAA,IAAY,CAACA;AAAAA;AAAAA,MAEhDC,cAAG,aAAaD,OAAM,OAAO;AAAA;AAAA,EAAA;AAG/B,QAAM,oBAAoB,GAAG;AAAA,IAC3B,WAAW;AAAA,IACX,GAAG;AAAA,IACH;AAAA,IACA;AAAA,MACE,aAAa;AAAA,MACb,qBAAqB;AAAA,MACrB,QAAQ;AAAA,MACR,kBAAkB;AAAA,MAClB,qBAAqB;AAAA,MACrB,8BAA8B;AAAA,MAC9B,cAAc;AAAA,MACd,qBAAqB;AAAA;AAAA,MAErB,QAAQ;AAAA,IACV;AAAA,IACA;AAAA,EAAA;AAGF,QAAM,OAAO,GAAG,mBAAmB,kBAAkB,OAAO;AAEtD,QAAA,qCAAqB;AAC3B,QAAM,UAAU,GAAG,cAAc,OAAO,kBAAkB,SAAS,IAAI;AACvE,UAAQ,KAAK,QAAW,CAAC,UAAU,SAAS;AAG1C,UAAM,eAAeA,gBAAK,SAAS,WAAW,QAAQ;AACtD,UAAM,iBAAiB,SAAS,QAAQ,YAAY,KAAK;AAEzD,UAAM,eAAeA,gBAAK,KAAK,QAAQ,gBAAgB,OAAO,YAAY;AAC1E,UAAM,eAAe,aAAa,QAAQ,YAAY,QAAQ;AAC/C,mBAAA,IAAI,cAAc,cAAc;AAC5CC,kBAAA,UAAUD,gBAAK,QAAQ,YAAY,GAAG,EAAE,WAAW,MAAM;AACzDC,kBAAA;AAAA,MACD;AAAA,MACAC,qCAAoB,MAAM,eAAe,QAAQ,OAAO,YAAY,CAAC;AAAA,IAAA;AAGvE,UAAM,eAAeF,gBAAK,KAAK,QAAQ,gBAAgB,OAAO,YAAY;AAC1E,UAAM,eAAe,aAAa,QAAQ,YAAY,OAAO;AAC1DC,kBAAA;AAAA,MACD;AAAA,MACAE,qCAAoB,MAAM,eAAe,QAAQ,OAAO,YAAY,CAAC;AAAA,IAAA;AAExD,mBAAA,IAAI,cAAc,cAAc;AAAA,EAAA,CAChD;AAEM,SAAA;AACT;;"}
@@ -1,2 +1,3 @@
1
- export declare function inlineExtensionsMjs(content: string): string;
2
- export declare function inlineExtensionsCjs(content: string): string;
1
+ export type FileExists = (path: string) => boolean;
2
+ export declare function inlineExtensionsMjs(content: string, fileExists: FileExists): string;
3
+ export declare function inlineExtensionsCjs(content: string, fileExists: FileExists): string;
@@ -1,26 +1,31 @@
1
1
  "use strict";
2
2
  Object.defineProperty(exports, Symbol.toStringTag, { value: "Module" });
3
+ const path = require("node:path");
3
4
  const importExportRegex = /(?:import|export)\s*(?:type\s*)?(?:(?:{\s*.+?\s*}|\*|[^{}\s]+)\s*from\s*)?["'](.+)["']/g;
4
5
  const dynamicImportRegex = /import\(["'](.+)["']\)/g;
5
- function addExtension(content, regex, ext) {
6
+ function addExtension(content, regex, ext, fileExists) {
6
7
  return content.replace(regex, (match, p1) => {
7
8
  if (!p1.startsWith(".")) {
8
9
  return match;
9
10
  }
10
11
  if (!p1.endsWith(".cjs") && !p1.endsWith(".mjs") && !p1.endsWith(".js")) {
11
- return match.replace(p1, `${p1}${ext}`);
12
+ const file = `${p1}${ext}`;
13
+ if (fileExists(file)) return match.replace(p1, file);
14
+ const indexFile = "./" + path.join(p1, `index${ext}`);
15
+ if (fileExists(indexFile)) return match.replace(p1, indexFile);
16
+ return match;
12
17
  }
13
18
  return match;
14
19
  });
15
20
  }
16
- function inlineExtensionsMjs(content) {
17
- content = addExtension(content, importExportRegex, ".mjs");
18
- content = addExtension(content, dynamicImportRegex, ".mjs");
21
+ function inlineExtensionsMjs(content, fileExists) {
22
+ content = addExtension(content, importExportRegex, ".mjs", fileExists);
23
+ content = addExtension(content, dynamicImportRegex, ".mjs", fileExists);
19
24
  return content;
20
25
  }
21
- function inlineExtensionsCjs(content) {
22
- content = addExtension(content, importExportRegex, ".js");
23
- content = addExtension(content, dynamicImportRegex, ".js");
26
+ function inlineExtensionsCjs(content, fileExists) {
27
+ content = addExtension(content, importExportRegex, ".js", fileExists);
28
+ content = addExtension(content, dynamicImportRegex, ".js", fileExists);
24
29
  return content;
25
30
  }
26
31
  exports.inlineExtensionsCjs = inlineExtensionsCjs;
@@ -1 +1 @@
1
- {"version":3,"file":"inlineExtensions.js","sources":["../../../../../../src/tasks/buildTypesTask/inlineExtensions.ts"],"sourcesContent":["// It needs for VSCode. It cannot resolve the import/export if it has no extension\n\nconst importExportRegex =\n /(?:import|export)\\s*(?:type\\s*)?(?:(?:{\\s*.+?\\s*}|\\*|[^{}\\s]+)\\s*from\\s*)?[\"'](.+)[\"']/g;\nconst dynamicImportRegex = /import\\([\"'](.+)[\"']\\)/g;\n\nfunction addExtension(content: string, regex: RegExp, ext: string) {\n return content.replace(regex, (match, p1) => {\n if (!p1.startsWith(\".\")) {\n return match;\n }\n if (!p1.endsWith(\".cjs\") && !p1.endsWith(\".mjs\") && !p1.endsWith(\".js\")) {\n return match.replace(p1, `${p1}${ext}`);\n }\n return match;\n });\n}\n\nexport function inlineExtensionsMjs(content: string) {\n content = addExtension(content, importExportRegex, \".mjs\");\n content = addExtension(content, dynamicImportRegex, \".mjs\");\n return content;\n}\n\nexport function inlineExtensionsCjs(content: string) {\n content = addExtension(content, importExportRegex, \".js\");\n content = addExtension(content, dynamicImportRegex, \".js\");\n return content;\n}\n"],"names":[],"mappings":";;AAEA,MAAM,oBACJ;AACF,MAAM,qBAAqB;AAE3B,SAAS,aAAa,SAAiB,OAAe,KAAa;AACjE,SAAO,QAAQ,QAAQ,OAAO,CAAC,OAAO,OAAO;AAC3C,QAAI,CAAC,GAAG,WAAW,GAAG,GAAG;AAChB,aAAA;AAAA,IACT;AACA,QAAI,CAAC,GAAG,SAAS,MAAM,KAAK,CAAC,GAAG,SAAS,MAAM,KAAK,CAAC,GAAG,SAAS,KAAK,GAAG;AACvE,aAAO,MAAM,QAAQ,IAAI,GAAG,EAAE,GAAG,GAAG,EAAE;AAAA,IACxC;AACO,WAAA;AAAA,EAAA,CACR;AACH;AAEO,SAAS,oBAAoB,SAAiB;AACzC,YAAA,aAAa,SAAS,mBAAmB,MAAM;AAC/C,YAAA,aAAa,SAAS,oBAAoB,MAAM;AACnD,SAAA;AACT;AAEO,SAAS,oBAAoB,SAAiB;AACzC,YAAA,aAAa,SAAS,mBAAmB,KAAK;AAC9C,YAAA,aAAa,SAAS,oBAAoB,KAAK;AAClD,SAAA;AACT;;;"}
1
+ {"version":3,"file":"inlineExtensions.js","sources":["../../../../../../src/tasks/buildTypesTask/inlineExtensions.ts"],"sourcesContent":["import { join } from \"node:path\";\n\n// It needs for VSCode. It cannot resolve the import/export if it has no extension\n\nconst importExportRegex =\n /(?:import|export)\\s*(?:type\\s*)?(?:(?:{\\s*.+?\\s*}|\\*|[^{}\\s]+)\\s*from\\s*)?[\"'](.+)[\"']/g;\nconst dynamicImportRegex = /import\\([\"'](.+)[\"']\\)/g;\n\nexport type FileExists = (path: string) => boolean;\n\nfunction addExtension(\n content: string,\n regex: RegExp,\n ext: string,\n fileExists: FileExists,\n) {\n return content.replace(regex, (match, p1) => {\n if (!p1.startsWith(\".\")) {\n return match;\n }\n\n if (!p1.endsWith(\".cjs\") && !p1.endsWith(\".mjs\") && !p1.endsWith(\".js\")) {\n const file = `${p1}${ext}`;\n if (fileExists(file)) return match.replace(p1, file);\n const indexFile = \"./\" + join(p1, `index${ext}`);\n if (fileExists(indexFile)) return match.replace(p1, indexFile);\n\n return match;\n }\n return match;\n });\n}\n\nexport function inlineExtensionsMjs(content: string, fileExists: FileExists) {\n content = addExtension(content, importExportRegex, \".mjs\", fileExists);\n content = addExtension(content, dynamicImportRegex, \".mjs\", fileExists);\n return content;\n}\n\nexport function inlineExtensionsCjs(content: string, fileExists: FileExists) {\n content = addExtension(content, importExportRegex, \".js\", fileExists);\n content = addExtension(content, dynamicImportRegex, \".js\", fileExists);\n return content;\n}\n"],"names":["join"],"mappings":";;;AAIA,MAAM,oBACJ;AACF,MAAM,qBAAqB;AAI3B,SAAS,aACP,SACA,OACA,KACA,YACA;AACA,SAAO,QAAQ,QAAQ,OAAO,CAAC,OAAO,OAAO;AAC3C,QAAI,CAAC,GAAG,WAAW,GAAG,GAAG;AAChB,aAAA;AAAA,IACT;AAEA,QAAI,CAAC,GAAG,SAAS,MAAM,KAAK,CAAC,GAAG,SAAS,MAAM,KAAK,CAAC,GAAG,SAAS,KAAK,GAAG;AACvE,YAAM,OAAO,GAAG,EAAE,GAAG,GAAG;AACxB,UAAI,WAAW,IAAI,UAAU,MAAM,QAAQ,IAAI,IAAI;AACnD,YAAM,YAAY,OAAOA,UAAK,IAAI,QAAQ,GAAG,EAAE;AAC/C,UAAI,WAAW,SAAS,UAAU,MAAM,QAAQ,IAAI,SAAS;AAEtD,aAAA;AAAA,IACT;AACO,WAAA;AAAA,EAAA,CACR;AACH;AAEgB,SAAA,oBAAoB,SAAiB,YAAwB;AAC3E,YAAU,aAAa,SAAS,mBAAmB,QAAQ,UAAU;AACrE,YAAU,aAAa,SAAS,oBAAoB,QAAQ,UAAU;AAC/D,SAAA;AACT;AAEgB,SAAA,oBAAoB,SAAiB,YAAwB;AAC3E,YAAU,aAAa,SAAS,mBAAmB,OAAO,UAAU;AACpE,YAAU,aAAa,SAAS,oBAAoB,OAAO,UAAU;AAC9D,SAAA;AACT;;;"}
@@ -1 +1 @@
1
- export declare function copyStaticFilesTask(sourceDir: string, outDir: string): Promise<void>;
1
+ export declare function copyStaticFilesTask(sourceDir: string, outDir: string): Promise<Set<string>>;
@@ -2,12 +2,15 @@
2
2
  Object.defineProperty(exports, Symbol.toStringTag, { value: "Module" });
3
3
  const path = require("node:path");
4
4
  const fs = require("node:fs/promises");
5
+ const log = require("../log.js");
5
6
  async function copyStaticFilesTask(sourceDir, outDir) {
6
- return copyStaticFiles({
7
+ const files = await copyStaticFiles({
7
8
  relativeFiles: /* @__PURE__ */ new Set(["readme.md"]),
8
9
  sourceDir,
9
10
  outDir
10
11
  });
12
+ log.okLog("Static files:", [...files].join(", "));
13
+ return files;
11
14
  }
12
15
  async function copyStaticFiles({
13
16
  sourceDir,
@@ -19,6 +22,7 @@ async function copyStaticFiles({
19
22
  (f) => [f.toLowerCase(), f]
20
23
  )
21
24
  );
25
+ const res = /* @__PURE__ */ new Set();
22
26
  for (const file of relativeFiles) {
23
27
  try {
24
28
  const matchingFile = dirFiles.get(file.toLowerCase());
@@ -26,10 +30,12 @@ async function copyStaticFiles({
26
30
  const outFilePath = path.join(outDir, matchingFile);
27
31
  const filePath = path.join(sourceDir, matchingFile);
28
32
  await fs.copyFile(filePath, outFilePath);
33
+ res.add(matchingFile);
29
34
  }
30
35
  } catch {
31
36
  }
32
37
  }
38
+ return res;
33
39
  }
34
40
  exports.copyStaticFilesTask = copyStaticFilesTask;
35
41
  //# sourceMappingURL=copyStaticFilesTask.js.map
@@ -1 +1 @@
1
- {"version":3,"file":"copyStaticFilesTask.js","sources":["../../../../../src/tasks/copyStaticFilesTask.ts"],"sourcesContent":["import { join } from \"node:path\";\nimport { copyFile, readdir } from \"node:fs/promises\";\n\nexport async function copyStaticFilesTask(sourceDir: string, outDir: string) {\n return copyStaticFiles({\n relativeFiles: new Set([\"readme.md\"]),\n sourceDir,\n outDir,\n });\n}\n\ntype CopyStaticFilesOptions = {\n relativeFiles: Set<string>;\n sourceDir: string;\n outDir: string;\n};\n\nasync function copyStaticFiles({\n sourceDir,\n outDir,\n relativeFiles,\n}: CopyStaticFilesOptions) {\n const dirFiles = new Map(\n (await readdir(sourceDir, { recursive: true })).map(\n (f) => [f.toLowerCase(), f] as const,\n ),\n );\n\n for (const file of relativeFiles) {\n try {\n const matchingFile = dirFiles.get(file.toLowerCase());\n\n if (matchingFile) {\n const outFilePath = join(outDir, matchingFile);\n const filePath = join(sourceDir, matchingFile);\n await copyFile(filePath, outFilePath);\n }\n } catch {}\n }\n}\n"],"names":["readdir","join","copyFile"],"mappings":";;;;AAGsB,eAAA,oBAAoB,WAAmB,QAAgB;AAC3E,SAAO,gBAAgB;AAAA,IACrB,eAAe,oBAAI,IAAI,CAAC,WAAW,CAAC;AAAA,IACpC;AAAA,IACA;AAAA,EAAA,CACD;AACH;AAQA,eAAe,gBAAgB;AAAA,EAC7B;AAAA,EACA;AAAA,EACA;AACF,GAA2B;AACzB,QAAM,WAAW,IAAI;AAAA,KAClB,MAAMA,GAAQ,QAAA,WAAW,EAAE,WAAW,KAAM,CAAA,GAAG;AAAA,MAC9C,CAAC,MAAM,CAAC,EAAE,YAAA,GAAe,CAAC;AAAA,IAC5B;AAAA,EAAA;AAGF,aAAW,QAAQ,eAAe;AAC5B,QAAA;AACF,YAAM,eAAe,SAAS,IAAI,KAAK,YAAa,CAAA;AAEpD,UAAI,cAAc;AACV,cAAA,cAAcC,KAAAA,KAAK,QAAQ,YAAY;AACvC,cAAA,WAAWA,KAAAA,KAAK,WAAW,YAAY;AACvC,cAAAC,GAAA,SAAS,UAAU,WAAW;AAAA,MACtC;AAAA,IAAA,QACM;AAAA,IAAC;AAAA,EACX;AACF;;"}
1
+ {"version":3,"file":"copyStaticFilesTask.js","sources":["../../../../../src/tasks/copyStaticFilesTask.ts"],"sourcesContent":["import { join } from \"node:path\";\nimport { copyFile, readdir } from \"node:fs/promises\";\nimport { okLog } from \"../log.js\";\n\nexport async function copyStaticFilesTask(sourceDir: string, outDir: string) {\n const files = await copyStaticFiles({\n relativeFiles: new Set([\"readme.md\"]),\n sourceDir,\n outDir,\n });\n\n okLog(\"Static files:\", [...files].join(\", \"));\n\n return files;\n}\n\ntype CopyStaticFilesOptions = {\n relativeFiles: Set<string>;\n sourceDir: string;\n outDir: string;\n};\n\nasync function copyStaticFiles({\n sourceDir,\n outDir,\n relativeFiles,\n}: CopyStaticFilesOptions) {\n const dirFiles = new Map(\n (await readdir(sourceDir, { recursive: true })).map(\n (f) => [f.toLowerCase(), f] as const,\n ),\n );\n\n const res = new Set<string>();\n for (const file of relativeFiles) {\n try {\n const matchingFile = dirFiles.get(file.toLowerCase());\n\n if (matchingFile) {\n const outFilePath = join(outDir, matchingFile);\n const filePath = join(sourceDir, matchingFile);\n await copyFile(filePath, outFilePath);\n res.add(matchingFile);\n }\n } catch {}\n }\n\n return res;\n}\n"],"names":["okLog","readdir","join","copyFile"],"mappings":";;;;;AAIsB,eAAA,oBAAoB,WAAmB,QAAgB;AACrE,QAAA,QAAQ,MAAM,gBAAgB;AAAA,IAClC,eAAe,oBAAI,IAAI,CAAC,WAAW,CAAC;AAAA,IACpC;AAAA,IACA;AAAA,EAAA,CACD;AAEDA,MAAA,MAAM,iBAAiB,CAAC,GAAG,KAAK,EAAE,KAAK,IAAI,CAAC;AAErC,SAAA;AACT;AAQA,eAAe,gBAAgB;AAAA,EAC7B;AAAA,EACA;AAAA,EACA;AACF,GAA2B;AACzB,QAAM,WAAW,IAAI;AAAA,KAClB,MAAMC,GAAQ,QAAA,WAAW,EAAE,WAAW,KAAM,CAAA,GAAG;AAAA,MAC9C,CAAC,MAAM,CAAC,EAAE,YAAA,GAAe,CAAC;AAAA,IAC5B;AAAA,EAAA;AAGI,QAAA,0BAAU;AAChB,aAAW,QAAQ,eAAe;AAC5B,QAAA;AACF,YAAM,eAAe,SAAS,IAAI,KAAK,YAAa,CAAA;AAEpD,UAAI,cAAc;AACV,cAAA,cAAcC,KAAAA,KAAK,QAAQ,YAAY;AACvC,cAAA,WAAWA,KAAAA,KAAK,WAAW,YAAY;AACvC,cAAAC,GAAA,SAAS,UAAU,WAAW;AACpC,YAAI,IAAI,YAAY;AAAA,MACtB;AAAA,IAAA,QACM;AAAA,IAAC;AAAA,EACX;AAEO,SAAA;AACT;;"}
@@ -1,4 +1,4 @@
1
- import { type Rollup } from "vite";
1
+ import type { Rollup } from "vite";
2
2
  type JsFilesTaskOption = {
3
3
  buildOutput: Rollup.OutputChunk[];
4
4
  entrypoints: Map<string, string>;
@@ -1,8 +1,8 @@
1
1
  "use strict";
2
2
  Object.defineProperty(exports, Symbol.toStringTag, { value: "Module" });
3
- require("vite");
4
3
  const path = require("node:path");
5
4
  const fs = require("node:fs/promises");
5
+ const log = require("../log.js");
6
6
  function findCompiledPath(buildOutput, originalFile, type) {
7
7
  for (const el of buildOutput) {
8
8
  if (el.facadeModuleId === originalFile) {
@@ -55,6 +55,7 @@ export default Default;
55
55
  await fs.writeFile(cdtsPath, `export * from "./${cjsPath}";
56
56
  `);
57
57
  }
58
+ log.okLog("no-exports compat layer");
58
59
  return res;
59
60
  }
60
61
  exports.jsFilesTask = jsFilesTask;
@@ -1 +1 @@
1
- {"version":3,"file":"jsFilesTask.js","sources":["../../../../../src/tasks/jsFilesTask.ts"],"sourcesContent":["import { type Rollup } from \"vite\";\nimport { dirname, join, relative } from \"node:path\";\nimport { mkdir, writeFile } from \"node:fs/promises\";\n\ntype JsFilesTaskOption = {\n buildOutput: Rollup.OutputChunk[];\n entrypoints: Map<string, string>;\n outDir: string;\n};\n\nfunction findCompiledPath(\n buildOutput: Rollup.OutputChunk[],\n originalFile: string,\n type: \"js\" | \"mjs\",\n) {\n for (const el of buildOutput) {\n if (el.facadeModuleId === originalFile) {\n if (type === \"js\" && el.fileName.endsWith(\".js\")) {\n return {\n path: el.fileName,\n hasDefault: el.exports.includes(\"default\"),\n };\n }\n if (type === \"mjs\" && el.fileName.endsWith(\".mjs\")) {\n return {\n path: el.fileName,\n hasDefault: el.exports.includes(\"default\"),\n };\n }\n }\n }\n return { path: \"\", hasDefault: false };\n}\n\nexport async function jsFilesTask({\n buildOutput,\n entrypoints,\n outDir,\n}: JsFilesTaskOption) {\n const res = new Map<string, string>();\n for (const [name, filePath] of entrypoints) {\n const totalName = join(outDir, name);\n\n const esmName = join(totalName, \"index.mjs\");\n const esmCompiled = findCompiledPath(buildOutput, filePath, \"mjs\");\n const esmPath = relative(totalName, join(outDir, esmCompiled.path));\n await mkdir(dirname(esmName), { recursive: true });\n let esmContent = `export * from \"./${esmPath}\";\\n`;\n if (esmCompiled.hasDefault) {\n esmContent += `import Default from \"./${esmPath}\";\\nexport default Default;\\n`;\n }\n await writeFile(esmName, esmContent);\n res.set(relative(outDir, join(dirname(esmName), esmPath)), name);\n const cjsName = join(totalName, \"index.js\");\n const cjsCompiled = findCompiledPath(buildOutput, filePath, \"js\");\n const cjsPath = relative(totalName, join(outDir, cjsCompiled.path));\n await mkdir(dirname(esmName), { recursive: true });\n const cjsContent = `module.exports = require(\"./${cjsPath}\");\\n`;\n await writeFile(cjsName, cjsContent);\n res.set(relative(outDir, join(dirname(cjsName), cjsPath)), name);\n\n // moduleResolution: \"node10\" in tsconfig.json\n const cdtsPath = cjsName.replace(/\\.js$/, \".d.ts\");\n await writeFile(cdtsPath, `export * from \"./${cjsPath}\";\\n`);\n }\n\n return res;\n}\n"],"names":["join","relative","mkdir","dirname","writeFile"],"mappings":";;;;;AAUA,SAAS,iBACP,aACA,cACA,MACA;AACA,aAAW,MAAM,aAAa;AACxB,QAAA,GAAG,mBAAmB,cAAc;AACtC,UAAI,SAAS,QAAQ,GAAG,SAAS,SAAS,KAAK,GAAG;AACzC,eAAA;AAAA,UACL,MAAM,GAAG;AAAA,UACT,YAAY,GAAG,QAAQ,SAAS,SAAS;AAAA,QAAA;AAAA,MAE7C;AACA,UAAI,SAAS,SAAS,GAAG,SAAS,SAAS,MAAM,GAAG;AAC3C,eAAA;AAAA,UACL,MAAM,GAAG;AAAA,UACT,YAAY,GAAG,QAAQ,SAAS,SAAS;AAAA,QAAA;AAAA,MAE7C;AAAA,IACF;AAAA,EACF;AACA,SAAO,EAAE,MAAM,IAAI,YAAY,MAAM;AACvC;AAEA,eAAsB,YAAY;AAAA,EAChC;AAAA,EACA;AAAA,EACA;AACF,GAAsB;AACd,QAAA,0BAAU;AAChB,aAAW,CAAC,MAAM,QAAQ,KAAK,aAAa;AACpC,UAAA,YAAYA,KAAAA,KAAK,QAAQ,IAAI;AAE7B,UAAA,UAAUA,KAAAA,KAAK,WAAW,WAAW;AAC3C,UAAM,cAAc,iBAAiB,aAAa,UAAU,KAAK;AACjE,UAAM,UAAUC,KAAS,SAAA,WAAWD,KAAAA,KAAK,QAAQ,YAAY,IAAI,CAAC;AAClE,UAAME,GAAAA,MAAMC,KAAAA,QAAQ,OAAO,GAAG,EAAE,WAAW,MAAM;AAC7C,QAAA,aAAa,oBAAoB,OAAO;AAAA;AAC5C,QAAI,YAAY,YAAY;AAC1B,oBAAc,0BAA0B,OAAO;AAAA;AAAA;AAAA,IACjD;AACM,UAAAC,GAAA,UAAU,SAAS,UAAU;AAC/B,QAAA,IAAIH,cAAS,QAAQD,KAAK,KAAAG,aAAQ,OAAO,GAAG,OAAO,CAAC,GAAG,IAAI;AACzD,UAAA,UAAUH,KAAAA,KAAK,WAAW,UAAU;AAC1C,UAAM,cAAc,iBAAiB,aAAa,UAAU,IAAI;AAChE,UAAM,UAAUC,KAAS,SAAA,WAAWD,KAAAA,KAAK,QAAQ,YAAY,IAAI,CAAC;AAClE,UAAME,GAAAA,MAAMC,KAAAA,QAAQ,OAAO,GAAG,EAAE,WAAW,MAAM;AAC3C,UAAA,aAAa,+BAA+B,OAAO;AAAA;AACnD,UAAAC,GAAA,UAAU,SAAS,UAAU;AAC/B,QAAA,IAAIH,cAAS,QAAQD,KAAK,KAAAG,aAAQ,OAAO,GAAG,OAAO,CAAC,GAAG,IAAI;AAG/D,UAAM,WAAW,QAAQ,QAAQ,SAAS,OAAO;AAC3C,UAAAC,aAAU,UAAU,oBAAoB,OAAO;AAAA,CAAM;AAAA,EAC7D;AAEO,SAAA;AACT;;"}
1
+ {"version":3,"file":"jsFilesTask.js","sources":["../../../../../src/tasks/jsFilesTask.ts"],"sourcesContent":["import type { Rollup } from \"vite\";\nimport { dirname, join, relative } from \"node:path\";\nimport { mkdir, writeFile } from \"node:fs/promises\";\nimport { okLog } from \"../log.js\";\n\ntype JsFilesTaskOption = {\n buildOutput: Rollup.OutputChunk[];\n entrypoints: Map<string, string>;\n outDir: string;\n};\n\nfunction findCompiledPath(\n buildOutput: Rollup.OutputChunk[],\n originalFile: string,\n type: \"js\" | \"mjs\",\n) {\n for (const el of buildOutput) {\n if (el.facadeModuleId === originalFile) {\n if (type === \"js\" && el.fileName.endsWith(\".js\")) {\n return {\n path: el.fileName,\n hasDefault: el.exports.includes(\"default\"),\n };\n }\n if (type === \"mjs\" && el.fileName.endsWith(\".mjs\")) {\n return {\n path: el.fileName,\n hasDefault: el.exports.includes(\"default\"),\n };\n }\n }\n }\n return { path: \"\", hasDefault: false };\n}\n\nexport async function jsFilesTask({\n buildOutput,\n entrypoints,\n outDir,\n}: JsFilesTaskOption) {\n const res = new Map<string, string>();\n for (const [name, filePath] of entrypoints) {\n const totalName = join(outDir, name);\n\n const esmName = join(totalName, \"index.mjs\");\n const esmCompiled = findCompiledPath(buildOutput, filePath, \"mjs\");\n const esmPath = relative(totalName, join(outDir, esmCompiled.path));\n await mkdir(dirname(esmName), { recursive: true });\n let esmContent = `export * from \"./${esmPath}\";\\n`;\n if (esmCompiled.hasDefault) {\n esmContent += `import Default from \"./${esmPath}\";\\nexport default Default;\\n`;\n }\n await writeFile(esmName, esmContent);\n res.set(relative(outDir, join(dirname(esmName), esmPath)), name);\n const cjsName = join(totalName, \"index.js\");\n const cjsCompiled = findCompiledPath(buildOutput, filePath, \"js\");\n const cjsPath = relative(totalName, join(outDir, cjsCompiled.path));\n await mkdir(dirname(esmName), { recursive: true });\n const cjsContent = `module.exports = require(\"./${cjsPath}\");\\n`;\n await writeFile(cjsName, cjsContent);\n res.set(relative(outDir, join(dirname(cjsName), cjsPath)), name);\n\n // moduleResolution: \"node10\" in tsconfig.json\n const cdtsPath = cjsName.replace(/\\.js$/, \".d.ts\");\n await writeFile(cdtsPath, `export * from \"./${cjsPath}\";\\n`);\n }\n\n okLog(\"no-exports compat layer\");\n return res;\n}\n"],"names":["join","relative","mkdir","dirname","writeFile","okLog"],"mappings":";;;;;AAWA,SAAS,iBACP,aACA,cACA,MACA;AACA,aAAW,MAAM,aAAa;AACxB,QAAA,GAAG,mBAAmB,cAAc;AACtC,UAAI,SAAS,QAAQ,GAAG,SAAS,SAAS,KAAK,GAAG;AACzC,eAAA;AAAA,UACL,MAAM,GAAG;AAAA,UACT,YAAY,GAAG,QAAQ,SAAS,SAAS;AAAA,QAAA;AAAA,MAE7C;AACA,UAAI,SAAS,SAAS,GAAG,SAAS,SAAS,MAAM,GAAG;AAC3C,eAAA;AAAA,UACL,MAAM,GAAG;AAAA,UACT,YAAY,GAAG,QAAQ,SAAS,SAAS;AAAA,QAAA;AAAA,MAE7C;AAAA,IACF;AAAA,EACF;AACA,SAAO,EAAE,MAAM,IAAI,YAAY,MAAM;AACvC;AAEA,eAAsB,YAAY;AAAA,EAChC;AAAA,EACA;AAAA,EACA;AACF,GAAsB;AACd,QAAA,0BAAU;AAChB,aAAW,CAAC,MAAM,QAAQ,KAAK,aAAa;AACpC,UAAA,YAAYA,KAAAA,KAAK,QAAQ,IAAI;AAE7B,UAAA,UAAUA,KAAAA,KAAK,WAAW,WAAW;AAC3C,UAAM,cAAc,iBAAiB,aAAa,UAAU,KAAK;AACjE,UAAM,UAAUC,KAAS,SAAA,WAAWD,KAAAA,KAAK,QAAQ,YAAY,IAAI,CAAC;AAClE,UAAME,GAAAA,MAAMC,KAAAA,QAAQ,OAAO,GAAG,EAAE,WAAW,MAAM;AAC7C,QAAA,aAAa,oBAAoB,OAAO;AAAA;AAC5C,QAAI,YAAY,YAAY;AAC1B,oBAAc,0BAA0B,OAAO;AAAA;AAAA;AAAA,IACjD;AACM,UAAAC,GAAA,UAAU,SAAS,UAAU;AAC/B,QAAA,IAAIH,cAAS,QAAQD,KAAK,KAAAG,aAAQ,OAAO,GAAG,OAAO,CAAC,GAAG,IAAI;AACzD,UAAA,UAAUH,KAAAA,KAAK,WAAW,UAAU;AAC1C,UAAM,cAAc,iBAAiB,aAAa,UAAU,IAAI;AAChE,UAAM,UAAUC,KAAS,SAAA,WAAWD,KAAAA,KAAK,QAAQ,YAAY,IAAI,CAAC;AAClE,UAAME,GAAAA,MAAMC,KAAAA,QAAQ,OAAO,GAAG,EAAE,WAAW,MAAM;AAC3C,UAAA,aAAa,+BAA+B,OAAO;AAAA;AACnD,UAAAC,GAAA,UAAU,SAAS,UAAU;AAC/B,QAAA,IAAIH,cAAS,QAAQD,KAAK,KAAAG,aAAQ,OAAO,GAAG,OAAO,CAAC,GAAG,IAAI;AAG/D,UAAM,WAAW,QAAQ,QAAQ,SAAS,OAAO;AAC3C,UAAAC,aAAU,UAAU,oBAAoB,OAAO;AAAA,CAAM;AAAA,EAC7D;AAEAC,MAAA,MAAM,yBAAyB;AACxB,SAAA;AACT;;"}
@@ -3,6 +3,7 @@ Object.defineProperty(exports, Symbol.toStringTag, { value: "Module" });
3
3
  const fs = require("node:fs/promises");
4
4
  require("zod");
5
5
  require("node:path");
6
+ const log = require("./log.js");
6
7
  function extractValue(value) {
7
8
  if (!value) {
8
9
  return void 0;
@@ -68,6 +69,7 @@ async function writePackageJson(outDir, parsed, { exportsMap, binsMap }) {
68
69
  devDependencies: parsed.devDependencies
69
70
  };
70
71
  await fs.writeFile(`${outDir}/package.json`, JSON.stringify(res, null, 2));
72
+ log.okLog("package.json");
71
73
  }
72
74
  exports.writePackageJson = writePackageJson;
73
75
  //# sourceMappingURL=writePackageJson.js.map
@@ -1 +1 @@
1
- {"version":3,"file":"writePackageJson.js","sources":["../../../../src/writePackageJson.ts"],"sourcesContent":["import { writeFile } from \"node:fs/promises\";\nimport { type PackageJson } from \"./packageJson.js\";\n\nexport type ExportsObject = {\n mjs?: string;\n dmts?: string;\n dcts?: string;\n cjs?: string;\n raw?: string;\n};\n\ntype BuildResult = {\n exportsMap: Map<string, ExportsObject>;\n binsMap: Map<string, string>;\n};\n\ntype ExportsPackageJsonObj =\n | {\n import?: ExportsPackageJsonObj;\n require?: ExportsPackageJsonObj;\n types?: string;\n default?: string;\n }\n | string;\n\nfunction extractValue(value?: ExportsPackageJsonObj) {\n if (!value) {\n return undefined;\n }\n if (typeof value === \"string\") {\n return value;\n }\n return value.default;\n}\n\nexport async function writePackageJson(\n outDir: string,\n parsed: PackageJson,\n { exportsMap, binsMap }: BuildResult,\n) {\n // we always want to have `exports` property in the target package.json\n // If you want to export something, please, specify them\n const allExports: Record<string, ExportsPackageJsonObj> = {};\n for (const [key, value] of exportsMap) {\n const anExport: ExportsPackageJsonObj = {};\n\n if (value.mjs) {\n anExport.import = {};\n if (value.dmts) {\n anExport.import.types = value.dmts;\n }\n anExport.import.default = value.mjs;\n }\n if (value.cjs) {\n anExport.require = {};\n if (value.dcts) {\n anExport.require.types = value.dcts;\n }\n anExport.require.default = value.cjs;\n }\n\n // should be first for correct resolving\n anExport.types = value.dcts ?? value.dmts;\n // because we need to have default and types key on the end\n // JSON.stringify will put it on the end if we put value at the last step\n anExport.default = value.cjs;\n\n allExports[key] = anExport;\n }\n allExports[\"./package.json\"] = \"./package.json\";\n\n const bin = binsMap.size > 0 ? Object.fromEntries(binsMap) : undefined;\n\n const rootExport =\n typeof allExports[\".\"] === \"object\" ? allExports[\".\"] : undefined;\n const res = {\n name: parsed.name,\n type: \"commonjs\",\n version: parsed.version,\n bin,\n types: rootExport?.types,\n module: extractValue(rootExport?.import),\n main: extractValue(rootExport?.require),\n description: parsed.description ?? \"\",\n exports: allExports,\n dependencies: parsed.dependencies ?? undefined,\n optionalDependencies: parsed.optionalDependencies ?? undefined,\n repository: parsed.repository,\n keywords: parsed.keywords,\n author: parsed.author,\n contributors: parsed.contributors,\n license: parsed.license,\n peerDependencies: parsed.peerDependencies,\n engines: parsed.engines,\n browser: parsed.browser,\n funding: parsed.funding,\n os: parsed.os,\n cpu: parsed.cpu,\n maintainers: parsed.maintainers,\n bugs: parsed.bugs,\n sideEffects: parsed.sideEffects,\n unpkg: parsed.unpkg,\n homepage: parsed.homepage,\n devDependencies: parsed.devDependencies,\n };\n\n await writeFile(`${outDir}/package.json`, JSON.stringify(res, null, 2));\n}\n"],"names":["writeFile"],"mappings":";;;;;AAyBA,SAAS,aAAa,OAA+B;AACnD,MAAI,CAAC,OAAO;AACH,WAAA;AAAA,EACT;AACI,MAAA,OAAO,UAAU,UAAU;AACtB,WAAA;AAAA,EACT;AACA,SAAO,MAAM;AACf;AAEA,eAAsB,iBACpB,QACA,QACA,EAAE,YAAY,WACd;AAGA,QAAM,aAAoD,CAAA;AAC1D,aAAW,CAAC,KAAK,KAAK,KAAK,YAAY;AACrC,UAAM,WAAkC,CAAA;AAExC,QAAI,MAAM,KAAK;AACb,eAAS,SAAS;AAClB,UAAI,MAAM,MAAM;AACL,iBAAA,OAAO,QAAQ,MAAM;AAAA,MAChC;AACS,eAAA,OAAO,UAAU,MAAM;AAAA,IAClC;AACA,QAAI,MAAM,KAAK;AACb,eAAS,UAAU;AACnB,UAAI,MAAM,MAAM;AACL,iBAAA,QAAQ,QAAQ,MAAM;AAAA,MACjC;AACS,eAAA,QAAQ,UAAU,MAAM;AAAA,IACnC;AAGS,aAAA,QAAQ,MAAM,QAAQ,MAAM;AAGrC,aAAS,UAAU,MAAM;AAEzB,eAAW,GAAG,IAAI;AAAA,EACpB;AACA,aAAW,gBAAgB,IAAI;AAE/B,QAAM,MAAM,QAAQ,OAAO,IAAI,OAAO,YAAY,OAAO,IAAI;AAEvD,QAAA,aACJ,OAAO,WAAW,GAAG,MAAM,WAAW,WAAW,GAAG,IAAI;AAC1D,QAAM,MAAM;AAAA,IACV,MAAM,OAAO;AAAA,IACb,MAAM;AAAA,IACN,SAAS,OAAO;AAAA,IAChB;AAAA,IACA,OAAO,yCAAY;AAAA,IACnB,QAAQ,aAAa,yCAAY,MAAM;AAAA,IACvC,MAAM,aAAa,yCAAY,OAAO;AAAA,IACtC,aAAa,OAAO,eAAe;AAAA,IACnC,SAAS;AAAA,IACT,cAAc,OAAO,gBAAgB;AAAA,IACrC,sBAAsB,OAAO,wBAAwB;AAAA,IACrD,YAAY,OAAO;AAAA,IACnB,UAAU,OAAO;AAAA,IACjB,QAAQ,OAAO;AAAA,IACf,cAAc,OAAO;AAAA,IACrB,SAAS,OAAO;AAAA,IAChB,kBAAkB,OAAO;AAAA,IACzB,SAAS,OAAO;AAAA,IAChB,SAAS,OAAO;AAAA,IAChB,SAAS,OAAO;AAAA,IAChB,IAAI,OAAO;AAAA,IACX,KAAK,OAAO;AAAA,IACZ,aAAa,OAAO;AAAA,IACpB,MAAM,OAAO;AAAA,IACb,aAAa,OAAO;AAAA,IACpB,OAAO,OAAO;AAAA,IACd,UAAU,OAAO;AAAA,IACjB,iBAAiB,OAAO;AAAA,EAAA;AAGpB,QAAAA,aAAU,GAAG,MAAM,iBAAiB,KAAK,UAAU,KAAK,MAAM,CAAC,CAAC;AACxE;;"}
1
+ {"version":3,"file":"writePackageJson.js","sources":["../../../../src/writePackageJson.ts"],"sourcesContent":["import { writeFile } from \"node:fs/promises\";\nimport { type PackageJson } from \"./packageJson.js\";\nimport { okLog } from \"./log.js\";\n\nexport type ExportsObject = {\n mjs?: string;\n dmts?: string;\n dcts?: string;\n cjs?: string;\n raw?: string;\n};\n\ntype BuildResult = {\n exportsMap: Map<string, ExportsObject>;\n binsMap: Map<string, string>;\n};\n\ntype ExportsPackageJsonObj =\n | {\n import?: ExportsPackageJsonObj;\n require?: ExportsPackageJsonObj;\n types?: string;\n default?: string;\n }\n | string;\n\nfunction extractValue(value?: ExportsPackageJsonObj) {\n if (!value) {\n return undefined;\n }\n if (typeof value === \"string\") {\n return value;\n }\n return value.default;\n}\n\nexport async function writePackageJson(\n outDir: string,\n parsed: PackageJson,\n { exportsMap, binsMap }: BuildResult,\n) {\n // we always want to have `exports` property in the target package.json\n // If you want to export something, please, specify them\n const allExports: Record<string, ExportsPackageJsonObj> = {};\n for (const [key, value] of exportsMap) {\n const anExport: ExportsPackageJsonObj = {};\n\n if (value.mjs) {\n anExport.import = {};\n if (value.dmts) {\n anExport.import.types = value.dmts;\n }\n anExport.import.default = value.mjs;\n }\n if (value.cjs) {\n anExport.require = {};\n if (value.dcts) {\n anExport.require.types = value.dcts;\n }\n anExport.require.default = value.cjs;\n }\n\n // should be first for correct resolving\n anExport.types = value.dcts ?? value.dmts;\n // because we need to have default and types key on the end\n // JSON.stringify will put it on the end if we put value at the last step\n anExport.default = value.cjs;\n\n allExports[key] = anExport;\n }\n allExports[\"./package.json\"] = \"./package.json\";\n\n const bin = binsMap.size > 0 ? Object.fromEntries(binsMap) : undefined;\n\n const rootExport =\n typeof allExports[\".\"] === \"object\" ? allExports[\".\"] : undefined;\n const res = {\n name: parsed.name,\n type: \"commonjs\",\n version: parsed.version,\n bin,\n types: rootExport?.types,\n module: extractValue(rootExport?.import),\n main: extractValue(rootExport?.require),\n description: parsed.description ?? \"\",\n exports: allExports,\n dependencies: parsed.dependencies ?? undefined,\n optionalDependencies: parsed.optionalDependencies ?? undefined,\n repository: parsed.repository,\n keywords: parsed.keywords,\n author: parsed.author,\n contributors: parsed.contributors,\n license: parsed.license,\n peerDependencies: parsed.peerDependencies,\n engines: parsed.engines,\n browser: parsed.browser,\n funding: parsed.funding,\n os: parsed.os,\n cpu: parsed.cpu,\n maintainers: parsed.maintainers,\n bugs: parsed.bugs,\n sideEffects: parsed.sideEffects,\n unpkg: parsed.unpkg,\n homepage: parsed.homepage,\n devDependencies: parsed.devDependencies,\n };\n\n await writeFile(`${outDir}/package.json`, JSON.stringify(res, null, 2));\n\n okLog(\"package.json\");\n}\n"],"names":["writeFile","okLog"],"mappings":";;;;;;AA0BA,SAAS,aAAa,OAA+B;AACnD,MAAI,CAAC,OAAO;AACH,WAAA;AAAA,EACT;AACI,MAAA,OAAO,UAAU,UAAU;AACtB,WAAA;AAAA,EACT;AACA,SAAO,MAAM;AACf;AAEA,eAAsB,iBACpB,QACA,QACA,EAAE,YAAY,WACd;AAGA,QAAM,aAAoD,CAAA;AAC1D,aAAW,CAAC,KAAK,KAAK,KAAK,YAAY;AACrC,UAAM,WAAkC,CAAA;AAExC,QAAI,MAAM,KAAK;AACb,eAAS,SAAS;AAClB,UAAI,MAAM,MAAM;AACL,iBAAA,OAAO,QAAQ,MAAM;AAAA,MAChC;AACS,eAAA,OAAO,UAAU,MAAM;AAAA,IAClC;AACA,QAAI,MAAM,KAAK;AACb,eAAS,UAAU;AACnB,UAAI,MAAM,MAAM;AACL,iBAAA,QAAQ,QAAQ,MAAM;AAAA,MACjC;AACS,eAAA,QAAQ,UAAU,MAAM;AAAA,IACnC;AAGS,aAAA,QAAQ,MAAM,QAAQ,MAAM;AAGrC,aAAS,UAAU,MAAM;AAEzB,eAAW,GAAG,IAAI;AAAA,EACpB;AACA,aAAW,gBAAgB,IAAI;AAE/B,QAAM,MAAM,QAAQ,OAAO,IAAI,OAAO,YAAY,OAAO,IAAI;AAEvD,QAAA,aACJ,OAAO,WAAW,GAAG,MAAM,WAAW,WAAW,GAAG,IAAI;AAC1D,QAAM,MAAM;AAAA,IACV,MAAM,OAAO;AAAA,IACb,MAAM;AAAA,IACN,SAAS,OAAO;AAAA,IAChB;AAAA,IACA,OAAO,yCAAY;AAAA,IACnB,QAAQ,aAAa,yCAAY,MAAM;AAAA,IACvC,MAAM,aAAa,yCAAY,OAAO;AAAA,IACtC,aAAa,OAAO,eAAe;AAAA,IACnC,SAAS;AAAA,IACT,cAAc,OAAO,gBAAgB;AAAA,IACrC,sBAAsB,OAAO,wBAAwB;AAAA,IACrD,YAAY,OAAO;AAAA,IACnB,UAAU,OAAO;AAAA,IACjB,QAAQ,OAAO;AAAA,IACf,cAAc,OAAO;AAAA,IACrB,SAAS,OAAO;AAAA,IAChB,kBAAkB,OAAO;AAAA,IACzB,SAAS,OAAO;AAAA,IAChB,SAAS,OAAO;AAAA,IAChB,SAAS,OAAO;AAAA,IAChB,IAAI,OAAO;AAAA,IACX,KAAK,OAAO;AAAA,IACZ,aAAa,OAAO;AAAA,IACpB,MAAM,OAAO;AAAA,IACb,aAAa,OAAO;AAAA,IACpB,OAAO,OAAO;AAAA,IACd,UAAU,OAAO;AAAA,IACjB,iBAAiB,OAAO;AAAA,EAAA;AAGpB,QAAAA,aAAU,GAAG,MAAM,iBAAiB,KAAK,UAAU,KAAK,MAAM,CAAC,CAAC;AAEtEC,MAAA,MAAM,cAAc;AACtB;;"}
@@ -1,4 +1,4 @@
1
- import { type UserConfig, Rollup } from "vite";
1
+ import { type UserConfig, type Rollup } from "vite";
2
2
  type BuildViteOptions = {
3
3
  viteConfig: UserConfig;
4
4
  };
@@ -1 +1 @@
1
- {"version":3,"file":"buildVite.mjs","sources":["../../../../src/buildVite.ts"],"sourcesContent":["import { build, type UserConfig, Rollup } from \"vite\";\nimport { errors } from \"./errors.js\";\n\ntype BuildViteOptions = {\n viteConfig: UserConfig;\n};\n\ntype BuildSuccess = {\n error: false;\n output: Rollup.OutputChunk[];\n};\ntype BuildError = {\n error: true;\n errors: Array<string>;\n};\n\ntype BuildResult = BuildSuccess | BuildError;\n\nexport async function buildVite({\n viteConfig,\n}: BuildViteOptions): Promise<BuildResult> {\n try {\n const outputs = await build(viteConfig);\n if (!Array.isArray(outputs)) {\n return {\n error: true,\n errors: [errors.rollupError],\n };\n }\n\n return {\n error: false,\n output: outputs.flatMap((x) =>\n x.output.filter((x) => x.type === \"chunk\"),\n ),\n };\n } catch (e) {\n if (e instanceof Error) {\n return {\n error: true,\n errors: [e.message],\n };\n }\n }\n return {\n error: true,\n errors: [errors.rollupError],\n };\n}\n"],"names":["x"],"mappings":";;AAkBA,eAAsB,UAAU;AAAA,EAC9B;AACF,GAA2C;AACrC,MAAA;AACI,UAAA,UAAU,MAAM,MAAM,UAAU;AACtC,QAAI,CAAC,MAAM,QAAQ,OAAO,GAAG;AACpB,aAAA;AAAA,QACL,OAAO;AAAA,QACP,QAAQ,CAAC,OAAO,WAAW;AAAA,MAAA;AAAA,IAE/B;AAEO,WAAA;AAAA,MACL,OAAO;AAAA,MACP,QAAQ,QAAQ;AAAA,QAAQ,CAAC,MACvB,EAAE,OAAO,OAAO,CAACA,OAAMA,GAAE,SAAS,OAAO;AAAA,MAC3C;AAAA,IAAA;AAAA,WAEK,GAAG;AACV,QAAI,aAAa,OAAO;AACf,aAAA;AAAA,QACL,OAAO;AAAA,QACP,QAAQ,CAAC,EAAE,OAAO;AAAA,MAAA;AAAA,IAEtB;AAAA,EACF;AACO,SAAA;AAAA,IACL,OAAO;AAAA,IACP,QAAQ,CAAC,OAAO,WAAW;AAAA,EAAA;AAE/B;"}
1
+ {"version":3,"file":"buildVite.mjs","sources":["../../../../src/buildVite.ts"],"sourcesContent":["import { build, type UserConfig, type Rollup } from \"vite\";\nimport { errors } from \"./errors.js\";\n\ntype BuildViteOptions = {\n viteConfig: UserConfig;\n};\n\ntype BuildSuccess = {\n error: false;\n output: Rollup.OutputChunk[];\n};\ntype BuildError = {\n error: true;\n errors: Array<string>;\n};\n\ntype BuildResult = BuildSuccess | BuildError;\n\nexport async function buildVite({\n viteConfig,\n}: BuildViteOptions): Promise<BuildResult> {\n try {\n const outputs = await build(viteConfig);\n if (!Array.isArray(outputs)) {\n return {\n error: true,\n errors: [errors.rollupError],\n };\n }\n\n return {\n error: false,\n output: outputs.flatMap((x) =>\n x.output.filter((x) => x.type === \"chunk\"),\n ),\n };\n } catch (e) {\n if (e instanceof Error) {\n return {\n error: true,\n errors: [e.message],\n };\n }\n }\n return {\n error: true,\n errors: [errors.rollupError],\n };\n}\n"],"names":["x"],"mappings":";;AAkBA,eAAsB,UAAU;AAAA,EAC9B;AACF,GAA2C;AACrC,MAAA;AACI,UAAA,UAAU,MAAM,MAAM,UAAU;AACtC,QAAI,CAAC,MAAM,QAAQ,OAAO,GAAG;AACpB,aAAA;AAAA,QACL,OAAO;AAAA,QACP,QAAQ,CAAC,OAAO,WAAW;AAAA,MAAA;AAAA,IAE/B;AAEO,WAAA;AAAA,MACL,OAAO;AAAA,MACP,QAAQ,QAAQ;AAAA,QAAQ,CAAC,MACvB,EAAE,OAAO,OAAO,CAACA,OAAMA,GAAE,SAAS,OAAO;AAAA,MAC3C;AAAA,IAAA;AAAA,WAEK,GAAG;AACV,QAAI,aAAa,OAAO;AACf,aAAA;AAAA,QACL,OAAO;AAAA,QACP,QAAQ,CAAC,EAAE,OAAO;AAAA,MAAA;AAAA,IAEtB;AAAA,EACF;AACO,SAAA;AAAA,IACL,OAAO;AAAA,IACP,QAAQ,CAAC,OAAO,WAAW;AAAA,EAAA;AAE/B;"}
@@ -1,10 +1,12 @@
1
1
  import { type Dirs } from "./resolveDirs.js";
2
2
  import { type PackageJson } from "./packageJson.js";
3
+ import { type DetectedModules } from "./detectModules.js";
3
4
  type CreateViteConfigParam = {
4
5
  dirs: Dirs;
5
6
  packageJson: PackageJson;
7
+ modules: DetectedModules;
6
8
  };
7
- export declare function createViteConfig({ dirs, packageJson }: CreateViteConfigParam): {
9
+ export declare function createViteConfig({ dirs, packageJson, modules, }: CreateViteConfigParam): {
8
10
  viteConfig: import("vite").UserConfig;
9
11
  entrypoints: Map<string, string>;
10
12
  bins: Map<string, string>;
@@ -4,6 +4,7 @@ import "zod";
4
4
  import { defineConfig } from "vite";
5
5
  import { babelPlugin } from "./plugins/babel/index.mjs";
6
6
  import { reactPlugin } from "./plugins/react/index.mjs";
7
+ import "semver";
7
8
  function mapToObject(map) {
8
9
  const obj = {};
9
10
  for (const [key, value] of map) {
@@ -39,7 +40,11 @@ function createExternalDepValidator(packageJson) {
39
40
  return false;
40
41
  };
41
42
  }
42
- function createViteConfig({ dirs, packageJson }) {
43
+ function createViteConfig({
44
+ dirs,
45
+ packageJson,
46
+ modules
47
+ }) {
43
48
  const { sourceDir, outDir } = dirs;
44
49
  const entrypoints = /* @__PURE__ */ new Map();
45
50
  if (packageJson.exports) {
@@ -57,7 +62,10 @@ function createViteConfig({ dirs, packageJson }) {
57
62
  const mergedEntries = new Map([...entrypoints, ...bins]);
58
63
  const depsValidator = createExternalDepValidator(packageJson);
59
64
  const viteConfig = defineConfig({
60
- plugins: [reactPlugin({ packageJson }), babelPlugin({ packageJson, dirs })],
65
+ plugins: [
66
+ reactPlugin({ modules }),
67
+ babelPlugin({ packageJson, dirs, modules })
68
+ ],
61
69
  publicDir: false,
62
70
  root: sourceDir,
63
71
  logLevel: "silent",
@@ -1 +1 @@
1
- {"version":3,"file":"createViteConfig.mjs","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\";\n\ntype CreateViteConfigParam = {\n dirs: Dirs;\n packageJson: PackageJson;\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({ dirs, packageJson }: CreateViteConfigParam) {\n const { sourceDir, outDir } = 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 viteConfig = defineConfig({\n plugins: [reactPlugin({ packageJson }), babelPlugin({ packageJson, dirs })],\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(\"__compiled__\", \"esm\", `${noExt}.mjs`);\n } else {\n return join(\"__compiled__\", \"cjs\", `${noExt}.js`);\n }\n }\n\n if (format === \"es\") {\n return join(\n \"__compiled__\",\n \"esm\",\n relative(sourceDir, entrypoint).replace(/\\.[^.]+$/, \"\") + \".mjs\",\n );\n } else {\n return join(\n \"__compiled__\",\n \"cjs\",\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":[],"mappings":"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"}
1
+ {"version":3,"file":"createViteConfig.mjs","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 } = 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 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(\"__compiled__\", \"esm\", `${noExt}.mjs`);\n } else {\n return join(\"__compiled__\", \"cjs\", `${noExt}.js`);\n }\n }\n\n if (format === \"es\") {\n return join(\n \"__compiled__\",\n \"esm\",\n relative(sourceDir, entrypoint).replace(/\\.[^.]+$/, \"\") + \".mjs\",\n );\n } else {\n return join(\n \"__compiled__\",\n \"cjs\",\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":[],"mappings":"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"}
@@ -0,0 +1,7 @@
1
+ import { type PackageJson } from "./packageJson.js";
2
+ export type DetectedModules = {
3
+ ts?: typeof import("typescript");
4
+ babel?: typeof import("@babel/core");
5
+ react?: "legacy" | "modern";
6
+ };
7
+ export declare function detectModules(packageJson: PackageJson): Promise<DetectedModules>;
@@ -0,0 +1,80 @@
1
+ import "node:fs/promises";
2
+ import "zod";
3
+ import "node:path";
4
+ import semver from "semver";
5
+ import { log, okLog, errorLog, lineLog, warnLog } from "./log.mjs";
6
+ function getMinVersion(packageJson, depName, exclude) {
7
+ var _a;
8
+ const allDepKeys = /* @__PURE__ */ new Set([
9
+ "dependencies",
10
+ "devDependencies",
11
+ "peerDependencies",
12
+ "optionalDependencies"
13
+ ]);
14
+ for (const e of exclude) {
15
+ allDepKeys.delete(e);
16
+ }
17
+ let minVersion = null;
18
+ for (const depKey of allDepKeys) {
19
+ const depVersion = (_a = packageJson[depKey]) == null ? void 0 : _a[depName];
20
+ if (depVersion) {
21
+ const version = semver.minVersion(depVersion);
22
+ if (!version) {
23
+ warnLog("node-semver cannot parse version of", depName, "from", depKey);
24
+ warnLog("Version:", depVersion);
25
+ continue;
26
+ }
27
+ if (!minVersion) {
28
+ minVersion = version;
29
+ continue;
30
+ }
31
+ if (semver.lt(version, minVersion)) {
32
+ minVersion = version;
33
+ }
34
+ }
35
+ }
36
+ return minVersion;
37
+ }
38
+ async function detectBabel(packageJson) {
39
+ if ("@babel/core" in (packageJson.optionalDependencies ?? {})) {
40
+ errorLog("babel excluded because inside optionalDependencies");
41
+ return;
42
+ }
43
+ try {
44
+ const babel = await import("@babel/core");
45
+ okLog("babel, version:", babel.version);
46
+ return babel;
47
+ } catch {
48
+ errorLog("babel");
49
+ }
50
+ }
51
+ async function detectReact(packageJson) {
52
+ const reactVersion = getMinVersion(packageJson, "react", ["devDependencies"]);
53
+ if (reactVersion) {
54
+ const isLegacy = semver.lt(reactVersion, "17.0.0");
55
+ const transform = isLegacy ? "legacy" : "modern";
56
+ okLog(
57
+ `react, min version: ${reactVersion.version}. Transform: ${transform}`
58
+ );
59
+ return transform;
60
+ }
61
+ errorLog("react");
62
+ }
63
+ async function detectModules(packageJson) {
64
+ const result = {};
65
+ log("Detecting modules");
66
+ try {
67
+ result.ts = (await import("typescript")).default;
68
+ okLog("typescript, version:", result.ts.version);
69
+ } catch {
70
+ errorLog("typescript");
71
+ }
72
+ result.babel = await detectBabel(packageJson);
73
+ result.react = await detectReact(packageJson);
74
+ lineLog();
75
+ return result;
76
+ }
77
+ export {
78
+ detectModules
79
+ };
80
+ //# sourceMappingURL=detectModules.mjs.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"detectModules.mjs","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\";\nfunction 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":[],"mappings":";;;;;AAeA,SAAS,cACP,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,EACrB;AAEA,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;AACJ,gBAAA,uCAAuC,SAAS,QAAQ,MAAM;AACtE,gBAAQ,YAAY,UAAU;AAC9B;AAAA,MACF;AACA,UAAI,CAAC,YAAY;AACF,qBAAA;AACb;AAAA,MACF;AACA,UAAI,OAAO,GAAG,SAAS,UAAU,GAAG;AACrB,qBAAA;AAAA,MACf;AAAA,IACF;AAAA,EACF;AAEO,SAAA;AACT;AAEA,eAAe,YACb,aACmD;AACnD,MAAI,kBAAkB,YAAY,wBAAwB,CAAK,IAAA;AAC7D,aAAS,oDAAoD;AAC7D;AAAA,EACF;AAEI,MAAA;AACI,UAAA,QAAQ,MAAM,OAAO,aAAa;AAClC,UAAA,mBAAmB,MAAM,OAAO;AAC/B,WAAA;AAAA,EAAA,QACD;AACN,aAAS,OAAO;AAAA,EAClB;AACF;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;AACxC;AAAA,MACE,uBAAuB,aAAa,OAAO,gBAAgB,SAAS;AAAA,IAAA;AAE/D,WAAA;AAAA,EACT;AACA,WAAS,OAAO;AAClB;AAEA,eAAsB,cACpB,aAC0B;AAC1B,QAAM,SAA0B,CAAA;AAChC,MAAI,mBAAmB;AACnB,MAAA;AAEF,WAAO,MAAM,MAAM,OAAO,YAAY,GAAG;AACnC,UAAA,wBAAwB,OAAO,GAAG,OAAO;AAAA,EAAA,QACzC;AACN,aAAS,YAAY;AAAA,EACvB;AAEO,SAAA,QAAQ,MAAM,YAAY,WAAW;AACrC,SAAA,QAAQ,MAAM,YAAY,WAAW;AAEpC;AACD,SAAA;AACT;"}