@simplysm/sd-cli 6.0.27 → 6.0.36

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.
Files changed (78) hide show
  1. package/dist-node/bin/sd-cli.js +19 -4
  2. package/dist-node/bin/sd-cli.js.map +1 -1
  3. package/dist-node/build-tools/SdCliNgModuleFilesGenerator.js +98 -57
  4. package/dist-node/build-tools/SdCliNgModuleFilesGenerator.js.map +1 -1
  5. package/dist-node/build-tools/metadata/SdAotMetadataReader.js +16 -12
  6. package/dist-node/build-tools/metadata/SdAotMetadataReader.js.map +1 -1
  7. package/dist-node/build-tools/metadata/SdIvyMetadataReader.js +23 -6
  8. package/dist-node/build-tools/metadata/SdIvyMetadataReader.js.map +1 -1
  9. package/dist-node/build-tools/metadata/SdMetadataError.js +13 -0
  10. package/dist-node/build-tools/metadata/SdMetadataError.js.map +1 -0
  11. package/dist-node/build-tools/metadata/SdMyMetadataReader.js +22 -5
  12. package/dist-node/build-tools/metadata/SdMyMetadataReader.js.map +1 -1
  13. package/dist-node/builders/SdCliNgClientBuilder.js +74 -74
  14. package/dist-node/builders/SdCliNgClientBuilder.js.map +1 -1
  15. package/dist-node/builders/SdCliNgLibraryBuilder.js +38 -34
  16. package/dist-node/builders/SdCliNgLibraryBuilder.js.map +1 -1
  17. package/dist-node/builders/SdCliServerBuilder.js +46 -45
  18. package/dist-node/builders/SdCliServerBuilder.js.map +1 -1
  19. package/dist-node/builders/SdCliTypescriptBuilder.js +65 -60
  20. package/dist-node/builders/SdCliTypescriptBuilder.js.map +1 -1
  21. package/dist-node/entry-points/SdCliLocalUpdater.js +30 -29
  22. package/dist-node/entry-points/SdCliLocalUpdater.js.map +1 -1
  23. package/dist-node/entry-points/SdCliProject.js +10 -16
  24. package/dist-node/entry-points/SdCliProject.js.map +1 -1
  25. package/dist-node/packages/SdCliClientPackage.js +6 -4
  26. package/dist-node/packages/SdCliClientPackage.js.map +1 -1
  27. package/dist-node/packages/SdCliLibraryPackage.js +5 -3
  28. package/dist-node/packages/SdCliLibraryPackage.js.map +1 -1
  29. package/dist-node/packages/SdCliServerPackage.js +4 -3
  30. package/dist-node/packages/SdCliServerPackage.js.map +1 -1
  31. package/dist-node/utils/SdProjectConfigUtil.js +1 -1
  32. package/dist-node/utils/SdProjectConfigUtil.js.map +1 -1
  33. package/dist-node/utils/SdWebpackUtil.js +33 -13
  34. package/dist-node/utils/SdWebpackUtil.js.map +1 -1
  35. package/dist-node/workers/client-ng-gen-worker.js +54 -0
  36. package/dist-node/workers/client-ng-gen-worker.js.map +1 -0
  37. package/dist-node/workers/lib-build-worker.js +7 -6
  38. package/dist-node/workers/lib-build-worker.js.map +1 -1
  39. package/dist-types/build-tools/metadata/SdIvyMetadataReader.d.ts +1 -0
  40. package/dist-types/build-tools/metadata/SdMetadataError.d.ts +6 -0
  41. package/dist-types/build-tools/metadata/SdMyMetadataReader.d.ts +1 -0
  42. package/dist-types/builders/SdCliNgClientBuilder.d.ts +6 -2
  43. package/dist-types/builders/SdCliNgLibraryBuilder.d.ts +1 -1
  44. package/dist-types/builders/SdCliServerBuilder.d.ts +2 -1
  45. package/dist-types/builders/SdCliTypescriptBuilder.d.ts +5 -5
  46. package/dist-types/commons.d.ts +4 -1
  47. package/dist-types/entry-points/SdCliLocalUpdater.d.ts +1 -1
  48. package/dist-types/entry-points/SdCliProject.d.ts +2 -0
  49. package/dist-types/packages/SdCliClientPackage.d.ts +2 -1
  50. package/dist-types/packages/SdCliLibraryPackage.d.ts +2 -1
  51. package/dist-types/packages/SdCliServerPackage.d.ts +2 -1
  52. package/dist-types/utils/SdWebpackUtil.d.ts +1 -1
  53. package/dist-types/workers/client-ng-gen-worker.d.ts +1 -0
  54. package/package.json +7 -7
  55. package/schema/schema.json +185 -122
  56. package/sd-tsconfig.node.json +2 -1
  57. package/src/bin/sd-cli.ts +19 -4
  58. package/src/build-tools/SdCliNgModuleFilesGenerator.ts +114 -70
  59. package/src/build-tools/metadata/SdAotMetadataReader.ts +8 -2
  60. package/src/build-tools/metadata/SdIvyMetadataReader.ts +27 -4
  61. package/src/build-tools/metadata/SdMetadataError.ts +7 -0
  62. package/src/build-tools/metadata/SdMyMetadataReader.ts +25 -3
  63. package/src/builders/SdCliNgClientBuilder.ts +123 -66
  64. package/src/builders/SdCliNgLibraryBuilder.ts +79 -39
  65. package/src/builders/SdCliServerBuilder.ts +61 -44
  66. package/src/builders/SdCliTypescriptBuilder.ts +92 -73
  67. package/src/commons.ts +3 -2
  68. package/src/entry-points/SdCliLocalUpdater.ts +40 -33
  69. package/src/entry-points/SdCliProject.ts +14 -13
  70. package/src/packages/SdCliClientPackage.ts +5 -3
  71. package/src/packages/SdCliLibraryPackage.ts +4 -2
  72. package/src/packages/SdCliServerPackage.ts +4 -3
  73. package/src/utils/SdCliFileCrypto.ts +1 -1
  74. package/src/utils/SdProjectConfigUtil.ts +1 -1
  75. package/src/utils/SdWebpackUtil.ts +42 -22
  76. package/src/workers/client-ng-gen-worker.ts +60 -0
  77. package/src/workers/lib-build-worker.ts +7 -6
  78. package/tsconfig.json +2 -1
