@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,27 @@
1
+ export class Flags {
2
+ static{
3
+ this.Current = new Flags([]);
4
+ }
5
+ constructor(args){
6
+ this.args = args;
7
+ this.deploy = this.args.includes('--deploy');
8
+ this.out = this.args.includes('-out') ? this.args[this.args.indexOf('-out') + 1] : '.out';
9
+ this.command = args[0];
10
+ this.watch = args.includes('--watch');
11
+ this.minify = args.includes('--minify');
12
+ this.unsafe = args.includes('--unsafe');
13
+ this.workspace = args.includes('-w') ? args[args.indexOf('-w') + 1] ?? '.' : undefined;
14
+ this.version = this.command === 'version' ? args[1] : undefined;
15
+ this.production = args.includes('--prod');
16
+ if (this.workspace?.startsWith('--')) {
17
+ this.workspace = undefined;
18
+ }
19
+ }
20
+ get(arg) {
21
+ const index = this.args.indexOf(`--${arg}`);
22
+ if (index === -1) return undefined;
23
+ return this.args[index + 1];
24
+ }
25
+ }
26
+
27
+ //# sourceMappingURL=flags.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"sources":["/mnt/dev/cmmn/tools/model/flags.ts"],"names":["Flags","Current","args","deploy","includes","out","indexOf","command","watch","minify","unsafe","workspace","undefined","version","production","startsWith","get","arg","index"],"mappings":"AACA,OAAO,MAAMA;;aACFC,UAAiB,IAAID,MAAM,EAAE;;IAapC,YAAY,AAAOE,IAAe,CAAE;aAAjBA,OAAAA;aALnBC,SAAU,IAAI,CAACD,IAAI,CAACE,QAAQ,CAAC;aAC7BC,MAAM,IAAI,CAACH,IAAI,CAACE,QAAQ,CAAC,UACnB,IAAI,CAACF,IAAI,CAAC,IAAI,CAACA,IAAI,CAACI,OAAO,CAAC,UAAU,EAAE,GACxC;QAGF,IAAI,CAACC,OAAO,GAAGL,IAAI,CAAC,EAAE;QACtB,IAAI,CAACM,KAAK,GAAGN,KAAKE,QAAQ,CAAC;QAC3B,IAAI,CAACK,MAAM,GAAGP,KAAKE,QAAQ,CAAC;QAC5B,IAAI,CAACM,MAAM,GAAGR,KAAKE,QAAQ,CAAC;QAC5B,IAAI,CAACO,SAAS,GAAGT,KAAKE,QAAQ,CAAC,QACzBF,IAAI,CAACA,KAAKI,OAAO,CAAC,QAAQ,EAAE,IAAI,MAAMM;QAC5C,IAAI,CAACC,OAAO,GAAG,IAAI,CAACN,OAAO,KAAK,YAAYL,IAAI,CAAC,EAAE,GAAGU;QACtD,IAAI,CAACE,UAAU,GAAGZ,KAAKE,QAAQ,CAAC;QAChC,IAAI,IAAI,CAACO,SAAS,EAAEI,WAAW,OAAM;YACjC,IAAI,CAACJ,SAAS,GAAGC;QACrB;IACJ;IAEAI,IAAIC,GAAG,EAAE;QACL,MAAMC,QAAQ,IAAI,CAAChB,IAAI,CAACI,OAAO,CAAC,CAAC,EAAE,EAAEW,KAAK;QAC1C,IAAIC,UAAU,CAAC,GAAG,OAAON;QACzB,OAAO,IAAI,CAACV,IAAI,CAACgB,QAAQ,EAAE;IAC/B;AACJ"}
@@ -0,0 +1,74 @@
1
+ import { getPackages } from "@manypkg/get-packages";
2
+ import { Pack } from "./pack.js";
3
+ import { Target } from "./target.js";
4
+ import { Resolver } from "./resolver.js";
5
+ import { Flags } from "./flags.js";
6
+ import { ViteBundler } from "../bundlers/vite.bundler.js";
7
+ import { RolldownBundler } from "../bundlers/rolldown-bundler.js";
8
+ export class Monorepo {
9
+ static async load(flags = new Flags([]), rootDir = process.cwd()) {
10
+ const monorepoPackages = await getPackages(rootDir);
11
+ const monorepo = new MonorepoLoader(monorepoPackages);
12
+ await monorepo.load(flags.production);
13
+ return new Monorepo(monorepo.root, monorepo.packs, flags);
14
+ }
15
+ constructor(root, packsMap, flags){
16
+ this.root = root;
17
+ this.packsMap = packsMap;
18
+ this.flags = flags;
19
+ this.packs = Array.from(this.packsMap.values());
20
+ if (flags.deploy) this.resolver = new Resolver(this.packs, this.flags);
21
+ this.packs.forEach((x)=>x.init(flags, this.packsMap));
22
+ root.init(flags, this.packsMap);
23
+ }
24
+ get targets() {
25
+ return Array.from(this.packs.values()).filter((x)=>x instanceof Target);
26
+ }
27
+ get(id) {
28
+ return this.packsMap.get(id);
29
+ }
30
+ createBundler(pack) {
31
+ if (pack instanceof Target) return new ViteBundler(pack, this.resolver, this.flags);
32
+ return new RolldownBundler(pack, this.resolver, this.flags);
33
+ }
34
+ }
35
+ class MonorepoLoader {
36
+ constructor(packages){
37
+ this.packages = packages;
38
+ this.packs = new Map();
39
+ }
40
+ async load(prod) {
41
+ for (let p of this.packages.packages){
42
+ await this.export(p.packageJson.name, p.packageJson.version, prod);
43
+ }
44
+ this.root = await this.export(this.packages.rootPackage.packageJson.name, this.packages.rootPackage.packageJson.version, prod);
45
+ return Array.from(this.packs.values());
46
+ }
47
+ async export(name, version, prod) {
48
+ if (this.packs.has(name)) return this.packs.get(name);
49
+ const pkg = this.getPackage(name);
50
+ if (pkg) {
51
+ const pack = new Target(pkg.dir, pkg.packageJson);
52
+ this.packs.set(name, pack);
53
+ for (let [name, version] of pack.getAllDependencies(prod)){
54
+ if (this.packs.has(name)) continue;
55
+ await this.export(name, version, prod);
56
+ }
57
+ return pack;
58
+ } else {
59
+ const pack = await Pack.read(name, version);
60
+ this.packs.set(name, pack);
61
+ return pack;
62
+ }
63
+ }
64
+ getPackage(name) {
65
+ const p = this.packages.rootPackage.packageJson.name == name ? this.packages.rootPackage : this.packages.packages.find((x)=>x.packageJson.name == name);
66
+ return p && {
67
+ dir: p.dir,
68
+ packageJson: p.packageJson,
69
+ version: p.packageJson.version
70
+ };
71
+ }
72
+ }
73
+
74
+ //# sourceMappingURL=monorepo.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"sources":["/mnt/dev/cmmn/tools/model/monorepo.ts"],"names":["getPackages","Pack","Target","Resolver","Flags","ViteBundler","RolldownBundler","Monorepo","load","flags","rootDir","process","cwd","monorepoPackages","monorepo","MonorepoLoader","production","root","packs","packsMap","Array","from","values","deploy","resolver","forEach","x","init","targets","filter","get","id","createBundler","pack","packages","Map","prod","p","export","packageJson","name","version","rootPackage","has","pkg","getPackage","dir","set","getAllDependencies","read","find"],"mappings":"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"}
@@ -0,0 +1,134 @@
1
+ import { dirname, join, resolve } from "node:path";
2
+ import terminalKit from "terminal-kit";
3
+ import { readFile, stat } from "node:fs/promises";
4
+ export class Pack extends EventTarget {
5
+ static async read(id, version, dir = process.cwd()) {
6
+ while(dir){
7
+ try {
8
+ const pkgDir = join(dir, 'node_modules', id);
9
+ if (await stat(pkgDir)) {
10
+ const json = JSON.parse(await readFile(join(pkgDir, "package.json"), {
11
+ encoding: 'utf-8'
12
+ }));
13
+ // TODO: check version
14
+ // if (version && json.version !== version)
15
+ // dir = dirname(dir);
16
+ // else
17
+ return new Pack(pkgDir, json);
18
+ }
19
+ } catch {
20
+ dir = dirname(dir);
21
+ }
22
+ }
23
+ }
24
+ *getAllDependencies(prod) {
25
+ yield* Object.entries(this.packageJson.dependencies ?? {});
26
+ if (!prod) yield* Object.entries(this.packageJson.devDependencies ?? {});
27
+ }
28
+ constructor(rootDir, packageJson){
29
+ super(), this.rootDir = rootDir, this.packageJson = packageJson, this.reactions = [];
30
+ }
31
+ init(flags, packsMap) {
32
+ const deps = Object.keys(this.packageJson.dependencies ?? {});
33
+ if (!flags.production) deps.push(...Object.keys(this.packageJson.devDependencies ?? {}));
34
+ this.deps = deps.map((x)=>packsMap.get(x)).filter((x)=>!!x);
35
+ this.deps.forEach((x)=>x.reactions.push(this));
36
+ for (let dep of this.deps){
37
+ dep.addEventListener('change', (e)=>{
38
+ // TODO: prevent cycles
39
+ this.dispatchEvent(new ChangeEvent(e.payload, e.from));
40
+ });
41
+ dep.addEventListener('file', (e)=>{
42
+ // TODO: prevent cycles
43
+ this.dispatchEvent(new FileChangeEvent([]));
44
+ });
45
+ }
46
+ }
47
+ get isServer() {
48
+ return !!this.packageJson.config?.server;
49
+ }
50
+ get name() {
51
+ return this.packageJson.name;
52
+ }
53
+ log(text) {
54
+ this.term ??= new terminalKit.Terminal();
55
+ this.term.blue(this.packageJson.name);
56
+ this.term.white(` ${text}\n`);
57
+ }
58
+ error(text) {
59
+ this.log(`^RERROR: ^w` + text.toString());
60
+ }
61
+ get entries() {
62
+ if (this._entries) return this._entries;
63
+ if (this.packageJson.exports && typeof this.packageJson.exports == "object") {
64
+ const result = [];
65
+ for(let item in this.packageJson.exports){
66
+ if (!item.startsWith('.')) {
67
+ const exports = this.packageJson.exports;
68
+ const importFile = exports.default ?? exports.require ?? exports.import;
69
+ if (!importFile || !(typeof importFile === "string")) {
70
+ this.error(`Failed to read entry '${item}' in ${this.packageJson.name}`);
71
+ continue;
72
+ }
73
+ result.push(this.createEntry('.', importFile));
74
+ break;
75
+ }
76
+ const importFile = this.packageJson.exports[item].default ?? this.packageJson.exports[item].import ?? this.packageJson.exports[item].require ?? this.packageJson.exports[item];
77
+ if (!importFile || !(typeof importFile === "string")) {
78
+ this.error(`Failed to read entry '${item}' in ${this.packageJson.name}`);
79
+ continue;
80
+ }
81
+ result.push(this.createEntry(item, importFile));
82
+ }
83
+ return this._entries = result;
84
+ }
85
+ const entry = this.packageJson.module ?? this.packageJson.main ?? this.packageJson.browser ?? this.packageJson.exports;
86
+ return this._entries = entry ? [
87
+ this.createEntry('.', entry)
88
+ ] : [];
89
+ }
90
+ /**
91
+ * @param name relative path inside pack: "", "/index.js", "/bundler"...
92
+ */ getEntry(name) {
93
+ return this.entries.find((x)=>x.name === name);
94
+ }
95
+ createEntry(name, source) {
96
+ const absolute = resolve(this.rootDir, source);
97
+ name = name.replace(/^[.\/]+/, '');
98
+ return {
99
+ name,
100
+ source: absolute,
101
+ relative: source.replace(/^[.\/]+/, ''),
102
+ isExcluded: false,
103
+ isHTML: /\.html$/i.test(source),
104
+ output: this.getExport(name, source),
105
+ isTypeScript: /\.tsx?$/i.test(source),
106
+ isJavaScript: /\.jsx?$/i.test(source)
107
+ };
108
+ }
109
+ getExport(entry, file) {
110
+ const extension = file.match(/\.([^.]+)$/)[1];
111
+ const entryName = entry.replace(/^\.?\/?/, '').replace(/\.[^.]+$/, '') || 'index';
112
+ const outExt = extension.replace(/^[jt]sx?$/, 'js').replace(/^(less|css|sass|scss)$/, 'css');
113
+ return `${entryName}.${outExt}`;
114
+ }
115
+ static{
116
+ this.ImportPrefix = '/_/';
117
+ }
118
+ get publicPath() {
119
+ return `${Pack.ImportPrefix}${this.name}`;
120
+ }
121
+ }
122
+ export class ChangeEvent extends Event {
123
+ constructor(payload, from){
124
+ super('change');
125
+ this.payload = payload;
126
+ }
127
+ }
128
+ export class FileChangeEvent extends Event {
129
+ constructor(files){
130
+ super('file'), this.files = files;
131
+ }
132
+ }
133
+
134
+ //# sourceMappingURL=pack.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"sources":["/mnt/dev/cmmn/tools/model/pack.ts"],"names":["dirname","join","resolve","terminalKit","readFile","stat","Pack","EventTarget","read","id","version","dir","process","cwd","pkgDir","json","JSON","parse","encoding","getAllDependencies","prod","Object","entries","packageJson","dependencies","devDependencies","rootDir","reactions","init","flags","packsMap","deps","keys","production","push","map","x","get","filter","forEach","dep","addEventListener","e","dispatchEvent","ChangeEvent","payload","from","FileChangeEvent","isServer","config","server","name","log","text","term","Terminal","blue","white","error","toString","_entries","exports","result","item","startsWith","importFile","default","require","import","createEntry","entry","module","main","browser","getEntry","find","source","absolute","replace","relative","isExcluded","isHTML","test","output","getExport","isTypeScript","isJavaScript","file","extension","match","entryName","outExt","ImportPrefix","publicPath","Event","files"],"mappings":"AACA,SAAQA,OAAO,EAAEC,IAAI,EAAEC,OAAO,QAAO,YAAY;AAEjD,OAAOC,iBAAiB,eAAe;AACvC,SAAQC,QAAQ,EAAEC,IAAI,QAAO,mBAAmB;AAEhD,OAAO,MAAMC,aAAaC;IACtB,aAAaC,KAAKC,EAAU,EAAEC,OAAgB,EAAEC,MAAMC,QAAQC,GAAG,EAAE,EAAE;QACjE,MAAOF,IAAK;YACR,IAAI;gBACA,MAAMG,SAASb,KAAKU,KAAK,gBAAgBF;gBACzC,IAAI,MAAMJ,KAAKS,SAAS;oBACpB,MAAMC,OAAOC,KAAKC,KAAK,CAAC,MAAMb,SAASH,KAAKa,QAAQ,iBAAiB;wBAACI,UAAU;oBAAO;oBACvF,sBAAsB;oBACtB,2CAA2C;oBAC3C,0BAA0B;oBAC1B,OAAO;oBACP,OAAO,IAAIZ,KAAKQ,QAAQC;gBAC5B;YACJ,EAAE,OAAM;gBACJJ,MAAMX,QAAQW;YAClB;QACJ;IACJ;IAEA,CAAQQ,mBAAmBC,IAAa,EAAE;QACtC,OAAOC,OAAOC,OAAO,CAAC,IAAI,CAACC,WAAW,CAACC,YAAY,IAAI,CAAC;QACxD,IAAI,CAACJ,MACD,OAAOC,OAAOC,OAAO,CAAC,IAAI,CAACC,WAAW,CAACE,eAAe,IAAI,CAAC;IACnE;IAKA,YAAY,AAAgBC,OAAO,EACvB,AAAgBH,WAA6C,CAAE;QACvE,KAAK,SAFmBG,UAAAA,cACAH,cAAAA,kBAH5BI,YAAoB,EAAE;IAKtB;IAEOC,KAAKC,KAAY,EAAEC,QAA2B,EAAE;QACnD,MAAMC,OAAOV,OAAOW,IAAI,CAAC,IAAI,CAACT,WAAW,CAACC,YAAY,IAAI,CAAC;QAC3D,IAAI,CAACK,MAAMI,UAAU,EACjBF,KAAKG,IAAI,IAAIb,OAAOW,IAAI,CAAC,IAAI,CAACT,WAAW,CAACE,eAAe,IAAI,CAAC;QAClE,IAAI,CAACM,IAAI,GAAGA,KAAKI,GAAG,CAACC,CAAAA,IAAKN,SAASO,GAAG,CAACD,IAAIE,MAAM,CAACF,CAAAA,IAAK,CAAC,CAACA;QACzD,IAAI,CAACL,IAAI,CAACQ,OAAO,CAACH,CAAAA,IAAKA,EAAET,SAAS,CAACO,IAAI,CAAC,IAAI;QAC5C,KAAK,IAAIM,OAAO,IAAI,CAACT,IAAI,CAAE;YACvBS,IAAIC,gBAAgB,CAAC,UAAU,CAACC;gBAC5B,uBAAuB;gBACvB,IAAI,CAACC,aAAa,CAAC,IAAIC,YAAYF,EAAEG,OAAO,EAAEH,EAAEI,IAAI;YACxD;YACAN,IAAIC,gBAAgB,CAAC,QAAQ,CAACC;gBAC1B,uBAAuB;gBACvB,IAAI,CAACC,aAAa,CAAC,IAAII,gBAAgB,EAAE;YAC7C;QACJ;IACJ;IAEA,IAAWC,WAAW;QAClB,OAAO,CAAC,CAAC,IAAI,CAACzB,WAAW,CAAC0B,MAAM,EAAEC;IACtC;IAEA,IAAWC,OAAO;QACd,OAAO,IAAI,CAAC5B,WAAW,CAAC4B,IAAI;IAChC;IAIAC,IAAIC,IAAI,EAAE;QACN,IAAI,CAACC,IAAI,KAAK,IAAInD,YAAYoD,QAAQ;QACtC,IAAI,CAACD,IAAI,CAACE,IAAI,CAAC,IAAI,CAACjC,WAAW,CAAC4B,IAAI;QACpC,IAAI,CAACG,IAAI,CAACG,KAAK,CAAC,CAAC,CAAC,EAAEJ,KAAK,EAAE,CAAC;IAChC;IAEAK,MAAML,IAAI,EAAE;QACR,IAAI,CAACD,GAAG,CAAC,CAAC,WAAW,CAAC,GAAGC,KAAKM,QAAQ;IAC1C;IAGA,IAAIrC,UAAmB;QACnB,IAAI,IAAI,CAACsC,QAAQ,EAAE,OAAO,IAAI,CAACA,QAAQ;QACvC,IAAI,IAAI,CAACrC,WAAW,CAACsC,OAAO,IAAI,OAAO,IAAI,CAACtC,WAAW,CAACsC,OAAO,IAAI,UAAU;YACzE,MAAMC,SAAS,EAAE;YACjB,IAAK,IAAIC,QAAQ,IAAI,CAACxC,WAAW,CAACsC,OAAO,CAAE;gBACvC,IAAI,CAACE,KAAKC,UAAU,CAAC,MAAM;oBACvB,MAAMH,UAAU,IAAI,CAACtC,WAAW,CAACsC,OAAO;oBACxC,MAAMI,aAAaJ,QAAQK,OAAO,IAAIL,QAAQM,OAAO,IAAIN,QAAQO,MAAM;oBACvE,IAAI,CAACH,cAAc,CAAE,CAAA,OAAOA,eAAe,QAAO,GAAI;wBAClD,IAAI,CAACP,KAAK,CAAC,CAAC,sBAAsB,EAAEK,KAAK,KAAK,EAAE,IAAI,CAACxC,WAAW,CAAC4B,IAAI,EAAE;wBACvE;oBACJ;oBACAW,OAAO5B,IAAI,CAAC,IAAI,CAACmC,WAAW,CAAC,KAAKJ;oBAClC;gBACJ;gBACA,MAAMA,aAAa,IAAI,CAAC1C,WAAW,CAACsC,OAAO,CAACE,KAAK,CAACG,OAAO,IACrD,IAAI,CAAC3C,WAAW,CAACsC,OAAO,CAACE,KAAK,CAACK,MAAM,IACrC,IAAI,CAAC7C,WAAW,CAACsC,OAAO,CAACE,KAAK,CAACI,OAAO,IAAI,IAAI,CAAC5C,WAAW,CAACsC,OAAO,CAACE,KAAK;gBAC5E,IAAI,CAACE,cAAc,CAAE,CAAA,OAAOA,eAAe,QAAO,GAAI;oBAClD,IAAI,CAACP,KAAK,CAAC,CAAC,sBAAsB,EAAEK,KAAK,KAAK,EAAE,IAAI,CAACxC,WAAW,CAAC4B,IAAI,EAAE;oBACvE;gBACJ;gBACAW,OAAO5B,IAAI,CAAC,IAAI,CAACmC,WAAW,CAACN,MAAME;YACvC;YACA,OAAO,IAAI,CAACL,QAAQ,GAAGE;QAC3B;QACA,MAAMQ,QAAQ,IAAI,CAAC/C,WAAW,CAACgD,MAAM,IAC9B,IAAI,CAAChD,WAAW,CAACiD,IAAI,IACrB,IAAI,CAACjD,WAAW,CAACkD,OAAO,IACxB,IAAI,CAAClD,WAAW,CAACsC,OAAO;QAC/B,OAAO,IAAI,CAACD,QAAQ,GAAGU,QAAQ;YAAC,IAAI,CAACD,WAAW,CAAC,KAAKC;SAAO,GAAG,EAAE;IACtE;IAEA;;KAEC,GACDI,SAASvB,IAAY,EAAqB;QACtC,OAAO,IAAI,CAAC7B,OAAO,CAACqD,IAAI,CAACvC,CAAAA,IAAKA,EAAEe,IAAI,KAAKA;IAC7C;IAEUkB,YAAYlB,IAAY,EAAEyB,MAAc,EAAS;QACvD,MAAMC,WAAW3E,QAAQ,IAAI,CAACwB,OAAO,EAAEkD;QACvCzB,OAAOA,KAAK2B,OAAO,CAAC,WAAW;QAC/B,OAAO;YACH3B;YACAyB,QAAQC;YACRE,UAAUH,OAAOE,OAAO,CAAC,WAAW;YACpCE,YAAY;YACZC,QAAQ,WAAWC,IAAI,CAACN;YACxBO,QAAQ,IAAI,CAACC,SAAS,CAACjC,MAAMyB;YAC7BS,cAAc,WAAWH,IAAI,CAACN;YAC9BU,cAAc,WAAWJ,IAAI,CAACN;QAClC;IACJ;IAEAQ,UAAUd,KAAa,EAAEiB,IAAY,EAAE;QACnC,MAAMC,YAAYD,KAAKE,KAAK,CAAC,aAAa,CAAC,EAAE;QAC7C,MAAMC,YAAYpB,MACbQ,OAAO,CAAC,WAAW,IACnBA,OAAO,CAAC,YAAY,OAAO;QAChC,MAAMa,SAASH,UACVV,OAAO,CAAC,aAAa,MACrBA,OAAO,CAAC,0BAA0B;QACvC,OAAO,GAAGY,UAAU,CAAC,EAAEC,QAAQ;IACnC;;aAEeC,eAAuB;;IAEtC,IAAIC,aAAqB;QACrB,OAAO,GAAGvF,KAAKsF,YAAY,GAAG,IAAI,CAACzC,IAAI,EAAE;IAC7C;AAEJ;AAEA,OAAO,MAAMP,oBAAoBkD;IAI7B,YAAYjD,OAAO,EAAEC,IAAI,CAAE;QACvB,KAAK,CAAC;QACN,IAAI,CAACD,OAAO,GAAGA;IACnB;AACJ;AAEA,OAAO,MAAME,wBAAwB+C;IACjC,YAAY,AAAOC,KAAe,CAAE;QAChC,KAAK,CAAC,cADSA,QAAAA;IAEnB;AAEJ"}
@@ -0,0 +1,100 @@
1
+ import { Target } from "./target.js";
2
+ export class Resolver {
3
+ constructor(packs, flags){
4
+ this.packs = packs;
5
+ this.flags = flags;
6
+ this.basePath = '';
7
+ /**
8
+ * Resolve id to absolute path
9
+ * @param id - relative path: "react", "react/jsx-runtime.js", "loro-crdt/bundler", "loro-crdt/loro.wasm"...
10
+ * @param importer
11
+ * @param options
12
+ */ this.resolveId = (id, importer = null, options = null)=>{
13
+ if (options?.isEntry) return;
14
+ const pack = this.getPack(id);
15
+ if (!pack) return undefined;
16
+ return this.resolveInPack(pack.pack, pack.path, importer, options);
17
+ };
18
+ }
19
+ resolvePath(path, importer = null, options = null) {
20
+ const pack = this.getPack(path);
21
+ if (!pack) return undefined;
22
+ return this.resolveWithProxy(pack.pack, pack.path, importer, options) ?? pack;
23
+ }
24
+ resolveWithProxy(pack, path, importer = null, options = null) {
25
+ if (pack instanceof Target) {
26
+ for (let proxy of pack.proxy){
27
+ if (path.match(proxy.regex)) {
28
+ path = path.replace(proxy.regex, proxy.replace);
29
+ break;
30
+ }
31
+ }
32
+ }
33
+ return this.resolveInPack(pack, path, importer, options);
34
+ }
35
+ resolveInPack(pack, id, importer = null, options = null) {
36
+ if (options?.attributes?.resolve) {
37
+ return {
38
+ external: "absolute",
39
+ id: `${this.basePath}${pack.publicPath}`,
40
+ path: '',
41
+ entry: null,
42
+ pack
43
+ };
44
+ }
45
+ // id - absolute path inside pack: "", "/index.ts", "/src/page.html", "/bundler", "/loro.wasm"
46
+ const entry = pack.getEntry(id.replace(/^\//, ''));
47
+ if (!entry) {
48
+ return;
49
+ }
50
+ const resolved = !this.flags.production && pack instanceof Target ? entry.relative : entry.output;
51
+ return {
52
+ external: "absolute",
53
+ id: `${this.basePath}${pack.publicPath}/${resolved}`,
54
+ path: resolved,
55
+ entry,
56
+ pack
57
+ };
58
+ }
59
+ getPackNames() {
60
+ return this.packs.map((x)=>x.name);
61
+ }
62
+ getPack(id) {
63
+ if (id.startsWith(this.basePath)) id = id.substring(this.basePath.length);
64
+ for (const pack of this.packs){
65
+ if (pack.name == id) {
66
+ return {
67
+ pack,
68
+ path: ''
69
+ };
70
+ } else if (id.startsWith(pack.name + '/')) {
71
+ return {
72
+ pack,
73
+ path: id.substring(pack.name.length + 1)
74
+ };
75
+ } else if (id == pack.rootDir) {
76
+ return {
77
+ pack,
78
+ path: ''
79
+ };
80
+ } else if (id.startsWith(pack.rootDir)) {
81
+ return {
82
+ pack,
83
+ path: id.substring(pack.rootDir.length + 1)
84
+ };
85
+ } else if (id == pack.publicPath) {
86
+ return {
87
+ pack,
88
+ path: ''
89
+ };
90
+ } else if (id.startsWith(pack.publicPath + '/')) {
91
+ return {
92
+ pack,
93
+ path: id.substring(pack.publicPath.length + 1)
94
+ };
95
+ }
96
+ }
97
+ }
98
+ }
99
+
100
+ //# sourceMappingURL=resolver.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"sources":["/mnt/dev/cmmn/tools/model/resolver.ts"],"names":["Target","Resolver","packs","flags","basePath","resolveId","id","importer","options","isEntry","pack","getPack","undefined","resolveInPack","path","resolvePath","resolveWithProxy","proxy","match","regex","replace","attributes","resolve","external","publicPath","entry","getEntry","resolved","production","relative","output","getPackNames","map","x","name","startsWith","substring","length","rootDir"],"mappings":"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"}
@@ -0,0 +1,111 @@
1
+ import { join, relative } from "node:path";
2
+ import fs from "node:fs";
3
+ import { fileURLToPath } from "node:url";
4
+ import { getTSConfig } from "../helpers/getTSConfig.js";
5
+ import { minimatch } from "minimatch";
6
+ import { Pack } from "./pack.js";
7
+ export class Target extends Pack {
8
+ get publicPath() {
9
+ return this.packageJson.config?.publicPath ?? super.publicPath;
10
+ }
11
+ get tsConfig() {
12
+ return this._tsConfig ??= getTSConfig(join(this.rootDir, 'tsconfig.json'));
13
+ }
14
+ isExcluded(fileName, isRelative = false) {
15
+ if (!isRelative) fileName = relative(this.rootDir, fileName);
16
+ if (fileName.startsWith('./')) fileName = fileName.substring(2);
17
+ const check = (pattern)=>{
18
+ return fileName.startsWith(pattern) || minimatch(fileName, pattern);
19
+ };
20
+ const include = this.tsConfig.include ?? [];
21
+ if (include.length > 0) {
22
+ if (!include.some(check)) return true;
23
+ }
24
+ const exclude = this.tsConfig.exclude ?? [
25
+ 'dist',
26
+ 'node_modules'
27
+ ];
28
+ return exclude.some(check);
29
+ }
30
+ get swcConfigPath() {
31
+ const local = join(this.rootDir, '.swcrc');
32
+ if (fs.existsSync(local)) return local;
33
+ return fileURLToPath(import.meta.resolve('@cmmn/tools/swcrc'));
34
+ }
35
+ get swcConfig() {
36
+ this.swcConfigBase ??= JSON.parse(fs.readFileSync(this.swcConfigPath, {
37
+ encoding: 'utf-8'
38
+ }));
39
+ const tsConfig = this.tsConfig;
40
+ return this._swcConfig ??= {
41
+ ...this.swcConfigBase,
42
+ jsc: {
43
+ ...this.swcConfigBase.jsc,
44
+ baseUrl: this.rootDir,
45
+ paths: tsConfig.compilerOptions?.paths
46
+ },
47
+ module: {
48
+ type: 'es6',
49
+ strict: true,
50
+ strictMode: false,
51
+ resolveFully: true
52
+ },
53
+ sourceMaps: true,
54
+ inlineSourcesContent: false
55
+ };
56
+ }
57
+ async getPublishPackageJson() {
58
+ const packageJson = JSON.parse(JSON.stringify(this.packageJson));
59
+ for (let entry of this.entries){
60
+ if (entry.isHTML || entry.isExcluded) continue;
61
+ const typings = entry.isTypeScript ? './' + join('./dist/typings', relative(this.rootDir, entry.source.replace(/\.ts$/, '.d.ts'))) : undefined;
62
+ const bundle = `./dist/bundle/${entry.output}`;
63
+ if (packageJson.exports) {
64
+ packageJson.exports[entry.name ? "./" + entry.name : "."] = {
65
+ default: bundle,
66
+ typings
67
+ };
68
+ } else {
69
+ packageJson.main = bundle;
70
+ packageJson.typings = typings;
71
+ }
72
+ }
73
+ delete packageJson.module;
74
+ delete packageJson.browser;
75
+ delete packageJson.scripts;
76
+ delete packageJson.devDependencies;
77
+ if (!packageJson.files) packageJson.files = [
78
+ 'dist'
79
+ ];
80
+ return JSON.stringify(packageJson, null, '\t');
81
+ }
82
+ createEntry(name, source) {
83
+ return {
84
+ ...super.createEntry(name, source),
85
+ isExcluded: this.isExcluded(source, true)
86
+ };
87
+ }
88
+ get https() {
89
+ const host = this.packageJson.config?.host;
90
+ if (!host) return null;
91
+ return {
92
+ host,
93
+ port: this.packageJson.config.port,
94
+ cert: join(this.rootDir, `dist/${host}.pem`),
95
+ key: join(this.rootDir, `dist/${host}-key.pem`)
96
+ };
97
+ }
98
+ get proxy() {
99
+ return this._proxy ??= Object.entries({
100
+ ...this.packageJson.config?.proxy ?? {}
101
+ }).map(([regex, replace])=>({
102
+ regex: new RegExp(regex),
103
+ replace
104
+ }));
105
+ }
106
+ constructor(...args){
107
+ super(...args), this.publicDir = join(this.rootDir, 'public');
108
+ }
109
+ }
110
+
111
+ //# sourceMappingURL=target.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"sources":["/mnt/dev/cmmn/tools/model/target.ts"],"names":["join","relative","fs","fileURLToPath","getTSConfig","minimatch","Pack","Target","publicPath","packageJson","config","tsConfig","_tsConfig","rootDir","isExcluded","fileName","isRelative","startsWith","substring","check","pattern","include","length","some","exclude","swcConfigPath","local","existsSync","resolve","swcConfig","swcConfigBase","JSON","parse","readFileSync","encoding","_swcConfig","jsc","baseUrl","paths","compilerOptions","module","type","strict","strictMode","resolveFully","sourceMaps","inlineSourcesContent","getPublishPackageJson","stringify","entry","entries","isHTML","typings","isTypeScript","source","replace","undefined","bundle","output","exports","name","default","main","browser","scripts","devDependencies","files","createEntry","https","host","port","cert","key","proxy","_proxy","Object","map","regex","RegExp","publicDir"],"mappings":"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"}
@@ -0,0 +1,20 @@
1
+ import { PackServer } from "./pack-server.js";
2
+ export class BundleServer extends PackServer {
3
+ constructor(pack, bundler){
4
+ super(pack), this.bundler = bundler;
5
+ }
6
+ async handle(request, reply) {
7
+ const path = request.url.substring(this.pack.publicPath.length).replace(/^\//, '').split('?')[0];
8
+ reply.type(this.getMimeType(path));
9
+ // if (path.startsWith('/_/'))
10
+ // return reply.code(404).send('Not found');
11
+ this.pack.log(`^B${request.method}^w ^B${path}^w`);
12
+ const bundle = await (this.bundleRequest ??= this.bundler.bundle());
13
+ if (path == "bundle.json") return JSON.stringify(await bundle.getBundleJson());
14
+ const result = bundle.get(path) ?? await bundle.getPublicAsset(path);
15
+ if (result === undefined) return reply.code(404).send('Not found');
16
+ return result;
17
+ }
18
+ }
19
+
20
+ //# sourceMappingURL=bundle-server.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"sources":["/mnt/dev/cmmn/tools/servers/bundle-server.ts"],"names":["PackServer","BundleServer","pack","bundler","handle","request","reply","path","url","substring","publicPath","length","replace","split","type","getMimeType","log","method","bundle","bundleRequest","JSON","stringify","getBundleJson","result","get","getPublicAsset","undefined","code","send"],"mappings":"AAEA,SAAQA,UAAU,QAAO,mBAAgB;AAKzC,OAAO,MAAMC,qBAAqBD;IAE9B,YAAYE,IAAU,EAAE,AAAQC,OAAiB,CAAE;QAC/C,KAAK,CAACD,YADsBC,UAAAA;IAEhC;IAGA,MAAgBC,OAAOC,OAAuB,EAAEC,KAAmB,EAAC;QAChE,MAAMC,OAAOF,QAAQG,GAAG,CAACC,SAAS,CAAC,IAAI,CAACP,IAAI,CAACQ,UAAU,CAACC,MAAM,EACzDC,OAAO,CAAC,OAAO,IACfC,KAAK,CAAC,IAAI,CAAC,EAAE;QAClBP,MAAMQ,IAAI,CAAC,IAAI,CAACC,WAAW,CAACR;QAC5B,8BAA8B;QAC9B,gDAAgD;QAChD,IAAI,CAACL,IAAI,CAACc,GAAG,CACT,CAAC,EAAE,EAAEX,QAAQY,MAAM,CAAC,KAAK,EAAEV,KAAK,EAAE,CAAC;QAEvC,MAAMW,SAAS,MAAO,CAAA,IAAI,CAACC,aAAa,KAAK,IAAI,CAAChB,OAAO,CAACe,MAAM,EAAC;QACjE,IAAIX,QAAO,eACP,OAAOa,KAAKC,SAAS,CAAC,MAAMH,OAAOI,aAAa;QACpD,MAAMC,SAASL,OAAOM,GAAG,CAACjB,SAAS,MAAMW,OAAOO,cAAc,CAAClB;QAC/D,IAAIgB,WAAWG,WACX,OAAOpB,MAAMqB,IAAI,CAAC,KAAKC,IAAI,CAAC;QAChC,OAAOL;IACX;AAEJ"}
@@ -0,0 +1,70 @@
1
+ import { Target } from "../model/target.js";
2
+ import { BundleServer } from "./bundle-server.js";
3
+ import { ViteDevelopmentServer } from "./vite-dev-server.js";
4
+ import { TargetRunner } from "./target-runnner.js";
5
+ export class DevServer {
6
+ get resolver() {
7
+ return this.monorepo.resolver;
8
+ }
9
+ createServer(pack) {
10
+ if (pack instanceof Target) {
11
+ if (pack.packageJson.bin) {
12
+ return new TargetRunner(pack);
13
+ }
14
+ if (this.monorepo.flags.production) {
15
+ const bundler = this.monorepo.createBundler(pack);
16
+ return new BundleServer(pack, bundler);
17
+ }
18
+ return new ViteDevelopmentServer(pack, this.monorepo);
19
+ }
20
+ const bundler = this.monorepo.createBundler(pack);
21
+ return new BundleServer(pack, bundler);
22
+ }
23
+ get isBundler() {
24
+ return this.monorepo.flags.production;
25
+ }
26
+ constructor(monorepo){
27
+ this.monorepo = monorepo;
28
+ this.rootTarget = this.monorepo.root;
29
+ this.targetServers = new Map(this.monorepo.packs.map((pack)=>[
30
+ pack,
31
+ this.createServer(pack)
32
+ ]));
33
+ this.rewriteUrl = (req)=>{
34
+ if (req.url.includes('@ws')) return req.url;
35
+ const [path, query] = req.url.split('?');
36
+ const resolved = this.resolver.resolvePath(path, null, {
37
+ attributes: {
38
+ resolve: query?.includes('resolve') ? true : undefined
39
+ }
40
+ });
41
+ if (resolved) {
42
+ return resolved.pack.publicPath + '/' + resolved.path + (query ? '?' + query : '');
43
+ }
44
+ return req.url;
45
+ };
46
+ }
47
+ async register(app) {
48
+ for (let targetServer of this.targetServers.values()){
49
+ await targetServer.register(app);
50
+ }
51
+ app.addHook('preHandler', async (request, reply)=>{
52
+ if (request.url.endsWith('?resolve')) return reply.type('application/javascript').send(`export default ${JSON.stringify(request.url.split('?')[0])}`);
53
+ });
54
+ app.addHook('preHandler', async (req, res)=>{
55
+ this.resolver.basePath = `${req.headers.protocol ?? req.protocol}://${req.headers.host ?? req.host}`;
56
+ });
57
+ app.addHook('onError', (req, res, error)=>{
58
+ this.rootTarget.error(`${req.url}: ${error}`);
59
+ res.status(422).send('Failed to process request');
60
+ });
61
+ if (this.isBundler) {
62
+ app.get('/_sw.js', (req, res)=>{
63
+ const worker = this.resolver.resolveId("@cmmn/service-worker/worker");
64
+ res.type('application/javascript').send(`import "${worker.id}"`);
65
+ });
66
+ }
67
+ }
68
+ }
69
+
70
+ //# sourceMappingURL=dev-server.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"sources":["/mnt/dev/cmmn/tools/servers/dev-server.ts"],"names":["Target","BundleServer","ViteDevelopmentServer","TargetRunner","DevServer","resolver","monorepo","createServer","pack","packageJson","bin","flags","production","bundler","createBundler","isBundler","rootTarget","root","targetServers","Map","packs","map","rewriteUrl","req","url","includes","path","query","split","resolved","resolvePath","attributes","resolve","undefined","publicPath","register","app","targetServer","values","addHook","request","reply","endsWith","type","send","JSON","stringify","res","basePath","headers","protocol","host","error","status","get","worker","resolveId","id"],"mappings":"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"}
@@ -0,0 +1,20 @@
1
+ import mime from "mime-types";
2
+ export class PackServer {
3
+ constructor(pack){
4
+ this.pack = pack;
5
+ }
6
+ async register(app) {
7
+ app.get(this.pack.publicPath, (req, res)=>{
8
+ return this.handle(req, res);
9
+ });
10
+ app.get(this.pack.publicPath + '/*', (req, res)=>{
11
+ return this.handle(req, res);
12
+ });
13
+ }
14
+ getMimeType(path) {
15
+ if (path.match(/\.([tj]sx?|cjs|mjs)$/)) return 'application/javascript';
16
+ return mime.lookup(path);
17
+ }
18
+ }
19
+
20
+ //# sourceMappingURL=pack-server.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"sources":["/mnt/dev/cmmn/tools/servers/pack-server.ts"],"names":["mime","PackServer","pack","register","app","get","publicPath","req","res","handle","getMimeType","path","match","lookup"],"mappings":"AAEA,OAAOA,UAAU,aAAa;AAE9B,OAAO,MAAeC;IAClB,YAAY,AAAUC,IAAU,CAAE;aAAZA,OAAAA;IAEtB;IAIA,MAAMC,SAASC,GAAoB,EAAE;QACjCA,IAAIC,GAAG,CAAC,IAAI,CAACH,IAAI,CAACI,UAAU,EAAE,CAACC,KAAKC;YAChC,OAAO,IAAI,CAACC,MAAM,CAACF,KAAKC;QAC5B;QACAJ,IAAIC,GAAG,CAAC,IAAI,CAACH,IAAI,CAACI,UAAU,GAAG,MAAM,CAACC,KAAKC;YACvC,OAAO,IAAI,CAACC,MAAM,CAACF,KAAKC;QAC5B;IACJ;IAEAE,YAAYC,IAAY,EAAC;QACrB,IAAIA,KAAKC,KAAK,CAAC,yBACX,OAAO;QACX,OAAOZ,KAAKa,MAAM,CAACF;IACvB;AACJ"}