@simplysm/sd-cli 12.5.21 → 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 (195) 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 -20
  14. package/dist/index.js +23 -20
  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 -10
  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 -20
  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/SdReactBundler.d.ts +0 -25
  139. package/dist/build-tools/SdReactBundler.js +0 -295
  140. package/dist/build-tools/SdReactBundler.js.map +0 -1
  141. package/dist/build-tools/SdReactBundlerContext.d.ts +0 -14
  142. package/dist/build-tools/SdReactBundlerContext.js +0 -59
  143. package/dist/build-tools/SdReactBundlerContext.js.map +0 -1
  144. package/dist/build-tools/SdServerBundler.d.ts +0 -20
  145. package/dist/build-tools/SdServerBundler.js.map +0 -1
  146. package/dist/build-tools/SdTsCompiler.d.ts +0 -34
  147. package/dist/build-tools/SdTsCompiler.js.map +0 -1
  148. package/dist/build-tools/SdTsLibBundler.d.ts +0 -13
  149. package/dist/build-tools/SdTsLibBundler.js +0 -58
  150. package/dist/build-tools/SdTsLibBundler.js.map +0 -1
  151. package/dist/builders/SdCliClientBuilder.d.ts +0 -18
  152. package/dist/builders/SdCliClientBuilder.js +0 -172
  153. package/dist/builders/SdCliClientBuilder.js.map +0 -1
  154. package/dist/builders/SdCliJsLibLinter.d.ts +0 -13
  155. package/dist/builders/SdCliJsLibLinter.js +0 -60
  156. package/dist/builders/SdCliJsLibLinter.js.map +0 -1
  157. package/dist/builders/SdCliServerBuilder.d.ts +0 -15
  158. package/dist/builders/SdCliServerBuilder.js.map +0 -1
  159. package/dist/builders/SdCliTsLibBuilder.d.ts +0 -12
  160. package/dist/builders/SdCliTsLibBuilder.js +0 -90
  161. package/dist/builders/SdCliTsLibBuilder.js.map +0 -1
  162. package/dist/bundle-plugins/sdNgPlugin.d.ts +0 -16
  163. package/dist/bundle-plugins/sdNgPlugin.js.map +0 -1
  164. package/dist/bundle-plugins/sdReactPlugin.d.ts +0 -16
  165. package/dist/bundle-plugins/sdReactPlugin.js +0 -117
  166. package/dist/bundle-plugins/sdReactPlugin.js.map +0 -1
  167. package/dist/bundle-plugins/sdServerPlugin.d.ts +0 -16
  168. package/dist/bundle-plugins/sdServerPlugin.js +0 -63
  169. package/dist/bundle-plugins/sdServerPlugin.js.map +0 -1
  170. package/dist/commons.d.ts +0 -145
  171. package/dist/commons.js +0 -2
  172. package/dist/commons.js.map +0 -1
  173. package/dist/server-worker.js +0 -57
  174. package/dist/server-worker.js.map +0 -1
  175. package/dist/utils/SdCliBuildResultUtil.d.ts +0 -16
  176. package/dist/utils/SdCliBuildResultUtil.js +0 -54
  177. package/dist/utils/SdCliBuildResultUtil.js.map +0 -1
  178. package/src/build-cluster.ts +0 -212
  179. package/src/build-tools/SdCliCordova.ts +0 -340
  180. package/src/build-tools/SdLinter.ts +0 -65
  181. package/src/build-tools/SdNgBundlerContext.ts +0 -137
  182. package/src/build-tools/SdReactBundler.ts +0 -372
  183. package/src/build-tools/SdReactBundlerContext.ts +0 -71
  184. package/src/build-tools/SdTsCompiler.ts +0 -754
  185. package/src/build-tools/SdTsLibBundler.ts +0 -72
  186. package/src/builders/SdCliClientBuilder.ts +0 -233
  187. package/src/builders/SdCliJsLibLinter.ts +0 -72
  188. package/src/builders/SdCliTsLibBuilder.ts +0 -126
  189. package/src/bundle-plugins/sdReactPlugin.ts +0 -164
  190. package/src/bundle-plugins/sdServerPlugin.ts +0 -94
  191. package/src/commons.ts +0 -171
  192. package/src/server-worker.ts +0 -65
  193. package/src/utils/SdCliBuildResultUtil.ts +0 -63
  194. /package/dist/{build-cluster.d.ts → workers/compile-worker.d.ts} +0 -0
  195. /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 buildResult;
