@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.
- package/.swcrc +20 -0
- package/dist/bundle/index.js +913 -0
- package/dist/bundle/test.js +32 -0
- package/dist/esm/bin.js +9 -0
- package/dist/esm/bin.js.map +1 -0
- package/dist/esm/bundlers/createBundler.js +9 -0
- package/dist/esm/bundlers/createBundler.js.map +1 -0
- package/dist/esm/bundlers/plugins/minify.js +34 -0
- package/dist/esm/bundlers/plugins/minify.js.map +1 -0
- package/dist/esm/bundlers/plugins/wasm.js +43 -0
- package/dist/esm/bundlers/plugins/wasm.js.map +1 -0
- package/dist/esm/bundlers/rolldown-bundler.js +153 -0
- package/dist/esm/bundlers/rolldown-bundler.js.map +1 -0
- package/dist/esm/bundlers/types.js +3 -0
- package/dist/esm/bundlers/types.js.map +1 -0
- package/dist/esm/bundlers/vite.builder.js +117 -0
- package/dist/esm/bundlers/vite.builder.js.map +1 -0
- package/dist/esm/bundlers/vite.bundler.js +56 -0
- package/dist/esm/bundlers/vite.bundler.js.map +1 -0
- package/dist/esm/commands/bundle.js +102 -0
- package/dist/esm/commands/bundle.js.map +1 -0
- package/dist/esm/commands/cert.js +26 -0
- package/dist/esm/commands/cert.js.map +1 -0
- package/dist/esm/commands/ci.js +14 -0
- package/dist/esm/commands/ci.js.map +1 -0
- package/dist/esm/commands/clean.js +18 -0
- package/dist/esm/commands/clean.js.map +1 -0
- package/dist/esm/commands/compile.js +60 -0
- package/dist/esm/commands/compile.js.map +1 -0
- package/dist/esm/commands/deploy.js +61 -0
- package/dist/esm/commands/deploy.js.map +1 -0
- package/dist/esm/commands/dev.js +37 -0
- package/dist/esm/commands/dev.js.map +1 -0
- package/dist/esm/commands/format.js +44 -0
- package/dist/esm/commands/format.js.map +1 -0
- package/dist/esm/commands/gen.js +36 -0
- package/dist/esm/commands/gen.js.map +1 -0
- package/dist/esm/commands/host.js +21 -0
- package/dist/esm/commands/host.js.map +1 -0
- package/dist/esm/commands/index.js +12 -0
- package/dist/esm/commands/index.js.map +1 -0
- package/dist/esm/commands/lint.js +45 -0
- package/dist/esm/commands/lint.js.map +1 -0
- package/dist/esm/commands/nginx.js +62 -0
- package/dist/esm/commands/nginx.js.map +1 -0
- package/dist/esm/commands/publish.js +37 -0
- package/dist/esm/commands/publish.js.map +1 -0
- package/dist/esm/commands/typings.js +66 -0
- package/dist/esm/commands/typings.js.map +1 -0
- package/dist/esm/commands/version.js +34 -0
- package/dist/esm/commands/version.js.map +1 -0
- package/dist/esm/dev-server/asset-collection.js +18 -0
- package/dist/esm/dev-server/asset-collection.js.map +1 -0
- package/dist/esm/dev-server/bundle.json.builder.js +47 -0
- package/dist/esm/dev-server/bundle.json.builder.js.map +1 -0
- package/dist/esm/dev-server/dependencyServer.js +96 -0
- package/dist/esm/dev-server/dependencyServer.js.map +1 -0
- package/dist/esm/dev-server/dev-server.js +49 -0
- package/dist/esm/dev-server/dev-server.js.map +1 -0
- package/dist/esm/dev-server/plugins/minify.js +34 -0
- package/dist/esm/dev-server/plugins/minify.js.map +1 -0
- package/dist/esm/dev-server/plugins/wasm.js +30 -0
- package/dist/esm/dev-server/plugins/wasm.js.map +1 -0
- package/dist/esm/dev-server/resolver.js +55 -0
- package/dist/esm/dev-server/resolver.js.map +1 -0
- package/dist/esm/dev-server/rolldown-dependency-builder.js +150 -0
- package/dist/esm/dev-server/rolldown-dependency-builder.js.map +1 -0
- package/dist/esm/dev-server/target-runnner.js +72 -0
- package/dist/esm/dev-server/target-runnner.js.map +1 -0
- package/dist/esm/dev-server/target-web-server.js +78 -0
- package/dist/esm/dev-server/target-web-server.js.map +1 -0
- package/dist/esm/dev-server/targetServer.js +29 -0
- package/dist/esm/dev-server/targetServer.js.map +1 -0
- package/dist/esm/dev-server/vite.builder.js +183 -0
- package/dist/esm/dev-server/vite.builder.js.map +1 -0
- package/dist/esm/dev-server/wasm-resolver.js +25 -0
- package/dist/esm/dev-server/wasm-resolver.js.map +1 -0
- package/dist/esm/helpers/fastify-compress.js +26 -0
- package/dist/esm/helpers/fastify-compress.js.map +1 -0
- package/dist/esm/helpers/flags.js +22 -0
- package/dist/esm/helpers/flags.js.map +1 -0
- package/dist/esm/helpers/getProjects.js +49 -0
- package/dist/esm/helpers/getProjects.js.map +1 -0
- package/dist/esm/helpers/getTSConfig.js +32 -0
- package/dist/esm/helpers/getTSConfig.js.map +1 -0
- package/dist/esm/helpers/target.js +230 -0
- package/dist/esm/helpers/target.js.map +1 -0
- package/dist/esm/helpers/terminal.js +117 -0
- package/dist/esm/helpers/terminal.js.map +1 -0
- package/dist/esm/helpers/ts-resolve-plugin.js +139 -0
- package/dist/esm/helpers/ts-resolve-plugin.js.map +1 -0
- package/dist/esm/helpers/watcher.js +35 -0
- package/dist/esm/helpers/watcher.js.map +1 -0
- package/dist/esm/index.js +5 -0
- package/dist/esm/index.js.map +1 -0
- package/dist/esm/model/bundle.js +75 -0
- package/dist/esm/model/bundle.js.map +1 -0
- package/dist/esm/model/flags.js +27 -0
- package/dist/esm/model/flags.js.map +1 -0
- package/dist/esm/model/monorepo.js +74 -0
- package/dist/esm/model/monorepo.js.map +1 -0
- package/dist/esm/model/pack.js +134 -0
- package/dist/esm/model/pack.js.map +1 -0
- package/dist/esm/model/resolver.js +100 -0
- package/dist/esm/model/resolver.js.map +1 -0
- package/dist/esm/model/target.js +111 -0
- package/dist/esm/model/target.js.map +1 -0
- package/dist/esm/servers/bundle-server.js +20 -0
- package/dist/esm/servers/bundle-server.js.map +1 -0
- package/dist/esm/servers/dev-server.js +70 -0
- package/dist/esm/servers/dev-server.js.map +1 -0
- package/dist/esm/servers/pack-server.js +20 -0
- package/dist/esm/servers/pack-server.js.map +1 -0
- package/dist/esm/servers/target-runnner.js +80 -0
- package/dist/esm/servers/target-runnner.js.map +1 -0
- package/dist/esm/servers/vite-dev-server.js +61 -0
- package/dist/esm/servers/vite-dev-server.js.map +1 -0
- package/dist/esm/specs/dependency-builder-specs.js +164 -0
- package/dist/esm/specs/dependency-builder-specs.js.map +1 -0
- package/dist/esm/specs/dev-server.specs.js +73 -0
- package/dist/esm/specs/dev-server.specs.js.map +1 -0
- package/dist/esm/specs/monorepo.specs.js +35 -0
- package/dist/esm/specs/monorepo.specs.js.map +1 -0
- package/dist/esm/specs/resolver.specs.js +57 -0
- package/dist/esm/specs/resolver.specs.js.map +1 -0
- package/dist/esm/specs/rolldown.specs.js +278 -0
- package/dist/esm/specs/rolldown.specs.js.map +1 -0
- package/dist/esm/specs/target-specs.js +108 -0
- package/dist/esm/specs/target-specs.js.map +1 -0
- package/dist/esm/specs/vite-bundler.specs.js +77 -0
- package/dist/esm/specs/vite-bundler.specs.js.map +1 -0
- package/dist/esm/test/test.js +30 -0
- package/dist/esm/test/test.js.map +1 -0
- package/dist/ts.buildinfo +1 -0
- package/dist/typings/bin.d.ts +2 -0
- package/dist/typings/bundlers/plugins/minify.d.ts +6 -0
- package/dist/typings/bundlers/plugins/wasm.d.ts +5 -0
- package/dist/typings/bundlers/rolldown-bundler.d.ts +18 -0
- package/dist/typings/bundlers/types.d.ts +4 -0
- package/dist/typings/bundlers/vite.builder.d.ts +12 -0
- package/dist/typings/bundlers/vite.bundler.d.ts +9 -0
- package/dist/typings/commands/bundle.d.ts +2 -0
- package/dist/typings/commands/cert.d.ts +1 -0
- package/dist/typings/commands/clean.d.ts +2 -0
- package/dist/typings/commands/compile.d.ts +2 -0
- package/dist/typings/commands/dev.d.ts +2 -0
- package/dist/typings/commands/format.d.ts +5 -0
- package/dist/typings/commands/gen.d.ts +1 -0
- package/dist/typings/commands/host.d.ts +1 -0
- package/dist/typings/commands/index.d.ts +10 -0
- package/dist/typings/commands/lint.d.ts +5 -0
- package/dist/typings/commands/nginx.d.ts +6 -0
- package/dist/typings/commands/publish.d.ts +2 -0
- package/dist/typings/commands/typings.d.ts +4 -0
- package/dist/typings/commands/version.d.ts +1 -0
- package/dist/typings/helpers/fastify-compress.d.ts +6 -0
- package/dist/typings/helpers/getTSConfig.d.ts +11 -0
- package/dist/typings/helpers/terminal.d.ts +22 -0
- package/dist/typings/helpers/watcher.d.ts +7 -0
- package/dist/typings/index.d.ts +4 -0
- package/dist/typings/model/bundle.d.ts +34 -0
- package/dist/typings/model/flags.d.ts +15 -0
- package/dist/typings/model/monorepo.d.ts +18 -0
- package/dist/typings/model/pack.d.ts +45 -0
- package/dist/typings/model/resolver.d.ts +38 -0
- package/dist/typings/model/target.d.ts +27 -0
- package/dist/typings/servers/bundle-server.d.ts +10 -0
- package/dist/typings/servers/dev-server.d.ts +16 -0
- package/dist/typings/servers/pack-server.d.ts +9 -0
- package/dist/typings/servers/target-runnner.d.ts +13 -0
- package/dist/typings/servers/vite-dev-server.d.ts +18 -0
- package/dist/typings/specs/dev-server.specs.d.ts +1 -0
- package/dist/typings/specs/monorepo.specs.d.ts +1 -0
- package/dist/typings/specs/resolver.specs.d.ts +1 -0
- package/dist/typings/specs/rolldown.specs.d.ts +1 -0
- package/dist/typings/specs/target-specs.d.ts +1 -0
- package/dist/typings/specs/vite-bundler.specs.d.ts +1 -0
- package/dist/typings/test/test.d.ts +16 -0
- package/{compile → helpers}/tsconfig.json +12 -9
- package/node/hooks-dev.js +72 -0
- package/node/register-dev.js +3 -0
- package/node/register.js +14 -0
- package/package.json +51 -40
- package/readme.md +2 -2
- package/tsconfig.json +14 -0
- package/LICENSE +0 -21
- package/bin.js +0 -21
- package/bundle/bundle.js +0 -46
- package/bundle/esbuild.config.js +0 -178
- package/bundle/getConfigs.js +0 -62
- package/compile/compile.js +0 -53
- package/compile/ts-resolve-plugin.js +0 -235
- package/compile/typings.d.ts +0 -19
- package/gen/component.ts.tpl +0 -16
- package/gen/gen.js +0 -27
- package/gen/style.less.tpl +0 -3
- package/gen/template.ts.tpl +0 -8
- package/helpers/getTSConfig.js +0 -19
- package/serve/readme.md +0 -8
- package/serve/serve.js +0 -109
- package/spawn/index.js +0 -81
- package/test/index.d.ts +0 -18
- package/test/index.js +0 -16
- package/test/jest.config.js +0 -32
- 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":"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"}
|
|
@@ -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 @@
|
|
|
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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"}
|