@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,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"}
@@ -0,0 +1,14 @@
1
+ import { getPackages } from "@manypkg/get-packages";
2
+ import fs from "node:fs/promises";
3
+ import { join } from "node:path";
4
+ export async function clean(flags) {
5
+ const packages = await getPackages(process.cwd());
6
+ for (const pkg of packages.packages){
7
+ if (flags.workspace && flags.workspace != pkg.relativeDir) continue;
8
+ await fs.rm(join(pkg.dir, 'dist'), {
9
+ recursive: true
10
+ }).catch(()=>void 0);
11
+ }
12
+ }
13
+
14
+ //# sourceMappingURL=ci.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"sources":["/mnt/dev/cmmn/tools/commands/ci.ts"],"names":["getPackages","fs","join","clean","flags","packages","process","cwd","pkg","workspace","relativeDir","rm","dir","recursive","catch"],"mappings":"AAAA,SAAQA,WAAW,QAAO,wBAAwB;AAClD,OAAOC,QAAQ,mBAAmB;AAClC,SAAQC,IAAI,QAAO,YAAY;AAG/B,OAAO,eAAeC,MAAMC,KAAY;IACpC,MAAMC,WAAW,MAAML,YAAYM,QAAQC,GAAG;IAC9C,KAAK,MAAMC,OAAOH,SAASA,QAAQ,CAAE;QACjC,IAAID,MAAMK,SAAS,IAAIL,MAAMK,SAAS,IAAID,IAAIE,WAAW,EACrD;QACJ,MAAMT,GAAGU,EAAE,CAACT,KAAKM,IAAII,GAAG,EAAE,SAAS;YAAEC,WAAW;QAAK,GAAGC,KAAK,CAAC,IAAM,KAAK;IAC7E;AACJ"}
@@ -0,0 +1,18 @@
1
+ import fs from "node:fs/promises";
2
+ import { join } from "node:path";
3
+ import { Monorepo } from "../model/monorepo.js";
4
+ export async function clean(flags) {
5
+ const monorepo = await Monorepo.load(flags);
6
+ for (const target of monorepo.packs){
7
+ target.log('remove dist');
8
+ await fs.rm(join(target.rootDir, 'dist'), {
9
+ recursive: true
10
+ }).catch(()=>void 0);
11
+ target.log('remove node_modules');
12
+ if (flags.args.includes('--modules')) await fs.rm(join(target.rootDir, 'node_modules'), {
13
+ recursive: true
14
+ }).catch(()=>void 0);
15
+ }
16
+ }
17
+
18
+ //# sourceMappingURL=clean.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"sources":["/mnt/dev/cmmn/tools/commands/clean.ts"],"names":["fs","join","Monorepo","clean","flags","monorepo","load","target","packs","log","rm","rootDir","recursive","catch","args","includes"],"mappings":"AAAA,OAAOA,QAAQ,mBAAmB;AAClC,SAAQC,IAAI,QAAO,YAAY;AAI/B,SAAQC,QAAQ,QAAO,uBAAoB;AAE3C,OAAO,eAAeC,MAAMC,KAAY;IACpC,MAAMC,WAAW,MAAMH,SAASI,IAAI,CAACF;IACrC,KAAK,MAAMG,UAAUF,SAASG,KAAK,CAAE;QACjCD,OAAOE,GAAG,CAAC;QACX,MAAMT,GAAGU,EAAE,CAACT,KAAKM,OAAOI,OAAO,EAAE,SAAS;YAAEC,WAAW;QAAK,GAAGC,KAAK,CAAC,IAAM,KAAK;QAChFN,OAAOE,GAAG,CAAC;QACX,IAAIL,MAAMU,IAAI,CAACC,QAAQ,CAAC,cACpB,MAAMf,GAAGU,EAAE,CAACT,KAAKM,OAAOI,OAAO,EAAE,iBAAiB;YAAEC,WAAW;QAAK,GAAGC,KAAK,CAAC,IAAM,KAAK;IAChG;AACJ"}
@@ -0,0 +1,60 @@
1
+ import path, { dirname, join } from "node:path";
2
+ import { transformFile } from "@swc/core";
3
+ import { Watcher } from "../helpers/watcher.js";
4
+ import events from "node:events";
5
+ import glob from "fast-glob";
6
+ import { mkdir, writeFile } from "node:fs/promises";
7
+ import { createWriteStream } from "node:fs";
8
+ import { Monorepo } from "../model/monorepo.js";
9
+ export async function compile(flags) {
10
+ const monorepo = await Monorepo.load(flags);
11
+ events.setMaxListeners(Math.max(monorepo.packs.length * 2, events.defaultMaxListeners));
12
+ const watcher = flags.watch ? new Watcher() : null;
13
+ for (const pack of monorepo.targets){
14
+ if (pack.tsConfig.include?.length === 0) continue;
15
+ await compileFiles(pack);
16
+ if (watcher) {
17
+ watcher.watchTarget(pack);
18
+ pack.addEventListener('file', (e)=>{
19
+ pack.log(`changed: ^W${e.files.join(', ')}`);
20
+ compileFiles(pack, e.files.map((f)=>path.join(pack.rootDir, f)));
21
+ });
22
+ }
23
+ }
24
+ }
25
+ const sourceMapComment = `\n//# sourceMappingURL=`;
26
+ async function compileFiles(target, filenames = null) {
27
+ const swcOptions = target.swcConfig;
28
+ const ignore = target.tsConfig.exclude.flatMap((d)=>[
29
+ `${target.rootDir}/${d}/**/*`,
30
+ `${target.rootDir}/${d}`
31
+ ]);
32
+ const files = filenames ?? await glob(target.rootDir + '/**/*.[tj]s?(x)', {
33
+ ignore
34
+ });
35
+ const time = performance.now();
36
+ const outDir = join(target.rootDir, 'dist/esm');
37
+ for (let file of files){
38
+ const result = await transformFile(file, swcOptions);
39
+ const outFile = outDir + file.substring(target.rootDir.length).replace(/\.ts(x?)$/, '.js$1');
40
+ await mkdir(dirname(outFile), {
41
+ recursive: true
42
+ });
43
+ const writer = createWriteStream(outFile, {
44
+ encoding: 'utf8'
45
+ });
46
+ // const sourceMaps = JSON.parse(result.map)
47
+ // sourceMaps.sources = sourceMaps.sources.map(s => relative(outFile, s))
48
+ // result.map = JSON.stringify(sourceMaps);
49
+ writer.write(result.code);
50
+ writer.write(sourceMapComment);
51
+ writer.write(outFile.split('/').pop() + '.map');
52
+ writer.end();
53
+ await new Promise((r)=>writer.on('finish', r));
54
+ await writeFile(outFile + '.map', result.map);
55
+ }
56
+ const duration = performance.now() - time;
57
+ target.log(`compiled for ^W${duration.toFixed(0)}ms ^w ${files.length} files`);
58
+ }
59
+
60
+ //# sourceMappingURL=compile.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"sources":["/mnt/dev/cmmn/tools/commands/compile.ts"],"names":["path","dirname","join","transformFile","Watcher","events","glob","mkdir","writeFile","createWriteStream","Monorepo","compile","flags","monorepo","load","setMaxListeners","Math","max","packs","length","defaultMaxListeners","watcher","watch","pack","targets","tsConfig","include","compileFiles","watchTarget","addEventListener","e","log","files","map","f","rootDir","sourceMapComment","target","filenames","swcOptions","swcConfig","ignore","exclude","flatMap","d","time","performance","now","outDir","file","result","outFile","substring","replace","recursive","writer","encoding","write","code","split","pop","end","Promise","r","on","duration","toFixed"],"mappings":"AAAA,OAAOA,QAAOC,OAAO,EAAEC,IAAI,QAAO,YAAY;AAC9C,SAAQC,aAAa,QAAO,YAAY;AAGxC,SAAQC,OAAO,QAAO,wBAAqB;AAC3C,OAAOC,YAAY,cAAc;AACjC,OAAOC,UAAU,YAAY;AAC7B,SAAQC,KAAK,EAAEC,SAAS,QAAO,mBAAmB;AAClD,SAAQC,iBAAiB,QAAO,UAAU;AAC1C,SAAQC,QAAQ,QAAO,uBAAoB;AAG3C,OAAO,eAAeC,QAAQC,KAAY;IACzC,MAAMC,WAAW,MAAMH,SAASI,IAAI,CAACF;IACrCP,OAAOU,eAAe,CAACC,KAAKC,GAAG,CAACJ,SAASK,KAAK,CAACC,MAAM,GAAG,GAAGd,OAAOe,mBAAmB;IACrF,MAAMC,UAAUT,MAAMU,KAAK,GAAG,IAAIlB,YAAY;IAC9C,KAAK,MAAMmB,QAAQV,SAASW,OAAO,CAAE;QACpC,IAAID,KAAKE,QAAQ,CAACC,OAAO,EAAEP,WAAW,GACrC;QACD,MAAMQ,aAAaJ;QACnB,IAAIF,SAAS;YACZA,QAAQO,WAAW,CAACL;YACpBA,KAAKM,gBAAgB,CAAC,QAAQ,CAACC;gBAC9BP,KAAKQ,GAAG,CAAC,CAAC,WAAW,EAAED,EAAEE,KAAK,CAAC9B,IAAI,CAAC,OAAO;gBAC3CyB,aAAaJ,MAAMO,EAAEE,KAAK,CAACC,GAAG,CAACC,CAAAA,IAAKlC,KAAKE,IAAI,CAACqB,KAAKY,OAAO,EAAED;YAC7D;QACD;IACD;AACD;AAEA,MAAME,mBAAmB,CAAC,uBAAuB,CAAC;AAElD,eAAeT,aAAaU,MAAc,EAAEC,YAAsB,IAAI;IACrE,MAAMC,aAAaF,OAAOG,SAAS;IACnC,MAAMC,SAASJ,OAAOZ,QAAQ,CAACiB,OAAO,CAACC,OAAO,CAACC,CAAAA,IAAK;YACnD,GAAGP,OAAOF,OAAO,CAAC,CAAC,EAAES,EAAE,KAAK,CAAC;YAC7B,GAAGP,OAAOF,OAAO,CAAC,CAAC,EAAES,GAAG;SACxB;IACD,MAAMZ,QAAQM,aAAa,MAAMhC,KAAK+B,OAAOF,OAAO,GAAG,mBAAmB;QACzEM;IACD;IACA,MAAMI,OAAOC,YAAYC,GAAG;IAC5B,MAAMC,SAAS9C,KAAKmC,OAAOF,OAAO,EAAE;IACpC,KAAK,IAAIc,QAAQjB,MAAO;QACvB,MAAMkB,SAAS,MAAM/C,cAAc8C,MAAMV;QACzC,MAAMY,UAAUH,SAASC,KAAKG,SAAS,CAACf,OAAOF,OAAO,CAAChB,MAAM,EAAEkC,OAAO,CAAC,aAAY;QACnF,MAAM9C,MAAMN,QAAQkD,UAAU;YAAEG,WAAW;QAAI;QAC/C,MAAMC,SAAS9C,kBAAkB0C,SAAS;YAAEK,UAAU;QAAO;QAC7D,4CAA4C;QAC5C,yEAAyE;QACzE,2CAA2C;QAC3CD,OAAOE,KAAK,CAACP,OAAOQ,IAAI;QACxBH,OAAOE,KAAK,CAACrB;QACbmB,OAAOE,KAAK,CAACN,QAAQQ,KAAK,CAAC,KAAKC,GAAG,KAAG;QACtCL,OAAOM,GAAG;QACV,MAAM,IAAIC,QAAcC,CAAAA,IAAKR,OAAOS,EAAE,CAAC,UAAUD;QACjD,MAAMvD,UAAU2C,UAAU,QAAQD,OAAOjB,GAAG;IAC7C;IACA,MAAMgC,WAAWnB,YAAYC,GAAG,KAAKF;IACrCR,OAAON,GAAG,CAAC,CAAC,eAAe,EAAEkC,SAASC,OAAO,CAAC,GAAG,MAAM,EAAElC,MAAMb,MAAM,CAAC,MAAM,CAAC;AAC9E"}
@@ -0,0 +1,61 @@
1
+ import { Terminal } from "../helpers/terminal.js";
2
+ import { Flags } from "../model/flags.js";
3
+ import { dirname, join } from "node:path";
4
+ import { cp, mkdir, writeFile, rm } from "node:fs/promises";
5
+ import { Monorepo } from "../model/monorepo.js";
6
+ import { createBundler } from "../bundlers/createBundler.js";
7
+ import { Target } from "../model/target.js";
8
+ import { gzipSync, brotliCompressSync } from "node:zlib";
9
+ export async function deploy(flags) {
10
+ const monorepo = await Monorepo.load(process.cwd());
11
+ const term = new Terminal(flags, monorepo.packs);
12
+ const outRoot = flags.deploy ? join(monorepo.root.rootDir, flags.out, 'web') : '';
13
+ if (flags.deploy) {
14
+ await rm(outRoot, {
15
+ recursive: true,
16
+ force: true
17
+ }).catch((err)=>{
18
+ console.error(err);
19
+ });
20
+ }
21
+ for (let pack of monorepo.packs.values()){
22
+ if (flags.workspace && !(pack.name.match(new RegExp(flags.workspace)) || pack.name == flags.workspace)) continue;
23
+ if (!flags.deploy && !(pack instanceof Target)) continue;
24
+ const outDir = flags.deploy ? join(outRoot, pack.publicPath) : join(pack.rootDir, 'dist/bundle');
25
+ const bundler = createBundler(pack, flags.deploy ? monorepo.resolver : null);
26
+ const bundle = await bundler.bundle();
27
+ let size = 0;
28
+ for (let file of bundle.fileNames()){
29
+ const path = join(outDir, file);
30
+ const dir = dirname(path);
31
+ await mkdir(dir, {
32
+ recursive: true
33
+ });
34
+ const data = bundle.get(file);
35
+ await writeFileWithSidecar(path, data);
36
+ size += data.length;
37
+ // term.term.yellow(`\t\t${file}\n`)
38
+ }
39
+ if (flags.deploy) {
40
+ const manifest = await bundle.getBundleJson();
41
+ await writeFileWithSidecar(join(outDir, 'bundle.json'), JSON.stringify(manifest, null, 2));
42
+ if (pack.name === '@cmmn/service-worker') {
43
+ await writeFileWithSidecar(join(outRoot, '_sw.js'), bundle.get('worker.js'));
44
+ }
45
+ }
46
+ term.setData(pack, {
47
+ state: 'ok',
48
+ size: size
49
+ });
50
+ if (pack instanceof Target) await cp(pack.publicDir, outDir, {
51
+ recursive: true
52
+ }).catch(()=>{});
53
+ }
54
+ }
55
+ async function writeFileWithSidecar(path, data) {
56
+ await writeFile(path, data);
57
+ if (Flags.Current.args.includes('--gzip')) await writeFile(path + '.gz', gzipSync(data));
58
+ if (Flags.Current.args.includes('--brotli')) await writeFile(path + '.br', brotliCompressSync(data));
59
+ }
60
+
61
+ //# sourceMappingURL=deploy.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"sources":["/mnt/dev/cmmn/tools/commands/deploy.ts"],"names":["Terminal","Flags","dirname","join","cp","mkdir","writeFile","rm","Monorepo","createBundler","Target","gzipSync","brotliCompressSync","deploy","flags","monorepo","load","process","cwd","term","packs","outRoot","root","rootDir","out","recursive","force","catch","err","console","error","pack","values","workspace","name","match","RegExp","outDir","publicPath","bundler","resolver","bundle","size","file","fileNames","path","dir","data","get","writeFileWithSidecar","length","manifest","getBundleJson","JSON","stringify","setData","state","publicDir","Current","args","includes"],"mappings":"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"}
@@ -0,0 +1,37 @@
1
+ import { fastify } from "fastify";
2
+ import { fastifyCaching } from "@fastify/caching";
3
+ import { fastifyCompress } from "../helpers/fastify-compress.js";
4
+ import { Monorepo } from "../model/monorepo.js";
5
+ import { DevServer } from "../servers/dev-server.js";
6
+ export async function dev(flags) {
7
+ flags.deploy = true;
8
+ const monorepo = await Monorepo.load(flags);
9
+ const devServer = new DevServer(monorepo);
10
+ const app = fastify({
11
+ rewriteUrl: devServer.rewriteUrl
12
+ });
13
+ if (flags.minify) {
14
+ fastifyCompress(app);
15
+ app.register(fastifyCaching, {
16
+ privacy: fastifyCaching.privacy.PUBLIC,
17
+ expiresIn: 86400
18
+ });
19
+ }
20
+ await devServer.register(app);
21
+ await app.listen({
22
+ host: '0.0.0.0',
23
+ port: +(monorepo.root.packageJson.config?.port ?? 9000)
24
+ });
25
+ console.log('listen:\n', app.addresses().map((x)=>`\t${x.address}:${x.port}`).join('\n'));
26
+ return app;
27
+ }
28
+ function streamToBuffer(readableStream) {
29
+ return new Promise((resolve, reject)=>{
30
+ const chunks = [];
31
+ readableStream.on('data', (chunk)=>chunks.push(chunk));
32
+ readableStream.on('end', ()=>resolve(Buffer.concat(chunks)));
33
+ readableStream.on('error', reject);
34
+ });
35
+ }
36
+
37
+ //# sourceMappingURL=dev.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"sources":["/mnt/dev/cmmn/tools/commands/dev.ts"],"names":["fastify","fastifyCaching","fastifyCompress","Monorepo","DevServer","dev","flags","deploy","monorepo","load","devServer","app","rewriteUrl","minify","register","privacy","PUBLIC","expiresIn","listen","host","port","root","packageJson","config","console","log","addresses","map","x","address","join","streamToBuffer","readableStream","Promise","resolve","reject","chunks","on","chunk","push","Buffer","concat"],"mappings":"AAAA,SAAQA,OAAO,QAAO,UAAU;AAChC,SAAQC,cAAc,QAAO,mBAAmB;AAEhD,SAAQC,eAAe,QAAO,iCAA8B;AAC5D,SAAQC,QAAQ,QAAO,uBAAoB;AAC3C,SAAQC,SAAS,QAAO,2BAAwB;AAGhD,OAAO,eAAeC,IAAIC,KAAY;IAClCA,MAAMC,MAAM,GAAG;IACf,MAAMC,WAAW,MAAML,SAASM,IAAI,CAACH;IACrC,MAAMI,YAAY,IAAIN,UAAUI;IAEhC,MAAMG,MAAWX,QAAQ;QACrBY,YAAYF,UAAUE,UAAU;IACpC;IAEA,IAAIN,MAAMO,MAAM,EAAC;QACbX,gBAAgBS;QAChBA,IAAIG,QAAQ,CAACb,gBAAuB;YAChCc,SAASd,eAAec,OAAO,CAACC,MAAM;YACtCC,WAAW;QACf;IACJ;IAEA,MAAMP,UAAUI,QAAQ,CAACH;IAEzB,MAAMA,IAAIO,MAAM,CAAC;QACbC,MAAM;QACNC,MAAM,CAAEZ,CAAAA,SAASa,IAAI,CAACC,WAAW,CAACC,MAAM,EAAEH,QAAQ,IAAG;IACzD;IAEAI,QAAQC,GAAG,CAAC,aAAad,IAAIe,SAAS,GAAGC,GAAG,CAACC,CAAAA,IAAK,CAAC,EAAE,EAAEA,EAAEC,OAAO,CAAC,CAAC,EAAED,EAAER,IAAI,EAAE,EAAEU,IAAI,CAAC;IAEnF,OAAOnB;AAEX;AACA,SAASoB,eAAeC,cAAc;IAClC,OAAO,IAAIC,QAAQ,CAACC,SAASC;QACzB,MAAMC,SAAS,EAAE;QACjBJ,eAAeK,EAAE,CAAC,QAAQ,CAACC,QAAUF,OAAOG,IAAI,CAACD;QACjDN,eAAeK,EAAE,CAAC,OAAO,IAAMH,QAAQM,OAAOC,MAAM,CAACL;QACrDJ,eAAeK,EAAE,CAAC,SAASF;IAC/B;AACJ"}
@@ -0,0 +1,44 @@
1
+ import { Target } from "../model/target.js";
2
+ import { spawn } from "node:child_process";
3
+ import { stat, link, rm } from "node:fs/promises";
4
+ import { join, resolve } from "node:path";
5
+ const rootDir = process.cwd();
6
+ /**
7
+ * @param flags
8
+ * @returns {Promise<import('@swc/types').Config>}
9
+ */ export async function format(...flags) {
10
+ const promises = [];
11
+ for (const target of (await Target.readTargets(rootDir, flags))){
12
+ if (target.tsConfig.include?.length === 0) continue;
13
+ const json = join(target.rootDir, 'biome.json');
14
+ let linked = false;
15
+ if (!await stat(json).catch(()=>false)) {
16
+ await link(resolve(import.meta.dirname, '../biome.json'), json);
17
+ linked = true;
18
+ }
19
+ const biome = spawn("npx", [
20
+ '@biomejs/biome',
21
+ 'format',
22
+ '--write'
23
+ ], {
24
+ cwd: target.rootDir
25
+ });
26
+ biome.stdout.on('data', (data)=>{
27
+ console.log(`${target.packageJson.name}: ${data}`);
28
+ });
29
+ biome.stderr.on('data', (data)=>{
30
+ console.error(`${target.packageJson.name}: ${data}`);
31
+ });
32
+ promises.push(new Promise((res)=>biome.on('close', async ()=>{
33
+ if (linked) {
34
+ await rm(json, {
35
+ force: true
36
+ });
37
+ }
38
+ res();
39
+ })));
40
+ }
41
+ await Promise.all(promises);
42
+ }
43
+
44
+ //# sourceMappingURL=format.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"sources":["/mnt/dev/cmmn/tools/commands/format.js"],"names":["Target","spawn","stat","link","rm","join","resolve","rootDir","process","cwd","format","flags","promises","target","readTargets","tsConfig","include","length","json","linked","catch","dirname","biome","stdout","on","data","console","log","packageJson","name","stderr","error","push","Promise","res","force","all"],"mappings":"AAAA,SAAQA,MAAM,QAAO,qBAAqB;AAC1C,SAAQC,KAAK,QAAO,qBAAqB;AACzC,SAAQC,IAAI,EAAEC,IAAI,EAAEC,EAAE,QAAO,mBAAmB;AAChD,SAAQC,IAAI,EAAEC,OAAO,QAAO,YAAY;AAExC,MAAMC,UAAUC,QAAQC,GAAG;AAE3B;;;CAGC,GACD,OAAO,eAAeC,OAAO,GAAGC,KAAK;IACjC,MAAMC,WAAW,EAAE;IACnB,KAAK,MAAMC,UAAU,CAAA,MAAMb,OAAOc,WAAW,CAACP,SAASI,MAAK,EAAG;QAC3D,IAAIE,OAAOE,QAAQ,CAACC,OAAO,EAAEC,WAAW,GACpC;QACJ,MAAMC,OAAOb,KAAKQ,OAAON,OAAO,EAAE;QAClC,IAAIY,SAAS;QACb,IAAI,CAAC,MAAMjB,KAAKgB,MAAME,KAAK,CAAC,IAAM,QAAO;YACrC,MAAMjB,KAAKG,QAAQ,YAAYe,OAAO,EAAE,kBAAkBH;YAC1DC,SAAS;QACb;QACA,MAAMG,QAAQrB,MAAM,OAAO;YAAC;YAAkB;YAAU;SAAU,EAAC;YAC/DQ,KAAKI,OAAON,OAAO;QACvB;QACAe,MAAMC,MAAM,CAACC,EAAE,CAAC,QAAQC,CAAAA;YACpBC,QAAQC,GAAG,CAAC,GAAGd,OAAOe,WAAW,CAACC,IAAI,CAAC,EAAE,EAAEJ,MAAM;QACrD;QACAH,MAAMQ,MAAM,CAACN,EAAE,CAAC,QAAQC,CAAAA;YACpBC,QAAQK,KAAK,CAAC,GAAGlB,OAAOe,WAAW,CAACC,IAAI,CAAC,EAAE,EAAEJ,MAAM;QACvD;QACAb,SAASoB,IAAI,CAAC,IAAIC,QAAQC,CAAAA,MAAOZ,MAAME,EAAE,CAAC,SAAS;gBAC/C,IAAIL,QAAO;oBACP,MAAMf,GAAGc,MAAM;wBAACiB,OAAO;oBAAI;gBAC/B;gBACAD;YACJ;IACJ;IACA,MAAMD,QAAQG,GAAG,CAACxB;AACtB"}
@@ -0,0 +1,36 @@
1
+ import fs from "node:fs/promises";
2
+ import path from "path";
3
+ import { execSync } from "child_process";
4
+ async function readFiles() {
5
+ return Promise.all([
6
+ fs.readFile(path.join(import.meta.dirname, './gen/template.ts.tpl'), {
7
+ encoding: 'utf8'
8
+ }),
9
+ fs.readFile(path.join(import.meta.dirname, './gen/component.tsx.tpl'), {
10
+ encoding: 'utf8'
11
+ }),
12
+ fs.readFile(path.join(import.meta.dirname, './gen/style.less.tpl'), {
13
+ encoding: 'utf8'
14
+ })
15
+ ]);
16
+ }
17
+ export async function gen(name, directory, nested = false) {
18
+ const Name = name.replace(/^./, (c)=>c.toUpperCase());
19
+ name = Name.replace(/[A-Z]/g, (c, i)=>(i ? '-' : '') + c.toLowerCase());
20
+ process.chdir(directory);
21
+ if (nested) {
22
+ await fs.mkdir(name);
23
+ process.chdir(name);
24
+ }
25
+ const [templateTpl, componentTpl, styleTpl] = await readFiles();
26
+ await Promise.all([
27
+ fs.writeFile(name + '.component.tsx', componentTpl.replace(/\$Name\$/g, Name).replace(/\$name\$/g, name), 'utf8'),
28
+ fs.writeFile(name + '.template.ts', templateTpl.replace(/\$Name\$/g, Name).replace(/\$name\$/g, name), 'utf8'),
29
+ fs.writeFile(name + '.style.less', styleTpl.replace(/\$Name\$/g, Name).replace(/\$name\$/g, name), 'utf8')
30
+ ]);
31
+ execSync(`git add ${name}.component.ts`);
32
+ execSync(`git add ${name}.template.ts`);
33
+ execSync(`git add ${name}.style.css`);
34
+ }
35
+
36
+ //# sourceMappingURL=gen.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"sources":["/mnt/dev/cmmn/tools/commands/gen.js"],"names":["fs","path","execSync","readFiles","Promise","all","readFile","join","dirname","encoding","gen","name","directory","nested","Name","replace","c","toUpperCase","i","toLowerCase","process","chdir","mkdir","templateTpl","componentTpl","styleTpl","writeFile"],"mappings":"AAAA,OAAOA,QAAQ,mBAAc;AAC7B,OAAOC,UAAU,OAAO;AACxB,SAAQC,QAAQ,QAAO,gBAAgB;AAEvC,eAAeC;IACX,OAAOC,QAAQC,GAAG,CAAC;QACfL,GAAGM,QAAQ,CAACL,KAAKM,IAAI,CAAC,YAAYC,OAAO,EAAE,0BAA0B;YAACC,UAAU;QAAM;QACtFT,GAAGM,QAAQ,CAACL,KAAKM,IAAI,CAAC,YAAYC,OAAO,EAAE,4BAA4B;YAACC,UAAU;QAAM;QACxFT,GAAGM,QAAQ,CAACL,KAAKM,IAAI,CAAC,YAAYC,OAAO,EAAE,yBAAyB;YAACC,UAAU;QAAM;KACxF;AACL;AAGA,OAAO,eAAeC,IAAIC,IAAI,EAAEC,SAAS,EAAEC,SAAS,KAAK;IACrD,MAAMC,OAAOH,KAAKI,OAAO,CAAC,MAAMC,CAAAA,IAAKA,EAAEC,WAAW;IAClDN,OAAOG,KAAKC,OAAO,CAAC,UAAU,CAACC,GAAGE,IAAM,AAACA,CAAAA,IAAI,MAAM,EAAC,IAAKF,EAAEG,WAAW;IACtEC,QAAQC,KAAK,CAACT;IACd,IAAIC,QAAQ;QACR,MAAMb,GAAGsB,KAAK,CAACX;QACfS,QAAQC,KAAK,CAACV;IAClB;IACA,MAAM,CAACY,aAAaC,cAAcC,SAAS,GAAG,MAAMtB;IACpD,MAAMC,QAAQC,GAAG,CAAC;QACdL,GAAG0B,SAAS,CAACf,OAAO,kBAAkBa,aAAaT,OAAO,CAAC,aAAaD,MAAMC,OAAO,CAAC,aAAaJ,OAAO;QAC1GX,GAAG0B,SAAS,CAACf,OAAO,gBAAgBY,YAAYR,OAAO,CAAC,aAAaD,MAAMC,OAAO,CAAC,aAAaJ,OAAO;QACvGX,GAAG0B,SAAS,CAACf,OAAO,eAAec,SAASV,OAAO,CAAC,aAAaD,MAAMC,OAAO,CAAC,aAAaJ,OAAO;KACtG;IACDT,SAAS,CAAC,QAAQ,EAAES,KAAK,aAAa,CAAC;IACvCT,SAAS,CAAC,QAAQ,EAAES,KAAK,YAAY,CAAC;IACtCT,SAAS,CAAC,QAAQ,EAAES,KAAK,UAAU,CAAC;AACxC"}
@@ -0,0 +1,21 @@
1
+ import { Target } from "../model/target.js";
2
+ import fs from "node:fs/promises";
3
+ export async function host(...flags) {
4
+ const targets = await Target.readTargets(process.cwd(), flags);
5
+ const content = await fs.readFile('/etc/hosts', {
6
+ encoding: 'utf-8'
7
+ });
8
+ let lines = [];
9
+ for (let target of targets){
10
+ const host = target.packageJson.config?.host;
11
+ if (!host) continue;
12
+ const line = `127.0.0.1 ${host}`;
13
+ if (!content.includes(line)) lines.push(line);
14
+ }
15
+ if (lines.length) {
16
+ if (content.substring(content.lastIndexOf('\n')).trim().length) console.log();
17
+ console.log(lines.join('\n'));
18
+ }
19
+ }
20
+
21
+ //# sourceMappingURL=host.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"sources":["/mnt/dev/cmmn/tools/commands/host.js"],"names":["Target","fs","host","flags","targets","readTargets","process","cwd","content","readFile","encoding","lines","target","packageJson","config","line","includes","push","length","substring","lastIndexOf","trim","console","log","join"],"mappings":"AAAA,SAAQA,MAAM,QAAO,qBAAqB;AAC1C,OAAOC,QAAQ,mBAAmB;AAElC,OAAO,eAAeC,KAAK,GAAGC,KAAK;IAC/B,MAAMC,UAAU,MAAMJ,OAAOK,WAAW,CAACC,QAAQC,GAAG,IAAIJ;IACxD,MAAMK,UAAU,MAAMP,GAAGQ,QAAQ,CAAC,cAAc;QAACC,UAAU;IAAO;IAClE,IAAIC,QAAQ,EAAE;IACd,KAAK,IAAIC,UAAUR,QAAS;QACxB,MAAMF,OAAOU,OAAOC,WAAW,CAACC,MAAM,EAAEZ;QACxC,IAAI,CAACA,MAAM;QACX,MAAMa,OAAO,CAAC,UAAU,EAAEb,MAAM;QAChC,IAAI,CAACM,QAAQQ,QAAQ,CAACD,OAClBJ,MAAMM,IAAI,CAACF;IACnB;IACA,IAAIJ,MAAMO,MAAM,EAAE;QACd,IAAIV,QAAQW,SAAS,CAACX,QAAQY,WAAW,CAAC,OAAOC,IAAI,GAAGH,MAAM,EAAEI,QAAQC,GAAG;QAC3ED,QAAQC,GAAG,CAACZ,MAAMa,IAAI,CAAC;IAC3B;AACJ"}
@@ -0,0 +1,12 @@
1
+ export { compile } from "./compile.ts";
2
+ export { typings } from "./typings.ts";
3
+ export { gen } from "./gen.js";
4
+ export { bundle } from "./bundle.ts";
5
+ export { dev } from "./dev.ts";
6
+ export { publish } from "./publish.ts";
7
+ export { format } from "./format.js";
8
+ export { lint } from "./lint.js";
9
+ export { version } from "./version.js";
10
+ export { host } from "./host.js";
11
+
12
+ //# sourceMappingURL=index.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"sources":["/mnt/dev/cmmn/tools/commands/index.js"],"names":["compile","typings","gen","bundle","dev","publish","format","lint","version","host"],"mappings":"AAAA,SAAQA,OAAO,QAAO,eAAe;AACrC,SAAQC,OAAO,QAAO,eAAe;AACrC,SAAQC,GAAG,QAAO,WAAW;AAC7B,SAAQC,MAAM,QAAO,cAAc;AACnC,SAAQC,GAAG,QAAO,WAAW;AAC7B,SAAQC,OAAO,QAAO,eAAe;AACrC,SAAQC,MAAM,QAAO,cAAc;AACnC,SAAQC,IAAI,QAAO,YAAY;AAC/B,SAAQC,OAAO,QAAO,eAAe;AACrC,SAAQC,IAAI,QAAO,YAAY"}
@@ -0,0 +1,45 @@
1
+ import { Target } from "../model/target.js";
2
+ import { spawn } from "node:child_process";
3
+ import { stat, link, rm } from "node:fs/promises";
4
+ import { join, resolve } from "node:path";
5
+ const rootDir = process.cwd();
6
+ /**
7
+ * @param flags {import("../model/flags.ts").Flags}
8
+ * @returns {Promise<import('@swc/types').Config>}
9
+ */ export async function lint(flags) {
10
+ const promises = [];
11
+ for (const target of (await Target.readTargets(rootDir, flags))){
12
+ if (target.tsConfig.include?.length === 0) continue;
13
+ const json = join(target.rootDir, 'biome.json');
14
+ let linked = false;
15
+ if (!await stat(json).catch(()=>false)) {
16
+ await link(resolve(import.meta.dirname, '../biome.json'), json);
17
+ linked = true;
18
+ }
19
+ const biome = spawn("npx", [
20
+ '@biomejs/biome',
21
+ 'lint',
22
+ '--write',
23
+ flags.unsafe ? '--unsafe' : ''
24
+ ], {
25
+ cwd: target.rootDir
26
+ });
27
+ biome.stdout.on('data', (data)=>{
28
+ console.log(`${target.packageJson.name}: ${data}`);
29
+ });
30
+ biome.stderr.on('data', (data)=>{
31
+ console.error(data.toString());
32
+ });
33
+ promises.push(new Promise((res)=>biome.on('close', async ()=>{
34
+ if (linked) {
35
+ await rm(json, {
36
+ force: true
37
+ });
38
+ }
39
+ res();
40
+ })));
41
+ }
42
+ await Promise.all(promises);
43
+ }
44
+
45
+ //# sourceMappingURL=lint.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"sources":["/mnt/dev/cmmn/tools/commands/lint.js"],"names":["Target","spawn","stat","link","rm","join","resolve","rootDir","process","cwd","lint","flags","promises","target","readTargets","tsConfig","include","length","json","linked","catch","dirname","biome","unsafe","stdout","on","data","console","log","packageJson","name","stderr","error","toString","push","Promise","res","force","all"],"mappings":"AAAA,SAAQA,MAAM,QAAO,qBAAqB;AAC1C,SAAQC,KAAK,QAAO,qBAAqB;AACzC,SAAQC,IAAI,EAAEC,IAAI,EAAEC,EAAE,QAAO,mBAAmB;AAChD,SAAQC,IAAI,EAAEC,OAAO,QAAO,YAAY;AAExC,MAAMC,UAAUC,QAAQC,GAAG;AAE3B;;;CAGC,GACD,OAAO,eAAeC,KAAKC,KAAK;IAC5B,MAAMC,WAAW,EAAE;IACnB,KAAK,MAAMC,UAAU,CAAA,MAAMb,OAAOc,WAAW,CAACP,SAASI,MAAK,EAAG;QAC3D,IAAIE,OAAOE,QAAQ,CAACC,OAAO,EAAEC,WAAW,GACpC;QACJ,MAAMC,OAAOb,KAAKQ,OAAON,OAAO,EAAE;QAClC,IAAIY,SAAS;QACb,IAAI,CAAC,MAAMjB,KAAKgB,MAAME,KAAK,CAAC,IAAM,QAAO;YACrC,MAAMjB,KAAKG,QAAQ,YAAYe,OAAO,EAAE,kBAAkBH;YAC1DC,SAAS;QACb;QACA,MAAMG,QAAQrB,MAAM,OAAO;YAAC;YAAkB;YAAQ;YAAWU,MAAMY,MAAM,GAAG,aAAa;SAAG,EAAC;YAC7Fd,KAAKI,OAAON,OAAO;QACvB;QACAe,MAAME,MAAM,CAACC,EAAE,CAAC,QAAQC,CAAAA;YACpBC,QAAQC,GAAG,CAAC,GAAGf,OAAOgB,WAAW,CAACC,IAAI,CAAC,EAAE,EAAEJ,MAAM;QACrD;QACAJ,MAAMS,MAAM,CAACN,EAAE,CAAC,QAAQC,CAAAA;YACpBC,QAAQK,KAAK,CAACN,KAAKO,QAAQ;QAC/B;QACArB,SAASsB,IAAI,CAAC,IAAIC,QAAQC,CAAAA,MAAOd,MAAMG,EAAE,CAAC,SAAS;gBAC/C,IAAIN,QAAO;oBACP,MAAMf,GAAGc,MAAM;wBAACmB,OAAO;oBAAI;gBAC/B;gBACAD;YACJ;IACJ;IACA,MAAMD,QAAQG,GAAG,CAAC1B;AACtB"}
@@ -0,0 +1,62 @@
1
+ import { Target } from "../model/target.js";
2
+ import fs from "node:fs/promises";
3
+ import { join } from "node:path";
4
+ import { spawn } from "node:child_process";
5
+ /**
6
+ * @param flags {import("../model/flags.ts").Flags}
7
+ * @returns {Promise<void>}
8
+ */ export async function nginx(flags) {
9
+ const targets = await Target.readTargets(process.cwd(), flags);
10
+ const outDir = flags.get('out') ?? '/etc/nginx/conf.d';
11
+ const proxy = flags.get('proxy') ?? '127.0.0.1';
12
+ for (let target of targets){
13
+ const host = target.packageJson.config?.host;
14
+ if (!host) continue;
15
+ const confFile = join(outDir, `${host}.conf`);
16
+ // if (await fs.stat(confFile).catch(() => null))
17
+ // continue;
18
+ const content = nginxTemplate('/_/' + target.packageJson.name, host, target.packageJson.config?.port ?? 9000, proxy);
19
+ await fs.writeFile(confFile, content);
20
+ const cert = join(outDir, `${host}.pem`);
21
+ const key = join(outDir, `${host}-key.pem`);
22
+ await spawn('mkcert', [
23
+ `-cert-file`,
24
+ cert,
25
+ `-key-file`,
26
+ key,
27
+ `${host}`
28
+ ], {
29
+ stdio: 'inherit'
30
+ });
31
+ }
32
+ }
33
+ export const nginxTemplate = (path, host, port, proxy)=>`
34
+ map $http_upgrade $connection_upgrade {
35
+ default upgrade;
36
+ '' close;
37
+ }
38
+
39
+ server {
40
+ listen 443 ssl http2;
41
+ ssl_certificate default/${host}.pem;
42
+ ssl_certificate_key default/${host}-key.pem;
43
+ server_name ${host};
44
+ location /_ {
45
+ proxy_set_header Host $host;
46
+ proxy_set_header X-Forwarded-For $remote_addr;
47
+ proxy_pass http://${proxy}:${port};
48
+ proxy_set_header Upgrade $http_upgrade;
49
+ proxy_set_header Connection "upgrade";
50
+ }
51
+ location / {
52
+ rewrite ^(.*) ${path}$1 break;
53
+ proxy_set_header Host $host;
54
+ proxy_set_header X-Forwarded-For $remote_addr;
55
+ proxy_pass http://${proxy}:${port};
56
+ proxy_set_header Upgrade $http_upgrade;
57
+ proxy_set_header Connection "upgrade";
58
+ }
59
+ }
60
+ `;
61
+
62
+ //# sourceMappingURL=nginx.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"sources":["/mnt/dev/cmmn/tools/commands/nginx.js"],"names":["Target","fs","join","spawn","nginx","flags","targets","readTargets","process","cwd","outDir","get","proxy","target","host","packageJson","config","confFile","content","nginxTemplate","name","port","writeFile","cert","key","stdio","path"],"mappings":"AAAA,SAAQA,MAAM,QAAO,qBAAqB;AAC1C,OAAOC,QAAQ,mBAAmB;AAClC,SAAQC,IAAI,QAAO,YAAY;AAC/B,SAAcC,KAAK,QAAO,qBAAqB;AAE/C;;;CAGC,GACD,OAAO,eAAeC,MAAMC,KAAK;IAC7B,MAAMC,UAAU,MAAMN,OAAOO,WAAW,CAACC,QAAQC,GAAG,IAAIJ;IACxD,MAAMK,SAASL,MAAMM,GAAG,CAAC,UAAU;IACnC,MAAMC,QAAQP,MAAMM,GAAG,CAAC,YAAY;IACpC,KAAK,IAAIE,UAAUP,QAAS;QACxB,MAAMQ,OAAOD,OAAOE,WAAW,CAACC,MAAM,EAAEF;QACxC,IAAI,CAACA,MAAM;QACX,MAAMG,WAAWf,KAAKQ,QAAQ,GAAGI,KAAK,KAAK,CAAC;QAC5C,iDAAiD;QACjD,gBAAgB;QAChB,MAAMI,UAAUC,cAAc,QAAMN,OAAOE,WAAW,CAACK,IAAI,EAAEN,MAAMD,OAAOE,WAAW,CAACC,MAAM,EAAEK,QAAQ,MAAMT;QAC5G,MAAMX,GAAGqB,SAAS,CAACL,UAAUC;QAC7B,MAAMK,OAAOrB,KAAKQ,QAAQ,GAAGI,KAAK,IAAI,CAAC;QACvC,MAAMU,MAAMtB,KAAKQ,QAAQ,GAAGI,KAAK,QAAQ,CAAC;QAC1C,MAAMX,MAAM,UAAU;YAClB,CAAC,UAAU,CAAC;YAAEoB;YACd,CAAC,SAAS,CAAC;YAAEC;YACb,GAAGV,MAAM;SACZ,EAAE;YACCW,OAAO;QACX;IACJ;AACJ;AAEA,OAAO,MAAMN,gBAAgB,CAACO,MAAMZ,MAAMO,MAAMT,QAAU,CAAC;;;;;;;;oCAQvB,EAAEE,KAAK;oCACP,EAAEA,KAAK;oBACvB,EAAEA,KAAK;;;;8BAIG,EAAEF,MAAM,CAAC,EAAES,KAAK;;;;;0BAKpB,EAAEK,KAAK;;;8BAGH,EAAEd,MAAM,CAAC,EAAES,KAAK;;;;;AAK9C,CAAC,CAAC"}
@@ -0,0 +1,37 @@
1
+ import { spawn } from "node:child_process";
2
+ import fs from "node:fs/promises";
3
+ import { join } from "node:path";
4
+ import { Monorepo } from "../model/monorepo.js";
5
+ export async function publish(flags) {
6
+ const monorepo = await Monorepo.load(flags);
7
+ for (const target of monorepo.targets){
8
+ if (target.packageJson.private) continue;
9
+ const content = await target.getPublishPackageJson();
10
+ if (target.tsConfig) {
11
+ await fs.rename(join(target.rootDir, './package.json'), join(target.rootDir, './.package.json'));
12
+ await fs.writeFile(join(target.rootDir, 'package.json'), content, 'utf-8');
13
+ }
14
+ const cp = await spawn("corepack", "yarn npm publish".split(' '), {
15
+ cwd: target.rootDir,
16
+ stdio: "pipe",
17
+ detached: true
18
+ });
19
+ let error = false;
20
+ cp.stdout.on('data', (data)=>{
21
+ const str = data.toString();
22
+ if (str.startsWith('➤ YN0000:')) return;
23
+ target.error(data);
24
+ error = true;
25
+ });
26
+ await new Promise((r)=>cp.stdout.on('close', r));
27
+ if (!error) {
28
+ target.log(`published`);
29
+ }
30
+ if (target.tsConfig) {
31
+ await fs.rm(join(target.rootDir, './package.json'));
32
+ await fs.rename(join(target.rootDir, './.package.json'), join(target.rootDir, './package.json'));
33
+ }
34
+ }
35
+ }
36
+
37
+ //# sourceMappingURL=publish.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"sources":["/mnt/dev/cmmn/tools/commands/publish.ts"],"names":["spawn","fs","join","Monorepo","publish","flags","monorepo","load","target","targets","packageJson","private","content","getPublishPackageJson","tsConfig","rename","rootDir","writeFile","cp","split","cwd","stdio","detached","error","stdout","on","data","str","toString","startsWith","Promise","r","log","rm"],"mappings":"AAAA,SAAkBA,KAAK,QAAO,qBAAqB;AAGnD,OAAOC,QAAQ,mBAAmB;AAClC,SAAQC,IAAI,QAAgB,YAAY;AAGxC,SAAQC,QAAQ,QAAO,uBAAoB;AAE3C,OAAO,eAAeC,QAAQC,KAAY;IACtC,MAAMC,WAAW,MAAMH,SAASI,IAAI,CAACF;IACrC,KAAK,MAAMG,UAAUF,SAASG,OAAO,CAAE;QACnC,IAAID,OAAOE,WAAW,CAACC,OAAO,EAC1B;QACJ,MAAMC,UAAU,MAAMJ,OAAOK,qBAAqB;QAClD,IAAIL,OAAOM,QAAQ,EAAE;YACjB,MAAMb,GAAGc,MAAM,CACXb,KAAKM,OAAOQ,OAAO,EAAE,mBACrBd,KAAKM,OAAOQ,OAAO,EAAE;YAGzB,MAAMf,GAAGgB,SAAS,CACdf,KAAKM,OAAOQ,OAAO,EAAE,iBACrBJ,SACA;QAER;QACA,MAAMM,KAAK,MAAMlB,MAAM,YAAY,mBAAmBmB,KAAK,CAAC,MAAM;YAC9DC,KAAKZ,OAAOQ,OAAO;YACnBK,OAAO;YACPC,UAAU;QACd;QACA,IAAIC,QAAQ;QACZL,GAAGM,MAAM,CAACC,EAAE,CAAC,QAAQC,CAAAA;YACjB,MAAMC,MAAMD,KAAKE,QAAQ;YACzB,IAAID,IAAIE,UAAU,CAAC,cAAc;YACjCrB,OAAOe,KAAK,CAACG;YACbH,QAAQ;QACZ;QACA,MAAM,IAAIO,QAAQC,CAAAA,IAAKb,GAAGM,MAAM,CAACC,EAAE,CAAC,SAASM;QAC7C,IAAI,CAACR,OAAO;YACRf,OAAOwB,GAAG,CAAC,CAAC,SAAS,CAAC;QAC1B;QACA,IAAIxB,OAAOM,QAAQ,EAAE;YACjB,MAAMb,GAAGgC,EAAE,CAAC/B,KAAKM,OAAOQ,OAAO,EAAE;YACjC,MAAMf,GAAGc,MAAM,CACXb,KAAKM,OAAOQ,OAAO,EAAE,oBACrBd,KAAKM,OAAOQ,OAAO,EAAE;QAE7B;IACJ;AACJ"}
@@ -0,0 +1,66 @@
1
+ import ts from "typescript";
2
+ import { resolve } from "node:path";
3
+ import fs from "node:fs";
4
+ import events from "node:events";
5
+ import { Watcher } from "../helpers/watcher.js";
6
+ import { Monorepo } from "../model/monorepo.js";
7
+ export async function typings(flags) {
8
+ const monorepo = await Monorepo.load(flags);
9
+ events.setMaxListeners(Math.max(monorepo.targets.length * 2, events.defaultMaxListeners));
10
+ const watcher = flags.watch ? new Watcher() : null;
11
+ for (const target of monorepo.targets){
12
+ if (target.tsConfig.include?.length === 0) continue;
13
+ generateTypings(target);
14
+ if (watcher) {
15
+ watcher.watchTarget(target);
16
+ target.addEventListener('change', (e)=>{
17
+ target.log(`changed: ^W${e.files.join(', ')}`);
18
+ generateTypings(target);
19
+ });
20
+ }
21
+ }
22
+ }
23
+ export function generateTypings(target) {
24
+ const start = performance.now();
25
+ const host = ts.createSolutionBuilderWithWatchHost(ts.sys, createProgram);
26
+ host.useCaseSensitiveFileNames();
27
+ const builder = ts.createSolutionBuilder(host, [
28
+ target.rootDir
29
+ ], {
30
+ incremental: false,
31
+ dry: false,
32
+ assumeChangesOnlyAffectDirectDependencies: true,
33
+ declaration: true,
34
+ declarationMap: false,
35
+ emitDeclarationOnly: true,
36
+ force: true
37
+ });
38
+ builder.clean(target.rootDir);
39
+ builder.build(target.rootDir, null);
40
+ const duration = performance.now() - start;
41
+ target.log(`typings for ^W${duration.toFixed()}ms.`);
42
+ }
43
+ const cleanedBaseDirs = new Set();
44
+ function createProgram(rootNames, options, host, oldProgram, configFileParsingDiagnostics, projectReferences) {
45
+ options.outDir = resolve(options.configFilePath, options.outDir ?? '../dist/esm');
46
+ options.declaration = true;
47
+ options.declarationDir = resolve(options.configFilePath, options.declarationDir ?? '../dist/typings');
48
+ options.baseUrl = resolve(options.configFilePath, options.baseUrl ?? '.');
49
+ options.tsBuildInfoFile = resolve(options.configFilePath, options.tsBuildInfoFile ?? '../dist/ts.buildinfo');
50
+ options.emitDeclarationsOnly = true;
51
+ // options.excludeDirectories.baseUrl = options.baseUrl;
52
+ // options.includeDirectories.baseUrl = options.baseUrl;
53
+ if (!cleanedBaseDirs.has(options.baseUrl)) {
54
+ fs.rmSync(options.declarationDir, {
55
+ recursive: true,
56
+ force: true
57
+ });
58
+ fs.rmSync(options.tsBuildInfoFile, {
59
+ force: true
60
+ });
61
+ cleanedBaseDirs.add(options.baseUrl);
62
+ }
63
+ return ts.createEmitAndSemanticDiagnosticsBuilderProgram(rootNames, options, host, oldProgram, configFileParsingDiagnostics, projectReferences);
64
+ }
65
+
66
+ //# sourceMappingURL=typings.js.map