@cmmn/tools 2.2.3 → 3.0.0-alpha-4

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 (205) hide show
  1. package/.swcrc +20 -0
  2. package/dist/bundle/index.js +913 -0
  3. package/dist/bundle/test.js +32 -0
  4. package/dist/esm/bin.js +9 -0
  5. package/dist/esm/bin.js.map +1 -0
  6. package/dist/esm/bundlers/createBundler.js +9 -0
  7. package/dist/esm/bundlers/createBundler.js.map +1 -0
  8. package/dist/esm/bundlers/plugins/minify.js +34 -0
  9. package/dist/esm/bundlers/plugins/minify.js.map +1 -0
  10. package/dist/esm/bundlers/plugins/wasm.js +43 -0
  11. package/dist/esm/bundlers/plugins/wasm.js.map +1 -0
  12. package/dist/esm/bundlers/rolldown-bundler.js +153 -0
  13. package/dist/esm/bundlers/rolldown-bundler.js.map +1 -0
  14. package/dist/esm/bundlers/types.js +3 -0
  15. package/dist/esm/bundlers/types.js.map +1 -0
  16. package/dist/esm/bundlers/vite.builder.js +117 -0
  17. package/dist/esm/bundlers/vite.builder.js.map +1 -0
  18. package/dist/esm/bundlers/vite.bundler.js +56 -0
  19. package/dist/esm/bundlers/vite.bundler.js.map +1 -0
  20. package/dist/esm/commands/bundle.js +102 -0
  21. package/dist/esm/commands/bundle.js.map +1 -0
  22. package/dist/esm/commands/cert.js +26 -0
  23. package/dist/esm/commands/cert.js.map +1 -0
  24. package/dist/esm/commands/ci.js +14 -0
  25. package/dist/esm/commands/ci.js.map +1 -0
  26. package/dist/esm/commands/clean.js +18 -0
  27. package/dist/esm/commands/clean.js.map +1 -0
  28. package/dist/esm/commands/compile.js +60 -0
  29. package/dist/esm/commands/compile.js.map +1 -0
  30. package/dist/esm/commands/deploy.js +61 -0
  31. package/dist/esm/commands/deploy.js.map +1 -0
  32. package/dist/esm/commands/dev.js +37 -0
  33. package/dist/esm/commands/dev.js.map +1 -0
  34. package/dist/esm/commands/format.js +44 -0
  35. package/dist/esm/commands/format.js.map +1 -0
  36. package/dist/esm/commands/gen.js +36 -0
  37. package/dist/esm/commands/gen.js.map +1 -0
  38. package/dist/esm/commands/host.js +21 -0
  39. package/dist/esm/commands/host.js.map +1 -0
  40. package/dist/esm/commands/index.js +12 -0
  41. package/dist/esm/commands/index.js.map +1 -0
  42. package/dist/esm/commands/lint.js +45 -0
  43. package/dist/esm/commands/lint.js.map +1 -0
  44. package/dist/esm/commands/nginx.js +62 -0
  45. package/dist/esm/commands/nginx.js.map +1 -0
  46. package/dist/esm/commands/publish.js +37 -0
  47. package/dist/esm/commands/publish.js.map +1 -0
  48. package/dist/esm/commands/typings.js +66 -0
  49. package/dist/esm/commands/typings.js.map +1 -0
  50. package/dist/esm/commands/version.js +34 -0
  51. package/dist/esm/commands/version.js.map +1 -0
  52. package/dist/esm/dev-server/asset-collection.js +18 -0
  53. package/dist/esm/dev-server/asset-collection.js.map +1 -0
  54. package/dist/esm/dev-server/bundle.json.builder.js +47 -0
  55. package/dist/esm/dev-server/bundle.json.builder.js.map +1 -0
  56. package/dist/esm/dev-server/dependencyServer.js +96 -0
  57. package/dist/esm/dev-server/dependencyServer.js.map +1 -0
  58. package/dist/esm/dev-server/dev-server.js +49 -0
  59. package/dist/esm/dev-server/dev-server.js.map +1 -0
  60. package/dist/esm/dev-server/plugins/minify.js +34 -0
  61. package/dist/esm/dev-server/plugins/minify.js.map +1 -0
  62. package/dist/esm/dev-server/plugins/wasm.js +30 -0
  63. package/dist/esm/dev-server/plugins/wasm.js.map +1 -0
  64. package/dist/esm/dev-server/resolver.js +55 -0
  65. package/dist/esm/dev-server/resolver.js.map +1 -0
  66. package/dist/esm/dev-server/rolldown-dependency-builder.js +150 -0
  67. package/dist/esm/dev-server/rolldown-dependency-builder.js.map +1 -0
  68. package/dist/esm/dev-server/target-runnner.js +72 -0
  69. package/dist/esm/dev-server/target-runnner.js.map +1 -0
  70. package/dist/esm/dev-server/target-web-server.js +78 -0
  71. package/dist/esm/dev-server/target-web-server.js.map +1 -0
  72. package/dist/esm/dev-server/targetServer.js +29 -0
  73. package/dist/esm/dev-server/targetServer.js.map +1 -0
  74. package/dist/esm/dev-server/vite.builder.js +183 -0
  75. package/dist/esm/dev-server/vite.builder.js.map +1 -0
  76. package/dist/esm/dev-server/wasm-resolver.js +25 -0
  77. package/dist/esm/dev-server/wasm-resolver.js.map +1 -0
  78. package/dist/esm/helpers/fastify-compress.js +26 -0
  79. package/dist/esm/helpers/fastify-compress.js.map +1 -0
  80. package/dist/esm/helpers/flags.js +22 -0
  81. package/dist/esm/helpers/flags.js.map +1 -0
  82. package/dist/esm/helpers/getProjects.js +49 -0
  83. package/dist/esm/helpers/getProjects.js.map +1 -0
  84. package/dist/esm/helpers/getTSConfig.js +32 -0
  85. package/dist/esm/helpers/getTSConfig.js.map +1 -0
  86. package/dist/esm/helpers/target.js +230 -0
  87. package/dist/esm/helpers/target.js.map +1 -0
  88. package/dist/esm/helpers/terminal.js +117 -0
  89. package/dist/esm/helpers/terminal.js.map +1 -0
  90. package/dist/esm/helpers/ts-resolve-plugin.js +139 -0
  91. package/dist/esm/helpers/ts-resolve-plugin.js.map +1 -0
  92. package/dist/esm/helpers/watcher.js +35 -0
  93. package/dist/esm/helpers/watcher.js.map +1 -0
  94. package/dist/esm/index.js +5 -0
  95. package/dist/esm/index.js.map +1 -0
  96. package/dist/esm/model/bundle.js +75 -0
  97. package/dist/esm/model/bundle.js.map +1 -0
  98. package/dist/esm/model/flags.js +27 -0
  99. package/dist/esm/model/flags.js.map +1 -0
  100. package/dist/esm/model/monorepo.js +74 -0
  101. package/dist/esm/model/monorepo.js.map +1 -0
  102. package/dist/esm/model/pack.js +134 -0
  103. package/dist/esm/model/pack.js.map +1 -0
  104. package/dist/esm/model/resolver.js +100 -0
  105. package/dist/esm/model/resolver.js.map +1 -0
  106. package/dist/esm/model/target.js +111 -0
  107. package/dist/esm/model/target.js.map +1 -0
  108. package/dist/esm/servers/bundle-server.js +20 -0
  109. package/dist/esm/servers/bundle-server.js.map +1 -0
  110. package/dist/esm/servers/dev-server.js +70 -0
  111. package/dist/esm/servers/dev-server.js.map +1 -0
  112. package/dist/esm/servers/pack-server.js +20 -0
  113. package/dist/esm/servers/pack-server.js.map +1 -0
  114. package/dist/esm/servers/target-runnner.js +80 -0
  115. package/dist/esm/servers/target-runnner.js.map +1 -0
  116. package/dist/esm/servers/vite-dev-server.js +61 -0
  117. package/dist/esm/servers/vite-dev-server.js.map +1 -0
  118. package/dist/esm/specs/dependency-builder-specs.js +164 -0
  119. package/dist/esm/specs/dependency-builder-specs.js.map +1 -0
  120. package/dist/esm/specs/dev-server.specs.js +73 -0
  121. package/dist/esm/specs/dev-server.specs.js.map +1 -0
  122. package/dist/esm/specs/monorepo.specs.js +35 -0
  123. package/dist/esm/specs/monorepo.specs.js.map +1 -0
  124. package/dist/esm/specs/resolver.specs.js +57 -0
  125. package/dist/esm/specs/resolver.specs.js.map +1 -0
  126. package/dist/esm/specs/rolldown.specs.js +278 -0
  127. package/dist/esm/specs/rolldown.specs.js.map +1 -0
  128. package/dist/esm/specs/target-specs.js +108 -0
  129. package/dist/esm/specs/target-specs.js.map +1 -0
  130. package/dist/esm/specs/vite-bundler.specs.js +77 -0
  131. package/dist/esm/specs/vite-bundler.specs.js.map +1 -0
  132. package/dist/esm/test/test.js +30 -0
  133. package/dist/esm/test/test.js.map +1 -0
  134. package/dist/ts.buildinfo +1 -0
  135. package/dist/typings/bin.d.ts +2 -0
  136. package/dist/typings/bundlers/plugins/minify.d.ts +6 -0
  137. package/dist/typings/bundlers/plugins/wasm.d.ts +5 -0
  138. package/dist/typings/bundlers/rolldown-bundler.d.ts +18 -0
  139. package/dist/typings/bundlers/types.d.ts +4 -0
  140. package/dist/typings/bundlers/vite.builder.d.ts +12 -0
  141. package/dist/typings/bundlers/vite.bundler.d.ts +9 -0
  142. package/dist/typings/commands/bundle.d.ts +2 -0
  143. package/dist/typings/commands/cert.d.ts +1 -0
  144. package/dist/typings/commands/clean.d.ts +2 -0
  145. package/dist/typings/commands/compile.d.ts +2 -0
  146. package/dist/typings/commands/dev.d.ts +2 -0
  147. package/dist/typings/commands/format.d.ts +5 -0
  148. package/dist/typings/commands/gen.d.ts +1 -0
  149. package/dist/typings/commands/host.d.ts +1 -0
  150. package/dist/typings/commands/index.d.ts +10 -0
  151. package/dist/typings/commands/lint.d.ts +5 -0
  152. package/dist/typings/commands/nginx.d.ts +6 -0
  153. package/dist/typings/commands/publish.d.ts +2 -0
  154. package/dist/typings/commands/typings.d.ts +4 -0
  155. package/dist/typings/commands/version.d.ts +1 -0
  156. package/dist/typings/helpers/fastify-compress.d.ts +6 -0
  157. package/dist/typings/helpers/getTSConfig.d.ts +11 -0
  158. package/dist/typings/helpers/terminal.d.ts +22 -0
  159. package/dist/typings/helpers/watcher.d.ts +7 -0
  160. package/dist/typings/index.d.ts +4 -0
  161. package/dist/typings/model/bundle.d.ts +34 -0
  162. package/dist/typings/model/flags.d.ts +15 -0
  163. package/dist/typings/model/monorepo.d.ts +18 -0
  164. package/dist/typings/model/pack.d.ts +45 -0
  165. package/dist/typings/model/resolver.d.ts +38 -0
  166. package/dist/typings/model/target.d.ts +27 -0
  167. package/dist/typings/servers/bundle-server.d.ts +10 -0
  168. package/dist/typings/servers/dev-server.d.ts +16 -0
  169. package/dist/typings/servers/pack-server.d.ts +9 -0
  170. package/dist/typings/servers/target-runnner.d.ts +13 -0
  171. package/dist/typings/servers/vite-dev-server.d.ts +18 -0
  172. package/dist/typings/specs/dev-server.specs.d.ts +1 -0
  173. package/dist/typings/specs/monorepo.specs.d.ts +1 -0
  174. package/dist/typings/specs/resolver.specs.d.ts +1 -0
  175. package/dist/typings/specs/rolldown.specs.d.ts +1 -0
  176. package/dist/typings/specs/target-specs.d.ts +1 -0
  177. package/dist/typings/specs/vite-bundler.specs.d.ts +1 -0
  178. package/dist/typings/test/test.d.ts +16 -0
  179. package/{compile → helpers}/tsconfig.json +12 -9
  180. package/node/hooks-dev.js +72 -0
  181. package/node/register-dev.js +3 -0
  182. package/node/register.js +14 -0
  183. package/package.json +51 -40
  184. package/readme.md +2 -2
  185. package/tsconfig.json +14 -0
  186. package/LICENSE +0 -21
  187. package/bin.js +0 -21
  188. package/bundle/bundle.js +0 -46
  189. package/bundle/esbuild.config.js +0 -178
  190. package/bundle/getConfigs.js +0 -62
  191. package/compile/compile.js +0 -53
  192. package/compile/ts-resolve-plugin.js +0 -235
  193. package/compile/typings.d.ts +0 -19
  194. package/gen/component.ts.tpl +0 -16
  195. package/gen/gen.js +0 -27
  196. package/gen/style.less.tpl +0 -3
  197. package/gen/template.ts.tpl +0 -8
  198. package/helpers/getTSConfig.js +0 -19
  199. package/serve/readme.md +0 -8
  200. package/serve/serve.js +0 -109
  201. package/spawn/index.js +0 -81
  202. package/test/index.d.ts +0 -18
  203. package/test/index.js +0 -16
  204. package/test/jest.config.js +0 -32
  205. package/test/pathsToModuleNameMapper.js +0 -46
