@cmmn/tools 2.2.3 → 3.0.0-alpha-1

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 (203) hide show
  1. package/.swcrc +20 -0
  2. package/dist/esm/bin.js +9 -0
  3. package/dist/esm/bin.js.map +1 -0
  4. package/dist/esm/bundlers/createBundler.js +9 -0
  5. package/dist/esm/bundlers/createBundler.js.map +1 -0
  6. package/dist/esm/bundlers/plugins/minify.js +34 -0
  7. package/dist/esm/bundlers/plugins/minify.js.map +1 -0
  8. package/dist/esm/bundlers/plugins/wasm.js +43 -0
  9. package/dist/esm/bundlers/plugins/wasm.js.map +1 -0
  10. package/dist/esm/bundlers/rolldown-bundler.js +153 -0
  11. package/dist/esm/bundlers/rolldown-bundler.js.map +1 -0
  12. package/dist/esm/bundlers/types.js +3 -0
  13. package/dist/esm/bundlers/types.js.map +1 -0
  14. package/dist/esm/bundlers/vite.builder.js +117 -0
  15. package/dist/esm/bundlers/vite.builder.js.map +1 -0
  16. package/dist/esm/bundlers/vite.bundler.js +56 -0
  17. package/dist/esm/bundlers/vite.bundler.js.map +1 -0
  18. package/dist/esm/commands/bundle.js +100 -0
  19. package/dist/esm/commands/bundle.js.map +1 -0
  20. package/dist/esm/commands/cert.js +26 -0
  21. package/dist/esm/commands/cert.js.map +1 -0
  22. package/dist/esm/commands/ci.js +14 -0
  23. package/dist/esm/commands/ci.js.map +1 -0
  24. package/dist/esm/commands/clean.js +18 -0
  25. package/dist/esm/commands/clean.js.map +1 -0
  26. package/dist/esm/commands/compile.js +60 -0
  27. package/dist/esm/commands/compile.js.map +1 -0
  28. package/dist/esm/commands/deploy.js +61 -0
  29. package/dist/esm/commands/deploy.js.map +1 -0
  30. package/dist/esm/commands/dev.js +36 -0
  31. package/dist/esm/commands/dev.js.map +1 -0
  32. package/dist/esm/commands/format.js +44 -0
  33. package/dist/esm/commands/format.js.map +1 -0
  34. package/dist/esm/commands/gen.js +36 -0
  35. package/dist/esm/commands/gen.js.map +1 -0
  36. package/dist/esm/commands/host.js +21 -0
  37. package/dist/esm/commands/host.js.map +1 -0
  38. package/dist/esm/commands/index.js +12 -0
  39. package/dist/esm/commands/index.js.map +1 -0
  40. package/dist/esm/commands/lint.js +45 -0
  41. package/dist/esm/commands/lint.js.map +1 -0
  42. package/dist/esm/commands/nginx.js +62 -0
  43. package/dist/esm/commands/nginx.js.map +1 -0
  44. package/dist/esm/commands/publish.js +37 -0
  45. package/dist/esm/commands/publish.js.map +1 -0
  46. package/dist/esm/commands/typings.js +66 -0
  47. package/dist/esm/commands/typings.js.map +1 -0
  48. package/dist/esm/commands/version.js +34 -0
  49. package/dist/esm/commands/version.js.map +1 -0
  50. package/dist/esm/dev-server/asset-collection.js +18 -0
  51. package/dist/esm/dev-server/asset-collection.js.map +1 -0
  52. package/dist/esm/dev-server/bundle.json.builder.js +47 -0
  53. package/dist/esm/dev-server/bundle.json.builder.js.map +1 -0
  54. package/dist/esm/dev-server/dependencyServer.js +96 -0
  55. package/dist/esm/dev-server/dependencyServer.js.map +1 -0
  56. package/dist/esm/dev-server/dev-server.js +49 -0
  57. package/dist/esm/dev-server/dev-server.js.map +1 -0
  58. package/dist/esm/dev-server/plugins/minify.js +34 -0
  59. package/dist/esm/dev-server/plugins/minify.js.map +1 -0
  60. package/dist/esm/dev-server/plugins/wasm.js +30 -0
  61. package/dist/esm/dev-server/plugins/wasm.js.map +1 -0
  62. package/dist/esm/dev-server/resolver.js +55 -0
  63. package/dist/esm/dev-server/resolver.js.map +1 -0
  64. package/dist/esm/dev-server/rolldown-dependency-builder.js +150 -0
  65. package/dist/esm/dev-server/rolldown-dependency-builder.js.map +1 -0
  66. package/dist/esm/dev-server/target-runnner.js +72 -0
  67. package/dist/esm/dev-server/target-runnner.js.map +1 -0
  68. package/dist/esm/dev-server/target-web-server.js +78 -0
  69. package/dist/esm/dev-server/target-web-server.js.map +1 -0
  70. package/dist/esm/dev-server/targetServer.js +29 -0
  71. package/dist/esm/dev-server/targetServer.js.map +1 -0
  72. package/dist/esm/dev-server/vite.builder.js +183 -0
  73. package/dist/esm/dev-server/vite.builder.js.map +1 -0
  74. package/dist/esm/dev-server/wasm-resolver.js +25 -0
  75. package/dist/esm/dev-server/wasm-resolver.js.map +1 -0
  76. package/dist/esm/helpers/fastify-compress.js +26 -0
  77. package/dist/esm/helpers/fastify-compress.js.map +1 -0
  78. package/dist/esm/helpers/flags.js +22 -0
  79. package/dist/esm/helpers/flags.js.map +1 -0
  80. package/dist/esm/helpers/getProjects.js +49 -0
  81. package/dist/esm/helpers/getProjects.js.map +1 -0
  82. package/dist/esm/helpers/getTSConfig.js +32 -0
  83. package/dist/esm/helpers/getTSConfig.js.map +1 -0
  84. package/dist/esm/helpers/target.js +230 -0
  85. package/dist/esm/helpers/target.js.map +1 -0
  86. package/dist/esm/helpers/terminal.js +117 -0
  87. package/dist/esm/helpers/terminal.js.map +1 -0
  88. package/dist/esm/helpers/ts-resolve-plugin.js +139 -0
  89. package/dist/esm/helpers/ts-resolve-plugin.js.map +1 -0
  90. package/dist/esm/helpers/watcher.js +35 -0
  91. package/dist/esm/helpers/watcher.js.map +1 -0
  92. package/dist/esm/index.js +5 -0
  93. package/dist/esm/index.js.map +1 -0
  94. package/dist/esm/model/bundle.js +75 -0
  95. package/dist/esm/model/bundle.js.map +1 -0
  96. package/dist/esm/model/flags.js +27 -0
  97. package/dist/esm/model/flags.js.map +1 -0
  98. package/dist/esm/model/monorepo.js +74 -0
  99. package/dist/esm/model/monorepo.js.map +1 -0
  100. package/dist/esm/model/pack.js +131 -0
  101. package/dist/esm/model/pack.js.map +1 -0
  102. package/dist/esm/model/resolver.js +100 -0
  103. package/dist/esm/model/resolver.js.map +1 -0
  104. package/dist/esm/model/target.js +111 -0
  105. package/dist/esm/model/target.js.map +1 -0
  106. package/dist/esm/servers/bundle-server.js +20 -0
  107. package/dist/esm/servers/bundle-server.js.map +1 -0
  108. package/dist/esm/servers/dev-server.js +70 -0
  109. package/dist/esm/servers/dev-server.js.map +1 -0
  110. package/dist/esm/servers/pack-server.js +20 -0
  111. package/dist/esm/servers/pack-server.js.map +1 -0
  112. package/dist/esm/servers/target-runnner.js +80 -0
  113. package/dist/esm/servers/target-runnner.js.map +1 -0
  114. package/dist/esm/servers/vite-dev-server.js +61 -0
  115. package/dist/esm/servers/vite-dev-server.js.map +1 -0
  116. package/dist/esm/specs/dependency-builder-specs.js +164 -0
  117. package/dist/esm/specs/dependency-builder-specs.js.map +1 -0
  118. package/dist/esm/specs/dev-server.specs.js +73 -0
  119. package/dist/esm/specs/dev-server.specs.js.map +1 -0
  120. package/dist/esm/specs/monorepo.specs.js +35 -0
  121. package/dist/esm/specs/monorepo.specs.js.map +1 -0
  122. package/dist/esm/specs/resolver.specs.js +57 -0
  123. package/dist/esm/specs/resolver.specs.js.map +1 -0
  124. package/dist/esm/specs/rolldown.specs.js +278 -0
  125. package/dist/esm/specs/rolldown.specs.js.map +1 -0
  126. package/dist/esm/specs/target-specs.js +108 -0
  127. package/dist/esm/specs/target-specs.js.map +1 -0
  128. package/dist/esm/specs/vite-bundler.specs.js +75 -0
  129. package/dist/esm/specs/vite-bundler.specs.js.map +1 -0
  130. package/dist/esm/test/test.js +30 -0
  131. package/dist/esm/test/test.js.map +1 -0
  132. package/dist/ts.buildinfo +1 -0
  133. package/dist/typings/bin.d.ts +2 -0
  134. package/dist/typings/bundlers/plugins/minify.d.ts +6 -0
  135. package/dist/typings/bundlers/plugins/wasm.d.ts +5 -0
  136. package/dist/typings/bundlers/rolldown-bundler.d.ts +18 -0
  137. package/dist/typings/bundlers/types.d.ts +4 -0
  138. package/dist/typings/bundlers/vite.builder.d.ts +12 -0
  139. package/dist/typings/bundlers/vite.bundler.d.ts +9 -0
  140. package/dist/typings/commands/bundle.d.ts +2 -0
  141. package/dist/typings/commands/cert.d.ts +1 -0
  142. package/dist/typings/commands/clean.d.ts +2 -0
  143. package/dist/typings/commands/compile.d.ts +2 -0
  144. package/dist/typings/commands/dev.d.ts +2 -0
  145. package/dist/typings/commands/format.d.ts +5 -0
  146. package/dist/typings/commands/gen.d.ts +1 -0
  147. package/dist/typings/commands/host.d.ts +1 -0
  148. package/dist/typings/commands/index.d.ts +10 -0
  149. package/dist/typings/commands/lint.d.ts +5 -0
  150. package/dist/typings/commands/nginx.d.ts +6 -0
  151. package/dist/typings/commands/publish.d.ts +2 -0
  152. package/dist/typings/commands/typings.d.ts +4 -0
  153. package/dist/typings/commands/version.d.ts +1 -0
  154. package/dist/typings/helpers/fastify-compress.d.ts +6 -0
  155. package/dist/typings/helpers/getTSConfig.d.ts +11 -0
  156. package/dist/typings/helpers/terminal.d.ts +22 -0
  157. package/dist/typings/helpers/watcher.d.ts +7 -0
  158. package/dist/typings/index.d.ts +4 -0
  159. package/dist/typings/model/bundle.d.ts +34 -0
  160. package/dist/typings/model/flags.d.ts +15 -0
  161. package/dist/typings/model/monorepo.d.ts +18 -0
  162. package/dist/typings/model/pack.d.ts +45 -0
  163. package/dist/typings/model/resolver.d.ts +38 -0
  164. package/dist/typings/model/target.d.ts +27 -0
  165. package/dist/typings/servers/bundle-server.d.ts +10 -0
  166. package/dist/typings/servers/dev-server.d.ts +16 -0
  167. package/dist/typings/servers/pack-server.d.ts +9 -0
  168. package/dist/typings/servers/target-runnner.d.ts +13 -0
  169. package/dist/typings/servers/vite-dev-server.d.ts +18 -0
  170. package/dist/typings/specs/dev-server.specs.d.ts +1 -0
  171. package/dist/typings/specs/monorepo.specs.d.ts +1 -0
  172. package/dist/typings/specs/resolver.specs.d.ts +1 -0
  173. package/dist/typings/specs/rolldown.specs.d.ts +1 -0
  174. package/dist/typings/specs/target-specs.d.ts +1 -0
  175. package/dist/typings/specs/vite-bundler.specs.d.ts +1 -0
  176. package/dist/typings/test/test.d.ts +16 -0
  177. package/{compile → helpers}/tsconfig.json +12 -9
  178. package/node/hooks-dev.js +72 -0
  179. package/node/register-dev.js +3 -0
  180. package/node/register.js +14 -0
  181. package/package.json +50 -40
  182. package/readme.md +2 -2
  183. package/tsconfig.json +14 -0
  184. package/LICENSE +0 -21
  185. package/bin.js +0 -21
  186. package/bundle/bundle.js +0 -46
  187. package/bundle/esbuild.config.js +0 -178
  188. package/bundle/getConfigs.js +0 -62
  189. package/compile/compile.js +0 -53
  190. package/compile/ts-resolve-plugin.js +0 -235
  191. package/compile/typings.d.ts +0 -19
  192. package/gen/component.ts.tpl +0 -16
  193. package/gen/gen.js +0 -27
  194. package/gen/style.less.tpl +0 -3
  195. package/gen/template.ts.tpl +0 -8
  196. package/helpers/getTSConfig.js +0 -19
  197. package/serve/readme.md +0 -8
  198. package/serve/serve.js +0 -109
  199. package/spawn/index.js +0 -81
  200. package/test/index.d.ts +0 -18
  201. package/test/index.js +0 -16
  202. package/test/jest.config.js +0 -32
  203. package/test/pathsToModuleNameMapper.js +0 -46
