@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,27 @@
|
|
|
1
|
+
export class Flags {
|
|
2
|
+
static{
|
|
3
|
+
this.Current = new Flags([]);
|
|
4
|
+
}
|
|
5
|
+
constructor(args){
|
|
6
|
+
this.args = args;
|
|
7
|
+
this.deploy = this.args.includes('--deploy');
|
|
8
|
+
this.out = this.args.includes('-out') ? this.args[this.args.indexOf('-out') + 1] : '.out';
|
|
9
|
+
this.command = args[0];
|
|
10
|
+
this.watch = args.includes('--watch');
|
|
11
|
+
this.minify = args.includes('--minify');
|
|
12
|
+
this.unsafe = args.includes('--unsafe');
|
|
13
|
+
this.workspace = args.includes('-w') ? args[args.indexOf('-w') + 1] ?? '.' : undefined;
|
|
14
|
+
this.version = this.command === 'version' ? args[1] : undefined;
|
|
15
|
+
this.production = args.includes('--prod');
|
|
16
|
+
if (this.workspace?.startsWith('--')) {
|
|
17
|
+
this.workspace = undefined;
|
|
18
|
+
}
|
|
19
|
+
}
|
|
20
|
+
get(arg) {
|
|
21
|
+
const index = this.args.indexOf(`--${arg}`);
|
|
22
|
+
if (index === -1) return undefined;
|
|
23
|
+
return this.args[index + 1];
|
|
24
|
+
}
|
|
25
|
+
}
|
|
26
|
+
|
|
27
|
+
//# sourceMappingURL=flags.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"sources":["/mnt/dev/cmmn/tools/model/flags.ts"],"names":["Flags","Current","args","deploy","includes","out","indexOf","command","watch","minify","unsafe","workspace","undefined","version","production","startsWith","get","arg","index"],"mappings":"AACA,OAAO,MAAMA;;aACFC,UAAiB,IAAID,MAAM,EAAE;;IAapC,YAAY,AAAOE,IAAe,CAAE;aAAjBA,OAAAA;aALnBC,SAAU,IAAI,CAACD,IAAI,CAACE,QAAQ,CAAC;aAC7BC,MAAM,IAAI,CAACH,IAAI,CAACE,QAAQ,CAAC,UACnB,IAAI,CAACF,IAAI,CAAC,IAAI,CAACA,IAAI,CAACI,OAAO,CAAC,UAAU,EAAE,GACxC;QAGF,IAAI,CAACC,OAAO,GAAGL,IAAI,CAAC,EAAE;QACtB,IAAI,CAACM,KAAK,GAAGN,KAAKE,QAAQ,CAAC;QAC3B,IAAI,CAACK,MAAM,GAAGP,KAAKE,QAAQ,CAAC;QAC5B,IAAI,CAACM,MAAM,GAAGR,KAAKE,QAAQ,CAAC;QAC5B,IAAI,CAACO,SAAS,GAAGT,KAAKE,QAAQ,CAAC,QACzBF,IAAI,CAACA,KAAKI,OAAO,CAAC,QAAQ,EAAE,IAAI,MAAMM;QAC5C,IAAI,CAACC,OAAO,GAAG,IAAI,CAACN,OAAO,KAAK,YAAYL,IAAI,CAAC,EAAE,GAAGU;QACtD,IAAI,CAACE,UAAU,GAAGZ,KAAKE,QAAQ,CAAC;QAChC,IAAI,IAAI,CAACO,SAAS,EAAEI,WAAW,OAAM;YACjC,IAAI,CAACJ,SAAS,GAAGC;QACrB;IACJ;IAEAI,IAAIC,GAAG,EAAE;QACL,MAAMC,QAAQ,IAAI,CAAChB,IAAI,CAACI,OAAO,CAAC,CAAC,EAAE,EAAEW,KAAK;QAC1C,IAAIC,UAAU,CAAC,GAAG,OAAON;QACzB,OAAO,IAAI,CAACV,IAAI,CAACgB,QAAQ,EAAE;IAC/B;AACJ"}
|
|
@@ -0,0 +1,74 @@
|
|
|
1
|
+
import { getPackages } from "@manypkg/get-packages";
|
|
2
|
+
import { Pack } from "./pack.js";
|
|
3
|
+
import { Target } from "./target.js";
|
|
4
|
+
import { Resolver } from "./resolver.js";
|
|
5
|
+
import { Flags } from "./flags.js";
|
|
6
|
+
import { ViteBundler } from "../bundlers/vite.bundler.js";
|
|
7
|
+
import { RolldownBundler } from "../bundlers/rolldown-bundler.js";
|
|
8
|
+
export class Monorepo {
|
|
9
|
+
static async load(flags = new Flags([]), rootDir = process.cwd()) {
|
|
10
|
+
const monorepoPackages = await getPackages(rootDir);
|
|
11
|
+
const monorepo = new MonorepoLoader(monorepoPackages);
|
|
12
|
+
await monorepo.load(flags.production);
|
|
13
|
+
return new Monorepo(monorepo.root, monorepo.packs, flags);
|
|
14
|
+
}
|
|
15
|
+
constructor(root, packsMap, flags){
|
|
16
|
+
this.root = root;
|
|
17
|
+
this.packsMap = packsMap;
|
|
18
|
+
this.flags = flags;
|
|
19
|
+
this.packs = Array.from(this.packsMap.values());
|
|
20
|
+
if (flags.deploy) this.resolver = new Resolver(this.packs, this.flags);
|
|
21
|
+
this.packs.forEach((x)=>x.init(flags, this.packsMap));
|
|
22
|
+
root.init(flags, this.packsMap);
|
|
23
|
+
}
|
|
24
|
+
get targets() {
|
|
25
|
+
return Array.from(this.packs.values()).filter((x)=>x instanceof Target);
|
|
26
|
+
}
|
|
27
|
+
get(id) {
|
|
28
|
+
return this.packsMap.get(id);
|
|
29
|
+
}
|
|
30
|
+
createBundler(pack) {
|
|
31
|
+
if (pack instanceof Target) return new ViteBundler(pack, this.resolver, this.flags);
|
|
32
|
+
return new RolldownBundler(pack, this.resolver, this.flags);
|
|
33
|
+
}
|
|
34
|
+
}
|
|
35
|
+
class MonorepoLoader {
|
|
36
|
+
constructor(packages){
|
|
37
|
+
this.packages = packages;
|
|
38
|
+
this.packs = new Map();
|
|
39
|
+
}
|
|
40
|
+
async load(prod) {
|
|
41
|
+
for (let p of this.packages.packages){
|
|
42
|
+
await this.export(p.packageJson.name, p.packageJson.version, prod);
|
|
43
|
+
}
|
|
44
|
+
this.root = await this.export(this.packages.rootPackage.packageJson.name, this.packages.rootPackage.packageJson.version, prod);
|
|
45
|
+
return Array.from(this.packs.values());
|
|
46
|
+
}
|
|
47
|
+
async export(name, version, prod) {
|
|
48
|
+
if (this.packs.has(name)) return this.packs.get(name);
|
|
49
|
+
const pkg = this.getPackage(name);
|
|
50
|
+
if (pkg) {
|
|
51
|
+
const pack = new Target(pkg.dir, pkg.packageJson);
|
|
52
|
+
this.packs.set(name, pack);
|
|
53
|
+
for (let [name, version] of pack.getAllDependencies(prod)){
|
|
54
|
+
if (this.packs.has(name)) continue;
|
|
55
|
+
await this.export(name, version, prod);
|
|
56
|
+
}
|
|
57
|
+
return pack;
|
|
58
|
+
} else {
|
|
59
|
+
const pack = await Pack.read(name, version);
|
|
60
|
+
this.packs.set(name, pack);
|
|
61
|
+
return pack;
|
|
62
|
+
}
|
|
63
|
+
}
|
|
64
|
+
getPackage(name) {
|
|
65
|
+
const p = this.packages.rootPackage.packageJson.name == name ? this.packages.rootPackage : this.packages.packages.find((x)=>x.packageJson.name == name);
|
|
66
|
+
return p && {
|
|
67
|
+
dir: p.dir,
|
|
68
|
+
packageJson: p.packageJson,
|
|
69
|
+
version: p.packageJson.version
|
|
70
|
+
};
|
|
71
|
+
}
|
|
72
|
+
}
|
|
73
|
+
|
|
74
|
+
//# sourceMappingURL=monorepo.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"sources":["/mnt/dev/cmmn/tools/model/monorepo.ts"],"names":["getPackages","Pack","Target","Resolver","Flags","ViteBundler","RolldownBundler","Monorepo","load","flags","rootDir","process","cwd","monorepoPackages","monorepo","MonorepoLoader","production","root","packs","packsMap","Array","from","values","deploy","resolver","forEach","x","init","targets","filter","get","id","createBundler","pack","packages","Map","prod","p","export","packageJson","name","version","rootPackage","has","pkg","getPackage","dir","set","getAllDependencies","read","find"],"mappings":"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"}
|
|
@@ -0,0 +1,134 @@
|
|
|
1
|
+
import { dirname, join, resolve } from "node:path";
|
|
2
|
+
import terminalKit from "terminal-kit";
|
|
3
|
+
import { readFile, stat } from "node:fs/promises";
|
|
4
|
+
export class Pack extends EventTarget {
|
|
5
|
+
static async read(id, version, dir = process.cwd()) {
|
|
6
|
+
while(dir){
|
|
7
|
+
try {
|
|
8
|
+
const pkgDir = join(dir, 'node_modules', id);
|
|
9
|
+
if (await stat(pkgDir)) {
|
|
10
|
+
const json = JSON.parse(await readFile(join(pkgDir, "package.json"), {
|
|
11
|
+
encoding: 'utf-8'
|
|
12
|
+
}));
|
|
13
|
+
// TODO: check version
|
|
14
|
+
// if (version && json.version !== version)
|
|
15
|
+
// dir = dirname(dir);
|
|
16
|
+
// else
|
|
17
|
+
return new Pack(pkgDir, json);
|
|
18
|
+
}
|
|
19
|
+
} catch {
|
|
20
|
+
dir = dirname(dir);
|
|
21
|
+
}
|
|
22
|
+
}
|
|
23
|
+
}
|
|
24
|
+
*getAllDependencies(prod) {
|
|
25
|
+
yield* Object.entries(this.packageJson.dependencies ?? {});
|
|
26
|
+
if (!prod) yield* Object.entries(this.packageJson.devDependencies ?? {});
|
|
27
|
+
}
|
|
28
|
+
constructor(rootDir, packageJson){
|
|
29
|
+
super(), this.rootDir = rootDir, this.packageJson = packageJson, this.reactions = [];
|
|
30
|
+
}
|
|
31
|
+
init(flags, packsMap) {
|
|
32
|
+
const deps = Object.keys(this.packageJson.dependencies ?? {});
|
|
33
|
+
if (!flags.production) deps.push(...Object.keys(this.packageJson.devDependencies ?? {}));
|
|
34
|
+
this.deps = deps.map((x)=>packsMap.get(x)).filter((x)=>!!x);
|
|
35
|
+
this.deps.forEach((x)=>x.reactions.push(this));
|
|
36
|
+
for (let dep of this.deps){
|
|
37
|
+
dep.addEventListener('change', (e)=>{
|
|
38
|
+
// TODO: prevent cycles
|
|
39
|
+
this.dispatchEvent(new ChangeEvent(e.payload, e.from));
|
|
40
|
+
});
|
|
41
|
+
dep.addEventListener('file', (e)=>{
|
|
42
|
+
// TODO: prevent cycles
|
|
43
|
+
this.dispatchEvent(new FileChangeEvent([]));
|
|
44
|
+
});
|
|
45
|
+
}
|
|
46
|
+
}
|
|
47
|
+
get isServer() {
|
|
48
|
+
return !!this.packageJson.config?.server;
|
|
49
|
+
}
|
|
50
|
+
get name() {
|
|
51
|
+
return this.packageJson.name;
|
|
52
|
+
}
|
|
53
|
+
log(text) {
|
|
54
|
+
this.term ??= new terminalKit.Terminal();
|
|
55
|
+
this.term.blue(this.packageJson.name);
|
|
56
|
+
this.term.white(` ${text}\n`);
|
|
57
|
+
}
|
|
58
|
+
error(text) {
|
|
59
|
+
this.log(`^RERROR: ^w` + text.toString());
|
|
60
|
+
}
|
|
61
|
+
get entries() {
|
|
62
|
+
if (this._entries) return this._entries;
|
|
63
|
+
if (this.packageJson.exports && typeof this.packageJson.exports == "object") {
|
|
64
|
+
const result = [];
|
|
65
|
+
for(let item in this.packageJson.exports){
|
|
66
|
+
if (!item.startsWith('.')) {
|
|
67
|
+
const exports = this.packageJson.exports;
|
|
68
|
+
const importFile = exports.default ?? exports.require ?? exports.import;
|
|
69
|
+
if (!importFile || !(typeof importFile === "string")) {
|
|
70
|
+
this.error(`Failed to read entry '${item}' in ${this.packageJson.name}`);
|
|
71
|
+
continue;
|
|
72
|
+
}
|
|
73
|
+
result.push(this.createEntry('.', importFile));
|
|
74
|
+
break;
|
|
75
|
+
}
|
|
76
|
+
const importFile = this.packageJson.exports[item].default ?? this.packageJson.exports[item].import ?? this.packageJson.exports[item].require ?? this.packageJson.exports[item];
|
|
77
|
+
if (!importFile || !(typeof importFile === "string")) {
|
|
78
|
+
this.error(`Failed to read entry '${item}' in ${this.packageJson.name}`);
|
|
79
|
+
continue;
|
|
80
|
+
}
|
|
81
|
+
result.push(this.createEntry(item, importFile));
|
|
82
|
+
}
|
|
83
|
+
return this._entries = result;
|
|
84
|
+
}
|
|
85
|
+
const entry = this.packageJson.module ?? this.packageJson.main ?? this.packageJson.browser ?? this.packageJson.exports;
|
|
86
|
+
return this._entries = entry ? [
|
|
87
|
+
this.createEntry('.', entry)
|
|
88
|
+
] : [];
|
|
89
|
+
}
|
|
90
|
+
/**
|
|
91
|
+
* @param name relative path inside pack: "", "/index.js", "/bundler"...
|
|
92
|
+
*/ getEntry(name) {
|
|
93
|
+
return this.entries.find((x)=>x.name === name);
|
|
94
|
+
}
|
|
95
|
+
createEntry(name, source) {
|
|
96
|
+
const absolute = resolve(this.rootDir, source);
|
|
97
|
+
name = name.replace(/^[.\/]+/, '');
|
|
98
|
+
return {
|
|
99
|
+
name,
|
|
100
|
+
source: absolute,
|
|
101
|
+
relative: source.replace(/^[.\/]+/, ''),
|
|
102
|
+
isExcluded: false,
|
|
103
|
+
isHTML: /\.html$/i.test(source),
|
|
104
|
+
output: this.getExport(name, source),
|
|
105
|
+
isTypeScript: /\.tsx?$/i.test(source),
|
|
106
|
+
isJavaScript: /\.jsx?$/i.test(source)
|
|
107
|
+
};
|
|
108
|
+
}
|
|
109
|
+
getExport(entry, file) {
|
|
110
|
+
const extension = file.match(/\.([^.]+)$/)[1];
|
|
111
|
+
const entryName = entry.replace(/^\.?\/?/, '').replace(/\.[^.]+$/, '') || 'index';
|
|
112
|
+
const outExt = extension.replace(/^[jt]sx?$/, 'js').replace(/^(less|css|sass|scss)$/, 'css');
|
|
113
|
+
return `${entryName}.${outExt}`;
|
|
114
|
+
}
|
|
115
|
+
static{
|
|
116
|
+
this.ImportPrefix = '/_/';
|
|
117
|
+
}
|
|
118
|
+
get publicPath() {
|
|
119
|
+
return `${Pack.ImportPrefix}${this.name}`;
|
|
120
|
+
}
|
|
121
|
+
}
|
|
122
|
+
export class ChangeEvent extends Event {
|
|
123
|
+
constructor(payload, from){
|
|
124
|
+
super('change');
|
|
125
|
+
this.payload = payload;
|
|
126
|
+
}
|
|
127
|
+
}
|
|
128
|
+
export class FileChangeEvent extends Event {
|
|
129
|
+
constructor(files){
|
|
130
|
+
super('file'), this.files = files;
|
|
131
|
+
}
|
|
132
|
+
}
|
|
133
|
+
|
|
134
|
+
//# sourceMappingURL=pack.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"sources":["/mnt/dev/cmmn/tools/model/pack.ts"],"names":["dirname","join","resolve","terminalKit","readFile","stat","Pack","EventTarget","read","id","version","dir","process","cwd","pkgDir","json","JSON","parse","encoding","getAllDependencies","prod","Object","entries","packageJson","dependencies","devDependencies","rootDir","reactions","init","flags","packsMap","deps","keys","production","push","map","x","get","filter","forEach","dep","addEventListener","e","dispatchEvent","ChangeEvent","payload","from","FileChangeEvent","isServer","config","server","name","log","text","term","Terminal","blue","white","error","toString","_entries","exports","result","item","startsWith","importFile","default","require","import","createEntry","entry","module","main","browser","getEntry","find","source","absolute","replace","relative","isExcluded","isHTML","test","output","getExport","isTypeScript","isJavaScript","file","extension","match","entryName","outExt","ImportPrefix","publicPath","Event","files"],"mappings":"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"}
|
|
@@ -0,0 +1,100 @@
|
|
|
1
|
+
import { Target } from "./target.js";
|
|
2
|
+
export class Resolver {
|
|
3
|
+
constructor(packs, flags){
|
|
4
|
+
this.packs = packs;
|
|
5
|
+
this.flags = flags;
|
|
6
|
+
this.basePath = '';
|
|
7
|
+
/**
|
|
8
|
+
* Resolve id to absolute path
|
|
9
|
+
* @param id - relative path: "react", "react/jsx-runtime.js", "loro-crdt/bundler", "loro-crdt/loro.wasm"...
|
|
10
|
+
* @param importer
|
|
11
|
+
* @param options
|
|
12
|
+
*/ this.resolveId = (id, importer = null, options = null)=>{
|
|
13
|
+
if (options?.isEntry) return;
|
|
14
|
+
const pack = this.getPack(id);
|
|
15
|
+
if (!pack) return undefined;
|
|
16
|
+
return this.resolveInPack(pack.pack, pack.path, importer, options);
|
|
17
|
+
};
|
|
18
|
+
}
|
|
19
|
+
resolvePath(path, importer = null, options = null) {
|
|
20
|
+
const pack = this.getPack(path);
|
|
21
|
+
if (!pack) return undefined;
|
|
22
|
+
return this.resolveWithProxy(pack.pack, pack.path, importer, options) ?? pack;
|
|
23
|
+
}
|
|
24
|
+
resolveWithProxy(pack, path, importer = null, options = null) {
|
|
25
|
+
if (pack instanceof Target) {
|
|
26
|
+
for (let proxy of pack.proxy){
|
|
27
|
+
if (path.match(proxy.regex)) {
|
|
28
|
+
path = path.replace(proxy.regex, proxy.replace);
|
|
29
|
+
break;
|
|
30
|
+
}
|
|
31
|
+
}
|
|
32
|
+
}
|
|
33
|
+
return this.resolveInPack(pack, path, importer, options);
|
|
34
|
+
}
|
|
35
|
+
resolveInPack(pack, id, importer = null, options = null) {
|
|
36
|
+
if (options?.attributes?.resolve) {
|
|
37
|
+
return {
|
|
38
|
+
external: "absolute",
|
|
39
|
+
id: `${this.basePath}${pack.publicPath}`,
|
|
40
|
+
path: '',
|
|
41
|
+
entry: null,
|
|
42
|
+
pack
|
|
43
|
+
};
|
|
44
|
+
}
|
|
45
|
+
// id - absolute path inside pack: "", "/index.ts", "/src/page.html", "/bundler", "/loro.wasm"
|
|
46
|
+
const entry = pack.getEntry(id.replace(/^\//, ''));
|
|
47
|
+
if (!entry) {
|
|
48
|
+
return;
|
|
49
|
+
}
|
|
50
|
+
const resolved = !this.flags.production && pack instanceof Target ? entry.relative : entry.output;
|
|
51
|
+
return {
|
|
52
|
+
external: "absolute",
|
|
53
|
+
id: `${this.basePath}${pack.publicPath}/${resolved}`,
|
|
54
|
+
path: resolved,
|
|
55
|
+
entry,
|
|
56
|
+
pack
|
|
57
|
+
};
|
|
58
|
+
}
|
|
59
|
+
getPackNames() {
|
|
60
|
+
return this.packs.map((x)=>x.name);
|
|
61
|
+
}
|
|
62
|
+
getPack(id) {
|
|
63
|
+
if (id.startsWith(this.basePath)) id = id.substring(this.basePath.length);
|
|
64
|
+
for (const pack of this.packs){
|
|
65
|
+
if (pack.name == id) {
|
|
66
|
+
return {
|
|
67
|
+
pack,
|
|
68
|
+
path: ''
|
|
69
|
+
};
|
|
70
|
+
} else if (id.startsWith(pack.name + '/')) {
|
|
71
|
+
return {
|
|
72
|
+
pack,
|
|
73
|
+
path: id.substring(pack.name.length + 1)
|
|
74
|
+
};
|
|
75
|
+
} else if (id == pack.rootDir) {
|
|
76
|
+
return {
|
|
77
|
+
pack,
|
|
78
|
+
path: ''
|
|
79
|
+
};
|
|
80
|
+
} else if (id.startsWith(pack.rootDir)) {
|
|
81
|
+
return {
|
|
82
|
+
pack,
|
|
83
|
+
path: id.substring(pack.rootDir.length + 1)
|
|
84
|
+
};
|
|
85
|
+
} else if (id == pack.publicPath) {
|
|
86
|
+
return {
|
|
87
|
+
pack,
|
|
88
|
+
path: ''
|
|
89
|
+
};
|
|
90
|
+
} else if (id.startsWith(pack.publicPath + '/')) {
|
|
91
|
+
return {
|
|
92
|
+
pack,
|
|
93
|
+
path: id.substring(pack.publicPath.length + 1)
|
|
94
|
+
};
|
|
95
|
+
}
|
|
96
|
+
}
|
|
97
|
+
}
|
|
98
|
+
}
|
|
99
|
+
|
|
100
|
+
//# sourceMappingURL=resolver.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"sources":["/mnt/dev/cmmn/tools/model/resolver.ts"],"names":["Target","Resolver","packs","flags","basePath","resolveId","id","importer","options","isEntry","pack","getPack","undefined","resolveInPack","path","resolvePath","resolveWithProxy","proxy","match","regex","replace","attributes","resolve","external","publicPath","entry","getEntry","resolved","production","relative","output","getPackNames","map","x","name","startsWith","substring","length","rootDir"],"mappings":"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"}
|
|
@@ -0,0 +1,111 @@
|
|
|
1
|
+
import { join, relative } from "node:path";
|
|
2
|
+
import fs from "node:fs";
|
|
3
|
+
import { fileURLToPath } from "node:url";
|
|
4
|
+
import { getTSConfig } from "../helpers/getTSConfig.js";
|
|
5
|
+
import { minimatch } from "minimatch";
|
|
6
|
+
import { Pack } from "./pack.js";
|
|
7
|
+
export class Target extends Pack {
|
|
8
|
+
get publicPath() {
|
|
9
|
+
return this.packageJson.config?.publicPath ?? super.publicPath;
|
|
10
|
+
}
|
|
11
|
+
get tsConfig() {
|
|
12
|
+
return this._tsConfig ??= getTSConfig(join(this.rootDir, 'tsconfig.json'));
|
|
13
|
+
}
|
|
14
|
+
isExcluded(fileName, isRelative = false) {
|
|
15
|
+
if (!isRelative) fileName = relative(this.rootDir, fileName);
|
|
16
|
+
if (fileName.startsWith('./')) fileName = fileName.substring(2);
|
|
17
|
+
const check = (pattern)=>{
|
|
18
|
+
return fileName.startsWith(pattern) || minimatch(fileName, pattern);
|
|
19
|
+
};
|
|
20
|
+
const include = this.tsConfig.include ?? [];
|
|
21
|
+
if (include.length > 0) {
|
|
22
|
+
if (!include.some(check)) return true;
|
|
23
|
+
}
|
|
24
|
+
const exclude = this.tsConfig.exclude ?? [
|
|
25
|
+
'dist',
|
|
26
|
+
'node_modules'
|
|
27
|
+
];
|
|
28
|
+
return exclude.some(check);
|
|
29
|
+
}
|
|
30
|
+
get swcConfigPath() {
|
|
31
|
+
const local = join(this.rootDir, '.swcrc');
|
|
32
|
+
if (fs.existsSync(local)) return local;
|
|
33
|
+
return fileURLToPath(import.meta.resolve('@cmmn/tools/swcrc'));
|
|
34
|
+
}
|
|
35
|
+
get swcConfig() {
|
|
36
|
+
this.swcConfigBase ??= JSON.parse(fs.readFileSync(this.swcConfigPath, {
|
|
37
|
+
encoding: 'utf-8'
|
|
38
|
+
}));
|
|
39
|
+
const tsConfig = this.tsConfig;
|
|
40
|
+
return this._swcConfig ??= {
|
|
41
|
+
...this.swcConfigBase,
|
|
42
|
+
jsc: {
|
|
43
|
+
...this.swcConfigBase.jsc,
|
|
44
|
+
baseUrl: this.rootDir,
|
|
45
|
+
paths: tsConfig.compilerOptions?.paths
|
|
46
|
+
},
|
|
47
|
+
module: {
|
|
48
|
+
type: 'es6',
|
|
49
|
+
strict: true,
|
|
50
|
+
strictMode: false,
|
|
51
|
+
resolveFully: true
|
|
52
|
+
},
|
|
53
|
+
sourceMaps: true,
|
|
54
|
+
inlineSourcesContent: false
|
|
55
|
+
};
|
|
56
|
+
}
|
|
57
|
+
async getPublishPackageJson() {
|
|
58
|
+
const packageJson = JSON.parse(JSON.stringify(this.packageJson));
|
|
59
|
+
for (let entry of this.entries){
|
|
60
|
+
if (entry.isHTML || entry.isExcluded) continue;
|
|
61
|
+
const typings = entry.isTypeScript ? './' + join('./dist/typings', relative(this.rootDir, entry.source.replace(/\.ts$/, '.d.ts'))) : undefined;
|
|
62
|
+
const bundle = `./dist/bundle/${entry.output}`;
|
|
63
|
+
if (packageJson.exports) {
|
|
64
|
+
packageJson.exports[entry.name ? "./" + entry.name : "."] = {
|
|
65
|
+
default: bundle,
|
|
66
|
+
typings
|
|
67
|
+
};
|
|
68
|
+
} else {
|
|
69
|
+
packageJson.main = bundle;
|
|
70
|
+
packageJson.typings = typings;
|
|
71
|
+
}
|
|
72
|
+
}
|
|
73
|
+
delete packageJson.module;
|
|
74
|
+
delete packageJson.browser;
|
|
75
|
+
delete packageJson.scripts;
|
|
76
|
+
delete packageJson.devDependencies;
|
|
77
|
+
if (!packageJson.files) packageJson.files = [
|
|
78
|
+
'dist'
|
|
79
|
+
];
|
|
80
|
+
return JSON.stringify(packageJson, null, '\t');
|
|
81
|
+
}
|
|
82
|
+
createEntry(name, source) {
|
|
83
|
+
return {
|
|
84
|
+
...super.createEntry(name, source),
|
|
85
|
+
isExcluded: this.isExcluded(source, true)
|
|
86
|
+
};
|
|
87
|
+
}
|
|
88
|
+
get https() {
|
|
89
|
+
const host = this.packageJson.config?.host;
|
|
90
|
+
if (!host) return null;
|
|
91
|
+
return {
|
|
92
|
+
host,
|
|
93
|
+
port: this.packageJson.config.port,
|
|
94
|
+
cert: join(this.rootDir, `dist/${host}.pem`),
|
|
95
|
+
key: join(this.rootDir, `dist/${host}-key.pem`)
|
|
96
|
+
};
|
|
97
|
+
}
|
|
98
|
+
get proxy() {
|
|
99
|
+
return this._proxy ??= Object.entries({
|
|
100
|
+
...this.packageJson.config?.proxy ?? {}
|
|
101
|
+
}).map(([regex, replace])=>({
|
|
102
|
+
regex: new RegExp(regex),
|
|
103
|
+
replace
|
|
104
|
+
}));
|
|
105
|
+
}
|
|
106
|
+
constructor(...args){
|
|
107
|
+
super(...args), this.publicDir = join(this.rootDir, 'public');
|
|
108
|
+
}
|
|
109
|
+
}
|
|
110
|
+
|
|
111
|
+
//# sourceMappingURL=target.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"sources":["/mnt/dev/cmmn/tools/model/target.ts"],"names":["join","relative","fs","fileURLToPath","getTSConfig","minimatch","Pack","Target","publicPath","packageJson","config","tsConfig","_tsConfig","rootDir","isExcluded","fileName","isRelative","startsWith","substring","check","pattern","include","length","some","exclude","swcConfigPath","local","existsSync","resolve","swcConfig","swcConfigBase","JSON","parse","readFileSync","encoding","_swcConfig","jsc","baseUrl","paths","compilerOptions","module","type","strict","strictMode","resolveFully","sourceMaps","inlineSourcesContent","getPublishPackageJson","stringify","entry","entries","isHTML","typings","isTypeScript","source","replace","undefined","bundle","output","exports","name","default","main","browser","scripts","devDependencies","files","createEntry","https","host","port","cert","key","proxy","_proxy","Object","map","regex","RegExp","publicDir"],"mappings":"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"}
|
|
@@ -0,0 +1,20 @@
|
|
|
1
|
+
import { PackServer } from "./pack-server.js";
|
|
2
|
+
export class BundleServer extends PackServer {
|
|
3
|
+
constructor(pack, bundler){
|
|
4
|
+
super(pack), this.bundler = bundler;
|
|
5
|
+
}
|
|
6
|
+
async handle(request, reply) {
|
|
7
|
+
const path = request.url.substring(this.pack.publicPath.length).replace(/^\//, '').split('?')[0];
|
|
8
|
+
reply.type(this.getMimeType(path));
|
|
9
|
+
// if (path.startsWith('/_/'))
|
|
10
|
+
// return reply.code(404).send('Not found');
|
|
11
|
+
this.pack.log(`^B${request.method}^w ^B${path}^w`);
|
|
12
|
+
const bundle = await (this.bundleRequest ??= this.bundler.bundle());
|
|
13
|
+
if (path == "bundle.json") return JSON.stringify(await bundle.getBundleJson());
|
|
14
|
+
const result = bundle.get(path) ?? await bundle.getPublicAsset(path);
|
|
15
|
+
if (result === undefined) return reply.code(404).send('Not found');
|
|
16
|
+
return result;
|
|
17
|
+
}
|
|
18
|
+
}
|
|
19
|
+
|
|
20
|
+
//# sourceMappingURL=bundle-server.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"sources":["/mnt/dev/cmmn/tools/servers/bundle-server.ts"],"names":["PackServer","BundleServer","pack","bundler","handle","request","reply","path","url","substring","publicPath","length","replace","split","type","getMimeType","log","method","bundle","bundleRequest","JSON","stringify","getBundleJson","result","get","getPublicAsset","undefined","code","send"],"mappings":"AAEA,SAAQA,UAAU,QAAO,mBAAgB;AAKzC,OAAO,MAAMC,qBAAqBD;IAE9B,YAAYE,IAAU,EAAE,AAAQC,OAAiB,CAAE;QAC/C,KAAK,CAACD,YADsBC,UAAAA;IAEhC;IAGA,MAAgBC,OAAOC,OAAuB,EAAEC,KAAmB,EAAC;QAChE,MAAMC,OAAOF,QAAQG,GAAG,CAACC,SAAS,CAAC,IAAI,CAACP,IAAI,CAACQ,UAAU,CAACC,MAAM,EACzDC,OAAO,CAAC,OAAO,IACfC,KAAK,CAAC,IAAI,CAAC,EAAE;QAClBP,MAAMQ,IAAI,CAAC,IAAI,CAACC,WAAW,CAACR;QAC5B,8BAA8B;QAC9B,gDAAgD;QAChD,IAAI,CAACL,IAAI,CAACc,GAAG,CACT,CAAC,EAAE,EAAEX,QAAQY,MAAM,CAAC,KAAK,EAAEV,KAAK,EAAE,CAAC;QAEvC,MAAMW,SAAS,MAAO,CAAA,IAAI,CAACC,aAAa,KAAK,IAAI,CAAChB,OAAO,CAACe,MAAM,EAAC;QACjE,IAAIX,QAAO,eACP,OAAOa,KAAKC,SAAS,CAAC,MAAMH,OAAOI,aAAa;QACpD,MAAMC,SAASL,OAAOM,GAAG,CAACjB,SAAS,MAAMW,OAAOO,cAAc,CAAClB;QAC/D,IAAIgB,WAAWG,WACX,OAAOpB,MAAMqB,IAAI,CAAC,KAAKC,IAAI,CAAC;QAChC,OAAOL;IACX;AAEJ"}
|
|
@@ -0,0 +1,70 @@
|
|
|
1
|
+
import { Target } from "../model/target.js";
|
|
2
|
+
import { BundleServer } from "./bundle-server.js";
|
|
3
|
+
import { ViteDevelopmentServer } from "./vite-dev-server.js";
|
|
4
|
+
import { TargetRunner } from "./target-runnner.js";
|
|
5
|
+
export class DevServer {
|
|
6
|
+
get resolver() {
|
|
7
|
+
return this.monorepo.resolver;
|
|
8
|
+
}
|
|
9
|
+
createServer(pack) {
|
|
10
|
+
if (pack instanceof Target) {
|
|
11
|
+
if (pack.packageJson.bin) {
|
|
12
|
+
return new TargetRunner(pack);
|
|
13
|
+
}
|
|
14
|
+
if (this.monorepo.flags.production) {
|
|
15
|
+
const bundler = this.monorepo.createBundler(pack);
|
|
16
|
+
return new BundleServer(pack, bundler);
|
|
17
|
+
}
|
|
18
|
+
return new ViteDevelopmentServer(pack, this.monorepo);
|
|
19
|
+
}
|
|
20
|
+
const bundler = this.monorepo.createBundler(pack);
|
|
21
|
+
return new BundleServer(pack, bundler);
|
|
22
|
+
}
|
|
23
|
+
get isBundler() {
|
|
24
|
+
return this.monorepo.flags.production;
|
|
25
|
+
}
|
|
26
|
+
constructor(monorepo){
|
|
27
|
+
this.monorepo = monorepo;
|
|
28
|
+
this.rootTarget = this.monorepo.root;
|
|
29
|
+
this.targetServers = new Map(this.monorepo.packs.map((pack)=>[
|
|
30
|
+
pack,
|
|
31
|
+
this.createServer(pack)
|
|
32
|
+
]));
|
|
33
|
+
this.rewriteUrl = (req)=>{
|
|
34
|
+
if (req.url.includes('@ws')) return req.url;
|
|
35
|
+
const [path, query] = req.url.split('?');
|
|
36
|
+
const resolved = this.resolver.resolvePath(path, null, {
|
|
37
|
+
attributes: {
|
|
38
|
+
resolve: query?.includes('resolve') ? true : undefined
|
|
39
|
+
}
|
|
40
|
+
});
|
|
41
|
+
if (resolved) {
|
|
42
|
+
return resolved.pack.publicPath + '/' + resolved.path + (query ? '?' + query : '');
|
|
43
|
+
}
|
|
44
|
+
return req.url;
|
|
45
|
+
};
|
|
46
|
+
}
|
|
47
|
+
async register(app) {
|
|
48
|
+
for (let targetServer of this.targetServers.values()){
|
|
49
|
+
await targetServer.register(app);
|
|
50
|
+
}
|
|
51
|
+
app.addHook('preHandler', async (request, reply)=>{
|
|
52
|
+
if (request.url.endsWith('?resolve')) return reply.type('application/javascript').send(`export default ${JSON.stringify(request.url.split('?')[0])}`);
|
|
53
|
+
});
|
|
54
|
+
app.addHook('preHandler', async (req, res)=>{
|
|
55
|
+
this.resolver.basePath = `${req.headers.protocol ?? req.protocol}://${req.headers.host ?? req.host}`;
|
|
56
|
+
});
|
|
57
|
+
app.addHook('onError', (req, res, error)=>{
|
|
58
|
+
this.rootTarget.error(`${req.url}: ${error}`);
|
|
59
|
+
res.status(422).send('Failed to process request');
|
|
60
|
+
});
|
|
61
|
+
if (this.isBundler) {
|
|
62
|
+
app.get('/_sw.js', (req, res)=>{
|
|
63
|
+
const worker = this.resolver.resolveId("@cmmn/service-worker/worker");
|
|
64
|
+
res.type('application/javascript').send(`import "${worker.id}"`);
|
|
65
|
+
});
|
|
66
|
+
}
|
|
67
|
+
}
|
|
68
|
+
}
|
|
69
|
+
|
|
70
|
+
//# sourceMappingURL=dev-server.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"sources":["/mnt/dev/cmmn/tools/servers/dev-server.ts"],"names":["Target","BundleServer","ViteDevelopmentServer","TargetRunner","DevServer","resolver","monorepo","createServer","pack","packageJson","bin","flags","production","bundler","createBundler","isBundler","rootTarget","root","targetServers","Map","packs","map","rewriteUrl","req","url","includes","path","query","split","resolved","resolvePath","attributes","resolve","undefined","publicPath","register","app","targetServer","values","addHook","request","reply","endsWith","type","send","JSON","stringify","res","basePath","headers","protocol","host","error","status","get","worker","resolveId","id"],"mappings":"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"}
|
|
@@ -0,0 +1,20 @@
|
|
|
1
|
+
import mime from "mime-types";
|
|
2
|
+
export class PackServer {
|
|
3
|
+
constructor(pack){
|
|
4
|
+
this.pack = pack;
|
|
5
|
+
}
|
|
6
|
+
async register(app) {
|
|
7
|
+
app.get(this.pack.publicPath, (req, res)=>{
|
|
8
|
+
return this.handle(req, res);
|
|
9
|
+
});
|
|
10
|
+
app.get(this.pack.publicPath + '/*', (req, res)=>{
|
|
11
|
+
return this.handle(req, res);
|
|
12
|
+
});
|
|
13
|
+
}
|
|
14
|
+
getMimeType(path) {
|
|
15
|
+
if (path.match(/\.([tj]sx?|cjs|mjs)$/)) return 'application/javascript';
|
|
16
|
+
return mime.lookup(path);
|
|
17
|
+
}
|
|
18
|
+
}
|
|
19
|
+
|
|
20
|
+
//# sourceMappingURL=pack-server.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"sources":["/mnt/dev/cmmn/tools/servers/pack-server.ts"],"names":["mime","PackServer","pack","register","app","get","publicPath","req","res","handle","getMimeType","path","match","lookup"],"mappings":"AAEA,OAAOA,UAAU,aAAa;AAE9B,OAAO,MAAeC;IAClB,YAAY,AAAUC,IAAU,CAAE;aAAZA,OAAAA;IAEtB;IAIA,MAAMC,SAASC,GAAoB,EAAE;QACjCA,IAAIC,GAAG,CAAC,IAAI,CAACH,IAAI,CAACI,UAAU,EAAE,CAACC,KAAKC;YAChC,OAAO,IAAI,CAACC,MAAM,CAACF,KAAKC;QAC5B;QACAJ,IAAIC,GAAG,CAAC,IAAI,CAACH,IAAI,CAACI,UAAU,GAAG,MAAM,CAACC,KAAKC;YACvC,OAAO,IAAI,CAACC,MAAM,CAACF,KAAKC;QAC5B;IACJ;IAEAE,YAAYC,IAAY,EAAC;QACrB,IAAIA,KAAKC,KAAK,CAAC,yBACX,OAAO;QACX,OAAOZ,KAAKa,MAAM,CAACF;IACvB;AACJ"}
|