@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.
Files changed (183) hide show
  1. package/dist/{build-tools → entry}/SdCliCordova.d.ts +5 -6
  2. package/dist/{build-tools → entry}/SdCliCordova.js +117 -99
  3. package/dist/entry/SdCliCordova.js.map +1 -0
  4. package/dist/entry/SdCliElectron.d.ts +2 -2
  5. package/dist/entry/SdCliElectron.js +50 -40
  6. package/dist/entry/SdCliElectron.js.map +1 -1
  7. package/dist/entry/SdCliLocalUpdate.d.ts +1 -2
  8. package/dist/entry/SdCliLocalUpdate.js +26 -27
  9. package/dist/entry/SdCliLocalUpdate.js.map +1 -1
  10. package/dist/entry/SdCliProject.d.ts +1 -5
  11. package/dist/entry/SdCliProject.js +62 -288
  12. package/dist/entry/SdCliProject.js.map +1 -1
  13. package/dist/index.d.ts +23 -17
  14. package/dist/index.js +23 -17
  15. package/dist/index.js.map +1 -1
  16. package/dist/pkg-builders/SdMultiBuildRunner.d.ts +21 -0
  17. package/dist/pkg-builders/SdMultiBuildRunner.js +174 -0
  18. package/dist/pkg-builders/SdMultiBuildRunner.js.map +1 -0
  19. package/dist/pkg-builders/client/SdCliNgRoutesFileGenerator.d.ts +4 -0
  20. package/dist/{build-tools → pkg-builders/client}/SdCliNgRoutesFileGenerator.js +7 -7
  21. package/dist/pkg-builders/client/SdCliNgRoutesFileGenerator.js.map +1 -0
  22. package/dist/pkg-builders/client/SdClientBuildRunner.d.ts +20 -0
  23. package/dist/pkg-builders/client/SdClientBuildRunner.js +135 -0
  24. package/dist/pkg-builders/client/SdClientBuildRunner.js.map +1 -0
  25. package/dist/pkg-builders/client/SdNgBundler.d.ts +29 -0
  26. package/dist/{build-tools → pkg-builders/client}/SdNgBundler.js +100 -95
  27. package/dist/pkg-builders/client/SdNgBundler.js.map +1 -0
  28. package/dist/{build-tools → pkg-builders/client}/SdNgBundlerContext.d.ts +1 -2
  29. package/dist/{build-tools → pkg-builders/client}/SdNgBundlerContext.js +19 -45
  30. package/dist/pkg-builders/client/SdNgBundlerContext.js.map +1 -0
  31. package/dist/pkg-builders/client/createSdNgPlugin.d.ts +10 -0
  32. package/dist/{bundle-plugins/sdNgPlugin.js → pkg-builders/client/createSdNgPlugin.js} +32 -33
  33. package/dist/pkg-builders/client/createSdNgPlugin.js.map +1 -0
  34. package/dist/pkg-builders/lib/SdCliIndexFileGenerator.d.ts +5 -0
  35. package/dist/{build-tools → pkg-builders/lib}/SdCliIndexFileGenerator.js +11 -11
  36. package/dist/pkg-builders/lib/SdCliIndexFileGenerator.js.map +1 -0
  37. package/dist/pkg-builders/lib/SdJsLibBuildRunner.d.ts +16 -0
  38. package/dist/pkg-builders/lib/SdJsLibBuildRunner.js +81 -0
  39. package/dist/pkg-builders/lib/SdJsLibBuildRunner.js.map +1 -0
  40. package/dist/pkg-builders/lib/SdTsLibBuildRunner.d.ts +13 -0
  41. package/dist/pkg-builders/lib/SdTsLibBuildRunner.js +89 -0
  42. package/dist/pkg-builders/lib/SdTsLibBuildRunner.js.map +1 -0
  43. package/dist/pkg-builders/lib/SdTsLibBuilder.d.ts +14 -0
  44. package/dist/pkg-builders/lib/SdTsLibBuilder.js +54 -0
  45. package/dist/pkg-builders/lib/SdTsLibBuilder.js.map +1 -0
  46. package/dist/pkg-builders/server/SdServerBuildRunner.d.ts +17 -0
  47. package/dist/{builders/SdCliServerBuilder.js → pkg-builders/server/SdServerBuildRunner.js} +48 -53
  48. package/dist/pkg-builders/server/SdServerBuildRunner.js.map +1 -0
  49. package/dist/pkg-builders/server/SdServerBundler.d.ts +19 -0
  50. package/dist/{build-tools → pkg-builders/server}/SdServerBundler.js +25 -30
  51. package/dist/pkg-builders/server/SdServerBundler.js.map +1 -0
  52. package/dist/pkg-builders/server/createSdServerPlugin.d.ts +10 -0
  53. package/dist/pkg-builders/server/createSdServerPlugin.js +53 -0
  54. package/dist/pkg-builders/server/createSdServerPlugin.js.map +1 -0
  55. package/dist/sd-cli.js +61 -54
  56. package/dist/sd-cli.js.map +1 -1
  57. package/dist/ts-builder/SdTsCompileWorker.d.ts +9 -0
  58. package/dist/ts-builder/SdTsCompileWorker.js +16 -0
  59. package/dist/ts-builder/SdTsCompileWorker.js.map +1 -0
  60. package/dist/ts-builder/SdTsCompiler.d.ts +7 -0
  61. package/dist/{build-tools → ts-builder}/SdTsCompiler.js +226 -212
  62. package/dist/ts-builder/SdTsCompiler.js.map +1 -0
  63. package/dist/types/build-plugin.type.d.ts +14 -0
  64. package/dist/types/build-plugin.type.js +2 -0
  65. package/dist/types/build-plugin.type.js.map +1 -0
  66. package/dist/types/build.type.d.ts +15 -0
  67. package/dist/types/build.type.js +2 -0
  68. package/dist/types/build.type.js.map +1 -0
  69. package/dist/types/common-configs.type.d.ts +22 -0
  70. package/dist/types/common-configs.type.js +2 -0
  71. package/dist/types/common-configs.type.js.map +1 -0
  72. package/dist/types/sd-configs.type.d.ts +99 -0
  73. package/dist/types/sd-configs.type.js +2 -0
  74. package/dist/types/sd-configs.type.js.map +1 -0
  75. package/dist/types/ts-compiler.type.d.ts +29 -0
  76. package/dist/types/ts-compiler.type.js +2 -0
  77. package/dist/types/ts-compiler.type.js.map +1 -0
  78. package/dist/types/workers.type.d.ts +49 -0
  79. package/dist/types/workers.type.js +2 -0
  80. package/dist/types/workers.type.js.map +1 -0
  81. package/dist/utils/SdCliConvertMessageUtil.d.ts +21 -0
  82. package/dist/utils/SdCliConvertMessageUtil.js +137 -0
  83. package/dist/utils/SdCliConvertMessageUtil.js.map +1 -0
  84. package/dist/workers/compile-worker.js +27 -0
  85. package/dist/workers/compile-worker.js.map +1 -0
  86. package/dist/workers/lint-worker.js +36 -0
  87. package/dist/workers/lint-worker.js.map +1 -0
  88. package/dist/workers/server-worker.d.ts +1 -0
  89. package/dist/workers/server-worker.js +49 -0
  90. package/dist/workers/server-worker.js.map +1 -0
  91. package/lib/dev-worker.cjs +5 -0
  92. package/package.json +7 -7
  93. package/src/entry/SdCliCordova.ts +363 -0
  94. package/src/entry/SdCliElectron.ts +96 -69
  95. package/src/entry/SdCliLocalUpdate.ts +43 -44
  96. package/src/entry/SdCliProject.ts +72 -417
  97. package/src/index.ts +23 -17
  98. package/src/pkg-builders/SdMultiBuildRunner.ts +250 -0
  99. package/src/{build-tools → pkg-builders/client}/SdCliNgRoutesFileGenerator.ts +7 -7
  100. package/src/pkg-builders/client/SdClientBuildRunner.ts +191 -0
  101. package/src/{build-tools → pkg-builders/client}/SdNgBundler.ts +125 -121
  102. package/src/pkg-builders/client/SdNgBundlerContext.ts +111 -0
  103. package/src/{bundle-plugins/sdNgPlugin.ts → pkg-builders/client/createSdNgPlugin.ts} +43 -46
  104. package/src/{build-tools → pkg-builders/lib}/SdCliIndexFileGenerator.ts +11 -11
  105. package/src/pkg-builders/lib/SdJsLibBuildRunner.ts +105 -0
  106. package/src/pkg-builders/lib/SdTsLibBuildRunner.ts +128 -0
  107. package/src/pkg-builders/lib/SdTsLibBuilder.ts +69 -0
  108. package/src/{builders/SdCliServerBuilder.ts → pkg-builders/server/SdServerBuildRunner.ts} +66 -78
  109. package/src/{build-tools → pkg-builders/server}/SdServerBundler.ts +40 -41
  110. package/src/pkg-builders/server/createSdServerPlugin.ts +77 -0
  111. package/src/sd-cli.ts +197 -211
  112. package/src/ts-builder/SdTsCompileWorker.ts +21 -0
  113. package/src/ts-builder/SdTsCompiler.ts +758 -0
  114. package/src/types/build-plugin.type.ts +16 -0
  115. package/src/types/build.type.ts +17 -0
  116. package/src/types/common-configs.type.ts +27 -0
  117. package/src/types/sd-configs.type.ts +114 -0
  118. package/src/types/ts-compiler.type.ts +29 -0
  119. package/src/types/workers.type.ts +27 -0
  120. package/src/utils/SdCliConvertMessageUtil.ts +177 -0
  121. package/src/workers/compile-worker.ts +31 -0
  122. package/src/workers/lint-worker.ts +44 -0
  123. package/src/workers/server-worker.ts +52 -0
  124. package/tsconfig.json +7 -1
  125. package/dist/build-cluster.js +0 -201
  126. package/dist/build-cluster.js.map +0 -1
  127. package/dist/build-tools/SdCliCordova.js.map +0 -1
  128. package/dist/build-tools/SdCliIndexFileGenerator.d.ts +0 -5
  129. package/dist/build-tools/SdCliIndexFileGenerator.js.map +0 -1
  130. package/dist/build-tools/SdCliNgRoutesFileGenerator.d.ts +0 -4
  131. package/dist/build-tools/SdCliNgRoutesFileGenerator.js.map +0 -1
  132. package/dist/build-tools/SdLinter.d.ts +0 -5
  133. package/dist/build-tools/SdLinter.js +0 -49
  134. package/dist/build-tools/SdLinter.js.map +0 -1
  135. package/dist/build-tools/SdNgBundler.d.ts +0 -29
  136. package/dist/build-tools/SdNgBundler.js.map +0 -1
  137. package/dist/build-tools/SdNgBundlerContext.js.map +0 -1
  138. package/dist/build-tools/SdServerBundler.d.ts +0 -20
  139. package/dist/build-tools/SdServerBundler.js.map +0 -1
  140. package/dist/build-tools/SdTsCompiler.d.ts +0 -34
  141. package/dist/build-tools/SdTsCompiler.js.map +0 -1
  142. package/dist/build-tools/SdTsLibBundler.d.ts +0 -13
  143. package/dist/build-tools/SdTsLibBundler.js +0 -58
  144. package/dist/build-tools/SdTsLibBundler.js.map +0 -1
  145. package/dist/builders/SdCliClientBuilder.d.ts +0 -18
  146. package/dist/builders/SdCliClientBuilder.js +0 -151
  147. package/dist/builders/SdCliClientBuilder.js.map +0 -1
  148. package/dist/builders/SdCliJsLibLinter.d.ts +0 -13
  149. package/dist/builders/SdCliJsLibLinter.js +0 -60
  150. package/dist/builders/SdCliJsLibLinter.js.map +0 -1
  151. package/dist/builders/SdCliServerBuilder.d.ts +0 -15
  152. package/dist/builders/SdCliServerBuilder.js.map +0 -1
  153. package/dist/builders/SdCliTsLibBuilder.d.ts +0 -12
  154. package/dist/builders/SdCliTsLibBuilder.js +0 -90
  155. package/dist/builders/SdCliTsLibBuilder.js.map +0 -1
  156. package/dist/bundle-plugins/sdNgPlugin.d.ts +0 -16
  157. package/dist/bundle-plugins/sdNgPlugin.js.map +0 -1
  158. package/dist/bundle-plugins/sdServerPlugin.d.ts +0 -16
  159. package/dist/bundle-plugins/sdServerPlugin.js +0 -63
  160. package/dist/bundle-plugins/sdServerPlugin.js.map +0 -1
  161. package/dist/commons.d.ts +0 -145
  162. package/dist/commons.js +0 -2
  163. package/dist/commons.js.map +0 -1
  164. package/dist/server-worker.js +0 -57
  165. package/dist/server-worker.js.map +0 -1
  166. package/dist/utils/SdCliBuildResultUtil.d.ts +0 -16
  167. package/dist/utils/SdCliBuildResultUtil.js +0 -54
  168. package/dist/utils/SdCliBuildResultUtil.js.map +0 -1
  169. package/src/build-cluster.ts +0 -212
  170. package/src/build-tools/SdCliCordova.ts +0 -340
  171. package/src/build-tools/SdLinter.ts +0 -65
  172. package/src/build-tools/SdNgBundlerContext.ts +0 -137
  173. package/src/build-tools/SdTsCompiler.ts +0 -754
  174. package/src/build-tools/SdTsLibBundler.ts +0 -72
  175. package/src/builders/SdCliClientBuilder.ts +0 -211
  176. package/src/builders/SdCliJsLibLinter.ts +0 -72
  177. package/src/builders/SdCliTsLibBuilder.ts +0 -126
  178. package/src/bundle-plugins/sdServerPlugin.ts +0 -94
  179. package/src/commons.ts +0 -171
  180. package/src/server-worker.ts +0 -65
  181. package/src/utils/SdCliBuildResultUtil.ts +0 -63
  182. /package/dist/{build-cluster.d.ts → workers/compile-worker.d.ts} +0 -0
  183. /package/dist/{server-worker.d.ts → workers/lint-worker.d.ts} +0 -0
