@simplysm/sd-cli 6.0.19 → 6.0.27

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 (99) hide show
  1. package/.eslintrc.js +1 -2
  2. package/dist-node/bin/sd-cli.js +25 -8
  3. package/dist-node/bin/sd-cli.js.map +1 -1
  4. package/dist-node/build-tools/SdCliIndexFileGenerator.js +51 -0
  5. package/dist-node/build-tools/SdCliIndexFileGenerator.js.map +1 -0
  6. package/dist-node/build-tools/SdCliNgModuleFilesGenerator.js +621 -0
  7. package/dist-node/build-tools/SdCliNgModuleFilesGenerator.js.map +1 -0
  8. package/dist-node/build-tools/metadata/SdAotMetadataReader.js +270 -0
  9. package/dist-node/build-tools/metadata/SdAotMetadataReader.js.map +1 -0
  10. package/dist-node/build-tools/metadata/SdIvyMetadataReader.js +101 -0
  11. package/dist-node/build-tools/metadata/SdIvyMetadataReader.js.map +1 -0
  12. package/dist-node/build-tools/metadata/SdMyMetadataReader.js +298 -0
  13. package/dist-node/build-tools/metadata/SdMyMetadataReader.js.map +1 -0
  14. package/dist-node/{build-tools → builders}/SdCliJavascriptLinter.js +1 -1
  15. package/dist-node/builders/SdCliJavascriptLinter.js.map +1 -0
  16. package/dist-node/{build-tools → builders}/SdCliNgClientBuilder.js +176 -102
  17. package/dist-node/builders/SdCliNgClientBuilder.js.map +1 -0
  18. package/dist-node/builders/SdCliNgLibraryBuilder.js +238 -0
  19. package/dist-node/builders/SdCliNgLibraryBuilder.js.map +1 -0
  20. package/dist-node/{build-tools → builders}/SdCliPublisher.js +0 -0
  21. package/dist-node/builders/SdCliPublisher.js.map +1 -0
  22. package/dist-node/{build-tools → builders}/SdCliServerBuilder.js +8 -6
  23. package/dist-node/builders/SdCliServerBuilder.js.map +1 -0
  24. package/dist-node/builders/SdCliTypescriptBuilder.js +304 -0
  25. package/dist-node/builders/SdCliTypescriptBuilder.js.map +1 -0
  26. package/dist-node/entry-points/SdCliLocalUpdater.js +9 -8
  27. package/dist-node/entry-points/SdCliLocalUpdater.js.map +1 -1
  28. package/dist-node/entry-points/SdCliProject.js +11 -9
  29. package/dist-node/entry-points/SdCliProject.js.map +1 -1
  30. package/dist-node/packages/SdCliClientPackage.js +12 -2
  31. package/dist-node/packages/SdCliClientPackage.js.map +1 -1
  32. package/dist-node/packages/SdCliLibraryPackage.js +17 -9
  33. package/dist-node/packages/SdCliLibraryPackage.js.map +1 -1
  34. package/dist-node/packages/SdCliServerPackage.js +2 -2
  35. package/dist-node/packages/SdCliServerPackage.js.map +1 -1
  36. package/dist-node/utils/SdCliFileCrypto.js +76 -0
  37. package/dist-node/utils/SdCliFileCrypto.js.map +1 -0
  38. package/dist-node/utils/SdProjectConfigUtil.js +1 -1
  39. package/dist-node/utils/SdProjectConfigUtil.js.map +1 -1
  40. package/dist-node/utils/SdWebpackUtil.js +12 -3
  41. package/dist-node/utils/SdWebpackUtil.js.map +1 -1
  42. package/dist-node/workers/lib-build-worker.js +7 -6
  43. package/dist-node/workers/lib-build-worker.js.map +1 -1
  44. package/dist-types/build-tools/SdCliIndexFileGenerator.d.ts +12 -0
  45. package/dist-types/build-tools/SdCliNgModuleFilesGenerator.d.ts +42 -0
  46. package/dist-types/build-tools/metadata/SdAotMetadataReader.d.ts +57 -0
  47. package/dist-types/build-tools/metadata/SdIvyMetadataReader.d.ts +41 -0
  48. package/dist-types/build-tools/metadata/SdMyMetadataReader.d.ts +57 -0
  49. package/dist-types/{build-tools → builders}/SdCliJavascriptLinter.d.ts +0 -0
  50. package/dist-types/{build-tools → builders}/SdCliNgClientBuilder.d.ts +1 -1
  51. package/dist-types/builders/SdCliNgLibraryBuilder.d.ts +27 -0
  52. package/dist-types/{build-tools → builders}/SdCliPublisher.d.ts +0 -0
  53. package/dist-types/{build-tools → builders}/SdCliServerBuilder.d.ts +0 -0
  54. package/dist-types/builders/SdCliTypescriptBuilder.d.ts +46 -0
  55. package/dist-types/commons.d.ts +11 -3
  56. package/dist-types/packages/SdCliClientPackage.d.ts +1 -1
  57. package/dist-types/utils/SdCliFileCrypto.d.ts +7 -0
  58. package/dist-types/utils/SdWebpackUtil.d.ts +1 -0
  59. package/package.json +10 -7
  60. package/schema/schema.json +247 -0
  61. package/src/bin/sd-cli.ts +37 -14
  62. package/src/build-tools/SdCliIndexFileGenerator.ts +61 -0
  63. package/src/build-tools/SdCliNgModuleFilesGenerator.ts +837 -0
  64. package/src/build-tools/metadata/SdAotMetadataReader.ts +368 -0
  65. package/src/build-tools/metadata/SdIvyMetadataReader.ts +152 -0
  66. package/src/build-tools/metadata/SdMyMetadataReader.ts +379 -0
  67. package/src/{build-tools → builders}/SdCliJavascriptLinter.ts +1 -1
  68. package/src/{build-tools → builders}/SdCliNgClientBuilder.ts +209 -111
  69. package/src/builders/SdCliNgLibraryBuilder.ts +336 -0
  70. package/src/{build-tools → builders}/SdCliPublisher.ts +0 -0
  71. package/src/{build-tools → builders}/SdCliServerBuilder.ts +14 -8
  72. package/src/builders/SdCliTypescriptBuilder.ts +488 -0
  73. package/src/commons.ts +11 -3
  74. package/src/entry-points/SdCliLocalUpdater.ts +9 -8
  75. package/src/entry-points/SdCliProject.ts +12 -9
  76. package/src/packages/SdCliClientPackage.ts +14 -3
  77. package/src/packages/SdCliLibraryPackage.ts +19 -11
  78. package/src/packages/SdCliServerPackage.ts +2 -2
  79. package/src/utils/SdCliFileCrypto.ts +87 -0
  80. package/src/utils/SdCliUtils.ts +56 -0
  81. package/src/utils/SdProjectConfigUtil.ts +1 -1
  82. package/src/utils/SdWebpackUtil.ts +13 -3
  83. package/src/workers/lib-build-worker.ts +8 -7
  84. package/dist-node/build-tools/SdCliJavascriptLinter.js.map +0 -1
  85. package/dist-node/build-tools/SdCliNgClientBuilder.js.map +0 -1
  86. package/dist-node/build-tools/SdCliNgLibraryBuilder.js +0 -164
  87. package/dist-node/build-tools/SdCliNgLibraryBuilder.js.map +0 -1
  88. package/dist-node/build-tools/SdCliPublisher.js.map +0 -1
  89. package/dist-node/build-tools/SdCliServerBuilder.js.map +0 -1
  90. package/dist-node/build-tools/SdCliTypescriptBuilder.js +0 -316
  91. package/dist-node/build-tools/SdCliTypescriptBuilder.js.map +0 -1
  92. package/dist-node/build-tools/SdCliTypescriptIndexFileGenerator.js +0 -75
  93. package/dist-node/build-tools/SdCliTypescriptIndexFileGenerator.js.map +0 -1
  94. package/dist-types/build-tools/SdCliNgLibraryBuilder.d.ts +0 -23
  95. package/dist-types/build-tools/SdCliTypescriptBuilder.d.ts +0 -37
  96. package/dist-types/build-tools/SdCliTypescriptIndexFileGenerator.d.ts +0 -12
  97. package/src/build-tools/SdCliNgLibraryBuilder.ts +0 -225
  98. package/src/build-tools/SdCliTypescriptBuilder.ts +0 -424
  99. package/src/build-tools/SdCliTypescriptIndexFileGenerator.ts +0 -93
