@simplysm/sd-cli 6.0.28 → 6.0.38
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-node/bin/sd-cli.js +19 -4
- package/dist-node/bin/sd-cli.js.map +1 -1
- package/dist-node/build-tools/SdCliNgModuleFilesGenerator.js +106 -57
- package/dist-node/build-tools/SdCliNgModuleFilesGenerator.js.map +1 -1
- package/dist-node/build-tools/metadata/SdAotMetadataReader.js +13 -11
- package/dist-node/build-tools/metadata/SdAotMetadataReader.js.map +1 -1
- package/dist-node/build-tools/metadata/SdIvyMetadataReader.js +23 -6
- package/dist-node/build-tools/metadata/SdIvyMetadataReader.js.map +1 -1
- package/dist-node/build-tools/metadata/SdMetadataError.js +13 -0
- package/dist-node/build-tools/metadata/SdMetadataError.js.map +1 -0
- package/dist-node/build-tools/metadata/SdMyMetadataReader.js +22 -5
- package/dist-node/build-tools/metadata/SdMyMetadataReader.js.map +1 -1
- package/dist-node/builders/SdCliNgClientBuilder.js +74 -74
- package/dist-node/builders/SdCliNgClientBuilder.js.map +1 -1
- package/dist-node/builders/SdCliNgLibraryBuilder.js +49 -45
- package/dist-node/builders/SdCliNgLibraryBuilder.js.map +1 -1
- package/dist-node/builders/SdCliServerBuilder.js +33 -23
- package/dist-node/builders/SdCliServerBuilder.js.map +1 -1
- package/dist-node/builders/SdCliTypescriptBuilder.js +75 -65
- package/dist-node/builders/SdCliTypescriptBuilder.js.map +1 -1
- package/dist-node/entry-points/SdCliProject.js +17 -17
- package/dist-node/entry-points/SdCliProject.js.map +1 -1
- package/dist-node/packages/SdCliClientPackage.js +6 -4
- package/dist-node/packages/SdCliClientPackage.js.map +1 -1
- package/dist-node/packages/SdCliLibraryPackage.js +5 -3
- package/dist-node/packages/SdCliLibraryPackage.js.map +1 -1
- package/dist-node/packages/SdCliServerPackage.js +4 -3
- package/dist-node/packages/SdCliServerPackage.js.map +1 -1
- package/dist-node/utils/SdWebpackUtil.js +33 -13
- package/dist-node/utils/SdWebpackUtil.js.map +1 -1
- package/dist-node/workers/client-ng-gen-worker.js +54 -0
- package/dist-node/workers/client-ng-gen-worker.js.map +1 -0
- package/dist-node/workers/lib-build-worker.js +7 -6
- package/dist-node/workers/lib-build-worker.js.map +1 -1
- package/dist-types/build-tools/metadata/SdIvyMetadataReader.d.ts +1 -0
- package/dist-types/build-tools/metadata/SdMetadataError.d.ts +6 -0
- package/dist-types/build-tools/metadata/SdMyMetadataReader.d.ts +1 -0
- package/dist-types/builders/SdCliNgClientBuilder.d.ts +6 -2
- package/dist-types/builders/SdCliNgLibraryBuilder.d.ts +3 -2
- package/dist-types/builders/SdCliServerBuilder.d.ts +2 -1
- package/dist-types/builders/SdCliTypescriptBuilder.d.ts +5 -5
- package/dist-types/commons.d.ts +4 -1
- package/dist-types/entry-points/SdCliProject.d.ts +5 -1
- package/dist-types/packages/SdCliClientPackage.d.ts +2 -1
- package/dist-types/packages/SdCliLibraryPackage.d.ts +2 -1
- package/dist-types/packages/SdCliServerPackage.d.ts +2 -1
- package/dist-types/utils/SdWebpackUtil.d.ts +1 -1
- package/dist-types/workers/client-ng-gen-worker.d.ts +1 -0
- package/package.json +7 -7
- package/schema/schema.json +72 -1
- package/sd-tsconfig.node.json +2 -1
- package/src/bin/sd-cli.ts +19 -4
- package/src/build-tools/SdCliNgModuleFilesGenerator.ts +122 -70
- package/src/build-tools/metadata/SdAotMetadataReader.ts +4 -1
- package/src/build-tools/metadata/SdIvyMetadataReader.ts +27 -4
- package/src/build-tools/metadata/SdMetadataError.ts +7 -0
- package/src/build-tools/metadata/SdMyMetadataReader.ts +25 -3
- package/src/builders/SdCliNgClientBuilder.ts +123 -66
- package/src/builders/SdCliNgLibraryBuilder.ts +79 -42
- package/src/builders/SdCliServerBuilder.ts +48 -19
- package/src/builders/SdCliTypescriptBuilder.ts +102 -78
- package/src/commons.ts +2 -1
- package/src/entry-points/SdCliProject.ts +22 -14
- package/src/packages/SdCliClientPackage.ts +5 -3
- package/src/packages/SdCliLibraryPackage.ts +4 -2
- package/src/packages/SdCliServerPackage.ts +4 -3
- package/src/utils/SdWebpackUtil.ts +42 -22
- package/src/workers/client-ng-gen-worker.ts +60 -0
- package/src/workers/lib-build-worker.ts +7 -6
- package/tsconfig.json +2 -1
|
@@ -15,6 +15,7 @@ export class SdCliLibraryPackage extends SdCliPackageBase {
|
|
|
15
15
|
|
|
16
16
|
public constructor(public readonly rootPath: string,
|
|
17
17
|
public readonly config: ISdLibraryPackageConfig,
|
|
18
|
+
private readonly _skipProcesses: ("emit" | "check" | "lint" | "genIndex")[],
|
|
18
19
|
private readonly _processWorkManager: SdProcessWorkManager) {
|
|
19
20
|
super(rootPath);
|
|
20
21
|
this._logger = Logger.get(["simplysm", "sd-cli", this.constructor.name, this.npmConfig.name]);
|
|
@@ -66,7 +67,7 @@ export class SdCliLibraryPackage extends SdCliPackageBase {
|
|
|
66
67
|
.on("complete", (results) => {
|
|
67
68
|
this.emit("complete", target, results);
|
|
68
69
|
})
|
|
69
|
-
.sendAsync(this.rootPath, target, watch, autoIndexConfig);
|
|
70
|
+
.sendAsync(this.rootPath, target, watch, this._skipProcesses, autoIndexConfig);
|
|
70
71
|
}
|
|
71
72
|
|
|
72
73
|
private async _genBuildTsconfigAsync(): Promise<void> {
|
|
@@ -105,7 +106,8 @@ export class SdCliLibraryPackage extends SdCliPackageBase {
|
|
|
105
106
|
strictInputAccessModifiers: true,
|
|
106
107
|
strictTemplates: true,
|
|
107
108
|
strictInputTypes: false,
|
|
108
|
-
strictOutputEventTypes: false
|
|
109
|
+
strictOutputEventTypes: false,
|
|
110
|
+
disableTypeScriptVersionCheck: true
|
|
109
111
|
};
|
|
110
112
|
}
|
|
111
113
|
|
|
@@ -15,7 +15,8 @@ export class SdCliServerPackage extends SdCliPackageBase {
|
|
|
15
15
|
}
|
|
16
16
|
|
|
17
17
|
public constructor(public readonly rootPath: string,
|
|
18
|
-
public readonly config: ISdServerPackageConfig
|
|
18
|
+
public readonly config: ISdServerPackageConfig,
|
|
19
|
+
public readonly useCache: boolean) {
|
|
19
20
|
super(rootPath);
|
|
20
21
|
}
|
|
21
22
|
|
|
@@ -23,7 +24,7 @@ export class SdCliServerPackage extends SdCliPackageBase {
|
|
|
23
24
|
await this._genBuildTsconfigAsync();
|
|
24
25
|
|
|
25
26
|
const buildTsconfigFilePath = path.resolve(this.rootPath, `sd-tsconfig.json`);
|
|
26
|
-
const builder = new SdCliServerBuilder(this.rootPath, buildTsconfigFilePath, process.cwd(), this.config);
|
|
27
|
+
const builder = new SdCliServerBuilder(this.rootPath, buildTsconfigFilePath, process.cwd(), this.config, this.useCache);
|
|
27
28
|
|
|
28
29
|
await builder
|
|
29
30
|
.on("change", () => {
|
|
@@ -50,7 +51,7 @@ export class SdCliServerPackage extends SdCliPackageBase {
|
|
|
50
51
|
await this._genBuildTsconfigAsync();
|
|
51
52
|
|
|
52
53
|
const buildTsconfigFilePath = path.resolve(this.rootPath, `sd-tsconfig.json`);
|
|
53
|
-
const builder = new SdCliServerBuilder(this.rootPath, buildTsconfigFilePath, process.cwd(), this.config);
|
|
54
|
+
const builder = new SdCliServerBuilder(this.rootPath, buildTsconfigFilePath, process.cwd(), this.config, this.useCache);
|
|
54
55
|
|
|
55
56
|
await builder
|
|
56
57
|
.on("change", () => {
|
|
@@ -1,6 +1,6 @@
|
|
|
1
1
|
import { ISdPackageBuildResult } from "../commons";
|
|
2
2
|
import * as webpack from "webpack";
|
|
3
|
-
import {
|
|
3
|
+
import { NeverEntryError } from "@simplysm/sd-core-common";
|
|
4
4
|
|
|
5
5
|
export class SdWebpackUtil {
|
|
6
6
|
public static getWebpackResults(stats: Error | webpack.Stats): ISdPackageBuildResult[] {
|
|
@@ -14,37 +14,57 @@ export class SdWebpackUtil {
|
|
|
14
14
|
|
|
15
15
|
const results: ISdPackageBuildResult[] = [];
|
|
16
16
|
|
|
17
|
-
const
|
|
17
|
+
for (const warn of stats.compilation.warnings) {
|
|
18
|
+
if (stats.compilation.options.ignoreWarnings?.some((ignoreWarning) => ignoreWarning(warn, stats.compilation))) continue;
|
|
18
19
|
|
|
19
|
-
|
|
20
|
-
|
|
21
|
-
|
|
22
|
-
|
|
23
|
-
|
|
24
|
-
message: this._statErrorToMessage(statWarning)
|
|
25
|
-
}))
|
|
26
|
-
);
|
|
20
|
+
results.push({
|
|
21
|
+
filePath: undefined,
|
|
22
|
+
severity: "warning",
|
|
23
|
+
message: this._errorToMessage(warn)
|
|
24
|
+
});
|
|
27
25
|
}
|
|
28
26
|
|
|
29
|
-
|
|
30
|
-
results.push(
|
|
31
|
-
|
|
32
|
-
|
|
33
|
-
|
|
34
|
-
|
|
35
|
-
}))
|
|
36
|
-
);
|
|
27
|
+
for (const err of stats.compilation.errors) {
|
|
28
|
+
results.push({
|
|
29
|
+
filePath: undefined,
|
|
30
|
+
severity: "error",
|
|
31
|
+
message: this._errorToMessage(err)
|
|
32
|
+
});
|
|
37
33
|
}
|
|
38
34
|
|
|
39
35
|
return results;
|
|
40
36
|
}
|
|
41
37
|
|
|
42
|
-
private static
|
|
43
|
-
|
|
44
|
-
|
|
38
|
+
private static _errorToMessage(err: Partial<webpack.WebpackError>): string {
|
|
39
|
+
let result = "";
|
|
40
|
+
|
|
41
|
+
if ("error" in err && "originalSassError" in err["error"]) {
|
|
42
|
+
const sassError = err["error"]["originalSassError"];
|
|
43
|
+
result += sassError.file.replace(/^\.\//, "");
|
|
44
|
+
// result += `(${sassError.line as number}${sassError.column !== undefined ? `, ${sassError.column as number}` : ""})`;
|
|
45
|
+
result += ": ";
|
|
46
|
+
result += err.name + ": ";
|
|
47
|
+
result += err.message;
|
|
45
48
|
}
|
|
46
49
|
else {
|
|
47
|
-
|
|
50
|
+
if (err.file !== undefined) {
|
|
51
|
+
result += err.file.replace(/^\.\//, "");
|
|
52
|
+
if (err.loc !== undefined) {
|
|
53
|
+
if ("start" in err.loc) {
|
|
54
|
+
result += `(${err.loc.start.line}${err.loc.start.column !== undefined ? `, ${err.loc.start.column}` : ""})`;
|
|
55
|
+
}
|
|
56
|
+
else {
|
|
57
|
+
throw new NeverEntryError();
|
|
58
|
+
}
|
|
59
|
+
}
|
|
60
|
+
result += ": ";
|
|
61
|
+
|
|
62
|
+
result += err.name + ": ";
|
|
63
|
+
}
|
|
64
|
+
|
|
65
|
+
result += err.message;
|
|
48
66
|
}
|
|
67
|
+
|
|
68
|
+
return result;
|
|
49
69
|
}
|
|
50
70
|
}
|
|
@@ -0,0 +1,60 @@
|
|
|
1
|
+
import { EventEmitter } from "events";
|
|
2
|
+
import { Logger, LoggerSeverity, SdProcessChildWorker } from "@simplysm/sd-core-node";
|
|
3
|
+
import { SdCliNgLibraryBuilder } from "../builders/SdCliNgLibraryBuilder";
|
|
4
|
+
import * as path from "path";
|
|
5
|
+
|
|
6
|
+
EventEmitter.defaultMaxListeners = 0;
|
|
7
|
+
process.setMaxListeners(0);
|
|
8
|
+
|
|
9
|
+
const logger = Logger.get(["simplysm", "sd-cli", "ng-gen-worker"]);
|
|
10
|
+
|
|
11
|
+
if (process.env.SD_CLI_LOGGER_SEVERITY === "DEBUG") {
|
|
12
|
+
Error.stackTraceLimit = 100; //Infinity;
|
|
13
|
+
|
|
14
|
+
Logger.setConfig(["simplysm", "sd-cli"], {
|
|
15
|
+
console: {
|
|
16
|
+
level: LoggerSeverity.debug
|
|
17
|
+
}
|
|
18
|
+
});
|
|
19
|
+
}
|
|
20
|
+
else {
|
|
21
|
+
Logger.setConfig(["simplysm", "sd-cli"], {
|
|
22
|
+
dot: true
|
|
23
|
+
});
|
|
24
|
+
}
|
|
25
|
+
|
|
26
|
+
|
|
27
|
+
try {
|
|
28
|
+
let ngGenerator: SdCliNgLibraryBuilder | undefined;
|
|
29
|
+
SdProcessChildWorker.defineWorker(async (worker, args) => {
|
|
30
|
+
const rootPath = args[0] as string;
|
|
31
|
+
const watch = args[1] as boolean;
|
|
32
|
+
const changedFilePaths = args[2] as string[] | undefined;
|
|
33
|
+
|
|
34
|
+
const tsconfigFilePath = path.resolve(rootPath, `sd-tsconfig.json`);
|
|
35
|
+
|
|
36
|
+
if (!ngGenerator || !changedFilePaths) {
|
|
37
|
+
ngGenerator = new SdCliNgLibraryBuilder(rootPath, tsconfigFilePath, ["emit", "check", "lint", "genIndex"], undefined);
|
|
38
|
+
const genDirtyFilePaths = await ngGenerator.reloadProgramAsync(watch);
|
|
39
|
+
const genResult = await ngGenerator.generateAdditionalFilesAsync(genDirtyFilePaths, watch);
|
|
40
|
+
worker.send("complete", {
|
|
41
|
+
dirtyFilePaths: [...genDirtyFilePaths, ...genResult.dirtyFilePaths],
|
|
42
|
+
result: genResult.result
|
|
43
|
+
});
|
|
44
|
+
}
|
|
45
|
+
else {
|
|
46
|
+
const genDirtyFilePaths = await ngGenerator.reloadChangedProgramAsync(changedFilePaths, watch);
|
|
47
|
+
if (genDirtyFilePaths.length === 0) {
|
|
48
|
+
worker.send("complete", { dirtyFilePaths: [], result: [] });
|
|
49
|
+
return;
|
|
50
|
+
}
|
|
51
|
+
|
|
52
|
+
const genResult = await ngGenerator.generateAdditionalFilesAsync(genDirtyFilePaths.distinct(), watch);
|
|
53
|
+
worker.send("complete", { dirtyFilePaths: genResult.dirtyFilePaths, result: genResult.result });
|
|
54
|
+
}
|
|
55
|
+
});
|
|
56
|
+
}
|
|
57
|
+
catch (err) {
|
|
58
|
+
logger.error(err);
|
|
59
|
+
process.exit(1);
|
|
60
|
+
}
|
|
@@ -14,14 +14,14 @@ const logger = Logger.get(["simplysm", "sd-cli", "lib-build-worker"]);
|
|
|
14
14
|
if (process.env.SD_CLI_LOGGER_SEVERITY === "DEBUG") {
|
|
15
15
|
Error.stackTraceLimit = 100; //Infinity;
|
|
16
16
|
|
|
17
|
-
Logger.setConfig({
|
|
17
|
+
Logger.setConfig(["simplysm", "sd-cli"], {
|
|
18
18
|
console: {
|
|
19
19
|
level: LoggerSeverity.debug
|
|
20
20
|
}
|
|
21
21
|
});
|
|
22
22
|
}
|
|
23
23
|
else {
|
|
24
|
-
Logger.setConfig({
|
|
24
|
+
Logger.setConfig(["simplysm", "sd-cli"], {
|
|
25
25
|
dot: true
|
|
26
26
|
});
|
|
27
27
|
}
|
|
@@ -32,13 +32,14 @@ try {
|
|
|
32
32
|
const rootPath = args[0] as string;
|
|
33
33
|
const target = args[1] as "node" | "browser" | "angular" | undefined;
|
|
34
34
|
const watch = args[2] as boolean;
|
|
35
|
+
const skipProcesses = args[3] as ("emit" | "check" | "lint" | "genIndex")[];
|
|
35
36
|
|
|
36
37
|
if (target === undefined) {
|
|
37
38
|
// 1. output를 내놓지 않는 Typescript 라이브러리(types)인 경우, typecheck와 lint만 수행
|
|
38
39
|
if (FsUtil.exists(path.resolve(rootPath, `tsconfig.json`))) {
|
|
39
40
|
const tsconfigFilePath = path.resolve(rootPath, `tsconfig.json`);
|
|
40
41
|
|
|
41
|
-
const builder = new SdCliTypescriptBuilder(rootPath, tsconfigFilePath, ["emit", "genIndex"], undefined);
|
|
42
|
+
const builder = new SdCliTypescriptBuilder(rootPath, tsconfigFilePath, skipProcesses.concat(["emit", "genIndex"]).distinct(), undefined);
|
|
42
43
|
await builder
|
|
43
44
|
.on("change", () => {
|
|
44
45
|
worker.send("change");
|
|
@@ -62,11 +63,11 @@ try {
|
|
|
62
63
|
}
|
|
63
64
|
}
|
|
64
65
|
else {
|
|
65
|
-
const autoIndexConfig = args[
|
|
66
|
+
const autoIndexConfig = args[4] as ISdAutoIndexConfig | undefined;
|
|
66
67
|
const tsconfigFilePath = path.resolve(rootPath, `sd-tsconfig.${target}.json`);
|
|
67
68
|
|
|
68
69
|
if (target !== "angular") {
|
|
69
|
-
const builder = new SdCliTypescriptBuilder(rootPath, tsconfigFilePath,
|
|
70
|
+
const builder = new SdCliTypescriptBuilder(rootPath, tsconfigFilePath, skipProcesses, autoIndexConfig);
|
|
70
71
|
await builder
|
|
71
72
|
.on("change", () => {
|
|
72
73
|
worker.send("change");
|
|
@@ -77,7 +78,7 @@ try {
|
|
|
77
78
|
.buildAsync(watch);
|
|
78
79
|
}
|
|
79
80
|
else {
|
|
80
|
-
const builder = new SdCliNgLibraryBuilder(rootPath, tsconfigFilePath,
|
|
81
|
+
const builder = new SdCliNgLibraryBuilder(rootPath, tsconfigFilePath, skipProcesses, autoIndexConfig);
|
|
81
82
|
await builder
|
|
82
83
|
.on("change", () => {
|
|
83
84
|
worker.send("change");
|