@@ -1,6 +1,6 @@
1
1
  import { ISdPackageBuildResult } from "../commons";
2
2
  import * as webpack from "webpack";
3
- import { StringUtil } from "@simplysm/sd-core-common";
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 info = stats.toJson("errors-warnings");
17
+ for (const warn of stats.compilation.warnings) {
18
+ if (stats.compilation.options.ignoreWarnings?.some((ignoreWarning) => ignoreWarning(warn, stats.compilation))) continue;
18
19
 
19
- if (info.warnings) {
20
- results.push(
21
- ...info.warnings.map((statWarning) => ({
22
- filePath: undefined,
23
- severity: "warning" as const,
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
- if (info.errors) {
30
- results.push(
31
- ...info.errors.map((statError) => ({
32
- filePath: undefined,
33
- severity: "error" as const,
34
- message: this._statErrorToMessage(statError)
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 _statErrorToMessage(statsError: webpack.StatsError): string {
43
- if (StringUtil.isNullOrEmpty(statsError.moduleName)) {
44
- return statsError.message;
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
- return `${statsError.moduleName.replace(/^\.\//, "")}:${statsError.loc!} - error: ${statsError.message}`;
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[3] as ISdAutoIndexConfig | undefined;
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, [], autoIndexConfig);
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, [], autoIndexConfig);
81
+ const builder = new SdCliNgLibraryBuilder(rootPath, tsconfigFilePath, skipProcesses, autoIndexConfig);
81
82
  await builder
82
83
  .on("change", () => {
83
84
  worker.send("change");
package/tsconfig.json CHANGED
@@ -23,6 +23,7 @@
23
23
  },
24
24
  "files": [
25
25
  "src/bin/sd-cli.ts",
26
- "src/workers/lib-build-worker.ts"
26
+ "src/workers/lib-build-worker.ts",
27
+ "src/workers/client-ng-gen-worker.ts"
27
28
  ]
28
29
  }