package/.swcrc ADDED
@@ -0,0 +1,20 @@
1
+ {
2
+ "jsc": {
3
+ "parser": {
4
+ "syntax": "typescript",
5
+ "decoratorsBeforeExport": true,
6
+ "decorators": true
7
+ },
8
+ "transform": {
9
+ "legacyDecorator": false,
10
+ "decoratorVersion": "2022-03",
11
+ "react": {
12
+ "runtime": "automatic"
13
+ },
14
+ "useDefineForClassFields": false
15
+ },
16
+ "target": "esnext",
17
+ "externalHelpers": true
18
+ },
19
+ "sourceMaps": "inline"
20
+ }
@@ -0,0 +1,9 @@
1
+ #!/usr/bin/env node
2
+ import { Flags } from "./model/flags.js";
3
+ const flags = new Flags(process.argv.slice(2));
4
+ import(`./commands/${flags.command}.js`).then((x)=>x[flags.command](flags)).catch((err)=>{
5
+ console.error(err);
6
+ console.log('cmmn [command] [args]');
7
+ });
8
+
9
+ //# sourceMappingURL=bin.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"sources":["/mnt/dev/cmmn/tools/bin.ts"],"names":["Flags","flags","process","argv","slice","command","then","x","catch","err","console","error","log"],"mappings":";AACA,SAAQA,KAAK,QAAO,mBAAmB;AAEvC,MAAMC,QAAQ,IAAID,MAAME,QAAQC,IAAI,CAACC,KAAK,CAAC;AAE3C,MAAM,CAAE,CAAC,WAAW,EAAEH,MAAMI,OAAO,CAAC,GAAG,CAAC,EACnCC,IAAI,CAACC,CAAAA,IAAKA,CAAC,CAACN,MAAMI,OAAO,CAAC,CAACJ,QAC3BO,KAAK,CAAC,CAACC;IACJC,QAAQC,KAAK,CAACF;IACdC,QAAQE,GAAG,CAAC;AAChB"}
@@ -0,0 +1,9 @@
1
+ import { Target } from "../model/target.js";
2
+ import { ViteBundler } from "./vite.bundler.js";
3
+ import { RolldownBundler } from "./rolldown-bundler.js";
4
+ export function createBundler(pack, resolver) {
5
+ if (pack instanceof Target) return new ViteBundler(pack, resolver);
6
+ return new RolldownBundler(pack, resolver);
7
+ }
8
+
9
+ //# sourceMappingURL=createBundler.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"sources":["/mnt/dev/cmmn/tools/bundlers/createBundler.ts"],"names":["Target","ViteBundler","RolldownBundler","createBundler","pack","resolver"],"mappings":"AAEA,SAAQA,MAAM,QAAO,qBAAkB;AACvC,SAAQC,WAAW,QAAO,oBAAiB;AAC3C,SAAQC,eAAe,QAAO,wBAAqB;AAGnD,OAAO,SAASC,cAAcC,IAAU,EAAEC,QAAkB;IACxD,IAAID,gBAAgBJ,QAChB,OAAO,IAAIC,YAAYG,MAAMC;IACjC,OAAO,IAAIH,gBAAgBE,MAAMC;AACrC"}
@@ -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/bundlers/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,43 @@
1
+ import fs from "node:fs/promises";
2
+ import { dirname, resolve } from "node:path";
3
+ export function wasm(options = {}) {
4
+ return {
5
+ name: 'wasm',
6
+ resolveId (id, importer) {
7
+ if (!/\.wasm$/.test(id)) return null;
8
+ const name = id.split('/').pop();
9
+ const moduleInfo = this.getModuleInfo(importer);
10
+ // @ts-ignore
11
+ moduleInfo.dynamicallyImportedIds.push(name);
12
+ // @ts-ignore
13
+ moduleInfo.importedIds.push(name);
14
+ return resolve(dirname(importer), id);
15
+ },
16
+ async load (id) {
17
+ if (!/\.wasm$/.test(id)) return null;
18
+ const name = id.split('/').pop();
19
+ let url = `new URL("./${name}?no-inline", import.meta.url)`;
20
+ if (options.emitAsset) {
21
+ const referenceId = this.emitFile({
22
+ type: 'asset',
23
+ source: await (this.fs ?? fs).readFile(id),
24
+ name: options.assetName?.replace('{name}', name) ?? 'WASM Asset',
25
+ fileName: name
26
+ });
27
+ url = `import.meta.ROLLUP_FILE_URL_${referenceId}`;
28
+ }
29
+ return {
30
+ map: {
31
+ mappings: ''
32
+ },
33
+ code: [
34
+ `const url = ${url};`,
35
+ `const ab = await fetch(url).then(x => x.arrayBuffer())`,
36
+ `export default new WebAssembly.Module(ab);`
37
+ ].join('\n')
38
+ };
39
+ }
40
+ };
41
+ }
42
+
43
+ //# sourceMappingURL=wasm.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"sources":["/mnt/dev/cmmn/tools/bundlers/plugins/wasm.ts"],"names":["fs","dirname","resolve","wasm","options","name","resolveId","id","importer","test","split","pop","moduleInfo","getModuleInfo","dynamicallyImportedIds","push","importedIds","load","url","emitAsset","referenceId","emitFile","type","source","readFile","assetName","replace","fileName","map","mappings","code","join"],"mappings":"AAAA,OAAOA,QAAQ,mBAAmB;AAElC,SAAQC,OAAO,EAAEC,OAAO,QAAO,YAAY;AAE3C,OAAO,SAASC,KAAKC,UAGjB,CAAC,CAAC;IACL,OAAO;QACNC,MAAM;QACAC,WAAUC,EAAE,EAAEC,QAAQ;YAClB,IAAI,CAAC,UAAUC,IAAI,CAACF,KAAK,OAAO;YAChC,MAAMF,OAAOE,GAAGG,KAAK,CAAC,KAAKC,GAAG;YAC9B,MAAMC,aAAa,IAAI,CAACC,aAAa,CAACL;YACtC,aAAa;YACbI,WAAWE,sBAAsB,CAACC,IAAI,CAACV;YACvC,aAAa;YACbO,WAAWI,WAAW,CAACD,IAAI,CAACV;YAC5B,OAAOH,QAAQD,QAAQO,WAAWD;QACtC;QACN,MAAMU,MAAKV,EAAE;YACZ,IAAI,CAAC,UAAUE,IAAI,CAACF,KAAK,OAAO;YAChC,MAAMF,OAAOE,GAAGG,KAAK,CAAC,KAAKC,GAAG;YACrB,IAAIO,MAAK,CAAC,WAAW,EAAEb,KAAK,6BAA6B,CAAC;YACnE,IAAID,QAAQe,SAAS,EAAE;gBACV,MAAMC,cAAc,IAAI,CAACC,QAAQ,CAAC;oBAC7CC,MAAM;oBACNC,QAAQ,MAAM,AAAC,CAAA,IAAI,CAACvB,EAAE,IAAIA,EAAC,EAAGwB,QAAQ,CAACjB;oBACvCF,MAAMD,QAAQqB,SAAS,EAAEC,QAAQ,UAAUrB,SAAS;oBACpDsB,UAAUtB;gBACX;gBACYa,MAAM,CAAC,4BAA4B,EAAEE,aAAa;YAC/D;YACA,OAAO;gBACNQ,KAAK;oBACJC,UAAU;gBACX;gBAEAC,MAAM;oBACL,CAAC,YAAY,EAAEZ,IAAI,CAAC,CAAC;oBACrB,CAAC,sDAAsD,CAAC;oBACxD,CAAC,0CAA0C,CAAC;iBAC5C,CAACa,IAAI,CAAC;YACR;QACD;IACD;AACD"}
@@ -0,0 +1,153 @@
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 { crc32 } from "node:zlib";
4
+ import fs from "node:fs/promises";
5
+ import { wasm } from "./plugins/wasm.js";
6
+ import { swcMinifyPlugin } from "./plugins/minify.js";
7
+ import path from "node:path";
8
+ import { Bundle } from "../model/bundle.js";
9
+ import { esmExternalRequirePlugin } from "rolldown/experimental";
10
+ export class RolldownBundler {
11
+ constructor(pack, resolver, flags){
12
+ this.pack = pack;
13
+ this.resolver = resolver;
14
+ this.flags = flags;
15
+ this.dir = path.join(process.cwd(), './node_modules/.cmmn');
16
+ }
17
+ async getFileContent(entry) {
18
+ const target = entry.name ? `${this.pack.name}/${entry.name}` : `${this.pack.name}`;
19
+ if (this.pack.packageJson.type === "module") return `export * from '${target}';`;
20
+ const pkg = await import(target, entry.source.endsWith('.json') ? {
21
+ with: {
22
+ type: 'json'
23
+ }
24
+ } : {});
25
+ const keys = Object.keys(pkg).filter((x)=>x !== 'default');
26
+ return [
27
+ `import * as result from '${target}';`,
28
+ `export const { ${keys.join(',')} } = result;`,
29
+ 'default' in pkg ? 'export default result.default;' : ''
30
+ ].join('\n');
31
+ }
32
+ async getInputs() {
33
+ const result = {
34
+ async [Symbol.asyncDispose] () {
35
+ for (let file of Object.values(this)){
36
+ if (typeof file === 'string') await fs.rm(file);
37
+ }
38
+ }
39
+ };
40
+ for (let entry of this.pack.entries){
41
+ if (entry.source.match(/\.(d\.ts|css|scss|sass|less|styl|pcss|postcss|html)$/)) continue;
42
+ if (entry.source.includes('*')) continue;
43
+ const id = crc32(entry.name + new Date() + Math.random());
44
+ const file = `${this.dir}/.${id}.js`;
45
+ const content = await this.getFileContent(entry);
46
+ await fs.mkdir(this.dir, {
47
+ recursive: true
48
+ });
49
+ await fs.writeFile(file, content, 'utf-8');
50
+ result[entry.name] = file;
51
+ }
52
+ return result;
53
+ }
54
+ getConfig() {
55
+ return {
56
+ write: false,
57
+ output: {
58
+ format: 'esm'
59
+ },
60
+ define: {
61
+ 'process.env.NODE_ENV': this.flags.production ? '"production"' : '"development"'
62
+ },
63
+ experimental: {},
64
+ platform: 'browser',
65
+ resolve: {
66
+ mainFields: [
67
+ 'browser',
68
+ 'module',
69
+ 'main'
70
+ ]
71
+ },
72
+ optimization: {
73
+ inlineConst: this.flags.minify
74
+ },
75
+ treeshake: true,
76
+ plugins: [
77
+ ...this.getPlugins()
78
+ ]
79
+ };
80
+ }
81
+ // TODO: Filter hook https://rolldown.rs/in-depth/why-plugin-hook-filter#when-to-use-filters
82
+ *getPlugins() {
83
+ yield wasm({
84
+ emitAsset: true,
85
+ assetName: `{name}`
86
+ });
87
+ yield {
88
+ name: 'require',
89
+ load: (id)=>{
90
+ const prefix = 'builtin:esm-external-require-';
91
+ if (id.startsWith(prefix)) {
92
+ const resolved = this.resolver.resolveId(id.substring(prefix.length), null, null);
93
+ if (resolved) return `export * from "${resolved.id}"`;
94
+ }
95
+ }
96
+ };
97
+ yield {
98
+ name: 'externals',
99
+ resolveId: (id, importer, options)=>{
100
+ if (options.kind === 'require-call') return;
101
+ const resolved = this.resolver.resolveId(id, importer, options);
102
+ if (resolved && resolved.pack !== this.pack) return resolved;
103
+ }
104
+ };
105
+ yield esmExternalRequirePlugin({
106
+ external: this.resolver.getPackNames().filter((x)=>x !== this.pack.name)
107
+ });
108
+ if (this.flags.minify) yield swcMinifyPlugin();
109
+ }
110
+ async bundle() {
111
+ const env = {
112
+ stack: [],
113
+ error: void 0,
114
+ hasError: false
115
+ };
116
+ try {
117
+ const input = _ts_add_disposable_resource(env, await this.getInputs(), true);
118
+ if (Object.keys(input).length == 0) return new Bundle(this.pack, []);
119
+ const { build } = await import("rolldown");
120
+ const config = this.getConfig();
121
+ const result = await build({
122
+ ...config,
123
+ input
124
+ }).catch((err)=>{
125
+ this.pack.error(err.message);
126
+ return {
127
+ output: []
128
+ };
129
+ });
130
+ const outputs = result.output.map((x)=>({
131
+ fileName: x.fileName,
132
+ entry: this.pack.getEntry(x.name),
133
+ data: x.type == "asset" ? x.source : x.code,
134
+ deps: x.type == "asset" ? [] : [
135
+ ...x.imports,
136
+ ...x.dynamicImports
137
+ ].map((path)=>this.resolver.getPack(path) ?? {
138
+ pack: this.pack,
139
+ path: path
140
+ })
141
+ }));
142
+ return new Bundle(this.pack, outputs);
143
+ } catch (e) {
144
+ env.error = e;
145
+ env.hasError = true;
146
+ } finally{
147
+ const result = _ts_dispose_resources(env);
148
+ if (result) await result;
149
+ }
150
+ }
151
+ }
152
+
153
+ //# sourceMappingURL=rolldown-bundler.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"sources":["/mnt/dev/cmmn/tools/bundlers/rolldown-bundler.ts"],"names":["crc32","fs","wasm","swcMinifyPlugin","path","Bundle","esmExternalRequirePlugin","RolldownBundler","pack","resolver","flags","dir","join","process","cwd","getFileContent","entry","target","name","packageJson","type","pkg","source","endsWith","with","keys","Object","filter","x","getInputs","result","Symbol","asyncDispose","file","values","rm","entries","match","includes","id","Date","Math","random","content","mkdir","recursive","writeFile","getConfig","write","output","format","define","production","experimental","platform","resolve","mainFields","optimization","inlineConst","minify","treeshake","plugins","getPlugins","emitAsset","assetName","load","prefix","startsWith","resolved","resolveId","substring","length","importer","options","kind","external","getPackNames","bundle","input","build","config","catch","err","error","message","outputs","map","fileName","getEntry","data","code","deps","imports","dynamicImports","getPack"],"mappings":"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"}
@@ -0,0 +1,3 @@
1
+ export { };
2
+
3
+ //# sourceMappingURL=types.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"sources":["/mnt/dev/cmmn/tools/bundlers/types.ts"],"names":[],"mappings":"AAEA,WAEC"}
@@ -0,0 +1,117 @@
1
+ import builtinModules from "builtin-modules";
2
+ import { wasm } from "./plugins/wasm.js";
3
+ import swc from "unplugin-swc";
4
+ import tsconfigPaths from "vite-tsconfig-paths";
5
+ import { dirname } from "node:path";
6
+ import { swcMinifyPlugin } from "./plugins/minify.js";
7
+ export class ViteBuilder {
8
+ constructor(target, resolver, flags){
9
+ this.target = target;
10
+ this.resolver = resolver;
11
+ this.flags = flags;
12
+ }
13
+ async getConfig() {
14
+ return {
15
+ root: this.target.rootDir,
16
+ logLevel: 'silent',
17
+ mode: this.flags.production ? "production" : 'debug',
18
+ optimizeDeps: {
19
+ noDiscovery: true,
20
+ include: []
21
+ },
22
+ define: {
23
+ process: {
24
+ env: {
25
+ NODE_ENV: this.flags.production ? 'production' : 'development'
26
+ }
27
+ }
28
+ },
29
+ html: {},
30
+ base: this.target.publicPath + '/',
31
+ build: {
32
+ target: 'baseline-widely-available',
33
+ emptyOutDir: false,
34
+ rollupOptions: {
35
+ external: [
36
+ ...this.resolver ? [] : Array.from(this.target.deps.keys()).map((x)=>new RegExp(`^${x}`.replace('/', '\\/'))),
37
+ ...builtinModules,
38
+ 'fsevents',
39
+ /@id/g
40
+ ]
41
+ },
42
+ write: false,
43
+ minify: false,
44
+ sourcemap: this.flags.minify ? false : 'inline',
45
+ commonjsOptions: {
46
+ transformMixedEsModules: true
47
+ }
48
+ },
49
+ plugins: [
50
+ ...this.getPlugins()
51
+ ]
52
+ };
53
+ }
54
+ *getPlugins() {
55
+ yield wasm();
56
+ yield swc.vite(this.target.swcConfig);
57
+ yield tsconfigPaths();
58
+ if (this.resolver) {
59
+ yield {
60
+ name: this.target.packageJson.name + ':resolver',
61
+ resolveId: this.resolver.resolveId,
62
+ enforce: 'pre'
63
+ };
64
+ }
65
+ yield {
66
+ name: "cmmn:html-base-tag",
67
+ enforce: 'pre',
68
+ transformIndexHtml: (_, config)=>{
69
+ const dir = this.flags.production ? '' : dirname(config.path);
70
+ const result = [
71
+ {
72
+ tag: "base",
73
+ attrs: {
74
+ href: `${this.target.publicPath}${dir}/`
75
+ },
76
+ children: '/** injected **/'
77
+ }
78
+ ];
79
+ if (this.flags.production) {
80
+ result.push({
81
+ tag: "link",
82
+ attrs: {
83
+ rel: 'manifest',
84
+ href: `${this.target.publicPath}/manifest.json`
85
+ }
86
+ });
87
+ }
88
+ return result;
89
+ }
90
+ };
91
+ if (this.flags.minify) yield swcMinifyPlugin();
92
+ yield {
93
+ name: "url-resolver",
94
+ enforce: 'pre',
95
+ resolveId: (id, importer, options)=>{
96
+ if (id.endsWith('?resolve')) {
97
+ const resolved = this.resolver?.resolveId(id.split('?')[0], importer, {
98
+ ...options,
99
+ attributes: {
100
+ ...options.attributes,
101
+ resolve: true
102
+ }
103
+ });
104
+ return resolved ? resolved.id + '?resolve' : id;
105
+ }
106
+ },
107
+ load: (id)=>{
108
+ if (id.endsWith('?resolve')) {
109
+ return `export default ${JSON.stringify(id.split('?')[0])}`;
110
+ }
111
+ }
112
+ };
113
+ // yield analyzer();
114
+ }
115
+ }
116
+
117
+ //# sourceMappingURL=vite.builder.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"sources":["/mnt/dev/cmmn/tools/bundlers/vite.builder.ts"],"names":["builtinModules","wasm","swc","tsconfigPaths","dirname","swcMinifyPlugin","ViteBuilder","target","resolver","flags","getConfig","root","rootDir","logLevel","mode","production","optimizeDeps","noDiscovery","include","define","process","env","NODE_ENV","html","base","publicPath","build","emptyOutDir","rollupOptions","external","Array","from","deps","keys","map","x","RegExp","replace","write","minify","sourcemap","commonjsOptions","transformMixedEsModules","plugins","getPlugins","vite","swcConfig","name","packageJson","resolveId","enforce","transformIndexHtml","_","config","dir","path","result","tag","attrs","href","children","push","rel","id","importer","options","endsWith","resolved","split","attributes","resolve","load","JSON","stringify"],"mappings":"AAGA,OAAOA,oBAAoB,kBAAkB;AAC7C,SAAQC,IAAI,QAAO,oBAAiB;AACpC,OAAOC,SAAS,eAAe;AAC/B,OAAOC,mBAAmB,sBAAsB;AAChD,SAAQC,OAAO,QAAO,YAAY;AAClC,SAAQC,eAAe,QAAO,sBAAmB;AAGjD,OAAO,MAAMC;IACT,YAAY,AAAmBC,MAAc,EACjC,AAAmBC,QAAkB,EACrC,AAAmBC,KAAY,CAAE;aAFdF,SAAAA;aACAC,WAAAA;aACAC,QAAAA;IAE/B;IAEA,MAAMC,YAAmC;QACrC,OAAO;YACHC,MAAM,IAAI,CAACJ,MAAM,CAACK,OAAO;YACzBC,UAAU;YACVC,MAAM,IAAI,CAACL,KAAK,CAACM,UAAU,GAAG,eAAe;YAC7CC,cAAc;gBACVC,aAAa;gBACbC,SAAS,EAAE;YACf;YACAC,QAAQ;gBACJC,SAAS;oBACLC,KAAK;wBACDC,UAAU,IAAI,CAACb,KAAK,CAACM,UAAU,GAAG,eAAe;oBACrD;gBACJ;YACJ;YACAQ,MAAM,CAAC;YACPC,MAAM,IAAI,CAACjB,MAAM,CAACkB,UAAU,GAAG;YAC/BC,OAAO;gBACHnB,QAAQ;gBACRoB,aAAa;gBACbC,eAAe;oBACXC,UAAU;2BACF,IAAI,CAACrB,QAAQ,GAAG,EAAE,GAAGsB,MAAMC,IAAI,CAAC,IAAI,CAACxB,MAAM,CAACyB,IAAI,CAACC,IAAI,IAAIC,GAAG,CAACC,CAAAA,IAC7D,IAAIC,OAAO,CAAC,CAAC,EAAED,GAAG,CAACE,OAAO,CAAC,KAAK;2BAEjCrC;wBACH;wBACA;qBACH;gBACL;gBACAsC,OAAO;gBACPC,QAAQ;gBACRC,WAAW,IAAI,CAAC/B,KAAK,CAAC8B,MAAM,GAAG,QAAQ;gBACvCE,iBAAiB;oBACbC,yBAAyB;gBAC7B;YACJ;YACAC,SAAS;mBAAI,IAAI,CAACC,UAAU;aAAG;QACnC;IACJ;IAEA,CAAEA,aAAgC;QAC9B,MAAM3C;QACN,MAAMC,IAAI2C,IAAI,CAAC,IAAI,CAACtC,MAAM,CAACuC,SAAS;QACpC,MAAM3C;QACN,IAAI,IAAI,CAACK,QAAQ,EAAE;YACf,MAAM;gBACFuC,MAAM,IAAI,CAACxC,MAAM,CAACyC,WAAW,CAACD,IAAI,GAAG;gBACrCE,WAAW,IAAI,CAACzC,QAAQ,CAACyC,SAAS;gBAClCC,SAAS;YACb;QACJ;QACA,MAAM;YACFH,MAAM;YACNG,SAAS;YACTC,oBAAoB,CAACC,GAAGC;gBACpB,MAAMC,MAAM,IAAI,CAAC7C,KAAK,CAACM,UAAU,GAAG,KAAKX,QAAQiD,OAAOE,IAAI;gBAC5D,MAAMC,SAA8B;oBAChC;wBACIC,KAAK;wBACLC,OAAO;4BAACC,MAAM,GAAG,IAAI,CAACpD,MAAM,CAACkB,UAAU,GAAG6B,IAAI,CAAC,CAAC;wBAAA;wBAChDM,UAAU;oBACd;iBACH;gBACD,IAAI,IAAI,CAACnD,KAAK,CAACM,UAAU,EAAE;oBACvByC,OAAOK,IAAI,CAAC;wBACRJ,KAAK;wBACLC,OAAO;4BACHI,KAAK;4BACLH,MAAM,GAAG,IAAI,CAACpD,MAAM,CAACkB,UAAU,CAAC,cAAc,CAAC;wBACnD;oBACJ;gBACJ;gBACA,OAAO+B;YACX;QACJ;QACA,IAAI,IAAI,CAAC/C,KAAK,CAAC8B,MAAM,EACjB,MAAMlC;QACV,MAAM;YACF0C,MAAM;YACNG,SAAS;YACTD,WAAW,CAACc,IAAIC,UAAUC;gBACtB,IAAIF,GAAGG,QAAQ,CAAC,aAAY;oBACxB,MAAMC,WAAW,IAAI,CAAC3D,QAAQ,EAAEyC,UAAUc,GAAGK,KAAK,CAAC,IAAI,CAAC,EAAE,EAAEJ,UAAU;wBAClE,GAAGC,OAAO;wBACVI,YAAY;4BACR,GAAGJ,QAAQI,UAAU;4BACrBC,SAAS;wBACb;oBACJ;oBACA,OAAOH,WAAWA,SAASJ,EAAE,GAAG,aAAaA;gBACjD;YACJ;YACAQ,MAAM,CAACR;gBACH,IAAIA,GAAGG,QAAQ,CAAC,aAAY;oBACxB,OAAO,CAAC,eAAe,EAAEM,KAAKC,SAAS,CAACV,GAAGK,KAAK,CAAC,IAAI,CAAC,EAAE,GAAG;gBAC/D;YACJ;QACJ;IACA,oBAAoB;IACxB;AAEJ"}
@@ -0,0 +1,56 @@
1
+ import { build } from "vite";
2
+ import { Bundle } from "../model/bundle.js";
3
+ import { ViteBuilder } from "./vite.builder.js";
4
+ export class ViteBundler extends ViteBuilder {
5
+ async getBundleConfig() {
6
+ const config = await this.getConfig();
7
+ config.build.lib = {
8
+ entry: Object.fromEntries(this.target.entries.filter((x)=>!x.isExcluded).map((x)=>[
9
+ x.name,
10
+ x.source
11
+ ])),
12
+ fileName: (format, entryName)=>{
13
+ if (entryName == '') entryName = 'index';
14
+ return entryName + '.js';
15
+ },
16
+ formats: [
17
+ 'es'
18
+ ]
19
+ };
20
+ config.build.modulePreload = false;
21
+ return config;
22
+ }
23
+ async createBundle() {
24
+ if (!this.target.entries.length) return [];
25
+ const config = await this.getBundleConfig();
26
+ return build(config).catch((err)=>{
27
+ this.target.error(err.message);
28
+ return [];
29
+ });
30
+ }
31
+ async bundle() {
32
+ const rollupOutput = await this.createBundle();
33
+ const outputChunks = rollupOutput.flatMap((x)=>x.output);
34
+ const entryMap = new Map(this.target.entries.map((x)=>[
35
+ x.relative,
36
+ x
37
+ ]));
38
+ const outputs = outputChunks.map((x)=>{
39
+ return {
40
+ fileName: x.fileName,
41
+ entry: entryMap.get(x.fileName),
42
+ data: x.type == "asset" ? x.source : x.code,
43
+ deps: x.type == "asset" ? [] : [
44
+ ...x.imports,
45
+ ...x.dynamicImports
46
+ ].filter((x)=>!/^node:/.test(x)).map((path)=>path.replace(/^(\.\.\/)+/, '/')).map((path)=>this.resolver?.getPack(path) ?? {
47
+ pack: this.target,
48
+ path: path
49
+ })
50
+ };
51
+ });
52
+ return new Bundle(this.target, outputs);
53
+ }
54
+ }
55
+
56
+ //# sourceMappingURL=vite.bundler.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"sources":["/mnt/dev/cmmn/tools/bundlers/vite.bundler.ts"],"names":["build","Bundle","ViteBuilder","ViteBundler","getBundleConfig","config","getConfig","lib","entry","Object","fromEntries","target","entries","filter","x","isExcluded","map","name","source","fileName","format","entryName","formats","modulePreload","createBundle","length","catch","err","error","message","bundle","rollupOutput","outputChunks","flatMap","output","entryMap","Map","relative","outputs","get","data","type","code","deps","imports","dynamicImports","test","path","replace","resolver","getPack","pack"],"mappings":"AAAA,SACIA,KAAK,QAEF,OAAO;AAGd,SAAQC,MAAM,QAAe,qBAAkB;AAC/C,SAAQC,WAAW,QAAO,oBAAiB;AAE3C,OAAO,MAAMC,oBAAoBD;IAE7B,MAAME,kBAAwC;QAC1C,MAAMC,SAAS,MAAM,IAAI,CAACC,SAAS;QACnCD,OAAOL,KAAK,CAACO,GAAG,GAAG;YACfC,OAAOC,OAAOC,WAAW,CAAC,IAAI,CAACC,MAAM,CAACC,OAAO,CACxCC,MAAM,CAACC,CAAAA,IAAK,CAACA,EAAEC,UAAU,EACzBC,GAAG,CAACF,CAAAA,IAAK;oBAACA,EAAEG,IAAI;oBAAEH,EAAEI,MAAM;iBAAC;YAChCC,UAAU,CAACC,QAAQC;gBACf,IAAIA,aAAa,IAAIA,YAAY;gBACjC,OAAOA,YAAY;YACvB;YACAC,SAAS;gBAAC;aAAK;QACnB;QACAjB,OAAOL,KAAK,CAACuB,aAAa,GAAG;QAC7B,OAAOlB;IACX;IAEA,MAAcmB,eAAwC;QAClD,IAAI,CAAC,IAAI,CAACb,MAAM,CAACC,OAAO,CAACa,MAAM,EAC3B,OAAO,EAAE;QACb,MAAMpB,SAAS,MAAM,IAAI,CAACD,eAAe;QACzC,OAAOJ,MAAMK,QAAQqB,KAAK,CAACC,CAAAA;YACvB,IAAI,CAAChB,MAAM,CAACiB,KAAK,CAACD,IAAIE,OAAO;YAC7B,OAAO,EAAE;QACb;IACJ;IACA,MAAaC,SAAyB;QAClC,MAAMC,eAAe,MAAM,IAAI,CAACP,YAAY;QAC5C,MAAMQ,eAAeD,aAAaE,OAAO,CAACnB,CAAAA,IAAKA,EAAEoB,MAAM;QACvD,MAAMC,WAAW,IAAIC,IAAI,IAAI,CAACzB,MAAM,CAACC,OAAO,CAACI,GAAG,CAACF,CAAAA,IAAK;gBAACA,EAAEuB,QAAQ;gBAAEvB;aAAE;QACrE,MAAMwB,UAAUN,aAAahB,GAAG,CAACF,CAAAA;YAC7B,OAAO;gBACHK,UAAUL,EAAEK,QAAQ;gBACpBX,OAAO2B,SAASI,GAAG,CAACzB,EAAEK,QAAQ;gBAC9BqB,MAAO1B,EAAE2B,IAAI,IAAI,UAAU3B,EAAEI,MAAM,GAAGJ,EAAE4B,IAAI;gBAC5CC,MAAM7B,EAAE2B,IAAI,IAAI,UAAU,EAAE,GAAG;uBACxB3B,EAAE8B,OAAO;uBACT9B,EAAE+B,cAAc;iBACtB,CAAChC,MAAM,CAACC,CAAAA,IAAK,CAAC,SAASgC,IAAI,CAAChC,IAAIE,GAAG,CAAC+B,CAAAA,OAAQA,KAAKC,OAAO,CAAC,cAAa,MAAMhC,GAAG,CAAC+B,CAAAA,OAAQ,IAAI,CAACE,QAAQ,EAAEC,QAAQH,SAAS;wBACrHI,MAAM,IAAI,CAACxC,MAAM;wBACjBoC,MAAMA;oBACV;YACJ;QACJ;QACA,OAAO,IAAI9C,OAAO,IAAI,CAACU,MAAM,EAAE2B;IACnC;AAEJ"}
@@ -0,0 +1,100 @@
1
+ import { dirname, join } from "node:path";
2
+ import { cp, mkdir, writeFile, rm } from "node:fs/promises";
3
+ import { Monorepo } from "../model/monorepo.js";
4
+ import { Target } from "../model/target.js";
5
+ import { gzipSync, brotliCompressSync } from "node:zlib";
6
+ import { Terminal } from "../helpers/terminal.js";
7
+ export async function bundle(flags) {
8
+ const monorepo = await Monorepo.load(flags);
9
+ const term = new Terminal(monorepo.flags, monorepo.packs);
10
+ for (let pack of monorepo.packs.values()){
11
+ if (flags.workspace && (!pack.name.match(new RegExp(flags.workspace)) || pack.name == flags.workspace)) continue;
12
+ const runnner = flags.deploy ? new DeployCommandRunnner(pack, monorepo) : new BundleCommandRunner(pack, monorepo);
13
+ if (!runnner.shouldWrite()) continue;
14
+ try {
15
+ const size = await runnner.write();
16
+ term.setData(pack, {
17
+ state: 'ok',
18
+ size: size
19
+ });
20
+ } catch (e) {
21
+ pack.error(e.message + e.stack);
22
+ }
23
+ }
24
+ }
25
+ class BundleCommandRunner {
26
+ constructor(pack, monorepo){
27
+ this.pack = pack;
28
+ this.monorepo = monorepo;
29
+ }
30
+ get flags() {
31
+ return this.monorepo.flags;
32
+ }
33
+ async write() {
34
+ const bundler = this.monorepo.createBundler(this.pack);
35
+ const bundle = await bundler.bundle();
36
+ return await this.writeBundle(bundle);
37
+ }
38
+ async writeBundle(bundle) {
39
+ await rm(this.outDir, {
40
+ recursive: true,
41
+ force: true
42
+ }).catch((err)=>{
43
+ console.error(err);
44
+ });
45
+ let size = 0;
46
+ for (let file of bundle.fileNames()){
47
+ const path = join(this.outDir, file);
48
+ const data = bundle.get(file);
49
+ await this.writeFile(path, data);
50
+ size += data.length;
51
+ }
52
+ if (this.pack instanceof Target && this.pack.publicDir) await cp(this.pack.publicDir, this.outDir, {
53
+ recursive: true
54
+ }).catch(()=>{});
55
+ return size;
56
+ }
57
+ shouldWrite() {
58
+ return this.pack instanceof Target;
59
+ }
60
+ get outDir() {
61
+ return join(this.pack.rootDir, 'dist/bundle');
62
+ }
63
+ async writeFile(path, data) {
64
+ const dir = dirname(path);
65
+ await mkdir(dir, {
66
+ recursive: true
67
+ });
68
+ await writeFile(path, data);
69
+ }
70
+ }
71
+ class DeployCommandRunnner extends BundleCommandRunner {
72
+ get outRoot() {
73
+ return join(process.cwd(), this.flags.out, 'web');
74
+ }
75
+ constructor(pack, monorepo){
76
+ super(pack, monorepo);
77
+ }
78
+ async writeBundle(bundle) {
79
+ const size = await super.writeBundle(bundle);
80
+ const manifest = await bundle.getBundleJson();
81
+ await this.writeFile(join(this.outDir, 'bundle.json'), JSON.stringify(manifest, null, 2));
82
+ if (this.pack.name === '@cmmn/service-worker') {
83
+ await this.writeFile(join(this.outRoot, '_sw.js'), bundle.get('worker.js'));
84
+ }
85
+ return size;
86
+ }
87
+ shouldWrite() {
88
+ return true;
89
+ }
90
+ get outDir() {
91
+ return join(this.outRoot, this.pack.publicPath);
92
+ }
93
+ async writeFile(path, data) {
94
+ await super.writeFile(path, data);
95
+ if (this.flags.args.includes('--gzip')) await writeFile(path + '.gz', gzipSync(data));
96
+ if (this.flags.args.includes('--brotli')) await writeFile(path + '.br', brotliCompressSync(data));
97
+ }
98
+ }
99
+
100
+ //# sourceMappingURL=bundle.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"sources":["/mnt/dev/cmmn/tools/commands/bundle.ts"],"names":["dirname","join","cp","mkdir","writeFile","rm","Monorepo","Target","gzipSync","brotliCompressSync","Terminal","bundle","flags","monorepo","load","term","packs","pack","values","workspace","name","match","RegExp","runnner","deploy","DeployCommandRunnner","BundleCommandRunner","shouldWrite","size","write","setData","state","e","error","message","stack","bundler","createBundler","writeBundle","outDir","recursive","force","catch","err","console","file","fileNames","path","data","get","length","publicDir","rootDir","dir","outRoot","process","cwd","out","manifest","getBundleJson","JSON","stringify","publicPath","args","includes"],"mappings":"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"}
@@ -0,0 +1,26 @@
1
+ import { Target } from "../model/target.js";
2
+ import fs from "node:fs/promises";
3
+ import { exec } from "node:child_process";
4
+ export async function cert(...flags) {
5
+ const targets = await Target.readTargets(process.cwd(), flags);
6
+ for (let target of targets){
7
+ const https = target.https;
8
+ if (!https) continue;
9
+ const [cert, key] = await Promise.all([
10
+ fs.stat(https.cert).catch(()=>null),
11
+ fs.stat(https.key).catch(()=>null)
12
+ ]);
13
+ if (!cert || !key) {
14
+ const mkcert = await exec([
15
+ 'mkcert',
16
+ `-cert-file ${https.cert}`,
17
+ `-key-file ${https.key}`,
18
+ `"*.${https.host}"`
19
+ ].join(' '));
20
+ mkcert.stdout.pipe(process.stdout);
21
+ mkcert.stderr.pipe(process.stderr);
22
+ }
23
+ }
24
+ }
25
+
26
+ //# sourceMappingURL=cert.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"sources":["/mnt/dev/cmmn/tools/commands/cert.js"],"names":["Target","fs","exec","cert","flags","targets","readTargets","process","cwd","target","https","key","Promise","all","stat","catch","mkcert","host","join","stdout","pipe","stderr"],"mappings":"AAAA,SAAQA,MAAM,QAAO,qBAAqB;AAC1C,OAAOC,QAAQ,mBAAmB;AAClC,SAAQC,IAAI,QAAO,qBAAqB;AAExC,OAAO,eAAeC,KAAK,GAAGC,KAAK;IAC/B,MAAMC,UAAU,MAAML,OAAOM,WAAW,CAACC,QAAQC,GAAG,IAAIJ;IACxD,KAAK,IAAIK,UAAUJ,QAAS;QACxB,MAAMK,QAAQD,OAAOC,KAAK;QAC1B,IAAI,CAACA,OAAO;QACZ,MAAM,CAACP,MAAMQ,IAAI,GAAG,MAAMC,QAAQC,GAAG,CAAC;YAClCZ,GAAGa,IAAI,CAACJ,MAAMP,IAAI,EAAEY,KAAK,CAAC,IAAM;YAChCd,GAAGa,IAAI,CAACJ,MAAMC,GAAG,EAAEI,KAAK,CAAC,IAAM;SAClC;QACD,IAAI,CAACZ,QAAQ,CAACQ,KAAI;YACd,MAAMK,SAAS,MAAMd,KAAK;gBACtB;gBACA,CAAC,WAAW,EAAEQ,MAAMP,IAAI,EAAE;gBAC1B,CAAC,UAAU,EAAEO,MAAMC,GAAG,EAAE;gBACxB,CAAC,GAAG,EAAED,MAAMO,IAAI,CAAC,CAAC,CAAC;aACtB,CAACC,IAAI,CAAC;YACPF,OAAOG,MAAM,CAACC,IAAI,CAACb,QAAQY,MAAM;YACjCH,OAAOK,MAAM,CAACD,IAAI,CAACb,QAAQc,MAAM;QACrC;IACJ;AACJ"}