@@ -0,0 +1 @@
1
+ {"version":3,"sources":["/mnt/dev/cmmn/tools/commands/typings.ts"],"names":["ts","resolve","fs","events","Watcher","Monorepo","typings","flags","monorepo","load","setMaxListeners","Math","max","targets","length","defaultMaxListeners","watcher","watch","target","tsConfig","include","generateTypings","watchTarget","addEventListener","e","log","files","join","start","performance","now","host","createSolutionBuilderWithWatchHost","sys","createProgram","useCaseSensitiveFileNames","builder","createSolutionBuilder","rootDir","incremental","dry","assumeChangesOnlyAffectDirectDependencies","declaration","declarationMap","emitDeclarationOnly","force","clean","build","duration","toFixed","cleanedBaseDirs","Set","rootNames","options","oldProgram","configFileParsingDiagnostics","projectReferences","outDir","configFilePath","declarationDir","baseUrl","tsBuildInfoFile","emitDeclarationsOnly","has","rmSync","recursive","add","createEmitAndSemanticDiagnosticsBuilderProgram"],"mappings":"AAAA,OAAOA,QAAQ,aAAa;AAC5B,SAAcC,OAAO,QAAiB,YAAY;AAClD,OAAOC,QAAQ,UAAU;AAIzB,OAAOC,YAAY,cAAc;AACjC,SAAQC,OAAO,QAAO,wBAAqB;AAC3C,SAAQC,QAAQ,QAAO,uBAAoB;AAG3C,OAAO,eAAeC,QAAQC,KAAY;IACtC,MAAMC,WAAW,MAAMH,SAASI,IAAI,CAACF;IACrCJ,OAAOO,eAAe,CAACC,KAAKC,GAAG,CAACJ,SAASK,OAAO,CAACC,MAAM,GAAG,GAAGX,OAAOY,mBAAmB;IACvF,MAAMC,UAAUT,MAAMU,KAAK,GAAG,IAAIb,YAAY;IAC9C,KAAK,MAAMc,UAAUV,SAASK,OAAO,CAAE;QACnC,IAAIK,OAAOC,QAAQ,CAACC,OAAO,EAAEN,WAAW,GACpC;QACJO,gBAAgBH;QAChB,IAAIF,SAAS;YACTA,QAAQM,WAAW,CAACJ;YACpBA,OAAOK,gBAAgB,CAAC,UAAU,CAACC;gBAC/BN,OAAOO,GAAG,CAAC,CAAC,WAAW,EAAED,EAAEE,KAAK,CAACC,IAAI,CAAC,OAAO;gBAE7CN,gBAAgBH;YACpB;QACJ;IACJ;AACJ;AAEA,OAAO,SAASG,gBAAgBH,MAAc;IAC1C,MAAMU,QAAQC,YAAYC,GAAG;IAC7B,MAAMC,OAAO/B,GAAGgC,kCAAkC,CAAChC,GAAGiC,GAAG,EAAEC;IAE3DH,KAAKI,yBAAyB;IAE9B,MAAMC,UAAUpC,GAAGqC,qBAAqB,CAACN,MAAM;QAACb,OAAOoB,OAAO;KAAC,EAAE;QAC7DC,aAAa;QACbC,KAAK;QACLC,2CAA2C;QAC3CC,aAAa;QACbC,gBAAgB;QAChBC,qBAAqB;QACrBC,OAAO;IACX;IACAT,QAAQU,KAAK,CAAC5B,OAAOoB,OAAO;IAC5BF,QAAQW,KAAK,CAAC7B,OAAOoB,OAAO,EAAE;IAC9B,MAAMU,WAAWnB,YAAYC,GAAG,KAAKF;IACrCV,OAAOO,GAAG,CAAC,CAAC,cAAc,EAAEuB,SAASC,OAAO,GAAG,GAAG,CAAC;AACvD;AAEA,MAAMC,kBAAkB,IAAIC;AAE5B,SAASjB,cAAckB,SAAS,EAAEC,OAAO,EAAEtB,IAAI,EAAEuB,UAAU,EAAEC,4BAA4B,EAAEC,iBAAiB;IACxGH,QAAQI,MAAM,GAAGxD,QAAQoD,QAAQK,cAAc,EAAEL,QAAQI,MAAM,IAAI;IACnEJ,QAAQX,WAAW,GAAG;IACtBW,QAAQM,cAAc,GAAG1D,QAAQoD,QAAQK,cAAc,EAAEL,QAAQM,cAAc,IAAI;IACnFN,QAAQO,OAAO,GAAG3D,QAAQoD,QAAQK,cAAc,EAAEL,QAAQO,OAAO,IAAI;IACrEP,QAAQQ,eAAe,GAAG5D,QAAQoD,QAAQK,cAAc,EAAEL,QAAQQ,eAAe,IAAI;IACrFR,QAAQS,oBAAoB,GAAG;IAC/B,wDAAwD;IACxD,wDAAwD;IACxD,IAAI,CAACZ,gBAAgBa,GAAG,CAACV,QAAQO,OAAO,GAAG;QACvC1D,GAAG8D,MAAM,CAACX,QAAQM,cAAc,EAAE;YAACM,WAAW;YAAMpB,OAAO;QAAI;QAC/D3C,GAAG8D,MAAM,CAACX,QAAQQ,eAAe,EAAE;YAAChB,OAAO;QAAI;QAC/CK,gBAAgBgB,GAAG,CAACb,QAAQO,OAAO;IACvC;IACA,OAAO5D,GAAGmE,8CAA8C,CACpDf,WAAWC,SAAStB,MAAMuB,YAAYC,8BAA8BC;AAE5E"}
@@ -0,0 +1,34 @@
1
+ import fs from "node:fs/promises";
2
+ import { exec } from "node:child_process";
3
+ import { getPackages } from "@manypkg/get-packages";
4
+ export async function version(flags) {
5
+ const packages = await getPackages(process.cwd());
6
+ for (let target of packages.packages){
7
+ if (!flags.version) {
8
+ console.log(`${target.packageJson.name}: ${target.packageJson.version}`);
9
+ } else {
10
+ target.packageJson.version = flags.version;
11
+ await fs.writeFile(`${target.dir}/package.json`, JSON.stringify(target.packageJson, null, '\t'));
12
+ await exec(`git add ${target.dir}/package.json`);
13
+ }
14
+ }
15
+ if (flags.version) {
16
+ await exec(`git commit -m "version ${flags.version}"`, {
17
+ stdio: 'inherit'
18
+ });
19
+ }
20
+ }
21
+ /**
22
+ * @param target {import('../model/target.ts')}
23
+ * @param version {string}
24
+ */ function updateVersion(target, version) {
25
+ switch(version){
26
+ case 'major':
27
+ break;
28
+ default:
29
+ target.packageJson.version = version;
30
+ break;
31
+ }
32
+ }
33
+
34
+ //# sourceMappingURL=version.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"sources":["/mnt/dev/cmmn/tools/commands/version.js"],"names":["fs","exec","getPackages","version","flags","packages","process","cwd","target","console","log","packageJson","name","writeFile","dir","JSON","stringify","stdio","updateVersion"],"mappings":"AAAA,OAAOA,QAAQ,mBAAmB;AAClC,SAAQC,IAAI,QAAO,qBAAqB;AACxC,SAASC,WAAW,QAAQ,wBAAwB;AAEpD,OAAO,eAAeC,QAAQC,KAAK;IAC/B,MAAMC,WAAW,MAAMH,YAAYI,QAAQC,GAAG;IAC9C,KAAK,IAAIC,UAAUH,SAASA,QAAQ,CAAE;QAClC,IAAI,CAACD,MAAMD,OAAO,EAAE;YAChBM,QAAQC,GAAG,CAAC,GAAGF,OAAOG,WAAW,CAACC,IAAI,CAAC,EAAE,EAAEJ,OAAOG,WAAW,CAACR,OAAO,EAAE;QAC3E,OAAO;YACHK,OAAOG,WAAW,CAACR,OAAO,GAAGC,MAAMD,OAAO;YAC1C,MAAMH,GAAGa,SAAS,CAAC,GAAGL,OAAOM,GAAG,CAAC,aAAa,CAAC,EAAEC,KAAKC,SAAS,CAACR,OAAOG,WAAW,EAAE,MAAM;YAC1F,MAAMV,KAAK,CAAC,QAAQ,EAAEO,OAAOM,GAAG,CAAC,aAAa,CAAC;QACnD;IACJ;IACA,IAAIV,MAAMD,OAAO,EAAE;QACf,MAAMF,KAAK,CAAC,uBAAuB,EAAEG,MAAMD,OAAO,CAAC,CAAC,CAAC,EAAE;YACnDc,OAAO;QACX;IACJ;AACJ;AAEA;;;CAGC,GACD,SAASC,cAAcV,MAAM,EAAEL,OAAO;IAClC,OAAQA;QACJ,KAAK;YACD;QACJ;YACIK,OAAOG,WAAW,CAACR,OAAO,GAAGA;YAC7B;IACR;AACJ"}
@@ -0,0 +1,18 @@
1
+ import { subtle } from "crypto";
2
+ export async function getAssets(outputs) {
3
+ return Promise.all(outputs.map(getAsset));
4
+ }
5
+ export async function getHash(data) {
6
+ const buffer = Buffer.from(data);
7
+ const hash = await subtle.digest('SHA-1', buffer);
8
+ return Buffer.from(hash).toString('base64');
9
+ }
10
+ async function getAsset(output) {
11
+ return {
12
+ path: output.fileName,
13
+ hash: await getHash(output.data),
14
+ size: output.data.length
15
+ };
16
+ }
17
+
18
+ //# sourceMappingURL=asset-collection.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"sources":["/mnt/dev/cmmn/tools/dev-server/asset-collection.ts"],"names":["subtle","getAssets","outputs","Promise","all","map","getAsset","getHash","data","buffer","Buffer","from","hash","digest","toString","output","path","fileName","size","length"],"mappings":"AAAA,SAAQA,MAAM,QAAO,SAAS;AAG9B,OAAO,eAAeC,UAAUC,OAAiB;IAChD,OAAOC,QAAQC,GAAG,CAACF,QAAQG,GAAG,CAACC;AAChC;AAEA,OAAO,eAAeC,QAAQC,IAAyB;IACtD,MAAMC,SAASC,OAAOC,IAAI,CAACH;IAC3B,MAAMI,OAAO,MAAMZ,OAAOa,MAAM,CAAC,SAASJ;IAC1C,OAAOC,OAAOC,IAAI,CAACC,MAAME,QAAQ,CAAC;AACnC;AAEA,eAAeR,SAASS,MAAc;IACrC,OAAO;QACNC,MAAMD,OAAOE,QAAQ;QACrBL,MAAM,MAAML,QAAQQ,OAAOP,IAAI;QAC/BU,MAAMH,OAAOP,IAAI,CAACW,MAAM;IACzB;AACD"}
@@ -0,0 +1,47 @@
1
+ import { getAssets } from "./asset-collection.js";
2
+ import { readdir, stat } from "node:fs/promises";
3
+ import path from "node:path";
4
+ export class BundleJsonBuilder {
5
+ constructor(target, url){
6
+ this.target = target;
7
+ this.url = url;
8
+ }
9
+ async getBundleJson(bundle) {
10
+ const data = {
11
+ publicPath: this.target.publicPath,
12
+ proxy: this.target.proxy.map((x)=>({
13
+ regex: x.regex.source,
14
+ replace: this.target.getEntry("." + x.replace)?.output
15
+ }))
16
+ };
17
+ const assets = await getAssets(bundle);
18
+ for (let asset of assets){
19
+ const entry = this.target.entries.find((x)=>x.relative == './' + asset.path);
20
+ if (entry) {
21
+ asset.path = entry.output;
22
+ }
23
+ }
24
+ for (let file of (await readdir(this.target.publicDir, {
25
+ recursive: true
26
+ }).catch(()=>[]))){
27
+ const info = await stat(path.join(this.target.publicDir, file));
28
+ assets.push({
29
+ path: file,
30
+ hash: info.mtimeMs.toString(36),
31
+ size: info.size,
32
+ optional: !file.endsWith('.json') // TODO: check importance?
33
+ });
34
+ }
35
+ const bundles = new Set(bundle.flatMap((x)=>x.deps).filter((x)=>x.package.startsWith(this.url)).map((x)=>x.package));
36
+ return {
37
+ ...data,
38
+ assets,
39
+ deps: Array.from(bundles).map((x)=>({
40
+ baseURI: x,
41
+ path: ''
42
+ }))
43
+ };
44
+ }
45
+ }
46
+
47
+ //# sourceMappingURL=bundle.json.builder.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"sources":["/mnt/dev/cmmn/tools/dev-server/bundle.json.builder.ts"],"names":["getAssets","readdir","stat","path","BundleJsonBuilder","target","url","getBundleJson","bundle","data","publicPath","proxy","map","x","regex","source","replace","getEntry","output","assets","asset","entry","entries","find","relative","file","publicDir","recursive","catch","info","join","push","hash","mtimeMs","toString","size","optional","endsWith","bundles","Set","flatMap","deps","filter","package","startsWith","Array","from","baseURI"],"mappings":"AACA,SAAQA,SAAS,QAAO,wBAAqB;AAC7C,SAAQC,OAAO,EAAEC,IAAI,QAAO,mBAAmB;AAC/C,OAAOC,UAAU,YAAY;AAI7B,OAAO,MAAMC;IACT,YAAY,AAAQC,MAAc,EACtB,AAAQC,GAAW,CAAE;aADbD,SAAAA;aACAC,MAAAA;IAEpB;IAEA,MAAaC,cAAcC,MAAgB,EAAuB;QAC9D,MAAMC,OAAO;YACTC,YAAY,IAAI,CAACL,MAAM,CAACK,UAAU;YAClCC,OAAO,IAAI,CAACN,MAAM,CAACM,KAAK,CAACC,GAAG,CAACC,CAAAA,IAAM,CAAA;oBAC/BC,OAAOD,EAAEC,KAAK,CAACC,MAAM;oBACrBC,SAAS,IAAI,CAACX,MAAM,CAACY,QAAQ,CAAC,MAAMJ,EAAEG,OAAO,GAAGE;gBACpD,CAAA;QACJ;QACA,MAAMC,SAAS,MAAMnB,UAAUQ;QAC/B,KAAK,IAAIY,SAASD,OAAQ;YACtB,MAAME,QAAQ,IAAI,CAAChB,MAAM,CAACiB,OAAO,CAACC,IAAI,CAACV,CAAAA,IAAKA,EAAEW,QAAQ,IAAI,OAAOJ,MAAMjB,IAAI;YAC3E,IAAIkB,OAAO;gBACPD,MAAMjB,IAAI,GAAGkB,MAAMH,MAAM;YAC7B;QACJ;QACA,KAAK,IAAIO,QAAQ,CAAA,MAAMxB,QAAQ,IAAI,CAACI,MAAM,CAACqB,SAAS,EAAE;YAClDC,WAAW;QACf,GAAGC,KAAK,CAAC,IAAM,EAAE,CAAA,EAAG;YAChB,MAAMC,OAAO,MAAM3B,KAAKC,KAAK2B,IAAI,CAAC,IAAI,CAACzB,MAAM,CAACqB,SAAS,EAAED;YACzDN,OAAOY,IAAI,CAAC;gBACR5B,MAAMsB;gBACNO,MAAMH,KAAKI,OAAO,CAACC,QAAQ,CAAC;gBAC5BC,MAAMN,KAAKM,IAAI;gBACfC,UAAU,CAACX,KAAKY,QAAQ,CAAC,SAAS,0BAA0B;YAChE;QACJ;QACA,MAAMC,UAAU,IAAIC,IAAI/B,OAAOgC,OAAO,CAAC3B,CAAAA,IAAKA,EAAE4B,IAAI,EAC7CC,MAAM,CAAC7B,CAAAA,IAAKA,EAAE8B,OAAO,CAACC,UAAU,CAAC,IAAI,CAACtC,GAAG,GACzCM,GAAG,CAACC,CAAAA,IAAKA,EAAE8B,OAAO;QACvB,OAAO;YACH,GAAGlC,IAAI;YACPU;YACAsB,MAAMI,MAAMC,IAAI,CAACR,SAAS1B,GAAG,CAACC,CAAAA,IAAM,CAAA;oBAChCkC,SAASlC;oBACTV,MAAM;gBACV,CAAA;QACJ;IACJ;AAEJ"}
@@ -0,0 +1,96 @@
1
+ import { fileURLToPath } from "node:url";
2
+ import path from "node:path";
3
+ import fs from "node:fs/promises";
4
+ import mime from "mime-types";
5
+ import { RolldownDependencyBuilder } from "./rolldown-dependency-builder.js";
6
+ import { getHash } from "./asset-collection.js";
7
+ export class DependencyServer {
8
+ constructor(targets){
9
+ this.base = '/_/@id';
10
+ this.cache = new Map();
11
+ this.target = targets.at(-1);
12
+ this.optimizeDeps = [
13
+ ...new Set([
14
+ ...targets.flatMap((t)=>t.externalDependencies)
15
+ ])
16
+ ].filter((x)=>targets.every((y)=>y.packageJson.name !== x));
17
+ this.builder = new RolldownDependencyBuilder(this.optimizeDeps, this.base, this.target.flags.minify);
18
+ }
19
+ async getPackageJSON(pkg) {
20
+ const resolved = import.meta.resolve(pkg);
21
+ const file = fileURLToPath(resolved);
22
+ let dir = path.dirname(file);
23
+ while(true){
24
+ const packageJsonText = await fs.readFile(path.resolve(dir, 'package.json'), {
25
+ encoding: 'utf-8'
26
+ }).catch(()=>null);
27
+ if (packageJsonText) return JSON.parse(packageJsonText);
28
+ dir = path.resolve(dir, '..');
29
+ }
30
+ }
31
+ /**
32
+ * @param app {import("fastify/types/instance.js").FastifyInstance}
33
+ * @returns {Promise<void>}
34
+ */ async register(app) {
35
+ app.get('/_/@id/*', async (req, res)=>{
36
+ try {
37
+ let param = req.params['*'];
38
+ res.header('Access-Control-Allow-Origin', '*');
39
+ res.header('Content-Type', mime.lookup(param) || 'text/javascript');
40
+ const data = await this.getAsset(param);
41
+ return data;
42
+ } catch (e) {
43
+ console.error(e);
44
+ res.statusCode = 404;
45
+ return e.toString();
46
+ }
47
+ });
48
+ }
49
+ async getAsset(asset) {
50
+ let [pkg, path] = asset.split('/@_/');
51
+ path ??= '';
52
+ if (pkg.endsWith('/')) pkg = pkg.substring(0, pkg.length - 1);
53
+ const pkgJSON = await this.getPackageJSON(pkg);
54
+ const exports = pkgJSON.exports;
55
+ if (exports && `.${path}` in exports) {
56
+ pkg += path;
57
+ path = '';
58
+ }
59
+ if (!this.cache.has(pkg)) {
60
+ const start = +performance.now();
61
+ await this.getBundle(pkg);
62
+ const end = +performance.now();
63
+ this.target.log(`^Wbundle ^R${pkg} ^Wfor ^R${((end - start) / 1000).toFixed(2)}s`);
64
+ }
65
+ const cached = this.cache.get(pkg);
66
+ return cached[path];
67
+ }
68
+ async getBundle(pkg) {
69
+ const pkgJSON = await this.getPackageJSON(pkg);
70
+ const isModule = pkgJSON.type === 'module' || pkgJSON.module;
71
+ const bundle = await this.builder.build(pkg, isModule).catch(console.error);
72
+ if (!bundle) return {};
73
+ const bundleJson = {
74
+ assets: [],
75
+ deps: [
76
+ ...new Set(bundle.flatMap((output)=>output.deps))
77
+ ].filter((x)=>x.package.startsWith('http')).map((x)=>({
78
+ baseURI: x.package,
79
+ path: x.path
80
+ }))
81
+ };
82
+ const result = {};
83
+ for (let output of bundle){
84
+ bundleJson.assets.push({
85
+ path: output.fileName,
86
+ size: output.data.length,
87
+ hash: await getHash(output.data)
88
+ });
89
+ result[output.fileName.startsWith('@_/') ? output.fileName.substring(3) : output.fileName] = output.data;
90
+ }
91
+ result['bundle.json'] = JSON.stringify(bundleJson);
92
+ this.cache.set(pkg, result);
93
+ }
94
+ }
95
+
96
+ //# sourceMappingURL=dependencyServer.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"sources":["/mnt/dev/cmmn/tools/dev-server/dependencyServer.ts"],"names":["fileURLToPath","path","fs","mime","RolldownDependencyBuilder","getHash","DependencyServer","targets","base","cache","Map","target","at","optimizeDeps","Set","flatMap","t","externalDependencies","filter","x","every","y","packageJson","name","builder","flags","minify","getPackageJSON","pkg","resolved","resolve","file","dir","dirname","packageJsonText","readFile","encoding","catch","JSON","parse","register","app","get","req","res","param","params","header","lookup","data","getAsset","e","console","error","statusCode","toString","asset","split","endsWith","substring","length","pkgJSON","exports","has","start","performance","now","getBundle","end","log","toFixed","cached","isModule","type","module","bundle","build","bundleJson","assets","deps","output","package","startsWith","map","baseURI","result","push","fileName","size","hash","stringify","set"],"mappings":"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"}
@@ -0,0 +1,49 @@
1
+ import { DependencyServer } from "./dependencyServer.js";
2
+ import { Resolver } from "./resolver.js";
3
+ import { TargetRunner } from "./target-runnner.js";
4
+ import { TargetWebServer } from "./target-web-server.js";
5
+ export class DevServer {
6
+ get isBundler() {
7
+ return this.rootTarget.flags.production;
8
+ }
9
+ constructor(targets){
10
+ this.targets = targets;
11
+ this.prefix = '_';
12
+ this.rootTarget = this.targets.at(-1);
13
+ this.resolver = new Resolver(this.targets);
14
+ this.targetServers = this.targets.map((t)=>{
15
+ if (t.packageJson.bin) {
16
+ return new TargetRunner(t, this.prefix, this.resolver);
17
+ }
18
+ return new TargetWebServer(t, this.prefix, this.resolver);
19
+ }).filter((x)=>x != null);
20
+ this.depServer = new DependencyServer(this.targets);
21
+ this.rewriteUrl = (req)=>{
22
+ return this.targetServers.reduceRight((path, target)=>target.rewritePath(path, req), req.url);
23
+ };
24
+ }
25
+ async register(app) {
26
+ app.addHook('preHandler', async (req, res)=>{
27
+ this.resolver.url = `${req.headers.protocol ?? req.protocol}://${req.headers.host ?? req.host}`;
28
+ for (let targetServer of this.targetServers){
29
+ targetServer.url = this.resolver.url;
30
+ }
31
+ });
32
+ await this.depServer.register(app);
33
+ for (let targetServer of this.targetServers){
34
+ await targetServer.register(app);
35
+ }
36
+ app.addHook('onError', (req, res, error)=>{
37
+ this.rootTarget.error(`${req.url}: ${error}`);
38
+ res.status(422).send('Failed to process request');
39
+ });
40
+ if (this.isBundler) {
41
+ app.get('/_/sw.js', (req, res)=>{
42
+ const worker = this.resolver.resolveId("@cmmn/service-worker/worker");
43
+ res.header('Service-Worker-Allowed', '/').type('application/javascript').send(`import "${worker.id}"`);
44
+ });
45
+ }
46
+ }
47
+ }
48
+
49
+ //# sourceMappingURL=dev-server.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"sources":["/mnt/dev/cmmn/tools/dev-server/dev-server.ts"],"names":["DependencyServer","Resolver","TargetRunner","TargetWebServer","DevServer","isBundler","rootTarget","flags","production","targets","prefix","at","resolver","targetServers","map","t","packageJson","bin","filter","x","depServer","rewriteUrl","req","reduceRight","path","target","rewritePath","url","register","app","addHook","res","headers","protocol","host","targetServer","error","status","send","get","worker","resolveId","header","type","id"],"mappings":"AAAA,SAAQA,gBAAgB,QAAO,wBAAwB;AACvD,SAAQC,QAAQ,QAAO,gBAAa;AACpC,SAAQC,YAAY,QAAO,sBAAsB;AACjD,SAAQC,eAAe,QAAO,yBAAsB;AAIpD,OAAO,MAAMC;IAWT,IAAIC,YAAW;QACX,OAAO,IAAI,CAACC,UAAU,CAACC,KAAK,CAACC,UAAU;IAC3C;IAEA,YAAY,AAAQC,OAAiB,CAAE;aAAnBA,UAAAA;aAdpBC,SAAS;aACTJ,aAAqB,IAAI,CAACG,OAAO,CAACE,EAAE,CAAC,CAAC;aACtCC,WAAW,IAAIX,SAAS,IAAI,CAACQ,OAAO;aACpCI,gBAAgB,IAAI,CAACJ,OAAO,CAACK,GAAG,CAACC,CAAAA;YAC7B,IAAIA,EAAEC,WAAW,CAACC,GAAG,EAAC;gBAClB,OAAO,IAAIf,aAAaa,GAAG,IAAI,CAACL,MAAM,EAAE,IAAI,CAACE,QAAQ;YACzD;YACA,OAAO,IAAIT,gBAAgBY,GAAG,IAAI,CAACL,MAAM,EAAE,IAAI,CAACE,QAAQ;QAC5D,GAAGM,MAAM,CAACC,CAAAA,IAAKA,KAAK;aACpBC,YAA8B,IAAIpB,iBAAiB,IAAI,CAACS,OAAO;aAQ/DY,aAAa,CAACC;YACV,OAAO,IAAI,CAACT,aAAa,CAACU,WAAW,CACjC,CAACC,MAAMC,SAAWA,OAAOC,WAAW,CAACF,MAAMF,MAC3CA,IAAIK,GAAG;QAEf;IAPA;IASA,MAAMC,SAASC,GAAoB,EAAE;QACjCA,IAAIC,OAAO,CAAC,cAAc,OAAOR,KAAKS;YAClC,IAAI,CAACnB,QAAQ,CAACe,GAAG,GAAG,GAAGL,IAAIU,OAAO,CAACC,QAAQ,IAAIX,IAAIW,QAAQ,CAAC,GAAG,EAAEX,IAAIU,OAAO,CAACE,IAAI,IAAIZ,IAAIY,IAAI,EAAE;YAC/F,KAAK,IAAIC,gBAAgB,IAAI,CAACtB,aAAa,CAAE;gBACzCsB,aAAaR,GAAG,GAAG,IAAI,CAACf,QAAQ,CAACe,GAAG;YACxC;QACJ;QACA,MAAM,IAAI,CAACP,SAAS,CAACQ,QAAQ,CAACC;QAC9B,KAAK,IAAIM,gBAAgB,IAAI,CAACtB,aAAa,CAAE;YACzC,MAAMsB,aAAaP,QAAQ,CAACC;QAChC;QACAA,IAAIC,OAAO,CAAC,WAAW,CAACR,KAAKS,KAAKK;YAC9B,IAAI,CAAC9B,UAAU,CAAC8B,KAAK,CAAC,GAAGd,IAAIK,GAAG,CAAC,EAAE,EAAES,OAAO;YAC5CL,IAAIM,MAAM,CAAC,KAAKC,IAAI,CAAC;QACzB;QACA,IAAI,IAAI,CAACjC,SAAS,EAAC;YACfwB,IAAIU,GAAG,CAAC,YAAY,CAACjB,KAAKS;gBACtB,MAAMS,SAAS,IAAI,CAAC5B,QAAQ,CAAC6B,SAAS,CAAC;gBACvCV,IAAIW,MAAM,CAAC,0BAA0B,KAChCC,IAAI,CAAC,0BACLL,IAAI,CAAC,CAAC,QAAQ,EAAEE,OAAOI,EAAE,CAAC,CAAC,CAAC;YACrC;QACJ;IACJ;AACJ"}
@@ -0,0 +1,34 @@
1
+ import { minify } from "@swc/core";
2
+ /**
3
+ * Custom plugin to apply terser during the bundle generation. Vite doesn't minify library ES
4
+ * modules.
5
+ */ export function swcMinifyPlugin() {
6
+ return {
7
+ name: 'custom-terser',
8
+ async renderChunk (code, chunk) {
9
+ // Only process JavaScript chunks
10
+ if (!chunk.fileName.endsWith('.mjs') && !chunk.fileName.endsWith('.js')) {
11
+ return null;
12
+ }
13
+ // Keep the result readable for debugging
14
+ const result = await minify(code, {
15
+ compress: {
16
+ defaults: false,
17
+ module: true,
18
+ hoist_props: true,
19
+ unused: true,
20
+ dead_code: true
21
+ },
22
+ ecma: 2016,
23
+ module: true,
24
+ format: {
25
+ comments: false,
26
+ ecma: 2016
27
+ }
28
+ });
29
+ return result.code || null;
30
+ }
31
+ };
32
+ }
33
+
34
+ //# sourceMappingURL=minify.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"sources":["/mnt/dev/cmmn/tools/dev-server/plugins/minify.ts"],"names":["minify","swcMinifyPlugin","name","renderChunk","code","chunk","fileName","endsWith","result","compress","defaults","module","hoist_props","unused","dead_code","ecma","format","comments"],"mappings":"AAAA,SAAQA,MAAM,QAAO,YAAY;AAGjC;;;CAGC,GACD,OAAO,SAASC;IACf,OAAO;QACNC,MAAM;QACN,MAAMC,aAAYC,IAAI,EAAEC,KAAK;YAC5B,iCAAiC;YACjC,IAAI,CAACA,MAAMC,QAAQ,CAACC,QAAQ,CAAC,WAAW,CAACF,MAAMC,QAAQ,CAACC,QAAQ,CAAC,QAAQ;gBACxE,OAAO;YACR;YAEA,yCAAyC;YACzC,MAAMC,SAAS,MAAMR,OAAOI,MAAM;gBACjCK,UAAU;oBACTC,UAAU;oBACVC,QAAQ;oBACRC,aAAa;oBACbC,QAAQ;oBACRC,WAAW;gBACZ;gBACAC,MAAM;gBACNJ,QAAQ;gBACRK,QAAQ;oBACPC,UAAU;oBACVF,MAAM;gBACP;YACD;YAEA,OAAOP,OAAOJ,IAAI,IAAI;QACvB;IACD;AACD"}
@@ -0,0 +1,30 @@
1
+ import fs from "node:fs/promises";
2
+ export function wasm(options = {}) {
3
+ return {
4
+ name: 'wasm',
5
+ async load (id) {
6
+ if (!/\.wasm$/.test(id)) return null;
7
+ const name = id.split('/').pop();
8
+ if (options.emitAsset) {
9
+ this.emitFile({
10
+ type: 'asset',
11
+ source: await (this.fs ?? fs).readFile(id),
12
+ name: options.assetName?.replace('{name}', name) ?? 'WASM Asset',
13
+ fileName: name
14
+ });
15
+ }
16
+ return {
17
+ map: {
18
+ mappings: ''
19
+ },
20
+ code: [
21
+ `const url = new URL('./${name}?no-inline', import.meta.url);`,
22
+ `const ab = await fetch(url).then(x => x.arrayBuffer())`,
23
+ `export default new WebAssembly.Module(ab);`
24
+ ].join('\n')
25
+ };
26
+ }
27
+ };
28
+ }
29
+
30
+ //# sourceMappingURL=wasm.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"sources":["/mnt/dev/cmmn/tools/dev-server/plugins/wasm.ts"],"names":["fs","wasm","options","name","load","id","test","split","pop","emitAsset","emitFile","type","source","readFile","assetName","replace","fileName","map","mappings","code","join"],"mappings":"AAAA,OAAOA,QAAQ,mBAAmB;AAGlC,OAAO,SAASC,KAAKC,UAGjB,CAAC,CAAC;IACL,OAAO;QACNC,MAAM;QACN,MAAMC,MAAKC,EAAE;YACZ,IAAI,CAAC,UAAUC,IAAI,CAACD,KAAK,OAAO;YAChC,MAAMF,OAAOE,GAAGE,KAAK,CAAC,KAAKC,GAAG;YAC9B,IAAIN,QAAQO,SAAS,EAAE;gBACtB,IAAI,CAACC,QAAQ,CAAC;oBACbC,MAAM;oBACNC,QAAQ,MAAM,AAAC,CAAA,IAAI,CAACZ,EAAE,IAAIA,EAAC,EAAGa,QAAQ,CAACR;oBACvCF,MAAMD,QAAQY,SAAS,EAAEC,QAAQ,UAAUZ,SAAS;oBACpDa,UAAUb;gBACX;YACD;YACA,OAAO;gBACNc,KAAK;oBACJC,UAAU;gBACX;gBACAC,MAAM;oBACL,CAAC,uBAAuB,EAAEhB,KAAK,8BAA8B,CAAC;oBAC9D,CAAC,sDAAsD,CAAC;oBACxD,CAAC,0CAA0C,CAAC;iBAC5C,CAACiB,IAAI,CAAC;YACR;QACD;IACD;AACD"}
@@ -0,0 +1,55 @@
1
+ export class Resolver {
2
+ constructor(targets){
3
+ this.targets = targets;
4
+ this.prefix = '/_';
5
+ this.resolveId = (id)=>{
6
+ const targetPath = this.getTarget(id);
7
+ if (targetPath) {
8
+ return this.resolveTarget(targetPath.target, targetPath.path);
9
+ }
10
+ return this.resolveDependency(id);
11
+ };
12
+ this.optimizeDeps = [
13
+ ...new Set([
14
+ ...targets.flatMap((t)=>t.externalDependencies)
15
+ ])
16
+ ].filter((x)=>targets.every((y)=>y.packageJson.name !== x));
17
+ }
18
+ resolveTarget(target, path) {
19
+ const entry = target.getEntry("." + path);
20
+ if (!entry) {
21
+ target.error(`Entry not found for path: ${path}`);
22
+ return;
23
+ }
24
+ const relative = target.flags.production ? entry.output : entry.relative.substring(2);
25
+ const resolvedId = `${this.url}${this.prefix}/${target.packageJson.name}/${relative}`;
26
+ return {
27
+ id: resolvedId,
28
+ external: true
29
+ };
30
+ }
31
+ resolveDependency(id) {
32
+ if (id.startsWith(`${this.prefix}/@id`)) return {
33
+ id: `${this.url}${id}`,
34
+ external: true
35
+ };
36
+ if (this.optimizeDeps.some((x)=>id.startsWith(x))) {
37
+ return {
38
+ id: `${this.url}${this.prefix}/@id/${id}/`,
39
+ external: true
40
+ };
41
+ }
42
+ }
43
+ getTarget(id) {
44
+ for (const target of this.targets){
45
+ const path = id.match(new RegExp(`^\/?${target.packageJson.name}(?<path>.*)$`))?.groups.path;
46
+ if (path === undefined) continue;
47
+ if (path === '' || path.startsWith('/')) return {
48
+ target,
49
+ path
50
+ };
51
+ }
52
+ }
53
+ }
54
+
55
+ //# sourceMappingURL=resolver.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"sources":["/mnt/dev/cmmn/tools/dev-server/resolver.ts"],"names":["Resolver","targets","prefix","resolveId","id","targetPath","getTarget","resolveTarget","target","path","resolveDependency","optimizeDeps","Set","flatMap","t","externalDependencies","filter","x","every","y","packageJson","name","entry","getEntry","error","relative","flags","production","output","substring","resolvedId","url","external","startsWith","some","match","RegExp","groups","undefined"],"mappings":"AAEA,OAAO,MAAMA;IAKT,YAAY,AAAQC,OAAiB,CAAE;aAAnBA,UAAAA;aAJZC,SAAiB;aAYzBC,YAAY,CAACC;YACT,MAAMC,aAAa,IAAI,CAACC,SAAS,CAACF;YAClC,IAAIC,YAAY;gBACZ,OAAO,IAAI,CAACE,aAAa,CAACF,WAAWG,MAAM,EAAEH,WAAWI,IAAI;YAChE;YACA,OAAO,IAAI,CAACC,iBAAiB,CAACN;QAClC;QAbI,IAAI,CAACO,YAAY,GAAG;eAAI,IAAIC,IAAI;mBACzBX,QAAQY,OAAO,CAACC,CAAAA,IAAKA,EAAEC,oBAAoB;aAGjD;SAAE,CAACC,MAAM,CAACC,CAAAA,IAAKhB,QAAQiB,KAAK,CAACC,CAAAA,IAAKA,EAAEC,WAAW,CAACC,IAAI,KAAKJ;IAC9D;IAWAV,cAAcC,MAAc,EAAEC,IAAY,EAAC;QACvC,MAAMa,QAAQd,OAAOe,QAAQ,CAAC,MAAMd;QACpC,IAAI,CAACa,OAAO;YACRd,OAAOgB,KAAK,CAAC,CAAC,0BAA0B,EAAEf,MAAM;YAChD;QACJ;QACA,MAAMgB,WAAWjB,OAAOkB,KAAK,CAACC,UAAU,GAAGL,MAAMM,MAAM,GAAGN,MAAMG,QAAQ,CAACI,SAAS,CAAC;QACnF,MAAMC,aAAa,GAAG,IAAI,CAACC,GAAG,GAAG,IAAI,CAAC7B,MAAM,CAAC,CAAC,EAAEM,OAAOY,WAAW,CAACC,IAAI,CAAC,CAAC,EAAEI,UAAU;QACrF,OAAO;YACHrB,IAAI0B;YACJE,UAAU;QACd;IACJ;IAEAtB,kBAAkBN,EAAU,EAAC;QACzB,IAAIA,GAAG6B,UAAU,CAAC,GAAG,IAAI,CAAC/B,MAAM,CAAC,IAAI,CAAC,GAClC,OAAO;YACHE,IAAI,GAAG,IAAI,CAAC2B,GAAG,GAAG3B,IAAI;YACtB4B,UAAU;QACd;QACJ,IAAI,IAAI,CAACrB,YAAY,CAACuB,IAAI,CAACjB,CAAAA,IAAKb,GAAG6B,UAAU,CAAChB,KAAK;YAC/C,OAAO;gBACHb,IAAI,GAAG,IAAI,CAAC2B,GAAG,GAAG,IAAI,CAAC7B,MAAM,CAAC,KAAK,EAAEE,GAAG,CAAC,CAAC;gBAC1C4B,UAAU;YACd;QACJ;IACJ;IAEA1B,UAAUF,EAAU,EAAE;QAClB,KAAK,MAAMI,UAAU,IAAI,CAACP,OAAO,CAAE;YAC/B,MAAMQ,OAAOL,GAAG+B,KAAK,CAAC,IAAIC,OAAO,CAAC,IAAI,EAAE5B,OAAOY,WAAW,CAACC,IAAI,CAAC,YAAY,CAAC,IAAIgB,OAAO5B;YACxF,IAAGA,SAAS6B,WAAW;YACvB,IAAG7B,SAAS,MAAMA,KAAKwB,UAAU,CAAC,MAC9B,OAAO;gBAAEzB;gBAAQC;YAAI;QAC7B;IACJ;AACJ"}
@@ -0,0 +1,150 @@
1
+ import { _ as _ts_add_disposable_resource } from "@swc/helpers/_/_ts_add_disposable_resource";
2
+ import { _ as _ts_dispose_resources } from "@swc/helpers/_/_ts_dispose_resources";
3
+ import { fileURLToPath } from "node:url";
4
+ import { crc32 } from "node:zlib";
5
+ import fs from "node:fs/promises";
6
+ import { wasm } from "./plugins/wasm.js";
7
+ import { swcMinifyPlugin } from "./plugins/minify.js";
8
+ import path from "node:path";
9
+ export class RolldownDependencyBuilder {
10
+ constructor(externals, basePath, minify = false){
11
+ this.externals = externals;
12
+ this.basePath = basePath;
13
+ this.minify = minify;
14
+ this.dir = path.join(process.cwd(), './node_modules/.cmmn');
15
+ }
16
+ async getFileContent(target, isModule) {
17
+ if (isModule) return `export * from '${target}';`;
18
+ const pkg = await import(target);
19
+ const keys = Object.keys(pkg).filter((x)=>x !== 'default');
20
+ return [
21
+ `import * as result from '${target}';`,
22
+ `export const { ${keys.join(',')} } = result;`,
23
+ 'default' in pkg ? 'export default result.default;' : ''
24
+ ].join('\n');
25
+ }
26
+ async getEntry(target, isModule) {
27
+ const id = crc32(target + new Date() + Math.random());
28
+ const file = `${this.dir}/.${id}.js`;
29
+ const content = await this.getFileContent(target, isModule);
30
+ await fs.mkdir(this.dir, {
31
+ recursive: true
32
+ });
33
+ await fs.writeFile(file, content, 'utf-8');
34
+ return {
35
+ index: file,
36
+ [Symbol.asyncDispose] () {
37
+ return fs.rm(file);
38
+ }
39
+ };
40
+ }
41
+ getModuleEntry(target) {
42
+ const targetUrl = import.meta.resolve(target);
43
+ const targetFile = fileURLToPath(targetUrl);
44
+ return {
45
+ index: targetFile,
46
+ [Symbol.asyncDispose]: ()=>Promise.resolve()
47
+ };
48
+ }
49
+ async build(target, isModule) {
50
+ const env = {
51
+ stack: [],
52
+ error: void 0,
53
+ hasError: false
54
+ };
55
+ try {
56
+ const { build } = await import("rolldown");
57
+ const { esmExternalRequirePlugin } = await import("rolldown/experimental");
58
+ const input = _ts_add_disposable_resource(env, await this.getEntry(target, isModule), true);
59
+ // const chunkBase = target.split('/').pop() + '/@_'
60
+ try {
61
+ const result = await build({
62
+ input,
63
+ write: false,
64
+ output: {
65
+ format: 'esm',
66
+ chunkFileNames: (chunk)=>'@_/' + chunk.name + '.js',
67
+ assetFileNames: (asset)=>'@_/' + asset.name + '.js'
68
+ },
69
+ experimental: {},
70
+ platform: 'browser',
71
+ resolve: {
72
+ mainFields: [
73
+ 'browser',
74
+ 'module',
75
+ 'main'
76
+ ]
77
+ },
78
+ external: [
79
+ `${this.basePath}/*`
80
+ ],
81
+ optimization: {
82
+ inlineConst: this.minify
83
+ },
84
+ treeshake: true,
85
+ plugins: [
86
+ wasm({
87
+ emitAsset: true,
88
+ assetName: `${target}/{name}`
89
+ }),
90
+ {
91
+ name: 'require',
92
+ load: (id)=>{
93
+ const prefix = 'builtin:esm-external-require-';
94
+ if (id.startsWith(prefix)) {
95
+ return `export * from "${this.basePath}/${id.substring(prefix.length)}"`;
96
+ }
97
+ }
98
+ },
99
+ {
100
+ name: 'externals',
101
+ resolveId: (id, importer, options)=>{
102
+ if (options.kind !== 'require-call' && id !== target && this.externals.some((x)=>x == id || id.startsWith(x + '/'))) return {
103
+ external: "absolute",
104
+ id: this.basePath + '/' + id
105
+ };
106
+ }
107
+ },
108
+ esmExternalRequirePlugin({
109
+ external: this.externals.filter((x)=>x !== target)
110
+ }),
111
+ ...this.minify ? [
112
+ swcMinifyPlugin()
113
+ ] : []
114
+ ]
115
+ });
116
+ return result.output.map((x)=>{
117
+ return {
118
+ fileName: x.name == 'index' ? '' : x.type == 'asset' ? '@_/' + x.fileName : x.fileName,
119
+ data: x.type == "asset" ? x.source : x.code,
120
+ deps: x.type == "asset" ? [] : [
121
+ ...x.imports,
122
+ ...x.dynamicImports
123
+ ].map((path)=>({
124
+ package: path,
125
+ path: ''
126
+ }))
127
+ };
128
+ });
129
+ // return Object.fromEntries([
130
+ // ...result.output
131
+ // .filter(x => x.type == "chunk")
132
+ // .map(x => [(x.name === 'index' ? '' : x.fileName.replace(chunkBase, '@_')), x.code]),
133
+ // ...result.output
134
+ // .filter(x => x.type !== "chunk")
135
+ // .map(x => ['@_/'+x.fileName, x.source])
136
+ // ]);
137
+ } finally{
138
+ // await entryPoints[Symbol.asyncDispose]();
139
+ }
140
+ } catch (e) {
141
+ env.error = e;
142
+ env.hasError = true;
143
+ } finally{
144
+ const result = _ts_dispose_resources(env);
145
+ if (result) await result;
146
+ }
147
+ }
148
+ }
149
+
150
+ //# sourceMappingURL=rolldown-dependency-builder.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"sources":["/mnt/dev/cmmn/tools/dev-server/rolldown-dependency-builder.ts"],"names":["fileURLToPath","crc32","fs","wasm","swcMinifyPlugin","path","RolldownDependencyBuilder","externals","basePath","minify","dir","join","process","cwd","getFileContent","target","isModule","pkg","keys","Object","filter","x","getEntry","id","Date","Math","random","file","content","mkdir","recursive","writeFile","index","Symbol","asyncDispose","rm","getModuleEntry","targetUrl","resolve","targetFile","Promise","build","esmExternalRequirePlugin","input","result","write","output","format","chunkFileNames","chunk","name","assetFileNames","asset","experimental","platform","mainFields","external","optimization","inlineConst","treeshake","plugins","emitAsset","assetName","load","prefix","startsWith","substring","length","resolveId","importer","options","kind","some","map","fileName","type","data","source","code","deps","imports","dynamicImports","package"],"mappings":"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"}