@@ -0,0 +1,16 @@
1
+ import esbuild from "esbuild";
2
+ import { TNormPath } from "@simplysm/sd-core-node";
3
+
4
+ export interface ISdCliServerPluginResultCache {
5
+ watchFileSet?: Set<TNormPath>;
6
+ affectedFileSet?: Set<TNormPath>;
7
+ outputFiles?: esbuild.OutputFile[];
8
+ metafile?: esbuild.Metafile;
9
+ }
10
+
11
+ export interface ISdCliNgPluginResultCache {
12
+ watchFileSet?: Set<TNormPath>;
13
+ affectedFileSet?: Set<TNormPath>;
14
+ outputFiles?: esbuild.OutputFile[];
15
+ metafile?: esbuild.Metafile;
16
+ }
@@ -0,0 +1,17 @@
1
+ import { TNormPath } from "@simplysm/sd-core-node";
2
+
3
+ export interface ISdBuildRunnerResult {
4
+ affectedFilePathSet: Set<TNormPath>;
5
+ buildMessages: ISdBuildMessage[];
6
+ emitFileSet: Set<TNormPath>;
7
+ }
8
+
9
+ export interface ISdBuildMessage {
10
+ filePath: TNormPath | undefined;
11
+ line: number | undefined;
12
+ char: number | undefined;
13
+ code: string | undefined;
14
+ severity: "error" | "warning" | "suggestion" | "message";
15
+ message: string;
16
+ type: string | undefined;
17
+ }
@@ -0,0 +1,27 @@
1
+ export interface INpmConfig {
2
+ name: string;
3
+ description?: string;
4
+ version: string;
5
+ workspaces?: string[];
6
+
7
+ dependencies?: Record<string, string>;
8
+ optionalDependencies?: Record<string, string>;
9
+ devDependencies?: Record<string, string>;
10
+ peerDependencies?: Record<string, string>;
11
+ peerDependenciesMeta?: Record<
12
+ string,
13
+ {
14
+ optional?: boolean;
15
+ }
16
+ >;
17
+
18
+ resolutions?: Record<string, string>;
19
+
20
+ scripts?: Record<string, string>;
21
+ }
22
+
23
+ export interface ITsConfig {
24
+ files?: string[];
25
+ compilerOptions: { lib: string[] };
26
+ angularCompilerOptions?: {};
27
+ }
@@ -0,0 +1,114 @@
1
+ export interface ISdProjectConfig {
2
+ packages: Record<string, TSdPackageConfig | undefined>;
3
+ localUpdates?: Record<string, string>;
4
+ postPublish?: TSdPostPublishConfig[];
5
+ }
6
+
7
+ export type TSdProjectConfigFn = (isDev: boolean, opts?: string[]) => ISdProjectConfig;
8
+
9
+ export type TSdPackageConfig = ISdLibPackageConfig | ISdServerPackageConfig | ISdClientPackageConfig;
10
+
11
+ export interface ISdLibPackageConfig {
12
+ type: "library";
13
+ publish?: "npm";
14
+ polyfills?: string[];
15
+ noGenIndex?: boolean;
16
+ }
17
+
18
+ export interface ISdServerPackageConfig {
19
+ type: "server";
20
+ externals?: string[];
21
+ publish?: ISdLocalDirectoryPublishConfig | ISdFtpPublishConfig;
22
+ configs?: Record<string, any>;
23
+ env?: Record<string, string>;
24
+ pm2?: {
25
+ name?: string;
26
+ ignoreWatchPaths?: string[];
27
+ noInterpreter?: boolean;
28
+ noStartScript?: boolean;
29
+ };
30
+ iis?: {
31
+ nodeExeFilePath?: string;
32
+ };
33
+ }
34
+
35
+ export interface ISdClientPackageConfig {
36
+ type: "client";
37
+ server?: string | { port: number };
38
+ publish?: ISdLocalDirectoryPublishConfig | ISdFtpPublishConfig;
39
+ env?: Record<string, string>;
40
+ configs?: Record<string, any>;
41
+ noLazyRoute?: boolean;
42
+ forceProductionMode?: boolean;
43
+
44
+ builder?: {
45
+ web?: ISdClientBuilderWebConfig;
46
+ electron?: ISdClientBuilderElectronConfig;
47
+ cordova?: ISdClientBuilderCordovaConfig;
48
+ };
49
+ }
50
+
51
+ export interface ISdLocalDirectoryPublishConfig {
52
+ type: "local-directory";
53
+ path: string;
54
+ }
55
+
56
+ export interface ISdFtpPublishConfig {
57
+ type: "ftp" | "ftps" | "sftp";
58
+ host: string;
59
+ port?: number;
60
+ path?: string;
61
+ user?: string;
62
+ pass?: string;
63
+ }
64
+
65
+ export interface ISdClientBuilderElectronConfig {
66
+ appId: string;
67
+ installerIcon?: string;
68
+ postInstallScript?: string;
69
+ // devServerHost?: string;
70
+ // devServerPort?: number;
71
+ reinstallDependencies?: string[];
72
+ env?: Record<string, string>;
73
+ }
74
+
75
+ export interface ISdClientBuilderWebConfig {
76
+ // devServerHost?: string;
77
+ // devServerPort?: number;
78
+ env?: Record<string, string>;
79
+ }
80
+
81
+ export interface ISdClientBuilderCordovaConfig {
82
+ appId: string;
83
+ appName: string;
84
+ plugins?: string[];
85
+ icon?: string;
86
+ debug?: boolean;
87
+ platform?: {
88
+ browser?: {};
89
+ android?: {
90
+ bundle?: boolean;
91
+ sign?: {
92
+ keystore: string;
93
+ storePassword: string;
94
+ alias: string;
95
+ password: string;
96
+ keystoreType: string;
97
+ };
98
+ sdkVersion?: number;
99
+ permissions?: {
100
+ name: string;
101
+ maxSdkVersion?: number;
102
+ }[];
103
+ };
104
+ };
105
+ env?: Record<string, string>;
106
+ browserslist?: string[];
107
+ }
108
+
109
+ export type TSdPostPublishConfig = ISdPostPublishScriptConfig;
110
+
111
+ export interface ISdPostPublishScriptConfig {
112
+ type: "script";
113
+ script: string;
114
+ }
@@ -0,0 +1,29 @@
1
+ import { CompilerOptions } from "typescript";
2
+ import esbuild from "esbuild";
3
+ import { ISdBuildMessage } from "./build.type";
4
+ import { TNormPath } from "@simplysm/sd-core-node";
5
+
6
+ export interface SdTsCompilerOptions {
7
+ pkgPath: TNormPath;
8
+ additionalOptions: CompilerOptions;
9
+ isForBundle: boolean;
10
+ isDevMode: boolean;
11
+ watchScopePaths: TNormPath[];
12
+ globalStyleFilePath?: TNormPath;
13
+ }
14
+
15
+ export interface ISdTsCompilerResult {
16
+ messages: ISdBuildMessage[];
17
+ stylesheetBundlingResultMap: Map<TNormPath, IStylesheetBundlingResult>;
18
+ emittedFilesCacheMap: Map<TNormPath, { outAbsPath?: TNormPath; text: string }[]>;
19
+ emitFileSet: Set<TNormPath>;
20
+ watchFileSet: Set<TNormPath>;
21
+ affectedFileSet: Set<TNormPath>;
22
+ }
23
+
24
+ export interface IStylesheetBundlingResult {
25
+ outputFiles: esbuild.OutputFile[];
26
+ metafile?: esbuild.Metafile;
27
+ errors?: esbuild.Message[];
28
+ warnings?: esbuild.Message[];
29
+ }
@@ -0,0 +1,27 @@
1
+ import { ESLint } from "eslint";
2
+ import { ISdTsCompilerResult, SdTsCompilerOptions } from "./ts-compiler.type";
3
+ import { TNormPath } from "@simplysm/sd-core-node";
4
+
5
+ export interface TServerWorkerType {
6
+ methods: {
7
+ listen: { params: [{ path: string } | { port: number }]; returnType: number };
8
+ setPathProxy: { params: [Record<string, string | number>]; returnType: void };
9
+ broadcastReload: { params: [Set<string>]; returnType: void };
10
+ };
11
+ events: {};
12
+ }
13
+
14
+ export interface TSdLintWorkerType {
15
+ methods: {
16
+ lint: { params: [{ cwd: string; fileSet: Set<string> }]; returnType: ESLint.LintResult[] };
17
+ };
18
+ events: {};
19
+ }
20
+
21
+ export interface TSdTsCompileWorkerType {
22
+ methods: {
23
+ initialize: { params: [SdTsCompilerOptions]; returnType: void };
24
+ compile: { params: [Set<TNormPath>?]; returnType: ISdTsCompilerResult };
25
+ };
26
+ events: {};
27
+ }
@@ -0,0 +1,177 @@
1
+ import ts from "typescript";
2
+ import os from "os";
3
+ import path from "path";
4
+ import { PartialMessage } from "esbuild";
5
+ import { ESLint } from "eslint";
6
+ import { ISdBuildMessage } from "../types/build.type";
7
+ import { PathUtil } from "@simplysm/sd-core-node";
8
+
9
+ export class SdCliConvertMessageUtil {
10
+ static convertToBuildMessagesFromTsDiag(diags: ts.Diagnostic[]): ISdBuildMessage[] {
11
+ return diags.map((diag) => {
12
+ const severity =
13
+ diag.category === ts.DiagnosticCategory.Error
14
+ ? ("error" as const)
15
+ : diag.category === ts.DiagnosticCategory.Warning
16
+ ? ("warning" as const)
17
+ : diag.category === ts.DiagnosticCategory.Suggestion
18
+ ? ("suggestion" as const)
19
+ : ("message" as const);
20
+
21
+ const code = `TS${diag.code}`;
22
+ const message = ts.flattenDiagnosticMessageText(diag.messageText, os.EOL);
23
+
24
+ const filePath = diag.file ? PathUtil.norm(path.resolve(diag.file.fileName)) : undefined;
25
+ const position =
26
+ diag.file && diag.start !== undefined ? diag.file.getLineAndCharacterOfPosition(diag.start) : undefined;
27
+ const line = position ? position.line + 1 : undefined;
28
+ const char = position ? position.character + 1 : undefined;
29
+
30
+ return {
31
+ filePath,
32
+ line,
33
+ char,
34
+ code,
35
+ severity,
36
+ message,
37
+ type: "compile",
38
+ };
39
+ });
40
+ }
41
+
42
+ static convertToBuildMessagesFromEsbuild(
43
+ result: {
44
+ errors?: PartialMessage[];
45
+ warnings?: PartialMessage[];
46
+ },
47
+ orgPath: string,
48
+ ): ISdBuildMessage[] {
49
+ const convertFn = (msg: PartialMessage, severity: "error" | "warning") => {
50
+ const filePath = msg.location?.file != null ? PathUtil.norm(orgPath, msg.location.file) : undefined;
51
+ const line = msg.location?.line;
52
+ const char = msg.location?.column;
53
+ const code = msg.text!.slice(0, msg.text!.indexOf(":"));
54
+ const message = `${msg.text!.slice(msg.text!.indexOf(":") + 1)}${Boolean(msg.id) ? ` (${msg.id})` : ``}`;
55
+
56
+ return {
57
+ filePath,
58
+ line,
59
+ char,
60
+ code,
61
+ severity,
62
+ message,
63
+ type: msg.pluginName,
64
+ };
65
+ };
66
+
67
+ return [
68
+ ...(result.errors?.map((msg) => convertFn(msg, "error")) ?? []),
69
+ ...(result.warnings?.map((msg) => convertFn(msg, "warning")) ?? []),
70
+ ];
71
+ }
72
+
73
+ static convertToBuildMessagesFromEslint(results: ESLint.LintResult[]): ISdBuildMessage[] {
74
+ return results.mapMany((result) =>
75
+ result.messages.map((msg) => ({
76
+ filePath: PathUtil.norm(result.filePath),
77
+ line: msg.line,
78
+ char: msg.column,
79
+ code: msg.messageId,
80
+ severity: msg.severity === 1 ? ("warning" as const) : ("error" as const),
81
+ message: msg.message + (Boolean(msg.ruleId) ? ` (${msg.ruleId})` : ``),
82
+ type: "lint" as const,
83
+ })),
84
+ );
85
+ }
86
+
87
+ static convertToEsbuildFromBuildMessages(
88
+ messages: ISdBuildMessage[],
89
+ orgPath: string,
90
+ ): {
91
+ errors: PartialMessage[];
92
+ warnings: PartialMessage[];
93
+ } {
94
+ return {
95
+ errors: messages
96
+ .filter((msg) => msg.severity === "error")
97
+ .map((msg) => ({
98
+ id: msg.code,
99
+ pluginName: msg.type,
100
+ text: msg.message,
101
+ location: {
102
+ file: Boolean(msg.filePath) ? path.relative(orgPath, msg.filePath!) : undefined,
103
+ line: msg.line,
104
+ column: msg.char,
105
+ },
106
+ })),
107
+ warnings: messages
108
+ .filter((msg) => msg.severity !== "error")
109
+ .map((msg) => ({
110
+ id: msg.code,
111
+ pluginName: msg.type,
112
+ text: msg.message,
113
+ location: {
114
+ file: Boolean(msg.filePath) ? path.relative(orgPath, msg.filePath!) : undefined,
115
+ line: msg.line,
116
+ column: msg.char,
117
+ },
118
+ })),
119
+ };
120
+ }
121
+
122
+ static convertToEsbuildFromEslint(
123
+ results: ESLint.LintResult[],
124
+ orgPath: string,
125
+ ): {
126
+ errors: PartialMessage[];
127
+ warnings: PartialMessage[];
128
+ } {
129
+ return {
130
+ errors: results.mapMany((r) =>
131
+ r.messages
132
+ .filter((m) => m.severity === 2)
133
+ .map((m) => {
134
+ return {
135
+ pluginName: "lint",
136
+ text: m.messageId + ": " + m.message + (Boolean(m.ruleId) ? ` (${m.ruleId})` : ``),
137
+ location: {
138
+ file: path.relative(orgPath, r.filePath),
139
+ line: m.line,
140
+ column: m.column,
141
+ },
142
+ };
143
+ }),
144
+ ),
145
+ warnings: results.mapMany((r) =>
146
+ r.messages
147
+ .filter((m) => m.severity !== 2)
148
+ .map((m) => {
149
+ return {
150
+ pluginName: "lint",
151
+ text: m.messageId + ": " + m.message + (Boolean(m.ruleId) ? ` (${m.ruleId})` : ``),
152
+ location: {
153
+ file: path.relative(orgPath, r.filePath),
154
+ line: m.line,
155
+ column: m.column,
156
+ },
157
+ };
158
+ }),
159
+ ),
160
+ };
161
+ }
162
+
163
+ static getBuildMessageString(result: ISdBuildMessage): string {
164
+ let str = "";
165
+ if (result.filePath !== undefined) {
166
+ str += `${result.filePath}(${result.line ?? 0}, ${result.char ?? 0}): `;
167
+ }
168
+ str += `[${result.type}] `;
169
+ str += `${result.severity} `;
170
+ if (result.code !== undefined) {
171
+ str += `${result.code} `;
172
+ }
173
+ str += `: ${result.message}`;
174
+
175
+ return str;
176
+ }
177
+ }
@@ -0,0 +1,31 @@
1
+ import { createSdWorker, Logger, LoggerSeverity, TNormPath } from "@simplysm/sd-core-node";
2
+ import { EventEmitter } from "events";
3
+ import { SdTsCompiler } from "../ts-builder/SdTsCompiler";
4
+ import { TSdTsCompileWorkerType } from "../types/workers.type";
5
+ import { SdTsCompilerOptions } from "../types/ts-compiler.type";
6
+
7
+ Error.stackTraceLimit = Infinity;
8
+ EventEmitter.defaultMaxListeners = 0;
9
+
10
+ if (process.env["SD_DEBUG"] != null) {
11
+ Logger.setConfig({
12
+ console: {
13
+ level: LoggerSeverity.debug,
14
+ },
15
+ });
16
+ } else {
17
+ Logger.setConfig({
18
+ dot: true,
19
+ });
20
+ }
21
+
22
+ let compiler: SdTsCompiler;
23
+
24
+ createSdWorker<TSdTsCompileWorkerType>({
25
+ initialize(opt: SdTsCompilerOptions) {
26
+ compiler = new SdTsCompiler(opt);
27
+ },
28
+ async compile(modifiedFileSet?: Set<TNormPath>) {
29
+ return await compiler.compileAsync(modifiedFileSet);
30
+ },
31
+ });
@@ -0,0 +1,44 @@
1
+ import { createSdWorker, FsUtil, Logger, LoggerSeverity, PathUtil } from "@simplysm/sd-core-node";
2
+ import path from "path";
3
+ import { ESLint } from "eslint";
4
+ import { EventEmitter } from "events";
5
+ import { TSdLintWorkerType } from "../types/workers.type";
6
+
7
+ Error.stackTraceLimit = Infinity;
8
+ EventEmitter.defaultMaxListeners = 0;
9
+
10
+ if (process.env["SD_DEBUG"] != null) {
11
+ Logger.setConfig({
12
+ console: {
13
+ level: LoggerSeverity.debug,
14
+ },
15
+ });
16
+ } else {
17
+ Logger.setConfig({
18
+ dot: true,
19
+ });
20
+ }
21
+
22
+ createSdWorker<TSdLintWorkerType>({
23
+ async lint(opt: { cwd: string; fileSet: Set<string> }) {
24
+ const isTsPackage = FsUtil.exists(path.resolve(opt.cwd, "tsconfig.json"));
25
+
26
+ const lintFilePaths = Array.from(opt.fileSet)
27
+ .filter((item) => PathUtil.isChildPath(item, opt.cwd))
28
+ .filter(
29
+ (item) =>
30
+ (isTsPackage && !item.endsWith(".d.ts") && item.endsWith(".ts")) ||
31
+ item.endsWith(".js") ||
32
+ item.endsWith(".tsx") ||
33
+ item.endsWith(".jsx"),
34
+ )
35
+ .filter((item) => FsUtil.exists(item));
36
+
37
+ if (lintFilePaths.length === 0) {
38
+ return [];
39
+ }
40
+
41
+ const linter = new ESLint({ cwd: opt.cwd, cache: false });
42
+ return await linter.lintFiles(lintFilePaths);
43
+ },
44
+ });
@@ -0,0 +1,52 @@
1
+ import path from "path";
2
+ import { pathToFileURL } from "url";
3
+ import { SdServiceServer } from "@simplysm/sd-service-server";
4
+ import { createSdWorker, Logger, LoggerSeverity } from "@simplysm/sd-core-node";
5
+ import { EventEmitter } from "events";
6
+ import { TServerWorkerType } from "../types/workers.type";
7
+
8
+ Error.stackTraceLimit = Infinity;
9
+ EventEmitter.defaultMaxListeners = 0;
10
+
11
+ if (process.env["SD_DEBUG"] != null) {
12
+ Logger.setConfig({
13
+ console: {
14
+ level: LoggerSeverity.debug,
15
+ },
16
+ });
17
+ } else {
18
+ Logger.setConfig({
19
+ dot: true,
20
+ });
21
+ }
22
+
23
+ let server: SdServiceServer;
24
+
25
+ createSdWorker<TServerWorkerType>({
26
+ async listen(pkgInfo: { path: string } | { port: number }) {
27
+ if ("path" in pkgInfo) {
28
+ const mainFilePath = path.resolve(pkgInfo.path, "dist/main.js");
29
+ const serverModule = await import(pathToFileURL(mainFilePath).href);
30
+ const currServer = serverModule.default as SdServiceServer | undefined;
31
+ if (currServer == null) {
32
+ throw new Error(`${mainFilePath}(0, 0): 'SdServiceServer'를 'export'해야 합니다.`);
33
+ }
34
+ server = currServer;
35
+ } else {
36
+ server = new SdServiceServer({
37
+ rootPath: process.cwd(),
38
+ services: [],
39
+ port: pkgInfo.port,
40
+ });
41
+ await server.listenAsync();
42
+ }
43
+
44
+ return server.options.port;
45
+ },
46
+ setPathProxy(pathProxy: Record<string, string | number>) {
47
+ server.pathProxy = pathProxy;
48
+ },
49
+ broadcastReload(changedFileSet: Set<string>) {
50
+ server.broadcastReload(changedFileSet);
51
+ },
52
+ });
package/tsconfig.json CHANGED
@@ -5,5 +5,11 @@
5
5
  "outDir": "./dist",
6
6
  "types": ["node", "eslint", "yargs"]
7
7
  },
8
- "files": ["./src/index.ts", "./src/sd-cli.ts", "./src/build-cluster.ts", "./src/server-worker.ts"]
8
+ "files": [
9
+ "./src/index.ts",
10
+ "./src/sd-cli.ts",
11
+ "./src/workers/compile-worker.ts",
12
+ "./src/workers/lint-worker.ts",
13
+ "./src/workers/server-worker.ts"
14
+ ]
9
15
  }