@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,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"}
|
|
@@ -0,0 +1,14 @@
|
|
|
1
|
+
import { getPackages } from "@manypkg/get-packages";
|
|
2
|
+
import fs from "node:fs/promises";
|
|
3
|
+
import { join } from "node:path";
|
|
4
|
+
export async function clean(flags) {
|
|
5
|
+
const packages = await getPackages(process.cwd());
|
|
6
|
+
for (const pkg of packages.packages){
|
|
7
|
+
if (flags.workspace && flags.workspace != pkg.relativeDir) continue;
|
|
8
|
+
await fs.rm(join(pkg.dir, 'dist'), {
|
|
9
|
+
recursive: true
|
|
10
|
+
}).catch(()=>void 0);
|
|
11
|
+
}
|
|
12
|
+
}
|
|
13
|
+
|
|
14
|
+
//# sourceMappingURL=ci.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"sources":["/mnt/dev/cmmn/tools/commands/ci.ts"],"names":["getPackages","fs","join","clean","flags","packages","process","cwd","pkg","workspace","relativeDir","rm","dir","recursive","catch"],"mappings":"AAAA,SAAQA,WAAW,QAAO,wBAAwB;AAClD,OAAOC,QAAQ,mBAAmB;AAClC,SAAQC,IAAI,QAAO,YAAY;AAG/B,OAAO,eAAeC,MAAMC,KAAY;IACpC,MAAMC,WAAW,MAAML,YAAYM,QAAQC,GAAG;IAC9C,KAAK,MAAMC,OAAOH,SAASA,QAAQ,CAAE;QACjC,IAAID,MAAMK,SAAS,IAAIL,MAAMK,SAAS,IAAID,IAAIE,WAAW,EACrD;QACJ,MAAMT,GAAGU,EAAE,CAACT,KAAKM,IAAII,GAAG,EAAE,SAAS;YAAEC,WAAW;QAAK,GAAGC,KAAK,CAAC,IAAM,KAAK;IAC7E;AACJ"}
|
|
@@ -0,0 +1,18 @@
|
|
|
1
|
+
import fs from "node:fs/promises";
|
|
2
|
+
import { join } from "node:path";
|
|
3
|
+
import { Monorepo } from "../model/monorepo.js";
|
|
4
|
+
export async function clean(flags) {
|
|
5
|
+
const monorepo = await Monorepo.load(flags);
|
|
6
|
+
for (const target of monorepo.packs){
|
|
7
|
+
target.log('remove dist');
|
|
8
|
+
await fs.rm(join(target.rootDir, 'dist'), {
|
|
9
|
+
recursive: true
|
|
10
|
+
}).catch(()=>void 0);
|
|
11
|
+
target.log('remove node_modules');
|
|
12
|
+
if (flags.args.includes('--modules')) await fs.rm(join(target.rootDir, 'node_modules'), {
|
|
13
|
+
recursive: true
|
|
14
|
+
}).catch(()=>void 0);
|
|
15
|
+
}
|
|
16
|
+
}
|
|
17
|
+
|
|
18
|
+
//# sourceMappingURL=clean.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"sources":["/mnt/dev/cmmn/tools/commands/clean.ts"],"names":["fs","join","Monorepo","clean","flags","monorepo","load","target","packs","log","rm","rootDir","recursive","catch","args","includes"],"mappings":"AAAA,OAAOA,QAAQ,mBAAmB;AAClC,SAAQC,IAAI,QAAO,YAAY;AAI/B,SAAQC,QAAQ,QAAO,uBAAoB;AAE3C,OAAO,eAAeC,MAAMC,KAAY;IACpC,MAAMC,WAAW,MAAMH,SAASI,IAAI,CAACF;IACrC,KAAK,MAAMG,UAAUF,SAASG,KAAK,CAAE;QACjCD,OAAOE,GAAG,CAAC;QACX,MAAMT,GAAGU,EAAE,CAACT,KAAKM,OAAOI,OAAO,EAAE,SAAS;YAAEC,WAAW;QAAK,GAAGC,KAAK,CAAC,IAAM,KAAK;QAChFN,OAAOE,GAAG,CAAC;QACX,IAAIL,MAAMU,IAAI,CAACC,QAAQ,CAAC,cACpB,MAAMf,GAAGU,EAAE,CAACT,KAAKM,OAAOI,OAAO,EAAE,iBAAiB;YAAEC,WAAW;QAAK,GAAGC,KAAK,CAAC,IAAM,KAAK;IAChG;AACJ"}
|
|
@@ -0,0 +1,60 @@
|
|
|
1
|
+
import path, { dirname, join } from "node:path";
|
|
2
|
+
import { transformFile } from "@swc/core";
|
|
3
|
+
import { Watcher } from "../helpers/watcher.js";
|
|
4
|
+
import events from "node:events";
|
|
5
|
+
import glob from "fast-glob";
|
|
6
|
+
import { mkdir, writeFile } from "node:fs/promises";
|
|
7
|
+
import { createWriteStream } from "node:fs";
|
|
8
|
+
import { Monorepo } from "../model/monorepo.js";
|
|
9
|
+
export async function compile(flags) {
|
|
10
|
+
const monorepo = await Monorepo.load(flags);
|
|
11
|
+
events.setMaxListeners(Math.max(monorepo.packs.length * 2, events.defaultMaxListeners));
|
|
12
|
+
const watcher = flags.watch ? new Watcher() : null;
|
|
13
|
+
for (const pack of monorepo.targets){
|
|
14
|
+
if (pack.tsConfig.include?.length === 0) continue;
|
|
15
|
+
await compileFiles(pack);
|
|
16
|
+
if (watcher) {
|
|
17
|
+
watcher.watchTarget(pack);
|
|
18
|
+
pack.addEventListener('file', (e)=>{
|
|
19
|
+
pack.log(`changed: ^W${e.files.join(', ')}`);
|
|
20
|
+
compileFiles(pack, e.files.map((f)=>path.join(pack.rootDir, f)));
|
|
21
|
+
});
|
|
22
|
+
}
|
|
23
|
+
}
|
|
24
|
+
}
|
|
25
|
+
const sourceMapComment = `\n//# sourceMappingURL=`;
|
|
26
|
+
async function compileFiles(target, filenames = null) {
|
|
27
|
+
const swcOptions = target.swcConfig;
|
|
28
|
+
const ignore = target.tsConfig.exclude.flatMap((d)=>[
|
|
29
|
+
`${target.rootDir}/${d}/**/*`,
|
|
30
|
+
`${target.rootDir}/${d}`
|
|
31
|
+
]);
|
|
32
|
+
const files = filenames ?? await glob(target.rootDir + '/**/*.[tj]s?(x)', {
|
|
33
|
+
ignore
|
|
34
|
+
});
|
|
35
|
+
const time = performance.now();
|
|
36
|
+
const outDir = join(target.rootDir, 'dist/esm');
|
|
37
|
+
for (let file of files){
|
|
38
|
+
const result = await transformFile(file, swcOptions);
|
|
39
|
+
const outFile = outDir + file.substring(target.rootDir.length).replace(/\.ts(x?)$/, '.js$1');
|
|
40
|
+
await mkdir(dirname(outFile), {
|
|
41
|
+
recursive: true
|
|
42
|
+
});
|
|
43
|
+
const writer = createWriteStream(outFile, {
|
|
44
|
+
encoding: 'utf8'
|
|
45
|
+
});
|
|
46
|
+
// const sourceMaps = JSON.parse(result.map)
|
|
47
|
+
// sourceMaps.sources = sourceMaps.sources.map(s => relative(outFile, s))
|
|
48
|
+
// result.map = JSON.stringify(sourceMaps);
|
|
49
|
+
writer.write(result.code);
|
|
50
|
+
writer.write(sourceMapComment);
|
|
51
|
+
writer.write(outFile.split('/').pop() + '.map');
|
|
52
|
+
writer.end();
|
|
53
|
+
await new Promise((r)=>writer.on('finish', r));
|
|
54
|
+
await writeFile(outFile + '.map', result.map);
|
|
55
|
+
}
|
|
56
|
+
const duration = performance.now() - time;
|
|
57
|
+
target.log(`compiled for ^W${duration.toFixed(0)}ms ^w ${files.length} files`);
|
|
58
|
+
}
|
|
59
|
+
|
|
60
|
+
//# sourceMappingURL=compile.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"sources":["/mnt/dev/cmmn/tools/commands/compile.ts"],"names":["path","dirname","join","transformFile","Watcher","events","glob","mkdir","writeFile","createWriteStream","Monorepo","compile","flags","monorepo","load","setMaxListeners","Math","max","packs","length","defaultMaxListeners","watcher","watch","pack","targets","tsConfig","include","compileFiles","watchTarget","addEventListener","e","log","files","map","f","rootDir","sourceMapComment","target","filenames","swcOptions","swcConfig","ignore","exclude","flatMap","d","time","performance","now","outDir","file","result","outFile","substring","replace","recursive","writer","encoding","write","code","split","pop","end","Promise","r","on","duration","toFixed"],"mappings":"AAAA,OAAOA,QAAOC,OAAO,EAAEC,IAAI,QAAO,YAAY;AAC9C,SAAQC,aAAa,QAAO,YAAY;AAGxC,SAAQC,OAAO,QAAO,wBAAqB;AAC3C,OAAOC,YAAY,cAAc;AACjC,OAAOC,UAAU,YAAY;AAC7B,SAAQC,KAAK,EAAEC,SAAS,QAAO,mBAAmB;AAClD,SAAQC,iBAAiB,QAAO,UAAU;AAC1C,SAAQC,QAAQ,QAAO,uBAAoB;AAG3C,OAAO,eAAeC,QAAQC,KAAY;IACzC,MAAMC,WAAW,MAAMH,SAASI,IAAI,CAACF;IACrCP,OAAOU,eAAe,CAACC,KAAKC,GAAG,CAACJ,SAASK,KAAK,CAACC,MAAM,GAAG,GAAGd,OAAOe,mBAAmB;IACrF,MAAMC,UAAUT,MAAMU,KAAK,GAAG,IAAIlB,YAAY;IAC9C,KAAK,MAAMmB,QAAQV,SAASW,OAAO,CAAE;QACpC,IAAID,KAAKE,QAAQ,CAACC,OAAO,EAAEP,WAAW,GACrC;QACD,MAAMQ,aAAaJ;QACnB,IAAIF,SAAS;YACZA,QAAQO,WAAW,CAACL;YACpBA,KAAKM,gBAAgB,CAAC,QAAQ,CAACC;gBAC9BP,KAAKQ,GAAG,CAAC,CAAC,WAAW,EAAED,EAAEE,KAAK,CAAC9B,IAAI,CAAC,OAAO;gBAC3CyB,aAAaJ,MAAMO,EAAEE,KAAK,CAACC,GAAG,CAACC,CAAAA,IAAKlC,KAAKE,IAAI,CAACqB,KAAKY,OAAO,EAAED;YAC7D;QACD;IACD;AACD;AAEA,MAAME,mBAAmB,CAAC,uBAAuB,CAAC;AAElD,eAAeT,aAAaU,MAAc,EAAEC,YAAsB,IAAI;IACrE,MAAMC,aAAaF,OAAOG,SAAS;IACnC,MAAMC,SAASJ,OAAOZ,QAAQ,CAACiB,OAAO,CAACC,OAAO,CAACC,CAAAA,IAAK;YACnD,GAAGP,OAAOF,OAAO,CAAC,CAAC,EAAES,EAAE,KAAK,CAAC;YAC7B,GAAGP,OAAOF,OAAO,CAAC,CAAC,EAAES,GAAG;SACxB;IACD,MAAMZ,QAAQM,aAAa,MAAMhC,KAAK+B,OAAOF,OAAO,GAAG,mBAAmB;QACzEM;IACD;IACA,MAAMI,OAAOC,YAAYC,GAAG;IAC5B,MAAMC,SAAS9C,KAAKmC,OAAOF,OAAO,EAAE;IACpC,KAAK,IAAIc,QAAQjB,MAAO;QACvB,MAAMkB,SAAS,MAAM/C,cAAc8C,MAAMV;QACzC,MAAMY,UAAUH,SAASC,KAAKG,SAAS,CAACf,OAAOF,OAAO,CAAChB,MAAM,EAAEkC,OAAO,CAAC,aAAY;QACnF,MAAM9C,MAAMN,QAAQkD,UAAU;YAAEG,WAAW;QAAI;QAC/C,MAAMC,SAAS9C,kBAAkB0C,SAAS;YAAEK,UAAU;QAAO;QAC7D,4CAA4C;QAC5C,yEAAyE;QACzE,2CAA2C;QAC3CD,OAAOE,KAAK,CAACP,OAAOQ,IAAI;QACxBH,OAAOE,KAAK,CAACrB;QACbmB,OAAOE,KAAK,CAACN,QAAQQ,KAAK,CAAC,KAAKC,GAAG,KAAG;QACtCL,OAAOM,GAAG;QACV,MAAM,IAAIC,QAAcC,CAAAA,IAAKR,OAAOS,EAAE,CAAC,UAAUD;QACjD,MAAMvD,UAAU2C,UAAU,QAAQD,OAAOjB,GAAG;IAC7C;IACA,MAAMgC,WAAWnB,YAAYC,GAAG,KAAKF;IACrCR,OAAON,GAAG,CAAC,CAAC,eAAe,EAAEkC,SAASC,OAAO,CAAC,GAAG,MAAM,EAAElC,MAAMb,MAAM,CAAC,MAAM,CAAC;AAC9E"}
|
|
@@ -0,0 +1,61 @@
|
|
|
1
|
+
import { Terminal } from "../helpers/terminal.js";
|
|
2
|
+
import { Flags } from "../model/flags.js";
|
|
3
|
+
import { dirname, join } from "node:path";
|
|
4
|
+
import { cp, mkdir, writeFile, rm } from "node:fs/promises";
|
|
5
|
+
import { Monorepo } from "../model/monorepo.js";
|
|
6
|
+
import { createBundler } from "../bundlers/createBundler.js";
|
|
7
|
+
import { Target } from "../model/target.js";
|
|
8
|
+
import { gzipSync, brotliCompressSync } from "node:zlib";
|
|
9
|
+
export async function deploy(flags) {
|
|
10
|
+
const monorepo = await Monorepo.load(process.cwd());
|
|
11
|
+
const term = new Terminal(flags, monorepo.packs);
|
|
12
|
+
const outRoot = flags.deploy ? join(monorepo.root.rootDir, flags.out, 'web') : '';
|
|
13
|
+
if (flags.deploy) {
|
|
14
|
+
await rm(outRoot, {
|
|
15
|
+
recursive: true,
|
|
16
|
+
force: true
|
|
17
|
+
}).catch((err)=>{
|
|
18
|
+
console.error(err);
|
|
19
|
+
});
|
|
20
|
+
}
|
|
21
|
+
for (let pack of monorepo.packs.values()){
|
|
22
|
+
if (flags.workspace && !(pack.name.match(new RegExp(flags.workspace)) || pack.name == flags.workspace)) continue;
|
|
23
|
+
if (!flags.deploy && !(pack instanceof Target)) continue;
|
|
24
|
+
const outDir = flags.deploy ? join(outRoot, pack.publicPath) : join(pack.rootDir, 'dist/bundle');
|
|
25
|
+
const bundler = createBundler(pack, flags.deploy ? monorepo.resolver : null);
|
|
26
|
+
const bundle = await bundler.bundle();
|
|
27
|
+
let size = 0;
|
|
28
|
+
for (let file of bundle.fileNames()){
|
|
29
|
+
const path = join(outDir, file);
|
|
30
|
+
const dir = dirname(path);
|
|
31
|
+
await mkdir(dir, {
|
|
32
|
+
recursive: true
|
|
33
|
+
});
|
|
34
|
+
const data = bundle.get(file);
|
|
35
|
+
await writeFileWithSidecar(path, data);
|
|
36
|
+
size += data.length;
|
|
37
|
+
// term.term.yellow(`\t\t${file}\n`)
|
|
38
|
+
}
|
|
39
|
+
if (flags.deploy) {
|
|
40
|
+
const manifest = await bundle.getBundleJson();
|
|
41
|
+
await writeFileWithSidecar(join(outDir, 'bundle.json'), JSON.stringify(manifest, null, 2));
|
|
42
|
+
if (pack.name === '@cmmn/service-worker') {
|
|
43
|
+
await writeFileWithSidecar(join(outRoot, '_sw.js'), bundle.get('worker.js'));
|
|
44
|
+
}
|
|
45
|
+
}
|
|
46
|
+
term.setData(pack, {
|
|
47
|
+
state: 'ok',
|
|
48
|
+
size: size
|
|
49
|
+
});
|
|
50
|
+
if (pack instanceof Target) await cp(pack.publicDir, outDir, {
|
|
51
|
+
recursive: true
|
|
52
|
+
}).catch(()=>{});
|
|
53
|
+
}
|
|
54
|
+
}
|
|
55
|
+
async function writeFileWithSidecar(path, data) {
|
|
56
|
+
await writeFile(path, data);
|
|
57
|
+
if (Flags.Current.args.includes('--gzip')) await writeFile(path + '.gz', gzipSync(data));
|
|
58
|
+
if (Flags.Current.args.includes('--brotli')) await writeFile(path + '.br', brotliCompressSync(data));
|
|
59
|
+
}
|
|
60
|
+
|
|
61
|
+
//# sourceMappingURL=deploy.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"sources":["/mnt/dev/cmmn/tools/commands/deploy.ts"],"names":["Terminal","Flags","dirname","join","cp","mkdir","writeFile","rm","Monorepo","createBundler","Target","gzipSync","brotliCompressSync","deploy","flags","monorepo","load","process","cwd","term","packs","outRoot","root","rootDir","out","recursive","force","catch","err","console","error","pack","values","workspace","name","match","RegExp","outDir","publicPath","bundler","resolver","bundle","size","file","fileNames","path","dir","data","get","writeFileWithSidecar","length","manifest","getBundleJson","JSON","stringify","setData","state","publicDir","Current","args","includes"],"mappings":"AAAA,SAAQA,QAAQ,QAAO,yBAAyB;AAChD,SAAQC,KAAK,QAAO,oBAAiB;AACrC,SAAQC,OAAO,EAAEC,IAAI,QAAO,YAAY;AACxC,SAAQC,EAAE,EAAEC,KAAK,EAAEC,SAAS,EAAQC,EAAE,QAAO,mBAAmB;AAChE,SAAQC,QAAQ,QAAO,uBAAoB;AAC3C,SAAQC,aAAa,QAAO,+BAA4B;AACxD,SAAQC,MAAM,QAAO,qBAAkB;AACvC,SAAQC,QAAQ,EAAEC,kBAAkB,QAAO,YAAY;AAEvD,OAAO,eAAeC,OAAOC,KAAY;IACxC,MAAMC,WAAW,MAAMP,SAASQ,IAAI,CAACC,QAAQC,GAAG;IAChD,MAAMC,OAAO,IAAInB,SAASc,OAAOC,SAASK,KAAK;IAC5C,MAAMC,UAAUP,MAAMD,MAAM,GACtBV,KAAKY,SAASO,IAAI,CAACC,OAAO,EAAET,MAAMU,GAAG,EAAE,SACvC;IACN,IAAGV,MAAMD,MAAM,EAAE;QACb,MAAMN,GAAGc,SAAS;YAACI,WAAW;YAAMC,OAAO;QAAI,GAAGC,KAAK,CAACC,CAAAA;YACpDC,QAAQC,KAAK,CAACF;QAClB;IACJ;IACH,KAAK,IAAIG,QAAQhB,SAASK,KAAK,CAACY,MAAM,GAAI;QACnC,IAAIlB,MAAMmB,SAAS,IAAI,CACnBF,CAAAA,KAAKG,IAAI,CAACC,KAAK,CAAC,IAAIC,OAAOtB,MAAMmB,SAAS,MACvCF,KAAKG,IAAI,IAAIpB,MAAMmB,SAAS,AAAD,GAE9B;QACJ,IAAI,CAACnB,MAAMD,MAAM,IAAI,CAAEkB,CAAAA,gBAAgBrB,MAAK,GACxC;QACJ,MAAM2B,SAASvB,MAAMD,MAAM,GACrBV,KAAKkB,SAASU,KAAKO,UAAU,IAC7BnC,KAAK4B,KAAKR,OAAO,EAAE;QACzB,MAAMgB,UAAU9B,cAAcsB,MAAMjB,MAAMD,MAAM,GAAGE,SAASyB,QAAQ,GAAG;QACvE,MAAMC,SAAS,MAAMF,QAAQE,MAAM;QACnC,IAAIC,OAAO;QACX,KAAK,IAAIC,QAAQF,OAAOG,SAAS,GAAI;YACjC,MAAMC,OAAO1C,KAAKkC,QAAQM;YAC1B,MAAMG,MAAM5C,QAAQ2C;YACpB,MAAMxC,MAAMyC,KAAK;gBAACrB,WAAW;YAAI;YACjC,MAAMsB,OAAON,OAAOO,GAAG,CAACL;YACxB,MAAMM,qBAAqBJ,MAAME;YACjCL,QAAQK,KAAKG,MAAM;QACnB,oCAAoC;QACxC;QACA,IAAIpC,MAAMD,MAAM,EAAE;YACd,MAAMsC,WAAW,MAAMV,OAAOW,aAAa;YAC3C,MAAMH,qBAAqB9C,KAAKkC,QAAQ,gBAAgBgB,KAAKC,SAAS,CAACH,UAAU,MAAM;YACvF,IAAIpB,KAAKG,IAAI,KAAK,wBAAuB;gBACrC,MAAMe,qBAAqB9C,KAAKkB,SAAS,WAAWoB,OAAOO,GAAG,CAAC;YACnE;QACJ;QACA7B,KAAKoC,OAAO,CAACxB,MAAM;YACfyB,OAAO;YACPd,MAAMA;QACV;QACA,IAAIX,gBAAgBrB,QAChB,MAAMN,GAAG2B,KAAK0B,SAAS,EAAEpB,QAAQ;YAC7BZ,WAAW;QACf,GAAGE,KAAK,CAAC,KAAO;IAC3B;AACD;AAEA,eAAesB,qBAAqBJ,IAAI,EAAEE,IAAI;IAC1C,MAAMzC,UAAUuC,MAAME;IACtB,IAAI9C,MAAMyD,OAAO,CAACC,IAAI,CAACC,QAAQ,CAAC,WAC5B,MAAMtD,UAAUuC,OAAK,OAAOlC,SAASoC;IACzC,IAAI9C,MAAMyD,OAAO,CAACC,IAAI,CAACC,QAAQ,CAAC,aAC5B,MAAMtD,UAAUuC,OAAK,OAAOjC,mBAAmBmC;AACvD"}
|
|
@@ -0,0 +1,37 @@
|
|
|
1
|
+
import { fastify } from "fastify";
|
|
2
|
+
import { fastifyCaching } from "@fastify/caching";
|
|
3
|
+
import { fastifyCompress } from "../helpers/fastify-compress.js";
|
|
4
|
+
import { Monorepo } from "../model/monorepo.js";
|
|
5
|
+
import { DevServer } from "../servers/dev-server.js";
|
|
6
|
+
export async function dev(flags) {
|
|
7
|
+
flags.deploy = true;
|
|
8
|
+
const monorepo = await Monorepo.load(flags);
|
|
9
|
+
const devServer = new DevServer(monorepo);
|
|
10
|
+
const app = fastify({
|
|
11
|
+
rewriteUrl: devServer.rewriteUrl
|
|
12
|
+
});
|
|
13
|
+
if (flags.minify) {
|
|
14
|
+
fastifyCompress(app);
|
|
15
|
+
app.register(fastifyCaching, {
|
|
16
|
+
privacy: fastifyCaching.privacy.PUBLIC,
|
|
17
|
+
expiresIn: 86400
|
|
18
|
+
});
|
|
19
|
+
}
|
|
20
|
+
await devServer.register(app);
|
|
21
|
+
await app.listen({
|
|
22
|
+
host: '0.0.0.0',
|
|
23
|
+
port: +(monorepo.root.packageJson.config?.port ?? 9000)
|
|
24
|
+
});
|
|
25
|
+
console.log('listen:\n', app.addresses().map((x)=>`\t${x.address}:${x.port}`).join('\n'));
|
|
26
|
+
return app;
|
|
27
|
+
}
|
|
28
|
+
function streamToBuffer(readableStream) {
|
|
29
|
+
return new Promise((resolve, reject)=>{
|
|
30
|
+
const chunks = [];
|
|
31
|
+
readableStream.on('data', (chunk)=>chunks.push(chunk));
|
|
32
|
+
readableStream.on('end', ()=>resolve(Buffer.concat(chunks)));
|
|
33
|
+
readableStream.on('error', reject);
|
|
34
|
+
});
|
|
35
|
+
}
|
|
36
|
+
|
|
37
|
+
//# sourceMappingURL=dev.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"sources":["/mnt/dev/cmmn/tools/commands/dev.ts"],"names":["fastify","fastifyCaching","fastifyCompress","Monorepo","DevServer","dev","flags","deploy","monorepo","load","devServer","app","rewriteUrl","minify","register","privacy","PUBLIC","expiresIn","listen","host","port","root","packageJson","config","console","log","addresses","map","x","address","join","streamToBuffer","readableStream","Promise","resolve","reject","chunks","on","chunk","push","Buffer","concat"],"mappings":"AAAA,SAAQA,OAAO,QAAO,UAAU;AAChC,SAAQC,cAAc,QAAO,mBAAmB;AAEhD,SAAQC,eAAe,QAAO,iCAA8B;AAC5D,SAAQC,QAAQ,QAAO,uBAAoB;AAC3C,SAAQC,SAAS,QAAO,2BAAwB;AAGhD,OAAO,eAAeC,IAAIC,KAAY;IAClCA,MAAMC,MAAM,GAAG;IACf,MAAMC,WAAW,MAAML,SAASM,IAAI,CAACH;IACrC,MAAMI,YAAY,IAAIN,UAAUI;IAEhC,MAAMG,MAAWX,QAAQ;QACrBY,YAAYF,UAAUE,UAAU;IACpC;IAEA,IAAIN,MAAMO,MAAM,EAAC;QACbX,gBAAgBS;QAChBA,IAAIG,QAAQ,CAACb,gBAAuB;YAChCc,SAASd,eAAec,OAAO,CAACC,MAAM;YACtCC,WAAW;QACf;IACJ;IAEA,MAAMP,UAAUI,QAAQ,CAACH;IAEzB,MAAMA,IAAIO,MAAM,CAAC;QACbC,MAAM;QACNC,MAAM,CAAEZ,CAAAA,SAASa,IAAI,CAACC,WAAW,CAACC,MAAM,EAAEH,QAAQ,IAAG;IACzD;IAEAI,QAAQC,GAAG,CAAC,aAAad,IAAIe,SAAS,GAAGC,GAAG,CAACC,CAAAA,IAAK,CAAC,EAAE,EAAEA,EAAEC,OAAO,CAAC,CAAC,EAAED,EAAER,IAAI,EAAE,EAAEU,IAAI,CAAC;IAEnF,OAAOnB;AAEX;AACA,SAASoB,eAAeC,cAAc;IAClC,OAAO,IAAIC,QAAQ,CAACC,SAASC;QACzB,MAAMC,SAAS,EAAE;QACjBJ,eAAeK,EAAE,CAAC,QAAQ,CAACC,QAAUF,OAAOG,IAAI,CAACD;QACjDN,eAAeK,EAAE,CAAC,OAAO,IAAMH,QAAQM,OAAOC,MAAM,CAACL;QACrDJ,eAAeK,EAAE,CAAC,SAASF;IAC/B;AACJ"}
|
|
@@ -0,0 +1,44 @@
|
|
|
1
|
+
import { Target } from "../model/target.js";
|
|
2
|
+
import { spawn } from "node:child_process";
|
|
3
|
+
import { stat, link, rm } from "node:fs/promises";
|
|
4
|
+
import { join, resolve } from "node:path";
|
|
5
|
+
const rootDir = process.cwd();
|
|
6
|
+
/**
|
|
7
|
+
* @param flags
|
|
8
|
+
* @returns {Promise<import('@swc/types').Config>}
|
|
9
|
+
*/ export async function format(...flags) {
|
|
10
|
+
const promises = [];
|
|
11
|
+
for (const target of (await Target.readTargets(rootDir, flags))){
|
|
12
|
+
if (target.tsConfig.include?.length === 0) continue;
|
|
13
|
+
const json = join(target.rootDir, 'biome.json');
|
|
14
|
+
let linked = false;
|
|
15
|
+
if (!await stat(json).catch(()=>false)) {
|
|
16
|
+
await link(resolve(import.meta.dirname, '../biome.json'), json);
|
|
17
|
+
linked = true;
|
|
18
|
+
}
|
|
19
|
+
const biome = spawn("npx", [
|
|
20
|
+
'@biomejs/biome',
|
|
21
|
+
'format',
|
|
22
|
+
'--write'
|
|
23
|
+
], {
|
|
24
|
+
cwd: target.rootDir
|
|
25
|
+
});
|
|
26
|
+
biome.stdout.on('data', (data)=>{
|
|
27
|
+
console.log(`${target.packageJson.name}: ${data}`);
|
|
28
|
+
});
|
|
29
|
+
biome.stderr.on('data', (data)=>{
|
|
30
|
+
console.error(`${target.packageJson.name}: ${data}`);
|
|
31
|
+
});
|
|
32
|
+
promises.push(new Promise((res)=>biome.on('close', async ()=>{
|
|
33
|
+
if (linked) {
|
|
34
|
+
await rm(json, {
|
|
35
|
+
force: true
|
|
36
|
+
});
|
|
37
|
+
}
|
|
38
|
+
res();
|
|
39
|
+
})));
|
|
40
|
+
}
|
|
41
|
+
await Promise.all(promises);
|
|
42
|
+
}
|
|
43
|
+
|
|
44
|
+
//# sourceMappingURL=format.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"sources":["/mnt/dev/cmmn/tools/commands/format.js"],"names":["Target","spawn","stat","link","rm","join","resolve","rootDir","process","cwd","format","flags","promises","target","readTargets","tsConfig","include","length","json","linked","catch","dirname","biome","stdout","on","data","console","log","packageJson","name","stderr","error","push","Promise","res","force","all"],"mappings":"AAAA,SAAQA,MAAM,QAAO,qBAAqB;AAC1C,SAAQC,KAAK,QAAO,qBAAqB;AACzC,SAAQC,IAAI,EAAEC,IAAI,EAAEC,EAAE,QAAO,mBAAmB;AAChD,SAAQC,IAAI,EAAEC,OAAO,QAAO,YAAY;AAExC,MAAMC,UAAUC,QAAQC,GAAG;AAE3B;;;CAGC,GACD,OAAO,eAAeC,OAAO,GAAGC,KAAK;IACjC,MAAMC,WAAW,EAAE;IACnB,KAAK,MAAMC,UAAU,CAAA,MAAMb,OAAOc,WAAW,CAACP,SAASI,MAAK,EAAG;QAC3D,IAAIE,OAAOE,QAAQ,CAACC,OAAO,EAAEC,WAAW,GACpC;QACJ,MAAMC,OAAOb,KAAKQ,OAAON,OAAO,EAAE;QAClC,IAAIY,SAAS;QACb,IAAI,CAAC,MAAMjB,KAAKgB,MAAME,KAAK,CAAC,IAAM,QAAO;YACrC,MAAMjB,KAAKG,QAAQ,YAAYe,OAAO,EAAE,kBAAkBH;YAC1DC,SAAS;QACb;QACA,MAAMG,QAAQrB,MAAM,OAAO;YAAC;YAAkB;YAAU;SAAU,EAAC;YAC/DQ,KAAKI,OAAON,OAAO;QACvB;QACAe,MAAMC,MAAM,CAACC,EAAE,CAAC,QAAQC,CAAAA;YACpBC,QAAQC,GAAG,CAAC,GAAGd,OAAOe,WAAW,CAACC,IAAI,CAAC,EAAE,EAAEJ,MAAM;QACrD;QACAH,MAAMQ,MAAM,CAACN,EAAE,CAAC,QAAQC,CAAAA;YACpBC,QAAQK,KAAK,CAAC,GAAGlB,OAAOe,WAAW,CAACC,IAAI,CAAC,EAAE,EAAEJ,MAAM;QACvD;QACAb,SAASoB,IAAI,CAAC,IAAIC,QAAQC,CAAAA,MAAOZ,MAAME,EAAE,CAAC,SAAS;gBAC/C,IAAIL,QAAO;oBACP,MAAMf,GAAGc,MAAM;wBAACiB,OAAO;oBAAI;gBAC/B;gBACAD;YACJ;IACJ;IACA,MAAMD,QAAQG,GAAG,CAACxB;AACtB"}
|
|
@@ -0,0 +1,36 @@
|
|
|
1
|
+
import fs from "node:fs/promises";
|
|
2
|
+
import path from "path";
|
|
3
|
+
import { execSync } from "child_process";
|
|
4
|
+
async function readFiles() {
|
|
5
|
+
return Promise.all([
|
|
6
|
+
fs.readFile(path.join(import.meta.dirname, './gen/template.ts.tpl'), {
|
|
7
|
+
encoding: 'utf8'
|
|
8
|
+
}),
|
|
9
|
+
fs.readFile(path.join(import.meta.dirname, './gen/component.tsx.tpl'), {
|
|
10
|
+
encoding: 'utf8'
|
|
11
|
+
}),
|
|
12
|
+
fs.readFile(path.join(import.meta.dirname, './gen/style.less.tpl'), {
|
|
13
|
+
encoding: 'utf8'
|
|
14
|
+
})
|
|
15
|
+
]);
|
|
16
|
+
}
|
|
17
|
+
export async function gen(name, directory, nested = false) {
|
|
18
|
+
const Name = name.replace(/^./, (c)=>c.toUpperCase());
|
|
19
|
+
name = Name.replace(/[A-Z]/g, (c, i)=>(i ? '-' : '') + c.toLowerCase());
|
|
20
|
+
process.chdir(directory);
|
|
21
|
+
if (nested) {
|
|
22
|
+
await fs.mkdir(name);
|
|
23
|
+
process.chdir(name);
|
|
24
|
+
}
|
|
25
|
+
const [templateTpl, componentTpl, styleTpl] = await readFiles();
|
|
26
|
+
await Promise.all([
|
|
27
|
+
fs.writeFile(name + '.component.tsx', componentTpl.replace(/\$Name\$/g, Name).replace(/\$name\$/g, name), 'utf8'),
|
|
28
|
+
fs.writeFile(name + '.template.ts', templateTpl.replace(/\$Name\$/g, Name).replace(/\$name\$/g, name), 'utf8'),
|
|
29
|
+
fs.writeFile(name + '.style.less', styleTpl.replace(/\$Name\$/g, Name).replace(/\$name\$/g, name), 'utf8')
|
|
30
|
+
]);
|
|
31
|
+
execSync(`git add ${name}.component.ts`);
|
|
32
|
+
execSync(`git add ${name}.template.ts`);
|
|
33
|
+
execSync(`git add ${name}.style.css`);
|
|
34
|
+
}
|
|
35
|
+
|
|
36
|
+
//# sourceMappingURL=gen.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"sources":["/mnt/dev/cmmn/tools/commands/gen.js"],"names":["fs","path","execSync","readFiles","Promise","all","readFile","join","dirname","encoding","gen","name","directory","nested","Name","replace","c","toUpperCase","i","toLowerCase","process","chdir","mkdir","templateTpl","componentTpl","styleTpl","writeFile"],"mappings":"AAAA,OAAOA,QAAQ,mBAAc;AAC7B,OAAOC,UAAU,OAAO;AACxB,SAAQC,QAAQ,QAAO,gBAAgB;AAEvC,eAAeC;IACX,OAAOC,QAAQC,GAAG,CAAC;QACfL,GAAGM,QAAQ,CAACL,KAAKM,IAAI,CAAC,YAAYC,OAAO,EAAE,0BAA0B;YAACC,UAAU;QAAM;QACtFT,GAAGM,QAAQ,CAACL,KAAKM,IAAI,CAAC,YAAYC,OAAO,EAAE,4BAA4B;YAACC,UAAU;QAAM;QACxFT,GAAGM,QAAQ,CAACL,KAAKM,IAAI,CAAC,YAAYC,OAAO,EAAE,yBAAyB;YAACC,UAAU;QAAM;KACxF;AACL;AAGA,OAAO,eAAeC,IAAIC,IAAI,EAAEC,SAAS,EAAEC,SAAS,KAAK;IACrD,MAAMC,OAAOH,KAAKI,OAAO,CAAC,MAAMC,CAAAA,IAAKA,EAAEC,WAAW;IAClDN,OAAOG,KAAKC,OAAO,CAAC,UAAU,CAACC,GAAGE,IAAM,AAACA,CAAAA,IAAI,MAAM,EAAC,IAAKF,EAAEG,WAAW;IACtEC,QAAQC,KAAK,CAACT;IACd,IAAIC,QAAQ;QACR,MAAMb,GAAGsB,KAAK,CAACX;QACfS,QAAQC,KAAK,CAACV;IAClB;IACA,MAAM,CAACY,aAAaC,cAAcC,SAAS,GAAG,MAAMtB;IACpD,MAAMC,QAAQC,GAAG,CAAC;QACdL,GAAG0B,SAAS,CAACf,OAAO,kBAAkBa,aAAaT,OAAO,CAAC,aAAaD,MAAMC,OAAO,CAAC,aAAaJ,OAAO;QAC1GX,GAAG0B,SAAS,CAACf,OAAO,gBAAgBY,YAAYR,OAAO,CAAC,aAAaD,MAAMC,OAAO,CAAC,aAAaJ,OAAO;QACvGX,GAAG0B,SAAS,CAACf,OAAO,eAAec,SAASV,OAAO,CAAC,aAAaD,MAAMC,OAAO,CAAC,aAAaJ,OAAO;KACtG;IACDT,SAAS,CAAC,QAAQ,EAAES,KAAK,aAAa,CAAC;IACvCT,SAAS,CAAC,QAAQ,EAAES,KAAK,YAAY,CAAC;IACtCT,SAAS,CAAC,QAAQ,EAAES,KAAK,UAAU,CAAC;AACxC"}
|
|
@@ -0,0 +1,21 @@
|
|
|
1
|
+
import { Target } from "../model/target.js";
|
|
2
|
+
import fs from "node:fs/promises";
|
|
3
|
+
export async function host(...flags) {
|
|
4
|
+
const targets = await Target.readTargets(process.cwd(), flags);
|
|
5
|
+
const content = await fs.readFile('/etc/hosts', {
|
|
6
|
+
encoding: 'utf-8'
|
|
7
|
+
});
|
|
8
|
+
let lines = [];
|
|
9
|
+
for (let target of targets){
|
|
10
|
+
const host = target.packageJson.config?.host;
|
|
11
|
+
if (!host) continue;
|
|
12
|
+
const line = `127.0.0.1 ${host}`;
|
|
13
|
+
if (!content.includes(line)) lines.push(line);
|
|
14
|
+
}
|
|
15
|
+
if (lines.length) {
|
|
16
|
+
if (content.substring(content.lastIndexOf('\n')).trim().length) console.log();
|
|
17
|
+
console.log(lines.join('\n'));
|
|
18
|
+
}
|
|
19
|
+
}
|
|
20
|
+
|
|
21
|
+
//# sourceMappingURL=host.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"sources":["/mnt/dev/cmmn/tools/commands/host.js"],"names":["Target","fs","host","flags","targets","readTargets","process","cwd","content","readFile","encoding","lines","target","packageJson","config","line","includes","push","length","substring","lastIndexOf","trim","console","log","join"],"mappings":"AAAA,SAAQA,MAAM,QAAO,qBAAqB;AAC1C,OAAOC,QAAQ,mBAAmB;AAElC,OAAO,eAAeC,KAAK,GAAGC,KAAK;IAC/B,MAAMC,UAAU,MAAMJ,OAAOK,WAAW,CAACC,QAAQC,GAAG,IAAIJ;IACxD,MAAMK,UAAU,MAAMP,GAAGQ,QAAQ,CAAC,cAAc;QAACC,UAAU;IAAO;IAClE,IAAIC,QAAQ,EAAE;IACd,KAAK,IAAIC,UAAUR,QAAS;QACxB,MAAMF,OAAOU,OAAOC,WAAW,CAACC,MAAM,EAAEZ;QACxC,IAAI,CAACA,MAAM;QACX,MAAMa,OAAO,CAAC,UAAU,EAAEb,MAAM;QAChC,IAAI,CAACM,QAAQQ,QAAQ,CAACD,OAClBJ,MAAMM,IAAI,CAACF;IACnB;IACA,IAAIJ,MAAMO,MAAM,EAAE;QACd,IAAIV,QAAQW,SAAS,CAACX,QAAQY,WAAW,CAAC,OAAOC,IAAI,GAAGH,MAAM,EAAEI,QAAQC,GAAG;QAC3ED,QAAQC,GAAG,CAACZ,MAAMa,IAAI,CAAC;IAC3B;AACJ"}
|
|
@@ -0,0 +1,12 @@
|
|
|
1
|
+
export { compile } from "./compile.ts";
|
|
2
|
+
export { typings } from "./typings.ts";
|
|
3
|
+
export { gen } from "./gen.js";
|
|
4
|
+
export { bundle } from "./bundle.ts";
|
|
5
|
+
export { dev } from "./dev.ts";
|
|
6
|
+
export { publish } from "./publish.ts";
|
|
7
|
+
export { format } from "./format.js";
|
|
8
|
+
export { lint } from "./lint.js";
|
|
9
|
+
export { version } from "./version.js";
|
|
10
|
+
export { host } from "./host.js";
|
|
11
|
+
|
|
12
|
+
//# sourceMappingURL=index.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"sources":["/mnt/dev/cmmn/tools/commands/index.js"],"names":["compile","typings","gen","bundle","dev","publish","format","lint","version","host"],"mappings":"AAAA,SAAQA,OAAO,QAAO,eAAe;AACrC,SAAQC,OAAO,QAAO,eAAe;AACrC,SAAQC,GAAG,QAAO,WAAW;AAC7B,SAAQC,MAAM,QAAO,cAAc;AACnC,SAAQC,GAAG,QAAO,WAAW;AAC7B,SAAQC,OAAO,QAAO,eAAe;AACrC,SAAQC,MAAM,QAAO,cAAc;AACnC,SAAQC,IAAI,QAAO,YAAY;AAC/B,SAAQC,OAAO,QAAO,eAAe;AACrC,SAAQC,IAAI,QAAO,YAAY"}
|
|
@@ -0,0 +1,45 @@
|
|
|
1
|
+
import { Target } from "../model/target.js";
|
|
2
|
+
import { spawn } from "node:child_process";
|
|
3
|
+
import { stat, link, rm } from "node:fs/promises";
|
|
4
|
+
import { join, resolve } from "node:path";
|
|
5
|
+
const rootDir = process.cwd();
|
|
6
|
+
/**
|
|
7
|
+
* @param flags {import("../model/flags.ts").Flags}
|
|
8
|
+
* @returns {Promise<import('@swc/types').Config>}
|
|
9
|
+
*/ export async function lint(flags) {
|
|
10
|
+
const promises = [];
|
|
11
|
+
for (const target of (await Target.readTargets(rootDir, flags))){
|
|
12
|
+
if (target.tsConfig.include?.length === 0) continue;
|
|
13
|
+
const json = join(target.rootDir, 'biome.json');
|
|
14
|
+
let linked = false;
|
|
15
|
+
if (!await stat(json).catch(()=>false)) {
|
|
16
|
+
await link(resolve(import.meta.dirname, '../biome.json'), json);
|
|
17
|
+
linked = true;
|
|
18
|
+
}
|
|
19
|
+
const biome = spawn("npx", [
|
|
20
|
+
'@biomejs/biome',
|
|
21
|
+
'lint',
|
|
22
|
+
'--write',
|
|
23
|
+
flags.unsafe ? '--unsafe' : ''
|
|
24
|
+
], {
|
|
25
|
+
cwd: target.rootDir
|
|
26
|
+
});
|
|
27
|
+
biome.stdout.on('data', (data)=>{
|
|
28
|
+
console.log(`${target.packageJson.name}: ${data}`);
|
|
29
|
+
});
|
|
30
|
+
biome.stderr.on('data', (data)=>{
|
|
31
|
+
console.error(data.toString());
|
|
32
|
+
});
|
|
33
|
+
promises.push(new Promise((res)=>biome.on('close', async ()=>{
|
|
34
|
+
if (linked) {
|
|
35
|
+
await rm(json, {
|
|
36
|
+
force: true
|
|
37
|
+
});
|
|
38
|
+
}
|
|
39
|
+
res();
|
|
40
|
+
})));
|
|
41
|
+
}
|
|
42
|
+
await Promise.all(promises);
|
|
43
|
+
}
|
|
44
|
+
|
|
45
|
+
//# sourceMappingURL=lint.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"sources":["/mnt/dev/cmmn/tools/commands/lint.js"],"names":["Target","spawn","stat","link","rm","join","resolve","rootDir","process","cwd","lint","flags","promises","target","readTargets","tsConfig","include","length","json","linked","catch","dirname","biome","unsafe","stdout","on","data","console","log","packageJson","name","stderr","error","toString","push","Promise","res","force","all"],"mappings":"AAAA,SAAQA,MAAM,QAAO,qBAAqB;AAC1C,SAAQC,KAAK,QAAO,qBAAqB;AACzC,SAAQC,IAAI,EAAEC,IAAI,EAAEC,EAAE,QAAO,mBAAmB;AAChD,SAAQC,IAAI,EAAEC,OAAO,QAAO,YAAY;AAExC,MAAMC,UAAUC,QAAQC,GAAG;AAE3B;;;CAGC,GACD,OAAO,eAAeC,KAAKC,KAAK;IAC5B,MAAMC,WAAW,EAAE;IACnB,KAAK,MAAMC,UAAU,CAAA,MAAMb,OAAOc,WAAW,CAACP,SAASI,MAAK,EAAG;QAC3D,IAAIE,OAAOE,QAAQ,CAACC,OAAO,EAAEC,WAAW,GACpC;QACJ,MAAMC,OAAOb,KAAKQ,OAAON,OAAO,EAAE;QAClC,IAAIY,SAAS;QACb,IAAI,CAAC,MAAMjB,KAAKgB,MAAME,KAAK,CAAC,IAAM,QAAO;YACrC,MAAMjB,KAAKG,QAAQ,YAAYe,OAAO,EAAE,kBAAkBH;YAC1DC,SAAS;QACb;QACA,MAAMG,QAAQrB,MAAM,OAAO;YAAC;YAAkB;YAAQ;YAAWU,MAAMY,MAAM,GAAG,aAAa;SAAG,EAAC;YAC7Fd,KAAKI,OAAON,OAAO;QACvB;QACAe,MAAME,MAAM,CAACC,EAAE,CAAC,QAAQC,CAAAA;YACpBC,QAAQC,GAAG,CAAC,GAAGf,OAAOgB,WAAW,CAACC,IAAI,CAAC,EAAE,EAAEJ,MAAM;QACrD;QACAJ,MAAMS,MAAM,CAACN,EAAE,CAAC,QAAQC,CAAAA;YACpBC,QAAQK,KAAK,CAACN,KAAKO,QAAQ;QAC/B;QACArB,SAASsB,IAAI,CAAC,IAAIC,QAAQC,CAAAA,MAAOd,MAAMG,EAAE,CAAC,SAAS;gBAC/C,IAAIN,QAAO;oBACP,MAAMf,GAAGc,MAAM;wBAACmB,OAAO;oBAAI;gBAC/B;gBACAD;YACJ;IACJ;IACA,MAAMD,QAAQG,GAAG,CAAC1B;AACtB"}
|
|
@@ -0,0 +1,62 @@
|
|
|
1
|
+
import { Target } from "../model/target.js";
|
|
2
|
+
import fs from "node:fs/promises";
|
|
3
|
+
import { join } from "node:path";
|
|
4
|
+
import { spawn } from "node:child_process";
|
|
5
|
+
/**
|
|
6
|
+
* @param flags {import("../model/flags.ts").Flags}
|
|
7
|
+
* @returns {Promise<void>}
|
|
8
|
+
*/ export async function nginx(flags) {
|
|
9
|
+
const targets = await Target.readTargets(process.cwd(), flags);
|
|
10
|
+
const outDir = flags.get('out') ?? '/etc/nginx/conf.d';
|
|
11
|
+
const proxy = flags.get('proxy') ?? '127.0.0.1';
|
|
12
|
+
for (let target of targets){
|
|
13
|
+
const host = target.packageJson.config?.host;
|
|
14
|
+
if (!host) continue;
|
|
15
|
+
const confFile = join(outDir, `${host}.conf`);
|
|
16
|
+
// if (await fs.stat(confFile).catch(() => null))
|
|
17
|
+
// continue;
|
|
18
|
+
const content = nginxTemplate('/_/' + target.packageJson.name, host, target.packageJson.config?.port ?? 9000, proxy);
|
|
19
|
+
await fs.writeFile(confFile, content);
|
|
20
|
+
const cert = join(outDir, `${host}.pem`);
|
|
21
|
+
const key = join(outDir, `${host}-key.pem`);
|
|
22
|
+
await spawn('mkcert', [
|
|
23
|
+
`-cert-file`,
|
|
24
|
+
cert,
|
|
25
|
+
`-key-file`,
|
|
26
|
+
key,
|
|
27
|
+
`${host}`
|
|
28
|
+
], {
|
|
29
|
+
stdio: 'inherit'
|
|
30
|
+
});
|
|
31
|
+
}
|
|
32
|
+
}
|
|
33
|
+
export const nginxTemplate = (path, host, port, proxy)=>`
|
|
34
|
+
map $http_upgrade $connection_upgrade {
|
|
35
|
+
default upgrade;
|
|
36
|
+
'' close;
|
|
37
|
+
}
|
|
38
|
+
|
|
39
|
+
server {
|
|
40
|
+
listen 443 ssl http2;
|
|
41
|
+
ssl_certificate default/${host}.pem;
|
|
42
|
+
ssl_certificate_key default/${host}-key.pem;
|
|
43
|
+
server_name ${host};
|
|
44
|
+
location /_ {
|
|
45
|
+
proxy_set_header Host $host;
|
|
46
|
+
proxy_set_header X-Forwarded-For $remote_addr;
|
|
47
|
+
proxy_pass http://${proxy}:${port};
|
|
48
|
+
proxy_set_header Upgrade $http_upgrade;
|
|
49
|
+
proxy_set_header Connection "upgrade";
|
|
50
|
+
}
|
|
51
|
+
location / {
|
|
52
|
+
rewrite ^(.*) ${path}$1 break;
|
|
53
|
+
proxy_set_header Host $host;
|
|
54
|
+
proxy_set_header X-Forwarded-For $remote_addr;
|
|
55
|
+
proxy_pass http://${proxy}:${port};
|
|
56
|
+
proxy_set_header Upgrade $http_upgrade;
|
|
57
|
+
proxy_set_header Connection "upgrade";
|
|
58
|
+
}
|
|
59
|
+
}
|
|
60
|
+
`;
|
|
61
|
+
|
|
62
|
+
//# sourceMappingURL=nginx.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"sources":["/mnt/dev/cmmn/tools/commands/nginx.js"],"names":["Target","fs","join","spawn","nginx","flags","targets","readTargets","process","cwd","outDir","get","proxy","target","host","packageJson","config","confFile","content","nginxTemplate","name","port","writeFile","cert","key","stdio","path"],"mappings":"AAAA,SAAQA,MAAM,QAAO,qBAAqB;AAC1C,OAAOC,QAAQ,mBAAmB;AAClC,SAAQC,IAAI,QAAO,YAAY;AAC/B,SAAcC,KAAK,QAAO,qBAAqB;AAE/C;;;CAGC,GACD,OAAO,eAAeC,MAAMC,KAAK;IAC7B,MAAMC,UAAU,MAAMN,OAAOO,WAAW,CAACC,QAAQC,GAAG,IAAIJ;IACxD,MAAMK,SAASL,MAAMM,GAAG,CAAC,UAAU;IACnC,MAAMC,QAAQP,MAAMM,GAAG,CAAC,YAAY;IACpC,KAAK,IAAIE,UAAUP,QAAS;QACxB,MAAMQ,OAAOD,OAAOE,WAAW,CAACC,MAAM,EAAEF;QACxC,IAAI,CAACA,MAAM;QACX,MAAMG,WAAWf,KAAKQ,QAAQ,GAAGI,KAAK,KAAK,CAAC;QAC5C,iDAAiD;QACjD,gBAAgB;QAChB,MAAMI,UAAUC,cAAc,QAAMN,OAAOE,WAAW,CAACK,IAAI,EAAEN,MAAMD,OAAOE,WAAW,CAACC,MAAM,EAAEK,QAAQ,MAAMT;QAC5G,MAAMX,GAAGqB,SAAS,CAACL,UAAUC;QAC7B,MAAMK,OAAOrB,KAAKQ,QAAQ,GAAGI,KAAK,IAAI,CAAC;QACvC,MAAMU,MAAMtB,KAAKQ,QAAQ,GAAGI,KAAK,QAAQ,CAAC;QAC1C,MAAMX,MAAM,UAAU;YAClB,CAAC,UAAU,CAAC;YAAEoB;YACd,CAAC,SAAS,CAAC;YAAEC;YACb,GAAGV,MAAM;SACZ,EAAE;YACCW,OAAO;QACX;IACJ;AACJ;AAEA,OAAO,MAAMN,gBAAgB,CAACO,MAAMZ,MAAMO,MAAMT,QAAU,CAAC;;;;;;;;oCAQvB,EAAEE,KAAK;oCACP,EAAEA,KAAK;oBACvB,EAAEA,KAAK;;;;8BAIG,EAAEF,MAAM,CAAC,EAAES,KAAK;;;;;0BAKpB,EAAEK,KAAK;;;8BAGH,EAAEd,MAAM,CAAC,EAAES,KAAK;;;;;AAK9C,CAAC,CAAC"}
|
|
@@ -0,0 +1,37 @@
|
|
|
1
|
+
import { spawn } from "node:child_process";
|
|
2
|
+
import fs from "node:fs/promises";
|
|
3
|
+
import { join } from "node:path";
|
|
4
|
+
import { Monorepo } from "../model/monorepo.js";
|
|
5
|
+
export async function publish(flags) {
|
|
6
|
+
const monorepo = await Monorepo.load(flags);
|
|
7
|
+
for (const target of monorepo.targets){
|
|
8
|
+
if (target.packageJson.private) continue;
|
|
9
|
+
const content = await target.getPublishPackageJson();
|
|
10
|
+
if (target.tsConfig) {
|
|
11
|
+
await fs.rename(join(target.rootDir, './package.json'), join(target.rootDir, './.package.json'));
|
|
12
|
+
await fs.writeFile(join(target.rootDir, 'package.json'), content, 'utf-8');
|
|
13
|
+
}
|
|
14
|
+
const cp = await spawn("corepack", "yarn npm publish".split(' '), {
|
|
15
|
+
cwd: target.rootDir,
|
|
16
|
+
stdio: "pipe",
|
|
17
|
+
detached: true
|
|
18
|
+
});
|
|
19
|
+
let error = false;
|
|
20
|
+
cp.stdout.on('data', (data)=>{
|
|
21
|
+
const str = data.toString();
|
|
22
|
+
if (str.startsWith('➤ YN0000:')) return;
|
|
23
|
+
target.error(data);
|
|
24
|
+
error = true;
|
|
25
|
+
});
|
|
26
|
+
await new Promise((r)=>cp.stdout.on('close', r));
|
|
27
|
+
if (!error) {
|
|
28
|
+
target.log(`published`);
|
|
29
|
+
}
|
|
30
|
+
if (target.tsConfig) {
|
|
31
|
+
await fs.rm(join(target.rootDir, './package.json'));
|
|
32
|
+
await fs.rename(join(target.rootDir, './.package.json'), join(target.rootDir, './package.json'));
|
|
33
|
+
}
|
|
34
|
+
}
|
|
35
|
+
}
|
|
36
|
+
|
|
37
|
+
//# sourceMappingURL=publish.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"sources":["/mnt/dev/cmmn/tools/commands/publish.ts"],"names":["spawn","fs","join","Monorepo","publish","flags","monorepo","load","target","targets","packageJson","private","content","getPublishPackageJson","tsConfig","rename","rootDir","writeFile","cp","split","cwd","stdio","detached","error","stdout","on","data","str","toString","startsWith","Promise","r","log","rm"],"mappings":"AAAA,SAAkBA,KAAK,QAAO,qBAAqB;AAGnD,OAAOC,QAAQ,mBAAmB;AAClC,SAAQC,IAAI,QAAgB,YAAY;AAGxC,SAAQC,QAAQ,QAAO,uBAAoB;AAE3C,OAAO,eAAeC,QAAQC,KAAY;IACtC,MAAMC,WAAW,MAAMH,SAASI,IAAI,CAACF;IACrC,KAAK,MAAMG,UAAUF,SAASG,OAAO,CAAE;QACnC,IAAID,OAAOE,WAAW,CAACC,OAAO,EAC1B;QACJ,MAAMC,UAAU,MAAMJ,OAAOK,qBAAqB;QAClD,IAAIL,OAAOM,QAAQ,EAAE;YACjB,MAAMb,GAAGc,MAAM,CACXb,KAAKM,OAAOQ,OAAO,EAAE,mBACrBd,KAAKM,OAAOQ,OAAO,EAAE;YAGzB,MAAMf,GAAGgB,SAAS,CACdf,KAAKM,OAAOQ,OAAO,EAAE,iBACrBJ,SACA;QAER;QACA,MAAMM,KAAK,MAAMlB,MAAM,YAAY,mBAAmBmB,KAAK,CAAC,MAAM;YAC9DC,KAAKZ,OAAOQ,OAAO;YACnBK,OAAO;YACPC,UAAU;QACd;QACA,IAAIC,QAAQ;QACZL,GAAGM,MAAM,CAACC,EAAE,CAAC,QAAQC,CAAAA;YACjB,MAAMC,MAAMD,KAAKE,QAAQ;YACzB,IAAID,IAAIE,UAAU,CAAC,cAAc;YACjCrB,OAAOe,KAAK,CAACG;YACbH,QAAQ;QACZ;QACA,MAAM,IAAIO,QAAQC,CAAAA,IAAKb,GAAGM,MAAM,CAACC,EAAE,CAAC,SAASM;QAC7C,IAAI,CAACR,OAAO;YACRf,OAAOwB,GAAG,CAAC,CAAC,SAAS,CAAC;QAC1B;QACA,IAAIxB,OAAOM,QAAQ,EAAE;YACjB,MAAMb,GAAGgC,EAAE,CAAC/B,KAAKM,OAAOQ,OAAO,EAAE;YACjC,MAAMf,GAAGc,MAAM,CACXb,KAAKM,OAAOQ,OAAO,EAAE,oBACrBd,KAAKM,OAAOQ,OAAO,EAAE;QAE7B;IACJ;AACJ"}
|
|
@@ -0,0 +1,66 @@
|
|
|
1
|
+
import ts from "typescript";
|
|
2
|
+
import { resolve } from "node:path";
|
|
3
|
+
import fs from "node:fs";
|
|
4
|
+
import events from "node:events";
|
|
5
|
+
import { Watcher } from "../helpers/watcher.js";
|
|
6
|
+
import { Monorepo } from "../model/monorepo.js";
|
|
7
|
+
export async function typings(flags) {
|
|
8
|
+
const monorepo = await Monorepo.load(flags);
|
|
9
|
+
events.setMaxListeners(Math.max(monorepo.targets.length * 2, events.defaultMaxListeners));
|
|
10
|
+
const watcher = flags.watch ? new Watcher() : null;
|
|
11
|
+
for (const target of monorepo.targets){
|
|
12
|
+
if (target.tsConfig.include?.length === 0) continue;
|
|
13
|
+
generateTypings(target);
|
|
14
|
+
if (watcher) {
|
|
15
|
+
watcher.watchTarget(target);
|
|
16
|
+
target.addEventListener('change', (e)=>{
|
|
17
|
+
target.log(`changed: ^W${e.files.join(', ')}`);
|
|
18
|
+
generateTypings(target);
|
|
19
|
+
});
|
|
20
|
+
}
|
|
21
|
+
}
|
|
22
|
+
}
|
|
23
|
+
export function generateTypings(target) {
|
|
24
|
+
const start = performance.now();
|
|
25
|
+
const host = ts.createSolutionBuilderWithWatchHost(ts.sys, createProgram);
|
|
26
|
+
host.useCaseSensitiveFileNames();
|
|
27
|
+
const builder = ts.createSolutionBuilder(host, [
|
|
28
|
+
target.rootDir
|
|
29
|
+
], {
|
|
30
|
+
incremental: false,
|
|
31
|
+
dry: false,
|
|
32
|
+
assumeChangesOnlyAffectDirectDependencies: true,
|
|
33
|
+
declaration: true,
|
|
34
|
+
declarationMap: false,
|
|
35
|
+
emitDeclarationOnly: true,
|
|
36
|
+
force: true
|
|
37
|
+
});
|
|
38
|
+
builder.clean(target.rootDir);
|
|
39
|
+
builder.build(target.rootDir, null);
|
|
40
|
+
const duration = performance.now() - start;
|
|
41
|
+
target.log(`typings for ^W${duration.toFixed()}ms.`);
|
|
42
|
+
}
|
|
43
|
+
const cleanedBaseDirs = new Set();
|
|
44
|
+
function createProgram(rootNames, options, host, oldProgram, configFileParsingDiagnostics, projectReferences) {
|
|
45
|
+
options.outDir = resolve(options.configFilePath, options.outDir ?? '../dist/esm');
|
|
46
|
+
options.declaration = true;
|
|
47
|
+
options.declarationDir = resolve(options.configFilePath, options.declarationDir ?? '../dist/typings');
|
|
48
|
+
options.baseUrl = resolve(options.configFilePath, options.baseUrl ?? '.');
|
|
49
|
+
options.tsBuildInfoFile = resolve(options.configFilePath, options.tsBuildInfoFile ?? '../dist/ts.buildinfo');
|
|
50
|
+
options.emitDeclarationsOnly = true;
|
|
51
|
+
// options.excludeDirectories.baseUrl = options.baseUrl;
|
|
52
|
+
// options.includeDirectories.baseUrl = options.baseUrl;
|
|
53
|
+
if (!cleanedBaseDirs.has(options.baseUrl)) {
|
|
54
|
+
fs.rmSync(options.declarationDir, {
|
|
55
|
+
recursive: true,
|
|
56
|
+
force: true
|
|
57
|
+
});
|
|
58
|
+
fs.rmSync(options.tsBuildInfoFile, {
|
|
59
|
+
force: true
|
|
60
|
+
});
|
|
61
|
+
cleanedBaseDirs.add(options.baseUrl);
|
|
62
|
+
}
|
|
63
|
+
return ts.createEmitAndSemanticDiagnosticsBuilderProgram(rootNames, options, host, oldProgram, configFileParsingDiagnostics, projectReferences);
|
|
64
|
+
}
|
|
65
|
+
|
|
66
|
+
//# sourceMappingURL=typings.js.map
|