@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 @@
|
|
|
1
|
+
{"version":3,"sources":["/mnt/dev/cmmn/tools/commands/typings.ts"],"names":["ts","resolve","fs","events","Watcher","Monorepo","typings","flags","monorepo","load","setMaxListeners","Math","max","targets","length","defaultMaxListeners","watcher","watch","target","tsConfig","include","generateTypings","watchTarget","addEventListener","e","log","files","join","start","performance","now","host","createSolutionBuilderWithWatchHost","sys","createProgram","useCaseSensitiveFileNames","builder","createSolutionBuilder","rootDir","incremental","dry","assumeChangesOnlyAffectDirectDependencies","declaration","declarationMap","emitDeclarationOnly","force","clean","build","duration","toFixed","cleanedBaseDirs","Set","rootNames","options","oldProgram","configFileParsingDiagnostics","projectReferences","outDir","configFilePath","declarationDir","baseUrl","tsBuildInfoFile","emitDeclarationsOnly","has","rmSync","recursive","add","createEmitAndSemanticDiagnosticsBuilderProgram"],"mappings":"AAAA,OAAOA,QAAQ,aAAa;AAC5B,SAAcC,OAAO,QAAiB,YAAY;AAClD,OAAOC,QAAQ,UAAU;AAIzB,OAAOC,YAAY,cAAc;AACjC,SAAQC,OAAO,QAAO,wBAAqB;AAC3C,SAAQC,QAAQ,QAAO,uBAAoB;AAG3C,OAAO,eAAeC,QAAQC,KAAY;IACtC,MAAMC,WAAW,MAAMH,SAASI,IAAI,CAACF;IACrCJ,OAAOO,eAAe,CAACC,KAAKC,GAAG,CAACJ,SAASK,OAAO,CAACC,MAAM,GAAG,GAAGX,OAAOY,mBAAmB;IACvF,MAAMC,UAAUT,MAAMU,KAAK,GAAG,IAAIb,YAAY;IAC9C,KAAK,MAAMc,UAAUV,SAASK,OAAO,CAAE;QACnC,IAAIK,OAAOC,QAAQ,CAACC,OAAO,EAAEN,WAAW,GACpC;QACJO,gBAAgBH;QAChB,IAAIF,SAAS;YACTA,QAAQM,WAAW,CAACJ;YACpBA,OAAOK,gBAAgB,CAAC,UAAU,CAACC;gBAC/BN,OAAOO,GAAG,CAAC,CAAC,WAAW,EAAED,EAAEE,KAAK,CAACC,IAAI,CAAC,OAAO;gBAE7CN,gBAAgBH;YACpB;QACJ;IACJ;AACJ;AAEA,OAAO,SAASG,gBAAgBH,MAAc;IAC1C,MAAMU,QAAQC,YAAYC,GAAG;IAC7B,MAAMC,OAAO/B,GAAGgC,kCAAkC,CAAChC,GAAGiC,GAAG,EAAEC;IAE3DH,KAAKI,yBAAyB;IAE9B,MAAMC,UAAUpC,GAAGqC,qBAAqB,CAACN,MAAM;QAACb,OAAOoB,OAAO;KAAC,EAAE;QAC7DC,aAAa;QACbC,KAAK;QACLC,2CAA2C;QAC3CC,aAAa;QACbC,gBAAgB;QAChBC,qBAAqB;QACrBC,OAAO;IACX;IACAT,QAAQU,KAAK,CAAC5B,OAAOoB,OAAO;IAC5BF,QAAQW,KAAK,CAAC7B,OAAOoB,OAAO,EAAE;IAC9B,MAAMU,WAAWnB,YAAYC,GAAG,KAAKF;IACrCV,OAAOO,GAAG,CAAC,CAAC,cAAc,EAAEuB,SAASC,OAAO,GAAG,GAAG,CAAC;AACvD;AAEA,MAAMC,kBAAkB,IAAIC;AAE5B,SAASjB,cAAckB,SAAS,EAAEC,OAAO,EAAEtB,IAAI,EAAEuB,UAAU,EAAEC,4BAA4B,EAAEC,iBAAiB;IACxGH,QAAQI,MAAM,GAAGxD,QAAQoD,QAAQK,cAAc,EAAEL,QAAQI,MAAM,IAAI;IACnEJ,QAAQX,WAAW,GAAG;IACtBW,QAAQM,cAAc,GAAG1D,QAAQoD,QAAQK,cAAc,EAAEL,QAAQM,cAAc,IAAI;IACnFN,QAAQO,OAAO,GAAG3D,QAAQoD,QAAQK,cAAc,EAAEL,QAAQO,OAAO,IAAI;IACrEP,QAAQQ,eAAe,GAAG5D,QAAQoD,QAAQK,cAAc,EAAEL,QAAQQ,eAAe,IAAI;IACrFR,QAAQS,oBAAoB,GAAG;IAC/B,wDAAwD;IACxD,wDAAwD;IACxD,IAAI,CAACZ,gBAAgBa,GAAG,CAACV,QAAQO,OAAO,GAAG;QACvC1D,GAAG8D,MAAM,CAACX,QAAQM,cAAc,EAAE;YAACM,WAAW;YAAMpB,OAAO;QAAI;QAC/D3C,GAAG8D,MAAM,CAACX,QAAQQ,eAAe,EAAE;YAAChB,OAAO;QAAI;QAC/CK,gBAAgBgB,GAAG,CAACb,QAAQO,OAAO;IACvC;IACA,OAAO5D,GAAGmE,8CAA8C,CACpDf,WAAWC,SAAStB,MAAMuB,YAAYC,8BAA8BC;AAE5E"}
|
|
@@ -0,0 +1,34 @@
|
|
|
1
|
+
import fs from "node:fs/promises";
|
|
2
|
+
import { exec } from "node:child_process";
|
|
3
|
+
import { getPackages } from "@manypkg/get-packages";
|
|
4
|
+
export async function version(flags) {
|
|
5
|
+
const packages = await getPackages(process.cwd());
|
|
6
|
+
for (let target of packages.packages){
|
|
7
|
+
if (!flags.version) {
|
|
8
|
+
console.log(`${target.packageJson.name}: ${target.packageJson.version}`);
|
|
9
|
+
} else {
|
|
10
|
+
target.packageJson.version = flags.version;
|
|
11
|
+
await fs.writeFile(`${target.dir}/package.json`, JSON.stringify(target.packageJson, null, '\t'));
|
|
12
|
+
await exec(`git add ${target.dir}/package.json`);
|
|
13
|
+
}
|
|
14
|
+
}
|
|
15
|
+
if (flags.version) {
|
|
16
|
+
await exec(`git commit -m "version ${flags.version}"`, {
|
|
17
|
+
stdio: 'inherit'
|
|
18
|
+
});
|
|
19
|
+
}
|
|
20
|
+
}
|
|
21
|
+
/**
|
|
22
|
+
* @param target {import('../model/target.ts')}
|
|
23
|
+
* @param version {string}
|
|
24
|
+
*/ function updateVersion(target, version) {
|
|
25
|
+
switch(version){
|
|
26
|
+
case 'major':
|
|
27
|
+
break;
|
|
28
|
+
default:
|
|
29
|
+
target.packageJson.version = version;
|
|
30
|
+
break;
|
|
31
|
+
}
|
|
32
|
+
}
|
|
33
|
+
|
|
34
|
+
//# sourceMappingURL=version.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"sources":["/mnt/dev/cmmn/tools/commands/version.js"],"names":["fs","exec","getPackages","version","flags","packages","process","cwd","target","console","log","packageJson","name","writeFile","dir","JSON","stringify","stdio","updateVersion"],"mappings":"AAAA,OAAOA,QAAQ,mBAAmB;AAClC,SAAQC,IAAI,QAAO,qBAAqB;AACxC,SAASC,WAAW,QAAQ,wBAAwB;AAEpD,OAAO,eAAeC,QAAQC,KAAK;IAC/B,MAAMC,WAAW,MAAMH,YAAYI,QAAQC,GAAG;IAC9C,KAAK,IAAIC,UAAUH,SAASA,QAAQ,CAAE;QAClC,IAAI,CAACD,MAAMD,OAAO,EAAE;YAChBM,QAAQC,GAAG,CAAC,GAAGF,OAAOG,WAAW,CAACC,IAAI,CAAC,EAAE,EAAEJ,OAAOG,WAAW,CAACR,OAAO,EAAE;QAC3E,OAAO;YACHK,OAAOG,WAAW,CAACR,OAAO,GAAGC,MAAMD,OAAO;YAC1C,MAAMH,GAAGa,SAAS,CAAC,GAAGL,OAAOM,GAAG,CAAC,aAAa,CAAC,EAAEC,KAAKC,SAAS,CAACR,OAAOG,WAAW,EAAE,MAAM;YAC1F,MAAMV,KAAK,CAAC,QAAQ,EAAEO,OAAOM,GAAG,CAAC,aAAa,CAAC;QACnD;IACJ;IACA,IAAIV,MAAMD,OAAO,EAAE;QACf,MAAMF,KAAK,CAAC,uBAAuB,EAAEG,MAAMD,OAAO,CAAC,CAAC,CAAC,EAAE;YACnDc,OAAO;QACX;IACJ;AACJ;AAEA;;;CAGC,GACD,SAASC,cAAcV,MAAM,EAAEL,OAAO;IAClC,OAAQA;QACJ,KAAK;YACD;QACJ;YACIK,OAAOG,WAAW,CAACR,OAAO,GAAGA;YAC7B;IACR;AACJ"}
|
|
@@ -0,0 +1,18 @@
|
|
|
1
|
+
import { subtle } from "crypto";
|
|
2
|
+
export async function getAssets(outputs) {
|
|
3
|
+
return Promise.all(outputs.map(getAsset));
|
|
4
|
+
}
|
|
5
|
+
export async function getHash(data) {
|
|
6
|
+
const buffer = Buffer.from(data);
|
|
7
|
+
const hash = await subtle.digest('SHA-1', buffer);
|
|
8
|
+
return Buffer.from(hash).toString('base64');
|
|
9
|
+
}
|
|
10
|
+
async function getAsset(output) {
|
|
11
|
+
return {
|
|
12
|
+
path: output.fileName,
|
|
13
|
+
hash: await getHash(output.data),
|
|
14
|
+
size: output.data.length
|
|
15
|
+
};
|
|
16
|
+
}
|
|
17
|
+
|
|
18
|
+
//# sourceMappingURL=asset-collection.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"sources":["/mnt/dev/cmmn/tools/dev-server/asset-collection.ts"],"names":["subtle","getAssets","outputs","Promise","all","map","getAsset","getHash","data","buffer","Buffer","from","hash","digest","toString","output","path","fileName","size","length"],"mappings":"AAAA,SAAQA,MAAM,QAAO,SAAS;AAG9B,OAAO,eAAeC,UAAUC,OAAiB;IAChD,OAAOC,QAAQC,GAAG,CAACF,QAAQG,GAAG,CAACC;AAChC;AAEA,OAAO,eAAeC,QAAQC,IAAyB;IACtD,MAAMC,SAASC,OAAOC,IAAI,CAACH;IAC3B,MAAMI,OAAO,MAAMZ,OAAOa,MAAM,CAAC,SAASJ;IAC1C,OAAOC,OAAOC,IAAI,CAACC,MAAME,QAAQ,CAAC;AACnC;AAEA,eAAeR,SAASS,MAAc;IACrC,OAAO;QACNC,MAAMD,OAAOE,QAAQ;QACrBL,MAAM,MAAML,QAAQQ,OAAOP,IAAI;QAC/BU,MAAMH,OAAOP,IAAI,CAACW,MAAM;IACzB;AACD"}
|
|
@@ -0,0 +1,47 @@
|
|
|
1
|
+
import { getAssets } from "./asset-collection.js";
|
|
2
|
+
import { readdir, stat } from "node:fs/promises";
|
|
3
|
+
import path from "node:path";
|
|
4
|
+
export class BundleJsonBuilder {
|
|
5
|
+
constructor(target, url){
|
|
6
|
+
this.target = target;
|
|
7
|
+
this.url = url;
|
|
8
|
+
}
|
|
9
|
+
async getBundleJson(bundle) {
|
|
10
|
+
const data = {
|
|
11
|
+
publicPath: this.target.publicPath,
|
|
12
|
+
proxy: this.target.proxy.map((x)=>({
|
|
13
|
+
regex: x.regex.source,
|
|
14
|
+
replace: this.target.getEntry("." + x.replace)?.output
|
|
15
|
+
}))
|
|
16
|
+
};
|
|
17
|
+
const assets = await getAssets(bundle);
|
|
18
|
+
for (let asset of assets){
|
|
19
|
+
const entry = this.target.entries.find((x)=>x.relative == './' + asset.path);
|
|
20
|
+
if (entry) {
|
|
21
|
+
asset.path = entry.output;
|
|
22
|
+
}
|
|
23
|
+
}
|
|
24
|
+
for (let file of (await readdir(this.target.publicDir, {
|
|
25
|
+
recursive: true
|
|
26
|
+
}).catch(()=>[]))){
|
|
27
|
+
const info = await stat(path.join(this.target.publicDir, file));
|
|
28
|
+
assets.push({
|
|
29
|
+
path: file,
|
|
30
|
+
hash: info.mtimeMs.toString(36),
|
|
31
|
+
size: info.size,
|
|
32
|
+
optional: !file.endsWith('.json') // TODO: check importance?
|
|
33
|
+
});
|
|
34
|
+
}
|
|
35
|
+
const bundles = new Set(bundle.flatMap((x)=>x.deps).filter((x)=>x.package.startsWith(this.url)).map((x)=>x.package));
|
|
36
|
+
return {
|
|
37
|
+
...data,
|
|
38
|
+
assets,
|
|
39
|
+
deps: Array.from(bundles).map((x)=>({
|
|
40
|
+
baseURI: x,
|
|
41
|
+
path: ''
|
|
42
|
+
}))
|
|
43
|
+
};
|
|
44
|
+
}
|
|
45
|
+
}
|
|
46
|
+
|
|
47
|
+
//# sourceMappingURL=bundle.json.builder.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"sources":["/mnt/dev/cmmn/tools/dev-server/bundle.json.builder.ts"],"names":["getAssets","readdir","stat","path","BundleJsonBuilder","target","url","getBundleJson","bundle","data","publicPath","proxy","map","x","regex","source","replace","getEntry","output","assets","asset","entry","entries","find","relative","file","publicDir","recursive","catch","info","join","push","hash","mtimeMs","toString","size","optional","endsWith","bundles","Set","flatMap","deps","filter","package","startsWith","Array","from","baseURI"],"mappings":"AACA,SAAQA,SAAS,QAAO,wBAAqB;AAC7C,SAAQC,OAAO,EAAEC,IAAI,QAAO,mBAAmB;AAC/C,OAAOC,UAAU,YAAY;AAI7B,OAAO,MAAMC;IACT,YAAY,AAAQC,MAAc,EACtB,AAAQC,GAAW,CAAE;aADbD,SAAAA;aACAC,MAAAA;IAEpB;IAEA,MAAaC,cAAcC,MAAgB,EAAuB;QAC9D,MAAMC,OAAO;YACTC,YAAY,IAAI,CAACL,MAAM,CAACK,UAAU;YAClCC,OAAO,IAAI,CAACN,MAAM,CAACM,KAAK,CAACC,GAAG,CAACC,CAAAA,IAAM,CAAA;oBAC/BC,OAAOD,EAAEC,KAAK,CAACC,MAAM;oBACrBC,SAAS,IAAI,CAACX,MAAM,CAACY,QAAQ,CAAC,MAAMJ,EAAEG,OAAO,GAAGE;gBACpD,CAAA;QACJ;QACA,MAAMC,SAAS,MAAMnB,UAAUQ;QAC/B,KAAK,IAAIY,SAASD,OAAQ;YACtB,MAAME,QAAQ,IAAI,CAAChB,MAAM,CAACiB,OAAO,CAACC,IAAI,CAACV,CAAAA,IAAKA,EAAEW,QAAQ,IAAI,OAAOJ,MAAMjB,IAAI;YAC3E,IAAIkB,OAAO;gBACPD,MAAMjB,IAAI,GAAGkB,MAAMH,MAAM;YAC7B;QACJ;QACA,KAAK,IAAIO,QAAQ,CAAA,MAAMxB,QAAQ,IAAI,CAACI,MAAM,CAACqB,SAAS,EAAE;YAClDC,WAAW;QACf,GAAGC,KAAK,CAAC,IAAM,EAAE,CAAA,EAAG;YAChB,MAAMC,OAAO,MAAM3B,KAAKC,KAAK2B,IAAI,CAAC,IAAI,CAACzB,MAAM,CAACqB,SAAS,EAAED;YACzDN,OAAOY,IAAI,CAAC;gBACR5B,MAAMsB;gBACNO,MAAMH,KAAKI,OAAO,CAACC,QAAQ,CAAC;gBAC5BC,MAAMN,KAAKM,IAAI;gBACfC,UAAU,CAACX,KAAKY,QAAQ,CAAC,SAAS,0BAA0B;YAChE;QACJ;QACA,MAAMC,UAAU,IAAIC,IAAI/B,OAAOgC,OAAO,CAAC3B,CAAAA,IAAKA,EAAE4B,IAAI,EAC7CC,MAAM,CAAC7B,CAAAA,IAAKA,EAAE8B,OAAO,CAACC,UAAU,CAAC,IAAI,CAACtC,GAAG,GACzCM,GAAG,CAACC,CAAAA,IAAKA,EAAE8B,OAAO;QACvB,OAAO;YACH,GAAGlC,IAAI;YACPU;YACAsB,MAAMI,MAAMC,IAAI,CAACR,SAAS1B,GAAG,CAACC,CAAAA,IAAM,CAAA;oBAChCkC,SAASlC;oBACTV,MAAM;gBACV,CAAA;QACJ;IACJ;AAEJ"}
|
|
@@ -0,0 +1,96 @@
|
|
|
1
|
+
import { fileURLToPath } from "node:url";
|
|
2
|
+
import path from "node:path";
|
|
3
|
+
import fs from "node:fs/promises";
|
|
4
|
+
import mime from "mime-types";
|
|
5
|
+
import { RolldownDependencyBuilder } from "./rolldown-dependency-builder.js";
|
|
6
|
+
import { getHash } from "./asset-collection.js";
|
|
7
|
+
export class DependencyServer {
|
|
8
|
+
constructor(targets){
|
|
9
|
+
this.base = '/_/@id';
|
|
10
|
+
this.cache = new Map();
|
|
11
|
+
this.target = targets.at(-1);
|
|
12
|
+
this.optimizeDeps = [
|
|
13
|
+
...new Set([
|
|
14
|
+
...targets.flatMap((t)=>t.externalDependencies)
|
|
15
|
+
])
|
|
16
|
+
].filter((x)=>targets.every((y)=>y.packageJson.name !== x));
|
|
17
|
+
this.builder = new RolldownDependencyBuilder(this.optimizeDeps, this.base, this.target.flags.minify);
|
|
18
|
+
}
|
|
19
|
+
async getPackageJSON(pkg) {
|
|
20
|
+
const resolved = import.meta.resolve(pkg);
|
|
21
|
+
const file = fileURLToPath(resolved);
|
|
22
|
+
let dir = path.dirname(file);
|
|
23
|
+
while(true){
|
|
24
|
+
const packageJsonText = await fs.readFile(path.resolve(dir, 'package.json'), {
|
|
25
|
+
encoding: 'utf-8'
|
|
26
|
+
}).catch(()=>null);
|
|
27
|
+
if (packageJsonText) return JSON.parse(packageJsonText);
|
|
28
|
+
dir = path.resolve(dir, '..');
|
|
29
|
+
}
|
|
30
|
+
}
|
|
31
|
+
/**
|
|
32
|
+
* @param app {import("fastify/types/instance.js").FastifyInstance}
|
|
33
|
+
* @returns {Promise<void>}
|
|
34
|
+
*/ async register(app) {
|
|
35
|
+
app.get('/_/@id/*', async (req, res)=>{
|
|
36
|
+
try {
|
|
37
|
+
let param = req.params['*'];
|
|
38
|
+
res.header('Access-Control-Allow-Origin', '*');
|
|
39
|
+
res.header('Content-Type', mime.lookup(param) || 'text/javascript');
|
|
40
|
+
const data = await this.getAsset(param);
|
|
41
|
+
return data;
|
|
42
|
+
} catch (e) {
|
|
43
|
+
console.error(e);
|
|
44
|
+
res.statusCode = 404;
|
|
45
|
+
return e.toString();
|
|
46
|
+
}
|
|
47
|
+
});
|
|
48
|
+
}
|
|
49
|
+
async getAsset(asset) {
|
|
50
|
+
let [pkg, path] = asset.split('/@_/');
|
|
51
|
+
path ??= '';
|
|
52
|
+
if (pkg.endsWith('/')) pkg = pkg.substring(0, pkg.length - 1);
|
|
53
|
+
const pkgJSON = await this.getPackageJSON(pkg);
|
|
54
|
+
const exports = pkgJSON.exports;
|
|
55
|
+
if (exports && `.${path}` in exports) {
|
|
56
|
+
pkg += path;
|
|
57
|
+
path = '';
|
|
58
|
+
}
|
|
59
|
+
if (!this.cache.has(pkg)) {
|
|
60
|
+
const start = +performance.now();
|
|
61
|
+
await this.getBundle(pkg);
|
|
62
|
+
const end = +performance.now();
|
|
63
|
+
this.target.log(`^Wbundle ^R${pkg} ^Wfor ^R${((end - start) / 1000).toFixed(2)}s`);
|
|
64
|
+
}
|
|
65
|
+
const cached = this.cache.get(pkg);
|
|
66
|
+
return cached[path];
|
|
67
|
+
}
|
|
68
|
+
async getBundle(pkg) {
|
|
69
|
+
const pkgJSON = await this.getPackageJSON(pkg);
|
|
70
|
+
const isModule = pkgJSON.type === 'module' || pkgJSON.module;
|
|
71
|
+
const bundle = await this.builder.build(pkg, isModule).catch(console.error);
|
|
72
|
+
if (!bundle) return {};
|
|
73
|
+
const bundleJson = {
|
|
74
|
+
assets: [],
|
|
75
|
+
deps: [
|
|
76
|
+
...new Set(bundle.flatMap((output)=>output.deps))
|
|
77
|
+
].filter((x)=>x.package.startsWith('http')).map((x)=>({
|
|
78
|
+
baseURI: x.package,
|
|
79
|
+
path: x.path
|
|
80
|
+
}))
|
|
81
|
+
};
|
|
82
|
+
const result = {};
|
|
83
|
+
for (let output of bundle){
|
|
84
|
+
bundleJson.assets.push({
|
|
85
|
+
path: output.fileName,
|
|
86
|
+
size: output.data.length,
|
|
87
|
+
hash: await getHash(output.data)
|
|
88
|
+
});
|
|
89
|
+
result[output.fileName.startsWith('@_/') ? output.fileName.substring(3) : output.fileName] = output.data;
|
|
90
|
+
}
|
|
91
|
+
result['bundle.json'] = JSON.stringify(bundleJson);
|
|
92
|
+
this.cache.set(pkg, result);
|
|
93
|
+
}
|
|
94
|
+
}
|
|
95
|
+
|
|
96
|
+
//# sourceMappingURL=dependencyServer.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"sources":["/mnt/dev/cmmn/tools/dev-server/dependencyServer.ts"],"names":["fileURLToPath","path","fs","mime","RolldownDependencyBuilder","getHash","DependencyServer","targets","base","cache","Map","target","at","optimizeDeps","Set","flatMap","t","externalDependencies","filter","x","every","y","packageJson","name","builder","flags","minify","getPackageJSON","pkg","resolved","resolve","file","dir","dirname","packageJsonText","readFile","encoding","catch","JSON","parse","register","app","get","req","res","param","params","header","lookup","data","getAsset","e","console","error","statusCode","toString","asset","split","endsWith","substring","length","pkgJSON","exports","has","start","performance","now","getBundle","end","log","toFixed","cached","isModule","type","module","bundle","build","bundleJson","assets","deps","output","package","startsWith","map","baseURI","result","push","fileName","size","hash","stringify","set"],"mappings":"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"}
|
|
@@ -0,0 +1,49 @@
|
|
|
1
|
+
import { DependencyServer } from "./dependencyServer.js";
|
|
2
|
+
import { Resolver } from "./resolver.js";
|
|
3
|
+
import { TargetRunner } from "./target-runnner.js";
|
|
4
|
+
import { TargetWebServer } from "./target-web-server.js";
|
|
5
|
+
export class DevServer {
|
|
6
|
+
get isBundler() {
|
|
7
|
+
return this.rootTarget.flags.production;
|
|
8
|
+
}
|
|
9
|
+
constructor(targets){
|
|
10
|
+
this.targets = targets;
|
|
11
|
+
this.prefix = '_';
|
|
12
|
+
this.rootTarget = this.targets.at(-1);
|
|
13
|
+
this.resolver = new Resolver(this.targets);
|
|
14
|
+
this.targetServers = this.targets.map((t)=>{
|
|
15
|
+
if (t.packageJson.bin) {
|
|
16
|
+
return new TargetRunner(t, this.prefix, this.resolver);
|
|
17
|
+
}
|
|
18
|
+
return new TargetWebServer(t, this.prefix, this.resolver);
|
|
19
|
+
}).filter((x)=>x != null);
|
|
20
|
+
this.depServer = new DependencyServer(this.targets);
|
|
21
|
+
this.rewriteUrl = (req)=>{
|
|
22
|
+
return this.targetServers.reduceRight((path, target)=>target.rewritePath(path, req), req.url);
|
|
23
|
+
};
|
|
24
|
+
}
|
|
25
|
+
async register(app) {
|
|
26
|
+
app.addHook('preHandler', async (req, res)=>{
|
|
27
|
+
this.resolver.url = `${req.headers.protocol ?? req.protocol}://${req.headers.host ?? req.host}`;
|
|
28
|
+
for (let targetServer of this.targetServers){
|
|
29
|
+
targetServer.url = this.resolver.url;
|
|
30
|
+
}
|
|
31
|
+
});
|
|
32
|
+
await this.depServer.register(app);
|
|
33
|
+
for (let targetServer of this.targetServers){
|
|
34
|
+
await targetServer.register(app);
|
|
35
|
+
}
|
|
36
|
+
app.addHook('onError', (req, res, error)=>{
|
|
37
|
+
this.rootTarget.error(`${req.url}: ${error}`);
|
|
38
|
+
res.status(422).send('Failed to process request');
|
|
39
|
+
});
|
|
40
|
+
if (this.isBundler) {
|
|
41
|
+
app.get('/_/sw.js', (req, res)=>{
|
|
42
|
+
const worker = this.resolver.resolveId("@cmmn/service-worker/worker");
|
|
43
|
+
res.header('Service-Worker-Allowed', '/').type('application/javascript').send(`import "${worker.id}"`);
|
|
44
|
+
});
|
|
45
|
+
}
|
|
46
|
+
}
|
|
47
|
+
}
|
|
48
|
+
|
|
49
|
+
//# sourceMappingURL=dev-server.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"sources":["/mnt/dev/cmmn/tools/dev-server/dev-server.ts"],"names":["DependencyServer","Resolver","TargetRunner","TargetWebServer","DevServer","isBundler","rootTarget","flags","production","targets","prefix","at","resolver","targetServers","map","t","packageJson","bin","filter","x","depServer","rewriteUrl","req","reduceRight","path","target","rewritePath","url","register","app","addHook","res","headers","protocol","host","targetServer","error","status","send","get","worker","resolveId","header","type","id"],"mappings":"AAAA,SAAQA,gBAAgB,QAAO,wBAAwB;AACvD,SAAQC,QAAQ,QAAO,gBAAa;AACpC,SAAQC,YAAY,QAAO,sBAAsB;AACjD,SAAQC,eAAe,QAAO,yBAAsB;AAIpD,OAAO,MAAMC;IAWT,IAAIC,YAAW;QACX,OAAO,IAAI,CAACC,UAAU,CAACC,KAAK,CAACC,UAAU;IAC3C;IAEA,YAAY,AAAQC,OAAiB,CAAE;aAAnBA,UAAAA;aAdpBC,SAAS;aACTJ,aAAqB,IAAI,CAACG,OAAO,CAACE,EAAE,CAAC,CAAC;aACtCC,WAAW,IAAIX,SAAS,IAAI,CAACQ,OAAO;aACpCI,gBAAgB,IAAI,CAACJ,OAAO,CAACK,GAAG,CAACC,CAAAA;YAC7B,IAAIA,EAAEC,WAAW,CAACC,GAAG,EAAC;gBAClB,OAAO,IAAIf,aAAaa,GAAG,IAAI,CAACL,MAAM,EAAE,IAAI,CAACE,QAAQ;YACzD;YACA,OAAO,IAAIT,gBAAgBY,GAAG,IAAI,CAACL,MAAM,EAAE,IAAI,CAACE,QAAQ;QAC5D,GAAGM,MAAM,CAACC,CAAAA,IAAKA,KAAK;aACpBC,YAA8B,IAAIpB,iBAAiB,IAAI,CAACS,OAAO;aAQ/DY,aAAa,CAACC;YACV,OAAO,IAAI,CAACT,aAAa,CAACU,WAAW,CACjC,CAACC,MAAMC,SAAWA,OAAOC,WAAW,CAACF,MAAMF,MAC3CA,IAAIK,GAAG;QAEf;IAPA;IASA,MAAMC,SAASC,GAAoB,EAAE;QACjCA,IAAIC,OAAO,CAAC,cAAc,OAAOR,KAAKS;YAClC,IAAI,CAACnB,QAAQ,CAACe,GAAG,GAAG,GAAGL,IAAIU,OAAO,CAACC,QAAQ,IAAIX,IAAIW,QAAQ,CAAC,GAAG,EAAEX,IAAIU,OAAO,CAACE,IAAI,IAAIZ,IAAIY,IAAI,EAAE;YAC/F,KAAK,IAAIC,gBAAgB,IAAI,CAACtB,aAAa,CAAE;gBACzCsB,aAAaR,GAAG,GAAG,IAAI,CAACf,QAAQ,CAACe,GAAG;YACxC;QACJ;QACA,MAAM,IAAI,CAACP,SAAS,CAACQ,QAAQ,CAACC;QAC9B,KAAK,IAAIM,gBAAgB,IAAI,CAACtB,aAAa,CAAE;YACzC,MAAMsB,aAAaP,QAAQ,CAACC;QAChC;QACAA,IAAIC,OAAO,CAAC,WAAW,CAACR,KAAKS,KAAKK;YAC9B,IAAI,CAAC9B,UAAU,CAAC8B,KAAK,CAAC,GAAGd,IAAIK,GAAG,CAAC,EAAE,EAAES,OAAO;YAC5CL,IAAIM,MAAM,CAAC,KAAKC,IAAI,CAAC;QACzB;QACA,IAAI,IAAI,CAACjC,SAAS,EAAC;YACfwB,IAAIU,GAAG,CAAC,YAAY,CAACjB,KAAKS;gBACtB,MAAMS,SAAS,IAAI,CAAC5B,QAAQ,CAAC6B,SAAS,CAAC;gBACvCV,IAAIW,MAAM,CAAC,0BAA0B,KAChCC,IAAI,CAAC,0BACLL,IAAI,CAAC,CAAC,QAAQ,EAAEE,OAAOI,EAAE,CAAC,CAAC,CAAC;YACrC;QACJ;IACJ;AACJ"}
|
|
@@ -0,0 +1,34 @@
|
|
|
1
|
+
import { minify } from "@swc/core";
|
|
2
|
+
/**
|
|
3
|
+
* Custom plugin to apply terser during the bundle generation. Vite doesn't minify library ES
|
|
4
|
+
* modules.
|
|
5
|
+
*/ export function swcMinifyPlugin() {
|
|
6
|
+
return {
|
|
7
|
+
name: 'custom-terser',
|
|
8
|
+
async renderChunk (code, chunk) {
|
|
9
|
+
// Only process JavaScript chunks
|
|
10
|
+
if (!chunk.fileName.endsWith('.mjs') && !chunk.fileName.endsWith('.js')) {
|
|
11
|
+
return null;
|
|
12
|
+
}
|
|
13
|
+
// Keep the result readable for debugging
|
|
14
|
+
const result = await minify(code, {
|
|
15
|
+
compress: {
|
|
16
|
+
defaults: false,
|
|
17
|
+
module: true,
|
|
18
|
+
hoist_props: true,
|
|
19
|
+
unused: true,
|
|
20
|
+
dead_code: true
|
|
21
|
+
},
|
|
22
|
+
ecma: 2016,
|
|
23
|
+
module: true,
|
|
24
|
+
format: {
|
|
25
|
+
comments: false,
|
|
26
|
+
ecma: 2016
|
|
27
|
+
}
|
|
28
|
+
});
|
|
29
|
+
return result.code || null;
|
|
30
|
+
}
|
|
31
|
+
};
|
|
32
|
+
}
|
|
33
|
+
|
|
34
|
+
//# sourceMappingURL=minify.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"sources":["/mnt/dev/cmmn/tools/dev-server/plugins/minify.ts"],"names":["minify","swcMinifyPlugin","name","renderChunk","code","chunk","fileName","endsWith","result","compress","defaults","module","hoist_props","unused","dead_code","ecma","format","comments"],"mappings":"AAAA,SAAQA,MAAM,QAAO,YAAY;AAGjC;;;CAGC,GACD,OAAO,SAASC;IACf,OAAO;QACNC,MAAM;QACN,MAAMC,aAAYC,IAAI,EAAEC,KAAK;YAC5B,iCAAiC;YACjC,IAAI,CAACA,MAAMC,QAAQ,CAACC,QAAQ,CAAC,WAAW,CAACF,MAAMC,QAAQ,CAACC,QAAQ,CAAC,QAAQ;gBACxE,OAAO;YACR;YAEA,yCAAyC;YACzC,MAAMC,SAAS,MAAMR,OAAOI,MAAM;gBACjCK,UAAU;oBACTC,UAAU;oBACVC,QAAQ;oBACRC,aAAa;oBACbC,QAAQ;oBACRC,WAAW;gBACZ;gBACAC,MAAM;gBACNJ,QAAQ;gBACRK,QAAQ;oBACPC,UAAU;oBACVF,MAAM;gBACP;YACD;YAEA,OAAOP,OAAOJ,IAAI,IAAI;QACvB;IACD;AACD"}
|
|
@@ -0,0 +1,30 @@
|
|
|
1
|
+
import fs from "node:fs/promises";
|
|
2
|
+
export function wasm(options = {}) {
|
|
3
|
+
return {
|
|
4
|
+
name: 'wasm',
|
|
5
|
+
async load (id) {
|
|
6
|
+
if (!/\.wasm$/.test(id)) return null;
|
|
7
|
+
const name = id.split('/').pop();
|
|
8
|
+
if (options.emitAsset) {
|
|
9
|
+
this.emitFile({
|
|
10
|
+
type: 'asset',
|
|
11
|
+
source: await (this.fs ?? fs).readFile(id),
|
|
12
|
+
name: options.assetName?.replace('{name}', name) ?? 'WASM Asset',
|
|
13
|
+
fileName: name
|
|
14
|
+
});
|
|
15
|
+
}
|
|
16
|
+
return {
|
|
17
|
+
map: {
|
|
18
|
+
mappings: ''
|
|
19
|
+
},
|
|
20
|
+
code: [
|
|
21
|
+
`const url = new URL('./${name}?no-inline', import.meta.url);`,
|
|
22
|
+
`const ab = await fetch(url).then(x => x.arrayBuffer())`,
|
|
23
|
+
`export default new WebAssembly.Module(ab);`
|
|
24
|
+
].join('\n')
|
|
25
|
+
};
|
|
26
|
+
}
|
|
27
|
+
};
|
|
28
|
+
}
|
|
29
|
+
|
|
30
|
+
//# sourceMappingURL=wasm.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"sources":["/mnt/dev/cmmn/tools/dev-server/plugins/wasm.ts"],"names":["fs","wasm","options","name","load","id","test","split","pop","emitAsset","emitFile","type","source","readFile","assetName","replace","fileName","map","mappings","code","join"],"mappings":"AAAA,OAAOA,QAAQ,mBAAmB;AAGlC,OAAO,SAASC,KAAKC,UAGjB,CAAC,CAAC;IACL,OAAO;QACNC,MAAM;QACN,MAAMC,MAAKC,EAAE;YACZ,IAAI,CAAC,UAAUC,IAAI,CAACD,KAAK,OAAO;YAChC,MAAMF,OAAOE,GAAGE,KAAK,CAAC,KAAKC,GAAG;YAC9B,IAAIN,QAAQO,SAAS,EAAE;gBACtB,IAAI,CAACC,QAAQ,CAAC;oBACbC,MAAM;oBACNC,QAAQ,MAAM,AAAC,CAAA,IAAI,CAACZ,EAAE,IAAIA,EAAC,EAAGa,QAAQ,CAACR;oBACvCF,MAAMD,QAAQY,SAAS,EAAEC,QAAQ,UAAUZ,SAAS;oBACpDa,UAAUb;gBACX;YACD;YACA,OAAO;gBACNc,KAAK;oBACJC,UAAU;gBACX;gBACAC,MAAM;oBACL,CAAC,uBAAuB,EAAEhB,KAAK,8BAA8B,CAAC;oBAC9D,CAAC,sDAAsD,CAAC;oBACxD,CAAC,0CAA0C,CAAC;iBAC5C,CAACiB,IAAI,CAAC;YACR;QACD;IACD;AACD"}
|
|
@@ -0,0 +1,55 @@
|
|
|
1
|
+
export class Resolver {
|
|
2
|
+
constructor(targets){
|
|
3
|
+
this.targets = targets;
|
|
4
|
+
this.prefix = '/_';
|
|
5
|
+
this.resolveId = (id)=>{
|
|
6
|
+
const targetPath = this.getTarget(id);
|
|
7
|
+
if (targetPath) {
|
|
8
|
+
return this.resolveTarget(targetPath.target, targetPath.path);
|
|
9
|
+
}
|
|
10
|
+
return this.resolveDependency(id);
|
|
11
|
+
};
|
|
12
|
+
this.optimizeDeps = [
|
|
13
|
+
...new Set([
|
|
14
|
+
...targets.flatMap((t)=>t.externalDependencies)
|
|
15
|
+
])
|
|
16
|
+
].filter((x)=>targets.every((y)=>y.packageJson.name !== x));
|
|
17
|
+
}
|
|
18
|
+
resolveTarget(target, path) {
|
|
19
|
+
const entry = target.getEntry("." + path);
|
|
20
|
+
if (!entry) {
|
|
21
|
+
target.error(`Entry not found for path: ${path}`);
|
|
22
|
+
return;
|
|
23
|
+
}
|
|
24
|
+
const relative = target.flags.production ? entry.output : entry.relative.substring(2);
|
|
25
|
+
const resolvedId = `${this.url}${this.prefix}/${target.packageJson.name}/${relative}`;
|
|
26
|
+
return {
|
|
27
|
+
id: resolvedId,
|
|
28
|
+
external: true
|
|
29
|
+
};
|
|
30
|
+
}
|
|
31
|
+
resolveDependency(id) {
|
|
32
|
+
if (id.startsWith(`${this.prefix}/@id`)) return {
|
|
33
|
+
id: `${this.url}${id}`,
|
|
34
|
+
external: true
|
|
35
|
+
};
|
|
36
|
+
if (this.optimizeDeps.some((x)=>id.startsWith(x))) {
|
|
37
|
+
return {
|
|
38
|
+
id: `${this.url}${this.prefix}/@id/${id}/`,
|
|
39
|
+
external: true
|
|
40
|
+
};
|
|
41
|
+
}
|
|
42
|
+
}
|
|
43
|
+
getTarget(id) {
|
|
44
|
+
for (const target of this.targets){
|
|
45
|
+
const path = id.match(new RegExp(`^\/?${target.packageJson.name}(?<path>.*)$`))?.groups.path;
|
|
46
|
+
if (path === undefined) continue;
|
|
47
|
+
if (path === '' || path.startsWith('/')) return {
|
|
48
|
+
target,
|
|
49
|
+
path
|
|
50
|
+
};
|
|
51
|
+
}
|
|
52
|
+
}
|
|
53
|
+
}
|
|
54
|
+
|
|
55
|
+
//# sourceMappingURL=resolver.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"sources":["/mnt/dev/cmmn/tools/dev-server/resolver.ts"],"names":["Resolver","targets","prefix","resolveId","id","targetPath","getTarget","resolveTarget","target","path","resolveDependency","optimizeDeps","Set","flatMap","t","externalDependencies","filter","x","every","y","packageJson","name","entry","getEntry","error","relative","flags","production","output","substring","resolvedId","url","external","startsWith","some","match","RegExp","groups","undefined"],"mappings":"AAEA,OAAO,MAAMA;IAKT,YAAY,AAAQC,OAAiB,CAAE;aAAnBA,UAAAA;aAJZC,SAAiB;aAYzBC,YAAY,CAACC;YACT,MAAMC,aAAa,IAAI,CAACC,SAAS,CAACF;YAClC,IAAIC,YAAY;gBACZ,OAAO,IAAI,CAACE,aAAa,CAACF,WAAWG,MAAM,EAAEH,WAAWI,IAAI;YAChE;YACA,OAAO,IAAI,CAACC,iBAAiB,CAACN;QAClC;QAbI,IAAI,CAACO,YAAY,GAAG;eAAI,IAAIC,IAAI;mBACzBX,QAAQY,OAAO,CAACC,CAAAA,IAAKA,EAAEC,oBAAoB;aAGjD;SAAE,CAACC,MAAM,CAACC,CAAAA,IAAKhB,QAAQiB,KAAK,CAACC,CAAAA,IAAKA,EAAEC,WAAW,CAACC,IAAI,KAAKJ;IAC9D;IAWAV,cAAcC,MAAc,EAAEC,IAAY,EAAC;QACvC,MAAMa,QAAQd,OAAOe,QAAQ,CAAC,MAAMd;QACpC,IAAI,CAACa,OAAO;YACRd,OAAOgB,KAAK,CAAC,CAAC,0BAA0B,EAAEf,MAAM;YAChD;QACJ;QACA,MAAMgB,WAAWjB,OAAOkB,KAAK,CAACC,UAAU,GAAGL,MAAMM,MAAM,GAAGN,MAAMG,QAAQ,CAACI,SAAS,CAAC;QACnF,MAAMC,aAAa,GAAG,IAAI,CAACC,GAAG,GAAG,IAAI,CAAC7B,MAAM,CAAC,CAAC,EAAEM,OAAOY,WAAW,CAACC,IAAI,CAAC,CAAC,EAAEI,UAAU;QACrF,OAAO;YACHrB,IAAI0B;YACJE,UAAU;QACd;IACJ;IAEAtB,kBAAkBN,EAAU,EAAC;QACzB,IAAIA,GAAG6B,UAAU,CAAC,GAAG,IAAI,CAAC/B,MAAM,CAAC,IAAI,CAAC,GAClC,OAAO;YACHE,IAAI,GAAG,IAAI,CAAC2B,GAAG,GAAG3B,IAAI;YACtB4B,UAAU;QACd;QACJ,IAAI,IAAI,CAACrB,YAAY,CAACuB,IAAI,CAACjB,CAAAA,IAAKb,GAAG6B,UAAU,CAAChB,KAAK;YAC/C,OAAO;gBACHb,IAAI,GAAG,IAAI,CAAC2B,GAAG,GAAG,IAAI,CAAC7B,MAAM,CAAC,KAAK,EAAEE,GAAG,CAAC,CAAC;gBAC1C4B,UAAU;YACd;QACJ;IACJ;IAEA1B,UAAUF,EAAU,EAAE;QAClB,KAAK,MAAMI,UAAU,IAAI,CAACP,OAAO,CAAE;YAC/B,MAAMQ,OAAOL,GAAG+B,KAAK,CAAC,IAAIC,OAAO,CAAC,IAAI,EAAE5B,OAAOY,WAAW,CAACC,IAAI,CAAC,YAAY,CAAC,IAAIgB,OAAO5B;YACxF,IAAGA,SAAS6B,WAAW;YACvB,IAAG7B,SAAS,MAAMA,KAAKwB,UAAU,CAAC,MAC9B,OAAO;gBAAEzB;gBAAQC;YAAI;QAC7B;IACJ;AACJ"}
|
|
@@ -0,0 +1,150 @@
|
|
|
1
|
+
import { _ as _ts_add_disposable_resource } from "@swc/helpers/_/_ts_add_disposable_resource";
|
|
2
|
+
import { _ as _ts_dispose_resources } from "@swc/helpers/_/_ts_dispose_resources";
|
|
3
|
+
import { fileURLToPath } from "node:url";
|
|
4
|
+
import { crc32 } from "node:zlib";
|
|
5
|
+
import fs from "node:fs/promises";
|
|
6
|
+
import { wasm } from "./plugins/wasm.js";
|
|
7
|
+
import { swcMinifyPlugin } from "./plugins/minify.js";
|
|
8
|
+
import path from "node:path";
|
|
9
|
+
export class RolldownDependencyBuilder {
|
|
10
|
+
constructor(externals, basePath, minify = false){
|
|
11
|
+
this.externals = externals;
|
|
12
|
+
this.basePath = basePath;
|
|
13
|
+
this.minify = minify;
|
|
14
|
+
this.dir = path.join(process.cwd(), './node_modules/.cmmn');
|
|
15
|
+
}
|
|
16
|
+
async getFileContent(target, isModule) {
|
|
17
|
+
if (isModule) return `export * from '${target}';`;
|
|
18
|
+
const pkg = await import(target);
|
|
19
|
+
const keys = Object.keys(pkg).filter((x)=>x !== 'default');
|
|
20
|
+
return [
|
|
21
|
+
`import * as result from '${target}';`,
|
|
22
|
+
`export const { ${keys.join(',')} } = result;`,
|
|
23
|
+
'default' in pkg ? 'export default result.default;' : ''
|
|
24
|
+
].join('\n');
|
|
25
|
+
}
|
|
26
|
+
async getEntry(target, isModule) {
|
|
27
|
+
const id = crc32(target + new Date() + Math.random());
|
|
28
|
+
const file = `${this.dir}/.${id}.js`;
|
|
29
|
+
const content = await this.getFileContent(target, isModule);
|
|
30
|
+
await fs.mkdir(this.dir, {
|
|
31
|
+
recursive: true
|
|
32
|
+
});
|
|
33
|
+
await fs.writeFile(file, content, 'utf-8');
|
|
34
|
+
return {
|
|
35
|
+
index: file,
|
|
36
|
+
[Symbol.asyncDispose] () {
|
|
37
|
+
return fs.rm(file);
|
|
38
|
+
}
|
|
39
|
+
};
|
|
40
|
+
}
|
|
41
|
+
getModuleEntry(target) {
|
|
42
|
+
const targetUrl = import.meta.resolve(target);
|
|
43
|
+
const targetFile = fileURLToPath(targetUrl);
|
|
44
|
+
return {
|
|
45
|
+
index: targetFile,
|
|
46
|
+
[Symbol.asyncDispose]: ()=>Promise.resolve()
|
|
47
|
+
};
|
|
48
|
+
}
|
|
49
|
+
async build(target, isModule) {
|
|
50
|
+
const env = {
|
|
51
|
+
stack: [],
|
|
52
|
+
error: void 0,
|
|
53
|
+
hasError: false
|
|
54
|
+
};
|
|
55
|
+
try {
|
|
56
|
+
const { build } = await import("rolldown");
|
|
57
|
+
const { esmExternalRequirePlugin } = await import("rolldown/experimental");
|
|
58
|
+
const input = _ts_add_disposable_resource(env, await this.getEntry(target, isModule), true);
|
|
59
|
+
// const chunkBase = target.split('/').pop() + '/@_'
|
|
60
|
+
try {
|
|
61
|
+
const result = await build({
|
|
62
|
+
input,
|
|
63
|
+
write: false,
|
|
64
|
+
output: {
|
|
65
|
+
format: 'esm',
|
|
66
|
+
chunkFileNames: (chunk)=>'@_/' + chunk.name + '.js',
|
|
67
|
+
assetFileNames: (asset)=>'@_/' + asset.name + '.js'
|
|
68
|
+
},
|
|
69
|
+
experimental: {},
|
|
70
|
+
platform: 'browser',
|
|
71
|
+
resolve: {
|
|
72
|
+
mainFields: [
|
|
73
|
+
'browser',
|
|
74
|
+
'module',
|
|
75
|
+
'main'
|
|
76
|
+
]
|
|
77
|
+
},
|
|
78
|
+
external: [
|
|
79
|
+
`${this.basePath}/*`
|
|
80
|
+
],
|
|
81
|
+
optimization: {
|
|
82
|
+
inlineConst: this.minify
|
|
83
|
+
},
|
|
84
|
+
treeshake: true,
|
|
85
|
+
plugins: [
|
|
86
|
+
wasm({
|
|
87
|
+
emitAsset: true,
|
|
88
|
+
assetName: `${target}/{name}`
|
|
89
|
+
}),
|
|
90
|
+
{
|
|
91
|
+
name: 'require',
|
|
92
|
+
load: (id)=>{
|
|
93
|
+
const prefix = 'builtin:esm-external-require-';
|
|
94
|
+
if (id.startsWith(prefix)) {
|
|
95
|
+
return `export * from "${this.basePath}/${id.substring(prefix.length)}"`;
|
|
96
|
+
}
|
|
97
|
+
}
|
|
98
|
+
},
|
|
99
|
+
{
|
|
100
|
+
name: 'externals',
|
|
101
|
+
resolveId: (id, importer, options)=>{
|
|
102
|
+
if (options.kind !== 'require-call' && id !== target && this.externals.some((x)=>x == id || id.startsWith(x + '/'))) return {
|
|
103
|
+
external: "absolute",
|
|
104
|
+
id: this.basePath + '/' + id
|
|
105
|
+
};
|
|
106
|
+
}
|
|
107
|
+
},
|
|
108
|
+
esmExternalRequirePlugin({
|
|
109
|
+
external: this.externals.filter((x)=>x !== target)
|
|
110
|
+
}),
|
|
111
|
+
...this.minify ? [
|
|
112
|
+
swcMinifyPlugin()
|
|
113
|
+
] : []
|
|
114
|
+
]
|
|
115
|
+
});
|
|
116
|
+
return result.output.map((x)=>{
|
|
117
|
+
return {
|
|
118
|
+
fileName: x.name == 'index' ? '' : x.type == 'asset' ? '@_/' + x.fileName : x.fileName,
|
|
119
|
+
data: x.type == "asset" ? x.source : x.code,
|
|
120
|
+
deps: x.type == "asset" ? [] : [
|
|
121
|
+
...x.imports,
|
|
122
|
+
...x.dynamicImports
|
|
123
|
+
].map((path)=>({
|
|
124
|
+
package: path,
|
|
125
|
+
path: ''
|
|
126
|
+
}))
|
|
127
|
+
};
|
|
128
|
+
});
|
|
129
|
+
// return Object.fromEntries([
|
|
130
|
+
// ...result.output
|
|
131
|
+
// .filter(x => x.type == "chunk")
|
|
132
|
+
// .map(x => [(x.name === 'index' ? '' : x.fileName.replace(chunkBase, '@_')), x.code]),
|
|
133
|
+
// ...result.output
|
|
134
|
+
// .filter(x => x.type !== "chunk")
|
|
135
|
+
// .map(x => ['@_/'+x.fileName, x.source])
|
|
136
|
+
// ]);
|
|
137
|
+
} finally{
|
|
138
|
+
// await entryPoints[Symbol.asyncDispose]();
|
|
139
|
+
}
|
|
140
|
+
} catch (e) {
|
|
141
|
+
env.error = e;
|
|
142
|
+
env.hasError = true;
|
|
143
|
+
} finally{
|
|
144
|
+
const result = _ts_dispose_resources(env);
|
|
145
|
+
if (result) await result;
|
|
146
|
+
}
|
|
147
|
+
}
|
|
148
|
+
}
|
|
149
|
+
|
|
150
|
+
//# sourceMappingURL=rolldown-dependency-builder.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"sources":["/mnt/dev/cmmn/tools/dev-server/rolldown-dependency-builder.ts"],"names":["fileURLToPath","crc32","fs","wasm","swcMinifyPlugin","path","RolldownDependencyBuilder","externals","basePath","minify","dir","join","process","cwd","getFileContent","target","isModule","pkg","keys","Object","filter","x","getEntry","id","Date","Math","random","file","content","mkdir","recursive","writeFile","index","Symbol","asyncDispose","rm","getModuleEntry","targetUrl","resolve","targetFile","Promise","build","esmExternalRequirePlugin","input","result","write","output","format","chunkFileNames","chunk","name","assetFileNames","asset","experimental","platform","mainFields","external","optimization","inlineConst","treeshake","plugins","emitAsset","assetName","load","prefix","startsWith","substring","length","resolveId","importer","options","kind","some","map","fileName","type","data","source","code","deps","imports","dynamicImports","package"],"mappings":"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"}
|