@simplysm/sd-cli 11.1.46 → 11.1.51

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 (40) hide show
  1. package/dist/build-tools/SdLibBundler.d.ts +13 -0
  2. package/dist/build-tools/SdLibBundler.js +51 -0
  3. package/dist/build-tools/SdLibBundler.js.map +1 -0
  4. package/dist/build-tools/SdLinter.js +4 -4
  5. package/dist/build-tools/SdLinter.js.map +1 -1
  6. package/dist/build-tools/SdNgBundler.d.ts +10 -19
  7. package/dist/build-tools/SdNgBundler.js +103 -99
  8. package/dist/build-tools/SdNgBundler.js.map +1 -1
  9. package/dist/build-tools/SdTsCompiler.d.ts +23 -10
  10. package/dist/build-tools/SdTsCompiler.js +250 -220
  11. package/dist/build-tools/SdTsCompiler.js.map +1 -1
  12. package/dist/builders/SdCliTsLibBuilder.d.ts +2 -6
  13. package/dist/builders/SdCliTsLibBuilder.js +26 -21
  14. package/dist/builders/SdCliTsLibBuilder.js.map +1 -1
  15. package/dist/bundle-plugins/sdNgPlugin.js +2 -2
  16. package/dist/bundle-plugins/sdNgPlugin.js.map +1 -1
  17. package/dist/bundle-plugins/sdServerPlugin.js +2 -2
  18. package/dist/bundle-plugins/sdServerPlugin.js.map +1 -1
  19. package/dist/entry/SdCliProject.js +3 -1
  20. package/dist/entry/SdCliProject.js.map +1 -1
  21. package/dist/index.d.ts +1 -1
  22. package/dist/index.js +1 -1
  23. package/dist/index.js.map +1 -1
  24. package/dist/sd-cli.d.ts +1 -1
  25. package/dist/sd-cli.js +1 -1
  26. package/package.json +5 -5
  27. package/src/build-tools/SdLibBundler.ts +70 -0
  28. package/src/build-tools/SdLinter.ts +4 -4
  29. package/src/build-tools/SdNgBundler.ts +114 -109
  30. package/src/build-tools/SdTsCompiler.ts +355 -214
  31. package/src/builders/SdCliTsLibBuilder.ts +29 -22
  32. package/src/bundle-plugins/sdNgPlugin.ts +2 -2
  33. package/src/bundle-plugins/sdServerPlugin.ts +2 -2
  34. package/src/entry/SdCliProject.ts +3 -1
  35. package/src/index.ts +1 -1
  36. package/src/sd-cli.ts +1 -1
  37. package/dist/build-tools2/SdTsCompiler2.d.ts +0 -26
  38. package/dist/build-tools2/SdTsCompiler2.js +0 -280
  39. package/dist/build-tools2/SdTsCompiler2.js.map +0 -1
  40. package/src/build-tools2/SdTsCompiler2.ts +0 -427
@@ -2,21 +2,27 @@ import {FsUtil, Logger, PathUtil, SdFsWatcher} from "@simplysm/sd-core-node";
2
2
  import path from "path";
3
3
  import {ISdCliBuilderResult, ISdCliConfig, ISdCliLibPackageConfig, ISdCliPackageBuildResult} from "../commons";
4
4
  import {EventEmitter} from "events";
5
- import {SdTsCompiler} from "../build-tools/SdTsCompiler";
5
+ import {SdLibBundler} from "../build-tools/SdLibBundler";
6
6
  import {SdLinter} from "../build-tools/SdLinter";
7
7
  import {FunctionQueue} from "@simplysm/sd-core-common";
8
8
  import {SdCliIndexFileGenerator} from "../build-tools/SdCliIndexFileGenerator";
9
9
 