@@ -1,316 +0,0 @@
1
- "use strict";
2
- Object.defineProperty(exports, "__esModule", { value: true });
3
- exports.SdCliTypescriptBuilder = void 0;
4
- const ts = require("typescript");
5
- const sd_core_node_1 = require("@simplysm/sd-core-node");
6
- const sd_core_common_1 = require("@simplysm/sd-core-common");
7
- const events_1 = require("events");
8
- const path = require("path");
9
- const SdTsDiagnosticUtil_1 = require("../utils/SdTsDiagnosticUtil");
10
- const eslint_1 = require("eslint");
11
- const crypto_1 = require("crypto");
12
- class SdCliTypescriptBuilder extends events_1.EventEmitter {
13
- constructor(rootPath, tsconfigFilePath, noEmit = false) {
14
- super();
15
- this.rootPath = rootPath;
16
- this.tsconfigFilePath = tsconfigFilePath;
17
- this.noEmit = noEmit;
18
- this._fileCache = new Map();
19
- this._resultMap = new Map();
20
- const tsconfig = sd_core_node_1.FsUtil.readJson(this.tsconfigFilePath);
21
- this._parsedTsconfig = ts.parseJsonConfigFileContent(tsconfig, ts.sys, this.rootPath);
22
- this.npmConfig = sd_core_node_1.FsUtil.readJson(path.resolve(this.rootPath, "package.json"));
23
- this._logger = sd_core_node_1.Logger.get(["simplysm", "sd-cli", this.constructor.name, this.npmConfig.name]);
24
- }
25
- on(event, listener) {
26
- return super.on(event, listener);
27
- }
28
- async buildAsync(watch) {
29
- this.emit("change");
30
- await sd_core_node_1.FsUtil.removeAsync(this._parsedTsconfig.options.outDir);
31
- if (this._parsedTsconfig.options.declarationDir !== undefined) {
32
- await sd_core_node_1.FsUtil.removeAsync(this._parsedTsconfig.options.declarationDir);
33
- }
34
- this._reloadProgram(watch);
35
- if (watch) {
36
- const watchPaths = this._getWatchPaths();
37
- const watcher = new sd_core_node_1.SdFsWatcher();
38
- watcher
39
- .on("change", async (changeInfos) => {
40
- try {
41
- const dirtyFilePaths = changeInfos
42
- .map((item) => sd_core_node_1.PathUtil.posix(item.filePath))
43
- .filter((item) => path.basename(item).includes("."))
44
- .distinct();
45
- if (dirtyFilePaths.length === 0)
46
- return;
47
- this.emit("change");
48
- this._deleteFileCaches(dirtyFilePaths);
49
- const reloadedSourceFiles = this._reloadProgram(watch);
50
- const watchPaths2 = this._getWatchPaths();
51
- watcher.replaceWatchPaths(watchPaths2);
52
- const results = await this._doAllAsync(reloadedSourceFiles);
53
- this._resultMap.delete("undefined");
54
- const allDirtyPosixFilePaths = reloadedSourceFiles
55
- .map((item) => item.fileName)
56
- .concat(dirtyFilePaths)
57
- .map((item) => sd_core_node_1.PathUtil.posix(item))
58
- .distinct();
59
- for (const allDirtyPosixFilePath of allDirtyPosixFilePaths) {
60
- this._resultMap.delete(allDirtyPosixFilePath);
61
- }
62
- for (const result of results) {
63
- const posixFilePath = result.filePath !== undefined ? sd_core_node_1.PathUtil.posix(result.filePath) : "undefined";
64
- const resultMapValue = this._resultMap.getOrCreate(posixFilePath, []);
65
- resultMapValue.push(result);
66
- }
67
- this.emit("complete", Array.from(this._resultMap.values()).mapMany());
68
- }
69
- catch (err) {
70
- this.emit("complete", [{
71
- filePath: undefined,
72
- severity: "error",
73
- message: err.stack ?? err.message
74
- }]);
75
- }
76
- })
77
- .watch(watchPaths);
78
- const results = await this._doAllAsync();
79
- for (const result of results) {
80
- const posixFilePath = result.filePath !== undefined ? sd_core_node_1.PathUtil.posix(result.filePath) : "undefined";
81
- const resultMapValue = this._resultMap.getOrCreate(posixFilePath, []);
82
- resultMapValue.push(result);
83
- }
84
- this.emit("complete", Array.from(this._resultMap.values()).mapMany());
85
- }
86
- else {
87
- const results = await this._doAllAsync();
88
- this.emit("complete", results);
89
- }
90
- }
91
- async _doAllAsync(dirtySourceFiles) {
92
- return (await Promise.all([
93
- (async () => {
94
- this._logger.debug("빌드 시작");
95
- const result = await this._runProgramAsync(dirtySourceFiles);
96
- this._logger.debug("빌드 완료");
97
- return result;
98
- })(),
99
- (async () => {
100
- this._logger.debug("린트 시작");
101
- const result = await this._lintAsync(dirtySourceFiles);
102
- this._logger.debug("린트 완료");
103
- return result;
104
- })()
105
- ])).mapMany();
106
- }
107
- async _lintAsync(dirtySourceFiles) {
108
- const linter = new eslint_1.ESLint({
109
- overrideConfig: {
110
- overrides: [
111
- {
112
- files: ["*.ts"],
113
- parserOptions: {
114
- program: this._program
115
- },
116
- settings: {
117
- "import/resolver": {
118
- typescript: {
119
- project: this.tsconfigFilePath
120
- }
121
- }
122
- }
123
- }
124
- ]
125
- }
126
- });
127
- const currDirtySourceFiles = dirtySourceFiles ?? this._builder.getSourceFiles();
128
- const lintFilePaths = currDirtySourceFiles
129
- .map((item) => item.fileName)
130
- .filter((item) => (!item.includes("node_modules")
131
- && sd_core_node_1.FsUtil.isChildPath(item, this.rootPath)
132
- && sd_core_node_1.FsUtil.exists(item)
133
- && !sd_core_node_1.FsUtil.isDirectory(item)))
134
- .distinct();
135
- const lintResults = await linter.lintFiles(lintFilePaths);
136
- return lintResults.mapMany((report) => (report.messages.map((msg) => {
137
- const severity = msg.severity === 1 ? "warning" : "error";
138
- return {
139
- filePath: report.filePath,
140
- severity,
141
- message: `${report.filePath}(${msg.line}, ${msg.column}): ${msg.ruleId ?? ""}: ${severity} ${msg.message}`
142
- };
143
- })));
144
- }
145
- _getWatchPaths() {
146
- return Array.from(this._fileCache.entries())
147
- .mapMany((item) => [item[0], ...item[1].dependencyFilePaths ?? []])
148
- .map((item) => sd_core_node_1.PathUtil.posix(path.dirname(item)))
149
- .distinct();
150
- }
151
- _deleteFileCaches(filePaths) {
152
- for (const filePath of filePaths) {
153
- const cachedFileInfo = this._fileCache.get(filePath);
154
- if (cachedFileInfo) {
155
- if (!sd_core_common_1.StringUtil.isNullOrEmpty(cachedFileInfo.jsFilePath)) {
156
- sd_core_node_1.FsUtil.remove(cachedFileInfo.jsFilePath);
157
- }
158
- if (!sd_core_common_1.StringUtil.isNullOrEmpty(cachedFileInfo.dtsFilePath)) {
159
- sd_core_node_1.FsUtil.remove(cachedFileInfo.dtsFilePath);
160
- }
161
- }
162
- this._fileCache.delete(filePath);
163
- }
164
- }
165
- async _runProgramAsync(dirtySourceFiles) {
166
- if (!this._builder)
167
- throw new sd_core_common_1.NeverEntryError();
168
- const diagnostics = [
169
- ...this._builder.getOptionsDiagnostics(),
170
- ...this._builder.getGlobalDiagnostics()
171
- ];
172
- const currDirtySourceFiles = dirtySourceFiles ?? this._builder.getSourceFiles();
173
- for (const sourceFile of currDirtySourceFiles) {
174
- diagnostics.push(...[
175
- ...this._builder.getSyntacticDiagnostics(sourceFile),
176
- ...this._builder.getSemanticDiagnostics(sourceFile)
177
- ]);
178
- }
179
- if (!this.noEmit) {
180
- for (const sourceFile of currDirtySourceFiles) {
181
- this._builder.emit(sourceFile);
182
- }
183
- }
184
- return diagnostics.map((item) => SdTsDiagnosticUtil_1.SdTsDiagnosticUtil.convertDiagnosticsToResult(item)).filterExists();
185
- }
186
- _reloadProgram(watch) {
187
- const moduleResolutionCache = ts.createModuleResolutionCache(this.rootPath, (s) => s, this._parsedTsconfig.options);
188
- const cacheCompilerHost = this._createCacheCompilerHost(this._parsedTsconfig, moduleResolutionCache);
189
- this._program = ts.createProgram(this._parsedTsconfig.fileNames, this._parsedTsconfig.options, cacheCompilerHost, this._program);
190
- const baseGetSourceFiles = this._program.getSourceFiles;
191
- this._program.getSourceFiles = function (...parameters) {
192
- const files = baseGetSourceFiles(...parameters);
193
- for (const file of files) {
194
- if (file.version === undefined) {
195
- file.version = crypto_1.createHash("sha256").update(file.text).digest("hex");
196
- }
197
- }
198
- return files;
199
- };
200
- if (watch) {
201
- const builder = ts.createEmitAndSemanticDiagnosticsBuilderProgram(this._program, cacheCompilerHost, this._builder);
202
- this._builder = builder;
203
- const results = [];
204
- while (true) {
205
- const result = builder.getSemanticDiagnosticsOfNextAffectedFile();
206
- if (result && "fileName" in result.affected) {
207
- results.push(result.affected);
208
- }
209
- if (!result)
210
- break;
211
- }
212
- return results;
213
- }
214
- else {
215
- this._builder = ts.createAbstractBuilder(this._program, cacheCompilerHost);
216
- return undefined;
217
- }
218
- }
219
- _createCacheCompilerHost(parsedTsconfig, moduleResolutionCache) {
220
- const compilerHost = ts.createCompilerHost(parsedTsconfig.options);
221
- const cacheCompilerHost = { ...compilerHost };
222
- cacheCompilerHost.fileExists = (fileName) => {
223
- const cache = this._fileCache.getOrCreate(sd_core_node_1.PathUtil.posix(fileName), {});
224
- if (cache.exists === undefined) {
225
- cache.exists = compilerHost.fileExists.call(cacheCompilerHost, fileName);
226
- }
227
- return cache.exists;
228
- };
229
- cacheCompilerHost.getSourceFile = (fileName, languageVersion) => {
230
- const cache = this._fileCache.getOrCreate(sd_core_node_1.PathUtil.posix(fileName), {});
231
- if (!cache.sourceFile) {
232
- cache.sourceFile = compilerHost.getSourceFile.call(cacheCompilerHost, fileName, languageVersion);
233
- }
234
- if (!cache.dependencyFilePaths) {
235
- cache.dependencyFilePaths = this._getDependencyFilePaths(cache.sourceFile, parsedTsconfig.options, compilerHost, moduleResolutionCache);
236
- }
237
- return cache.sourceFile;
238
- };
239
- cacheCompilerHost.writeFile = (fileName, data, writeByteOrderMark, onError, sourceFiles) => {
240
- if (sourceFiles && fileName.endsWith(".d.ts")) {
241
- sourceFiles.forEach((source) => {
242
- const cache = this._fileCache.getOrCreate(sd_core_node_1.PathUtil.posix(source.fileName), {});
243
- if (sd_core_common_1.StringUtil.isNullOrEmpty(cache.dtsFilePath)) {
244
- cache.dtsFilePath = fileName;
245
- compilerHost.writeFile.call(cacheCompilerHost, fileName, data, writeByteOrderMark, onError, sourceFiles);
246
- }
247
- });
248
- }
249
- else if (sourceFiles && fileName.endsWith(".js")) {
250
- sourceFiles.forEach((source) => {
251
- const cache = this._fileCache.getOrCreate(sd_core_node_1.PathUtil.posix(source.fileName), {});
252
- if (sd_core_common_1.StringUtil.isNullOrEmpty(cache.jsFilePath)) {
253
- cache.jsFilePath = fileName;
254
- compilerHost.writeFile.call(cacheCompilerHost, fileName, data, writeByteOrderMark, onError, sourceFiles);
255
- }
256
- });
257
- }
258
- else {
259
- compilerHost.writeFile.call(cacheCompilerHost, fileName, data, writeByteOrderMark, onError, sourceFiles);
260
- }
261
- };
262
- cacheCompilerHost.readFile = (fileName) => {
263
- const cache = this._fileCache.getOrCreate(sd_core_node_1.PathUtil.posix(fileName), {});
264
- if (cache.content === undefined) {
265
- cache.content = compilerHost.readFile.call(cacheCompilerHost, fileName);
266
- }
267
- return cache.content;
268
- };
269
- cacheCompilerHost.resolveModuleNames = (moduleNames, containingFile) => {
270
- return moduleNames.map((moduleName) => {
271
- return ts.resolveModuleName(moduleName, containingFile, parsedTsconfig.options, compilerHost, moduleResolutionCache).resolvedModule;
272
- });
273
- };
274
- return cacheCompilerHost;
275
- }
276
- _getDependencyFilePaths(sourceFile, compilerOptions, compilerHost, moduleResolutionCache) {
277
- const result = [];
278
- ts.forEachChild(sourceFile, (node) => {
279
- if (ts.isImportDeclaration(node) || ts.isImportEqualsDeclaration(node) || ts.isExportDeclaration(node)) {
280
- const exp = this._getDependencyExpression(node);
281
- if (exp && ts.isStringLiteral(exp)) {
282
- const moduleName = exp.text;
283
- const resolvedModule = ts.resolveModuleName(moduleName, sourceFile.fileName, compilerOptions, compilerHost, moduleResolutionCache).resolvedModule;
284
- if (resolvedModule) {
285
- result.push(sd_core_node_1.PathUtil.posix(resolvedModule.resolvedFileName));
286
- }
287
- else if (moduleName.startsWith(".")) {
288
- result.push(...[
289
- sd_core_node_1.PathUtil.posix(path.dirname(sourceFile.fileName), moduleName),
290
- sd_core_node_1.PathUtil.posix(path.dirname(sourceFile.fileName), moduleName) + ".ts",
291
- sd_core_node_1.PathUtil.posix(path.dirname(sourceFile.fileName), moduleName) + ".d.ts"
292
- ]);
293
- }
294
- }
295
- }
296
- });
297
- return result;
298
- }
299
- _getDependencyExpression(node) {
300
- if (ts.isImportDeclaration(node)) {
301
- return node.moduleSpecifier;
302
- }
303
- else if (ts.isImportEqualsDeclaration(node)) {
304
- const reference = node.moduleReference;
305
- if (ts.isExternalModuleReference(reference)) {
306
- return reference.expression;
307
- }
308
- }
309
- else if (ts.isExportDeclaration(node)) {
310
- return node.moduleSpecifier;
311
- }
312
- return undefined;
313
- }
314
- }
315
- exports.SdCliTypescriptBuilder = SdCliTypescriptBuilder;
316
- //# sourceMappingURL=SdCliTypescriptBuilder.js.map
@@ -1 +0,0 @@
1
- {"version":3,"file":"SdCliTypescriptBuilder.js","sourceRoot":"","sources":["../../src/build-tools/SdCliTypescriptBuilder.ts"],"names":[],"mappings":"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"}
@@ -1,75 +0,0 @@
1
- "use strict";
2
- Object.defineProperty(exports, "__esModule", { value: true });
3
- exports.SdCliTypescriptIndexFileGenerator = void 0;
4
- const sd_core_node_1 = require("@simplysm/sd-core-node");
5
- const path = require("path");
6
- const os = require("os");
7
- class SdCliTypescriptIndexFileGenerator {
8
- constructor(rootPath, autoIndex) {
9
- this.rootPath = rootPath;
10
- this.autoIndex = autoIndex;
11
- this._indexFilePath = path.resolve(this.rootPath, "src/index.ts");
12
- }
13
- async generateAsync(watch) {
14
- if (watch) {
15
- const watchPaths = await this._getWatchPathsAsync();
16
- const watcher = new sd_core_node_1.SdFsWatcher();
17
- watcher
18
- .on("change", async (changeInfos) => {
19
- const dirtyFilePaths = changeInfos
20
- .map((changeInfo) => changeInfo.filePath)
21
- .filter((item) => (path.basename(item).includes(".")
22
- && item !== this._indexFilePath))
23
- .distinct();
24
- if (dirtyFilePaths.length === 0)
25
- return;
26
- const watchPaths2 = await this._getWatchPathsAsync();
27
- watcher.replaceWatchPaths(watchPaths2);
28
- await this._generateAsync();
29
- })
30
- .watch(watchPaths);
31
- }
32
- await this._generateAsync();
33
- }
34
- async _getWatchPathsAsync() {
35
- return (await sd_core_node_1.FsUtil.globAsync(path.resolve(this.rootPath, "src/**/*.ts")))
36
- .filter((item) => (!item.includes("node_modules")
37
- && sd_core_node_1.FsUtil.exists(item)
38
- && sd_core_node_1.FsUtil.isDirectory(item)));
39
- }
40
- async _generateAsync() {
41
- const importTexts = [];
42
- if (this.autoIndex.polyfills) {
43
- for (const polyfill of this.autoIndex.polyfills) {
44
- importTexts.push(`import "${polyfill}";`);
45
- }
46
- }
47
- const filePaths = await this._getFilePathsAsync();
48
- for (const filePath of filePaths) {
49
- const requirePath = sd_core_node_1.PathUtil.posix(path.relative(path.dirname(this._indexFilePath), filePath))
50
- .replace(/\.ts$/, "")
51
- .replace(/\/index$/, "");
52
- const sourceTsFileContent = await sd_core_node_1.FsUtil.readFileAsync(filePath);
53
- if (sourceTsFileContent.split("\n").some((line) => line.startsWith("export "))) {
54
- importTexts.push(`export * from "./${requirePath}";`);
55
- }
56
- else {
57
- importTexts.push(`import "./${requirePath}";`);
58
- }
59
- }
60
- const content = importTexts.join(os.EOL) + os.EOL;
61
- if (content !== this._contentCache) {
62
- this._contentCache = content;
63
- await sd_core_node_1.FsUtil.writeFileAsync(this._indexFilePath, content);
64
- }
65
- }
66
- async _getFilePathsAsync() {
67
- const tsconfig = await sd_core_node_1.FsUtil.readJsonAsync(path.resolve(this.rootPath, "tsconfig.json"));
68
- const entryFilePaths = tsconfig.files?.map((item) => path.resolve(this.rootPath, item)) ?? [];
69
- return (await sd_core_node_1.FsUtil.globAsync(path.resolve(this.rootPath, "src/**/*.ts"), { nodir: true }))
70
- .filter((item) => (!entryFilePaths.includes(item)
71
- && item !== this._indexFilePath));
72
- }
73
- }
74
- exports.SdCliTypescriptIndexFileGenerator = SdCliTypescriptIndexFileGenerator;
75
- //# sourceMappingURL=SdCliTypescriptIndexFileGenerator.js.map
@@ -1 +0,0 @@
1
- {"version":3,"file":"SdCliTypescriptIndexFileGenerator.js","sourceRoot":"","sources":["../../src/build-tools/SdCliTypescriptIndexFileGenerator.ts"],"names":[],"mappings":"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"}
@@ -1,23 +0,0 @@
1
- import * as ts from "typescript";
2
- import { ISdPackageBuildResult } from "../commons";
3
- import { NgtscProgram } from "@angular/compiler-cli";
4
- import { ITsBuildFileCache, SdCliTypescriptBuilder } from "./SdCliTypescriptBuilder";
5
- import { NgCompiler } from "@angular/compiler-cli/src/ngtsc/core";
6
- export declare class SdCliNgLibraryBuilder extends SdCliTypescriptBuilder {
7
- rootPath: string;
8
- tsconfigFilePath: string;
9
- protected _ngProgram?: NgtscProgram;
10
- protected _ngCompiler?: NgCompiler;
11
- private readonly _ngccProcessingCache;
12
- protected readonly _fileCache: Map<string, ITsBuildFileCache & {
13
- scssResult?: {
14
- content: string;
15
- dependencies: string[];
16
- } | undefined;
17
- }>;
18
- constructor(rootPath: string, tsconfigFilePath: string);
19
- protected _runProgramAsync(dirtySourceFiles?: ts.SourceFile[]): Promise<ISdPackageBuildResult[]>;
20
- protected _reloadProgram(watch: boolean): ts.SourceFile[] | undefined;
21
- protected _createCacheCompilerHost(parsedTsconfig: ts.ParsedCommandLine, moduleResolutionCache: ts.ModuleResolutionCache): ts.CompilerHost;
22
- private _replaceScssToCss;
23
- }
@@ -1,37 +0,0 @@
1
- /// <reference types="node" />
2
- import * as ts from "typescript";
3
- import { INpmConfig, ISdPackageBuildResult } from "../commons";
4
- import { EventEmitter } from "events";
5
- export declare class SdCliTypescriptBuilder extends EventEmitter {
6
- rootPath: string;
7
- tsconfigFilePath: string;
8
- noEmit: boolean;
9
- private readonly _logger;
10
- protected _parsedTsconfig: ts.ParsedCommandLine;
11
- readonly npmConfig: INpmConfig;
12
- protected _program?: ts.Program;
13
- protected _builder?: ts.BuilderProgram | ts.EmitAndSemanticDiagnosticsBuilderProgram;
14
- protected readonly _fileCache: Map<string, ITsBuildFileCache>;
15
- private readonly _resultMap;
16
- constructor(rootPath: string, tsconfigFilePath: string, noEmit?: boolean);
17
- on(event: "change", listener: () => void): this;
18
- on(event: "complete", listener: (results: ISdPackageBuildResult[]) => void): this;
19
- buildAsync(watch: boolean): Promise<void>;
20
- protected _doAllAsync(dirtySourceFiles?: ts.SourceFile[]): Promise<ISdPackageBuildResult[]>;
21
- protected _lintAsync(dirtySourceFiles?: ts.SourceFile[]): Promise<ISdPackageBuildResult[]>;
22
- protected _getWatchPaths(): string[];
23
- protected _deleteFileCaches(filePaths: string[]): void;
24
- protected _runProgramAsync(dirtySourceFiles?: ts.SourceFile[]): Promise<ISdPackageBuildResult[]>;
25
- protected _reloadProgram(watch: boolean): ts.SourceFile[] | undefined;
26
- protected _createCacheCompilerHost(parsedTsconfig: ts.ParsedCommandLine, moduleResolutionCache: ts.ModuleResolutionCache): ts.CompilerHost;
27
- protected _getDependencyFilePaths(sourceFile: ts.SourceFile, compilerOptions: ts.CompilerOptions, compilerHost: ts.CompilerHost, moduleResolutionCache: ts.ModuleResolutionCache): string[];
28
- protected _getDependencyExpression(node: ts.Node): ts.Expression | undefined;
29
- }
30
- export interface ITsBuildFileCache {
31
- exists?: boolean;
32
- sourceFile?: ts.SourceFile;
33
- dtsFilePath?: string;
34
- jsFilePath?: string;
35
- content?: string;
36
- dependencyFilePaths?: string[];
37
- }
@@ -1,12 +0,0 @@
1
- import { ISdAutoIndexConfig } from "../commons";
2
- export declare class SdCliTypescriptIndexFileGenerator {
3
- rootPath: string;
4
- autoIndex: ISdAutoIndexConfig;
5
- private _contentCache?;
6
- private readonly _indexFilePath;
7
- constructor(rootPath: string, autoIndex: ISdAutoIndexConfig);
8
- generateAsync(watch: boolean): Promise<void>;
9
- private _getWatchPathsAsync;
10
- private _generateAsync;
11
- private _getFilePathsAsync;
12
- }