@cmmn/tools 2.2.3 → 3.0.0-alpha-1
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/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 +100 -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 +36 -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 +131 -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 +75 -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 +50 -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
package/.swcrc
ADDED
|
@@ -0,0 +1,20 @@
|
|
|
1
|
+
{
|
|
2
|
+
"jsc": {
|
|
3
|
+
"parser": {
|
|
4
|
+
"syntax": "typescript",
|
|
5
|
+
"decoratorsBeforeExport": true,
|
|
6
|
+
"decorators": true
|
|
7
|
+
},
|
|
8
|
+
"transform": {
|
|
9
|
+
"legacyDecorator": false,
|
|
10
|
+
"decoratorVersion": "2022-03",
|
|
11
|
+
"react": {
|
|
12
|
+
"runtime": "automatic"
|
|
13
|
+
},
|
|
14
|
+
"useDefineForClassFields": false
|
|
15
|
+
},
|
|
16
|
+
"target": "esnext",
|
|
17
|
+
"externalHelpers": true
|
|
18
|
+
},
|
|
19
|
+
"sourceMaps": "inline"
|
|
20
|
+
}
|
package/dist/esm/bin.js
ADDED
|
@@ -0,0 +1,9 @@
|
|
|
1
|
+
#!/usr/bin/env node
|
|
2
|
+
import { Flags } from "./model/flags.js";
|
|
3
|
+
const flags = new Flags(process.argv.slice(2));
|
|
4
|
+
import(`./commands/${flags.command}.js`).then((x)=>x[flags.command](flags)).catch((err)=>{
|
|
5
|
+
console.error(err);
|
|
6
|
+
console.log('cmmn [command] [args]');
|
|
7
|
+
});
|
|
8
|
+
|
|
9
|
+
//# sourceMappingURL=bin.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"sources":["/mnt/dev/cmmn/tools/bin.ts"],"names":["Flags","flags","process","argv","slice","command","then","x","catch","err","console","error","log"],"mappings":";AACA,SAAQA,KAAK,QAAO,mBAAmB;AAEvC,MAAMC,QAAQ,IAAID,MAAME,QAAQC,IAAI,CAACC,KAAK,CAAC;AAE3C,MAAM,CAAE,CAAC,WAAW,EAAEH,MAAMI,OAAO,CAAC,GAAG,CAAC,EACnCC,IAAI,CAACC,CAAAA,IAAKA,CAAC,CAACN,MAAMI,OAAO,CAAC,CAACJ,QAC3BO,KAAK,CAAC,CAACC;IACJC,QAAQC,KAAK,CAACF;IACdC,QAAQE,GAAG,CAAC;AAChB"}
|
|
@@ -0,0 +1,9 @@
|
|
|
1
|
+
import { Target } from "../model/target.js";
|
|
2
|
+
import { ViteBundler } from "./vite.bundler.js";
|
|
3
|
+
import { RolldownBundler } from "./rolldown-bundler.js";
|
|
4
|
+
export function createBundler(pack, resolver) {
|
|
5
|
+
if (pack instanceof Target) return new ViteBundler(pack, resolver);
|
|
6
|
+
return new RolldownBundler(pack, resolver);
|
|
7
|
+
}
|
|
8
|
+
|
|
9
|
+
//# sourceMappingURL=createBundler.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"sources":["/mnt/dev/cmmn/tools/bundlers/createBundler.ts"],"names":["Target","ViteBundler","RolldownBundler","createBundler","pack","resolver"],"mappings":"AAEA,SAAQA,MAAM,QAAO,qBAAkB;AACvC,SAAQC,WAAW,QAAO,oBAAiB;AAC3C,SAAQC,eAAe,QAAO,wBAAqB;AAGnD,OAAO,SAASC,cAAcC,IAAU,EAAEC,QAAkB;IACxD,IAAID,gBAAgBJ,QAChB,OAAO,IAAIC,YAAYG,MAAMC;IACjC,OAAO,IAAIH,gBAAgBE,MAAMC;AACrC"}
|
|
@@ -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/bundlers/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,43 @@
|
|
|
1
|
+
import fs from "node:fs/promises";
|
|
2
|
+
import { dirname, resolve } from "node:path";
|
|
3
|
+
export function wasm(options = {}) {
|
|
4
|
+
return {
|
|
5
|
+
name: 'wasm',
|
|
6
|
+
resolveId (id, importer) {
|
|
7
|
+
if (!/\.wasm$/.test(id)) return null;
|
|
8
|
+
const name = id.split('/').pop();
|
|
9
|
+
const moduleInfo = this.getModuleInfo(importer);
|
|
10
|
+
// @ts-ignore
|
|
11
|
+
moduleInfo.dynamicallyImportedIds.push(name);
|
|
12
|
+
// @ts-ignore
|
|
13
|
+
moduleInfo.importedIds.push(name);
|
|
14
|
+
return resolve(dirname(importer), id);
|
|
15
|
+
},
|
|
16
|
+
async load (id) {
|
|
17
|
+
if (!/\.wasm$/.test(id)) return null;
|
|
18
|
+
const name = id.split('/').pop();
|
|
19
|
+
let url = `new URL("./${name}?no-inline", import.meta.url)`;
|
|
20
|
+
if (options.emitAsset) {
|
|
21
|
+
const referenceId = this.emitFile({
|
|
22
|
+
type: 'asset',
|
|
23
|
+
source: await (this.fs ?? fs).readFile(id),
|
|
24
|
+
name: options.assetName?.replace('{name}', name) ?? 'WASM Asset',
|
|
25
|
+
fileName: name
|
|
26
|
+
});
|
|
27
|
+
url = `import.meta.ROLLUP_FILE_URL_${referenceId}`;
|
|
28
|
+
}
|
|
29
|
+
return {
|
|
30
|
+
map: {
|
|
31
|
+
mappings: ''
|
|
32
|
+
},
|
|
33
|
+
code: [
|
|
34
|
+
`const url = ${url};`,
|
|
35
|
+
`const ab = await fetch(url).then(x => x.arrayBuffer())`,
|
|
36
|
+
`export default new WebAssembly.Module(ab);`
|
|
37
|
+
].join('\n')
|
|
38
|
+
};
|
|
39
|
+
}
|
|
40
|
+
};
|
|
41
|
+
}
|
|
42
|
+
|
|
43
|
+
//# sourceMappingURL=wasm.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"sources":["/mnt/dev/cmmn/tools/bundlers/plugins/wasm.ts"],"names":["fs","dirname","resolve","wasm","options","name","resolveId","id","importer","test","split","pop","moduleInfo","getModuleInfo","dynamicallyImportedIds","push","importedIds","load","url","emitAsset","referenceId","emitFile","type","source","readFile","assetName","replace","fileName","map","mappings","code","join"],"mappings":"AAAA,OAAOA,QAAQ,mBAAmB;AAElC,SAAQC,OAAO,EAAEC,OAAO,QAAO,YAAY;AAE3C,OAAO,SAASC,KAAKC,UAGjB,CAAC,CAAC;IACL,OAAO;QACNC,MAAM;QACAC,WAAUC,EAAE,EAAEC,QAAQ;YAClB,IAAI,CAAC,UAAUC,IAAI,CAACF,KAAK,OAAO;YAChC,MAAMF,OAAOE,GAAGG,KAAK,CAAC,KAAKC,GAAG;YAC9B,MAAMC,aAAa,IAAI,CAACC,aAAa,CAACL;YACtC,aAAa;YACbI,WAAWE,sBAAsB,CAACC,IAAI,CAACV;YACvC,aAAa;YACbO,WAAWI,WAAW,CAACD,IAAI,CAACV;YAC5B,OAAOH,QAAQD,QAAQO,WAAWD;QACtC;QACN,MAAMU,MAAKV,EAAE;YACZ,IAAI,CAAC,UAAUE,IAAI,CAACF,KAAK,OAAO;YAChC,MAAMF,OAAOE,GAAGG,KAAK,CAAC,KAAKC,GAAG;YACrB,IAAIO,MAAK,CAAC,WAAW,EAAEb,KAAK,6BAA6B,CAAC;YACnE,IAAID,QAAQe,SAAS,EAAE;gBACV,MAAMC,cAAc,IAAI,CAACC,QAAQ,CAAC;oBAC7CC,MAAM;oBACNC,QAAQ,MAAM,AAAC,CAAA,IAAI,CAACvB,EAAE,IAAIA,EAAC,EAAGwB,QAAQ,CAACjB;oBACvCF,MAAMD,QAAQqB,SAAS,EAAEC,QAAQ,UAAUrB,SAAS;oBACpDsB,UAAUtB;gBACX;gBACYa,MAAM,CAAC,4BAA4B,EAAEE,aAAa;YAC/D;YACA,OAAO;gBACNQ,KAAK;oBACJC,UAAU;gBACX;gBAEAC,MAAM;oBACL,CAAC,YAAY,EAAEZ,IAAI,CAAC,CAAC;oBACrB,CAAC,sDAAsD,CAAC;oBACxD,CAAC,0CAA0C,CAAC;iBAC5C,CAACa,IAAI,CAAC;YACR;QACD;IACD;AACD"}
|
|
@@ -0,0 +1,153 @@
|
|
|
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 { crc32 } from "node:zlib";
|
|
4
|
+
import fs from "node:fs/promises";
|
|
5
|
+
import { wasm } from "./plugins/wasm.js";
|
|
6
|
+
import { swcMinifyPlugin } from "./plugins/minify.js";
|
|
7
|
+
import path from "node:path";
|
|
8
|
+
import { Bundle } from "../model/bundle.js";
|
|
9
|
+
import { esmExternalRequirePlugin } from "rolldown/experimental";
|
|
10
|
+
export class RolldownBundler {
|
|
11
|
+
constructor(pack, resolver, flags){
|
|
12
|
+
this.pack = pack;
|
|
13
|
+
this.resolver = resolver;
|
|
14
|
+
this.flags = flags;
|
|
15
|
+
this.dir = path.join(process.cwd(), './node_modules/.cmmn');
|
|
16
|
+
}
|
|
17
|
+
async getFileContent(entry) {
|
|
18
|
+
const target = entry.name ? `${this.pack.name}/${entry.name}` : `${this.pack.name}`;
|
|
19
|
+
if (this.pack.packageJson.type === "module") return `export * from '${target}';`;
|
|
20
|
+
const pkg = await import(target, entry.source.endsWith('.json') ? {
|
|
21
|
+
with: {
|
|
22
|
+
type: 'json'
|
|
23
|
+
}
|
|
24
|
+
} : {});
|
|
25
|
+
const keys = Object.keys(pkg).filter((x)=>x !== 'default');
|
|
26
|
+
return [
|
|
27
|
+
`import * as result from '${target}';`,
|
|
28
|
+
`export const { ${keys.join(',')} } = result;`,
|
|
29
|
+
'default' in pkg ? 'export default result.default;' : ''
|
|
30
|
+
].join('\n');
|
|
31
|
+
}
|
|
32
|
+
async getInputs() {
|
|
33
|
+
const result = {
|
|
34
|
+
async [Symbol.asyncDispose] () {
|
|
35
|
+
for (let file of Object.values(this)){
|
|
36
|
+
if (typeof file === 'string') await fs.rm(file);
|
|
37
|
+
}
|
|
38
|
+
}
|
|
39
|
+
};
|
|
40
|
+
for (let entry of this.pack.entries){
|
|
41
|
+
if (entry.source.match(/\.(d\.ts|css|scss|sass|less|styl|pcss|postcss|html)$/)) continue;
|
|
42
|
+
if (entry.source.includes('*')) continue;
|
|
43
|
+
const id = crc32(entry.name + new Date() + Math.random());
|
|
44
|
+
const file = `${this.dir}/.${id}.js`;
|
|
45
|
+
const content = await this.getFileContent(entry);
|
|
46
|
+
await fs.mkdir(this.dir, {
|
|
47
|
+
recursive: true
|
|
48
|
+
});
|
|
49
|
+
await fs.writeFile(file, content, 'utf-8');
|
|
50
|
+
result[entry.name] = file;
|
|
51
|
+
}
|
|
52
|
+
return result;
|
|
53
|
+
}
|
|
54
|
+
getConfig() {
|
|
55
|
+
return {
|
|
56
|
+
write: false,
|
|
57
|
+
output: {
|
|
58
|
+
format: 'esm'
|
|
59
|
+
},
|
|
60
|
+
define: {
|
|
61
|
+
'process.env.NODE_ENV': this.flags.production ? '"production"' : '"development"'
|
|
62
|
+
},
|
|
63
|
+
experimental: {},
|
|
64
|
+
platform: 'browser',
|
|
65
|
+
resolve: {
|
|
66
|
+
mainFields: [
|
|
67
|
+
'browser',
|
|
68
|
+
'module',
|
|
69
|
+
'main'
|
|
70
|
+
]
|
|
71
|
+
},
|
|
72
|
+
optimization: {
|
|
73
|
+
inlineConst: this.flags.minify
|
|
74
|
+
},
|
|
75
|
+
treeshake: true,
|
|
76
|
+
plugins: [
|
|
77
|
+
...this.getPlugins()
|
|
78
|
+
]
|
|
79
|
+
};
|
|
80
|
+
}
|
|
81
|
+
// TODO: Filter hook https://rolldown.rs/in-depth/why-plugin-hook-filter#when-to-use-filters
|
|
82
|
+
*getPlugins() {
|
|
83
|
+
yield wasm({
|
|
84
|
+
emitAsset: true,
|
|
85
|
+
assetName: `{name}`
|
|
86
|
+
});
|
|
87
|
+
yield {
|
|
88
|
+
name: 'require',
|
|
89
|
+
load: (id)=>{
|
|
90
|
+
const prefix = 'builtin:esm-external-require-';
|
|
91
|
+
if (id.startsWith(prefix)) {
|
|
92
|
+
const resolved = this.resolver.resolveId(id.substring(prefix.length), null, null);
|
|
93
|
+
if (resolved) return `export * from "${resolved.id}"`;
|
|
94
|
+
}
|
|
95
|
+
}
|
|
96
|
+
};
|
|
97
|
+
yield {
|
|
98
|
+
name: 'externals',
|
|
99
|
+
resolveId: (id, importer, options)=>{
|
|
100
|
+
if (options.kind === 'require-call') return;
|
|
101
|
+
const resolved = this.resolver.resolveId(id, importer, options);
|
|
102
|
+
if (resolved && resolved.pack !== this.pack) return resolved;
|
|
103
|
+
}
|
|
104
|
+
};
|
|
105
|
+
yield esmExternalRequirePlugin({
|
|
106
|
+
external: this.resolver.getPackNames().filter((x)=>x !== this.pack.name)
|
|
107
|
+
});
|
|
108
|
+
if (this.flags.minify) yield swcMinifyPlugin();
|
|
109
|
+
}
|
|
110
|
+
async bundle() {
|
|
111
|
+
const env = {
|
|
112
|
+
stack: [],
|
|
113
|
+
error: void 0,
|
|
114
|
+
hasError: false
|
|
115
|
+
};
|
|
116
|
+
try {
|
|
117
|
+
const input = _ts_add_disposable_resource(env, await this.getInputs(), true);
|
|
118
|
+
if (Object.keys(input).length == 0) return new Bundle(this.pack, []);
|
|
119
|
+
const { build } = await import("rolldown");
|
|
120
|
+
const config = this.getConfig();
|
|
121
|
+
const result = await build({
|
|
122
|
+
...config,
|
|
123
|
+
input
|
|
124
|
+
}).catch((err)=>{
|
|
125
|
+
this.pack.error(err.message);
|
|
126
|
+
return {
|
|
127
|
+
output: []
|
|
128
|
+
};
|
|
129
|
+
});
|
|
130
|
+
const outputs = result.output.map((x)=>({
|
|
131
|
+
fileName: x.fileName,
|
|
132
|
+
entry: this.pack.getEntry(x.name),
|
|
133
|
+
data: x.type == "asset" ? x.source : x.code,
|
|
134
|
+
deps: x.type == "asset" ? [] : [
|
|
135
|
+
...x.imports,
|
|
136
|
+
...x.dynamicImports
|
|
137
|
+
].map((path)=>this.resolver.getPack(path) ?? {
|
|
138
|
+
pack: this.pack,
|
|
139
|
+
path: path
|
|
140
|
+
})
|
|
141
|
+
}));
|
|
142
|
+
return new Bundle(this.pack, outputs);
|
|
143
|
+
} catch (e) {
|
|
144
|
+
env.error = e;
|
|
145
|
+
env.hasError = true;
|
|
146
|
+
} finally{
|
|
147
|
+
const result = _ts_dispose_resources(env);
|
|
148
|
+
if (result) await result;
|
|
149
|
+
}
|
|
150
|
+
}
|
|
151
|
+
}
|
|
152
|
+
|
|
153
|
+
//# sourceMappingURL=rolldown-bundler.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"sources":["/mnt/dev/cmmn/tools/bundlers/rolldown-bundler.ts"],"names":["crc32","fs","wasm","swcMinifyPlugin","path","Bundle","esmExternalRequirePlugin","RolldownBundler","pack","resolver","flags","dir","join","process","cwd","getFileContent","entry","target","name","packageJson","type","pkg","source","endsWith","with","keys","Object","filter","x","getInputs","result","Symbol","asyncDispose","file","values","rm","entries","match","includes","id","Date","Math","random","content","mkdir","recursive","writeFile","getConfig","write","output","format","define","production","experimental","platform","resolve","mainFields","optimization","inlineConst","minify","treeshake","plugins","getPlugins","emitAsset","assetName","load","prefix","startsWith","resolved","resolveId","substring","length","importer","options","kind","external","getPackNames","bundle","input","build","config","catch","err","error","message","outputs","map","fileName","getEntry","data","code","deps","imports","dynamicImports","getPack"],"mappings":"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"}
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"sources":["/mnt/dev/cmmn/tools/bundlers/types.ts"],"names":[],"mappings":"AAEA,WAEC"}
|
|
@@ -0,0 +1,117 @@
|
|
|
1
|
+
import builtinModules from "builtin-modules";
|
|
2
|
+
import { wasm } from "./plugins/wasm.js";
|
|
3
|
+
import swc from "unplugin-swc";
|
|
4
|
+
import tsconfigPaths from "vite-tsconfig-paths";
|
|
5
|
+
import { dirname } from "node:path";
|
|
6
|
+
import { swcMinifyPlugin } from "./plugins/minify.js";
|
|
7
|
+
export class ViteBuilder {
|
|
8
|
+
constructor(target, resolver, flags){
|
|
9
|
+
this.target = target;
|
|
10
|
+
this.resolver = resolver;
|
|
11
|
+
this.flags = flags;
|
|
12
|
+
}
|
|
13
|
+
async getConfig() {
|
|
14
|
+
return {
|
|
15
|
+
root: this.target.rootDir,
|
|
16
|
+
logLevel: 'silent',
|
|
17
|
+
mode: this.flags.production ? "production" : 'debug',
|
|
18
|
+
optimizeDeps: {
|
|
19
|
+
noDiscovery: true,
|
|
20
|
+
include: []
|
|
21
|
+
},
|
|
22
|
+
define: {
|
|
23
|
+
process: {
|
|
24
|
+
env: {
|
|
25
|
+
NODE_ENV: this.flags.production ? 'production' : 'development'
|
|
26
|
+
}
|
|
27
|
+
}
|
|
28
|
+
},
|
|
29
|
+
html: {},
|
|
30
|
+
base: this.target.publicPath + '/',
|
|
31
|
+
build: {
|
|
32
|
+
target: 'baseline-widely-available',
|
|
33
|
+
emptyOutDir: false,
|
|
34
|
+
rollupOptions: {
|
|
35
|
+
external: [
|
|
36
|
+
...this.resolver ? [] : Array.from(this.target.deps.keys()).map((x)=>new RegExp(`^${x}`.replace('/', '\\/'))),
|
|
37
|
+
...builtinModules,
|
|
38
|
+
'fsevents',
|
|
39
|
+
/@id/g
|
|
40
|
+
]
|
|
41
|
+
},
|
|
42
|
+
write: false,
|
|
43
|
+
minify: false,
|
|
44
|
+
sourcemap: this.flags.minify ? false : 'inline',
|
|
45
|
+
commonjsOptions: {
|
|
46
|
+
transformMixedEsModules: true
|
|
47
|
+
}
|
|
48
|
+
},
|
|
49
|
+
plugins: [
|
|
50
|
+
...this.getPlugins()
|
|
51
|
+
]
|
|
52
|
+
};
|
|
53
|
+
}
|
|
54
|
+
*getPlugins() {
|
|
55
|
+
yield wasm();
|
|
56
|
+
yield swc.vite(this.target.swcConfig);
|
|
57
|
+
yield tsconfigPaths();
|
|
58
|
+
if (this.resolver) {
|
|
59
|
+
yield {
|
|
60
|
+
name: this.target.packageJson.name + ':resolver',
|
|
61
|
+
resolveId: this.resolver.resolveId,
|
|
62
|
+
enforce: 'pre'
|
|
63
|
+
};
|
|
64
|
+
}
|
|
65
|
+
yield {
|
|
66
|
+
name: "cmmn:html-base-tag",
|
|
67
|
+
enforce: 'pre',
|
|
68
|
+
transformIndexHtml: (_, config)=>{
|
|
69
|
+
const dir = this.flags.production ? '' : dirname(config.path);
|
|
70
|
+
const result = [
|
|
71
|
+
{
|
|
72
|
+
tag: "base",
|
|
73
|
+
attrs: {
|
|
74
|
+
href: `${this.target.publicPath}${dir}/`
|
|
75
|
+
},
|
|
76
|
+
children: '/** injected **/'
|
|
77
|
+
}
|
|
78
|
+
];
|
|
79
|
+
if (this.flags.production) {
|
|
80
|
+
result.push({
|
|
81
|
+
tag: "link",
|
|
82
|
+
attrs: {
|
|
83
|
+
rel: 'manifest',
|
|
84
|
+
href: `${this.target.publicPath}/manifest.json`
|
|
85
|
+
}
|
|
86
|
+
});
|
|
87
|
+
}
|
|
88
|
+
return result;
|
|
89
|
+
}
|
|
90
|
+
};
|
|
91
|
+
if (this.flags.minify) yield swcMinifyPlugin();
|
|
92
|
+
yield {
|
|
93
|
+
name: "url-resolver",
|
|
94
|
+
enforce: 'pre',
|
|
95
|
+
resolveId: (id, importer, options)=>{
|
|
96
|
+
if (id.endsWith('?resolve')) {
|
|
97
|
+
const resolved = this.resolver?.resolveId(id.split('?')[0], importer, {
|
|
98
|
+
...options,
|
|
99
|
+
attributes: {
|
|
100
|
+
...options.attributes,
|
|
101
|
+
resolve: true
|
|
102
|
+
}
|
|
103
|
+
});
|
|
104
|
+
return resolved ? resolved.id + '?resolve' : id;
|
|
105
|
+
}
|
|
106
|
+
},
|
|
107
|
+
load: (id)=>{
|
|
108
|
+
if (id.endsWith('?resolve')) {
|
|
109
|
+
return `export default ${JSON.stringify(id.split('?')[0])}`;
|
|
110
|
+
}
|
|
111
|
+
}
|
|
112
|
+
};
|
|
113
|
+
// yield analyzer();
|
|
114
|
+
}
|
|
115
|
+
}
|
|
116
|
+
|
|
117
|
+
//# sourceMappingURL=vite.builder.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"sources":["/mnt/dev/cmmn/tools/bundlers/vite.builder.ts"],"names":["builtinModules","wasm","swc","tsconfigPaths","dirname","swcMinifyPlugin","ViteBuilder","target","resolver","flags","getConfig","root","rootDir","logLevel","mode","production","optimizeDeps","noDiscovery","include","define","process","env","NODE_ENV","html","base","publicPath","build","emptyOutDir","rollupOptions","external","Array","from","deps","keys","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","id","importer","options","endsWith","resolved","split","attributes","resolve","load","JSON","stringify"],"mappings":"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"}
|
|
@@ -0,0 +1,56 @@
|
|
|
1
|
+
import { build } from "vite";
|
|
2
|
+
import { Bundle } from "../model/bundle.js";
|
|
3
|
+
import { ViteBuilder } from "./vite.builder.js";
|
|
4
|
+
export class ViteBundler extends ViteBuilder {
|
|
5
|
+
async getBundleConfig() {
|
|
6
|
+
const config = await this.getConfig();
|
|
7
|
+
config.build.lib = {
|
|
8
|
+
entry: Object.fromEntries(this.target.entries.filter((x)=>!x.isExcluded).map((x)=>[
|
|
9
|
+
x.name,
|
|
10
|
+
x.source
|
|
11
|
+
])),
|
|
12
|
+
fileName: (format, entryName)=>{
|
|
13
|
+
if (entryName == '') entryName = 'index';
|
|
14
|
+
return entryName + '.js';
|
|
15
|
+
},
|
|
16
|
+
formats: [
|
|
17
|
+
'es'
|
|
18
|
+
]
|
|
19
|
+
};
|
|
20
|
+
config.build.modulePreload = false;
|
|
21
|
+
return config;
|
|
22
|
+
}
|
|
23
|
+
async createBundle() {
|
|
24
|
+
if (!this.target.entries.length) return [];
|
|
25
|
+
const config = await this.getBundleConfig();
|
|
26
|
+
return build(config).catch((err)=>{
|
|
27
|
+
this.target.error(err.message);
|
|
28
|
+
return [];
|
|
29
|
+
});
|
|
30
|
+
}
|
|
31
|
+
async bundle() {
|
|
32
|
+
const rollupOutput = await this.createBundle();
|
|
33
|
+
const outputChunks = rollupOutput.flatMap((x)=>x.output);
|
|
34
|
+
const entryMap = new Map(this.target.entries.map((x)=>[
|
|
35
|
+
x.relative,
|
|
36
|
+
x
|
|
37
|
+
]));
|
|
38
|
+
const outputs = outputChunks.map((x)=>{
|
|
39
|
+
return {
|
|
40
|
+
fileName: x.fileName,
|
|
41
|
+
entry: entryMap.get(x.fileName),
|
|
42
|
+
data: x.type == "asset" ? x.source : x.code,
|
|
43
|
+
deps: x.type == "asset" ? [] : [
|
|
44
|
+
...x.imports,
|
|
45
|
+
...x.dynamicImports
|
|
46
|
+
].filter((x)=>!/^node:/.test(x)).map((path)=>path.replace(/^(\.\.\/)+/, '/')).map((path)=>this.resolver?.getPack(path) ?? {
|
|
47
|
+
pack: this.target,
|
|
48
|
+
path: path
|
|
49
|
+
})
|
|
50
|
+
};
|
|
51
|
+
});
|
|
52
|
+
return new Bundle(this.target, outputs);
|
|
53
|
+
}
|
|
54
|
+
}
|
|
55
|
+
|
|
56
|
+
//# sourceMappingURL=vite.bundler.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"sources":["/mnt/dev/cmmn/tools/bundlers/vite.bundler.ts"],"names":["build","Bundle","ViteBuilder","ViteBundler","getBundleConfig","config","getConfig","lib","entry","Object","fromEntries","target","entries","filter","x","isExcluded","map","name","source","fileName","format","entryName","formats","modulePreload","createBundle","length","catch","err","error","message","bundle","rollupOutput","outputChunks","flatMap","output","entryMap","Map","relative","outputs","get","data","type","code","deps","imports","dynamicImports","test","path","replace","resolver","getPack","pack"],"mappings":"AAAA,SACIA,KAAK,QAEF,OAAO;AAGd,SAAQC,MAAM,QAAe,qBAAkB;AAC/C,SAAQC,WAAW,QAAO,oBAAiB;AAE3C,OAAO,MAAMC,oBAAoBD;IAE7B,MAAME,kBAAwC;QAC1C,MAAMC,SAAS,MAAM,IAAI,CAACC,SAAS;QACnCD,OAAOL,KAAK,CAACO,GAAG,GAAG;YACfC,OAAOC,OAAOC,WAAW,CAAC,IAAI,CAACC,MAAM,CAACC,OAAO,CACxCC,MAAM,CAACC,CAAAA,IAAK,CAACA,EAAEC,UAAU,EACzBC,GAAG,CAACF,CAAAA,IAAK;oBAACA,EAAEG,IAAI;oBAAEH,EAAEI,MAAM;iBAAC;YAChCC,UAAU,CAACC,QAAQC;gBACf,IAAIA,aAAa,IAAIA,YAAY;gBACjC,OAAOA,YAAY;YACvB;YACAC,SAAS;gBAAC;aAAK;QACnB;QACAjB,OAAOL,KAAK,CAACuB,aAAa,GAAG;QAC7B,OAAOlB;IACX;IAEA,MAAcmB,eAAwC;QAClD,IAAI,CAAC,IAAI,CAACb,MAAM,CAACC,OAAO,CAACa,MAAM,EAC3B,OAAO,EAAE;QACb,MAAMpB,SAAS,MAAM,IAAI,CAACD,eAAe;QACzC,OAAOJ,MAAMK,QAAQqB,KAAK,CAACC,CAAAA;YACvB,IAAI,CAAChB,MAAM,CAACiB,KAAK,CAACD,IAAIE,OAAO;YAC7B,OAAO,EAAE;QACb;IACJ;IACA,MAAaC,SAAyB;QAClC,MAAMC,eAAe,MAAM,IAAI,CAACP,YAAY;QAC5C,MAAMQ,eAAeD,aAAaE,OAAO,CAACnB,CAAAA,IAAKA,EAAEoB,MAAM;QACvD,MAAMC,WAAW,IAAIC,IAAI,IAAI,CAACzB,MAAM,CAACC,OAAO,CAACI,GAAG,CAACF,CAAAA,IAAK;gBAACA,EAAEuB,QAAQ;gBAAEvB;aAAE;QACrE,MAAMwB,UAAUN,aAAahB,GAAG,CAACF,CAAAA;YAC7B,OAAO;gBACHK,UAAUL,EAAEK,QAAQ;gBACpBX,OAAO2B,SAASI,GAAG,CAACzB,EAAEK,QAAQ;gBAC9BqB,MAAO1B,EAAE2B,IAAI,IAAI,UAAU3B,EAAEI,MAAM,GAAGJ,EAAE4B,IAAI;gBAC5CC,MAAM7B,EAAE2B,IAAI,IAAI,UAAU,EAAE,GAAG;uBACxB3B,EAAE8B,OAAO;uBACT9B,EAAE+B,cAAc;iBACtB,CAAChC,MAAM,CAACC,CAAAA,IAAK,CAAC,SAASgC,IAAI,CAAChC,IAAIE,GAAG,CAAC+B,CAAAA,OAAQA,KAAKC,OAAO,CAAC,cAAa,MAAMhC,GAAG,CAAC+B,CAAAA,OAAQ,IAAI,CAACE,QAAQ,EAAEC,QAAQH,SAAS;wBACrHI,MAAM,IAAI,CAACxC,MAAM;wBACjBoC,MAAMA;oBACV;YACJ;QACJ;QACA,OAAO,IAAI9C,OAAO,IAAI,CAACU,MAAM,EAAE2B;IACnC;AAEJ"}
|
|
@@ -0,0 +1,100 @@
|
|
|
1
|
+
import { dirname, join } from "node:path";
|
|
2
|
+
import { cp, mkdir, writeFile, rm } from "node:fs/promises";
|
|
3
|
+
import { Monorepo } from "../model/monorepo.js";
|
|
4
|
+
import { Target } from "../model/target.js";
|
|
5
|
+
import { gzipSync, brotliCompressSync } from "node:zlib";
|
|
6
|
+
import { Terminal } from "../helpers/terminal.js";
|
|
7
|
+
export async function bundle(flags) {
|
|
8
|
+
const monorepo = await Monorepo.load(flags);
|
|
9
|
+
const term = new Terminal(monorepo.flags, monorepo.packs);
|
|
10
|
+
for (let pack of monorepo.packs.values()){
|
|
11
|
+
if (flags.workspace && (!pack.name.match(new RegExp(flags.workspace)) || pack.name == flags.workspace)) continue;
|
|
12
|
+
const runnner = flags.deploy ? new DeployCommandRunnner(pack, monorepo) : new BundleCommandRunner(pack, monorepo);
|
|
13
|
+
if (!runnner.shouldWrite()) continue;
|
|
14
|
+
try {
|
|
15
|
+
const size = await runnner.write();
|
|
16
|
+
term.setData(pack, {
|
|
17
|
+
state: 'ok',
|
|
18
|
+
size: size
|
|
19
|
+
});
|
|
20
|
+
} catch (e) {
|
|
21
|
+
pack.error(e.message + e.stack);
|
|
22
|
+
}
|
|
23
|
+
}
|
|
24
|
+
}
|
|
25
|
+
class BundleCommandRunner {
|
|
26
|
+
constructor(pack, monorepo){
|
|
27
|
+
this.pack = pack;
|
|
28
|
+
this.monorepo = monorepo;
|
|
29
|
+
}
|
|
30
|
+
get flags() {
|
|
31
|
+
return this.monorepo.flags;
|
|
32
|
+
}
|
|
33
|
+
async write() {
|
|
34
|
+
const bundler = this.monorepo.createBundler(this.pack);
|
|
35
|
+
const bundle = await bundler.bundle();
|
|
36
|
+
return await this.writeBundle(bundle);
|
|
37
|
+
}
|
|
38
|
+
async writeBundle(bundle) {
|
|
39
|
+
await rm(this.outDir, {
|
|
40
|
+
recursive: true,
|
|
41
|
+
force: true
|
|
42
|
+
}).catch((err)=>{
|
|
43
|
+
console.error(err);
|
|
44
|
+
});
|
|
45
|
+
let size = 0;
|
|
46
|
+
for (let file of bundle.fileNames()){
|
|
47
|
+
const path = join(this.outDir, file);
|
|
48
|
+
const data = bundle.get(file);
|
|
49
|
+
await this.writeFile(path, data);
|
|
50
|
+
size += data.length;
|
|
51
|
+
}
|
|
52
|
+
if (this.pack instanceof Target && this.pack.publicDir) await cp(this.pack.publicDir, this.outDir, {
|
|
53
|
+
recursive: true
|
|
54
|
+
}).catch(()=>{});
|
|
55
|
+
return size;
|
|
56
|
+
}
|
|
57
|
+
shouldWrite() {
|
|
58
|
+
return this.pack instanceof Target;
|
|
59
|
+
}
|
|
60
|
+
get outDir() {
|
|
61
|
+
return join(this.pack.rootDir, 'dist/bundle');
|
|
62
|
+
}
|
|
63
|
+
async writeFile(path, data) {
|
|
64
|
+
const dir = dirname(path);
|
|
65
|
+
await mkdir(dir, {
|
|
66
|
+
recursive: true
|
|
67
|
+
});
|
|
68
|
+
await writeFile(path, data);
|
|
69
|
+
}
|
|
70
|
+
}
|
|
71
|
+
class DeployCommandRunnner extends BundleCommandRunner {
|
|
72
|
+
get outRoot() {
|
|
73
|
+
return join(process.cwd(), this.flags.out, 'web');
|
|
74
|
+
}
|
|
75
|
+
constructor(pack, monorepo){
|
|
76
|
+
super(pack, monorepo);
|
|
77
|
+
}
|
|
78
|
+
async writeBundle(bundle) {
|
|
79
|
+
const size = await super.writeBundle(bundle);
|
|
80
|
+
const manifest = await bundle.getBundleJson();
|
|
81
|
+
await this.writeFile(join(this.outDir, 'bundle.json'), JSON.stringify(manifest, null, 2));
|
|
82
|
+
if (this.pack.name === '@cmmn/service-worker') {
|
|
83
|
+
await this.writeFile(join(this.outRoot, '_sw.js'), bundle.get('worker.js'));
|
|
84
|
+
}
|
|
85
|
+
return size;
|
|
86
|
+
}
|
|
87
|
+
shouldWrite() {
|
|
88
|
+
return true;
|
|
89
|
+
}
|
|
90
|
+
get outDir() {
|
|
91
|
+
return join(this.outRoot, this.pack.publicPath);
|
|
92
|
+
}
|
|
93
|
+
async writeFile(path, data) {
|
|
94
|
+
await super.writeFile(path, data);
|
|
95
|
+
if (this.flags.args.includes('--gzip')) await writeFile(path + '.gz', gzipSync(data));
|
|
96
|
+
if (this.flags.args.includes('--brotli')) await writeFile(path + '.br', brotliCompressSync(data));
|
|
97
|
+
}
|
|
98
|
+
}
|
|
99
|
+
|
|
100
|
+
//# sourceMappingURL=bundle.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"sources":["/mnt/dev/cmmn/tools/commands/bundle.ts"],"names":["dirname","join","cp","mkdir","writeFile","rm","Monorepo","Target","gzipSync","brotliCompressSync","Terminal","bundle","flags","monorepo","load","term","packs","pack","values","workspace","name","match","RegExp","runnner","deploy","DeployCommandRunnner","BundleCommandRunner","shouldWrite","size","write","setData","state","e","error","message","stack","bundler","createBundler","writeBundle","outDir","recursive","force","catch","err","console","file","fileNames","path","data","get","length","publicDir","rootDir","dir","outRoot","process","cwd","out","manifest","getBundleJson","JSON","stringify","publicPath","args","includes"],"mappings":"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"}
|
|
@@ -0,0 +1,26 @@
|
|
|
1
|
+
import { Target } from "../model/target.js";
|
|
2
|
+
import fs from "node:fs/promises";
|
|
3
|
+
import { exec } from "node:child_process";
|
|
4
|
+
export async function cert(...flags) {
|
|
5
|
+
const targets = await Target.readTargets(process.cwd(), flags);
|
|
6
|
+
for (let target of targets){
|
|
7
|
+
const https = target.https;
|
|
8
|
+
if (!https) continue;
|
|
9
|
+
const [cert, key] = await Promise.all([
|
|
10
|
+
fs.stat(https.cert).catch(()=>null),
|
|
11
|
+
fs.stat(https.key).catch(()=>null)
|
|
12
|
+
]);
|
|
13
|
+
if (!cert || !key) {
|
|
14
|
+
const mkcert = await exec([
|
|
15
|
+
'mkcert',
|
|
16
|
+
`-cert-file ${https.cert}`,
|
|
17
|
+
`-key-file ${https.key}`,
|
|
18
|
+
`"*.${https.host}"`
|
|
19
|
+
].join(' '));
|
|
20
|
+
mkcert.stdout.pipe(process.stdout);
|
|
21
|
+
mkcert.stderr.pipe(process.stderr);
|
|
22
|
+
}
|
|
23
|
+
}
|
|
24
|
+
}
|
|
25
|
+
|
|
26
|
+
//# sourceMappingURL=cert.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"sources":["/mnt/dev/cmmn/tools/commands/cert.js"],"names":["Target","fs","exec","cert","flags","targets","readTargets","process","cwd","target","https","key","Promise","all","stat","catch","mkcert","host","join","stdout","pipe","stderr"],"mappings":"AAAA,SAAQA,MAAM,QAAO,qBAAqB;AAC1C,OAAOC,QAAQ,mBAAmB;AAClC,SAAQC,IAAI,QAAO,qBAAqB;AAExC,OAAO,eAAeC,KAAK,GAAGC,KAAK;IAC/B,MAAMC,UAAU,MAAML,OAAOM,WAAW,CAACC,QAAQC,GAAG,IAAIJ;IACxD,KAAK,IAAIK,UAAUJ,QAAS;QACxB,MAAMK,QAAQD,OAAOC,KAAK;QAC1B,IAAI,CAACA,OAAO;QACZ,MAAM,CAACP,MAAMQ,IAAI,GAAG,MAAMC,QAAQC,GAAG,CAAC;YAClCZ,GAAGa,IAAI,CAACJ,MAAMP,IAAI,EAAEY,KAAK,CAAC,IAAM;YAChCd,GAAGa,IAAI,CAACJ,MAAMC,GAAG,EAAEI,KAAK,CAAC,IAAM;SAClC;QACD,IAAI,CAACZ,QAAQ,CAACQ,KAAI;YACd,MAAMK,SAAS,MAAMd,KAAK;gBACtB;gBACA,CAAC,WAAW,EAAEQ,MAAMP,IAAI,EAAE;gBAC1B,CAAC,UAAU,EAAEO,MAAMC,GAAG,EAAE;gBACxB,CAAC,GAAG,EAAED,MAAMO,IAAI,CAAC,CAAC,CAAC;aACtB,CAACC,IAAI,CAAC;YACPF,OAAOG,MAAM,CAACC,IAAI,CAACb,QAAQY,MAAM;YACjCH,OAAOK,MAAM,CAACD,IAAI,CAACb,QAAQc,MAAM;QACrC;IACJ;AACJ"}
|