smartbundle 0.11.1 → 0.12.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 (102) hide show
  1. package/README.md +1 -1
  2. package/__compiled__/cjs/src/args.d.ts +11 -1
  3. package/__compiled__/cjs/src/args.js +7 -2
  4. package/__compiled__/cjs/src/args.js.map +1 -1
  5. package/__compiled__/cjs/src/createViteConfig.js +1 -0
  6. package/__compiled__/cjs/src/createViteConfig.js.map +1 -1
  7. package/__compiled__/cjs/src/detectModules.d.ts +4 -0
  8. package/__compiled__/cjs/src/detectModules.js +1 -0
  9. package/__compiled__/cjs/src/detectModules.js.map +1 -1
  10. package/__compiled__/cjs/src/error.js.map +1 -1
  11. package/__compiled__/cjs/src/index.d.ts +1 -1
  12. package/__compiled__/cjs/src/index.js +31 -30
  13. package/__compiled__/cjs/src/index.js.map +1 -1
  14. package/__compiled__/cjs/src/log.js.map +1 -1
  15. package/__compiled__/cjs/src/packageJson.d.ts +20 -5
  16. package/__compiled__/cjs/src/packageJson.js.map +1 -1
  17. package/__compiled__/cjs/src/pipeline.d.ts +6 -0
  18. package/__compiled__/cjs/src/pipeline.js +20 -0
  19. package/__compiled__/cjs/src/pipeline.js.map +1 -0
  20. package/__compiled__/cjs/src/plugins/babel/findBabelConfig.js.map +1 -1
  21. package/__compiled__/cjs/src/plugins/babel/index.js +1 -0
  22. package/__compiled__/cjs/src/plugins/babel/index.js.map +1 -1
  23. package/__compiled__/cjs/src/plugins/react/index.js.map +1 -1
  24. package/__compiled__/cjs/src/promiseSettledResultErrors.d.ts +3 -0
  25. package/__compiled__/cjs/src/promiseSettledResultErrors.js +15 -0
  26. package/__compiled__/cjs/src/promiseSettledResultErrors.js.map +1 -0
  27. package/__compiled__/cjs/src/resolveDirs.d.ts +1 -5
  28. package/__compiled__/cjs/src/resolveDirs.js +1 -0
  29. package/__compiled__/cjs/src/resolveDirs.js.map +1 -1
  30. package/__compiled__/cjs/src/run.js +1 -1
  31. package/__compiled__/cjs/src/run.js.map +1 -1
  32. package/__compiled__/cjs/src/tasks/binsTask.js.map +1 -1
  33. package/__compiled__/cjs/src/tasks/buildTypesTask/buildTypesTask.d.ts +3 -3
  34. package/__compiled__/cjs/src/tasks/buildTypesTask/buildTypesTask.js +6 -4
  35. package/__compiled__/cjs/src/tasks/buildTypesTask/buildTypesTask.js.map +1 -1
  36. package/__compiled__/cjs/src/tasks/buildTypesTask/callTypescript.d.ts +3 -1
  37. package/__compiled__/cjs/src/tasks/buildTypesTask/callTypescript.js +53 -11
  38. package/__compiled__/cjs/src/tasks/buildTypesTask/callTypescript.js.map +1 -1
  39. package/__compiled__/cjs/src/tasks/buildTypesTask/inlineExtensions.d.ts +8 -2
  40. package/__compiled__/cjs/src/tasks/buildTypesTask/inlineExtensions.js +101 -22
  41. package/__compiled__/cjs/src/tasks/buildTypesTask/inlineExtensions.js.map +1 -1
  42. package/__compiled__/cjs/src/tasks/copyStaticFilesTask.js.map +1 -1
  43. package/__compiled__/cjs/src/tasks/jsFilesTask.js.map +1 -1
  44. package/__compiled__/cjs/src/tasks/utils.js.map +1 -1
  45. package/__compiled__/cjs/src/tasks/viteTask.d.ts +16 -0
  46. package/__compiled__/cjs/src/{buildVite.js → tasks/viteTask.js} +13 -2
  47. package/__compiled__/cjs/src/tasks/viteTask.js.map +1 -0
  48. package/__compiled__/cjs/src/writePackageJson.js.map +1 -1
  49. package/__compiled__/esm/src/args.d.mts +11 -1
  50. package/__compiled__/esm/src/args.mjs +7 -2
  51. package/__compiled__/esm/src/args.mjs.map +1 -1
  52. package/__compiled__/esm/src/createViteConfig.mjs +1 -0
  53. package/__compiled__/esm/src/createViteConfig.mjs.map +1 -1
  54. package/__compiled__/esm/src/detectModules.d.mts +4 -0
  55. package/__compiled__/esm/src/detectModules.mjs +2 -1
  56. package/__compiled__/esm/src/detectModules.mjs.map +1 -1
  57. package/__compiled__/esm/src/error.mjs.map +1 -1
  58. package/__compiled__/esm/src/index.d.mts +1 -1
  59. package/__compiled__/esm/src/index.mjs +32 -31
  60. package/__compiled__/esm/src/index.mjs.map +1 -1
  61. package/__compiled__/esm/src/log.mjs.map +1 -1
  62. package/__compiled__/esm/src/packageJson.d.mts +20 -5
  63. package/__compiled__/esm/src/packageJson.mjs.map +1 -1
  64. package/__compiled__/esm/src/pipeline.d.mts +6 -0
  65. package/__compiled__/esm/src/pipeline.mjs +20 -0
  66. package/__compiled__/esm/src/pipeline.mjs.map +1 -0
  67. package/__compiled__/esm/src/plugins/babel/findBabelConfig.mjs.map +1 -1
  68. package/__compiled__/esm/src/plugins/babel/index.mjs +1 -0
  69. package/__compiled__/esm/src/plugins/babel/index.mjs.map +1 -1
  70. package/__compiled__/esm/src/plugins/react/index.mjs.map +1 -1
  71. package/__compiled__/esm/src/promiseSettledResultErrors.d.mts +3 -0
  72. package/__compiled__/esm/src/promiseSettledResultErrors.mjs +15 -0
  73. package/__compiled__/esm/src/promiseSettledResultErrors.mjs.map +1 -0
  74. package/__compiled__/esm/src/resolveDirs.d.mts +1 -5
  75. package/__compiled__/esm/src/resolveDirs.mjs +1 -0
  76. package/__compiled__/esm/src/resolveDirs.mjs.map +1 -1
  77. package/__compiled__/esm/src/run.mjs +1 -1
  78. package/__compiled__/esm/src/run.mjs.map +1 -1
  79. package/__compiled__/esm/src/tasks/binsTask.mjs.map +1 -1
  80. package/__compiled__/esm/src/tasks/buildTypesTask/buildTypesTask.d.mts +3 -3
  81. package/__compiled__/esm/src/tasks/buildTypesTask/buildTypesTask.mjs +6 -4
  82. package/__compiled__/esm/src/tasks/buildTypesTask/buildTypesTask.mjs.map +1 -1
  83. package/__compiled__/esm/src/tasks/buildTypesTask/callTypescript.d.mts +3 -1
  84. package/__compiled__/esm/src/tasks/buildTypesTask/callTypescript.mjs +54 -12
  85. package/__compiled__/esm/src/tasks/buildTypesTask/callTypescript.mjs.map +1 -1
  86. package/__compiled__/esm/src/tasks/buildTypesTask/inlineExtensions.d.mts +8 -2
  87. package/__compiled__/esm/src/tasks/buildTypesTask/inlineExtensions.mjs +101 -22
  88. package/__compiled__/esm/src/tasks/buildTypesTask/inlineExtensions.mjs.map +1 -1
  89. package/__compiled__/esm/src/tasks/copyStaticFilesTask.mjs.map +1 -1
  90. package/__compiled__/esm/src/tasks/jsFilesTask.mjs.map +1 -1
  91. package/__compiled__/esm/src/tasks/utils.mjs.map +1 -1
  92. package/__compiled__/esm/src/tasks/viteTask.d.mts +16 -0
  93. package/__compiled__/esm/src/{buildVite.mjs → tasks/viteTask.mjs} +14 -3
  94. package/__compiled__/esm/src/tasks/viteTask.mjs.map +1 -0
  95. package/__compiled__/esm/src/writePackageJson.mjs.map +1 -1
  96. package/package.json +13 -9
  97. package/__compiled__/cjs/src/buildVite.d.ts +0 -15
  98. package/__compiled__/cjs/src/buildVite.js.map +0 -1
  99. package/__compiled__/cjs/src/run.d.ts +0 -1
  100. package/__compiled__/esm/src/buildVite.d.mts +0 -15
  101. package/__compiled__/esm/src/buildVite.mjs.map +0 -1
  102. package/__compiled__/esm/src/run.d.mts +0 -1
