@simplysm/sd-cli 11.1.45 → 11.1.46
This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
- package/dist/build-cluster.js +16 -3
- package/dist/build-cluster.js.map +1 -1
- package/dist/build-tools/SdNgBundler.d.ts +1 -1
- package/dist/build-tools/SdNgBundler.js +4 -1
- package/dist/build-tools/SdNgBundler.js.map +1 -1
- package/dist/build-tools/SdServerBundler.js.map +1 -1
- package/dist/build-tools/SdTsCompiler.d.ts +5 -21
- package/dist/build-tools/SdTsCompiler.js +211 -188
- package/dist/build-tools/SdTsCompiler.js.map +1 -1
- package/dist/build-tools2/SdTsCompiler2.d.ts +26 -0
- package/dist/build-tools2/SdTsCompiler2.js +280 -0
- package/dist/build-tools2/SdTsCompiler2.js.map +1 -0
- package/dist/builders/SdCliTsLibBuilder.js +6 -11
- package/dist/builders/SdCliTsLibBuilder.js.map +1 -1
- package/dist/bundle-plugins/sdNgPlugin.d.ts +3 -3
- package/dist/bundle-plugins/sdNgPlugin.js +22 -212
- package/dist/bundle-plugins/sdNgPlugin.js.map +1 -1
- package/dist/bundle-plugins/sdServerPlugin.d.ts +2 -2
- package/dist/bundle-plugins/sdServerPlugin.js +17 -110
- package/dist/bundle-plugins/sdServerPlugin.js.map +1 -1
- package/dist/commons.d.ts +1 -0
- package/dist/entry/SdCliProject.d.ts +1 -0
- package/dist/entry/SdCliProject.js +11 -29
- package/dist/entry/SdCliProject.js.map +1 -1
- package/dist/index.d.ts +1 -0
- package/dist/index.js +1 -0
- package/dist/index.js.map +1 -1
- package/dist/sd-cli.js +7 -1
- package/dist/sd-cli.js.map +1 -1
- package/dist/server-worker.js.map +1 -1
- package/dist/utils/SdCliBuildResultUtil.d.ts +10 -0
- package/dist/utils/SdCliBuildResultUtil.js +17 -1
- package/dist/utils/SdCliBuildResultUtil.js.map +1 -1
- package/package.json +15 -15
- package/src/build-cluster.ts +18 -4
- package/src/build-tools/SdNgBundler.ts +7 -4
- package/src/build-tools/SdServerBundler.ts +2 -2
- package/src/build-tools/SdTsCompiler.ts +64 -94
- package/src/build-tools2/SdTsCompiler2.ts +427 -0
- package/src/builders/SdCliTsLibBuilder.ts +6 -11
- package/src/bundle-plugins/sdNgPlugin.ts +26 -320
- package/src/bundle-plugins/sdServerPlugin.ts +20 -168
- package/src/commons.ts +1 -0
- package/src/entry/SdCliProject.ts +12 -30
- package/src/index.ts +1 -0
- package/src/sd-cli.ts +7 -1
- package/src/server-worker.ts +3 -3
- package/src/utils/SdCliBuildResultUtil.ts +22 -3
|
@@ -1,122 +1,16 @@
|
|
|
1
|
-
import { FsUtil } from "@simplysm/sd-core-node";
|
|
2
1
|
import ts from "typescript";
|
|
3
2
|
import path from "path";
|
|
4
|
-
import { convertTypeScriptDiagnostic } from "@angular-devkit/build-angular/src/tools/esbuild/angular/diagnostics";
|
|
5
|
-
import { ComponentStylesheetBundler } from "@angular-devkit/build-angular/src/tools/esbuild/angular/component-stylesheets";
|
|
6
|
-
import { transformSupportedBrowsersToTargets } from "@angular-devkit/build-angular/src/tools/esbuild/utils";
|
|
7
|
-
import browserslist from "browserslist";
|
|
8
|
-
import { StringUtil } from "@simplysm/sd-core-common";
|
|
9
|
-
import { NgtscProgram, OptimizeFor } from "@angular/compiler-cli";
|
|
10
|
-
import { createHash } from "crypto";
|
|
11
3
|
import { JavaScriptTransformer } from "@angular-devkit/build-angular/src/tools/esbuild/javascript-transformer";
|
|
12
4
|
import os from "os";
|
|
5
|
+
import { SdTsCompiler2 } from "../build-tools2/SdTsCompiler2";
|
|
6
|
+
import { convertTypeScriptDiagnostic } from "@angular-devkit/build-angular/src/tools/esbuild/angular/diagnostics";
|
|
13
7
|
export function sdNgPlugin(conf) {
|
|
14
|
-
const tsConfigPath = path.resolve(conf.pkgPath, "tsconfig.json");
|
|
15
|
-
const tsConfig = FsUtil.readJson(tsConfigPath);
|
|
16
|
-
const parsedTsConfig = ts.parseJsonConfigFileContent(tsConfig, ts.sys, conf.pkgPath, {
|
|
17
|
-
...tsConfig.angularCompilerOptions,
|
|
18
|
-
declaration: false
|
|
19
|
-
});
|
|
20
|
-
const sourceFileCache = new Map();
|
|
21
|
-
const referencingMap = new Map();
|
|
22
|
-
let ngProgram;
|
|
23
|
-
let builder;
|
|
24
|
-
// const watchFileSet = new Set<string>();
|
|
25
|
-
// const affectedFileSet = new Set<string>();
|
|
26
|
-
const additionalResultMap = new Map();
|
|
27
|
-
const tscPrepareMap = new Map();
|
|
28
|
-
const outputCacheMap = new Map();
|
|
29
|
-
let stylesheetBundler;
|
|
30
|
-
function createCompilerHost() {
|
|
31
|
-
const compilerHost = ts.createIncrementalCompilerHost(parsedTsConfig.options);
|
|
32
|
-
compilerHost.readResource = (fileName) => {
|
|
33
|
-
return compilerHost.readFile(fileName) ?? "";
|
|
34
|
-
};
|
|
35
|
-
compilerHost.transformResource = async (data, context) => {
|
|
36
|
-
if (context.type !== "style") {
|
|
37
|
-
return null;
|
|
38
|
-
}
|
|
39
|
-
const stylesheetResult = context.resourceFile != null
|
|
40
|
-
? await stylesheetBundler.bundleFile(context.resourceFile)
|
|
41
|
-
: await stylesheetBundler.bundleInline(data, context.containingFile, "scss");
|
|
42
|
-
conf.result.watchFileSet.add(path.normalize(context.containingFile));
|
|
43
|
-
if (stylesheetResult.referencedFiles) {
|
|
44
|
-
for (const referencedFile of stylesheetResult.referencedFiles) {
|
|
45
|
-
const referencingMapValSet = referencingMap.getOrCreate(path.normalize(referencedFile), new Set());
|
|
46
|
-
referencingMapValSet.add(path.normalize(context.containingFile));
|
|
47
|
-
}
|
|
48
|
-
conf.result.watchFileSet.adds(...Array.from(stylesheetResult.referencedFiles.values()).map(item => path.normalize(item)));
|
|
49
|
-
}
|
|
50
|
-
additionalResultMap.set(path.normalize(context.resourceFile ?? context.containingFile), {
|
|
51
|
-
outputFiles: stylesheetResult.outputFiles ?? [],
|
|
52
|
-
metafile: stylesheetResult.metafile,
|
|
53
|
-
errors: stylesheetResult.errors,
|
|
54
|
-
// warnings: stylesheetResult.warnings
|
|
55
|
-
warnings: []
|
|
56
|
-
});
|
|
57
|
-
return StringUtil.isNullOrEmpty(stylesheetResult.contents) ? null : { content: stylesheetResult.contents };
|
|
58
|
-
};
|
|
59
|
-
compilerHost.getModifiedResourceFiles = () => {
|
|
60
|
-
return conf.modifiedFileSet;
|
|
61
|
-
};
|
|
62
|
-
const baseGetSourceFile = compilerHost.getSourceFile;
|
|
63
|
-
compilerHost.getSourceFile = (fileName, languageVersionOrOptions, onError, shouldCreateNewSourceFile, ...args) => {
|
|
64
|
-
if (!shouldCreateNewSourceFile && sourceFileCache.has(path.normalize(fileName))) {
|
|
65
|
-
return sourceFileCache.get(path.normalize(fileName));
|
|
66
|
-
}
|
|
67
|
-
const file = baseGetSourceFile.call(compilerHost, fileName, languageVersionOrOptions, onError, true, ...args);
|
|
68
|
-
if (file) {
|
|
69
|
-
sourceFileCache.set(path.normalize(fileName), file);
|
|
70
|
-
}
|
|
71
|
-
return file;
|
|
72
|
-
};
|
|
73
|
-
return compilerHost;
|
|
74
|
-
}
|
|
75
|
-
function findAffectedFileSet() {
|
|
76
|
-
const affectedFileSet = new Set();
|
|
77
|
-
while (true) {
|
|
78
|
-
const result = builder.getSemanticDiagnosticsOfNextAffectedFile(undefined, (sourceFile) => {
|
|
79
|
-
if (ngProgram?.compiler.ignoreForDiagnostics.has(sourceFile) && sourceFile.fileName.endsWith('.ngtypecheck.ts')) {
|
|
80
|
-
const originalFilename = sourceFile.fileName.slice(0, -15) + '.ts';
|
|
81
|
-
const originalSourceFile = sourceFileCache.get(originalFilename);
|
|
82
|
-
if (originalSourceFile) {
|
|
83
|
-
affectedFileSet.add(path.normalize(originalSourceFile.fileName));
|
|
84
|
-
}
|
|
85
|
-
return true;
|
|
86
|
-
}
|
|
87
|
-
return false;
|
|
88
|
-
});
|
|
89
|
-
if (!result) {
|
|
90
|
-
break;
|
|
91
|
-
}
|
|
92
|
-
affectedFileSet.add(path.normalize(result.affected.fileName));
|
|
93
|
-
}
|
|
94
|
-
return affectedFileSet;
|
|
95
|
-
}
|
|
96
8
|
return {
|
|
97
9
|
name: "sd-ng-compiler",
|
|
98
10
|
setup: (build) => {
|
|
99
|
-
|
|
100
|
-
|
|
101
|
-
|
|
102
|
-
workspaceRoot: conf.pkgPath,
|
|
103
|
-
optimization: !conf.dev,
|
|
104
|
-
inlineFonts: true,
|
|
105
|
-
preserveSymlinks: false,
|
|
106
|
-
sourcemap: 'inline', //conf.dev ? 'inline' : false,
|
|
107
|
-
outputNames: { bundles: '[name]', media: 'media/[name]' },
|
|
108
|
-
includePaths: [],
|
|
109
|
-
externalDependencies: [],
|
|
110
|
-
target: browserTarget,
|
|
111
|
-
tailwindConfiguration: undefined,
|
|
112
|
-
cacheOptions: {
|
|
113
|
-
enabled: true,
|
|
114
|
-
path: ".cache/angular",
|
|
115
|
-
basePath: ".cache"
|
|
116
|
-
}
|
|
117
|
-
}, conf.dev);
|
|
118
|
-
//-- compilerHost
|
|
119
|
-
const compilerHost = createCompilerHost();
|
|
11
|
+
const compiler = new SdTsCompiler2(conf.pkgPath, { declaration: false }, conf.dev);
|
|
12
|
+
let buildResult;
|
|
13
|
+
const outputContentsCacheMap = new Map();
|
|
120
14
|
//-- js babel transformer
|
|
121
15
|
const javascriptTransformer = new JavaScriptTransformer({
|
|
122
16
|
thirdPartySourcemaps: conf.dev,
|
|
@@ -124,123 +18,42 @@ export function sdNgPlugin(conf) {
|
|
|
124
18
|
jit: false,
|
|
125
19
|
advancedOptimizations: true
|
|
126
20
|
}, os.cpus().length);
|
|
127
|
-
//-- vars
|
|
128
21
|
//---------------------------
|
|
129
22
|
build.onStart(async () => {
|
|
130
|
-
|
|
131
|
-
|
|
132
|
-
|
|
133
|
-
|
|
134
|
-
|
|
135
|
-
if (referencingMap.has(modifiedFile)) {
|
|
136
|
-
for (const referencingFile of referencingMap.get(modifiedFile)) {
|
|
137
|
-
sourceFileCache.delete(referencingFile);
|
|
138
|
-
outputCacheMap.delete(modifiedFile);
|
|
139
|
-
}
|
|
140
|
-
}
|
|
141
|
-
}
|
|
142
|
-
referencingMap.clear();
|
|
143
|
-
//-- init resultCache
|
|
144
|
-
conf.result.watchFileSet = new Set();
|
|
145
|
-
conf.result.affectedFileSet = new Set();
|
|
146
|
-
additionalResultMap.clear();
|
|
147
|
-
//-- createBuilder
|
|
148
|
-
ngProgram = new NgtscProgram(parsedTsConfig.fileNames, parsedTsConfig.options, compilerHost, ngProgram);
|
|
149
|
-
const ngCompiler = ngProgram.compiler;
|
|
150
|
-
const program = ngProgram.getTsProgram();
|
|
151
|
-
conf.result.program = program;
|
|
152
|
-
const baseGetSourceFiles = program.getSourceFiles;
|
|
153
|
-
program.getSourceFiles = function (...parameters) {
|
|
154
|
-
const files = baseGetSourceFiles(...parameters);
|
|
155
|
-
for (const file of files) {
|
|
156
|
-
if (file.version === undefined) {
|
|
157
|
-
file.version = createHash("sha256").update(file.text).digest("hex");
|
|
158
|
-
}
|
|
159
|
-
}
|
|
160
|
-
return files;
|
|
161
|
-
};
|
|
162
|
-
builder = ts.createEmitAndSemanticDiagnosticsBuilderProgram(program, compilerHost, builder);
|
|
163
|
-
await ngCompiler.analyzeAsync();
|
|
164
|
-
//-- affectedFilePathSet
|
|
165
|
-
conf.result.affectedFileSet.adds(...findAffectedFileSet());
|
|
166
|
-
// Deps -> refMap
|
|
167
|
-
builder.getSourceFiles().filter(sf => !ngCompiler.ignoreForEmit.has(sf))
|
|
168
|
-
.forEach(sf => {
|
|
169
|
-
conf.result.watchFileSet.add(path.normalize(sf.fileName));
|
|
170
|
-
const deps = ngCompiler.getResourceDependencies(sf);
|
|
171
|
-
for (const dep of deps) {
|
|
172
|
-
const ref = referencingMap.getOrCreate(dep, new Set());
|
|
173
|
-
ref.add(dep);
|
|
174
|
-
conf.result.watchFileSet.add(path.normalize(dep));
|
|
175
|
-
}
|
|
176
|
-
});
|
|
177
|
-
// refMap, modFile -> affectedFileSet
|
|
178
|
-
for (const modifiedFile of conf.modifiedFileSet) {
|
|
179
|
-
conf.result.affectedFileSet.adds(...referencingMap.get(modifiedFile) ?? []);
|
|
180
|
-
}
|
|
181
|
-
//-- diagnostics / build
|
|
182
|
-
const diagnostics = [];
|
|
183
|
-
diagnostics.push(...builder.getConfigFileParsingDiagnostics(), ...ngCompiler.getOptionDiagnostics(), ...builder.getOptionsDiagnostics(), ...builder.getGlobalDiagnostics());
|
|
184
|
-
for (const affectedFile of conf.result.affectedFileSet) {
|
|
185
|
-
const affectedSourceFile = sourceFileCache.get(path.normalize(affectedFile));
|
|
186
|
-
if (!affectedSourceFile || ngCompiler.ignoreForDiagnostics.has(affectedSourceFile)) {
|
|
187
|
-
continue;
|
|
188
|
-
}
|
|
189
|
-
diagnostics.push(...builder.getSyntacticDiagnostics(affectedSourceFile), ...builder.getSemanticDiagnostics(affectedSourceFile));
|
|
190
|
-
if (affectedSourceFile.isDeclarationFile) {
|
|
191
|
-
continue;
|
|
192
|
-
}
|
|
193
|
-
diagnostics.push(...ngCompiler.getDiagnosticsForFile(affectedSourceFile, OptimizeFor.WholeProgram));
|
|
194
|
-
}
|
|
195
|
-
//-- prepare emit cache
|
|
196
|
-
while (true) {
|
|
197
|
-
const affectedFileResult = builder.emitNextAffectedFile((fileName, text, writeByteOrderMark, onError, sourceFiles, data) => {
|
|
198
|
-
if (!sourceFiles || sourceFiles.length === 0) {
|
|
199
|
-
compilerHost.writeFile(fileName, text, writeByteOrderMark, onError, sourceFiles, data);
|
|
200
|
-
return;
|
|
201
|
-
}
|
|
202
|
-
const sourceFile = ts.getOriginalNode(sourceFiles[0], ts.isSourceFile);
|
|
203
|
-
if (ngCompiler.ignoreForEmit.has(sourceFile)) {
|
|
204
|
-
return;
|
|
205
|
-
}
|
|
206
|
-
ngCompiler.incrementalCompilation.recordSuccessfulEmit(sourceFile);
|
|
207
|
-
tscPrepareMap.set(path.normalize(sourceFile.fileName), text);
|
|
208
|
-
}, undefined, undefined, ngProgram.compiler.prepareEmit().transformers);
|
|
209
|
-
if (!affectedFileResult) {
|
|
210
|
-
break;
|
|
211
|
-
}
|
|
212
|
-
diagnostics.push(...affectedFileResult.result.diagnostics);
|
|
213
|
-
}
|
|
23
|
+
compiler.invalidate(conf.modifiedFileSet);
|
|
24
|
+
buildResult = await compiler.buildAsync();
|
|
25
|
+
conf.result.watchFileSet = buildResult.watchFileSet;
|
|
26
|
+
conf.result.affectedFileSet = buildResult.affectedFileSet;
|
|
27
|
+
conf.result.program = buildResult.program;
|
|
214
28
|
//-- return err/warn
|
|
215
29
|
return {
|
|
216
30
|
errors: [
|
|
217
|
-
...
|
|
218
|
-
...Array.from(
|
|
31
|
+
...buildResult.typescriptDiagnostics.filter(item => item.category === ts.DiagnosticCategory.Error).map(item => convertTypeScriptDiagnostic(ts, item)),
|
|
32
|
+
...Array.from(buildResult.stylesheetResultMap.values()).flatMap(item => item.errors)
|
|
219
33
|
].filterExists(),
|
|
220
34
|
warnings: [
|
|
221
|
-
...
|
|
222
|
-
...Array.from(
|
|
35
|
+
...buildResult.typescriptDiagnostics.filter(item => item.category !== ts.DiagnosticCategory.Error).map(item => convertTypeScriptDiagnostic(ts, item)),
|
|
36
|
+
// ...Array.from(buildResult.stylesheetResultMap.values()).flatMap(item => item.warnings)
|
|
223
37
|
],
|
|
224
38
|
};
|
|
225
39
|
});
|
|
226
40
|
build.onLoad({ filter: /\.ts$/ }, async (args) => {
|
|
227
|
-
|
|
228
|
-
const output = outputCacheMap.get(path.normalize(args.path));
|
|
41
|
+
const output = outputContentsCacheMap.get(path.normalize(args.path));
|
|
229
42
|
if (output != null) {
|
|
230
43
|
return { contents: output, loader: "js" };
|
|
231
44
|
}
|
|
232
|
-
const contents =
|
|
45
|
+
const contents = buildResult.emittedFilesCacheMap.get(path.normalize(args.path)).last().text;
|
|
233
46
|
const { sideEffects } = await build.resolve(args.path, {
|
|
234
47
|
kind: 'import-statement',
|
|
235
48
|
resolveDir: build.initialOptions.absWorkingDir ?? '',
|
|
236
49
|
});
|
|
237
50
|
const newContents = await javascriptTransformer.transformData(args.path, contents, true, sideEffects);
|
|
238
|
-
|
|
51
|
+
outputContentsCacheMap.set(path.normalize(args.path), newContents);
|
|
239
52
|
return { contents: newContents, loader: "js" };
|
|
240
53
|
});
|
|
241
54
|
build.onLoad({ filter: /\.[cm]?js$/ }, async (args) => {
|
|
242
55
|
conf.result.watchFileSet.add(path.normalize(args.path));
|
|
243
|
-
const output =
|
|
56
|
+
const output = outputContentsCacheMap.get(path.normalize(args.path));
|
|
244
57
|
if (output != null) {
|
|
245
58
|
return { contents: output, loader: "js" };
|
|
246
59
|
}
|
|
@@ -248,9 +61,8 @@ export function sdNgPlugin(conf) {
|
|
|
248
61
|
kind: 'import-statement',
|
|
249
62
|
resolveDir: build.initialOptions.absWorkingDir ?? '',
|
|
250
63
|
});
|
|
251
|
-
// const contents = await FsUtil.readFileAsync(args.path);
|
|
252
64
|
const newContents = await javascriptTransformer.transformFile(args.path, false, sideEffects);
|
|
253
|
-
|
|
65
|
+
outputContentsCacheMap.set(path.normalize(args.path), newContents);
|
|
254
66
|
return {
|
|
255
67
|
contents: newContents,
|
|
256
68
|
loader: 'js',
|
|
@@ -261,16 +73,14 @@ export function sdNgPlugin(conf) {
|
|
|
261
73
|
return null;
|
|
262
74
|
});
|
|
263
75
|
build.onEnd((result) => {
|
|
264
|
-
for (const { outputFiles, metafile } of
|
|
265
|
-
result.outputFiles
|
|
76
|
+
for (const { outputFiles, metafile } of buildResult.stylesheetResultMap.values()) {
|
|
77
|
+
result.outputFiles = result.outputFiles ?? [];
|
|
78
|
+
result.outputFiles.push(...outputFiles);
|
|
266
79
|
if (result.metafile && metafile) {
|
|
267
80
|
result.metafile.inputs = { ...result.metafile.inputs, ...metafile.inputs };
|
|
268
81
|
result.metafile.outputs = { ...result.metafile.outputs, ...metafile.outputs };
|
|
269
82
|
}
|
|
270
83
|
}
|
|
271
|
-
// conf.result.watchFileSet = resultCache.watchFileSet;
|
|
272
|
-
// conf.result.affectedFileSet = resultCache.affectedFileSet;
|
|
273
|
-
// conf.result.program = ngProgram!.getTsProgram();
|
|
274
84
|
conf.result.outputFiles = result.outputFiles;
|
|
275
85
|
conf.result.metafile = result.metafile;
|
|
276
86
|
conf.modifiedFileSet.clear();
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"sdNgPlugin.js","sourceRoot":"","sources":["../../src/bundle-plugins/sdNgPlugin.ts"],"names":[],"mappings":"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"}
|
|
1
|
+
{"version":3,"file":"sdNgPlugin.js","sourceRoot":"","sources":["../../src/bundle-plugins/sdNgPlugin.ts"],"names":[],"mappings":"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"}
|
|
@@ -4,9 +4,9 @@ export declare function sdServerPlugin(conf: {
|
|
|
4
4
|
pkgPath: string;
|
|
5
5
|
dev: boolean;
|
|
6
6
|
modifiedFileSet: Set<string>;
|
|
7
|
-
result:
|
|
7
|
+
result: IServerPluginResultCache;
|
|
8
8
|
}): esbuild.Plugin;
|
|
9
|
-
export interface
|
|
9
|
+
export interface IServerPluginResultCache {
|
|
10
10
|
watchFileSet?: Set<string>;
|
|
11
11
|
affectedFileSet?: Set<string>;
|
|
12
12
|
outputFiles?: esbuild.OutputFile[];
|
|
@@ -1,133 +1,40 @@
|
|
|
1
|
-
import { FsUtil } from "@simplysm/sd-core-node";
|
|
2
1
|
import ts from "typescript";
|
|
3
2
|
import path from "path";
|
|
4
3
|
import { convertTypeScriptDiagnostic } from "@angular-devkit/build-angular/src/tools/esbuild/angular/diagnostics";
|
|
4
|
+
import { SdTsCompiler2 } from "../build-tools2/SdTsCompiler2";
|
|
5
5
|
export function sdServerPlugin(conf) {
|
|
6
|
-
const tsConfigPath = path.resolve(conf.pkgPath, "tsconfig.json");
|
|
7
|
-
const tsConfig = FsUtil.readJson(tsConfigPath);
|
|
8
|
-
const parsedTsConfig = ts.parseJsonConfigFileContent(tsConfig, ts.sys, conf.pkgPath, {
|
|
9
|
-
declaration: false
|
|
10
|
-
});
|
|
11
|
-
const sourceFileCache = new Map();
|
|
12
|
-
const referencingMap = new Map();
|
|
13
|
-
let program;
|
|
14
|
-
let builder;
|
|
15
|
-
let resultCache = {
|
|
16
|
-
watchFileSet: new Set(),
|
|
17
|
-
affectedFileSet: new Set()
|
|
18
|
-
};
|
|
19
|
-
const tscPrepareMap = new Map();
|
|
20
|
-
function createCompilerHost() {
|
|
21
|
-
const compilerHost = ts.createIncrementalCompilerHost(parsedTsConfig.options);
|
|
22
|
-
const baseGetSourceFile = compilerHost.getSourceFile;
|
|
23
|
-
compilerHost.getSourceFile = (fileName, languageVersionOrOptions, onError, shouldCreateNewSourceFile, ...args) => {
|
|
24
|
-
if (!shouldCreateNewSourceFile && sourceFileCache.has(path.normalize(fileName))) {
|
|
25
|
-
return sourceFileCache.get(path.normalize(fileName));
|
|
26
|
-
}
|
|
27
|
-
const file = baseGetSourceFile.call(compilerHost, fileName, languageVersionOrOptions, onError, true, ...args);
|
|
28
|
-
if (file) {
|
|
29
|
-
sourceFileCache.set(path.normalize(fileName), file);
|
|
30
|
-
}
|
|
31
|
-
return file;
|
|
32
|
-
};
|
|
33
|
-
return compilerHost;
|
|
34
|
-
}
|
|
35
|
-
function findAffectedFileSet() {
|
|
36
|
-
const affectedFileSet = new Set();
|
|
37
|
-
while (true) {
|
|
38
|
-
const result = builder.getSemanticDiagnosticsOfNextAffectedFile();
|
|
39
|
-
if (!result) {
|
|
40
|
-
break;
|
|
41
|
-
}
|
|
42
|
-
affectedFileSet.add(path.normalize(result.affected.fileName));
|
|
43
|
-
}
|
|
44
|
-
return affectedFileSet;
|
|
45
|
-
}
|
|
46
6
|
return {
|
|
47
7
|
name: "sd-server-compiler",
|
|
48
8
|
setup: (build) => {
|
|
49
|
-
|
|
50
|
-
|
|
51
|
-
build.onStart(() => {
|
|
52
|
-
|
|
53
|
-
|
|
54
|
-
|
|
55
|
-
|
|
56
|
-
|
|
57
|
-
sourceFileCache.delete(referencingFile);
|
|
58
|
-
}
|
|
59
|
-
}
|
|
60
|
-
}
|
|
61
|
-
referencingMap.clear();
|
|
62
|
-
//-- init resultCache
|
|
63
|
-
resultCache = {
|
|
64
|
-
watchFileSet: new Set(),
|
|
65
|
-
affectedFileSet: new Set(),
|
|
66
|
-
};
|
|
67
|
-
program = ts.createProgram(parsedTsConfig.fileNames, parsedTsConfig.options, compilerHost, program);
|
|
68
|
-
builder = ts.createEmitAndSemanticDiagnosticsBuilderProgram(program, compilerHost, builder);
|
|
69
|
-
//-- affectedFilePathSet
|
|
70
|
-
resultCache.affectedFileSet.adds(...findAffectedFileSet());
|
|
71
|
-
// Deps -> refMap
|
|
72
|
-
builder.getSourceFiles().forEach(sf => {
|
|
73
|
-
resultCache.watchFileSet.add(path.normalize(sf.fileName));
|
|
74
|
-
const deps = builder.getAllDependencies(sf);
|
|
75
|
-
for (const dep of deps) {
|
|
76
|
-
const ref = referencingMap.getOrCreate(dep, new Set());
|
|
77
|
-
ref.add(dep);
|
|
78
|
-
resultCache.watchFileSet.add(path.normalize(dep));
|
|
79
|
-
}
|
|
80
|
-
});
|
|
81
|
-
// refMap, modFile -> affectedFileSet
|
|
82
|
-
for (const modifiedFile of conf.modifiedFileSet) {
|
|
83
|
-
resultCache.affectedFileSet.adds(...referencingMap.get(modifiedFile) ?? []);
|
|
84
|
-
}
|
|
85
|
-
//-- diagnostics / build
|
|
86
|
-
const diagnostics = [];
|
|
87
|
-
diagnostics.push(...builder.getConfigFileParsingDiagnostics(), ...builder.getOptionsDiagnostics(), ...builder.getGlobalDiagnostics());
|
|
88
|
-
for (const affectedFile of resultCache.affectedFileSet) {
|
|
89
|
-
const affectedSourceFile = sourceFileCache.get(path.normalize(affectedFile));
|
|
90
|
-
if (!affectedSourceFile) {
|
|
91
|
-
continue;
|
|
92
|
-
}
|
|
93
|
-
diagnostics.push(...builder.getSyntacticDiagnostics(affectedSourceFile), ...builder.getSemanticDiagnostics(affectedSourceFile));
|
|
94
|
-
}
|
|
95
|
-
//-- prepare emit cache
|
|
96
|
-
while (true) {
|
|
97
|
-
const affectedFileResult = builder.emitNextAffectedFile((fileName, text, writeByteOrderMark, onError, sourceFiles, data) => {
|
|
98
|
-
if (!sourceFiles || sourceFiles.length === 0) {
|
|
99
|
-
compilerHost.writeFile(fileName, text, writeByteOrderMark, onError, sourceFiles, data);
|
|
100
|
-
return;
|
|
101
|
-
}
|
|
102
|
-
const sourceFile = ts.getOriginalNode(sourceFiles[0], ts.isSourceFile);
|
|
103
|
-
tscPrepareMap.set(path.normalize(sourceFile.fileName), text);
|
|
104
|
-
});
|
|
105
|
-
if (!affectedFileResult) {
|
|
106
|
-
break;
|
|
107
|
-
}
|
|
108
|
-
diagnostics.push(...affectedFileResult.result.diagnostics);
|
|
109
|
-
}
|
|
9
|
+
const compiler = new SdTsCompiler2(conf.pkgPath, { declaration: false }, conf.dev);
|
|
10
|
+
let buildResult;
|
|
11
|
+
build.onStart(async () => {
|
|
12
|
+
compiler.invalidate(conf.modifiedFileSet);
|
|
13
|
+
buildResult = await compiler.buildAsync();
|
|
14
|
+
conf.result.watchFileSet = buildResult.watchFileSet;
|
|
15
|
+
conf.result.affectedFileSet = buildResult.affectedFileSet;
|
|
16
|
+
conf.result.program = buildResult.program;
|
|
110
17
|
//-- return err/warn
|
|
111
18
|
return {
|
|
112
|
-
errors:
|
|
113
|
-
warnings:
|
|
19
|
+
errors: buildResult.typescriptDiagnostics.filter(item => item.category === ts.DiagnosticCategory.Error).map(item => convertTypeScriptDiagnostic(ts, item)),
|
|
20
|
+
warnings: buildResult.typescriptDiagnostics.filter(item => item.category !== ts.DiagnosticCategory.Error).map(item => convertTypeScriptDiagnostic(ts, item)),
|
|
114
21
|
};
|
|
115
22
|
});
|
|
116
23
|
build.onLoad({ filter: /\.ts$/ }, (args) => {
|
|
117
|
-
|
|
118
|
-
const contents = tscPrepareMap.get(path.normalize(args.path));
|
|
24
|
+
const contents = buildResult.emittedFilesCacheMap.get(path.normalize(args.path)).last().text;
|
|
119
25
|
return { contents, loader: "js" };
|
|
120
26
|
});
|
|
27
|
+
build.onLoad({ filter: /\.[cm]?js$/ }, (args) => {
|
|
28
|
+
conf.result.watchFileSet.add(path.normalize(args.path));
|
|
29
|
+
return null;
|
|
30
|
+
});
|
|
121
31
|
build.onLoad({ filter: new RegExp("(" + Object.keys(build.initialOptions.loader).map(item => "\\" + item).join("|") + ")$") }, (args) => {
|
|
122
|
-
|
|
32
|
+
conf.result.watchFileSet.add(path.normalize(args.path));
|
|
123
33
|
return null;
|
|
124
34
|
});
|
|
125
35
|
build.onEnd((result) => {
|
|
126
|
-
conf.result.watchFileSet = resultCache.watchFileSet;
|
|
127
|
-
conf.result.affectedFileSet = resultCache.affectedFileSet;
|
|
128
36
|
conf.result.outputFiles = result.outputFiles;
|
|
129
37
|
conf.result.metafile = result.metafile;
|
|
130
|
-
conf.result.program = program;
|
|
131
38
|
conf.modifiedFileSet.clear();
|
|
132
39
|
});
|
|
133
40
|
}
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"sdServerPlugin.js","sourceRoot":"","sources":["../../src/bundle-plugins/sdServerPlugin.ts"],"names":[],"mappings":"AACA,OAAO,
|
|
1
|
+
{"version":3,"file":"sdServerPlugin.js","sourceRoot":"","sources":["../../src/bundle-plugins/sdServerPlugin.ts"],"names":[],"mappings":"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"}
|
package/dist/commons.d.ts
CHANGED
|
@@ -158,16 +158,7 @@ export class SdCliProject {
|
|
|
158
158
|
busyReqCntMap.set("all", (busyReqCntMap.get("all") ?? 0) + 1);
|
|
159
159
|
logger.log("빌드를 시작합니다...");
|
|
160
160
|
await pkgPaths.parallelAsync(async (pkgPath) => {
|
|
161
|
-
|
|
162
|
-
if (pkgConf.type === "client") {
|
|
163
|
-
const builderKeys = Object.keys(pkgConf.builder ?? { web: {} });
|
|
164
|
-
await builderKeys.parallelAsync(async (builderKey) => {
|
|
165
|
-
await this._runCommandAsync(cluster, "watch", projConf, pkgPath, builderKey);
|
|
166
|
-
});
|
|
167
|
-
}
|
|
168
|
-
else {
|
|
169
|
-
await this._runCommandAsync(cluster, "watch", projConf, pkgPath);
|
|
170
|
-
}
|
|
161
|
+
await this._runCommandAsync(cluster, "watch", projConf, pkgPath, opt.inspectNames.includes(path.basename(pkgPath)) ? ["--inspect"] : []);
|
|
171
162
|
});
|
|
172
163
|
busyReqCntMap.set("all", (busyReqCntMap.get("all") ?? 0) - 1);
|
|
173
164
|
if (Array.from(busyReqCntMap.values()).every(v => v === 0)) {
|
|
@@ -196,16 +187,16 @@ export class SdCliProject {
|
|
|
196
187
|
const cluster = await this._prepareClusterAsync();
|
|
197
188
|
logger.debug("빌드 프로세스 명령 전달...");
|
|
198
189
|
const results = (await pkgPaths.parallelAsync(async (pkgPath) => {
|
|
199
|
-
const pkgConf = projConf.packages[path.basename(pkgPath)]
|
|
190
|
+
/*const pkgConf = projConf.packages[path.basename(pkgPath)]!;
|
|
200
191
|
if (pkgConf.type === "client") {
|
|
201
|
-
|
|
202
|
-
|
|
203
|
-
|
|
204
|
-
|
|
192
|
+
const builderKeys = Object.keys(pkgConf.builder ?? {web: {}});
|
|
193
|
+
return (await builderKeys.parallelAsync(async (builderKey) => {
|
|
194
|
+
return await this._runCommandAsync(cluster, "build", projConf, pkgPath, builderKey);
|
|
195
|
+
})).mapMany();
|
|
205
196
|
}
|
|
206
197
|
else {
|
|
207
|
-
|
|
208
|
-
|
|
198
|
+
}*/
|
|
199
|
+
return await this._runCommandAsync(cluster, "build", projConf, pkgPath);
|
|
209
200
|
})).mapMany();
|
|
210
201
|
logger.debug("빌드 프로세스 닫기...");
|
|
211
202
|
this._closeCluster(cluster);
|
|
@@ -246,16 +237,7 @@ export class SdCliProject {
|
|
|
246
237
|
const cluster = await this._prepareClusterAsync();
|
|
247
238
|
logger.debug("빌드 프로세스 명령 전달...");
|
|
248
239
|
const results = (await pkgPaths.parallelAsync(async (pkgPath) => {
|
|
249
|
-
|
|
250
|
-
if (pkgConf.type === "client") {
|
|
251
|
-
const builderKeys = Object.keys(pkgConf.builder ?? { web: {} });
|
|
252
|
-
return (await builderKeys.parallelAsync(async (builderKey) => {
|
|
253
|
-
return await this._runCommandAsync(cluster, "build", projConf, pkgPath, builderKey);
|
|
254
|
-
})).mapMany();
|
|
255
|
-
}
|
|
256
|
-
else {
|
|
257
|
-
return await this._runCommandAsync(cluster, "build", projConf, pkgPath);
|
|
258
|
-
}
|
|
240
|
+
return await this._runCommandAsync(cluster, "build", projConf, pkgPath);
|
|
259
241
|
})).mapMany();
|
|
260
242
|
logger.debug("빌드 프로세스 닫기...");
|
|
261
243
|
this._closeCluster(cluster);
|
|
@@ -445,7 +427,7 @@ export class SdCliProject {
|
|
|
445
427
|
});
|
|
446
428
|
});
|
|
447
429
|
}
|
|
448
|
-
static async _runCommandAsync(cluster, cmd, projConf, pkgPath,
|
|
430
|
+
static async _runCommandAsync(cluster, cmd, projConf, pkgPath, execArgs) {
|
|
449
431
|
return await new Promise((resolve) => {
|
|
450
432
|
const cb = (message) => {
|
|
451
433
|
if (cmd === "watch" && message.type === "ready" && message.req.cmd === cmd && message.req.pkgPath === pkgPath) {
|
|
@@ -462,7 +444,7 @@ export class SdCliProject {
|
|
|
462
444
|
cmd,
|
|
463
445
|
projConf,
|
|
464
446
|
pkgPath,
|
|
465
|
-
|
|
447
|
+
execArgs
|
|
466
448
|
});
|
|
467
449
|
});
|
|
468
450
|
}
|