@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,72 @@
1
+ import { TargetServer } from "./targetServer.js";
2
+ import { spawn } from "node:child_process";
3
+ import { ChangeEvent } from "../model/target.js";
4
+ import { Watcher } from "../helpers/watcher.js";
5
+ export class TargetRunner extends TargetServer {
6
+ static{
7
+ this.port = 9010;
8
+ }
9
+ /**
10
+ * @param app {import("fastify/types/instance.js").FastifyInstance}
11
+ * @returns {Promise<void>}
12
+ */ async register(app) {
13
+ await app.register(await import("@fastify/http-proxy"), {
14
+ upstream: `http://127.0.0.1:${this.port}`,
15
+ websocket: true,
16
+ wsUpstream: `ws://127.0.0.1:${this.port}`,
17
+ logLevel: 'verbose',
18
+ prefix: this.base,
19
+ rewritePrefix: '',
20
+ wsHooks: {
21
+ onConnect: async (context, source, target)=>{
22
+ await (this.cp ??= this.runServer());
23
+ }
24
+ }
25
+ });
26
+ this.target.log(`proxy to ${this.port}`);
27
+ app.addHook('onRequest', async (req)=>{
28
+ if (!req.url.startsWith(this.base)) return;
29
+ await (this.cp ??= this.runServer());
30
+ });
31
+ // await this.initProxy();
32
+ this.target.addEventListener('change', async (e)=>{
33
+ const cp = await this.cp;
34
+ if (!cp) return;
35
+ if (cp.connected) cp.disconnect();
36
+ cp.kill();
37
+ this.target.log(`Stopping due to change...`);
38
+ this.cp = null;
39
+ });
40
+ this.watcher.watchTarget(this.target);
41
+ this.target.addEventListener('file', (e)=>{
42
+ this.target.dispatchEvent(new ChangeEvent({
43
+ type: 'full-reload',
44
+ triggeredBy: e.files
45
+ }, this.target.packageJson.name));
46
+ });
47
+ }
48
+ async runServer() {
49
+ this.target.log('starting...');
50
+ const [command, ...params] = this.target.packageJson.scripts.run// .replace('@cmmn/tools/import', '@cmmn/tools/import-dev')
51
+ .split(' ');
52
+ const cp = spawn(command, params, {
53
+ env: {
54
+ ...process.env,
55
+ PORT: this.port
56
+ },
57
+ cwd: this.target.rootDir,
58
+ stdio: 'pipe'
59
+ });
60
+ cp.stderr.pipe(process.stderr);
61
+ cp.stdout.pipe(process.stdout);
62
+ await new Promise((res)=>cp.stdout.on('data', (e)=>{
63
+ if (e?.includes(`http://127.0.0.1:${this.port}`)) res();
64
+ }));
65
+ return cp;
66
+ }
67
+ constructor(...args){
68
+ super(...args), this.port = TargetRunner.port++, this.watcher = new Watcher();
69
+ }
70
+ }
71
+
72
+ //# sourceMappingURL=target-runnner.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"sources":["/mnt/dev/cmmn/tools/dev-server/target-runnner.js"],"names":["TargetServer","spawn","ChangeEvent","Watcher","TargetRunner","port","register","app","upstream","websocket","wsUpstream","logLevel","prefix","base","rewritePrefix","wsHooks","onConnect","context","source","target","cp","runServer","log","addHook","req","url","startsWith","addEventListener","e","connected","disconnect","kill","watcher","watchTarget","dispatchEvent","type","triggeredBy","files","packageJson","name","command","params","scripts","run","split","env","process","PORT","cwd","rootDir","stdio","stderr","pipe","stdout","Promise","res","on","includes"],"mappings":"AAAA,SAAQA,YAAY,QAAO,oBAAoB;AAC/C,SAAcC,KAAK,QAAO,qBAAqB;AAC/C,SAAQC,WAAW,QAAO,qBAAqB;AAC/C,SAAQC,OAAO,QAAO,wBAAwB;AAE9C,OAAO,MAAMC,qBAAqBJ;;aACvBK,OAAO;;IAOd;;;KAGC,GACD,MAAMC,SAASC,GAAG,EAAE;QAChB,MAAMA,IAAID,QAAQ,CAAC,MAAM,MAAM,CAAC,wBAAwB;YACpDE,UAAU,CAAC,iBAAiB,EAAE,IAAI,CAACH,IAAI,EAAE;YACzCI,WAAW;YACXC,YAAY,CAAC,eAAe,EAAE,IAAI,CAACL,IAAI,EAAE;YACzCM,UAAU;YACVC,QAAQ,IAAI,CAACC,IAAI;YACjBC,eAAe;YACfC,SAAS;gBACLC,WAAW,OAAOC,SAASC,QAAQC;oBAC/B,MAAO,CAAA,IAAI,CAACC,EAAE,KAAK,IAAI,CAACC,SAAS,EAAC;gBACtC;YACJ;QACJ;QACA,IAAI,CAACF,MAAM,CAACG,GAAG,CAAC,CAAC,SAAS,EAAE,IAAI,CAACjB,IAAI,EAAE;QACvCE,IAAIgB,OAAO,CAAC,aAAa,OAAOC;YAC5B,IAAI,CAACA,IAAIC,GAAG,CAACC,UAAU,CAAC,IAAI,CAACb,IAAI,GAAG;YACpC,MAAO,CAAA,IAAI,CAACO,EAAE,KAAK,IAAI,CAACC,SAAS,EAAC;QACtC;QACA,0BAA0B;QAE1B,IAAI,CAACF,MAAM,CAACQ,gBAAgB,CAAC,UAAU,OAAMC;YACzC,MAAMR,KAAK,MAAM,IAAI,CAACA,EAAE;YACxB,IAAI,CAACA,IAAI;YACT,IAAIA,GAAGS,SAAS,EACZT,GAAGU,UAAU;YACjBV,GAAGW,IAAI;YACP,IAAI,CAACZ,MAAM,CAACG,GAAG,CAAC,CAAC,yBAAyB,CAAC;YAC3C,IAAI,CAACF,EAAE,GAAG;QACd;QACA,IAAI,CAACY,OAAO,CAACC,WAAW,CAAC,IAAI,CAACd,MAAM;QACpC,IAAI,CAACA,MAAM,CAACQ,gBAAgB,CAAC,QAAQC,CAAAA;YACjC,IAAI,CAACT,MAAM,CAACe,aAAa,CAAC,IAAIhC,YAAY;gBACtCiC,MAAM;gBACNC,aAAaR,EAAES,KAAK;YACxB,GAAG,IAAI,CAAClB,MAAM,CAACmB,WAAW,CAACC,IAAI;QACnC;IACJ;IAGA,MAAMlB,YAAY;QACd,IAAI,CAACF,MAAM,CAACG,GAAG,CAAC;QAEhB,MAAM,CAACkB,SAAS,GAAGC,OAAO,GAAG,IAAI,CAACtB,MAAM,CAACmB,WAAW,CAACI,OAAO,CAACC,GAAG,AAC5D,2DAA2D;SAC1DC,KAAK,CAAC;QAEX,MAAMxB,KAAKnB,MAAMuC,SAASC,QAAQ;YAC9BI,KAAK;gBACD,GAAGC,QAAQD,GAAG;gBACdE,MAAM,IAAI,CAAC1C,IAAI;YACnB;YACA2C,KAAK,IAAI,CAAC7B,MAAM,CAAC8B,OAAO;YACxBC,OAAO;QACX;QACA9B,GAAG+B,MAAM,CAACC,IAAI,CAACN,QAAQK,MAAM;QAC7B/B,GAAGiC,MAAM,CAACD,IAAI,CAACN,QAAQO,MAAM;QAC7B,MAAM,IAAIC,QAAQC,CAAAA,MAAQnC,GAAGiC,MAAM,CAACG,EAAE,CAAC,QAAQ5B,CAAAA;gBAC3C,IAAIA,GAAG6B,SAAS,CAAC,iBAAiB,EAAE,IAAI,CAACpD,IAAI,EAAE,GAC3CkD;YACR;QACA,OAAOnC;IACX;;QA1EG,qBAEHf,OAAOD,aAAaC,IAAI,SAIxB2B,UAAU,IAAI7B;;AAsElB"}
@@ -0,0 +1,78 @@
1
+ import { TargetServer } from "./targetServer.js";
2
+ import path, { join } from "node:path";
3
+ import mime from "mime-types";
4
+ import { readFile } from "node:fs/promises";
5
+ import fs from "fs";
6
+ import { ViteBuilder } from "./vite.builder.js";
7
+ import { BundleJsonBuilder } from "./bundle.json.builder.js";
8
+ export class TargetWebServer extends TargetServer {
9
+ async handle(app, request, reply) {
10
+ if (!this.target.flags.production) {
11
+ const server = await this.viteBuilder.getServer(app.server);
12
+ return new Promise((resolve)=>server.middlewares(request.raw, reply.raw, resolve));
13
+ } else {
14
+ const relPath = path.relative(this.base, request.url).split('?')[0];
15
+ const bundle = await this.getBundle();
16
+ const mimeType = mime.lookup(relPath);
17
+ if (relPath in bundle) return reply.type(mimeType).send(bundle[relPath]);
18
+ try {
19
+ const file = await readFile(path.join(this.target.publicDir, relPath));
20
+ return reply.type(mime.lookup(relPath)).send(file);
21
+ } catch {
22
+ return reply.status(404).send('Not found');
23
+ }
24
+ }
25
+ }
26
+ async getBundle() {
27
+ const bundle = await this.viteBuilder.getBundle();
28
+ const bundleJsonBuilder = new BundleJsonBuilder(this.target, this.url);
29
+ const bundleJson = await bundleJsonBuilder.getBundleJson(bundle);
30
+ for (let dep of bundleJson.deps){
31
+ const target = this.resolver.getTarget(dep.baseURI.substring(this.url.length + 3));
32
+ if (target) {
33
+ dep.baseURI = `${this.url}/${this.prefix}/${target.target.packageJson.name}/`;
34
+ dep.path = target.path;
35
+ }
36
+ }
37
+ const result = {
38
+ '@_/bundle.json': JSON.stringify(bundleJson)
39
+ };
40
+ for (let output of bundle){
41
+ const entry = this.target.entries.find((x)=>x.relative == './' + output.fileName);
42
+ result[entry?.output ?? output.fileName] = output.data;
43
+ }
44
+ return result;
45
+ }
46
+ resolveByReferrer(req, file) {
47
+ if (!req) return;
48
+ if (!req.headers.referer) return;
49
+ const referrerPath = new URL(req.headers.referer).pathname;
50
+ if (!referrerPath.startsWith(this.base)) return;
51
+ const referrer = this.resolvePath(referrerPath.substring(this.base.length), null);
52
+ if (!referrer) return;
53
+ const absolute = join(referrer, '..' + file);
54
+ if (fs.existsSync(absolute)) {
55
+ return absolute;
56
+ }
57
+ }
58
+ resolvePath(file, req) {
59
+ if (file === '/') file = '';
60
+ const entry = this.target.entries.find((x)=>x.name === '.' + file);
61
+ if (entry) {
62
+ const path = this.target.flags.production ? entry.output : entry.relative.substring(2);
63
+ return '/' + path;
64
+ }
65
+ return this.resolveByReferrer(req, file);
66
+ }
67
+ async register(app) {
68
+ app.all(`${this.base}*`, (request, reply)=>{
69
+ if (request.url.startsWith(this.base + this.viteBuilder.wsPrefix)) return;
70
+ return this.handle(app, request, reply);
71
+ });
72
+ }
73
+ constructor(...args){
74
+ super(...args), this.viteBuilder = new ViteBuilder(this.target, this.resolver, this.base);
75
+ }
76
+ }
77
+
78
+ //# sourceMappingURL=target-web-server.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"sources":["/mnt/dev/cmmn/tools/dev-server/target-web-server.ts"],"names":["TargetServer","path","join","mime","readFile","fs","ViteBuilder","BundleJsonBuilder","TargetWebServer","handle","app","request","reply","target","flags","production","server","viteBuilder","getServer","Promise","resolve","middlewares","raw","relPath","relative","base","url","split","bundle","getBundle","mimeType","lookup","type","send","file","publicDir","status","bundleJsonBuilder","bundleJson","getBundleJson","dep","deps","resolver","getTarget","baseURI","substring","length","prefix","packageJson","name","result","JSON","stringify","output","entry","entries","find","x","fileName","data","resolveByReferrer","req","headers","referer","referrerPath","URL","pathname","startsWith","referrer","resolvePath","absolute","existsSync","register","all","wsPrefix"],"mappings":"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"}
@@ -0,0 +1,29 @@
1
+ export class TargetServer {
2
+ constructor(target, prefix, resolver){
3
+ this.target = target;
4
+ this.prefix = prefix;
5
+ this.resolver = resolver;
6
+ this.base = `/${this.prefix}/${this.target.packageJson.name}`;
7
+ }
8
+ rewritePath(path, req) {
9
+ if (!path.startsWith(this.base)) return path;
10
+ let file = path.substring(this.base.length);
11
+ if (file.startsWith(`/@`)) return path;
12
+ file = this.proxy(file, req) ?? file;
13
+ if (file.startsWith(`/${this.prefix}`)) return file;
14
+ file = this.resolvePath(file, req) ?? file;
15
+ return this.base + file;
16
+ }
17
+ resolvePath(path, req) {
18
+ return undefined;
19
+ }
20
+ proxy(file, req) {
21
+ const first = this.target.proxy.find((x)=>x.regex.test(file));
22
+ if (!first) return file;
23
+ const result = file.replace(first.regex, first.replace);
24
+ this.target.log(`proxy ^B${file}^w by ^W${first.regex.toString().replaceAll('^', '^^')} to ${result}`);
25
+ return result;
26
+ }
27
+ }
28
+
29
+ //# sourceMappingURL=targetServer.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"sources":["/mnt/dev/cmmn/tools/dev-server/targetServer.ts"],"names":["TargetServer","target","prefix","resolver","base","packageJson","name","rewritePath","path","req","startsWith","file","substring","length","proxy","resolvePath","undefined","first","find","x","regex","test","result","replace","log","toString","replaceAll"],"mappings":"AAIA,OAAO,MAAeA;IAKlB,YAAY,AAAUC,MAAc,EAAE,AAAUC,MAAc,EAAE,AAAUC,QAAkB,CAAE;aAAxEF,SAAAA;aAA0BC,SAAAA;aAA0BC,WAAAA;aAH1EC,OAAO,CAAC,CAAC,EAAE,IAAI,CAACF,MAAM,CAAC,CAAC,EAAE,IAAI,CAACD,MAAM,CAACI,WAAW,CAACC,IAAI,EAAE;IAIxD;IAIOC,YAAYC,IAAY,EAAEC,GAAmB,EAAE;QAClD,IAAI,CAACD,KAAKE,UAAU,CAAC,IAAI,CAACN,IAAI,GAC1B,OAAOI;QACX,IAAIG,OAAOH,KAAKI,SAAS,CAAC,IAAI,CAACR,IAAI,CAACS,MAAM;QAC1C,IAAIF,KAAKD,UAAU,CAAC,CAAC,EAAE,CAAC,GAAG,OAAOF;QAClCG,OAAO,IAAI,CAACG,KAAK,CAACH,MAAMF,QAAQE;QAChC,IAAIA,KAAKD,UAAU,CAAC,CAAC,CAAC,EAAE,IAAI,CAACR,MAAM,EAAE,GAAG,OAAOS;QAC/CA,OAAO,IAAI,CAACI,WAAW,CAACJ,MAAMF,QAAQE;QACtC,OAAO,IAAI,CAACP,IAAI,GAAGO;IACvB;IAEUI,YAAYP,IAAY,EAAEC,GAAmB,EAAsB;QACzE,OAAOO;IACX;IAEUF,MAAMH,IAAY,EAAEF,GAAmB,EAAE;QAC/C,MAAMQ,QAAQ,IAAI,CAAChB,MAAM,CAACa,KAAK,CAACI,IAAI,CAACC,CAAAA,IAAKA,EAAEC,KAAK,CAACC,IAAI,CAACV;QACvD,IAAI,CAACM,OAAO,OAAON;QACnB,MAAMW,SAASX,KAAKY,OAAO,CAACN,MAAMG,KAAK,EAAEH,MAAMM,OAAO;QACtD,IAAI,CAACtB,MAAM,CAACuB,GAAG,CAAC,CAAC,QAAQ,EAAEb,KAAK,QAAQ,EAAEM,MAAMG,KAAK,CAACK,QAAQ,GAAGC,UAAU,CAAC,KAAI,MAAM,IAAI,EAAEJ,QAAQ;QACpG,OAAOA;IACX;AACJ"}
@@ -0,0 +1,183 @@
1
+ import { ChangeEvent } from "../helpers/target";
2
+ import { build, createServer } from "vite";
3
+ import { wasm } from "./plugins/wasm.js";
4
+ import swc from "unplugin-swc";
5
+ import tsconfigPaths from "vite-tsconfig-paths";
6
+ import { swcMinifyPlugin } from "./plugins/minify.js";
7
+ import { dirname } from "node:path";
8
+ import builtinModules from "builtin-modules";
9
+ export class ViteBuilder {
10
+ constructor(target, resolver, base){
11
+ this.target = target;
12
+ this.resolver = resolver;
13
+ this.base = base;
14
+ this.wsPrefix = '/@ws';
15
+ }
16
+ async getConfig() {
17
+ return {
18
+ root: this.target.rootDir,
19
+ logLevel: 'silent',
20
+ mode: this.target.flags.production ? "production" : 'debug',
21
+ optimizeDeps: {
22
+ noDiscovery: true,
23
+ include: []
24
+ },
25
+ keepProcessEnv: true,
26
+ define: {
27
+ process: {
28
+ env: {
29
+ NODE_ENV: this.target.flags.production ? 'production' : 'development'
30
+ }
31
+ }
32
+ },
33
+ html: {},
34
+ base: this.base + '/',
35
+ build: {
36
+ target: 'baseline-widely-available',
37
+ emptyOutDir: false,
38
+ rollupOptions: {
39
+ external: [
40
+ ...this.resolver ? [] : this.target.externalDependencies.map((x)=>new RegExp(`^${x}`.replace('/', '\\/'))),
41
+ ...builtinModules,
42
+ 'fsevents',
43
+ /@id/g
44
+ ]
45
+ },
46
+ write: false,
47
+ minify: false,
48
+ sourcemap: this.target.flags.minify ? false : 'inline',
49
+ commonjsOptions: {
50
+ transformMixedEsModules: true
51
+ }
52
+ },
53
+ plugins: [
54
+ ...this.getPlugins()
55
+ ]
56
+ };
57
+ }
58
+ *getPlugins() {
59
+ yield wasm();
60
+ yield swc.vite(this.target.swcConfig);
61
+ yield tsconfigPaths();
62
+ if (this.resolver) {
63
+ yield {
64
+ name: this.target.packageJson.name + ':resolver',
65
+ resolveId: this.resolver.resolveId,
66
+ enforce: 'pre'
67
+ };
68
+ }
69
+ yield {
70
+ name: "cmmn:html-base-tag",
71
+ enforce: 'pre',
72
+ transformIndexHtml: (_, config)=>{
73
+ const dir = this.target.flags.production ? '/' : dirname(config.path);
74
+ const result = [
75
+ {
76
+ tag: "base",
77
+ attrs: {
78
+ href: `${this.base}${dir}`
79
+ },
80
+ children: '/** injected **/'
81
+ }
82
+ ];
83
+ if (this.target.flags.production) {
84
+ result.push({
85
+ tag: "link",
86
+ attrs: {
87
+ rel: 'manifest',
88
+ href: this.base + '/manifest.json'
89
+ }
90
+ });
91
+ }
92
+ return result;
93
+ }
94
+ };
95
+ if (this.target.flags.minify) yield swcMinifyPlugin();
96
+ // yield analyzer();
97
+ }
98
+ async getBundleConfig() {
99
+ const config = await this.getConfig();
100
+ config.build.lib = {
101
+ entry: Object.fromEntries(this.target.entries.filter((x)=>!x.isExcluded).map((x)=>[
102
+ x.name,
103
+ x.source
104
+ ])),
105
+ fileName: (format, entryName)=>{
106
+ if (entryName == '.') entryName = 'index';
107
+ return `${entryName.replace(/^[./]*/, '')}.js`;
108
+ },
109
+ formats: [
110
+ 'es'
111
+ ]
112
+ };
113
+ config.build.modulePreload = false;
114
+ return config;
115
+ }
116
+ async createBundle() {
117
+ if (!this.target.entries.length) return [];
118
+ const config = await this.getBundleConfig();
119
+ return build(config).catch((err)=>{
120
+ this.target.error(err.message);
121
+ return [];
122
+ });
123
+ }
124
+ async getBundle() {
125
+ const rollupOutput = await (this.bundle ??= this.createBundle());
126
+ const outputs = rollupOutput.flatMap((x)=>x.output);
127
+ return outputs.map((x)=>{
128
+ return {
129
+ fileName: x.fileName,
130
+ data: x.type == "asset" ? x.source : x.code,
131
+ deps: x.type == "asset" ? [] : [
132
+ ...x.imports,
133
+ ...x.dynamicImports
134
+ ].map((path)=>({
135
+ package: path,
136
+ path: ''
137
+ }))
138
+ };
139
+ });
140
+ }
141
+ async getServer(server) {
142
+ return this.devServerRequest ??= this.createServer(server);
143
+ }
144
+ async createServer(server) {
145
+ const config = await this.getConfig();
146
+ const viteServer = await createServer({
147
+ ...config,
148
+ server: {
149
+ hmr: this.target.flags.production ? false : {
150
+ server: server,
151
+ path: this.wsPrefix
152
+ },
153
+ ws: this.target.flags.production ? false : undefined,
154
+ fs: {
155
+ strict: false
156
+ },
157
+ allowedHosts: [
158
+ this.target.https?.host,
159
+ ...this.target.reactions.map((x)=>x.https?.host)
160
+ ].filter((x)=>x)
161
+ }
162
+ });
163
+ this.target.log(`Start dev server`);
164
+ this.enhanceWebSocket(viteServer);
165
+ return viteServer;
166
+ }
167
+ /**
168
+ * Emit event on ws and proxies events from dependent dev-servers
169
+ */ enhanceWebSocket(server) {
170
+ const emitChange = server.ws.send;
171
+ server.ws.send = (payload)=>{
172
+ // if (this.target.isExcluded("")) return;
173
+ this.target.log('change');
174
+ this.target.dispatchEvent(new ChangeEvent(payload, this.target.packageJson.name));
175
+ };
176
+ this.target.addEventListener('change', (e)=>{
177
+ this.target.log('change');
178
+ emitChange.call(server.ws, e.payload);
179
+ });
180
+ }
181
+ }
182
+
183
+ //# sourceMappingURL=vite.builder.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"sources":["/mnt/dev/cmmn/tools/dev-server/vite.builder.ts"],"names":["ChangeEvent","build","createServer","wasm","swc","tsconfigPaths","swcMinifyPlugin","dirname","builtinModules","ViteBuilder","target","resolver","base","wsPrefix","getConfig","root","rootDir","logLevel","mode","flags","production","optimizeDeps","noDiscovery","include","keepProcessEnv","define","process","env","NODE_ENV","html","emptyOutDir","rollupOptions","external","externalDependencies","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","getBundleConfig","lib","entry","Object","fromEntries","entries","filter","isExcluded","source","fileName","format","entryName","formats","modulePreload","createBundle","length","catch","err","error","message","getBundle","rollupOutput","bundle","outputs","flatMap","output","data","type","code","deps","imports","dynamicImports","package","getServer","server","devServerRequest","viteServer","hmr","ws","undefined","fs","strict","allowedHosts","https","host","reactions","log","enhanceWebSocket","emitChange","send","payload","dispatchEvent","addEventListener","e","call"],"mappings":"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"}
@@ -0,0 +1,25 @@
1
+ import url from "url";
2
+ import fs from "node:fs/promises";
3
+ export const wasmResolver = {
4
+ name: 'wasm-resolver',
5
+ setup (r) {
6
+ r.onResolve({
7
+ filter: /\.(?:wasm)$/
8
+ }, (o)=>{
9
+ const resolved = new URL(o.path, url.pathToFileURL(o.importer));
10
+ return {
11
+ path: url.fileURLToPath(resolved),
12
+ namespace: 'wasm-module'
13
+ };
14
+ });
15
+ r.onLoad({
16
+ filter: /.*/,
17
+ namespace: 'wasm-module'
18
+ }, async (o)=>({
19
+ contents: await fs.readFile(o.path),
20
+ loader: "file"
21
+ }));
22
+ }
23
+ };
24
+
25
+ //# sourceMappingURL=wasm-resolver.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"sources":["/mnt/dev/cmmn/tools/dev-server/wasm-resolver.ts"],"names":["url","fs","wasmResolver","name","setup","r","onResolve","filter","o","resolved","URL","path","pathToFileURL","importer","fileURLToPath","namespace","onLoad","contents","readFile","loader"],"mappings":"AAAA,OAAOA,SAAS,MAAM;AACtB,OAAOC,QAAQ,mBAAmB;AAElC,OAAO,MAAMC,eAAe;IAC3BC,MAAM;IACNC,OAAMC,CAAC;QACNA,EAAEC,SAAS,CAAC;YAACC,QAAQ;QAAa,GAAGC,CAAAA;YACpC,MAAMC,WAAW,IAAIC,IAAIF,EAAEG,IAAI,EAAEX,IAAIY,aAAa,CAACJ,EAAEK,QAAQ;YAC7D,OAAO;gBACNF,MAAMX,IAAIc,aAAa,CAACL;gBACxBM,WAAW;YACZ;QACD;QACAV,EAAEW,MAAM,CAAC;YACRT,QAAQ;YACRQ,WAAW;QACZ,GAAG,OAAMP,IAAM,CAAA;gBACdS,UAAU,MAAMhB,GAAGiB,QAAQ,CAACV,EAAEG,IAAI;gBAClCQ,QAAQ;YACT,CAAA;IACD;AACD,EAAE"}
@@ -0,0 +1,26 @@
1
+ import { Readable } from "node:stream";
2
+ import zlib from "node:zlib";
3
+ const encoders = {
4
+ zstd: ()=>zlib['createZstdCompress'],
5
+ br: ()=>zlib.createBrotliCompress(),
6
+ gzip: ()=>zlib.createGzip(),
7
+ deflate: ()=>zlib.createDeflate()
8
+ };
9
+ export function fastifyCompress(app, options = {
10
+ encodings: [
11
+ 'br',
12
+ 'zstd',
13
+ 'gzip',
14
+ 'deflate'
15
+ ]
16
+ }) {
17
+ app.addHook('onSend', async (request, reply, payload)=>{
18
+ for (const encoding of options.encodings){
19
+ if (!encoders[encoding] || !request.headers["accept-encoding"].includes(encoding)) continue;
20
+ reply.header('content-encoding', encoding);
21
+ return Readable.from(payload).pipe(encoders[encoding]());
22
+ }
23
+ });
24
+ }
25
+
26
+ //# sourceMappingURL=fastify-compress.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"sources":["/mnt/dev/cmmn/tools/helpers/fastify-compress.ts"],"names":["Readable","zlib","encoders","zstd","br","createBrotliCompress","gzip","createGzip","deflate","createDeflate","fastifyCompress","app","options","encodings","addHook","request","reply","payload","encoding","headers","includes","header","from","pipe"],"mappings":"AACA,SAAQA,QAAQ,QAAO,cAAc;AACrC,OAAOC,UAAU,YAAY;AAG7B,MAAMC,WAAW;IAChBC,MAAM,IAAMF,IAAI,CAAC,qBAAqB;IACtCG,IAAI,IAAMH,KAAKI,oBAAoB;IACnCC,MAAM,IAAML,KAAKM,UAAU;IAC3BC,SAAS,IAAMP,KAAKQ,aAAa;AAClC;AAEA,OAAO,SAASC,gBAAgBC,GAAoB,EAAEC,UAAkC;IACvFC,WAAW;QAAC;QAAM;QAAQ;QAAQ;KAAU;AAC7C,CAAC;IACAF,IAAIG,OAAO,CAAC,UAAU,OAAOC,SAAyBC,OAAqBC;QAC1E,KAAK,MAAMC,YAAYN,QAAQC,SAAS,CAAE;YACzC,IAAI,CAACX,QAAQ,CAACgB,SAAS,IAAI,CAACH,QAAQI,OAAO,CAAC,kBAAkB,CAACC,QAAQ,CAACF,WAAW;YACnFF,MAAMK,MAAM,CAAC,oBAAoBH;YACjC,OAAOlB,SAASsB,IAAI,CAACL,SAASM,IAAI,CAACrB,QAAQ,CAACgB,SAAS;QACtD;IACD;AACD"}
@@ -0,0 +1,22 @@
1
+ export class Flags {
2
+ constructor(args){
3
+ this.command = args[0];
4
+ this.args = args;
5
+ this.watch = args.includes('--watch');
6
+ this.minify = args.includes('--minify');
7
+ this.unsafe = args.includes('--unsafe');
8
+ this.workspace = args.includes('-w') ? args[args.indexOf('-w') + 1] ?? '.' : undefined;
9
+ this.version = this.command === 'version' ? args[1] : undefined;
10
+ this.production = args.includes('--prod');
11
+ if (this.workspace?.startsWith('--')) {
12
+ this.workspace = undefined;
13
+ }
14
+ }
15
+ get(arg) {
16
+ const index = this.args.indexOf(`--${arg}`);
17
+ if (index === -1) return undefined;
18
+ return this.args[index + 1];
19
+ }
20
+ }
21
+
22
+ //# sourceMappingURL=flags.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"sources":["/mnt/dev/cmmn/tools/helpers/flags.ts"],"names":["Flags","args","command","watch","includes","minify","unsafe","workspace","indexOf","undefined","version","production","startsWith","get","arg","index"],"mappings":"AAAA,OAAO,MAAMA;IAST,YAAYC,IAAc,CAAE;QACxB,IAAI,CAACC,OAAO,GAAGD,IAAI,CAAC,EAAE;QACtB,IAAI,CAACA,IAAI,GAAGA;QACZ,IAAI,CAACE,KAAK,GAAGF,KAAKG,QAAQ,CAAC;QAC3B,IAAI,CAACC,MAAM,GAAGJ,KAAKG,QAAQ,CAAC;QAC5B,IAAI,CAACE,MAAM,GAAGL,KAAKG,QAAQ,CAAC;QAC5B,IAAI,CAACG,SAAS,GAAGN,KAAKG,QAAQ,CAAC,QAAQH,IAAI,CAACA,KAAKO,OAAO,CAAC,QAAQ,EAAE,IAAI,MAAMC;QAC7E,IAAI,CAACC,OAAO,GAAG,IAAI,CAACR,OAAO,KAAK,YAAYD,IAAI,CAAC,EAAE,GAAGQ;QACtD,IAAI,CAACE,UAAU,GAAGV,KAAKG,QAAQ,CAAC;QAChC,IAAI,IAAI,CAACG,SAAS,EAAEK,WAAW,OAAM;YACjC,IAAI,CAACL,SAAS,GAAGE;QACrB;IACJ;IAEAI,IAAIC,GAAG,EAAE;QACL,MAAMC,QAAQ,IAAI,CAACd,IAAI,CAACO,OAAO,CAAC,CAAC,EAAE,EAAEM,KAAK;QAC1C,IAAIC,UAAU,CAAC,GAAG,OAAON;QACzB,OAAO,IAAI,CAACR,IAAI,CAACc,QAAQ,EAAE;IAC/B;AACJ"}
@@ -0,0 +1,49 @@
1
+ import { getPackages } from "@manypkg/get-packages";
2
+ export async function* getOrderedPackages(rootDir) {
3
+ const packages = await getPackages(rootDir);
4
+ const monorepo = new Monorepo(packages.packages);
5
+ yield* monorepo.getTargets();
6
+ yield {
7
+ root: rootDir,
8
+ deps: packages.packages.map((x)=>x.dir)
9
+ };
10
+ }
11
+ class Monorepo {
12
+ constructor(packages){
13
+ this.packages = packages;
14
+ this.packageMap = new Map(this.packages.map((p)=>[
15
+ p.packageJson.name,
16
+ p
17
+ ]));
18
+ }
19
+ *getTargets() {
20
+ const visited = new Set();
21
+ for (let pkg of this.packages){
22
+ yield* this.getTargetsOf(pkg, visited);
23
+ }
24
+ }
25
+ *getTargetsOf(pkg, visited) {
26
+ if (visited.has(pkg)) return;
27
+ visited.add(pkg);
28
+ const deps = [];
29
+ for (let dep of this.getDeps(pkg)){
30
+ const depPkg = this.packageMap.get(dep);
31
+ if (visited.has(depPkg)) continue;
32
+ if (depPkg) {
33
+ yield* this.getTargetsOf(depPkg, visited);
34
+ deps.push(depPkg.dir);
35
+ }
36
+ }
37
+ yield {
38
+ root: pkg.dir,
39
+ deps
40
+ };
41
+ }
42
+ *getDeps(pkg) {
43
+ for(let dep in pkg.packageJson.dependencies)yield dep;
44
+ for(let dep in pkg.packageJson.devDependencies)yield dep;
45
+ for(let dep in pkg.packageJson.optionalDependencies)yield dep;
46
+ }
47
+ }
48
+
49
+ //# sourceMappingURL=getProjects.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"sources":["/mnt/dev/cmmn/tools/helpers/getProjects.ts"],"names":["getPackages","getOrderedPackages","rootDir","packages","monorepo","Monorepo","getTargets","root","deps","map","x","dir","packageMap","Map","p","packageJson","name","visited","Set","pkg","getTargetsOf","has","add","dep","getDeps","depPkg","get","push","dependencies","devDependencies","optionalDependencies"],"mappings":"AAAA,SAAQA,WAAW,QAAgB,wBAAwB;AAG3D,OAAO,gBAAgBC,mBAAmBC,OAAe;IAIrD,MAAMC,WAAW,MAAMH,YAAYE;IACnC,MAAME,WAAW,IAAIC,SAASF,SAASA,QAAQ;IAC/C,OAAQC,SAASE,UAAU;IAC3B,MAAM;QACFC,MAAML;QACNM,MAAML,SAASA,QAAQ,CAACM,GAAG,CAACC,CAAAA,IAAKA,EAAEC,GAAG;IAC1C;AACJ;AAEA,MAAMN;IAKF,YAAY,AAAQF,QAAmB,CAAE;aAArBA,WAAAA;aAJZS,aAAa,IAAIC,IAAI,IAAI,CAACV,QAAQ,CAACM,GAAG,CAACK,CAAAA,IAAK;gBAChDA,EAAEC,WAAW,CAACC,IAAI;gBAClBF;aACH;IAED;IAEA,CAACR,aAA0E;QACvE,MAAMW,UAAU,IAAIC;QACpB,KAAK,IAAIC,OAAO,IAAI,CAAChB,QAAQ,CAAE;YAC3B,OAAQ,IAAI,CAACiB,YAAY,CAACD,KAAKF;QACnC;IACJ;IAEA,CAACG,aAAaD,GAAY,EAAEF,OAAqB,EAAC;QAC9C,IAAGA,QAAQI,GAAG,CAACF,MAAM;QACrBF,QAAQK,GAAG,CAACH;QACZ,MAAMX,OAAO,EAAE;QACf,KAAK,IAAIe,OAAO,IAAI,CAACC,OAAO,CAACL,KAAM;YAC/B,MAAMM,SAAS,IAAI,CAACb,UAAU,CAACc,GAAG,CAACH;YACnC,IAAGN,QAAQI,GAAG,CAACI,SAAS;YACxB,IAAIA,QAAQ;gBACR,OAAQ,IAAI,CAACL,YAAY,CAACK,QAAQR;gBAClCT,KAAKmB,IAAI,CAACF,OAAOd,GAAG;YACxB;QACJ;QACA,MAAM;YAAEJ,MAAMY,IAAIR,GAAG;YAAEH;QAAK;IAChC;IACA,CAACgB,QAAQL,GAAY,EAAC;QAClB,IAAK,IAAII,OAAOJ,IAAIJ,WAAW,CAACa,YAAY,CACxC,MAAML;QACV,IAAK,IAAIA,OAAOJ,IAAIJ,WAAW,CAACc,eAAe,CAC3C,MAAMN;QACV,IAAK,IAAIA,OAAOJ,IAAIJ,WAAW,CAACe,oBAAoB,CAChD,MAAMP;IAEd;AACJ"}
@@ -0,0 +1,32 @@
1
+ import ts from "typescript";
2
+ import path from "node:path";
3
+ import { fileURLToPath } from "node:url";
4
+ export function getTSConfig(configPath) {
5
+ const result = ts.readConfigFile(configPath, ts.sys.readFile);
6
+ if (result.error) {
7
+ return null;
8
+ }
9
+ if (result.config.extends) {
10
+ const extended = getTSConfig(path.resolve(path.dirname(configPath), result.config.extends)) ?? getTSConfig(fileURLToPath(import.meta.resolve(result.config.extends)));
11
+ const merged = merge([
12
+ extended,
13
+ result.config
14
+ ]);
15
+ return merged;
16
+ }
17
+ return result.config;
18
+ }
19
+ function merge(values) {
20
+ const keys = new Set(values.flatMap(Object.keys));
21
+ const result = {};
22
+ for (let key of keys){
23
+ const v = values.map((x)=>x[key]).filter((x)=>x !== undefined);
24
+ if (v.length === 0) result[key] = undefined;
25
+ else if (v.length === 1) result[key] = v[0];
26
+ else if (typeof v.at(-1) !== "object" || v.at(-1) === null || Array.isArray(v.at(-1))) result[key] = v.at(-1);
27
+ else result[key] = merge(v);
28
+ }
29
+ return result;
30
+ }
31
+
32
+ //# sourceMappingURL=getTSConfig.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"sources":["/mnt/dev/cmmn/tools/helpers/getTSConfig.ts"],"names":["ts","path","fileURLToPath","getTSConfig","configPath","result","readConfigFile","sys","readFile","error","config","extends","extended","resolve","dirname","merged","merge","values","keys","Set","flatMap","Object","key","v","map","x","filter","undefined","length","at","Array","isArray"],"mappings":"AAAA,OAAOA,QAA2B,aAAa;AAC/C,OAAOC,UAAU,YAAY;AAC7B,SAAQC,aAAa,QAAO,WAAW;AAEvC,OAAO,SAASC,YAAYC,UAAkB;IAC7C,MAAMC,SAASL,GAAGM,cAAc,CAACF,YAAYJ,GAAGO,GAAG,CAACC,QAAQ;IAC5D,IAAIH,OAAOI,KAAK,EAAE;QACjB,OAAO;IACR;IACA,IAAIJ,OAAOK,MAAM,CAACC,OAAO,EAAC;QACzB,MAAMC,WAAWT,YAAYF,KAAKY,OAAO,CAACZ,KAAKa,OAAO,CAACV,aAAaC,OAAOK,MAAM,CAACC,OAAO,MACxFR,YAAYD,cAAc,YAAYW,OAAO,CAACR,OAAOK,MAAM,CAACC,OAAO;QACpE,MAAMI,SAASC,MAAM;YAACJ;YAAUP,OAAOK,MAAM;SAAC;QAC9C,OAAQK;IACT;IACA,OAAOV,OAAOK,MAAM;AACrB;AAUA,SAASM,MAAMC,MAAgB;IAC9B,MAAMC,OAAO,IAAIC,IAAIF,OAAOG,OAAO,CAACC,OAAOH,IAAI;IAC/C,MAAMb,SAAS,CAAC;IAChB,KAAK,IAAIiB,OAAOJ,KAAM;QACrB,MAAMK,IAAIN,OAAOO,GAAG,CAACC,CAAAA,IAAKA,CAAC,CAACH,IAAW,EAAEI,MAAM,CAACD,CAAAA,IAAKA,MAAME;QAC3D,IAAIJ,EAAEK,MAAM,KAAK,GAChBvB,MAAM,CAACiB,IAAW,GAAGK;aACjB,IAAIJ,EAAEK,MAAM,KAAK,GACrBvB,MAAM,CAACiB,IAAW,GAAGC,CAAC,CAAC,EAAE;aACrB,IAAI,OAAOA,EAAEM,EAAE,CAAC,CAAC,OAAO,YAAYN,EAAEM,EAAE,CAAC,CAAC,OAAO,QAAQC,MAAMC,OAAO,CAACR,EAAEM,EAAE,CAAC,CAAC,KACjFxB,MAAM,CAACiB,IAAW,GAAGC,EAAEM,EAAE,CAAC,CAAC;aAE3BxB,MAAM,CAACiB,IAAW,GAAGN,MAAMO;IAC7B;IACA,OAAOlB;AACR"}