@@ -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(error);\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;AAC9B,cAAQ,MAAM,KAAK;AAAA,IACrB;AAAA,EACF;AACF,CAAC;"}
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 +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\";\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
+ {"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,EAAA;AAEjC,QAAMA,GAAM,MAAA,YAAY,EAAE,WAAW,MAAM;AACrC,QAAA,sBAAsBC,iBAAW,IAAI;AACrC,QAAA,0BAAU,IAAoB;AACpC,aAAW,MAAM,aAAa;AACxB,QAAA,GAAG,kBAAkB,MAAM;AAC7B;AAAA,IAAA;AAEF,QAAI,GAAG,SAAS,SAAS,KAAK,GAAG;AAC/B;AAAA,IAAA;AAEF,UAAM,YAAY,oBAAoB,IAAI,GAAG,cAAc;AAC3D,QAAI,CAAC,WAAW;AACd;AAAA,IAAA;AAEF,eAAW,WAAW,WAAW;AAC/B,YAAM,YAAYC,KAAAA,SAAS,YAAYC,UAAK,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,MAEb;AACA,UAAI,IAAIF,KAAA,SAAS,QAAQ,QAAQ,GAAG,OAAO;AAAA,IAAA;AAAA,EAC7C;AAGF,MAAI,IAAI,MAAM;AACNG,cAAA,QAAQ,CAAC,GAAG,IAAI,QAAQ,EAAE,KAAK,IAAI,CAAC;AAAA,EAAA;AAGrC,SAAA;AACT;;"}
@@ -1,11 +1,11 @@
1
- import { type Rollup } from "vite";
2
1
  import type { DetectedModules } from "../../detectModules.js";
2
+ import { type PackageJson } from "../../packageJson.js";
3
3
  type BuildTypesTaskOption = {
4
- buildOutput: Rollup.OutputChunk[];
5
4
  entrypoints: Map<string, string>;
6
5
  sourceDir: string;
7
6
  outDir: string;
8
7
  modules: DetectedModules;
8
+ packageJson: PackageJson;
9
9
  };
10
- export declare function buildTypesTask({ buildOutput, entrypoints, sourceDir, outDir, modules, }: BuildTypesTaskOption): Promise<Map<string, string>>;
10
+ export declare function buildTypesTask({ entrypoints, sourceDir, outDir, packageJson, modules, }: BuildTypesTaskOption): Promise<Map<string, string>>;
11
11
  export {};
@@ -1,14 +1,16 @@
1
1
  "use strict";
2
2
  Object.defineProperty(exports, Symbol.toStringTag, { value: "Module" });
3
- require("vite");
4
3
  const callTypescript = require("./callTypescript.js");
5
4
  const utils = require("../utils.js");
6
5
  const log = require("../../log.js");
