@simplysm/sd-cli 12.13.39 → 12.13.41

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 (76) hide show
  1. package/dist/entry/SdCliPostInstall.d.ts +3 -0
  2. package/dist/entry/{SdCliPostinstall.js → SdCliPostInstall.js} +2 -2
  3. package/dist/entry/{SdCliPostinstall.js.map → SdCliPostInstall.js.map} +1 -1
  4. package/dist/fix/{convert-private-to-hash.js → convertPrivateToHash.js} +2 -2
  5. package/dist/fix/convertPrivateToHash.js.map +1 -0
  6. package/dist/fix/{convert-sd-angular-symbol-names.js → convertSdAngularSymbolNames.js} +2 -2
  7. package/dist/fix/convertSdAngularSymbolNames.js.map +1 -0
  8. package/dist/fix/core/{convert-symbol.js → convertSymbols.js} +2 -2
  9. package/dist/fix/core/{convert-symbol.js.map → convertSymbols.js.map} +1 -1
  10. package/dist/fix/core/{get-ts-morph-source-files.js → getTsMortphSourceFiles.js} +1 -1
  11. package/dist/fix/core/getTsMortphSourceFiles.js.map +1 -0
  12. package/dist/fix/core/{remove-symbol.js → removeSymbols.js} +7 -6
  13. package/dist/fix/core/removeSymbols.js.map +1 -0
  14. package/dist/fix/removeSdAngularSymbolNames.js +7 -0
  15. package/dist/fix/removeSdAngularSymbolNames.js.map +1 -0
  16. package/dist/fix/{remove-unused-imports.js → removeUnusedImports.js} +2 -2
  17. package/dist/fix/removeUnusedImports.js.map +1 -0
  18. package/dist/fix/{remove-unused-injects.js → removeUnusedInjects.js} +2 -2
  19. package/dist/fix/removeUnusedInjects.js.map +1 -0
  20. package/dist/fix/{remove-unused-protected-readonly.js → removeUnusedProtectedReadonly.js} +2 -2
  21. package/dist/fix/removeUnusedProtectedReadonly.js.map +1 -0
  22. package/dist/pkg-builders/client/SdCliNgRoutesFileGenerator.d.ts +2 -2
  23. package/dist/pkg-builders/client/SdCliNgRoutesFileGenerator.js +6 -6
  24. package/dist/pkg-builders/client/SdCliNgRoutesFileGenerator.js.map +1 -1
  25. package/dist/pkg-builders/client/SdClientBuildRunner.js +2 -2
  26. package/dist/pkg-builders/client/SdClientBuildRunner.js.map +1 -1
  27. package/dist/pkg-builders/client/SdNgBundler.js +26 -24
  28. package/dist/pkg-builders/client/SdNgBundler.js.map +1 -1
  29. package/dist/pkg-builders/lib/SdCliIndexFileGenerator.d.ts +2 -2
  30. package/dist/pkg-builders/lib/SdCliIndexFileGenerator.js +11 -11
  31. package/dist/pkg-builders/lib/SdCliIndexFileGenerator.js.map +1 -1
  32. package/dist/sd-cli-entry.js +8 -8
  33. package/dist/sd-cli-entry.js.map +1 -1
  34. package/dist/ts-compiler/SdDepAnalyzer.js +1 -1
  35. package/dist/ts-compiler/SdDepAnalyzer.js.map +1 -1
  36. package/dist/ts-compiler/SdStyleBundler.js +1 -1
  37. package/dist/ts-compiler/SdTsCompiler.js +8 -17
  38. package/dist/ts-compiler/SdTsCompiler.js.map +1 -1
  39. package/package.json +5 -5
  40. package/src/entry/{SdCliPostinstall.ts → SdCliPostInstall.ts} +1 -1
  41. package/src/fix/{convert-private-to-hash.ts → convertPrivateToHash.ts} +4 -2
  42. package/src/fix/{convert-sd-angular-symbol-names.ts → convertSdAngularSymbolNames.ts} +6 -4
  43. package/src/fix/core/{convert-symbol.ts → convertSymbols.ts} +1 -1
  44. package/src/fix/core/{remove-symbol.ts → removeSymbols.ts} +27 -19
  45. package/src/fix/{remove-sd-angular-symbol-names.ts → removeSdAngularSymbolNames.ts} +2 -4
  46. package/src/fix/{remove-unused-imports.ts → removeUnusedImports.ts} +1 -1
  47. package/src/fix/{remove-unused-injects.ts → removeUnusedInjects.ts} +1 -1
  48. package/src/fix/{remove-unused-protected-readonly.ts → removeUnusedProtectedReadonly.ts} +1 -1
  49. package/src/pkg-builders/client/SdCliNgRoutesFileGenerator.ts +6 -9
  50. package/src/pkg-builders/client/SdClientBuildRunner.ts +6 -3
  51. package/src/pkg-builders/client/SdNgBundler.ts +30 -25
  52. package/src/pkg-builders/lib/SdCliIndexFileGenerator.ts +15 -16
  53. package/src/sd-cli-entry.ts +8 -8
  54. package/src/ts-compiler/SdDepAnalyzer.ts +1 -5
  55. package/src/ts-compiler/SdStyleBundler.ts +1 -1
  56. package/src/ts-compiler/SdTsCompiler.ts +19 -18
  57. package/dist/entry/SdCliPostinstall.d.ts +0 -3
  58. package/dist/fix/convert-private-to-hash.js.map +0 -1
  59. package/dist/fix/convert-sd-angular-symbol-names.js.map +0 -1
  60. package/dist/fix/core/get-ts-morph-source-files.js.map +0 -1
  61. package/dist/fix/core/remove-symbol.js.map +0 -1
  62. package/dist/fix/remove-sd-angular-symbol-names.js +0 -9
  63. package/dist/fix/remove-sd-angular-symbol-names.js.map +0 -1
  64. package/dist/fix/remove-unused-imports.js.map +0 -1
  65. package/dist/fix/remove-unused-injects.js.map +0 -1
  66. package/dist/fix/remove-unused-protected-readonly.js.map +0 -1
  67. /package/dist/fix/{convert-private-to-hash.d.ts → convertPrivateToHash.d.ts} +0 -0
  68. /package/dist/fix/{convert-sd-angular-symbol-names.d.ts → convertSdAngularSymbolNames.d.ts} +0 -0
  69. /package/dist/fix/core/{convert-symbol.d.ts → convertSymbols.d.ts} +0 -0
  70. /package/dist/fix/core/{get-ts-morph-source-files.d.ts → getTsMortphSourceFiles.d.ts} +0 -0
  71. /package/dist/fix/core/{remove-symbol.d.ts → removeSymbols.d.ts} +0 -0
  72. /package/dist/fix/{remove-sd-angular-symbol-names.d.ts → removeSdAngularSymbolNames.d.ts} +0 -0
  73. /package/dist/fix/{remove-unused-imports.d.ts → removeUnusedImports.d.ts} +0 -0
  74. /package/dist/fix/{remove-unused-injects.d.ts → removeUnusedInjects.d.ts} +0 -0
  75. /package/dist/fix/{remove-unused-protected-readonly.d.ts → removeUnusedProtectedReadonly.d.ts} +0 -0
  76. /package/src/fix/core/{get-ts-morph-source-files.ts → getTsMortphSourceFiles.ts} +0 -0