10
10
  export class SdCliTsLibBuilder extends EventEmitter {
11
- private readonly _logger = Logger.get(["simplysm", "sd-cli", "SdCliTsLibBuilder"]);
11
+ readonly #logger = Logger.get(["simplysm", "sd-cli", "SdCliTsLibBuilder"]);
12
12
 
13
- private readonly _pkgConf: ISdCliLibPackageConfig;
14
- private _builder?: SdTsCompiler;
13
+ readonly #projConf: ISdCliConfig;
14
+ readonly #pkgPath: string;
15
+ readonly #pkgConf: ISdCliLibPackageConfig;
15
16
 
16
- public constructor(private readonly _projConf: ISdCliConfig,
17
- private readonly _pkgPath: string) {
17
+ #bundler?: SdLibBundler;
18
+
19
+ public constructor(projConf: ISdCliConfig,
20
+ pkgPath: string) {
18
21
  super();
19
- this._pkgConf = this._projConf.packages[path.basename(_pkgPath)] as ISdCliLibPackageConfig;
22
+ this.#projConf = projConf;
23
+ this.#pkgPath = pkgPath;
24
+
25
+ this.#pkgConf = projConf.packages[path.basename(pkgPath)] as ISdCliLibPackageConfig;
20
26
  }
21
27
 
22
28
  public override on(event: "change", listener: () => void): this;
@@ -28,11 +34,11 @@ export class SdCliTsLibBuilder extends EventEmitter {
28
34
 
29
35
  public async buildAsync(): Promise<ISdCliBuilderResult> {
30
36
  this._debug("dist 초기화...");
31
- await FsUtil.removeAsync(path.resolve(this._pkgPath, "dist"));
37
+ await FsUtil.removeAsync(path.resolve(this.#pkgPath, "dist"));
32
38
 
33
- if (!this._pkgConf.noGenIndex) {
39
+ if (!this.#pkgConf.noGenIndex) {
34
40
  this._debug("GEN index.ts...");
35
- await SdCliIndexFileGenerator.runAsync(this._pkgPath, this._pkgConf.polyfills);
41
+ await SdCliIndexFileGenerator.runAsync(this.#pkgPath, this.#pkgConf.polyfills);
36
42
  }
37
43
 
38
44
  const result = await this._runAsync(false);
@@ -46,11 +52,11 @@ export class SdCliTsLibBuilder extends EventEmitter {
46
52
  this.emit("change");
47
53
 
48
54
  this._debug("dist 초기화...");
49
- await FsUtil.removeAsync(path.resolve(this._pkgPath, "dist"));
55
+ await FsUtil.removeAsync(path.resolve(this.#pkgPath, "dist"));
50
56
 
51
- if (!this._pkgConf.noGenIndex) {
57
+ if (!this.#pkgConf.noGenIndex) {
52
58
  this._debug("WATCH GEN index.ts...");
53
- await SdCliIndexFileGenerator.watchAsync(this._pkgPath, this._pkgConf.polyfills);
59
+ await SdCliIndexFileGenerator.watchAsync(this.#pkgPath, this.#pkgConf.polyfills);
54
60
  }
55
61
 
56
62
  const result = await this._runAsync(true);
@@ -64,7 +70,7 @@ export class SdCliTsLibBuilder extends EventEmitter {
64
70
  const watcher = SdFsWatcher
65
71
  .watch(Array.from(result.watchFileSet))
66
72
  .onChange({delay: 100,}, (changeInfos) => {
67
- this._builder!.markChanges(new Set(changeInfos.map((item) => item.path)));
73
+ this.#bundler!.markChanges(new Set(changeInfos.map((item) => item.path)));
68
74
 
69
75
  fnQ.runLast(async () => {
70
76
  this.emit("change");
@@ -85,18 +91,19 @@ export class SdCliTsLibBuilder extends EventEmitter {
85
91
  affectedFileSet: Set<string>;
86
92
  buildResults: ISdCliPackageBuildResult[];
87
93
  }> {
88
- this._debug(`BUILD & CHECK...`);
89
- this._builder = this._builder ?? new SdTsCompiler(this._pkgPath, dev);
90
- const buildResult = await this._builder.buildAsync();
94
+ this._debug(`BUILD...`);
95
+ this.#bundler = this.#bundler ?? new SdLibBundler(this.#pkgPath, dev);
96
+ const buildResult = await this.#bundler.buildAsync();
91
97
 
92
98
  this._debug("LINT...");
93
- const lintResults = await SdLinter.lintAsync(Array.from(buildResult.affectedFileSet).filter(item => PathUtil.isChildPath(item, this._pkgPath)), this._builder.program);
99
+ const lintFilePaths = Array.from(buildResult.affectedFileSet).filter(item => PathUtil.isChildPath(item, this.#pkgPath));
100
+ const lintResults = await SdLinter.lintAsync(lintFilePaths, buildResult.program);
94
101
 
95
102
  this._debug(`빌드 완료`);
96
- const localUpdatePaths = Object.keys(this._projConf.localUpdates ?? {})
97
- .mapMany((key) => FsUtil.glob(path.resolve(this._pkgPath, "../../node_modules", key)));
103
+ const localUpdatePaths = Object.keys(this.#projConf.localUpdates ?? {})
104
+ .mapMany((key) => FsUtil.glob(path.resolve(this.#pkgPath, "../../node_modules", key)));
98
105
  const watchFileSet = new Set(Array.from(buildResult.watchFileSet).filter(item =>
99
- PathUtil.isChildPath(item, path.resolve(this._pkgPath, "../")) ||
106
+ PathUtil.isChildPath(item, path.resolve(this.#pkgPath, "../")) ||
100
107
  localUpdatePaths.some((lu) => PathUtil.isChildPath(item, lu))
101
108
  ));
102
109
 
@@ -108,6 +115,6 @@ export class SdCliTsLibBuilder extends EventEmitter {
108
115
  }
109
116
 
110
117
  private _debug(msg: string): void {
111
- this._logger.debug(`[${path.basename(this._pkgPath)}] ${msg}`);
118
+ this.#logger.debug(`[${path.basename(this.#pkgPath)}] ${msg}`);
112
119
  }
113
120
  }
@@ -3,7 +3,7 @@ import ts from "typescript";
3
3
  import path from "path";
4
4
  import {JavaScriptTransformer} from "@angular-devkit/build-angular/src/tools/esbuild/javascript-transformer";
5
5
  import os from "os";
6
- import {ISdTsCompiler2Result, SdTsCompiler2} from "../build-tools2/SdTsCompiler2";
6
+ import {ISdTsCompiler2Result, SdTsCompiler} from "../build-tools/SdTsCompiler";
7
7
  import {convertTypeScriptDiagnostic} from "@angular-devkit/build-angular/src/tools/esbuild/angular/diagnostics";
8
8
 
9
9
  export function sdNgPlugin(conf: {
@@ -15,7 +15,7 @@ export function sdNgPlugin(conf: {
15
15
  return {
16
16
  name: "sd-ng-compiler",
17
17
  setup: (build: esbuild.PluginBuild) => {
18
- const compiler = new SdTsCompiler2(conf.pkgPath, {declaration: false}, conf.dev);
18
+ const compiler = new SdTsCompiler(conf.pkgPath, {declaration: false}, conf.dev);
19
19
 
20
20
  let buildResult: ISdTsCompiler2Result;
21
21
  const outputContentsCacheMap = new Map<string, Uint8Array>();
@@ -2,7 +2,7 @@ import esbuild from "esbuild";
2
2
  import ts from "typescript";
3
3
  import path from "path";
4
4
  import {convertTypeScriptDiagnostic} from "@angular-devkit/build-angular/src/tools/esbuild/angular/diagnostics";
5
- import {ISdTsCompiler2Result, SdTsCompiler2} from "../build-tools2/SdTsCompiler2";
5
+ import {ISdTsCompiler2Result, SdTsCompiler} from "../build-tools/SdTsCompiler";
6
6
 
7
7
  export function sdServerPlugin(conf: {
8
8
  pkgPath: string;
@@ -13,7 +13,7 @@ export function sdServerPlugin(conf: {
13
13
  return {
14
14
  name: "sd-server-compiler",
15
15
  setup: (build: esbuild.PluginBuild) => {
16
- const compiler = new SdTsCompiler2(conf.pkgPath, {declaration: false}, conf.dev);
16
+ const compiler = new SdTsCompiler(conf.pkgPath, {declaration: false}, conf.dev);
17
17
 
18
18
  let buildResult: ISdTsCompiler2Result;
19
19
 
@@ -87,7 +87,9 @@ export class SdCliProject {
87
87
  else if (message.type === "complete") {
88
88
  resultCache.delete("none");
89
89
  for (const affectedFilePath of message.result!.affectedFilePaths) {
90
- resultCache.delete(affectedFilePath);
90
+ if (PathUtil.isChildPath(affectedFilePath, message.req.pkgPath)) {
91
+ resultCache.delete(affectedFilePath);
92
+ }
91
93
  }
92
94
 
93
95
  for (const buildResult of message.result!.buildResults) {
package/src/index.ts CHANGED
@@ -1,12 +1,12 @@
1
1
  export * from "./build-tools/SdCliCordova";
2
2
  export * from "./build-tools/SdCliIndexFileGenerator";
3
3
  export * from "./build-tools/SdCliNgRoutesFileGenerator";
4
+ export * from "./build-tools/SdLibBundler";
4
5
  export * from "./build-tools/SdLinter";
5
6
  export * from "./build-tools/SdNgBundler";
6
7
  export * from "./build-tools/SdNgBundlerContext";
7
8
  export * from "./build-tools/SdServerBundler";
8
9
  export * from "./build-tools/SdTsCompiler";
9
- export * from "./build-tools2/SdTsCompiler2";
10
10
  export * from "./builders/SdCliClientBuilder";
11
11
  export * from "./builders/SdCliJsLibLinter";
12
12
  export * from "./builders/SdCliServerBuilder";
package/src/sd-cli.ts CHANGED
@@ -1,4 +1,4 @@
1
- #!/usr/bin/env node --es-module-specifier-resolution=node --no-warnings --experimental-import-meta-resolve --max-old-space-size=8000
1
+ #!/usr/bin/env node --es-module-specifier-resolution=node --no-warnings --experimental-import-meta-resolve
2
2
 
3
3
  import yargs from "yargs";
4
4
  import {hideBin} from "yargs/helpers";
@@ -1,26 +0,0 @@
1
- import ts, { CompilerOptions } from "typescript";
2
- import esbuild from "esbuild";
3
- export declare class SdTsCompiler2 {
4
- #private;
5
- constructor(pkgPath: string, additionalOptions: CompilerOptions, isDevMode: boolean, globalStyleFilePath?: string);
6
- invalidate(modifiedFileSet: Set<string>): void;
7
- buildAsync(): Promise<ISdTsCompiler2Result>;
8
- }
9
- export interface ISdTsCompiler2Result {
10
- program: ts.Program;
11
- typescriptDiagnostics: ts.Diagnostic[];
12
- stylesheetResultMap: Map<string, IStylesheetResult>;
13
- emittedFilesCacheMap: Map<string, {
14
- outRelPath?: string;
15
- text: string;
16
- }[]>;
17
- watchFileSet: Set<string>;
18
- affectedFileSet: Set<string>;
19
- }
20
- interface IStylesheetResult {
21
- outputFiles: esbuild.OutputFile[];
22
- metafile?: esbuild.Metafile;
23
- errors?: esbuild.PartialMessage[];
24
- warnings?: esbuild.PartialMessage[];
25
- }
26
- export {};
@@ -1,280 +0,0 @@
1
- import ts from "typescript";
2
- import path from "path";
3
- import { FsUtil, PathUtil } from "@simplysm/sd-core-node";
4
- import { transformSupportedBrowsersToTargets } from "@angular-devkit/build-angular/src/tools/esbuild/utils";
5
- import browserslist from "browserslist";
6
- import { ComponentStylesheetBundler } from "@angular-devkit/build-angular/src/tools/esbuild/angular/component-stylesheets";
7
- import { StringUtil } from "@simplysm/sd-core-common";
8
- import { NgtscProgram, OptimizeFor } from "@angular/compiler-cli";
9
- import { createHash } from "crypto";
10
- export class SdTsCompiler2 {
11
- #parsedTsconfig;
12
- #isForAngular;
13
- #resourceDependencyCacheMap = new Map();
14
- #sourceFileCacheMap = new Map();
15
- #emittedFilesCacheMap = new Map();
16
- #stylesheetBundler;
17
- #compilerHost;
18
- #ngProgram;
19
- #program;
20
- #builder;
21
- #modifiedFileSet = new Set();
22
- #watchFileSet = new Set();
23
- #stylesheetResultMap = new Map();
24
- #affectedFileSet = new Set();
25
- #pkgPath;
26
- #distPath;
27
- #globalStyleFilePath;
28
- constructor(pkgPath, additionalOptions, isDevMode, globalStyleFilePath) {
29
- this.#pkgPath = pkgPath;
30
- this.#globalStyleFilePath = globalStyleFilePath != null ? path.normalize(globalStyleFilePath) : undefined;
31
- //-- isForAngular / parsedTsConfig
32
- const tsconfigPath = path.resolve(pkgPath, "tsconfig.json");
33
- const tsconfig = FsUtil.readJson(tsconfigPath);
34
- this.#isForAngular = Boolean(tsconfig.angularCompilerOptions);
35
- this.#parsedTsconfig = ts.parseJsonConfigFileContent(tsconfig, ts.sys, pkgPath, {
36
- ...tsconfig.angularCompilerOptions,
37
- ...additionalOptions
38
- });
39
- this.#distPath = this.#parsedTsconfig.options.outDir ?? path.resolve(pkgPath, "dist");
40
- //-- compilerHost
41
- this.#compilerHost = ts.createIncrementalCompilerHost(this.#parsedTsconfig.options);
42
- const baseGetSourceFile = this.#compilerHost.getSourceFile;
43
- this.#compilerHost.getSourceFile = (fileName, languageVersionOrOptions, onError, shouldCreateNewSourceFile, ...args) => {
44
- if (!shouldCreateNewSourceFile && this.#sourceFileCacheMap.has(path.normalize(fileName))) {
45
- return this.#sourceFileCacheMap.get(path.normalize(fileName));
46
- }
47
- const sf = baseGetSourceFile.call(this.#compilerHost, fileName, languageVersionOrOptions, onError, true, ...args);
48
- if (sf) {
49
- this.#sourceFileCacheMap.set(path.normalize(fileName), sf);
50
- }
51
- else {
52
- this.#sourceFileCacheMap.delete(path.normalize(fileName));
53
- }
54
- return sf;
55
- };
56
- if (this.#isForAngular) {
57
- //-- stylesheetBundler
58
- const browserTarget = transformSupportedBrowsersToTargets(browserslist("defaults and fully supports es6-module"));
59
- this.#stylesheetBundler = new ComponentStylesheetBundler({
60
- workspaceRoot: pkgPath,
61
- optimization: !isDevMode,
62
- inlineFonts: true,
63
- preserveSymlinks: false,
64
- sourcemap: 'inline', //conf.dev ? 'inline' : false,
65
- outputNames: { bundles: '[name]', media: 'media/[name]' },
66
- includePaths: [],
67
- externalDependencies: [],
68
- target: browserTarget,
69
- tailwindConfiguration: undefined,
70
- cacheOptions: {
71
- enabled: true,
72
- path: ".cache/angular",
73
- basePath: ".cache"
74
- }
75
- }, isDevMode);
76
- //-- compilerHost
77
- this.#compilerHost.readResource = (fileName) => {
78
- return this.#compilerHost.readFile(fileName) ?? "";
79
- };
80
- this.#compilerHost.transformResource = async (data, context) => {
81
- if (context.type !== "style") {
82
- return null;
83
- }
84
- const contents = await this.#bundleStylesheetAsync(data, context.containingFile, context.resourceFile);
85
- return StringUtil.isNullOrEmpty(contents) ? null : { content: contents };
86
- };
87
- this.#compilerHost.getModifiedResourceFiles = () => {
88
- return this.#modifiedFileSet;
89
- };
90
- }
91
- }
92
- async #bundleStylesheetAsync(data, containingFile, resourceFile = null) {
93
- const stylesheetResult = resourceFile != null
94
- ? await this.#stylesheetBundler.bundleFile(resourceFile)
95
- : await this.#stylesheetBundler.bundleInline(data, containingFile, "scss");
96
- this.#watchFileSet.add(path.normalize(containingFile));
97
- if (resourceFile != null) {
98
- this.#watchFileSet.add(path.normalize(resourceFile));
99
- }
100
- if (stylesheetResult.referencedFiles) {
101
- for (const referencedFile of stylesheetResult.referencedFiles) {
102
- const referencingMapValSet = this.#resourceDependencyCacheMap.getOrCreate(path.normalize(referencedFile), new Set());
103
- referencingMapValSet.add(path.normalize(containingFile));
104
- if (resourceFile != null) {
105
- referencingMapValSet.add(path.normalize(resourceFile));
106
- }
107
- }
108
- this.#watchFileSet.adds(...Array.from(stylesheetResult.referencedFiles.values()).map(item => path.normalize(item)));
109
- }
110
- this.#stylesheetResultMap.set(path.normalize(resourceFile ?? containingFile), {
111
- outputFiles: stylesheetResult.outputFiles ?? [],
112
- metafile: stylesheetResult.metafile,
113
- errors: stylesheetResult.errors,
114
- warnings: stylesheetResult.warnings
115
- });
116
- return stylesheetResult.contents;
117
- }
118
- invalidate(modifiedFileSet) {
119
- this.#stylesheetBundler?.invalidate(modifiedFileSet);
120
- for (const modifiedFile of modifiedFileSet) {
121
- this.#stylesheetResultMap.delete(path.normalize(modifiedFile));
122
- this.#sourceFileCacheMap.delete(path.normalize(modifiedFile));
123
- this.#emittedFilesCacheMap.delete(path.normalize(modifiedFile));
124
- if (this.#resourceDependencyCacheMap.has(path.normalize(modifiedFile))) {
125
- for (const referencingFile of this.#resourceDependencyCacheMap.get(path.normalize(modifiedFile))) {
126
- this.#stylesheetResultMap.delete(path.normalize(referencingFile));
127
- this.#sourceFileCacheMap.delete(path.normalize(referencingFile));
128
- this.#emittedFilesCacheMap.delete(path.normalize(referencingFile));
129
- }
130
- }
131
- }
132
- this.#modifiedFileSet.adds(...modifiedFileSet);
133
- }
134
- async buildAsync() {
135
- this.#resourceDependencyCacheMap.clear();
136
- this.#watchFileSet.clear();
137
- this.#stylesheetResultMap.clear();
138
- this.#affectedFileSet.clear();
139
- if (this.#isForAngular) {
140
- this.#ngProgram = new NgtscProgram(this.#parsedTsconfig.fileNames, this.#parsedTsconfig.options, this.#compilerHost, this.#ngProgram);
141
- this.#program = this.#ngProgram.getTsProgram();
142
- }
143
- else {
144
- // noinspection UnnecessaryLocalVariableJS
145
- this.#program = ts.createProgram(this.#parsedTsconfig.fileNames, this.#parsedTsconfig.options, this.#compilerHost, this.#program);
146
- }
147
- const baseGetSourceFiles = this.#program.getSourceFiles;
148
- this.#program.getSourceFiles = function (...parameters) {
149
- const files = baseGetSourceFiles(...parameters);
150
- for (const file of files) {
151
- if (file.version === undefined) {
152
- file.version = createHash("sha256").update(file.text).digest("hex");
153
- }
154
- }
155
- return files;
156
- };
157
- this.#builder = ts.createEmitAndSemanticDiagnosticsBuilderProgram(this.#program, this.#compilerHost, this.#builder);
158
- if (this.#ngProgram) {
159
- await this.#ngProgram.compiler.analyzeAsync();
160
- }
161
- //-- affectedFilePathSet
162
- while (true) {
163
- const result = this.#builder.getSemanticDiagnosticsOfNextAffectedFile(undefined, (sourceFile) => {
164
- if (this.#ngProgram
165
- && this.#ngProgram.compiler.ignoreForDiagnostics.has(sourceFile)
166
- && sourceFile.fileName.endsWith('.ngtypecheck.ts')) {
167
- const originalFilename = sourceFile.fileName.slice(0, -15) + '.ts';
168
- const originalSourceFile = this.#sourceFileCacheMap.get(originalFilename);
169
- if (originalSourceFile) {
170
- this.#affectedFileSet.add(path.normalize(originalSourceFile.fileName));
171
- }
172
- return true;
173
- }
174
- return false;
175
- });
176
- if (!result) {
177
- break;
178
- }
179
- this.#affectedFileSet.add(path.normalize(result.affected.fileName));
180
- }
181
- // Deps -> refMap
182
- this.#builder.getSourceFiles().filter(sf => !this.#ngProgram || !this.#ngProgram.compiler.ignoreForEmit.has(sf))
183
- .forEach(sf => {
184
- this.#watchFileSet.add(path.normalize(sf.fileName));
185
- if (this.#ngProgram) {
186
- const deps = this.#ngProgram.compiler.getResourceDependencies(sf);
187
- for (const dep of deps) {
188
- const ref = this.#resourceDependencyCacheMap.getOrCreate(path.normalize(dep), new Set());
189
- ref.add(path.normalize(sf.fileName));
190
- this.#watchFileSet.add(path.normalize(dep));
191
- }
192
- }
193
- });
194
- //-- diagnostics
195
- const diagnostics = [];
196
- diagnostics.push(...this.#builder.getConfigFileParsingDiagnostics(), ...this.#builder.getOptionsDiagnostics(), ...this.#builder.getGlobalDiagnostics());
197
- if (this.#ngProgram) {
198
- diagnostics.push(...this.#ngProgram.compiler.getOptionDiagnostics());
199
- }
200
- for (const affectedFile of this.#affectedFileSet) {
201
- const affectedSourceFile = this.#sourceFileCacheMap.get(affectedFile);
202
- if (!affectedSourceFile || (this.#ngProgram && this.#ngProgram.compiler.ignoreForDiagnostics.has(affectedSourceFile))) {
203
- continue;
204
- }
205
- diagnostics.push(...this.#builder.getSyntacticDiagnostics(affectedSourceFile), ...this.#builder.getSemanticDiagnostics(affectedSourceFile));
206
- if (this.#ngProgram) {
207
- if (affectedSourceFile.isDeclarationFile) {
208
- continue;
209
- }
210
- diagnostics.push(...this.#ngProgram.compiler.getDiagnosticsForFile(affectedSourceFile, OptimizeFor.WholeProgram));
211
- }
212
- }
213
- //-- prepare emit cache
214
- while (true) {
215
- const affectedFileResult = this.#builder.emitNextAffectedFile((fileName, text, writeByteOrderMark, onError, sourceFiles, data) => {
216
- if (!sourceFiles || sourceFiles.length === 0) {
217
- this.#compilerHost.writeFile(fileName, text, writeByteOrderMark, onError, sourceFiles, data);
218
- return;
219
- }
220
- const sourceFile = ts.getOriginalNode(sourceFiles[0], ts.isSourceFile);
221
- if (this.#ngProgram) {
222
- if (this.#ngProgram.compiler.ignoreForEmit.has(sourceFile)) {
223
- return;
224
- }
225
- this.#ngProgram.compiler.incrementalCompilation.recordSuccessfulEmit(sourceFile);
226
- }
227
- const emittedFiles = this.#emittedFilesCacheMap.getOrCreate(path.normalize(sourceFile.fileName), []);
228
- if (PathUtil.isChildPath(sourceFile.fileName, this.#pkgPath)) {
229
- let realFilePath = fileName;
230
- let realText = text;
231
- if (PathUtil.isChildPath(realFilePath, path.resolve(this.#distPath, path.basename(this.#pkgPath), "src"))) {
232
- realFilePath = path.resolve(this.#distPath, path.relative(path.resolve(this.#distPath, path.basename(this.#pkgPath), "src"), realFilePath));
233
- if (fileName.endsWith(".js.map")) {
234
- const sourceMapContents = JSON.parse(realText);
235
- // remove "../../"
236
- sourceMapContents.sources[0] = sourceMapContents.sources[0].slice(6);
237
- realText = JSON.stringify(sourceMapContents);
238
- }
239
- }
240
- emittedFiles.push({
241
- outRelPath: path.relative(this.#distPath, realFilePath),
242
- text: realText
243
- });
244
- }
245
- else {
246
- emittedFiles.push({ text });
247
- }
248
- }, undefined, undefined, this.#ngProgram?.compiler.prepareEmit().transformers);
249
- if (!affectedFileResult) {
250
- break;
251
- }
252
- diagnostics.push(...affectedFileResult.result.diagnostics);
253
- }
254
- //-- global style
255
- if (this.#globalStyleFilePath != null
256
- && !this.#stylesheetResultMap.has(this.#globalStyleFilePath)
257
- && FsUtil.exists(this.#globalStyleFilePath)) {
258
- const data = await FsUtil.readFileAsync(this.#globalStyleFilePath);
259
- const contents = await this.#bundleStylesheetAsync(data, this.#globalStyleFilePath, this.#globalStyleFilePath);
260
- const emittedFiles = this.#emittedFilesCacheMap.getOrCreate(path.normalize(this.#globalStyleFilePath), []);
261
- emittedFiles.push({
262
- outRelPath: path.relative(path.resolve(this.#pkgPath, "src"), this.#globalStyleFilePath).replace(/\.scss$/, ".css"),
263
- text: contents
264
- });
265
- this.#affectedFileSet.add(this.#globalStyleFilePath);
266
- }
267
- //-- init
268
- this.#modifiedFileSet.clear();
269
- //-- result
270
- return {
271
- program: this.#program,
272
- typescriptDiagnostics: diagnostics,
273
- stylesheetResultMap: this.#stylesheetResultMap,
274
- emittedFilesCacheMap: this.#emittedFilesCacheMap,
275
- watchFileSet: this.#watchFileSet,
276
- affectedFileSet: this.#affectedFileSet
277
- };
278
- }
279
- }
280
- //# sourceMappingURL=SdTsCompiler2.js.map
@@ -1 +0,0 @@
1
- {"version":3,"file":"SdTsCompiler2.js","sourceRoot":"","sources":["../../src/build-tools2/SdTsCompiler2.ts"],"names":[],"mappings":"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"}