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