@@ -106,8 +106,8 @@ export class SdNgBundler {
106
106
  this.#debug(`get contexts...`);
107
107
 
108
108
  if (!this.#contexts) {
109
- this.#contexts = perf.run("get contexts", () => [
110
- this.#getAppContext(),
109
+ this.#contexts = await perf.run("get contexts", async () => [
110
+ await this.#getAppContextAsync(),
111
111
  ...(FsUtils.exists(path.resolve(this._opt.pkgPath, "src/styles.scss"))
112
112
  ? [this.#getStyleContext()]
113
113
  : []),
@@ -233,26 +233,31 @@ export class SdNgBundler {
233
233
  this.#debug(`write output files...(${outputFiles.length})`);
234
234
 
235
235
  const emitFileSet = new Set<TNormPath>();
236
- perf.run("write output file", () => {
237
- for (const outputFile of outputFiles) {
238
- const distFilePath = PathUtils.norm(this.#outputPath, outputFile.path);
239
- const prevHash = this.#outputHashCache.get(distFilePath);
240
- const currHash = HashUtils.get(Buffer.from(outputFile.contents));
241
- if (prevHash !== currHash) {
242
- FsUtils.writeFile(distFilePath, outputFile.contents);
243
- this.#outputHashCache.set(distFilePath, currHash);
244
- emitFileSet.add(distFilePath);
245
- }
246
- }
247
- for (const assetFile of assetFiles) {
248
- const prevHash = this.#outputHashCache.get(PathUtils.norm(assetFile.source));
249
- const currHash = HashUtils.get(FsUtils.readFileBuffer(assetFile.source));
250
- if (prevHash !== currHash) {
251
- FsUtils.copy(assetFile.source, path.resolve(this.#outputPath, assetFile.destination));
252
- this.#outputHashCache.set(PathUtils.norm(assetFile.source), currHash);
253
- emitFileSet.add(PathUtils.norm(this.#outputPath, assetFile.destination));
254
- }
255
- }
236
+ await perf.run("write output file", async () => {
237
+ await Promise.all([
238
+ outputFiles.parallelAsync(async (outputFile) => {
239
+ const distFilePath = PathUtils.norm(this.#outputPath, outputFile.path);
240
+ const prevHash = this.#outputHashCache.get(distFilePath);
241
+ const currHash = HashUtils.get(Buffer.from(outputFile.contents));
242
+ if (prevHash !== currHash) {
243
+ await FsUtils.writeFileAsync(distFilePath, outputFile.contents);
244
+ this.#outputHashCache.set(distFilePath, currHash);
245
+ emitFileSet.add(distFilePath);
246
+ }
247
+ }),
248
+ assetFiles.parallelAsync(async (assetFile) => {
249
+ const prevHash = this.#outputHashCache.get(PathUtils.norm(assetFile.source));
250
+ const currHash = HashUtils.get(await FsUtils.readFileBufferAsync(assetFile.source));
251
+ if (prevHash !== currHash) {
252
+ await FsUtils.copyAsync(
253
+ assetFile.source,
254
+ path.resolve(this.#outputPath, assetFile.destination),
255
+ );
256
+ this.#outputHashCache.set(PathUtils.norm(assetFile.source), currHash);
257
+ emitFileSet.add(PathUtils.norm(this.#outputPath, assetFile.destination));
258
+ }
259
+ }),
260
+ ]);
256
261
  });
257
262
 
258
263
  this.#debug(perf.toString());
@@ -405,9 +410,9 @@ export class SdNgBundler {
405
410
  );
406
411
  }
407
412
 
408
- #getAppContext() {
409
- const workerEntries = FsUtils.glob(
410
- path.resolve(this._opt.pkgPath, "src/workers/*.ts"),
413
+ async #getAppContextAsync() {
414
+ const workerEntries = (
415
+ await FsUtils.globAsync(path.resolve(this._opt.pkgPath, "src/workers/*.ts"))
411
416
  ).toObject((p) => "workers/" + path.basename(p, path.extname(p)));
412
417
 
413
418
  return new SdNgBundlerContext(this._opt.pkgPath, {
@@ -13,18 +13,15 @@ export class SdCliIndexFileGenerator {
13
13
  const watcher = await SdFsWatcher.watchAsync([path.resolve(pkgPath, "src")], {
14
14
  ignored: [indexFilePath],
15
15
  });
16
- watcher.onChange({ delay: 50 }, (changeInfos) => {
16
+ watcher.onChange({ delay: 50 }, async (changeInfos) => {
17
17
  if (changeInfos.some((item) => ["add", "addDir", "unlink", "unlinkDir"].includes(item.event)))
18
- this.run(pkgPath, polyfills);
18
+ await this.runAsync(pkgPath, polyfills);
19
19
  });
20
20
 
21
- this.run(pkgPath, polyfills);
21
+ await this.runAsync(pkgPath, polyfills);
22
22
  }
23
23
 
24
- run(
25
- pkgPath: string,
26
- polyfills?: string[],
27
- ): { changed: boolean; filePath: string; content: string } {
24
+ async runAsync(pkgPath: string, polyfills?: string[]) {
28
25
  const indexFilePath = path.resolve(pkgPath, "src/index.ts");
29
26
 
30
27
  const importTexts: string[] = [];
@@ -37,13 +34,13 @@ export class SdCliIndexFileGenerator {
37
34
  }
38
35
 
39
36
  // 내부 파일들 import
40
- const filePaths = this.#getFilePaths(pkgPath);
37
+ const filePaths = await this.#getFilePathsAsync(pkgPath);
41
38
  for (const filePath of filePaths.orderBy()) {
42
39
  const requirePath = PathUtils.posix(path.relative(path.dirname(indexFilePath), filePath))
43
40
  .replace(/\.tsx?$/, "")
44
41
  .replace(/\/index$/, "");
45
42
 
46
- const sourceTsFileContent = FsUtils.readFile(filePath);
43
+ const sourceTsFileContent = await FsUtils.readFileAsync(filePath);
47
44
  if (sourceTsFileContent.split("\n").some((line) => line.startsWith("export "))) {
48
45
  importTexts.push(`export * from "./${requirePath}";`);
49
46
  } else {
@@ -54,7 +51,7 @@ export class SdCliIndexFileGenerator {
54
51
  const content = importTexts.join("\n") + "\n";
55
52
  const currHash = HashUtils.get(content);
56
53
  if (currHash !== this.cachedHash) {
57
- FsUtils.writeFile(indexFilePath, content);
54
+ await FsUtils.writeFileAsync(indexFilePath, content);
58
55
  this.cachedHash = currHash;
59
56
  return { changed: true, filePath: indexFilePath, content };
60
57
  } else {
@@ -62,17 +59,19 @@ export class SdCliIndexFileGenerator {
62
59
  }
63
60
  }
64
61
 
65
- #getFilePaths(pkgPath: string): string[] {
62
+ async #getFilePathsAsync(pkgPath: string) {
66
63
  const indexFilePath = path.resolve(pkgPath, "src/index.ts");
67
64
 
68
- const tsconfig = FsUtils.readJson(path.resolve(pkgPath, "tsconfig.json"));
65
+ const tsconfig = await FsUtils.readJsonAsync(path.resolve(pkgPath, "tsconfig.json"));
69
66
  const entryFilePaths: string[] =
70
67
  tsconfig.files?.map((item) => path.resolve(pkgPath, item)) ?? [];
71
68
 
72
- return FsUtils.glob(path.resolve(pkgPath, "src/**/*{.ts,.tsx}"), {
73
- nodir: true,
74
- ignore: tsconfig.excludes,
75
- }).filter(
69
+ return (
70
+ await FsUtils.globAsync(path.resolve(pkgPath, "src/**/*{.ts,.tsx}"), {
71
+ nodir: true,
72
+ ignore: tsconfig.excludes,
73
+ })
74
+ ).filter(
76
75
  (item) => !entryFilePaths.includes(item) && item !== indexFilePath && !item.endsWith(".d.ts"),
77
76
  );
78
77
  }
@@ -10,14 +10,14 @@ import { SdCliAiCommand } from "./entry/SdCliAiCommand";
10
10
  import { SdCliCordova } from "./entry/SdCliCordova";
11
11
  import { SdCliElectron } from "./entry/SdCliElectron";
12
12
  import { SdCliLocalUpdate } from "./entry/SdCliLocalUpdate";
13
- import { SdCliPostinstall } from "./entry/SdCliPostinstall";
13
+ import { SdCliPostInstall } from "./entry/SdCliPostInstall";
14
14
  import { SdCliProject } from "./entry/SdCliProject";
15
- import convertPrivateToHash from "./fix/convert-private-to-hash";
16
- import removeSdAngularSymbolNames from "./fix/remove-sd-angular-symbol-names";
17
- import convertSdAngularSymbolNames from "./fix/convert-sd-angular-symbol-names";
18
- import { removeUnusedInjects } from "./fix/remove-unused-injects";
19
- import removeUnusedProtectedReadonly from "./fix/remove-unused-protected-readonly";
20
- import { removeUnusedImports } from "./fix/remove-unused-imports";
15
+ import convertPrivateToHash from "./fix/convertPrivateToHash";
16
+ import removeSdAngularSymbolNames from "./fix/removeSdAngularSymbolNames";
17
+ import convertSdAngularSymbolNames from "./fix/convertSdAngularSymbolNames";
18
+ import { removeUnusedInjects } from "./fix/removeUnusedInjects";
19
+ import removeUnusedProtectedReadonly from "./fix/removeUnusedProtectedReadonly";
20
+ import { removeUnusedImports } from "./fix/removeUnusedImports";
21
21
 
22
22
  Error.stackTraceLimit = Infinity;
23
23
  EventEmitter.defaultMaxListeners = 0;
@@ -254,7 +254,7 @@ await yargs(hideBin(process.argv))
254
254
  "postinstall",
255
255
  "설치후 자동실행할 작업",
256
256
  (cmd) => cmd.version(false).hide("help").hide("debug"),
257
- () => SdCliPostinstall.run(),
257
+ () => SdCliPostInstall.run(),
258
258
  )
259
259
  .command(
260
260
  "fix",
@@ -21,11 +21,7 @@ export class SdDepAnalyzer {
21
21
  const compilerOpts = program.getCompilerOptions();
22
22
  const typeChecker = program.getTypeChecker();
23
23
 
24
- const moduleResolutionCache = ts.createModuleResolutionCache(
25
- compilerHost.getCurrentDirectory(),
26
- compilerHost.getCanonicalFileName.bind(compilerHost),
27
- compilerOpts,
28
- );
24
+ const moduleResolutionCache = compilerHost.getModuleResolutionCache!();
29
25
 
30
26
  const resolveModule = (text: string, base: string): TNormPath[] => {
31
27
  const res = ts.resolveModuleName(
@@ -24,7 +24,7 @@ export class SdStyleBundler {
24
24
  workspaceRoot: this._opt.pkgPath,
25
25
  inlineFonts: !this._opt.dev,
26
26
  optimization: !this._opt.dev,
27
- sourcemap: this._opt.dev ? "linked" : false,
27
+ sourcemap: this._opt.dev ? "inline" : false,
28
28
  sourcesContent: this._opt.dev,
29
29
  outputNames: { bundles: "[name]-[hash]", media: "media/[name]-[hash]" },
30
30
  includePaths: [],
@@ -4,10 +4,10 @@ import { FsUtils, PathUtils, SdLogger, TNormPath } from "@simplysm/sd-core-node"
4
4
  import { StringUtils } from "@simplysm/sd-core-common";
5
5
  import { NgtscProgram, OptimizeFor } from "@angular/compiler-cli";
6
6
  import { AngularCompilerHost } from "@angular/build/src/tools/angular/angular-host";
7
- import { replaceBootstrap } from "@angular/build/src/tools/angular/transformers/jit-bootstrap-transformer";
8
7
  import { SdCliPerformanceTimer } from "../utils/SdCliPerformanceTimer";
9
8
  import { SdCliConvertMessageUtils } from "../utils/SdCliConvertMessageUtils";
10
9
  import { createWorkerTransformer } from "@angular/build/src/tools/angular/transformers/web-worker-transformer";
10
+ import { replaceBootstrap } from "@angular/build/src/tools/angular/transformers/jit-bootstrap-transformer";
11
11
  import { SdDepCache } from "./SdDepCache";
12
12
  import { SdDepAnalyzer } from "./SdDepAnalyzer";
13
13
  import { FlatESLint } from "eslint/use-at-your-own-risk";
@@ -24,6 +24,8 @@ export class SdTsCompiler {
24
24
 
25
25
  #styleBundler: SdStyleBundler | undefined;
26
26
 
27
+ #moduleResolutionCache: ts.ModuleResolutionCache | undefined;
28
+
27
29
  #ngProgram: NgtscProgram | undefined;
28
30
  #program: ts.Program | undefined;
29
31
 
@@ -67,7 +69,7 @@ export class SdTsCompiler {
67
69
  }
68
70
  }
69
71
 
70
- #parseTsConfig() {
72
+ #parseTsConfig(): ITsConfigInfo {
71
73
  const tsconfigPath = path.resolve(this._opt.pkgPath, "tsconfig.json");
72
74
  const tsconfig = FsUtils.readJson(tsconfigPath);
73
75
  const parsedTsconfig = ts.parseJsonConfigFileContent(tsconfig, ts.sys, this._opt.pkgPath, {
@@ -77,27 +79,15 @@ export class SdTsCompiler {
77
79
  ? {
78
80
  // typescript
79
81
  noEmitOnError: false,
80
- strict: false,
81
- noImplicitAny: false,
82
- noImplicitThis: false,
83
- strictNullChecks: true,
84
- strictFunctionTypes: false,
85
- strictBindCallApply: false,
86
- strictPropertyInitialization: false,
87
- useUnknownInCatchVariables: false,
88
- exactOptionalPropertyTypes: false,
89
- noUncheckedIndexedAccess: false,
90
- noUnusedLocals: false,
91
- noUnusedParameters: false,
92
82
  skipLibCheck: true,
93
- checkJs: false,
94
- alwaysStrict: false,
83
+ skipDefaultLibCheck: true,
95
84
 
96
85
  // angular
97
86
  strictTemplates: false,
98
87
  strictInjectionParameters: false,
99
88
  strictInputAccessModifiers: false,
100
89
  strictStandalone: false,
90
+ extendedDiagnostics: false,
101
91
  }
102
92
  : {}),
103
93
  });
@@ -190,6 +180,14 @@ export class SdTsCompiler {
190
180
  };
191
181
  }
192
182
 
183
+ this.#moduleResolutionCache = ts.createModuleResolutionCache(
184
+ compilerHost.getCurrentDirectory(),
185
+ compilerHost.getCanonicalFileName.bind(compilerHost),
186
+ compilerOptions,
187
+ this.#moduleResolutionCache?.getPackageJsonInfoCache(),
188
+ );
189
+ compilerHost.getModuleResolutionCache = () => this.#moduleResolutionCache;
190
+
193
191
  return compilerHost;
194
192
  }
195
193
 
@@ -214,7 +212,10 @@ export class SdTsCompiler {
214
212
  ]);
215
213
 
216
214
  this.#debug(`빌드 완료됨`, this.#perf.toString());
217
- this.#debug(`영향 받은 파일: ${affectedFileSet.size}개`, affectedFileSet);
215
+ this.#debug(
216
+ `영향 받은 파일: ${affectedFileSet.size}개`,
217
+ ...(modifiedFileSet.size > 0 ? [affectedFileSet] : []),
218
+ );
218
219
  this.#debug(`감시 중인 파일: ${watchFileSet.size}개`);
219
220
 
220
221
  return {
@@ -301,7 +302,7 @@ export class SdTsCompiler {
301
302
  });
302
303
  }
303
304
 
304
- if (!this._opt.watch?.emitOnly && this._opt.watch) {
305
+ if (this._opt.watch && !this._opt.watch.emitOnly) {
305
306
  this.#debug(`새 의존성 분석 중...`);
306
307
 
307
308
  this.#perf.run("새 의존성 분석", () => {
@@ -1,3 +0,0 @@
1
- export declare class SdCliPostinstall {
2
- static run(): void;
3
- }
@@ -1 +0,0 @@
1
- {"version":3,"file":"convert-private-to-hash.js","sourceRoot":"","sources":["../../src/fix/convert-private-to-hash.ts"],"names":[],"mappings":"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"}
@@ -1 +0,0 @@
1
- {"version":3,"file":"convert-sd-angular-symbol-names.js","sourceRoot":"","sources":["../../src/fix/convert-sd-angular-symbol-names.ts"],"names":[],"mappings":"AAAA,+BAA+B;AAC/B,OAAO,cAAc,MAAM,uBAAuB,CAAC;AAEnD,MAAM,CAAC,OAAO,UAAU,2BAA2B;IACjD,cAAc,CAAC;QACb,iCAAiC,EAAE,mCAAmC;QACtE,oCAAoC,EAAE,yCAAyC;QAC/E,gCAAgC,EAAE,kCAAkC;QACpE,8CAA8C,EAAE,gDAAgD;QAChG,2CAA2C,EAAE,6CAA6C;QAC1F,+CAA+C,EAAE,6CAA6C;QAC9F,+CAA+C,EAAE,oCAAoC;QACrF,kCAAkC,EAAE,oCAAoC;QACxE,mDAAmD,EAAE,+CAA+C;QAEpG,sBAAsB,EAAE,8BAA8B;QACtD,wBAAwB,EAAE,gCAAgC;QAC1D,sBAAsB,EAAE,8BAA8B;QACtD,iCAAiC,EAAE,yCAAyC;QAC5E,mCAAmC,EAAE,2CAA2C;QAChF,wBAAwB,EAAE,gCAAgC;KAC3D,CAAC,CAAC;IAEH,OAAO,CAAC,GAAG,CAAC,4BAA4B,CAAC,CAAC;AAC5C,CAAC"}
@@ -1 +0,0 @@
1
- {"version":3,"file":"get-ts-morph-source-files.js","sourceRoot":"","sources":["../../../src/fix/core/get-ts-morph-source-files.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,OAAO,EAAE,MAAM,UAAU,CAAC;AAEnC,MAAM,CAAC,OAAO,UAAU,sBAAsB;IAC5C,MAAM,OAAO,GAAG,IAAI,OAAO,CAAC;QAC1B,gBAAgB,EAAE,oBAAoB;KACvC,CAAC,CAAC;IAEH,OAAO,OAAO,CAAC,cAAc,CAAC,wBAAwB,CAAC,CAAC;AAC1D,CAAC"}
@@ -1 +0,0 @@
1
- {"version":3,"file":"remove-symbol.js","sourceRoot":"","sources":["../../../src/fix/core/remove-symbol.ts"],"names":[],"mappings":"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"}
@@ -1,9 +0,0 @@
1
- /* eslint-disable no-console */
2
- import removeSymbols from "./core/remove-symbol";
3
- export default function removeSdAngularSymbolNames() {
4
- removeSymbols([
5
- "@simplysm/sd-angular#TemplateTargetDirective",
6
- ]);
7
- console.log("[완료] SdAngular 심볼 삭제 완료");
8
- }
9
- //# sourceMappingURL=remove-sd-angular-symbol-names.js.map
@@ -1 +0,0 @@
1
- {"version":3,"file":"remove-sd-angular-symbol-names.js","sourceRoot":"","sources":["../../src/fix/remove-sd-angular-symbol-names.ts"],"names":[],"mappings":"AAAA,+BAA+B;AAE/B,OAAO,aAAa,MAAM,sBAAsB,CAAC;AAEjD,MAAM,CAAC,OAAO,UAAU,0BAA0B;IAChD,aAAa,CAAC;QACZ,8CAA8C;KAC/C,CAAC,CAAC;IAEH,OAAO,CAAC,GAAG,CAAC,yBAAyB,CAAC,CAAC;AACzC,CAAC"}
@@ -1 +0,0 @@
1
- {"version":3,"file":"remove-unused-imports.js","sourceRoot":"","sources":["../../src/fix/remove-unused-imports.ts"],"names":[],"mappings":"AAAA,+BAA+B;AAC/B,OAAO,EAAE,UAAU,EAAE,MAAM,UAAU,CAAC;AACtC,OAAO,qBAAqB,MAAM,kCAAkC,CAAC;AAErE,MAAM,UAAU,mBAAmB;IACjC,MAAM,WAAW,GAAG,qBAAqB,EAAE,CAAC;IAC5C,IAAI,YAAY,GAAG,CAAC,CAAC;IAErB,KAAK,MAAM,UAAU,IAAI,WAAW,EAAE,CAAC;QACrC,IAAI,OAAO,GAAG,KAAK,CAAC;QAEpB,KAAK,MAAM,UAAU,IAAI,UAAU,CAAC,qBAAqB,EAAE,EAAE,CAAC;YAC5D,uBAAuB;YACvB,IAAI,UAAU,CAAC,eAAe,EAAE,CAAC,MAAM,KAAK,CAAC,EAAE,CAAC;gBAC9C,SAAS;YACX,CAAC;YAED,qBAAqB;YACrB,KAAK,MAAM,WAAW,IAAI,UAAU,CAAC,eAAe,EAAE,EAAE,CAAC;gBACvD,MAAM,IAAI,GAAG,WAAW,CAAC,OAAO,EAAE,CAAC;gBACnC,MAAM,IAAI,GAAG,UAAU;qBACpB,oBAAoB,CAAC,UAAU,CAAC,UAAU,CAAC;qBAC3C,IAAI,CAAC,CAAC,EAAE,EAAE,EAAE,CAAC,EAAE,CAAC,OAAO,EAAE,KAAK,IAAI,IAAI,EAAE,KAAK,WAAW,CAAC,WAAW,EAAE,CAAC,CAAC;gBAC3E,IAAI,CAAC,IAAI,EAAE,CAAC;oBACV,WAAW,CAAC,MAAM,EAAE,CAAC;oBACrB,OAAO,GAAG,IAAI,CAAC;oBACf,OAAO,CAAC,GAAG,CAAC,SAAS,UAAU,CAAC,WAAW,EAAE,kBAAkB,IAAI,EAAE,CAAC,CAAC;gBACzE,CAAC;YACH,CAAC;YAED,oCAAoC;YACpC,IAAI,UAAU,CAAC,eAAe,EAAE,CAAC,MAAM,KAAK,CAAC,EAAE,CAAC;gBAC9C,UAAU,CAAC,MAAM,EAAE,CAAC;gBACpB,OAAO,GAAG,IAAI,CAAC;YACjB,CAAC;QACH,CAAC;QAED,IAAI,OAAO,EAAE,CAAC;YACZ,UAAU,CAAC,QAAQ,EAAE,CAAC;YACtB,YAAY,EAAE,CAAC;YACf,OAAO,CAAC,GAAG,CAAC,aAAa,UAAU,CAAC,WAAW,EAAE,kBAAkB,CAAC,CAAC;QACvE,CAAC;IACH,CAAC;IAED,OAAO,CAAC,GAAG,CACT,YAAY,GAAG,CAAC;QACd,CAAC,CAAC,8BAA8B,YAAY,IAAI;QAChD,CAAC,CAAC,eAAe,CACpB,CAAC;AACJ,CAAC"}
@@ -1 +0,0 @@
1
- {"version":3,"file":"remove-unused-injects.js","sourceRoot":"","sources":["../../src/fix/remove-unused-injects.ts"],"names":[],"mappings":"AAAA,+BAA+B;AAC/B,OAAO,EAAE,UAAU,EAAE,MAAM,UAAU,CAAC;AACtC,OAAO,qBAAqB,MAAM,kCAAkC,CAAC;AAErE,MAAM,UAAU,mBAAmB;IACjC,MAAM,WAAW,GAAG,qBAAqB,EAAE,CAAC;IAC5C,IAAI,YAAY,GAAG,CAAC,CAAC;IAErB,KAAK,MAAM,UAAU,IAAI,WAAW,EAAE,CAAC;QACrC,IAAI,OAAO,GAAG,KAAK,CAAC;QAEpB,KAAK,MAAM,GAAG,IAAI,UAAU,CAAC,UAAU,EAAE,EAAE,CAAC;YAC1C,MAAM,UAAU,GAAG,GAAG;iBACnB,qBAAqB,EAAE;iBACvB,MAAM,CACL,CAAC,CAAC,EAAE,EAAE,CACJ,CAAC,CAAC,MAAM,CAAC,UAAU,CAAC,mBAAmB,CAAC;gBACxC,CAAC,CAAC,cAAc,EAAE,EAAE,MAAM,CAAC,UAAU,CAAC,cAAc,CAAC;gBACrD,CAAC,CAAC,cAAc,EAAG,CAAC,OAAO,EAAE,CAAC,UAAU,CAAC,SAAS,CAAC,CACtD,CAAC;YAEJ,KAAK,MAAM,QAAQ,IAAI,UAAU,EAAE,CAAC;gBAClC,MAAM,IAAI,GAAG,QAAQ,CAAC,OAAO,EAAE,CAAC;gBAEhC,+BAA+B;gBAC/B,MAAM,UAAU,GAAG,GAAG;qBACnB,cAAc,EAAE;qBAChB,MAAM,CAAC,CAAC,IAAI,EAAE,EAAE,CAAC,IAAI,CAAC,OAAO,EAAE,KAAK,IAAI,IAAI,IAAI,KAAK,QAAQ,CAAC,WAAW,EAAE,CAAC,CAAC;gBAEhF,IAAI,UAAU,CAAC,MAAM,KAAK,CAAC,EAAE,CAAC;oBAC5B,QAAQ,CAAC,MAAM,EAAE,CAAC;oBAClB,OAAO,GAAG,IAAI,CAAC;oBACf,OAAO,CAAC,GAAG,CAAC,SAAS,UAAU,CAAC,WAAW,EAAE,kBAAkB,IAAI,EAAE,CAAC,CAAC;gBACzE,CAAC;YACH,CAAC;QACH,CAAC;QAED,IAAI,OAAO,EAAE,CAAC;YACZ,UAAU,CAAC,QAAQ,EAAE,CAAC;YACtB,YAAY,EAAE,CAAC;YACf,OAAO,CAAC,GAAG,CAAC,aAAa,UAAU,CAAC,WAAW,EAAE,kBAAkB,CAAC,CAAC;QACvE,CAAC;IACH,CAAC;IAED,OAAO,CAAC,GAAG,CACT,YAAY,GAAG,CAAC;QACd,CAAC,CAAC,8BAA8B,YAAY,IAAI;QAChD,CAAC,CAAC,eAAe,CACpB,CAAC;AACJ,CAAC"}
@@ -1 +0,0 @@
1
- {"version":3,"file":"remove-unused-protected-readonly.js","sourceRoot":"","sources":["../../src/fix/remove-unused-protected-readonly.ts"],"names":[],"mappings":"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"}