@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,230 @@
1
+ import { getOrderedPackages } from "./getProjects.js";
2
+ import path, { join, relative, resolve } from "node:path";
3
+ import fs from "node:fs";
4
+ import { fileURLToPath } from "node:url";
5
+ import { getTSConfig } from "./getTSConfig.js";
6
+ import terminalKit from "terminal-kit";
7
+ import { minimatch } from "minimatch";
8
+ import { FileChangeEvent } from "./watcher.js";
9
+ import { readdir, stat } from "node:fs/promises";
10
+ export class Target extends EventTarget {
11
+ get publicPath() {
12
+ return this.packageJson.config?.publicPath;
13
+ }
14
+ constructor(rootDir, flags, deps){
15
+ super(), this.rootDir = rootDir, this.publicDir = join(this.rootDir, 'public'), this.reactions = [];
16
+ this.flags = flags;
17
+ this.deps = deps;
18
+ this.depsMap = new Map(deps.map((x)=>[
19
+ x.packageJson.name,
20
+ x
21
+ ]));
22
+ for (let dep of this.deps){
23
+ dep.addEventListener('change', (e)=>{
24
+ this.dispatchEvent(new ChangeEvent(e.payload, e.from));
25
+ });
26
+ dep.addEventListener('file', (e)=>{
27
+ this.dispatchEvent(new FileChangeEvent([]));
28
+ });
29
+ dep.reactions.push(this);
30
+ }
31
+ }
32
+ static async readTargets(rootDir, flags) {
33
+ if (flags.workspace) {
34
+ return [
35
+ new Target(resolve(rootDir, flags.workspace), flags, [])
36
+ ];
37
+ }
38
+ const result = new Map();
39
+ for await (let project of getOrderedPackages(rootDir)){
40
+ const depProjects = project.deps.map((x)=>result.get(x));
41
+ result.set(project.root, new Target(project.root, flags, depProjects));
42
+ }
43
+ return Array.from(result.values());
44
+ }
45
+ get packageJson() {
46
+ const pkgPath = path.join(this.rootDir, 'package.json');
47
+ return this._packageJson ??= JSON.parse(fs.readFileSync(pkgPath, 'utf8'));
48
+ }
49
+ get externalDependencies() {
50
+ return [
51
+ ...Object.keys(this.packageJson.dependencies ?? {}),
52
+ ...Object.keys(this.flags.production ? {} : this.packageJson.devDependencies ?? {})
53
+ ];
54
+ }
55
+ get tsConfig() {
56
+ return this._tsConfig ??= getTSConfig(join(this.rootDir, 'tsconfig.json'));
57
+ }
58
+ isExcluded(fileName, isRelative = false) {
59
+ if (!isRelative) fileName = relative(this.rootDir, fileName);
60
+ if (fileName.startsWith('./')) fileName = fileName.substring(2);
61
+ const check = (pattern)=>{
62
+ return fileName.startsWith(pattern) || minimatch(fileName, pattern);
63
+ };
64
+ const include = this.tsConfig.include ?? [];
65
+ if (include.length > 0) {
66
+ if (!include.some(check)) return true;
67
+ }
68
+ const exclude = this.tsConfig.exclude ?? [
69
+ 'dist',
70
+ 'node_modules'
71
+ ];
72
+ return exclude.some(check);
73
+ }
74
+ get swcConfigPath() {
75
+ const local = join(this.rootDir, '.swcrc');
76
+ if (fs.existsSync(local)) return local;
77
+ return fileURLToPath(import.meta.resolve('@cmmn/tools/swcrc'));
78
+ }
79
+ get swcConfig() {
80
+ this.swcConfigBase ??= JSON.parse(fs.readFileSync(this.swcConfigPath, {
81
+ encoding: 'utf-8'
82
+ }));
83
+ const tsConfig = this.tsConfig;
84
+ return this._swcConfig ??= {
85
+ ...this.swcConfigBase,
86
+ jsc: {
87
+ ...this.swcConfigBase.jsc,
88
+ baseUrl: this.rootDir,
89
+ paths: tsConfig.compilerOptions?.paths,
90
+ minify: this.flags.minify ? {
91
+ compress: {
92
+ booleans_as_integers: true,
93
+ ecma: 2020
94
+ },
95
+ mangle: {
96
+ topLevel: true
97
+ },
98
+ ecma: '2020',
99
+ format: {
100
+ comments: false,
101
+ asciiOnly: true
102
+ }
103
+ } : undefined
104
+ },
105
+ module: {
106
+ type: 'es6',
107
+ strict: true,
108
+ strictMode: false,
109
+ resolveFully: true
110
+ },
111
+ sourceMaps: true,
112
+ inlineSourcesContent: false
113
+ };
114
+ }
115
+ get entries() {
116
+ if (this._entries) return this._entries;
117
+ if (this.packageJson.exports && typeof this.packageJson.exports == "object") {
118
+ const result = [];
119
+ for(let item in this.packageJson.exports){
120
+ const importFile = this.packageJson.exports[item].require ?? this.packageJson.exports[item].default ?? this.packageJson.exports[item];
121
+ if (!importFile || !(typeof importFile === "string")) {
122
+ this.error(`Failed to read entry '${item}' in ${this.packageJson.name}`);
123
+ continue;
124
+ }
125
+ result.push(this.createEntry(item, importFile));
126
+ }
127
+ return this._entries = result;
128
+ }
129
+ const entry = this.packageJson.module ?? this.packageJson.main ?? this.packageJson.browser ?? this.packageJson.exports;
130
+ return this._entries = [
131
+ this.createEntry('.', entry)
132
+ ];
133
+ }
134
+ getEntry(name) {
135
+ return this.entries.find((x)=>x.name === name);
136
+ }
137
+ createEntry(name, source) {
138
+ const absolute = resolve(this.rootDir, source);
139
+ const isExcluded = this.isExcluded(source, true);
140
+ return {
141
+ name,
142
+ source: absolute,
143
+ relative: source,
144
+ isExcluded,
145
+ isHTML: /\.html$/i.test(source),
146
+ output: this.getExport(name, source),
147
+ isTypeScript: /\.tsx?$/i.test(source),
148
+ isJavaScript: /\.jsx?$/i.test(source)
149
+ };
150
+ }
151
+ log(text) {
152
+ this.term ??= new terminalKit.Terminal();
153
+ this.term.blue(this.packageJson.name);
154
+ this.term.white(` ${text}\n`);
155
+ }
156
+ error(text) {
157
+ this.log(`^RERROR: ^w` + text.toString());
158
+ }
159
+ getExport(entry, file) {
160
+ // if (this.isExcluded(file, true))
161
+ // return file;
162
+ const extension = file.match(/\.([^.]+)$/)[1];
163
+ const entryName = entry.replace(/^\.?\/?/, '').replace(/\.[^.]+$/, '') || 'index';
164
+ const outExt = extension.replace(/^[jt]sx?$/, 'js').replace(/^(less|css|sass|scss)$/, 'css');
165
+ return `${entryName}.${outExt}`;
166
+ }
167
+ async getPublishPackageJson() {
168
+ const packageJson = JSON.parse(JSON.stringify(this.packageJson));
169
+ for (let entry of this.entries){
170
+ if (entry.isHTML || entry.isExcluded) continue;
171
+ const typings = entry.isTypeScript ? './' + join('./dist/typings', relative(this.rootDir, entry.source.replace(/\.ts$/, '.d.ts'))) : undefined;
172
+ const bundle = `./dist/bundle/${entry.output}`;
173
+ if (packageJson.exports) {
174
+ packageJson.exports[entry.name] = {
175
+ default: bundle,
176
+ typings
177
+ };
178
+ } else {
179
+ packageJson.main = bundle;
180
+ packageJson.typings = typings;
181
+ }
182
+ }
183
+ delete packageJson.module;
184
+ delete packageJson.browser;
185
+ delete packageJson.scripts;
186
+ delete packageJson.devDependencies;
187
+ if (!packageJson.files) packageJson.files = [
188
+ 'dist'
189
+ ];
190
+ return JSON.stringify(packageJson, null, '\t');
191
+ }
192
+ async *getPublicAssets() {
193
+ for (let file of (await readdir(this.publicDir, {
194
+ recursive: true
195
+ }).catch(()=>[]))){
196
+ const info = await stat(path.join(this.publicDir, file));
197
+ yield {
198
+ path: file,
199
+ hash: info.mtimeMs.toString(36),
200
+ size: info.size
201
+ };
202
+ }
203
+ }
204
+ get https() {
205
+ const host = this.packageJson.config?.host;
206
+ if (!host) return null;
207
+ return {
208
+ host,
209
+ port: this.packageJson.config.port,
210
+ cert: join(this.rootDir, `dist/${host}.pem`),
211
+ key: join(this.rootDir, `dist/${host}-key.pem`)
212
+ };
213
+ }
214
+ get proxy() {
215
+ return this._proxy ??= Object.entries({
216
+ ...this.packageJson.config?.proxy ?? {}
217
+ }).map(([regex, replace])=>({
218
+ regex: new RegExp(regex),
219
+ replace
220
+ }));
221
+ }
222
+ }
223
+ export class ChangeEvent extends Event {
224
+ constructor(payload, from){
225
+ super('change');
226
+ this.payload = payload;
227
+ }
228
+ }
229
+
230
+ //# sourceMappingURL=target.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"sources":["/mnt/dev/cmmn/tools/helpers/target.ts"],"names":["getOrderedPackages","path","join","relative","resolve","fs","fileURLToPath","getTSConfig","terminalKit","minimatch","FileChangeEvent","readdir","stat","Target","EventTarget","publicPath","packageJson","config","rootDir","flags","deps","publicDir","reactions","depsMap","Map","map","x","name","dep","addEventListener","e","dispatchEvent","ChangeEvent","payload","from","push","readTargets","workspace","result","project","depProjects","get","set","root","Array","values","pkgPath","_packageJson","JSON","parse","readFileSync","externalDependencies","Object","keys","dependencies","production","devDependencies","tsConfig","_tsConfig","isExcluded","fileName","isRelative","startsWith","substring","check","pattern","include","length","some","exclude","swcConfigPath","local","existsSync","swcConfig","swcConfigBase","encoding","_swcConfig","jsc","baseUrl","paths","compilerOptions","minify","compress","booleans_as_integers","ecma","mangle","topLevel","format","comments","asciiOnly","undefined","module","type","strict","strictMode","resolveFully","sourceMaps","inlineSourcesContent","entries","_entries","exports","item","importFile","require","default","error","createEntry","entry","main","browser","getEntry","find","source","absolute","isHTML","test","output","getExport","isTypeScript","isJavaScript","log","text","term","Terminal","blue","white","toString","file","extension","match","entryName","replace","outExt","getPublishPackageJson","stringify","typings","bundle","scripts","files","getPublicAssets","recursive","catch","info","hash","mtimeMs","size","https","host","port","cert","key","proxy","_proxy","regex","RegExp","Event"],"mappings":"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"}
@@ -0,0 +1,117 @@
1
+ var _computedKey;
2
+ import terminalKit from "terminal-kit";
3
+ _computedKey = Symbol.dispose;
4
+ export class Terminal {
5
+ constructor(flags, targets){
6
+ this.term = terminalKit.terminal;
7
+ this.headers = [
8
+ 'target',
9
+ 'state',
10
+ 'size',
11
+ 'time'
12
+ ];
13
+ this.startTime = +performance.now();
14
+ this.data = {};
15
+ this.flags = flags;
16
+ this.targets = targets;
17
+ this.renderInfo();
18
+ this.renderTable();
19
+ }
20
+ setData(target, data) {
21
+ const targetData = this.data[target.packageJson.name] ??= {
22
+ name: target.packageJson.name
23
+ };
24
+ Object.assign(targetData, {
25
+ time: performance.now() - (targetData.time ?? this.startTime),
26
+ ...data
27
+ });
28
+ this.renderTable(this.flags.watch);
29
+ if (!this.flags.watch) this.data = {};
30
+ }
31
+ renderInfo() {
32
+ this.term.yellow('CMMN bundler');
33
+ if (this.flags.watch) {
34
+ this.term.green(' ✓ watch');
35
+ } else {
36
+ this.term.red(' ❌ watch');
37
+ }
38
+ if (this.flags.minify) {
39
+ this.term.green(' ✓ minify\n');
40
+ } else {
41
+ this.term.red(' ❌ minify\n');
42
+ }
43
+ }
44
+ renderTable() {
45
+ const showHeader = this.flags.watch || Object.keys(this.data).length === 0;
46
+ if (this.flags.watch) {
47
+ this.term.clear();
48
+ this.renderInfo();
49
+ }
50
+ this.term.table(this.fit([
51
+ ...showHeader ? [
52
+ this.headers
53
+ ] : [],
54
+ ...Object.entries(this.data).map(([name, data])=>[
55
+ name,
56
+ data.state,
57
+ this.getSize(data.size),
58
+ this.getTime(data.time)
59
+ ])
60
+ ]), {
61
+ ...showHeader ? {
62
+ firstRowTextAttr: {
63
+ bgColor: 'yellow'
64
+ },
65
+ firstRowVoidAttr: {
66
+ bgColor: 'yellow'
67
+ }
68
+ } : {},
69
+ textAttr: {
70
+ bgColor: 'black',
71
+ color: 'cyan'
72
+ },
73
+ voidAttr: {
74
+ bgColor: 'black',
75
+ color: 'cyan'
76
+ },
77
+ firstColumnTextAttr: {
78
+ width: 40
79
+ },
80
+ hasBorder: false,
81
+ width: 60,
82
+ fit: false,
83
+ clear: this.flags.watch
84
+ });
85
+ }
86
+ fit(data) {
87
+ const nameWidth = Math.max(...this.targets.map((x)=>x.packageJson.name.length), 10) + 1;
88
+ const widths = [
89
+ nameWidth,
90
+ 6,
91
+ 10,
92
+ 10
93
+ ];
94
+ function setWidth(str, width, alignLeft) {
95
+ const pad = width - str.length;
96
+ const fill = Array(Math.max(pad, 0)).fill(' ').join('');
97
+ return alignLeft ? str + fill : fill + str;
98
+ }
99
+ return data.map((d)=>d.map((value, i)=>setWidth(value, widths[i], i < 2)));
100
+ }
101
+ getTime(time) {
102
+ if (time < 1000) return time.toFixed(0) + 'ms';
103
+ else return (time / 1000).toFixed(3) + 's';
104
+ }
105
+ getSize(size) {
106
+ if (typeof size != "number") return '';
107
+ const c = 0.8;
108
+ for (let ch of 'bKMGT'){
109
+ if (size < c * 1024) return size.toFixed(2) + ch;
110
+ size /= 1024;
111
+ }
112
+ return 'Too big';
113
+ }
114
+ [_computedKey]() {}
115
+ }
116
+
117
+ //# sourceMappingURL=terminal.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"sources":["/mnt/dev/cmmn/tools/helpers/terminal.js"],"names":["terminalKit","Symbol","dispose","Terminal","flags","targets","term","terminal","headers","startTime","performance","now","data","renderInfo","renderTable","setData","target","targetData","packageJson","name","Object","assign","time","watch","yellow","green","red","minify","showHeader","keys","length","clear","table","fit","entries","map","state","getSize","size","getTime","firstRowTextAttr","bgColor","firstRowVoidAttr","textAttr","color","voidAttr","firstColumnTextAttr","width","hasBorder","nameWidth","Math","max","x","widths","setWidth","str","alignLeft","pad","fill","Array","join","d","value","i","toFixed","c","ch"],"mappings":";AAAA,OAAOA,iBAAiB,eAAe;eA2GlCC,OAAOC,OAAO;AAzGnB,OAAO,MAAMC;IAcT,YAAYC,KAAK,EAAEC,OAAO,CAAE;aAb5BC,OAAON,YAAYO,QAAQ;aAU3BC,UAAU;YAAC;YAAU;YAAS;YAAQ;SAAO;aAC7CC,YAAY,CAACC,YAAYC,GAAG;aAC5BC,OAAO,CAAC;QAEJ,IAAI,CAACR,KAAK,GAAGA;QACb,IAAI,CAACC,OAAO,GAAGA;QACf,IAAI,CAACQ,UAAU;QACf,IAAI,CAACC,WAAW;IACpB;IAEAC,QAAQC,MAAM,EAAEJ,IAAI,EAAE;QAClB,MAAMK,aAAa,IAAI,CAACL,IAAI,CAACI,OAAOE,WAAW,CAACC,IAAI,CAAC,KAAK;YACtDA,MAAMH,OAAOE,WAAW,CAACC,IAAI;QACjC;QACAC,OAAOC,MAAM,CAACJ,YAAY;YACtBK,MAAMZ,YAAYC,GAAG,KAAMM,CAAAA,WAAWK,IAAI,IAAI,IAAI,CAACb,SAAS,AAAD;YAC3D,GAAGG,IAAI;QACX;QACA,IAAI,CAACE,WAAW,CAAC,IAAI,CAACV,KAAK,CAACmB,KAAK;QACjC,IAAI,CAAC,IAAI,CAACnB,KAAK,CAACmB,KAAK,EACjB,IAAI,CAACX,IAAI,GAAG,CAAC;IACrB;IAEAC,aAAa;QACT,IAAI,CAACP,IAAI,CAACkB,MAAM,CAAC;QACjB,IAAI,IAAI,CAACpB,KAAK,CAACmB,KAAK,EAAE;YAClB,IAAI,CAACjB,IAAI,CAACmB,KAAK,CAAC;QACpB,OAAO;YACH,IAAI,CAACnB,IAAI,CAACoB,GAAG,CAAC;QAClB;QACA,IAAI,IAAI,CAACtB,KAAK,CAACuB,MAAM,EAAE;YACnB,IAAI,CAACrB,IAAI,CAACmB,KAAK,CAAC;QACpB,OAAO;YACH,IAAI,CAACnB,IAAI,CAACoB,GAAG,CAAC;QAClB;IACJ;IAEAZ,cAAa;QACT,MAAMc,aAAa,IAAI,CAACxB,KAAK,CAACmB,KAAK,IAAIH,OAAOS,IAAI,CAAC,IAAI,CAACjB,IAAI,EAAEkB,MAAM,KAAK;QACzE,IAAI,IAAI,CAAC1B,KAAK,CAACmB,KAAK,EAAC;YACjB,IAAI,CAACjB,IAAI,CAACyB,KAAK;YACf,IAAI,CAAClB,UAAU;QACnB;QACA,IAAI,CAACP,IAAI,CAAC0B,KAAK,CAAC,IAAI,CAACC,GAAG,CAAC;eACjBL,aAAa;gBAAC,IAAI,CAACpB,OAAO;aAAC,GAAG,EAAE;eACjCY,OAAOc,OAAO,CAAC,IAAI,CAACtB,IAAI,EAAEuB,GAAG,CAAC,CAAC,CAAChB,MAAMP,KAAK,GAAK;oBAC/CO;oBACAP,KAAKwB,KAAK;oBACV,IAAI,CAACC,OAAO,CAACzB,KAAK0B,IAAI;oBACtB,IAAI,CAACC,OAAO,CAAC3B,KAAKU,IAAI;iBACzB;SACJ,GAAG;YACA,GAAIM,aAAa;gBACbY,kBAAkB;oBAACC,SAAS;gBAAQ;gBACpCC,kBAAkB;oBAACD,SAAS;gBAAQ;YACxC,IAAI,CAAC,CAAC;YACNE,UAAU;gBAACF,SAAS;gBAASG,OAAO;YAAM;YAC1CC,UAAU;gBAACJ,SAAS;gBAASG,OAAO;YAAM;YAC1CE,qBAAqB;gBAAEC,OAAO;YAAG;YACjCC,WAAW;YACXD,OAAO;YACPd,KAAK;YACLF,OAAO,IAAI,CAAC3B,KAAK,CAACmB,KAAK;QAC3B;IACJ;IAEAU,IAAIrB,IAAI,EAAC;QACL,MAAMqC,YAAYC,KAAKC,GAAG,IAAI,IAAI,CAAC9C,OAAO,CAAC8B,GAAG,CAACiB,CAAAA,IAAKA,EAAElC,WAAW,CAACC,IAAI,CAACW,MAAM,GAAG,MAAM;QACtF,MAAMuB,SAAS;YAACJ;YAAW;YAAG;YAAI;SAAG;QACrC,SAASK,SAASC,GAAG,EAAER,KAAK,EAAES,SAAS;YACnC,MAAMC,MAAMV,QAAQQ,IAAIzB,MAAM;YAC9B,MAAM4B,OAAOC,MAAMT,KAAKC,GAAG,CAACM,KAAK,IAAIC,IAAI,CAAC,KAAKE,IAAI,CAAC;YACpD,OAAOJ,YAAYD,MAAMG,OAAOA,OAAOH;QAC3C;QACA,OAAO3C,KAAKuB,GAAG,CAAC0B,CAAAA,IAAKA,EAAE1B,GAAG,CAAC,CAAC2B,OAAOC,IAAMT,SAASQ,OAAOT,MAAM,CAACU,EAAE,EAAEA,IAAI;IAC5E;IAEAxB,QAAQjB,IAAI,EAAE;QACV,IAAIA,OAAO,MACP,OAAOA,KAAK0C,OAAO,CAAC,KAAK;aAEzB,OAAO,AAAC1C,CAAAA,OAAO,IAAG,EAAG0C,OAAO,CAAC,KAAK;IAC1C;IACA3B,QAAQC,IAAI,EAAE;QACV,IAAI,OAAOA,QAAQ,UAAU,OAAO;QACpC,MAAM2B,IAAI;QACV,KAAK,IAAIC,MAAM,QAAS;YACpB,IAAI5B,OAAO2B,IAAI,MACX,OAAO3B,KAAK0B,OAAO,CAAC,KAAKE;YAC7B5B,QAAQ;QACZ;QACA,OAAO;IACX;IAEA,iBAAkB,CAClB;AACJ"}
@@ -0,0 +1,139 @@
1
+ import ts from "typescript";
2
+ import path from "path";
3
+ import fs from "fs";
4
+ import { ImportPathsResolver } from "@zerollup/ts-helpers";
5
+ class Visitor {
6
+ /**
7
+ *
8
+ * @param context {ts.TransformationContext}
9
+ */ constructor(context, config){
10
+ this.visitSourceFile = (sourceFile)=>ts.visitEachChild(sourceFile, (node)=>this.visit(node, sourceFile), this.context);
11
+ this.context = context;
12
+ this.options = context.getCompilerOptions();
13
+ this.resolver = new ImportPathsResolver({
14
+ paths: this.options.paths,
15
+ baseUrl: this.options.baseUrl,
16
+ exclude: []
17
+ });
18
+ this.config = {
19
+ copy: /\.(less|css|scss|sass|png|jpg|ico)$/,
20
+ import: /\.(txt|sql|svg|html)$/,
21
+ ...config
22
+ };
23
+ }
24
+ findFile(importPath, sourceFile) {
25
+ const sourceFileDir = path.dirname(sourceFile.fileName);
26
+ return [
27
+ importPath + "/index.ts",
28
+ importPath + ".ts",
29
+ importPath + ".tsx",
30
+ importPath + "/index.ts",
31
+ importPath + ".js",
32
+ importPath + ".jsx",
33
+ importPath,
34
+ importPath.replace(/\.js$/, ".ts")
35
+ ].find((x)=>fs.existsSync(path.resolve(sourceFileDir, x)))?.replace(/(\.ts)x?$/, '.js');
36
+ }
37
+ resolveFile(importPath, sourceFile) {
38
+ const sourceFileDir = path.dirname(sourceFile.fileName);
39
+ const existed = this.findFile(importPath, sourceFile);
40
+ if (existed) return existed;
41
+ const suggestions = this.resolver.getImportSuggestions(importPath, sourceFileDir) ?? [];
42
+ for (let suggestion of suggestions){
43
+ const existed = this.findFile(suggestion, sourceFile);
44
+ if (existed) return existed;
45
+ }
46
+ return importPath;
47
+ }
48
+ /**
49
+ * @param importPath {string}
50
+ * @param sourceFile {ts.SourceFile}
51
+ */ resolve(importPath, sourceFile) {
52
+ importPath = this.resolveFile(importPath, sourceFile);
53
+ const sourceFileDir = path.dirname(sourceFile.fileName);
54
+ const absSource = path.join(this.options.outDir, path.relative(this.options.baseUrl, sourceFileDir));
55
+ const abs = path.resolve(sourceFileDir, importPath);
56
+ if (this.config.import.test(importPath)) {
57
+ const content = fs.readFileSync(path.resolve(sourceFileDir, importPath), 'utf-8');
58
+ const outFile = path.resolve(absSource, importPath).replaceAll(path.sep, '/') + '.js';
59
+ fs.mkdirSync(path.dirname(outFile), {
60
+ recursive: true
61
+ });
62
+ fs.writeFileSync(outFile, 'export default `' + content.replaceAll('`', '\\`') + '`', 'utf-8');
63
+ return importPath.replaceAll(path.sep, '/') + ".js";
64
+ }
65
+ if (this.config.copy.test(importPath)) {
66
+ return path.relative(absSource, abs).replaceAll(path.sep, '/');
67
+ }
68
+ return importPath.replaceAll(path.sep, '/');
69
+ }
70
+ /**
71
+ * @param node {ts.Node}
72
+ * @param sourceFile {ts.SourceFile}
73
+ */ visit(node, sourceFile) {
74
+ // if (node && node.kind == SyntaxKind.ImportDeclaration) {
75
+ // return visitImportNode(node as ts.ImportDeclaration);
76
+ // }
77
+ if (!node) return ts.visitEachChild(node, this.visit, this.context);
78
+ if (ts.isCallExpression(node)) {
79
+ const result = this.visitRequireNode(node, sourceFile);
80
+ if (result) return result;
81
+ }
82
+ if (ts.isImportDeclaration(node)) {
83
+ const result = this.visitImportNode(node, sourceFile);
84
+ if (result) return result;
85
+ }
86
+ if (ts.isExportDeclaration(node)) {
87
+ const result = this.visitExportNode(node, sourceFile);
88
+ if (result) return result;
89
+ }
90
+ return ts.visitEachChild(node, (node)=>this.visit(node, sourceFile), this.context);
91
+ }
92
+ /**
93
+ * @param exportNode {ts.ExportDeclaration}
94
+ * @param sourceFile {ts.SourceFile}
95
+ */ visitExportNode(exportNode, sourceFile) {
96
+ if (exportNode.typeOnly) {
97
+ console.log('type olnly');
98
+ return;
99
+ }
100
+ const file = exportNode.moduleSpecifier?.text ?? exportNode.text;
101
+ if (!file) return;
102
+ const resolved = this.resolve(file, sourceFile);
103
+ const newNode = this.context.factory.updateExportDeclaration(exportNode, exportNode.decorators, exportNode.modifiers, exportNode.exportClause, this.context.factory.createStringLiteral(resolved), exportNode.typeOnly);
104
+ if (newNode.flags !== exportNode.flags) {
105
+ newNode.flags = exportNode.flags;
106
+ }
107
+ return newNode;
108
+ }
109
+ /**
110
+ * @param importNode {ts.ImportDeclaration}
111
+ * @param sourceFile {ts.SourceFile}
112
+ */ visitImportNode(importNode, sourceFile) {
113
+ const file = importNode.moduleSpecifier?.text;
114
+ if (!file) return;
115
+ const resolved = this.resolve(file, sourceFile);
116
+ const newNode = this.context.factory.updateImportDeclaration(importNode, importNode.modifiers, importNode.importClause, this.context.factory.createStringLiteral(resolved), importNode.assertClause);
117
+ newNode.flags = importNode.flags;
118
+ return newNode;
119
+ }
120
+ /**
121
+ * @param importNode {ts.Node}
122
+ * @param sourceFile {ts.SourceFile}
123
+ */ visitRequireNode(importNode, sourceFile) {
124
+ if (importNode.expression.kind !== ts.SyntaxKind.Identifier || importNode.expression.escapedText !== "require") {
125
+ return;
126
+ }
127
+ const file = importNode.arguments[0].text;
128
+ const resolved = this.resolve(file, sourceFile);
129
+ return this.context.factory.updateCallExpression(importNode, importNode.expression, undefined, [
130
+ this.context.factory.createStringLiteral(resolved)
131
+ ]);
132
+ }
133
+ }
134
+ export const tsResolvePlugin = function(contextOrOptions) {
135
+ if (!contextOrOptions.getCompilerOptions) return (context)=>new Visitor(context, contextOrOptions).visitSourceFile;
136
+ return new Visitor(contextOrOptions).visitSourceFile;
137
+ };
138
+
139
+ //# sourceMappingURL=ts-resolve-plugin.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"sources":["/mnt/dev/cmmn/tools/helpers/ts-resolve-plugin.js"],"names":["ts","path","fs","ImportPathsResolver","Visitor","context","config","visitSourceFile","sourceFile","visitEachChild","node","visit","options","getCompilerOptions","resolver","paths","baseUrl","exclude","copy","import","findFile","importPath","sourceFileDir","dirname","fileName","replace","find","x","existsSync","resolve","resolveFile","existed","suggestions","getImportSuggestions","suggestion","absSource","join","outDir","relative","abs","test","content","readFileSync","outFile","replaceAll","sep","mkdirSync","recursive","writeFileSync","isCallExpression","result","visitRequireNode","isImportDeclaration","visitImportNode","isExportDeclaration","visitExportNode","exportNode","typeOnly","console","log","file","moduleSpecifier","text","resolved","newNode","factory","updateExportDeclaration","decorators","modifiers","exportClause","createStringLiteral","flags","importNode","updateImportDeclaration","importClause","assertClause","expression","kind","SyntaxKind","Identifier","escapedText","arguments","updateCallExpression","undefined","tsResolvePlugin","contextOrOptions"],"mappings":"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"}
@@ -0,0 +1,35 @@
1
+ var _computedKey;
2
+ import { watch } from "node:fs/promises";
3
+ import { throttle } from "throttle-debounce";
4
+ import { FileChangeEvent } from "../model/pack.js";
5
+ _computedKey = Symbol.dispose;
6
+ export class Watcher {
7
+ constructor(){
8
+ this.abort = new AbortController();
9
+ }
10
+ async watchTarget(target) {
11
+ let changes = new Set();
12
+ const emit = throttle(100, ()=>{
13
+ target.dispatchEvent(new FileChangeEvent(Array.from(changes)));
14
+ changes.clear();
15
+ }, {
16
+ debounceMode: true,
17
+ leading: true,
18
+ trailing: true
19
+ });
20
+ for await (let file of watch(target.rootDir, {
21
+ recursive: true,
22
+ signal: this.abort.signal,
23
+ persistent: true
24
+ })){
25
+ if (file.filename.endsWith('~') || target.isExcluded(file.filename, true)) continue;
26
+ changes.add(file.filename);
27
+ emit();
28
+ }
29
+ }
30
+ [_computedKey]() {
31
+ this.abort.abort();
32
+ }
33
+ }
34
+
35
+ //# sourceMappingURL=watcher.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"sources":["/mnt/dev/cmmn/tools/helpers/watcher.ts"],"names":["watch","throttle","FileChangeEvent","Symbol","dispose","Watcher","abort","AbortController","watchTarget","target","changes","Set","emit","dispatchEvent","Array","from","clear","debounceMode","leading","trailing","file","rootDir","recursive","signal","persistent","filename","endsWith","isExcluded","add"],"mappings":";AAEA,SAAQA,KAAK,QAAO,mBAAkB;AACtC,SAAQC,QAAQ,QAAO,oBAAoB;AAC3C,SAAQC,eAAe,QAAO,mBAAgB;eA0B5CC,OAAOC,OAAO;AAxBhB,OAAO,MAAMC;IAGZ,aAAc;aAFdC,QAAQ,IAAIC;IAGZ;IAEA,MAAMC,YAAYC,MAAc,EAAC;QAChC,IAAIC,UAAU,IAAIC;QAClB,MAAMC,OAAOX,SAAS,KAAK;YAC1BQ,OAAOI,aAAa,CAAC,IAAIX,gBAAgBY,MAAMC,IAAI,CAACL;YACpDA,QAAQM,KAAK;QACd,GAAG;YAAEC,cAAc;YAAMC,SAAS;YAAMC,UAAU;QAAK;QACvD,WAAW,IAAIC,QAAQpB,MAAMS,OAAOY,OAAO,EAAE;YAC5CC,WAAW;YACXC,QAAQ,IAAI,CAACjB,KAAK,CAACiB,MAAM;YACzBC,YAAY;QACb,GAAI;YACH,IAAIJ,KAAKK,QAAQ,CAACC,QAAQ,CAAC,QAAQjB,OAAOkB,UAAU,CAACP,KAAKK,QAAQ,EAAE,OACnE;YACDf,QAAQkB,GAAG,CAACR,KAAKK,QAAQ;YACzBb;QACD;IACD;IAEA,iBAAkB;QACjB,IAAI,CAACN,KAAK,CAACA,KAAK;IACjB;AACD"}
@@ -0,0 +1,5 @@
1
+ import { Monorepo } from "./model/monorepo.js";
2
+ import { Flags } from "./model/flags.js";
3
+ export { Monorepo, Flags };
4
+
5
+ //# sourceMappingURL=index.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"sources":["/mnt/dev/cmmn/tools/index.ts"],"names":["Monorepo","Flags"],"mappings":"AAAA,SAASA,QAAQ,QAAQ,sBAAmB;AAE5C,SAASC,KAAK,QAAQ,mBAAgB;AAEtC,SACID,QAAQ,EAAEC,KAAK,GAElB"}
@@ -0,0 +1,75 @@
1
+ import { Target } from "./target.js";
2
+ import { readFile } from "node:fs/promises";
3
+ import path from "node:path";
4
+ import { subtle } from "crypto";
5
+ export class Bundle {
6
+ constructor(pack, output){
7
+ this.pack = pack;
8
+ this.output = output;
9
+ }
10
+ fileNames() {
11
+ return this.output.map((x)=>x.entry?.output ?? x.fileName);
12
+ }
13
+ get(id) {
14
+ return this.output.find((x)=>x.fileName == id || x.entry?.output == id)?.data;
15
+ }
16
+ async getPublicAsset(id) {
17
+ if (!(this.pack instanceof Target) || !this.pack.publicDir) {
18
+ return undefined;
19
+ }
20
+ return readFile(path.join(this.pack.publicDir, id));
21
+ }
22
+ async getBundleJson() {
23
+ return {
24
+ baseURI: this.pack.publicPath,
25
+ assets: [
26
+ ...await Promise.all(this.output.map((o)=>this.getOutputAsset(o)))
27
+ ]
28
+ };
29
+ }
30
+ async getOutputAsset(output) {
31
+ return {
32
+ path: output.entry?.output ?? output.fileName,
33
+ hash: await getHash(output.data),
34
+ size: output.data.length,
35
+ regex: output.entry && this.pack instanceof Target ? this.pack.proxy.find((x)=>x.replace == output.entry.name)?.regex.source : undefined,
36
+ deps: Object.fromEntries(this.getDeps(output))
37
+ };
38
+ }
39
+ *getDeps(output) {
40
+ const flat = output.deps.map((x)=>({
41
+ baseURI: x.pack === this.pack ? "." : x.pack.publicPath,
42
+ path: x.path
43
+ }));
44
+ if (typeof output.data === "string") {
45
+ for (let fileName of this.fileNames()){
46
+ if (output.data.includes(`new URL("${fileName}"`)) {
47
+ flat.push({
48
+ baseURI: ".",
49
+ path: fileName
50
+ });
51
+ }
52
+ if (output.data.includes(`import("./${fileName}"`)) {
53
+ flat.push({
54
+ baseURI: ".",
55
+ path: fileName
56
+ });
57
+ }
58
+ }
59
+ }
60
+ const grouped = Map.groupBy(flat, (x)=>x.baseURI);
61
+ for (let [uri, deps] of grouped){
62
+ yield [
63
+ uri,
64
+ Array.from(new Set(deps.map((x)=>x.path)))
65
+ ];
66
+ }
67
+ }
68
+ }
69
+ export async function getHash(data) {
70
+ const buffer = Buffer.from(data);
71
+ const hash = await subtle.digest('SHA-1', buffer);
72
+ return Buffer.from(hash).toString('base64');
73
+ }
74
+
75
+ //# sourceMappingURL=bundle.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"sources":["/mnt/dev/cmmn/tools/model/bundle.ts"],"names":["Target","readFile","path","subtle","Bundle","pack","output","fileNames","map","x","entry","fileName","get","id","find","data","getPublicAsset","publicDir","undefined","join","getBundleJson","baseURI","publicPath","assets","Promise","all","o","getOutputAsset","hash","getHash","size","length","regex","proxy","replace","name","source","deps","Object","fromEntries","getDeps","flat","includes","push","grouped","Map","groupBy","uri","Array","from","Set","buffer","Buffer","digest","toString"],"mappings":"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"}