15
+ let esbuildResult;
15
16
  try {
16
17
  this.#debug(`rebuild...`);
17
- buildResult = await this._context.rebuild();
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
- buildResult = err;
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 buildResult.outputFiles ?? []) {
51
- const relativeFilePath = path.isAbsolute(outputFile.path) ? path.relative(this._pkgPath, outputFile.path) : outputFile.path;
52
- const entryPoint = buildResult.metafile?.outputs[relativeFilePath]?.entryPoint;
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('.', 1)[0];
56
- const type = path.extname(relativeFilePath) === '.css' ? 'style' : 'script';
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 buildResult.metafile?.outputs[file]?.imports ?? []) {
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 === 'import-statement' || initialImport.kind === 'import-rule') {
63
+ if (initialImport.kind === "import-statement" || initialImport.kind === "import-rule") {
80
64
  const record = {
81
- type: initialImport.kind === 'import-rule' ? 'style' : 'script',
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: buildResult.outputFiles,
107
- // dependencyMap,
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":"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"}
@@ -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 { convertTypeScriptDiagnostic } from "@angular/build/src/tools/esbuild/angular/diagnostics";
7
- import { SdCliPerformanceTimer } from "../utils/SdCliPerformanceTime";
8
- import { Logger } from "@simplysm/sd-core-node";
9
- export function sdNgPlugin(conf) {
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", "sdNgPlugin"]);
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-compiler",
17
- setup: (build) => {
18
- const compiler = new SdTsCompiler({
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 buildResult;
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
- buildResult = await compiler.buildAsync();
43
- conf.result.watchFileSet = buildResult.watchFileSet;
44
- conf.result.affectedFileSet = buildResult.affectedFileSet;
45
- conf.result.program = buildResult.program;
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
- ...buildResult.typescriptDiagnostics
50
- .filter((item) => item.category === ts.DiagnosticCategory.Error)
51
- .map((item) => convertTypeScriptDiagnostic(ts, item)),
52
- ...Array.from(buildResult.stylesheetBundlingResultMap.values()).flatMap((item) => item.errors),
48
+ ...tsEsbuildResult.errors,
49
+ ...Array.from(tsCompileResult.stylesheetBundlingResultMap.values())
50
+ .flatMap((item) => item.errors)
51
+ .filterExists(),
53
52
  ].filterExists(),
54
53
  warnings: [
55
- ...buildResult.typescriptDiagnostics
56
- .filter((item) => item.category !== ts.DiagnosticCategory.Error)
57
- .map((item) => convertTypeScriptDiagnostic(ts, item)),
58
- // ...Array.from(buildResult.stylesheetResultMap.values()).flatMap(item => item.warnings)
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(path.normalize(args.path));
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 = buildResult.emittedFilesCacheMap.get(path.normalize(args.path))?.last();
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(path.normalize(args.path), newContents);
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(path.normalize(args.path));
85
- const output = outputContentsCacheMap.get(path.normalize(args.path));
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(path.normalize(args.path), newContents);
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(path.normalize(args.path));
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 buildResult.stylesheetBundlingResultMap.values()) {
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=sdNgPlugin.js.map
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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"}
@@ -0,0 +1,5 @@
1
+ export declare class SdCliIndexFileGenerator {
2
+ #private;
3
+ static watch(pkgPath: string, polyfills?: string[]): void;
4
+ static run(pkgPath: string, polyfills?: string[], cache?: string): string;
5
+ }
@@ -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 async watchAsync(pkgPath, polyfills) {
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({}, async () => {
8
- cache = await this.runAsync(pkgPath, polyfills, cache);
7
+ SdFsWatcher.watch([path.resolve(pkgPath, "src")]).onChange({ delay: 100 }, () => {
8
+ cache = this.run(pkgPath, polyfills, cache);
9
9
  });
10
- cache = await this.runAsync(pkgPath, polyfills, cache);
10
+ cache = this.run(pkgPath, polyfills, cache);
11
11
  }
12
- static async runAsync(pkgPath, polyfills, cache) {
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 = await this._getFilePathsAsync(pkgPath);
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 = await FsUtil.readFileAsync(filePath);
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
- await FsUtil.writeFileAsync(indexFilePath, content);
37
+ FsUtil.writeFile(indexFilePath, content);
38
38
  }
39
39
  return content;
40
40
  }
41
- static async _getFilePathsAsync(pkgPath) {
41
+ static #getFilePaths(pkgPath) {
42
42
  const indexFilePath = path.resolve(pkgPath, "src/index.ts");
43
- const tsconfig = await FsUtil.readJsonAsync(path.resolve(pkgPath, "tsconfig.json"));
43
+ const tsconfig = FsUtil.readJson(path.resolve(pkgPath, "tsconfig.json"));
44
44
  const entryFilePaths = tsconfig.files?.map((item) => path.resolve(pkgPath, item)) ?? [];
45
- return (await FsUtil.globAsync(path.resolve(pkgPath, "src/**/*{.ts,.tsx}"), { nodir: true })).filter((item) => !entryFilePaths.includes(item) && item !== indexFilePath && !item.endsWith(".d.ts"));
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":"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"}
@@ -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
+ }