@simplysm/sd-cli 12.5.20 → 12.5.22
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/dist/{build-tools → entry}/SdCliCordova.d.ts +5 -6
- package/dist/{build-tools → entry}/SdCliCordova.js +117 -99
- package/dist/entry/SdCliCordova.js.map +1 -0
- package/dist/entry/SdCliElectron.d.ts +2 -2
- package/dist/entry/SdCliElectron.js +50 -40
- package/dist/entry/SdCliElectron.js.map +1 -1
- package/dist/entry/SdCliLocalUpdate.d.ts +1 -2
- package/dist/entry/SdCliLocalUpdate.js +26 -27
- package/dist/entry/SdCliLocalUpdate.js.map +1 -1
- package/dist/entry/SdCliProject.d.ts +1 -5
- package/dist/entry/SdCliProject.js +62 -288
- package/dist/entry/SdCliProject.js.map +1 -1
- package/dist/index.d.ts +23 -17
- package/dist/index.js +23 -17
- package/dist/index.js.map +1 -1
- package/dist/pkg-builders/SdMultiBuildRunner.d.ts +21 -0
- package/dist/pkg-builders/SdMultiBuildRunner.js +174 -0
- package/dist/pkg-builders/SdMultiBuildRunner.js.map +1 -0
- package/dist/pkg-builders/client/SdCliNgRoutesFileGenerator.d.ts +4 -0
- package/dist/{build-tools → pkg-builders/client}/SdCliNgRoutesFileGenerator.js +7 -7
- package/dist/pkg-builders/client/SdCliNgRoutesFileGenerator.js.map +1 -0
- package/dist/pkg-builders/client/SdClientBuildRunner.d.ts +20 -0
- package/dist/pkg-builders/client/SdClientBuildRunner.js +135 -0
- package/dist/pkg-builders/client/SdClientBuildRunner.js.map +1 -0
- package/dist/pkg-builders/client/SdNgBundler.d.ts +29 -0
- package/dist/{build-tools → pkg-builders/client}/SdNgBundler.js +100 -95
- package/dist/pkg-builders/client/SdNgBundler.js.map +1 -0
- package/dist/{build-tools → pkg-builders/client}/SdNgBundlerContext.d.ts +1 -2
- package/dist/{build-tools → pkg-builders/client}/SdNgBundlerContext.js +19 -45
- package/dist/pkg-builders/client/SdNgBundlerContext.js.map +1 -0
- package/dist/pkg-builders/client/createSdNgPlugin.d.ts +10 -0
- package/dist/{bundle-plugins/sdNgPlugin.js → pkg-builders/client/createSdNgPlugin.js} +32 -33
- package/dist/pkg-builders/client/createSdNgPlugin.js.map +1 -0
- package/dist/pkg-builders/lib/SdCliIndexFileGenerator.d.ts +5 -0
- package/dist/{build-tools → pkg-builders/lib}/SdCliIndexFileGenerator.js +11 -11
- package/dist/pkg-builders/lib/SdCliIndexFileGenerator.js.map +1 -0
- package/dist/pkg-builders/lib/SdJsLibBuildRunner.d.ts +16 -0
- package/dist/pkg-builders/lib/SdJsLibBuildRunner.js +81 -0
- package/dist/pkg-builders/lib/SdJsLibBuildRunner.js.map +1 -0
- package/dist/pkg-builders/lib/SdTsLibBuildRunner.d.ts +13 -0
- package/dist/pkg-builders/lib/SdTsLibBuildRunner.js +89 -0
- package/dist/pkg-builders/lib/SdTsLibBuildRunner.js.map +1 -0
- package/dist/pkg-builders/lib/SdTsLibBuilder.d.ts +14 -0
- package/dist/pkg-builders/lib/SdTsLibBuilder.js +54 -0
- package/dist/pkg-builders/lib/SdTsLibBuilder.js.map +1 -0
- package/dist/pkg-builders/server/SdServerBuildRunner.d.ts +17 -0
- package/dist/{builders/SdCliServerBuilder.js → pkg-builders/server/SdServerBuildRunner.js} +48 -53
- package/dist/pkg-builders/server/SdServerBuildRunner.js.map +1 -0
- package/dist/pkg-builders/server/SdServerBundler.d.ts +19 -0
- package/dist/{build-tools → pkg-builders/server}/SdServerBundler.js +25 -30
- package/dist/pkg-builders/server/SdServerBundler.js.map +1 -0
- package/dist/pkg-builders/server/createSdServerPlugin.d.ts +10 -0
- package/dist/pkg-builders/server/createSdServerPlugin.js +53 -0
- package/dist/pkg-builders/server/createSdServerPlugin.js.map +1 -0
- package/dist/sd-cli.js +61 -54
- package/dist/sd-cli.js.map +1 -1
- package/dist/ts-builder/SdTsCompileWorker.d.ts +9 -0
- package/dist/ts-builder/SdTsCompileWorker.js +16 -0
- package/dist/ts-builder/SdTsCompileWorker.js.map +1 -0
- package/dist/ts-builder/SdTsCompiler.d.ts +7 -0
- package/dist/{build-tools → ts-builder}/SdTsCompiler.js +226 -212
- package/dist/ts-builder/SdTsCompiler.js.map +1 -0
- package/dist/types/build-plugin.type.d.ts +14 -0
- package/dist/types/build-plugin.type.js +2 -0
- package/dist/types/build-plugin.type.js.map +1 -0
- package/dist/types/build.type.d.ts +15 -0
- package/dist/types/build.type.js +2 -0
- package/dist/types/build.type.js.map +1 -0
- package/dist/types/common-configs.type.d.ts +22 -0
- package/dist/types/common-configs.type.js +2 -0
- package/dist/types/common-configs.type.js.map +1 -0
- package/dist/types/sd-configs.type.d.ts +99 -0
- package/dist/types/sd-configs.type.js +2 -0
- package/dist/types/sd-configs.type.js.map +1 -0
- package/dist/types/ts-compiler.type.d.ts +29 -0
- package/dist/types/ts-compiler.type.js +2 -0
- package/dist/types/ts-compiler.type.js.map +1 -0
- package/dist/types/workers.type.d.ts +49 -0
- package/dist/types/workers.type.js +2 -0
- package/dist/types/workers.type.js.map +1 -0
- package/dist/utils/SdCliConvertMessageUtil.d.ts +21 -0
- package/dist/utils/SdCliConvertMessageUtil.js +137 -0
- package/dist/utils/SdCliConvertMessageUtil.js.map +1 -0
- package/dist/workers/compile-worker.js +27 -0
- package/dist/workers/compile-worker.js.map +1 -0
- package/dist/workers/lint-worker.js +36 -0
- package/dist/workers/lint-worker.js.map +1 -0
- package/dist/workers/server-worker.d.ts +1 -0
- package/dist/workers/server-worker.js +49 -0
- package/dist/workers/server-worker.js.map +1 -0
- package/lib/dev-worker.cjs +5 -0
- package/package.json +7 -7
- package/src/entry/SdCliCordova.ts +363 -0
- package/src/entry/SdCliElectron.ts +96 -69
- package/src/entry/SdCliLocalUpdate.ts +43 -44
- package/src/entry/SdCliProject.ts +72 -417
- package/src/index.ts +23 -17
- package/src/pkg-builders/SdMultiBuildRunner.ts +250 -0
- package/src/{build-tools → pkg-builders/client}/SdCliNgRoutesFileGenerator.ts +7 -7
- package/src/pkg-builders/client/SdClientBuildRunner.ts +191 -0
- package/src/{build-tools → pkg-builders/client}/SdNgBundler.ts +125 -121
- package/src/pkg-builders/client/SdNgBundlerContext.ts +111 -0
- package/src/{bundle-plugins/sdNgPlugin.ts → pkg-builders/client/createSdNgPlugin.ts} +43 -46
- package/src/{build-tools → pkg-builders/lib}/SdCliIndexFileGenerator.ts +11 -11
- package/src/pkg-builders/lib/SdJsLibBuildRunner.ts +105 -0
- package/src/pkg-builders/lib/SdTsLibBuildRunner.ts +128 -0
- package/src/pkg-builders/lib/SdTsLibBuilder.ts +69 -0
- package/src/{builders/SdCliServerBuilder.ts → pkg-builders/server/SdServerBuildRunner.ts} +66 -78
- package/src/{build-tools → pkg-builders/server}/SdServerBundler.ts +40 -41
- package/src/pkg-builders/server/createSdServerPlugin.ts +77 -0
- package/src/sd-cli.ts +197 -211
- package/src/ts-builder/SdTsCompileWorker.ts +21 -0
- package/src/ts-builder/SdTsCompiler.ts +758 -0
- package/src/types/build-plugin.type.ts +16 -0
- package/src/types/build.type.ts +17 -0
- package/src/types/common-configs.type.ts +27 -0
- package/src/types/sd-configs.type.ts +114 -0
- package/src/types/ts-compiler.type.ts +29 -0
- package/src/types/workers.type.ts +27 -0
- package/src/utils/SdCliConvertMessageUtil.ts +177 -0
- package/src/workers/compile-worker.ts +31 -0
- package/src/workers/lint-worker.ts +44 -0
- package/src/workers/server-worker.ts +52 -0
- package/tsconfig.json +7 -1
- package/dist/build-cluster.js +0 -201
- package/dist/build-cluster.js.map +0 -1
- package/dist/build-tools/SdCliCordova.js.map +0 -1
- package/dist/build-tools/SdCliIndexFileGenerator.d.ts +0 -5
- package/dist/build-tools/SdCliIndexFileGenerator.js.map +0 -1
- package/dist/build-tools/SdCliNgRoutesFileGenerator.d.ts +0 -4
- package/dist/build-tools/SdCliNgRoutesFileGenerator.js.map +0 -1
- package/dist/build-tools/SdLinter.d.ts +0 -5
- package/dist/build-tools/SdLinter.js +0 -49
- package/dist/build-tools/SdLinter.js.map +0 -1
- package/dist/build-tools/SdNgBundler.d.ts +0 -29
- package/dist/build-tools/SdNgBundler.js.map +0 -1
- package/dist/build-tools/SdNgBundlerContext.js.map +0 -1
- package/dist/build-tools/SdServerBundler.d.ts +0 -20
- package/dist/build-tools/SdServerBundler.js.map +0 -1
- package/dist/build-tools/SdTsCompiler.d.ts +0 -34
- package/dist/build-tools/SdTsCompiler.js.map +0 -1
- package/dist/build-tools/SdTsLibBundler.d.ts +0 -13
- package/dist/build-tools/SdTsLibBundler.js +0 -58
- package/dist/build-tools/SdTsLibBundler.js.map +0 -1
- package/dist/builders/SdCliClientBuilder.d.ts +0 -18
- package/dist/builders/SdCliClientBuilder.js +0 -151
- package/dist/builders/SdCliClientBuilder.js.map +0 -1
- package/dist/builders/SdCliJsLibLinter.d.ts +0 -13
- package/dist/builders/SdCliJsLibLinter.js +0 -60
- package/dist/builders/SdCliJsLibLinter.js.map +0 -1
- package/dist/builders/SdCliServerBuilder.d.ts +0 -15
- package/dist/builders/SdCliServerBuilder.js.map +0 -1
- package/dist/builders/SdCliTsLibBuilder.d.ts +0 -12
- package/dist/builders/SdCliTsLibBuilder.js +0 -90
- package/dist/builders/SdCliTsLibBuilder.js.map +0 -1
- package/dist/bundle-plugins/sdNgPlugin.d.ts +0 -16
- package/dist/bundle-plugins/sdNgPlugin.js.map +0 -1
- package/dist/bundle-plugins/sdServerPlugin.d.ts +0 -16
- package/dist/bundle-plugins/sdServerPlugin.js +0 -63
- package/dist/bundle-plugins/sdServerPlugin.js.map +0 -1
- package/dist/commons.d.ts +0 -145
- package/dist/commons.js +0 -2
- package/dist/commons.js.map +0 -1
- package/dist/server-worker.js +0 -57
- package/dist/server-worker.js.map +0 -1
- package/dist/utils/SdCliBuildResultUtil.d.ts +0 -16
- package/dist/utils/SdCliBuildResultUtil.js +0 -54
- package/dist/utils/SdCliBuildResultUtil.js.map +0 -1
- package/src/build-cluster.ts +0 -212
- package/src/build-tools/SdCliCordova.ts +0 -340
- package/src/build-tools/SdLinter.ts +0 -65
- package/src/build-tools/SdNgBundlerContext.ts +0 -137
- package/src/build-tools/SdTsCompiler.ts +0 -754
- package/src/build-tools/SdTsLibBundler.ts +0 -72
- package/src/builders/SdCliClientBuilder.ts +0 -211
- package/src/builders/SdCliJsLibLinter.ts +0 -72
- package/src/builders/SdCliTsLibBuilder.ts +0 -126
- package/src/bundle-plugins/sdServerPlugin.ts +0 -94
- package/src/commons.ts +0 -171
- package/src/server-worker.ts +0 -65
- package/src/utils/SdCliBuildResultUtil.ts +0 -63
- /package/dist/{build-cluster.d.ts → workers/compile-worker.d.ts} +0 -0
- /package/dist/{server-worker.d.ts → workers/lint-worker.d.ts} +0 -0
|
@@ -1,6 +1,7 @@
|
|
|
1
1
|
import esbuild from "esbuild";
|
|
2
2
|
import path from "path";
|
|
3
3
|
import { Logger } from "@simplysm/sd-core-node";
|
|
4
|
+
import { SdCliConvertMessageUtil } from "../../utils/SdCliConvertMessageUtil";
|
|
4
5
|
export class SdNgBundlerContext {
|
|
5
6
|
#logger = Logger.get(["simplysm", "sd-cli", "SdNgBundlerContext"]);
|
|
6
7
|
constructor(_pkgPath, _esbuildOptions) {
|
|
@@ -11,56 +12,39 @@ export class SdNgBundlerContext {
|
|
|
11
12
|
if (this._context == null) {
|
|
12
13
|
this._context = await esbuild.context(this._esbuildOptions);
|
|
13
14
|
}
|
|
14
|
-
let
|
|
15
|
+
let esbuildResult;
|
|
15
16
|
try {
|
|
16
17
|
this.#debug(`rebuild...`);
|
|
17
|
-
|
|
18
|
+
esbuildResult = await this._context.rebuild();
|
|
18
19
|
this.#debug(`rebuild completed`);
|
|
19
20
|
}
|
|
20
21
|
catch (err) {
|
|
21
22
|
if ("warnings" in err || "errors" in err) {
|
|
22
|
-
|
|
23
|
+
esbuildResult = err;
|
|
23
24
|
}
|
|
24
25
|
else {
|
|
25
26
|
throw err;
|
|
26
27
|
}
|
|
27
28
|
}
|
|
28
29
|
this.#debug(`convert results...`);
|
|
29
|
-
const results =
|
|
30
|
-
...buildResult.warnings.map((warn) => ({
|
|
31
|
-
filePath: warn.location?.file !== undefined ? path.resolve(this._pkgPath, warn.location.file) : undefined,
|
|
32
|
-
line: warn.location?.line,
|
|
33
|
-
char: warn.location?.column,
|
|
34
|
-
code: warn.text.slice(0, warn.text.indexOf(":")),
|
|
35
|
-
severity: "warning",
|
|
36
|
-
message: `${warn.pluginName ? `(${warn.pluginName}) ` : ""} ${warn.text.slice(warn.text.indexOf(":") + 1)}`,
|
|
37
|
-
type: "build"
|
|
38
|
-
})),
|
|
39
|
-
...buildResult.errors.map((err) => ({
|
|
40
|
-
filePath: err.location?.file !== undefined ? path.resolve(this._pkgPath, err.location.file) : undefined,
|
|
41
|
-
line: err.location?.line,
|
|
42
|
-
char: err.location?.column !== undefined ? err.location.column + 1 : undefined,
|
|
43
|
-
code: err.text.slice(0, err.text.indexOf(":")),
|
|
44
|
-
severity: "error",
|
|
45
|
-
message: `${err.pluginName ? `(${err.pluginName}) ` : ""} ${err.text.slice(err.text.indexOf(":") + 1)}`,
|
|
46
|
-
type: "build"
|
|
47
|
-
}))
|
|
48
|
-
];
|
|
30
|
+
const results = SdCliConvertMessageUtil.convertToBuildMessagesFromEsbuild(esbuildResult, this._pkgPath);
|
|
49
31
|
const initialFiles = new Map();
|
|
50
|
-
for (const outputFile of
|
|
51
|
-
const relativeFilePath = path.isAbsolute(outputFile.path)
|
|
52
|
-
|
|
32
|
+
for (const outputFile of esbuildResult.outputFiles ?? []) {
|
|
33
|
+
const relativeFilePath = path.isAbsolute(outputFile.path)
|
|
34
|
+
? path.relative(this._pkgPath, outputFile.path)
|
|
35
|
+
: outputFile.path;
|
|
36
|
+
const entryPoint = esbuildResult.metafile?.outputs[relativeFilePath]?.entryPoint;
|
|
53
37
|
outputFile.path = relativeFilePath;
|
|
54
38
|
if (entryPoint != null) {
|
|
55
|
-
const name = path.basename(relativeFilePath).split(
|
|
56
|
-
const type = path.extname(relativeFilePath) ===
|
|
39
|
+
const name = path.basename(relativeFilePath).split(".", 1)[0];
|
|
40
|
+
const type = path.extname(relativeFilePath) === ".css" ? "style" : "script";
|
|
57
41
|
if (this._esbuildOptions.entryPoints?.[name] != null) {
|
|
58
42
|
initialFiles.set(relativeFilePath, {
|
|
59
43
|
name,
|
|
60
44
|
type,
|
|
61
45
|
entrypoint: true,
|
|
62
46
|
serverFile: false,
|
|
63
|
-
depth: 0
|
|
47
|
+
depth: 0,
|
|
64
48
|
});
|
|
65
49
|
}
|
|
66
50
|
}
|
|
@@ -68,7 +52,7 @@ export class SdNgBundlerContext {
|
|
|
68
52
|
const files = [...initialFiles.keys()];
|
|
69
53
|
for (const file of files) {
|
|
70
54
|
const entryRecord = initialFiles.get(file);
|
|
71
|
-
for (const initialImport of
|
|
55
|
+
for (const initialImport of esbuildResult.metafile?.outputs[file]?.imports ?? []) {
|
|
72
56
|
const existingRecord = initialFiles.get(initialImport.path);
|
|
73
57
|
if (existingRecord) {
|
|
74
58
|
if (existingRecord.depth > entryRecord.depth + 1) {
|
|
@@ -76,13 +60,13 @@ export class SdNgBundlerContext {
|
|
|
76
60
|
}
|
|
77
61
|
continue;
|
|
78
62
|
}
|
|
79
|
-
if (initialImport.kind ===
|
|
63
|
+
if (initialImport.kind === "import-statement" || initialImport.kind === "import-rule") {
|
|
80
64
|
const record = {
|
|
81
|
-
type: initialImport.kind ===
|
|
65
|
+
type: initialImport.kind === "import-rule" ? "style" : "script",
|
|
82
66
|
entrypoint: false,
|
|
83
67
|
external: initialImport.external,
|
|
84
68
|
serverFile: false,
|
|
85
|
-
depth: entryRecord.depth + 1
|
|
69
|
+
depth: entryRecord.depth + 1,
|
|
86
70
|
};
|
|
87
71
|
initialFiles.set(initialImport.path, record);
|
|
88
72
|
if (!initialImport.external) {
|
|
@@ -91,21 +75,11 @@ export class SdNgBundlerContext {
|
|
|
91
75
|
}
|
|
92
76
|
}
|
|
93
77
|
}
|
|
94
|
-
// const dependencyMap = new Map<string, Set<string>>();
|
|
95
|
-
// if (buildResult.metafile) {
|
|
96
|
-
// for (const [key, val] of Object.entries(buildResult.metafile.inputs)) {
|
|
97
|
-
// for (const imp of val.imports) {
|
|
98
|
-
// const deps = dependencyMap.getOrCreate(path.resolve(this._pkgPath, imp.path), new Set<string>());
|
|
99
|
-
// deps.add(path.resolve(this._pkgPath, key));
|
|
100
|
-
// }
|
|
101
|
-
// }
|
|
102
|
-
// }
|
|
103
78
|
return {
|
|
104
79
|
results,
|
|
105
80
|
initialFiles,
|
|
106
|
-
outputFiles:
|
|
107
|
-
|
|
108
|
-
metafile: buildResult.metafile
|
|
81
|
+
outputFiles: esbuildResult.outputFiles,
|
|
82
|
+
metafile: esbuildResult.metafile,
|
|
109
83
|
};
|
|
110
84
|
}
|
|
111
85
|
#debug(...msg) {
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"SdNgBundlerContext.js","sourceRoot":"","sources":["../../../src/pkg-builders/client/SdNgBundlerContext.ts"],"names":[],"mappings":"AAAA,OAAO,OAAO,MAAM,SAAS,CAAC;AAC9B,OAAO,IAAI,MAAM,MAAM,CAAC;AACxB,OAAO,EAAE,MAAM,EAAE,MAAM,wBAAwB,CAAC;AAEhD,OAAO,EAAE,uBAAuB,EAAE,MAAM,qCAAqC,CAAC;AAE9E,MAAM,OAAO,kBAAkB;IACpB,OAAO,GAAG,MAAM,CAAC,GAAG,CAAC,CAAC,UAAU,EAAE,QAAQ,EAAE,oBAAoB,CAAC,CAAC,CAAC;IAI5E,YACmB,QAAgB,EAChB,eAAqC;QADrC,aAAQ,GAAR,QAAQ,CAAQ;QAChB,oBAAe,GAAf,eAAe,CAAsB;IACrD,CAAC;IAEG,KAAK,CAAC,WAAW;QACtB,IAAI,IAAI,CAAC,QAAQ,IAAI,IAAI,EAAE,CAAC;YAC1B,IAAI,CAAC,QAAQ,GAAG,MAAM,OAAO,CAAC,OAAO,CAAC,IAAI,CAAC,eAAe,CAAC,CAAC;QAC9D,CAAC;QAED,IAAI,aAAkC,CAAC;QAEvC,IAAI,CAAC;YACH,IAAI,CAAC,MAAM,CAAC,YAAY,CAAC,CAAC;YAC1B,aAAa,GAAG,MAAM,IAAI,CAAC,QAAQ,CAAC,OAAO,EAAE,CAAC;YAC9C,IAAI,CAAC,MAAM,CAAC,mBAAmB,CAAC,CAAC;QACnC,CAAC;QAAC,OAAO,GAAG,EAAE,CAAC;YACb,IAAI,UAAU,IAAI,GAAG,IAAI,QAAQ,IAAI,GAAG,EAAE,CAAC;gBACzC,aAAa,GAAG,GAAG,CAAC;YACtB,CAAC;iBAAM,CAAC;gBACN,MAAM,GAAG,CAAC;YACZ,CAAC;QACH,CAAC;QAED,IAAI,CAAC,MAAM,CAAC,oBAAoB,CAAC,CAAC;QAElC,MAAM,OAAO,GAAG,uBAAuB,CAAC,iCAAiC,CAAC,aAAa,EAAE,IAAI,CAAC,QAAQ,CAAC,CAAC;QAExG,MAAM,YAAY,GAAG,IAAI,GAAG,EAA6B,CAAC;QAE1D,KAAK,MAAM,UAAU,IAAI,aAAa,CAAC,WAAW,IAAI,EAAE,EAAE,CAAC;YACzD,MAAM,gBAAgB,GAAG,IAAI,CAAC,UAAU,CAAC,UAAU,CAAC,IAAI,CAAC;gBACvD,CAAC,CAAC,IAAI,CAAC,QAAQ,CAAC,IAAI,CAAC,QAAQ,EAAE,UAAU,CAAC,IAAI,CAAC;gBAC/C,CAAC,CAAC,UAAU,CAAC,IAAI,CAAC;YACpB,MAAM,UAAU,GAAG,aAAa,CAAC,QAAQ,EAAE,OAAO,CAAC,gBAAgB,CAAC,EAAE,UAAU,CAAC;YAEjF,UAAU,CAAC,IAAI,GAAG,gBAAgB,CAAC;YAEnC,IAAI,UAAU,IAAI,IAAI,EAAE,CAAC;gBACvB,MAAM,IAAI,GAAG,IAAI,CAAC,QAAQ,CAAC,gBAAgB,CAAC,CAAC,KAAK,CAAC,GAAG,EAAE,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC;gBAC9D,MAAM,IAAI,GAAG,IAAI,CAAC,OAAO,CAAC,gBAAgB,CAAC,KAAK,MAAM,CAAC,CAAC,CAAC,OAAO,CAAC,CAAC,CAAC,QAAQ,CAAC;gBAE5E,IAAI,IAAI,CAAC,eAAe,CAAC,WAAW,EAAE,CAAC,IAAI,CAAC,IAAI,IAAI,EAAE,CAAC;oBACrD,YAAY,CAAC,GAAG,CAAC,gBAAgB,EAAE;wBACjC,IAAI;wBACJ,IAAI;wBACJ,UAAU,EAAE,IAAI;wBAChB,UAAU,EAAE,KAAK;wBACjB,KAAK,EAAE,CAAC;qBACT,CAAC,CAAC;gBACL,CAAC;YACH,CAAC;QACH,CAAC;QAED,MAAM,KAAK,GAAG,CAAC,GAAG,YAAY,CAAC,IAAI,EAAE,CAAC,CAAC;QACvC,KAAK,MAAM,IAAI,IAAI,KAAK,EAAE,CAAC;YACzB,MAAM,WAAW,GAAG,YAAY,CAAC,GAAG,CAAC,IAAI,CAAE,CAAC;YAE5C,KAAK,MAAM,aAAa,IAAI,aAAa,CAAC,QAAQ,EAAE,OAAO,CAAC,IAAI,CAAC,EAAE,OAAO,IAAI,EAAE,EAAE,CAAC;gBACjF,MAAM,cAAc,GAAG,YAAY,CAAC,GAAG,CAAC,aAAa,CAAC,IAAI,CAAC,CAAC;gBAC5D,IAAI,cAAc,EAAE,CAAC;oBACnB,IAAI,cAAc,CAAC,KAAK,GAAG,WAAW,CAAC,KAAK,GAAG,CAAC,EAAE,CAAC;wBACjD,cAAc,CAAC,KAAK,GAAG,WAAW,CAAC,KAAK,GAAG,CAAC,CAAC;oBAC/C,CAAC;oBACD,SAAS;gBACX,CAAC;gBAED,IAAI,aAAa,CAAC,IAAI,KAAK,kBAAkB,IAAI,aAAa,CAAC,IAAI,KAAK,aAAa,EAAE,CAAC;oBACtF,MAAM,MAAM,GAAsB;wBAChC,IAAI,EAAE,aAAa,CAAC,IAAI,KAAK,aAAa,CAAC,CAAC,CAAC,OAAO,CAAC,CAAC,CAAC,QAAQ;wBAC/D,UAAU,EAAE,KAAK;wBACjB,QAAQ,EAAE,aAAa,CAAC,QAAQ;wBAChC,UAAU,EAAE,KAAK;wBACjB,KAAK,EAAE,WAAW,CAAC,KAAK,GAAG,CAAC;qBAC7B,CAAC;oBAEF,YAAY,CAAC,GAAG,CAAC,aAAa,CAAC,IAAI,EAAE,MAAM,CAAC,CAAC;oBAE7C,IAAI,CAAC,aAAa,CAAC,QAAQ,EAAE,CAAC;wBAC5B,KAAK,CAAC,IAAI,CAAC,aAAa,CAAC,IAAI,CAAC,CAAC;oBACjC,CAAC;gBACH,CAAC;YACH,CAAC;QACH,CAAC;QAED,OAAO;YACL,OAAO;YACP,YAAY;YACZ,WAAW,EAAE,aAAa,CAAC,WAAW;YACtC,QAAQ,EAAE,aAAa,CAAC,QAAQ;SACjC,CAAC;IACJ,CAAC;IAED,MAAM,CAAC,GAAG,GAAU;QAClB,IAAI,CAAC,OAAO,CAAC,KAAK,CAChB,IAAI,IAAI,CAAC,QAAQ,CAAC,IAAI,CAAC,QAAQ,CAAC,MAAM,MAAM,CAAC,IAAI,CAAC,IAAI,CAAC,eAAe,CAAC,WAAkC,CAAC,CAAC,IAAI,CAAC,IAAI,CAAC,GAAG,EACxH,GAAG,GAAG,CACP,CAAC;IACJ,CAAC;CACF"}
|
|
@@ -0,0 +1,10 @@
|
|
|
1
|
+
import esbuild from "esbuild";
|
|
2
|
+
import { TNormPath } from "@simplysm/sd-core-node";
|
|
3
|
+
import { ISdCliNgPluginResultCache } from "../../types/build-plugin.type";
|
|
4
|
+
export declare function createSdNgPlugin(conf: {
|
|
5
|
+
pkgPath: TNormPath;
|
|
6
|
+
dev: boolean;
|
|
7
|
+
modifiedFileSet: Set<TNormPath>;
|
|
8
|
+
result: ISdCliNgPluginResultCache;
|
|
9
|
+
watchScopePaths: TNormPath[];
|
|
10
|
+
}): esbuild.Plugin;
|
|
@@ -1,29 +1,29 @@
|
|
|
1
|
-
import ts from "typescript";
|
|
2
1
|
import path from "path";
|
|
3
2
|
import os from "os";
|
|
4
|
-
import { SdTsCompiler } from "../build-tools/SdTsCompiler";
|
|
5
3
|
import { JavaScriptTransformer } from "@angular/build/src/tools/esbuild/javascript-transformer";
|
|
6
|
-
import {
|
|
7
|
-
import { SdCliPerformanceTimer } from "
|
|
8
|
-
import {
|
|
9
|
-
|
|
4
|
+
import { Logger, PathUtil } from "@simplysm/sd-core-node";
|
|
5
|
+
import { SdCliPerformanceTimer } from "../../utils/SdCliPerformanceTime";
|
|
6
|
+
import { SdCliConvertMessageUtil } from "../../utils/SdCliConvertMessageUtil";
|
|
7
|
+
import { SdTsCompileWorker } from "../../ts-builder/SdTsCompileWorker";
|
|
8
|
+
export function createSdNgPlugin(conf) {
|
|
10
9
|
let perf;
|
|
11
|
-
const logger = Logger.get(["simplysm", "sd-cli", "
|
|
10
|
+
const logger = Logger.get(["simplysm", "sd-cli", "createSdNgPlugin"]);
|
|
12
11
|
function debug(...msg) {
|
|
13
12
|
logger.debug(`[${path.basename(conf.pkgPath)}]`, ...msg);
|
|
14
13
|
}
|
|
15
14
|
return {
|
|
16
|
-
name: "sd-ng-
|
|
17
|
-
setup: (build) => {
|
|
18
|
-
const
|
|
15
|
+
name: "sd-ng-compile",
|
|
16
|
+
setup: async (build) => {
|
|
17
|
+
const tsCompiler = await SdTsCompileWorker.new({
|
|
19
18
|
pkgPath: conf.pkgPath,
|
|
20
19
|
additionalOptions: { declaration: false },
|
|
21
20
|
isDevMode: conf.dev,
|
|
22
21
|
isForBundle: true,
|
|
23
22
|
watchScopePaths: conf.watchScopePaths,
|
|
24
23
|
});
|
|
25
|
-
let
|
|
24
|
+
let tsCompileResult;
|
|
26
25
|
const outputContentsCacheMap = new Map();
|
|
26
|
+
// const cacheStore = new LmbdCacheStore(path.join(process.cwd(), "angular-compiler.db"));
|
|
27
27
|
//-- js babel transformer
|
|
28
28
|
const javascriptTransformer = new JavaScriptTransformer({
|
|
29
29
|
thirdPartySourcemaps: conf.dev,
|
|
@@ -35,27 +35,26 @@ export function sdNgPlugin(conf) {
|
|
|
35
35
|
build.onStart(async () => {
|
|
36
36
|
perf = new SdCliPerformanceTimer("esbuild");
|
|
37
37
|
const res = await perf.run("typescript build", async () => {
|
|
38
|
-
compiler.invalidate(conf.modifiedFileSet);
|
|
39
38
|
for (const modifiedFile of conf.modifiedFileSet) {
|
|
40
39
|
outputContentsCacheMap.delete(modifiedFile);
|
|
41
40
|
}
|
|
42
|
-
|
|
43
|
-
conf.result.watchFileSet =
|
|
44
|
-
conf.result.affectedFileSet =
|
|
45
|
-
|
|
41
|
+
tsCompileResult = await tsCompiler.compileAsync(conf.modifiedFileSet);
|
|
42
|
+
conf.result.watchFileSet = tsCompileResult.watchFileSet;
|
|
43
|
+
conf.result.affectedFileSet = tsCompileResult.affectedFileSet;
|
|
44
|
+
const tsEsbuildResult = SdCliConvertMessageUtil.convertToEsbuildFromBuildMessages(tsCompileResult.messages, conf.pkgPath);
|
|
46
45
|
//-- return err/warn
|
|
47
46
|
return {
|
|
48
47
|
errors: [
|
|
49
|
-
...
|
|
50
|
-
|
|
51
|
-
.
|
|
52
|
-
|
|
48
|
+
...tsEsbuildResult.errors,
|
|
49
|
+
...Array.from(tsCompileResult.stylesheetBundlingResultMap.values())
|
|
50
|
+
.flatMap((item) => item.errors)
|
|
51
|
+
.filterExists(),
|
|
53
52
|
].filterExists(),
|
|
54
53
|
warnings: [
|
|
55
|
-
...
|
|
56
|
-
|
|
57
|
-
.
|
|
58
|
-
|
|
54
|
+
...tsEsbuildResult.warnings,
|
|
55
|
+
...Array.from(tsCompileResult.stylesheetBundlingResultMap.values())
|
|
56
|
+
.flatMap((item) => item.warnings)
|
|
57
|
+
.filterExists(),
|
|
59
58
|
],
|
|
60
59
|
};
|
|
61
60
|
});
|
|
@@ -63,11 +62,11 @@ export function sdNgPlugin(conf) {
|
|
|
63
62
|
return res;
|
|
64
63
|
});
|
|
65
64
|
build.onLoad({ filter: /\.ts$/ }, async (args) => {
|
|
66
|
-
const output = outputContentsCacheMap.get(
|
|
65
|
+
const output = outputContentsCacheMap.get(PathUtil.norm(args.path));
|
|
67
66
|
if (output != null) {
|
|
68
67
|
return { contents: output, loader: "js" };
|
|
69
68
|
}
|
|
70
|
-
const emittedJsFile =
|
|
69
|
+
const emittedJsFile = tsCompileResult.emittedFilesCacheMap.get(PathUtil.norm(args.path))?.last();
|
|
71
70
|
if (!emittedJsFile) {
|
|
72
71
|
throw new Error(`ts 빌더 결과 emit 파일이 존재하지 않습니다. ${args.path}`);
|
|
73
72
|
}
|
|
@@ -77,12 +76,12 @@ export function sdNgPlugin(conf) {
|
|
|
77
76
|
resolveDir: build.initialOptions.absWorkingDir ?? "",
|
|
78
77
|
});
|
|
79
78
|
const newContents = await javascriptTransformer.transformData(args.path, contents, true, sideEffects);
|
|
80
|
-
outputContentsCacheMap.set(
|
|
79
|
+
outputContentsCacheMap.set(PathUtil.norm(args.path), newContents);
|
|
81
80
|
return { contents: newContents, loader: "js" };
|
|
82
81
|
});
|
|
83
82
|
build.onLoad({ filter: /\.[cm]?js$/ }, async (args) => {
|
|
84
|
-
conf.result.watchFileSet.add(
|
|
85
|
-
const output = outputContentsCacheMap.get(
|
|
83
|
+
conf.result.watchFileSet.add(PathUtil.norm(args.path));
|
|
84
|
+
const output = outputContentsCacheMap.get(PathUtil.norm(args.path));
|
|
86
85
|
if (output != null) {
|
|
87
86
|
return { contents: output, loader: "js" };
|
|
88
87
|
}
|
|
@@ -91,7 +90,7 @@ export function sdNgPlugin(conf) {
|
|
|
91
90
|
resolveDir: build.initialOptions.absWorkingDir ?? "",
|
|
92
91
|
});
|
|
93
92
|
const newContents = await javascriptTransformer.transformFile(args.path, false, sideEffects);
|
|
94
|
-
outputContentsCacheMap.set(
|
|
93
|
+
outputContentsCacheMap.set(PathUtil.norm(args.path), newContents);
|
|
95
94
|
return {
|
|
96
95
|
contents: newContents,
|
|
97
96
|
loader: "js",
|
|
@@ -104,13 +103,13 @@ export function sdNgPlugin(conf) {
|
|
|
104
103
|
.join("|") +
|
|
105
104
|
")$"),
|
|
106
105
|
}, (args) => {
|
|
107
|
-
conf.result.watchFileSet.add(
|
|
106
|
+
conf.result.watchFileSet.add(PathUtil.norm(args.path));
|
|
108
107
|
return null;
|
|
109
108
|
});
|
|
110
109
|
build.onEnd((result) => {
|
|
111
110
|
perf.end("transform & bundling");
|
|
112
111
|
debug(perf.toString());
|
|
113
|
-
for (const { outputFiles, metafile } of
|
|
112
|
+
for (const { outputFiles, metafile } of tsCompileResult.stylesheetBundlingResultMap.values()) {
|
|
114
113
|
result.outputFiles = result.outputFiles ?? [];
|
|
115
114
|
result.outputFiles.push(...outputFiles);
|
|
116
115
|
if (result.metafile && metafile) {
|
|
@@ -125,4 +124,4 @@ export function sdNgPlugin(conf) {
|
|
|
125
124
|
},
|
|
126
125
|
};
|
|
127
126
|
}
|
|
128
|
-
//# sourceMappingURL=
|
|
127
|
+
//# sourceMappingURL=createSdNgPlugin.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"createSdNgPlugin.js","sourceRoot":"","sources":["../../../src/pkg-builders/client/createSdNgPlugin.ts"],"names":[],"mappings":"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"}
|
|
@@ -1,15 +1,15 @@
|
|
|
1
1
|
import { FsUtil, PathUtil, SdFsWatcher } from "@simplysm/sd-core-node";
|
|
2
2
|
import path from "path";
|
|
3
3
|
export class SdCliIndexFileGenerator {
|
|
4
|
-
static
|
|
4
|
+
static watch(pkgPath, polyfills) {
|
|
5
5
|
const indexFilePath = path.resolve(pkgPath, "src/index.ts");
|
|
6
6
|
let cache = FsUtil.exists(indexFilePath) ? FsUtil.readFile(indexFilePath) : undefined;
|
|
7
|
-
SdFsWatcher.watch([path.resolve(pkgPath, "src")]).onChange({},
|
|
8
|
-
cache =
|
|
7
|
+
SdFsWatcher.watch([path.resolve(pkgPath, "src")]).onChange({ delay: 100 }, () => {
|
|
8
|
+
cache = this.run(pkgPath, polyfills, cache);
|
|
9
9
|
});
|
|
10
|
-
cache =
|
|
10
|
+
cache = this.run(pkgPath, polyfills, cache);
|
|
11
11
|
}
|
|
12
|
-
static
|
|
12
|
+
static run(pkgPath, polyfills, cache) {
|
|
13
13
|
const indexFilePath = path.resolve(pkgPath, "src/index.ts");
|
|
14
14
|
const importTexts = [];
|
|
15
15
|
// polyfills 를 모두 import
|
|
@@ -19,12 +19,12 @@ export class SdCliIndexFileGenerator {
|
|
|
19
19
|
}
|
|
20
20
|
}
|
|
21
21
|
// 내부 파일들 import
|
|
22
|
-
const filePaths =
|
|
22
|
+
const filePaths = this.#getFilePaths(pkgPath);
|
|
23
23
|
for (const filePath of filePaths.orderBy()) {
|
|
24
24
|
const requirePath = PathUtil.posix(path.relative(path.dirname(indexFilePath), filePath))
|
|
25
25
|
.replace(/\.tsx?$/, "")
|
|
26
26
|
.replace(/\/index$/, "");
|
|
27
|
-
const sourceTsFileContent =
|
|
27
|
+
const sourceTsFileContent = FsUtil.readFile(filePath);
|
|
28
28
|
if (sourceTsFileContent.split("\n").some((line) => line.startsWith("export "))) {
|
|
29
29
|
importTexts.push(`export * from "./${requirePath}";`);
|
|
30
30
|
}
|
|
@@ -34,15 +34,15 @@ export class SdCliIndexFileGenerator {
|
|
|
34
34
|
}
|
|
35
35
|
const content = importTexts.join("\n") + "\n";
|
|
36
36
|
if (content.trim() !== cache?.trim()) {
|
|
37
|
-
|
|
37
|
+
FsUtil.writeFile(indexFilePath, content);
|
|
38
38
|
}
|
|
39
39
|
return content;
|
|
40
40
|
}
|
|
41
|
-
static
|
|
41
|
+
static #getFilePaths(pkgPath) {
|
|
42
42
|
const indexFilePath = path.resolve(pkgPath, "src/index.ts");
|
|
43
|
-
const tsconfig =
|
|
43
|
+
const tsconfig = FsUtil.readJson(path.resolve(pkgPath, "tsconfig.json"));
|
|
44
44
|
const entryFilePaths = tsconfig.files?.map((item) => path.resolve(pkgPath, item)) ?? [];
|
|
45
|
-
return
|
|
45
|
+
return FsUtil.glob(path.resolve(pkgPath, "src/**/*{.ts,.tsx}"), { nodir: true }).filter((item) => !entryFilePaths.includes(item) && item !== indexFilePath && !item.endsWith(".d.ts"));
|
|
46
46
|
}
|
|
47
47
|
}
|
|
48
48
|
//# sourceMappingURL=SdCliIndexFileGenerator.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"SdCliIndexFileGenerator.js","sourceRoot":"","sources":["../../../src/pkg-builders/lib/SdCliIndexFileGenerator.ts"],"names":[],"mappings":"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"}
|
|
@@ -0,0 +1,16 @@
|
|
|
1
|
+
import { EventEmitter } from "events";
|
|
2
|
+
import { ISdProjectConfig } from "../../types/sd-configs.type";
|
|
3
|
+
import { ISdBuildRunnerResult } from "../../types/build.type";
|
|
4
|
+
export declare class SdJsLibBuildRunner extends EventEmitter {
|
|
5
|
+
private readonly _projConf;
|
|
6
|
+
private readonly _pkgPath;
|
|
7
|
+
private readonly _logger;
|
|
8
|
+
private readonly _pkgName;
|
|
9
|
+
private readonly _lintWorker;
|
|
10
|
+
constructor(_projConf: ISdProjectConfig, _pkgPath: string);
|
|
11
|
+
on(event: "change", listener: () => void): this;
|
|
12
|
+
on(event: "complete", listener: (result: ISdBuildRunnerResult) => void): this;
|
|
13
|
+
buildAsync(): Promise<ISdBuildRunnerResult>;
|
|
14
|
+
watchAsync(): Promise<void>;
|
|
15
|
+
private _debug;
|
|
16
|
+
}
|
|
@@ -0,0 +1,81 @@
|
|
|
1
|
+
import { FsUtil, Logger, PathUtil, SdFsWatcher, SdWorker } from "@simplysm/sd-core-node";
|
|
2
|
+
import path from "path";
|
|
3
|
+
import { EventEmitter } from "events";
|
|
4
|
+
import { SdCliConvertMessageUtil } from "../../utils/SdCliConvertMessageUtil";
|
|
5
|
+
export class SdJsLibBuildRunner extends EventEmitter {
|
|
6
|
+
constructor(_projConf, _pkgPath) {
|
|
7
|
+
super();
|
|
8
|
+
this._projConf = _projConf;
|
|
9
|
+
this._pkgPath = _pkgPath;
|
|
10
|
+
this._logger = Logger.get(["simplysm", "sd-cli", "SdJsLibBuildRunner"]);
|
|
11
|
+
this._pkgName = path.basename(_pkgPath);
|
|
12
|
+
this._lintWorker = new SdWorker(import.meta.resolve("../../workers/lint-worker"));
|
|
13
|
+
}
|
|
14
|
+
on(event, listener) {
|
|
15
|
+
super.on(event, listener);
|
|
16
|
+
return this;
|
|
17
|
+
}
|
|
18
|
+
async buildAsync() {
|
|
19
|
+
this._debug("LINT...");
|
|
20
|
+
const srcGlobPath = path.resolve(this._pkgPath, "src/**/*.js");
|
|
21
|
+
const srcFilePaths = FsUtil.glob(srcGlobPath);
|
|
22
|
+
const lintResults = await this._lintWorker.run("lint", [
|
|
23
|
+
{
|
|
24
|
+
cwd: this._pkgPath,
|
|
25
|
+
fileSet: new Set(srcFilePaths),
|
|
26
|
+
},
|
|
27
|
+
]);
|
|
28
|
+
const messages = SdCliConvertMessageUtil.convertToBuildMessagesFromEslint(lintResults);
|
|
29
|
+
this._debug(`LINT 완료`);
|
|
30
|
+
return {
|
|
31
|
+
affectedFilePathSet: new Set(srcFilePaths.map((item) => PathUtil.norm(item))),
|
|
32
|
+
buildMessages: messages,
|
|
33
|
+
emitFileSet: new Set(),
|
|
34
|
+
};
|
|
35
|
+
}
|
|
36
|
+
async watchAsync() {
|
|
37
|
+
this.emit("change");
|
|
38
|
+
this._debug("LINT...");
|
|
39
|
+
const srcGlobPath = path.resolve(this._pkgPath, "src/**/*.js");
|
|
40
|
+
const srcFilePaths = FsUtil.glob(srcGlobPath);
|
|
41
|
+
const lintResults = await this._lintWorker.run("lint", [
|
|
42
|
+
{
|
|
43
|
+
cwd: this._pkgPath,
|
|
44
|
+
fileSet: new Set(srcFilePaths),
|
|
45
|
+
},
|
|
46
|
+
]);
|
|
47
|
+
const messages = SdCliConvertMessageUtil.convertToBuildMessagesFromEslint(lintResults);
|
|
48
|
+
this._debug(`LINT 완료`);
|
|
49
|
+
const res = {
|
|
50
|
+
affectedFilePathSet: new Set(srcFilePaths.map((item) => PathUtil.norm(item))),
|
|
51
|
+
buildMessages: messages,
|
|
52
|
+
emitFileSet: new Set(),
|
|
53
|
+
};
|
|
54
|
+
this.emit("complete", res);
|
|
55
|
+
SdFsWatcher.watch([srcGlobPath]).onChange({ delay: 300 }, async (changeInfos) => {
|
|
56
|
+
const watchFilePaths = changeInfos.filter((item) => FsUtil.exists(item.path)).map((item) => item.path);
|
|
57
|
+
if (watchFilePaths.length < 1)
|
|
58
|
+
return;
|
|
59
|
+
this.emit("change");
|
|
60
|
+
this._debug("LINT...");
|
|
61
|
+
const watchLintResults = await this._lintWorker.run("lint", [
|
|
62
|
+
{
|
|
63
|
+
cwd: this._pkgPath,
|
|
64
|
+
fileSet: new Set(watchFilePaths),
|
|
65
|
+
},
|
|
66
|
+
]);
|
|
67
|
+
const watchMessages = SdCliConvertMessageUtil.convertToBuildMessagesFromEslint(watchLintResults);
|
|
68
|
+
this._debug(`LINT 완료`);
|
|
69
|
+
const watchRes = {
|
|
70
|
+
affectedFilePathSet: new Set(changeInfos.map((item) => PathUtil.norm(item.path))),
|
|
71
|
+
buildMessages: watchMessages,
|
|
72
|
+
emitFileSet: new Set(),
|
|
73
|
+
};
|
|
74
|
+
this.emit("complete", watchRes);
|
|
75
|
+
});
|
|
76
|
+
}
|
|
77
|
+
_debug(msg) {
|
|
78
|
+
this._logger.debug(`[${this._pkgName}] ${msg}`);
|
|
79
|
+
}
|
|
80
|
+
}
|
|
81
|
+
//# sourceMappingURL=SdJsLibBuildRunner.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"SdJsLibBuildRunner.js","sourceRoot":"","sources":["../../../src/pkg-builders/lib/SdJsLibBuildRunner.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,MAAM,EAAE,MAAM,EAAE,QAAQ,EAAE,WAAW,EAAE,QAAQ,EAAE,MAAM,wBAAwB,CAAC;AACzF,OAAO,IAAI,MAAM,MAAM,CAAC;AACxB,OAAO,EAAE,YAAY,EAAE,MAAM,QAAQ,CAAC;AACtC,OAAO,EAAE,uBAAuB,EAAE,MAAM,qCAAqC,CAAC;AAK9E,MAAM,OAAO,kBAAmB,SAAQ,YAAY;IAKlD,YACmB,SAA2B,EAC3B,QAAgB;QAEjC,KAAK,EAAE,CAAC;QAHS,cAAS,GAAT,SAAS,CAAkB;QAC3B,aAAQ,GAAR,QAAQ,CAAQ;QANlB,YAAO,GAAG,MAAM,CAAC,GAAG,CAAC,CAAC,UAAU,EAAE,QAAQ,EAAE,oBAAoB,CAAC,CAAC,CAAC;QASlF,IAAI,CAAC,QAAQ,GAAG,IAAI,CAAC,QAAQ,CAAC,QAAQ,CAAC,CAAC;QAExC,IAAI,CAAC,WAAW,GAAG,IAAI,QAAQ,CAAC,MAAM,CAAC,IAAI,CAAC,OAAO,CAAC,2BAA2B,CAAC,CAAC,CAAC;IACpF,CAAC;IAIe,EAAE,CAAC,KAAsB,EAAE,QAAkC;QAC3E,KAAK,CAAC,EAAE,CAAC,KAAK,EAAE,QAAQ,CAAC,CAAC;QAC1B,OAAO,IAAI,CAAC;IACd,CAAC;IAEM,KAAK,CAAC,UAAU;QACrB,IAAI,CAAC,MAAM,CAAC,SAAS,CAAC,CAAC;QACvB,MAAM,WAAW,GAAG,IAAI,CAAC,OAAO,CAAC,IAAI,CAAC,QAAQ,EAAE,aAAa,CAAC,CAAC;QAC/D,MAAM,YAAY,GAAG,MAAM,CAAC,IAAI,CAAC,WAAW,CAAC,CAAC;QAE9C,MAAM,WAAW,GAAG,MAAM,IAAI,CAAC,WAAW,CAAC,GAAG,CAAC,MAAM,EAAE;YACrD;gBACE,GAAG,EAAE,IAAI,CAAC,QAAQ;gBAClB,OAAO,EAAE,IAAI,GAAG,CAAC,YAAY,CAAC;aAC/B;SACF,CAAC,CAAC;QACH,MAAM,QAAQ,GAAG,uBAAuB,CAAC,gCAAgC,CAAC,WAAW,CAAC,CAAC;QAEvF,IAAI,CAAC,MAAM,CAAC,SAAS,CAAC,CAAC;QACvB,OAAO;YACL,mBAAmB,EAAE,IAAI,GAAG,CAAC,YAAY,CAAC,GAAG,CAAC,CAAC,IAAI,EAAE,EAAE,CAAC,QAAQ,CAAC,IAAI,CAAC,IAAI,CAAC,CAAC,CAAC;YAC7E,aAAa,EAAE,QAAQ;YACvB,WAAW,EAAE,IAAI,GAAG,EAAE;SACvB,CAAC;IACJ,CAAC;IAEM,KAAK,CAAC,UAAU;QACrB,IAAI,CAAC,IAAI,CAAC,QAAQ,CAAC,CAAC;QACpB,IAAI,CAAC,MAAM,CAAC,SAAS,CAAC,CAAC;QACvB,MAAM,WAAW,GAAG,IAAI,CAAC,OAAO,CAAC,IAAI,CAAC,QAAQ,EAAE,aAAa,CAAC,CAAC;QAC/D,MAAM,YAAY,GAAG,MAAM,CAAC,IAAI,CAAC,WAAW,CAAC,CAAC;QAE9C,MAAM,WAAW,GAAG,MAAM,IAAI,CAAC,WAAW,CAAC,GAAG,CAAC,MAAM,EAAE;YACrD;gBACE,GAAG,EAAE,IAAI,CAAC,QAAQ;gBAClB,OAAO,EAAE,IAAI,GAAG,CAAC,YAAY,CAAC;aAC/B;SACF,CAAC,CAAC;QACH,MAAM,QAAQ,GAAG,uBAAuB,CAAC,gCAAgC,CAAC,WAAW,CAAC,CAAC;QAEvF,IAAI,CAAC,MAAM,CAAC,SAAS,CAAC,CAAC;QACvB,MAAM,GAAG,GAAyB;YAChC,mBAAmB,EAAE,IAAI,GAAG,CAAC,YAAY,CAAC,GAAG,CAAC,CAAC,IAAI,EAAE,EAAE,CAAC,QAAQ,CAAC,IAAI,CAAC,IAAI,CAAC,CAAC,CAAC;YAC7E,aAAa,EAAE,QAAQ;YACvB,WAAW,EAAE,IAAI,GAAG,EAAE;SACvB,CAAC;QACF,IAAI,CAAC,IAAI,CAAC,UAAU,EAAE,GAAG,CAAC,CAAC;QAE3B,WAAW,CAAC,KAAK,CAAC,CAAC,WAAW,CAAC,CAAC,CAAC,QAAQ,CAAC,EAAE,KAAK,EAAE,GAAG,EAAE,EAAE,KAAK,EAAE,WAAW,EAAE,EAAE;YAC9E,MAAM,cAAc,GAAG,WAAW,CAAC,MAAM,CAAC,CAAC,IAAI,EAAE,EAAE,CAAC,MAAM,CAAC,MAAM,CAAC,IAAI,CAAC,IAAI,CAAC,CAAC,CAAC,GAAG,CAAC,CAAC,IAAI,EAAE,EAAE,CAAC,IAAI,CAAC,IAAI,CAAC,CAAC;YACvG,IAAI,cAAc,CAAC,MAAM,GAAG,CAAC;gBAAE,OAAO;YAEtC,IAAI,CAAC,IAAI,CAAC,QAAQ,CAAC,CAAC;YAEpB,IAAI,CAAC,MAAM,CAAC,SAAS,CAAC,CAAC;YAEvB,MAAM,gBAAgB,GAAG,MAAM,IAAI,CAAC,WAAW,CAAC,GAAG,CAAC,MAAM,EAAE;gBAC1D;oBACE,GAAG,EAAE,IAAI,CAAC,QAAQ;oBAClB,OAAO,EAAE,IAAI,GAAG,CAAC,cAAc,CAAC;iBACjC;aACF,CAAC,CAAC;YACH,MAAM,aAAa,GAAG,uBAAuB,CAAC,gCAAgC,CAAC,gBAAgB,CAAC,CAAC;YAEjG,IAAI,CAAC,MAAM,CAAC,SAAS,CAAC,CAAC;YAEvB,MAAM,QAAQ,GAAyB;gBACrC,mBAAmB,EAAE,IAAI,GAAG,CAAC,WAAW,CAAC,GAAG,CAAC,CAAC,IAAI,EAAE,EAAE,CAAC,QAAQ,CAAC,IAAI,CAAC,IAAI,CAAC,IAAI,CAAC,CAAC,CAAC;gBACjF,aAAa,EAAE,aAAa;gBAC5B,WAAW,EAAE,IAAI,GAAG,EAAE;aACvB,CAAC;YAEF,IAAI,CAAC,IAAI,CAAC,UAAU,EAAE,QAAQ,CAAC,CAAC;QAClC,CAAC,CAAC,CAAC;IACL,CAAC;IAEO,MAAM,CAAC,GAAW;QACxB,IAAI,CAAC,OAAO,CAAC,KAAK,CAAC,IAAI,IAAI,CAAC,QAAQ,KAAK,GAAG,EAAE,CAAC,CAAC;IAClD,CAAC;CACF"}
|
|
@@ -0,0 +1,13 @@
|
|
|
1
|
+
import { EventEmitter } from "events";
|
|
2
|
+
import { ISdProjectConfig } from "../../types/sd-configs.type";
|
|
3
|
+
import { ISdBuildRunnerResult } from "../../types/build.type";
|
|
4
|
+
export declare class SdTsLibBuildRunner extends EventEmitter {
|
|
5
|
+
#private;
|
|
6
|
+
constructor(projConf: ISdProjectConfig, pkgPath: string);
|
|
7
|
+
on(event: "change", listener: () => void): this;
|
|
8
|
+
on(event: "complete", listener: (result: ISdBuildRunnerResult) => void): this;
|
|
9
|
+
buildAsync(): Promise<ISdBuildRunnerResult>;
|
|
10
|
+
watchAsync(): Promise<void>;
|
|
11
|
+
private _runAsync;
|
|
12
|
+
private _debug;
|
|
13
|
+
}
|
|
@@ -0,0 +1,89 @@
|
|
|
1
|
+
import { FsUtil, Logger, PathUtil, SdFsWatcher } from "@simplysm/sd-core-node";
|
|
2
|
+
import path from "path";
|
|
3
|
+
import { EventEmitter } from "events";
|
|
4
|
+
import { SdCliIndexFileGenerator } from "./SdCliIndexFileGenerator";
|
|
5
|
+
import { SdTsLibBuilder } from "./SdTsLibBuilder";
|
|
6
|
+
export class SdTsLibBuildRunner extends EventEmitter {
|
|
7
|
+
#logger = Logger.get(["simplysm", "sd-cli", "SdCliTsLibBuilder"]);
|
|
8
|
+
#projConf;
|
|
9
|
+
#pkgPath;
|
|
10
|
+
#pkgConf;
|
|
11
|
+
#builder;
|
|
12
|
+
constructor(projConf, pkgPath) {
|
|
13
|
+
super();
|
|
14
|
+
this.#projConf = projConf;
|
|
15
|
+
this.#pkgPath = pkgPath;
|
|
16
|
+
this.#pkgConf = projConf.packages[path.basename(pkgPath)];
|
|
17
|
+
}
|
|
18
|
+
on(event, listener) {
|
|
19
|
+
super.on(event, listener);
|
|
20
|
+
return this;
|
|
21
|
+
}
|
|
22
|
+
async buildAsync() {
|
|
23
|
+
this._debug("dist 초기화...");
|
|
24
|
+
FsUtil.remove(path.resolve(this.#pkgPath, "dist"));
|
|
25
|
+
if (!this.#pkgConf.noGenIndex) {
|
|
26
|
+
this._debug("GEN index.ts...");
|
|
27
|
+
SdCliIndexFileGenerator.run(this.#pkgPath, this.#pkgConf.polyfills);
|
|
28
|
+
}
|
|
29
|
+
const result = await this._runAsync(false);
|
|
30
|
+
return {
|
|
31
|
+
affectedFilePathSet: result.affectedFileSet,
|
|
32
|
+
buildMessages: result.buildMessages,
|
|
33
|
+
emitFileSet: result.emitFileSet,
|
|
34
|
+
};
|
|
35
|
+
}
|
|
36
|
+
async watchAsync() {
|
|
37
|
+
this.emit("change");
|
|
38
|
+
this._debug("dist 초기화...");
|
|
39
|
+
FsUtil.remove(path.resolve(this.#pkgPath, "dist"));
|
|
40
|
+
if (!this.#pkgConf.noGenIndex) {
|
|
41
|
+
this._debug("WATCH GEN index.ts...");
|
|
42
|
+
SdCliIndexFileGenerator.watch(this.#pkgPath, this.#pkgConf.polyfills);
|
|
43
|
+
}
|
|
44
|
+
const result = await this._runAsync(true);
|
|
45
|
+
const res = {
|
|
46
|
+
affectedFilePathSet: result.affectedFileSet,
|
|
47
|
+
buildMessages: result.buildMessages,
|
|
48
|
+
emitFileSet: result.emitFileSet,
|
|
49
|
+
};
|
|
50
|
+
this.emit("complete", res);
|
|
51
|
+
this._debug("WATCH...");
|
|
52
|
+
const watcher = SdFsWatcher.watch(Array.from(result.watchFileSet)).onChange({ delay: 300 }, async (changeInfos) => {
|
|
53
|
+
this.emit("change");
|
|
54
|
+
const changeFileSet = new Set(changeInfos.map((item) => PathUtil.norm(item.path)));
|
|
55
|
+
const watchResult = await this._runAsync(true, changeFileSet);
|
|
56
|
+
const watchRes = {
|
|
57
|
+
affectedFilePathSet: watchResult.affectedFileSet,
|
|
58
|
+
buildMessages: watchResult.buildMessages,
|
|
59
|
+
emitFileSet: watchResult.emitFileSet,
|
|
60
|
+
};
|
|
61
|
+
this.emit("complete", watchRes);
|
|
62
|
+
watcher.replaceWatchPaths(watchResult.watchFileSet);
|
|
63
|
+
});
|
|
64
|
+
}
|
|
65
|
+
async _runAsync(dev, modifiedFileSet) {
|
|
66
|
+
const localUpdatePaths = Object.keys(this.#projConf.localUpdates ?? {})
|
|
67
|
+
.mapMany((key) => FsUtil.glob(path.resolve(this.#pkgPath, "../../node_modules", key)))
|
|
68
|
+
.map((item) => PathUtil.norm(item));
|
|
69
|
+
this._debug(`BUILD...`);
|
|
70
|
+
this.#builder ??= await SdTsLibBuilder.new(PathUtil.norm(this.#pkgPath), dev, [
|
|
71
|
+
PathUtil.norm(this.#pkgPath, "../"),
|
|
72
|
+
...localUpdatePaths,
|
|
73
|
+
]);
|
|
74
|
+
const buildResult = await this.#builder.buildAsync(modifiedFileSet);
|
|
75
|
+
this._debug(`빌드 완료`);
|
|
76
|
+
const watchFileSet = new Set(Array.from(buildResult.watchFileSet).filter((item) => PathUtil.isChildPath(item, path.resolve(this.#pkgPath, "../")) ||
|
|
77
|
+
localUpdatePaths.some((lu) => PathUtil.isChildPath(item, lu))));
|
|
78
|
+
return {
|
|
79
|
+
watchFileSet,
|
|
80
|
+
affectedFileSet: buildResult.affectedFileSet,
|
|
81
|
+
buildMessages: buildResult.results,
|
|
82
|
+
emitFileSet: buildResult.emitFileSet,
|
|
83
|
+
};
|
|
84
|
+
}
|
|
85
|
+
_debug(msg) {
|
|
86
|
+
this.#logger.debug(`[${path.basename(this.#pkgPath)}] ${msg}`);
|
|
87
|
+
}
|
|
88
|
+
}
|
|
89
|
+
//# sourceMappingURL=SdTsLibBuildRunner.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"SdTsLibBuildRunner.js","sourceRoot":"","sources":["../../../src/pkg-builders/lib/SdTsLibBuildRunner.ts"],"names":[],"mappings":"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"}
|
|
@@ -0,0 +1,14 @@
|
|
|
1
|
+
import { TNormPath } from "@simplysm/sd-core-node";
|
|
2
|
+
import { ISdBuildMessage } from "../../types/build.type";
|
|
3
|
+
export declare class SdTsLibBuilder {
|
|
4
|
+
private _compiler;
|
|
5
|
+
private _pkgPath;
|
|
6
|
+
static new(pkgPath: TNormPath, dev: boolean, watchScopePaths: TNormPath[]): Promise<SdTsLibBuilder>;
|
|
7
|
+
private constructor();
|
|
8
|
+
buildAsync(modifiedFileSet?: Set<TNormPath>): Promise<{
|
|
9
|
+
watchFileSet: Set<TNormPath>;
|
|
10
|
+
affectedFileSet: Set<TNormPath>;
|
|
11
|
+
results: ISdBuildMessage[];
|
|
12
|
+
emitFileSet: Set<TNormPath>;
|
|
13
|
+
}>;
|
|
14
|
+
}
|