6
+ require("node:fs/promises");
7
+ require("zod");
8
+ require("node:path");
7
9
  async function buildTypesTask({
8
- buildOutput,
9
10
  entrypoints,
10
11
  sourceDir,
11
12
  outDir,
13
+ packageJson,
12
14
  modules
13
15
  }) {
14
16
  const reversedEntrypoints = utils.reverseMap(entrypoints);
@@ -18,11 +20,11 @@ async function buildTypesTask({
18
20
  if (tsEntrypoints.length === 0 || modules.ts == null) {
19
21
  return /* @__PURE__ */ new Map();
20
22
  }
21
- const files = buildOutput.map((el) => el.facadeModuleId ?? "");
22
23
  const dtsMap = await callTypescript.callTypescript({
23
24
  ts: modules.ts,
24
25
  sourceDir,
25
- files,
26
+ packageJson,
27
+ files: tsEntrypoints,
26
28
  outDir
27
29
  });
28
30
  const result = /* @__PURE__ */ new Map();
@@ -1 +1 @@
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;;"}
1
+ {"version":3,"file":"buildTypesTask.js","sources":["../../../../../../src/tasks/buildTypesTask/buildTypesTask.ts"],"sourcesContent":["import { callTypescript } from \"./callTypescript.js\";\nimport { reverseMap } from \"../utils.js\";\nimport { okLog } from \"../../log.js\";\nimport type { DetectedModules } from \"../../detectModules.js\";\nimport { type PackageJson } from \"../../packageJson.js\";\n\ntype BuildTypesTaskOption = {\n entrypoints: Map<string, string>;\n sourceDir: string;\n outDir: string;\n modules: DetectedModules;\n packageJson: PackageJson;\n};\n\nexport async function buildTypesTask({\n entrypoints,\n sourceDir,\n outDir,\n packageJson,\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 dtsMap = await callTypescript({\n ts: modules.ts,\n sourceDir,\n packageJson,\n files: tsEntrypoints,\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,EACtB;AACA,MAAI,cAAc,WAAW,KAAK,QAAQ,MAAM,MAAM;AACpD,+BAAW,IAAoB;AAAA,EAAA;AAG3B,QAAA,SAAS,MAAMC,8BAAe;AAAA,IAClC,IAAI,QAAQ;AAAA,IACZ;AAAA,IACA;AAAA,IACA,OAAO;AAAA,IACP;AAAA,EAAA,CACD;AAEK,QAAA,6BAAa,IAAoB;AACvC,aAAW,CAAC,OAAO,MAAM,KAAK,QAAQ;AAC9B,UAAA,aAAa,oBAAoB,IAAI,MAAM;AACjD,QAAI,CAAC,YAAY;AACf;AAAA,IAAA;AAEF,eAAW,QAAQ,YAAY;AACtB,aAAA,IAAI,OAAO,IAAI;AAAA,IAAA;AAAA,EACxB;AAGFC,MAAAA,MAAM,OAAO;AAEN,SAAA;AACT;;"}
@@ -1,8 +1,10 @@
1
+ import { type PackageJson } from "../../packageJson.js";
1
2
  type BuildTypesOptions = {
2
3
  ts: typeof import("typescript");
3
4
  sourceDir: string;
5
+ packageJson: PackageJson;
4
6
  files: string[];
5
7
  outDir: string;
6
8
  };
7
- export declare function callTypescript({ ts, sourceDir, files, outDir, }: BuildTypesOptions): Promise<Map<string, string>>;
9
+ export declare function callTypescript({ ts, sourceDir, files, packageJson, outDir, }: BuildTypesOptions): Promise<Map<string, string>>;
8
10
  export {};
@@ -3,6 +3,10 @@ Object.defineProperty(exports, Symbol.toStringTag, { value: "Module" });
3
3
  const path = require("node:path");
4
4
  const fs = require("node:fs");
5
5
  const inlineExtensions = require("./inlineExtensions.js");
6
+ require("node:fs/promises");
7
+ require("zod");
8
+ const detectModules = require("../../detectModules.js");
9
+ const error = require("../../error.js");
6
10
  function _interopNamespaceDefault(e) {
7
11
  const n = Object.create(null, { [Symbol.toStringTag]: { value: "Module" } });
8
12
  if (e) {
@@ -21,9 +25,9 @@ function _interopNamespaceDefault(e) {
21
25
  }
22
26
  const path__namespace = /* @__PURE__ */ _interopNamespaceDefault(path);
23
27
  const fs__namespace = /* @__PURE__ */ _interopNamespaceDefault(fs);
24
- function makeFileExists(outDir, type, filePath) {
28
+ function makeFileExists(outDir, filePath) {
25
29
  return (p) => {
26
- const dir = path__namespace.join(outDir, "__compiled__", type, path__namespace.dirname(filePath));
30
+ const dir = path__namespace.join(outDir, path__namespace.dirname(filePath));
27
31
  return fs__namespace.existsSync(path__namespace.join(dir, p));
28
32
  };
29
33
  }
@@ -31,6 +35,7 @@ async function callTypescript({
31
35
  ts,
32
36
  sourceDir,
33
37
  files,
38
+ packageJson,
34
39
  outDir
35
40
  }) {
36
41
  const configPath = path__namespace.join(sourceDir, "tsconfig.json");
@@ -70,18 +75,55 @@ async function callTypescript({
70
75
  const esmFinalPath = finalEsmPath.replace(/\.d\.ts$/, ".d.mts");
71
76
  sourceToDtsMap.set(esmFinalPath, sourceFileName);
72
77
  fs__namespace.mkdirSync(path__namespace.dirname(esmFinalPath), { recursive: true });
73
- fs__namespace.writeFileSync(
74
- esmFinalPath,
75
- inlineExtensions.inlineExtensionsMjs(data, makeFileExists(outDir, "esm", relativePath))
76
- );
78
+ fs__namespace.writeFileSync(esmFinalPath, data);
77
79
  const finalCjsPath = path__namespace.join(outDir, "__compiled__", "cjs", relativePath);
78
- const cjsFinalPath = finalCjsPath.replace(/\.d\.ts$/, ".d.ts");
79
- fs__namespace.writeFileSync(
80
- cjsFinalPath,
81
- inlineExtensions.inlineExtensionsCjs(data, makeFileExists(outDir, "cjs", relativePath))
82
- );
80
+ fs__namespace.mkdirSync(path__namespace.dirname(finalCjsPath), { recursive: true });
81
+ const cjsFinalPath = finalCjsPath;
82
+ fs__namespace.writeFileSync(cjsFinalPath, data);
83
83
  sourceToDtsMap.set(cjsFinalPath, sourceFileName);
84
84
  });
85
+ const allImportedLibraries = /* @__PURE__ */ new Set();
86
+ for (const file of sourceToDtsMap.keys()) {
87
+ const content = fs__namespace.readFileSync(file, "utf-8");
88
+ const relativePath = path__namespace.relative(outDir, file);
89
+ if (file.endsWith(".d.ts")) {
90
+ const transformedCode = inlineExtensions.inlineExtensionsCjs(
91
+ ts,
92
+ content,
93
+ makeFileExists(outDir, relativePath)
94
+ );
95
+ for (const lib of transformedCode.usedLibraries.values()) {
96
+ allImportedLibraries.add(lib);
97
+ }
98
+ fs__namespace.writeFileSync(file, transformedCode.output);
99
+ }
100
+ if (file.endsWith(".d.mts")) {
101
+ const transformedCode = inlineExtensions.inlineExtensionsMjs(
102
+ ts,
103
+ content,
104
+ makeFileExists(outDir, relativePath)
105
+ );
106
+ for (const lib of transformedCode.usedLibraries.values()) {
107
+ allImportedLibraries.add(lib);
108
+ }
109
+ fs__namespace.writeFileSync(file, transformedCode.output);
110
+ }
111
+ }
112
+ const notInstalledLibraries = /* @__PURE__ */ new Set();
113
+ for (const lib of allImportedLibraries) {
114
+ if (detectModules.getMinVersion(packageJson, lib, [
115
+ "optionalDependencies",
116
+ "devDependencies"
117
+ ]) == null) {
118
+ notInstalledLibraries.add(lib);
119
+ }
120
+ }
121
+ if (notInstalledLibraries.size > 0) {
122
+ const libsList = [...notInstalledLibraries].map((x) => `"${x}"`).join(", ");
123
+ throw new error.BuildError(
124
+ `You use types from dependencies that are not installed: ${libsList}. Please install them into dependencies or peerDependencies.`
125
+ );
126
+ }
85
127
  return sourceToDtsMap;
86
128
  }
87
129
  exports.callTypescript = callTypescript;
@@ -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 {\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 outDir: \"\",\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,MACrB,QAAQ;AAAA;AAAA,MAER,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
+ {"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\";\nimport { type PackageJson } from \"../../packageJson.js\";\nimport { getMinVersion } from \"../../detectModules.js\";\nimport { BuildError } from \"../../error.js\";\n\ntype BuildTypesOptions = {\n ts: typeof import(\"typescript\");\n sourceDir: string;\n packageJson: PackageJson;\n files: string[];\n outDir: string;\n};\n\nfunction makeFileExists(outDir: string, filePath: string) {\n return (p: string) => {\n const dir = path.join(outDir, 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 packageJson,\n outDir,\n}: BuildTypesOptions) {\n // <build d.ts>\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 outDir: \"\",\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, data);\n\n const finalCjsPath = path.join(outDir, \"__compiled__\", \"cjs\", relativePath);\n fs.mkdirSync(path.dirname(finalCjsPath), { recursive: true });\n const cjsFinalPath = finalCjsPath;\n fs.writeFileSync(cjsFinalPath, data);\n sourceToDtsMap.set(cjsFinalPath, sourceFileName);\n });\n\n // </build d.ts>\n\n const allImportedLibraries = new Set<string>();\n // <fix vscode typings>\n for (const file of sourceToDtsMap.keys()) {\n const content = fs.readFileSync(file, \"utf-8\");\n const relativePath = path.relative(outDir, file);\n if (file.endsWith(\".d.ts\")) {\n const transformedCode = inlineExtensionsCjs(\n ts,\n content,\n makeFileExists(outDir, relativePath),\n );\n for (const lib of transformedCode.usedLibraries.values()) {\n allImportedLibraries.add(lib);\n }\n fs.writeFileSync(file, transformedCode.output);\n }\n if (file.endsWith(\".d.mts\")) {\n const transformedCode = inlineExtensionsMjs(\n ts,\n content,\n makeFileExists(outDir, relativePath),\n );\n for (const lib of transformedCode.usedLibraries.values()) {\n allImportedLibraries.add(lib);\n }\n fs.writeFileSync(file, transformedCode.output);\n }\n }\n // </fix vscode typings>\n\n // <check not installed typings libraries>\n const notInstalledLibraries = new Set<string>();\n for (const lib of allImportedLibraries) {\n if (\n getMinVersion(packageJson, lib, [\n \"optionalDependencies\",\n \"devDependencies\",\n ]) == null\n ) {\n notInstalledLibraries.add(lib);\n }\n }\n if (notInstalledLibraries.size > 0) {\n const libsList = [...notInstalledLibraries].map((x) => `\"${x}\"`).join(\", \");\n throw new BuildError(\n `You use types from dependencies that are not installed: ${libsList}. Please install them into dependencies or peerDependencies.`,\n );\n }\n // </check not installed typings libraries>\n\n return sourceToDtsMap;\n}\n"],"names":["path","fs","inlineExtensionsCjs","inlineExtensionsMjs","getMinVersion","BuildError"],"mappings":"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"}
@@ -1,3 +1,9 @@
1
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;
2
+ export declare function inlineExtensionsMjs(ts: typeof import("typescript"), content: string, fileExists: FileExists): {
3
+ output: string;
4
+ usedLibraries: Set<string>;
5
+ };
6
+ export declare function inlineExtensionsCjs(ts: typeof import("typescript"), content: string, fileExists: FileExists): {
7
+ output: string;
8
+ usedLibraries: Set<string>;
9
+ };
@@ -1,32 +1,111 @@
1
1
  "use strict";
2
2
  Object.defineProperty(exports, Symbol.toStringTag, { value: "Module" });
3
3
  const path = require("node:path");
4
- const importExportRegex = /(?:import|export)\s*(?:type\s*)?(?:(?:{\s*.+?\s*}|\*|[^{}\s]+)\s*from\s*)?["'](.+)["']/g;
5
- const dynamicImportRegex = /import\(["'](.+)["']\)/g;
6
- function addExtension(content, regex, ext, fileExists) {
7
- return content.replace(regex, (match, p1) => {
8
- if (!p1.startsWith(".")) {
9
- return match;
4
+ function transformAndExtractImports(ts, content, ext, dtsExt, fileExists) {
5
+ const usedLibraries = /* @__PURE__ */ new Set();
6
+ function addExtension(ts2, node, ext2, dtsExt2, fileExists2) {
7
+ const importPath = node.text;
8
+ if (!importPath.startsWith(".")) {
9
+ usedLibraries.add(importPath);
10
+ return node;
10
11
  }
11
- if (!p1.endsWith(".cjs") && !p1.endsWith(".mjs") && !p1.endsWith(".js")) {
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
+ if (importPath.endsWith(".cjs") || importPath.endsWith(".mjs") || importPath.endsWith(".js")) {
13
+ return node;
17
14
  }
18
- return match;
19
- });
15
+ if (fileExists2(`${importPath}${dtsExt2}`)) {
16
+ return ts2.factory.createStringLiteral(`${importPath}${ext2}`);
17
+ }
18
+ if (fileExists2("./" + path.join(importPath, `index${dtsExt2}`))) {
19
+ return ts2.factory.createStringLiteral(
20
+ "./" + path.join(importPath, `index${ext2}`)
21
+ );
22
+ }
23
+ return node;
24
+ }
25
+ const sourceFile = ts.createSourceFile(
26
+ "temp.ts",
27
+ content,
28
+ ts.ScriptTarget.ESNext,
29
+ true
30
+ );
31
+ const transformer = (context) => (rootNode) => {
32
+ function visit(node) {
33
+ if (ts.isExportDeclaration(node)) {
34
+ const moduleSpecifier = node.moduleSpecifier;
35
+ if (moduleSpecifier && ts.isStringLiteral(moduleSpecifier)) {
36
+ const updatedSpecifier = addExtension(
37
+ ts,
38
+ moduleSpecifier,
39
+ ext,
40
+ dtsExt,
41
+ fileExists
42
+ );
43
+ return ts.factory.updateExportDeclaration(
44
+ node,
45
+ node.modifiers,
46
+ node.isTypeOnly,
47
+ node.exportClause,
48
+ updatedSpecifier,
49
+ node.attributes
50
+ );
51
+ }
52
+ }
53
+ if (ts.isImportDeclaration(node)) {
54
+ const moduleSpecifier = node.moduleSpecifier;
55
+ if (moduleSpecifier && ts.isStringLiteral(moduleSpecifier)) {
56
+ const updatedSpecifier = addExtension(
57
+ ts,
58
+ moduleSpecifier,
59
+ ext,
60
+ dtsExt,
61
+ fileExists
62
+ );
63
+ return ts.factory.updateImportDeclaration(
64
+ node,
65
+ node.modifiers,
66
+ node.importClause,
67
+ updatedSpecifier,
68
+ node.attributes
69
+ );
70
+ }
71
+ }
72
+ if (ts.isCallExpression(node) && node.expression.kind === ts.SyntaxKind.ImportKeyword) {
73
+ const [argument] = node.arguments;
74
+ if (argument && ts.isStringLiteral(argument)) {
75
+ const updatedArgument = addExtension(
76
+ ts,
77
+ argument,
78
+ ext,
79
+ dtsExt,
80
+ fileExists
81
+ );
82
+ return ts.factory.updateCallExpression(
83
+ node,
84
+ node.expression,
85
+ node.typeArguments,
86
+ [updatedArgument]
87
+ );
88
+ }
89
+ }
90
+ if (ts.isStringLiteral(node) && ts.isLiteralTypeNode(node.parent) && node.parent.parent.kind === ts.SyntaxKind.ImportType) {
91
+ return addExtension(ts, node, ext, dtsExt, fileExists);
92
+ }
93
+ return ts.visitEachChild(node, visit, context);
94
+ }
95
+ return ts.visitNode(rootNode, visit);
96
+ };
97
+ const result = ts.transform(sourceFile, [transformer]);
98
+ const printer = ts.createPrinter();
99
+ const transformedSourceFile = result.transformed[0];
100
+ const output = printer.printFile(transformedSourceFile);
101
+ result.dispose();
102
+ return { output, usedLibraries };
20
103
  }
21
- function inlineExtensionsMjs(content, fileExists) {
22
- content = addExtension(content, importExportRegex, ".mjs", fileExists);
23
- content = addExtension(content, dynamicImportRegex, ".mjs", fileExists);
24
- return content;
104
+ function inlineExtensionsMjs(ts, content, fileExists) {
105
+ return transformAndExtractImports(ts, content, ".mjs", ".d.mts", fileExists);
25
106
  }
26
- function inlineExtensionsCjs(content, fileExists) {
27
- content = addExtension(content, importExportRegex, ".js", fileExists);
28
- content = addExtension(content, dynamicImportRegex, ".js", fileExists);
29
- return content;
107
+ function inlineExtensionsCjs(ts, content, fileExists) {
108
+ return transformAndExtractImports(ts, content, ".js", ".d.ts", fileExists);
30
109
  }
31
110
  exports.inlineExtensionsCjs = inlineExtensionsCjs;
32
111
  exports.inlineExtensionsMjs = inlineExtensionsMjs;
@@ -1 +1 @@
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
+ {"version":3,"file":"inlineExtensions.js","sources":["../../../../../../src/tasks/buildTypesTask/inlineExtensions.ts"],"sourcesContent":["import type * as TS from \"typescript\";\nimport { join } from \"node:path\";\n\n// It needs for VSCode. It cannot resolve the import/export if it has no extension\n\nexport type FileExists = (path: string) => boolean;\n\nfunction transformAndExtractImports(\n ts: typeof import(\"typescript\"),\n content: string,\n ext: string,\n dtsExt: string,\n fileExists: FileExists,\n) {\n const usedLibraries = new Set<string>();\n function addExtension(\n ts: typeof import(\"typescript\"),\n node: TS.StringLiteral,\n ext: string,\n dtsExt: string,\n fileExists: FileExists,\n ): TS.StringLiteral {\n const importPath = node.text;\n\n if (!importPath.startsWith(\".\")) {\n usedLibraries.add(importPath);\n return node; // Leave external imports untouched\n }\n\n if (\n importPath.endsWith(\".cjs\") ||\n importPath.endsWith(\".mjs\") ||\n importPath.endsWith(\".js\")\n ) {\n return node;\n }\n\n if (fileExists(`${importPath}${dtsExt}`)) {\n return ts.factory.createStringLiteral(`${importPath}${ext}`);\n }\n\n if (fileExists(\"./\" + join(importPath, `index${dtsExt}`))) {\n return ts.factory.createStringLiteral(\n \"./\" + join(importPath, `index${ext}`),\n );\n }\n\n return node; // Return the original node if no modification was made\n }\n\n const sourceFile = ts.createSourceFile(\n \"temp.ts\",\n content,\n ts.ScriptTarget.ESNext,\n true,\n );\n\n const transformer: TS.TransformerFactory<TS.SourceFile> =\n (context) => (rootNode) => {\n function visit(node: TS.Node): TS.Node {\n // export {} from \"moduleSpecifier\";\n if (ts.isExportDeclaration(node)) {\n const moduleSpecifier = node.moduleSpecifier;\n if (moduleSpecifier && ts.isStringLiteral(moduleSpecifier)) {\n const updatedSpecifier = addExtension(\n ts,\n moduleSpecifier,\n ext,\n dtsExt,\n fileExists,\n );\n return ts.factory.updateExportDeclaration(\n node,\n node.modifiers,\n node.isTypeOnly,\n node.exportClause,\n updatedSpecifier,\n node.attributes,\n );\n }\n }\n\n // import {} from \"moduleSpecifier\";\n if (ts.isImportDeclaration(node)) {\n const moduleSpecifier = node.moduleSpecifier;\n if (moduleSpecifier && ts.isStringLiteral(moduleSpecifier)) {\n const updatedSpecifier = addExtension(\n ts,\n moduleSpecifier,\n ext,\n dtsExt,\n fileExists,\n );\n return ts.factory.updateImportDeclaration(\n node,\n node.modifiers,\n node.importClause,\n updatedSpecifier,\n node.attributes,\n );\n }\n }\n\n // import(\"argument\");\n if (\n ts.isCallExpression(node) &&\n node.expression.kind === ts.SyntaxKind.ImportKeyword\n ) {\n const [argument] = node.arguments;\n if (argument && ts.isStringLiteral(argument)) {\n const updatedArgument = addExtension(\n ts,\n argument,\n ext,\n dtsExt,\n fileExists,\n );\n return ts.factory.updateCallExpression(\n node,\n node.expression,\n node.typeArguments,\n [updatedArgument],\n );\n }\n }\n\n // Generic<import(\"node\")>;\n if (\n ts.isStringLiteral(node) &&\n ts.isLiteralTypeNode(node.parent) &&\n node.parent.parent.kind === ts.SyntaxKind.ImportType\n ) {\n return addExtension(ts, node, ext, dtsExt, fileExists);\n }\n\n return ts.visitEachChild(node, visit, context);\n }\n\n return ts.visitNode(rootNode, visit) as TS.SourceFile;\n };\n\n const result = ts.transform(sourceFile, [transformer]);\n const printer = ts.createPrinter();\n const transformedSourceFile = result.transformed[0];\n const output = printer.printFile(transformedSourceFile);\n result.dispose();\n\n return { output, usedLibraries };\n}\n\nexport function inlineExtensionsMjs(\n ts: typeof import(\"typescript\"),\n content: string,\n fileExists: FileExists,\n) {\n return transformAndExtractImports(ts, content, \".mjs\", \".d.mts\", fileExists);\n}\n\nexport function inlineExtensionsCjs(\n ts: typeof import(\"typescript\"),\n content: string,\n fileExists: FileExists,\n) {\n return transformAndExtractImports(ts, content, \".js\", \".d.ts\", fileExists);\n}\n"],"names":["ts","ext","dtsExt","fileExists","join"],"mappings":"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"}
@@ -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\";\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
+ {"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,eAAe,CAAC;AAAA,IAAA;AAAA,EAE9B;AAEM,QAAA,0BAAU,IAAY;AAC5B,aAAW,QAAQ,eAAe;AAC5B,QAAA;AACF,YAAM,eAAe,SAAS,IAAI,KAAK,aAAa;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,MAAA;AAAA,IACtB,QACM;AAAA,IAAA;AAAA,EAAC;AAGJ,SAAA;AACT;;"}
@@ -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\";\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;;"}
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,QAC3C;AAAA,MAAA;AAEF,UAAI,SAAS,SAAS,GAAG,SAAS,SAAS,MAAM,GAAG;AAC3C,eAAA;AAAA,UACL,MAAM,GAAG;AAAA,UACT,YAAY,GAAG,QAAQ,SAAS,SAAS;AAAA,QAC3C;AAAA,MAAA;AAAA,IACF;AAAA,EACF;AAEF,SAAO,EAAE,MAAM,IAAI,YAAY,MAAM;AACvC;AAEA,eAAsB,YAAY;AAAA,EAChC;AAAA,EACA;AAAA,EACA;AACF,GAAsB;AACd,QAAA,0BAAU,IAAoB;AACpC,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,KAAAA,SAAS,WAAWD,UAAK,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,IAAA;AAE3C,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,KAAAA,SAAS,WAAWD,UAAK,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,EAAA;AAG7DC,MAAAA,MAAM,yBAAyB;AACxB,SAAA;AACT;;"}
@@ -1 +1 @@
1
- {"version":3,"file":"utils.js","sources":["../../../../../src/tasks/utils.ts"],"sourcesContent":["export function reverseMap(\n map: Map<string, string>,\n): Map<string, Array<string>> {\n const reversed = new Map<string, Array<string>>();\n for (const [key, value] of map) {\n const arr = reversed.get(value) ?? [];\n arr.push(key);\n reversed.set(value, arr);\n }\n return reversed;\n}\n"],"names":[],"mappings":";;AAAO,SAAS,WACd,KAC4B;AACtB,QAAA,+BAAe;AACrB,aAAW,CAAC,KAAK,KAAK,KAAK,KAAK;AAC9B,UAAM,MAAM,SAAS,IAAI,KAAK,KAAK,CAAA;AACnC,QAAI,KAAK,GAAG;AACH,aAAA,IAAI,OAAO,GAAG;AAAA,EACzB;AACO,SAAA;AACT;;"}
1
+ {"version":3,"file":"utils.js","sources":["../../../../../src/tasks/utils.ts"],"sourcesContent":["export function reverseMap(\n map: Map<string, string>,\n): Map<string, Array<string>> {\n const reversed = new Map<string, Array<string>>();\n for (const [key, value] of map) {\n const arr = reversed.get(value) ?? [];\n arr.push(key);\n reversed.set(value, arr);\n }\n return reversed;\n}\n"],"names":[],"mappings":";;AAAO,SAAS,WACd,KAC4B;AACtB,QAAA,+BAAe,IAA2B;AAChD,aAAW,CAAC,KAAK,KAAK,KAAK,KAAK;AAC9B,UAAM,MAAM,SAAS,IAAI,KAAK,KAAK,CAAC;AACpC,QAAI,KAAK,GAAG;AACH,aAAA,IAAI,OAAO,GAAG;AAAA,EAAA;AAElB,SAAA;AACT;;"}
@@ -0,0 +1,16 @@
1
+ import { type UserConfig, type Rollup } from "vite";
2
+ type ViteTaskParams = {
3
+ viteConfig: UserConfig;
4
+ };
5
+ type BuildSuccess = {
6
+ error: false;
7
+ output: Rollup.OutputChunk[];
8
+ };
9
+ type BuildErrorType = {
10
+ error: true;
11
+ errors: Array<string>;
12
+ };
13
+ type BuildResult = BuildSuccess | BuildErrorType;
14
+ export declare function buildVite({ viteConfig, }: ViteTaskParams): Promise<BuildResult>;
15
+ export declare function viteTask({ viteConfig }: ViteTaskParams): Promise<any>;
16
+ export {};
@@ -1,7 +1,9 @@
1
1
  "use strict";
2
2
  Object.defineProperty(exports, Symbol.toStringTag, { value: "Module" });
3
3
  const vite = require("vite");
4
- const errors = require("./errors.js");
4
+ const errors = require("../errors.js");
5
+ const log = require("../log.js");
6
+ const error = require("../error.js");
5
7
  async function buildVite({
6
8
  viteConfig
7
9
  }) {
@@ -32,5 +34,14 @@ async function buildVite({
32
34
  errors: [errors.errors.rollupError]
33
35
  };
34
36
  }
37
+ async function viteTask({ viteConfig }) {
38
+ const outputs = await buildVite({ viteConfig });
39
+ if (outputs.error) {
40
+ throw outputs.errors.map((e) => new error.BuildError(e));
41
+ }
42
+ log.okLog("Vite");
43
+ return outputs.output;
44
+ }
35
45
  exports.buildVite = buildVite;
36
- //# sourceMappingURL=buildVite.js.map
46
+ exports.viteTask = viteTask;
47
+ //# sourceMappingURL=viteTask.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"viteTask.js","sources":["../../../../../src/tasks/viteTask.ts"],"sourcesContent":["import { build, type UserConfig, type Rollup } from \"vite\";\nimport { errors } from \"../errors.js\";\nimport { okLog } from \"../log.js\";\nimport { BuildError } from \"../error.js\";\n\ntype ViteTaskParams = {\n viteConfig: UserConfig;\n};\n\ntype BuildSuccess = {\n error: false;\n output: Rollup.OutputChunk[];\n};\ntype BuildErrorType = {\n error: true;\n errors: Array<string>;\n};\n\ntype BuildResult = BuildSuccess | BuildErrorType;\n\nexport async function buildVite({\n viteConfig,\n}: ViteTaskParams): 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\nexport async function viteTask({ viteConfig }: ViteTaskParams) {\n const outputs = await buildVite({ viteConfig });\n if (outputs.error) {\n throw outputs.errors.map((e) => new BuildError(e));\n }\n\n okLog(\"Vite\");\n return outputs.output;\n}\n"],"names":["build","errors","x","BuildError","okLog"],"mappings":";;;;;;AAoBA,eAAsB,UAAU;AAAA,EAC9B;AACF,GAAyC;AACnC,MAAA;AACI,UAAA,UAAU,MAAMA,KAAA,MAAM,UAAU;AACtC,QAAI,CAAC,MAAM,QAAQ,OAAO,GAAG;AACpB,aAAA;AAAA,QACL,OAAO;AAAA,QACP,QAAQ,CAACC,OAAAA,OAAO,WAAW;AAAA,MAC7B;AAAA,IAAA;AAGK,WAAA;AAAA,MACL,OAAO;AAAA,MACP,QAAQ,QAAQ;AAAA,QAAQ,CAAC,MACvB,EAAE,OAAO,OAAO,CAACC,OAAMA,GAAE,SAAS,OAAO;AAAA,MAAA;AAAA,IAE7C;AAAA,WACO,GAAG;AACV,QAAI,aAAa,OAAO;AACf,aAAA;AAAA,QACL,OAAO;AAAA,QACP,QAAQ,CAAC,EAAE,OAAO;AAAA,MACpB;AAAA,IAAA;AAAA,EACF;AAEK,SAAA;AAAA,IACL,OAAO;AAAA,IACP,QAAQ,CAACD,OAAAA,OAAO,WAAW;AAAA,EAC7B;AACF;AAEsB,eAAA,SAAS,EAAE,cAA8B;AAC7D,QAAM,UAAU,MAAM,UAAU,EAAE,YAAY;AAC9C,MAAI,QAAQ,OAAO;AACX,UAAA,QAAQ,OAAO,IAAI,CAAC,MAAM,IAAIE,MAAAA,WAAW,CAAC,CAAC;AAAA,EAAA;AAGnDC,MAAAA,MAAM,MAAM;AACZ,SAAO,QAAQ;AACjB;;;"}
@@ -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\";\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 peerDependenciesMeta: parsed.peerDependenciesMeta,\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,IACxB,sBAAsB,OAAO;AAAA,EAAA;AAGzB,QAAAA,aAAU,GAAG,MAAM,iBAAiB,KAAK,UAAU,KAAK,MAAM,CAAC,CAAC;AAEtEC,MAAA,MAAM,cAAc;AACtB;;"}
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 peerDependenciesMeta: parsed.peerDependenciesMeta,\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,EAAA;AAEL,MAAA,OAAO,UAAU,UAAU;AACtB,WAAA;AAAA,EAAA;AAET,SAAO,MAAM;AACf;AAEA,eAAsB,iBACpB,QACA,QACA,EAAE,YAAY,WACd;AAGA,QAAM,aAAoD,CAAC;AAC3D,aAAW,CAAC,KAAK,KAAK,KAAK,YAAY;AACrC,UAAM,WAAkC,CAAC;AAEzC,QAAI,MAAM,KAAK;AACb,eAAS,SAAS,CAAC;AACnB,UAAI,MAAM,MAAM;AACL,iBAAA,OAAO,QAAQ,MAAM;AAAA,MAAA;AAEvB,eAAA,OAAO,UAAU,MAAM;AAAA,IAAA;AAElC,QAAI,MAAM,KAAK;AACb,eAAS,UAAU,CAAC;AACpB,UAAI,MAAM,MAAM;AACL,iBAAA,QAAQ,QAAQ,MAAM;AAAA,MAAA;AAExB,eAAA,QAAQ,UAAU,MAAM;AAAA,IAAA;AAI1B,aAAA,QAAQ,MAAM,QAAQ,MAAM;AAGrC,aAAS,UAAU,MAAM;AAEzB,eAAW,GAAG,IAAI;AAAA,EAAA;AAEpB,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,IACxB,sBAAsB,OAAO;AAAA,EAC/B;AAEM,QAAAA,aAAU,GAAG,MAAM,iBAAiB,KAAK,UAAU,KAAK,MAAM,CAAC,CAAC;AAEtEC,MAAAA,MAAM,cAAc;AACtB;;"}
@@ -3,7 +3,17 @@ export declare const args: {
3
3
  sourceDir: string;
4
4
  packagePath: string;
5
5
  outputDir: string;
6
+ seq: boolean;
6
7
  _: (string | number)[];
7
8
  $0: string;
8
9
  };
9
- export type Args = typeof args;
10
+ type OmitUnknown<T> = {
11
+ [K in keyof T as string extends K ? never : K]: T[K];
12
+ };
13
+ type ConvertUndefinedToOptional<T> = {
14
+ [K in keyof T as undefined extends T[K] ? K : never]?: Exclude<T[K], undefined>;
15
+ } & {
16
+ [K in keyof T as undefined extends T[K] ? never : K]: T[K];
17
+ };
18
+ export type Args = ConvertUndefinedToOptional<Omit<OmitUnknown<typeof args>, "_" | "$0">>;
19
+ export {};
@@ -1,6 +1,7 @@
1
1
  import yargs from "yargs";
2
2
  import * as process from "node:process";
3
- const args = yargs(process.argv.slice(2)).option("sourceDir", {
3
+ import { hideBin } from "yargs/helpers";
4
+ const argsSchema = yargs().option("sourceDir", {
4
5
  alias: "s",
5
6
  type: "string",
6
7
  describe: "path to the project directory. Default: current working directory"
@@ -12,7 +13,11 @@ const args = yargs(process.argv.slice(2)).option("sourceDir", {
12
13
  alias: "o",
13
14
  type: "string",
14
15
  describe: "path to the output directory. Default: cwd()/dist"
15
- }).help("help").parseSync();
16
+ }).option("seq", {
17
+ type: "boolean",
18
+ describe: "run internal tasks sequentially. It is useful for performance testing and debugging. This option is unstable and not recommended for production use."
19
+ }).help("help");
20
+ const args = argsSchema.parseSync(hideBin(process.argv));
16
21
  export {
17
22
  args
18
23
  };
@@ -1 +1 @@
1
- {"version":3,"file":"args.mjs","sources":["../../../../src/args.ts"],"sourcesContent":["import yargs from \"yargs\";\nimport * as process from \"node:process\";\n\nexport const args = yargs(process.argv.slice(2))\n .option(\"sourceDir\", {\n alias: \"s\",\n type: \"string\",\n describe:\n \"path to the project directory. Default: current working directory\",\n })\n .option(\"packagePath\", {\n alias: \"p\",\n type: \"string\",\n describe: \"path to the package.json. Default: cwd()/package.json\",\n })\n .option(\"outputDir\", {\n alias: \"o\",\n type: \"string\",\n describe: \"path to the output directory. Default: cwd()/dist\",\n })\n .help(\"help\")\n .parseSync();\n\nexport type Args = typeof args;\n"],"names":[],"mappings":";;AAGa,MAAA,OAAO,MAAM,QAAQ,KAAK,MAAM,CAAC,CAAC,EAC5C,OAAO,aAAa;AAAA,EACnB,OAAO;AAAA,EACP,MAAM;AAAA,EACN,UACE;AACJ,CAAC,EACA,OAAO,eAAe;AAAA,EACrB,OAAO;AAAA,EACP,MAAM;AAAA,EACN,UAAU;AACZ,CAAC,EACA,OAAO,aAAa;AAAA,EACnB,OAAO;AAAA,EACP,MAAM;AAAA,EACN,UAAU;AACZ,CAAC,EACA,KAAK,MAAM,EACX,UAAU;"}
1
+ {"version":3,"file":"args.mjs","sources":["../../../../src/args.ts"],"sourcesContent":["import yargs from \"yargs\";\nimport * as process from \"node:process\";\nimport { hideBin } from \"yargs/helpers\";\n\nconst argsSchema = yargs()\n .option(\"sourceDir\", {\n alias: \"s\",\n type: \"string\",\n describe:\n \"path to the project directory. Default: current working directory\",\n })\n .option(\"packagePath\", {\n alias: \"p\",\n type: \"string\",\n describe: \"path to the package.json. Default: cwd()/package.json\",\n })\n .option(\"outputDir\", {\n alias: \"o\",\n type: \"string\",\n describe: \"path to the output directory. Default: cwd()/dist\",\n })\n // Do not cover this option in tests because it is unstable\n .option(\"seq\", {\n type: \"boolean\",\n describe:\n \"run internal tasks sequentially. It is useful for performance testing and debugging. This option is unstable and not recommended for production use.\",\n })\n .help(\"help\");\n\nexport const args = argsSchema.parseSync(hideBin(process.argv));\n\ntype OmitUnknown<T> = {\n [K in keyof T as string extends K ? never : K]: T[K];\n};\ntype ConvertUndefinedToOptional<T> = {\n [K in keyof T as undefined extends T[K] ? K : never]?: Exclude<\n T[K],\n undefined\n >;\n} & {\n [K in keyof T as undefined extends T[K] ? never : K]: T[K];\n};\n\nexport type Args = ConvertUndefinedToOptional<\n Omit<OmitUnknown<typeof args>, \"_\" | \"$0\">\n>;\n"],"names":[],"mappings":";;;AAIA,MAAM,aAAa,MAAA,EAChB,OAAO,aAAa;AAAA,EACnB,OAAO;AAAA,EACP,MAAM;AAAA,EACN,UACE;AACJ,CAAC,EACA,OAAO,eAAe;AAAA,EACrB,OAAO;AAAA,EACP,MAAM;AAAA,EACN,UAAU;AACZ,CAAC,EACA,OAAO,aAAa;AAAA,EACnB,OAAO;AAAA,EACP,MAAM;AAAA,EACN,UAAU;AACZ,CAAC,EAEA,OAAO,OAAO;AAAA,EACb,MAAM;AAAA,EACN,UACE;AACJ,CAAC,EACA,KAAK,MAAM;AAEP,MAAM,OAAO,WAAW,UAAU,QAAQ,QAAQ,IAAI,CAAC;"}
@@ -1,4 +1,5 @@
1
1
  import { join, relative } from "node:path";
2
+ import "./args.mjs";
2
3
  import "node:fs/promises";
3
4
  import "zod";
4
5
  import { defineConfig } from "vite";