@simplysm/sd-cli 12.11.8 → 12.11.10
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/pkg-builders/client/sd-cli-ng-routes.file-generator.d.ts +3 -2
- package/dist/pkg-builders/client/sd-cli-ng-routes.file-generator.js +12 -10
- package/dist/pkg-builders/client/sd-cli-ng-routes.file-generator.js.map +1 -1
- package/dist/pkg-builders/client/sd-client.build-runner.js +7 -5
- package/dist/pkg-builders/client/sd-client.build-runner.js.map +1 -1
- package/dist/pkg-builders/client/sd-ng.bundler.js +1 -1
- package/dist/pkg-builders/client/sd-ng.bundler.js.map +1 -1
- package/dist/pkg-builders/commons/build-runner.base.js +4 -5
- package/dist/pkg-builders/commons/build-runner.base.js.map +1 -1
- package/dist/pkg-builders/lib/sd-cli-db-context.file-generator.d.ts +3 -2
- package/dist/pkg-builders/lib/sd-cli-db-context.file-generator.js +10 -9
- package/dist/pkg-builders/lib/sd-cli-db-context.file-generator.js.map +1 -1
- package/dist/pkg-builders/lib/sd-cli-index.file-generator.d.ts +3 -2
- package/dist/pkg-builders/lib/sd-cli-index.file-generator.js +14 -9
- package/dist/pkg-builders/lib/sd-cli-index.file-generator.js.map +1 -1
- package/dist/pkg-builders/lib/sd-ts-lib.build-runner.js +8 -4
- package/dist/pkg-builders/lib/sd-ts-lib.build-runner.js.map +1 -1
- package/dist/pkg-builders/lib/sd-ts-lib.builder.js +19 -10
- package/dist/pkg-builders/lib/sd-ts-lib.builder.js.map +1 -1
- package/dist/pkg-builders/server/sd-server.build-runner.js +1 -1
- package/dist/pkg-builders/server/sd-server.bundler.js +1 -1
- package/dist/pkg-builders/server/sd-server.bundler.js.map +1 -1
- package/dist/ts-compiler/sd-dependency-cache.d.ts +56 -0
- package/dist/ts-compiler/sd-dependency-cache.js +183 -118
- package/dist/ts-compiler/sd-dependency-cache.js.map +1 -1
- package/package.json +5 -5
- package/src/pkg-builders/client/sd-cli-ng-routes.file-generator.ts +20 -15
- package/src/pkg-builders/client/sd-client.build-runner.ts +15 -10
- package/src/pkg-builders/client/sd-ng.bundler.ts +1 -1
- package/src/pkg-builders/commons/build-runner.base.ts +19 -16
- package/src/pkg-builders/lib/sd-cli-db-context.file-generator.ts +12 -9
- package/src/pkg-builders/lib/sd-cli-index.file-generator.ts +18 -10
- package/src/pkg-builders/lib/sd-ts-lib.build-runner.ts +7 -6
- package/src/pkg-builders/lib/sd-ts-lib.builder.ts +22 -12
- package/src/pkg-builders/server/sd-server.build-runner.ts +1 -1
- package/src/pkg-builders/server/sd-server.bundler.ts +11 -11
- package/src/ts-compiler/sd-dependency-cache.ts +208 -171
- package/tests/deps/sd-dependency-cache.spec.ts +12 -0
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"sd-server.bundler.js","sourceRoot":"","sources":["../../../src/pkg-builders/server/sd-server.bundler.ts"],"names":[],"mappings":"AAAA,OAAO,OAAO,MAAM,SAAS,CAAC;AAC9B,OAAO,IAAI,MAAM,MAAM,CAAC;AACxB,OAAO,EAAE,OAAO,EAAE,SAAS,EAAE,SAAS,EAAE,QAAQ,EAAa,MAAM,wBAAwB,CAAC;AAC5F,OAAO,EAAE,wBAAwB,EAAE,MAAM,0CAA0C,CAAC;AAGpF,OAAO,EAAE,oBAAoB,EAAE,MAAM,4BAA4B,CAAC;AAClE,OAAO,EAEL,mBAAmB,GACpB,MAAM,kDAAkD,CAAC;AAC1D,OAAO,EAAE,iBAAiB,EAAE,MAAM,wCAAwC,CAAC;AAC3E,OAAO,EAAE,aAAa,EAAE,MAAM,yCAAyC,CAAC;AAGxE,MAAM,OAAO,eAAe;IAC1B,OAAO,GAAG,QAAQ,CAAC,GAAG,CAAC,CAAC,UAAU,EAAE,QAAQ,EAAE,iBAAiB,CAAC,CAAC,CAAC;IAElE,QAAQ,CAAwB;IAEhC,gBAAgB,GAAG,IAAI,GAAG,EAAa,CAAC;IACxC,YAAY,GAAkC,EAAE,CAAC;IAEjD,gBAAgB,GAAG,IAAI,GAAG,EAAqB,CAAC;IAEhD,
|
|
1
|
+
{"version":3,"file":"sd-server.bundler.js","sourceRoot":"","sources":["../../../src/pkg-builders/server/sd-server.bundler.ts"],"names":[],"mappings":"AAAA,OAAO,OAAO,MAAM,SAAS,CAAC;AAC9B,OAAO,IAAI,MAAM,MAAM,CAAC;AACxB,OAAO,EAAE,OAAO,EAAE,SAAS,EAAE,SAAS,EAAE,QAAQ,EAAa,MAAM,wBAAwB,CAAC;AAC5F,OAAO,EAAE,wBAAwB,EAAE,MAAM,0CAA0C,CAAC;AAGpF,OAAO,EAAE,oBAAoB,EAAE,MAAM,4BAA4B,CAAC;AAClE,OAAO,EAEL,mBAAmB,GACpB,MAAM,kDAAkD,CAAC;AAC1D,OAAO,EAAE,iBAAiB,EAAE,MAAM,wCAAwC,CAAC;AAC3E,OAAO,EAAE,aAAa,EAAE,MAAM,yCAAyC,CAAC;AAGxE,MAAM,OAAO,eAAe;IAC1B,OAAO,GAAG,QAAQ,CAAC,GAAG,CAAC,CAAC,UAAU,EAAE,QAAQ,EAAE,iBAAiB,CAAC,CAAC,CAAC;IAElE,QAAQ,CAAwB;IAEhC,gBAAgB,GAAG,IAAI,GAAG,EAAa,CAAC;IACxC,YAAY,GAAkC,EAAE,CAAC;IAEjD,gBAAgB,GAAG,IAAI,GAAG,EAAqB,CAAC;IAEhD,YACmB,IAMhB;QANgB,SAAI,GAAJ,IAAI,CAMpB;IACA,CAAC;IAEJ,KAAK,CAAC,WAAW,CAAC,eAAgC;QAMhD,IAAI,CAAC,gBAAgB,CAAC,KAAK,EAAE,CAAC;QAC9B,IAAI,eAAe,EAAE,CAAC;YACpB,IAAI,CAAC,gBAAgB,CAAC,IAAI,CAAC,GAAG,eAAe,CAAC,CAAC;QACjD,CAAC;QAED,IAAI,CAAC,IAAI,CAAC,QAAQ,EAAE,CAAC;YACnB,IAAI,CAAC,QAAQ,GAAG,MAAM,OAAO,CAAC,OAAO,CAAC;gBACpC,WAAW,EAAE,IAAI,CAAC,IAAI,CAAC,WAAW;gBAClC,SAAS,EAAE,IAAI;gBACf,MAAM,EAAE,IAAI;gBACZ,SAAS,EAAE,IAAI,CAAC,IAAI,CAAC,GAAG;gBACxB,MAAM,EAAE,QAAQ;gBAChB,UAAU,EAAE,CAAC,QAAQ,EAAE,QAAQ,EAAE,QAAQ,EAAE,MAAM,CAAC;gBAClD,UAAU,EAAE,CAAC,QAAQ,EAAE,QAAQ,EAAE,QAAQ,CAAC;gBAC1C,QAAQ,EAAE,IAAI,CAAC,OAAO,CAAC,IAAI,CAAC,IAAI,CAAC,OAAO,EAAE,eAAe,CAAC;gBAC1D,KAAK,EAAE,KAAK;gBACZ,QAAQ,EAAE,IAAI;gBACd,aAAa,EAAE,IAAI,CAAC,IAAI,CAAC,GAAG,CAAC,CAAC,CAAC,KAAK,CAAC,CAAC,CAAC,MAAM;gBAC7C,iBAAiB,EAAE,CAAC,IAAI,CAAC,IAAI,CAAC,GAAG;gBACjC,YAAY,EAAE,CAAC,IAAI,CAAC,IAAI,CAAC,GAAG;gBAC5B,gBAAgB,EAAE,CAAC,IAAI,CAAC,IAAI,CAAC,GAAG;gBAChC,MAAM,EAAE,IAAI,CAAC,OAAO,CAAC,IAAI,CAAC,IAAI,CAAC,OAAO,EAAE,MAAM,CAAC;gBAC/C,MAAM,EAAE,KAAK;gBACb,iBAAiB,EAAE,CAAC,KAAK,EAAE,MAAM,EAAE,MAAM,EAAE,KAAK,CAAC;gBACjD,gBAAgB,EAAE,KAAK;gBACvB,MAAM,EAAE;oBACN,MAAM,EAAE,MAAM;oBACd,OAAO,EAAE,MAAM;oBACf,MAAM,EAAE,MAAM;oBACd,OAAO,EAAE,MAAM;oBACf,MAAM,EAAE,MAAM;oBACd,MAAM,EAAE,MAAM;oBACd,OAAO,EAAE,MAAM;oBACf,QAAQ,EAAE,MAAM;oBAChB,MAAM,EAAE,MAAM;oBACd,MAAM,EAAE,MAAM;oBACd,MAAM,EAAE,MAAM;oBACd,MAAM,EAAE,MAAM;oBACd,MAAM,EAAE,MAAM;oBACd,MAAM,EAAE,MAAM;oBACd,OAAO,EAAE,MAAM;oBACf,MAAM,EAAE,MAAM;oBACd,OAAO,EAAE,MAAM;oBACf,MAAM,EAAE,MAAM;oBACd,OAAO,EAAE,MAAM;oBACf,MAAM,EAAE,MAAM;oBACd,MAAM,EAAE,MAAM;oBACd,MAAM,EAAE,MAAM;oBACd,MAAM,EAAE,MAAM;oBACd,MAAM,EAAE,MAAM;oBACd,MAAM,EAAE,MAAM;iBACf;gBACD,QAAQ,EAAE,MAAM;gBAChB,QAAQ,EAAE,QAAQ;gBAClB,QAAQ,EAAE,IAAI,CAAC,IAAI,CAAC,QAAQ;gBAC5B,MAAM,EAAE;oBACN,EAAE,EAAE;;;;;;;gDAOkC,CAAC,IAAI,EAAE;iBAC9C;gBACD,OAAO,EAAE;oBACP,oBAAoB,CAAC;wBACnB,eAAe,EAAE,IAAI,CAAC,gBAAgB;wBACtC,GAAG,EAAE,IAAI,CAAC,IAAI,CAAC,GAAG;wBAClB,OAAO,EAAE,IAAI,CAAC,IAAI,CAAC,OAAO;wBAC1B,MAAM,EAAE,IAAI,CAAC,YAAY;wBACzB,iBAAiB,EAAE,IAAI,CAAC,IAAI,CAAC,iBAAiB;qBAC/C,CAAC;iBACH;aACF,CAAC,CAAC;QACL,CAAC;QAED,MAAM,WAAW,GAAG,IAAI,GAAG,EAAa,CAAC;QACzC,IAAI,MAAkD,CAAC;QACvD,IAAI,CAAC;YACH,MAAM,GAAG,MAAM,IAAI,CAAC,QAAQ,CAAC,OAAO,EAAE,CAAC;YAEvC,MAAM,WAAW,GACf,MAAM,CAAC,WAAW,EAAE,GAAG,CAAC,CAAC,IAAI,EAAE,EAAE,CAAC,iBAAiB,CAAC,IAAI,EAAE,mBAAmB,CAAC,IAAI,CAAC,CAAC,IAAI,EAAE,CAAC;YAE7F,KAAK,MAAM,UAAU,IAAI,WAAW,EAAE,CAAC;gBACrC,MAAM,YAAY,GAAG,SAAS,CAAC,IAAI,CAAC,IAAI,CAAC,IAAI,CAAC,OAAO,EAAE,UAAU,CAAC,IAAI,CAAC,CAAC;gBACxE,MAAM,QAAQ,GAAG,IAAI,CAAC,gBAAgB,CAAC,GAAG,CAAC,YAAY,CAAC,CAAC;gBACzD,MAAM,QAAQ,GAAG,SAAS,CAAC,GAAG,CAAC,MAAM,CAAC,IAAI,CAAC,UAAU,CAAC,QAAQ,CAAC,CAAC,CAAC;gBACjE,IAAI,QAAQ,KAAK,QAAQ,EAAE,CAAC;oBAC1B,OAAO,CAAC,SAAS,CAAC,YAAY,EAAE,UAAU,CAAC,QAAQ,CAAC,CAAC;oBACrD,IAAI,CAAC,gBAAgB,CAAC,GAAG,CAAC,YAAY,EAAE,QAAQ,CAAC,CAAC;oBAClD,WAAW,CAAC,GAAG,CAAC,YAAY,CAAC,CAAC;gBAChC,CAAC;YACH,CAAC;YAED,gBAAgB;YAChB,MAAM,UAAU,GAAG,MAAM,aAAa,CACpC;gBACE,EAAE,KAAK,EAAE,QAAQ,EAAE,IAAI,EAAE,MAAM,EAAE,MAAM,EAAE,GAAG,EAAE;gBAC9C,GAAG,CAAC,IAAI,CAAC,IAAI,CAAC,GAAG,CAAC,CAAC,CAAC,CAAC,EAAE,KAAK,EAAE,YAAY,EAAE,IAAI,EAAE,MAAM,EAAE,MAAM,EAAE,GAAG,EAAE,CAAC,CAAC,CAAC,CAAC,EAAE,CAAC;aAC/E,EACD,IAAI,CAAC,IAAI,CAAC,OAAO,CAClB,CAAC;YAEF,KAAK,MAAM,SAAS,IAAI,UAAU,EAAE,CAAC;gBACnC,MAAM,QAAQ,GAAG,IAAI,CAAC,gBAAgB,CAAC,GAAG,CAAC,SAAS,CAAC,IAAI,CAAC,SAAS,CAAC,MAAM,CAAC,CAAC,CAAC;gBAC7E,MAAM,QAAQ,GAAG,SAAS,CAAC,GAAG,CAAC,OAAO,CAAC,cAAc,CAAC,SAAS,CAAC,MAAM,CAAC,CAAC,CAAC;gBACzE,IAAI,QAAQ,KAAK,QAAQ,EAAE,CAAC;oBAC1B,OAAO,CAAC,IAAI,CACV,SAAS,CAAC,MAAM,EAChB,IAAI,CAAC,OAAO,CAAC,IAAI,CAAC,IAAI,CAAC,OAAO,EAAE,MAAM,EAAE,SAAS,CAAC,WAAW,CAAC,CAC/D,CAAC;oBACF,IAAI,CAAC,gBAAgB,CAAC,GAAG,CAAC,SAAS,CAAC,IAAI,CAAC,SAAS,CAAC,MAAM,CAAC,EAAE,QAAQ,CAAC,CAAC;oBACtE,WAAW,CAAC,GAAG,CAAC,SAAS,CAAC,IAAI,CAAC,SAAS,CAAC,WAAW,CAAC,CAAC,CAAC;gBACzD,CAAC;YACH,CAAC;QACH,CAAC;QAAC,OAAO,GAAG,EAAE,CAAC;YACb,MAAM,GAAG,GAAG,CAAC;YACb,KAAK,MAAM,CAAC,IAAI,GAAG,CAAC,MAAM,EAAE,CAAC;gBAC3B,IAAI,CAAC,CAAC,MAAM,IAAI,IAAI,EAAE,CAAC;oBACrB,IAAI,CAAC,OAAO,CAAC,KAAK,CAAC,CAAC,CAAC,MAAM,CAAC,CAAC;gBAC/B,CAAC;YACH,CAAC;QACH,CAAC;QAED,OAAO;YACL,YAAY,EAAE,IAAI,CAAC,YAAY,CAAC,YAAa;YAC7C,eAAe,EAAE,IAAI,CAAC,YAAY,CAAC,eAAgB;YACnD,OAAO,EAAE,wBAAwB,CAAC,iCAAiC,CACjE,MAAM,EACN,IAAI,CAAC,IAAI,CAAC,OAAO,CAClB;YACD,WAAW,EAAE,WAAW;SACzB,CAAC;IACJ,CAAC;CACF"}
|
|
@@ -1,17 +1,73 @@
|
|
|
1
1
|
import { TNormPath } from "@simplysm/sd-core-node";
|
|
2
2
|
export declare class SdDependencyCache {
|
|
3
3
|
#private;
|
|
4
|
+
/**
|
|
5
|
+
* 각 파일이 export한 심볼 집합 (예: export const A → "A")
|
|
6
|
+
*/
|
|
7
|
+
private _exportCache;
|
|
8
|
+
/**
|
|
9
|
+
* import한 타겟과 그 심볼 정보
|
|
10
|
+
* - 값이 0이면 전체 import(import * 또는 리소스 import)
|
|
11
|
+
* - 값이 Set이면 선택적 심볼 import (예: import { A } ...)
|
|
12
|
+
*/
|
|
13
|
+
private _importCache;
|
|
14
|
+
/**
|
|
15
|
+
* re-export한 타겟과 그 심볼 정보
|
|
16
|
+
* - export * from ...
|
|
17
|
+
* - export { A as B } from ...
|
|
18
|
+
* - 값이 0이면 전체 reexport(export * from ...)
|
|
19
|
+
*/
|
|
20
|
+
private _reexportCache;
|
|
21
|
+
/**
|
|
22
|
+
* 역의존 정보 (revDep)
|
|
23
|
+
* - 특정 파일이 어떤 파일에게 의존(참조)되는지
|
|
24
|
+
* - symbol 기반 추적
|
|
25
|
+
*/
|
|
26
|
+
private _revDepCache;
|
|
27
|
+
/**
|
|
28
|
+
* 분석이 완료된 파일 경로
|
|
29
|
+
*/
|
|
30
|
+
private _collectedCache;
|
|
31
|
+
/**
|
|
32
|
+
* 전체 추적된 파일 경로를 반환
|
|
33
|
+
*/
|
|
4
34
|
getFiles(): Set<TNormPath>;
|
|
35
|
+
/**
|
|
36
|
+
* 분석이 완료된 파일로 표시
|
|
37
|
+
*/
|
|
5
38
|
addCollected(fileNPath: TNormPath): void;
|
|
6
39
|
hasCollected(fileNPath: TNormPath): boolean;
|
|
40
|
+
/**
|
|
41
|
+
* export한 심볼 등록
|
|
42
|
+
* 예: export const A → "A"
|
|
43
|
+
*/
|
|
7
44
|
addExport(fileNPath: TNormPath, exportSymbol: string): void;
|
|
45
|
+
/**
|
|
46
|
+
* import 구문 등록
|
|
47
|
+
* - import * from ... → symbol = 0
|
|
48
|
+
* - import { A } from ... → symbol = "A"
|
|
49
|
+
*/
|
|
8
50
|
addImport(fileNPath: TNormPath, targetNPath: TNormPath, targetSymbol: string | 0): void;
|
|
51
|
+
/**
|
|
52
|
+
* export * or export { A as B } from ... 구문 등록
|
|
53
|
+
* ※ export/import에 자동 등록되지 않으므로 외부에서 명시적으로 따로 입력해야 함
|
|
54
|
+
*/
|
|
9
55
|
addReexport(fileNPath: TNormPath, targetNPath: TNormPath, targetSymbolInfo: {
|
|
10
56
|
importSymbol: string;
|
|
11
57
|
exportSymbol: string;
|
|
12
58
|
} | 0): void;
|
|
59
|
+
/**
|
|
60
|
+
* 변경된 파일 경로 집합으로부터 영향을 받는 전체 파일 집합을 계산
|
|
61
|
+
*/
|
|
13
62
|
getAffectedFileSet(modifiedNPathSet: Set<TNormPath>): Set<TNormPath>;
|
|
63
|
+
/**
|
|
64
|
+
* 주어진 파일들 및 그 영향 범위에 해당하는 모든 캐시를 무효화
|
|
65
|
+
*/
|
|
14
66
|
invalidates(fileNPathSet: Set<TNormPath>): void;
|
|
67
|
+
/**
|
|
68
|
+
* 변경된 파일로부터 영향을 받는 전체 트리를 반환
|
|
69
|
+
* - 의존 관계를 시각화 및 구조적으로 추적할 수 있도록 트리 형태로 구성
|
|
70
|
+
*/
|
|
15
71
|
getAffectedFileTree(modifiedNPathSet: Set<TNormPath>): ISdAffectedFileTreeNode[];
|
|
16
72
|
}
|
|
17
73
|
export interface ISdAffectedFileTreeNode {
|
|
@@ -1,86 +1,146 @@
|
|
|
1
1
|
export class SdDependencyCache {
|
|
2
|
-
|
|
3
|
-
|
|
4
|
-
|
|
5
|
-
|
|
6
|
-
|
|
2
|
+
constructor() {
|
|
3
|
+
/**
|
|
4
|
+
* 각 파일이 export한 심볼 집합 (예: export const A → "A")
|
|
5
|
+
*/
|
|
6
|
+
this._exportCache = new Map();
|
|
7
|
+
/**
|
|
8
|
+
* import한 타겟과 그 심볼 정보
|
|
9
|
+
* - 값이 0이면 전체 import(import * 또는 리소스 import)
|
|
10
|
+
* - 값이 Set이면 선택적 심볼 import (예: import { A } ...)
|
|
11
|
+
*/
|
|
12
|
+
this._importCache = new Map();
|
|
13
|
+
/**
|
|
14
|
+
* re-export한 타겟과 그 심볼 정보
|
|
15
|
+
* - export * from ...
|
|
16
|
+
* - export { A as B } from ...
|
|
17
|
+
* - 값이 0이면 전체 reexport(export * from ...)
|
|
18
|
+
*/
|
|
19
|
+
this._reexportCache = new Map();
|
|
20
|
+
/**
|
|
21
|
+
* 역의존 정보 (revDep)
|
|
22
|
+
* - 특정 파일이 어떤 파일에게 의존(참조)되는지
|
|
23
|
+
* - symbol 기반 추적
|
|
24
|
+
*/
|
|
25
|
+
this._revDepCache = new Map();
|
|
26
|
+
/**
|
|
27
|
+
* 분석이 완료된 파일 경로
|
|
28
|
+
*/
|
|
29
|
+
this._collectedCache = new Set();
|
|
30
|
+
}
|
|
31
|
+
/**
|
|
32
|
+
* .d.ts 또는 .js가 입력되었을 때 쌍으로 존재하는 파일 경로를 반환
|
|
33
|
+
* 예: "/a.d.ts" → ["/a.d.ts", "/a.js"]
|
|
34
|
+
*/
|
|
35
|
+
#getRelatedNPaths(nPath) {
|
|
36
|
+
if (nPath.endsWith(".d.ts")) {
|
|
37
|
+
return [nPath, nPath.replace(/\.d\.ts$/, ".js")];
|
|
38
|
+
}
|
|
39
|
+
if (nPath.endsWith(".js")) {
|
|
40
|
+
return [nPath, nPath.replace(/\.js$/, ".d.ts")];
|
|
41
|
+
}
|
|
42
|
+
return [nPath];
|
|
43
|
+
}
|
|
44
|
+
/**
|
|
45
|
+
* 전체 추적된 파일 경로를 반환
|
|
46
|
+
*/
|
|
7
47
|
getFiles() {
|
|
8
|
-
return new Set([
|
|
9
|
-
...this.#collectedCache.keys(),
|
|
10
|
-
...this.#revDepCache.keys(),
|
|
11
|
-
]);
|
|
48
|
+
return new Set([...this._collectedCache.keys(), ...this._revDepCache.keys()]);
|
|
12
49
|
}
|
|
50
|
+
/**
|
|
51
|
+
* 분석이 완료된 파일로 표시
|
|
52
|
+
*/
|
|
13
53
|
addCollected(fileNPath) {
|
|
14
|
-
this.#
|
|
54
|
+
for (const path of this.#getRelatedNPaths(fileNPath)) {
|
|
55
|
+
this._collectedCache.add(path);
|
|
56
|
+
}
|
|
15
57
|
}
|
|
16
58
|
hasCollected(fileNPath) {
|
|
17
|
-
return this
|
|
59
|
+
return this._collectedCache.has(fileNPath);
|
|
18
60
|
}
|
|
19
|
-
|
|
20
|
-
|
|
61
|
+
/**
|
|
62
|
+
* export한 심볼 등록
|
|
63
|
+
* 예: export const A → "A"
|
|
64
|
+
*/
|
|
21
65
|
addExport(fileNPath, exportSymbol) {
|
|
22
|
-
const
|
|
23
|
-
|
|
66
|
+
for (const path of this.#getRelatedNPaths(fileNPath)) {
|
|
67
|
+
const exportSymbolSet = this._exportCache.getOrCreate(path, new Set());
|
|
68
|
+
exportSymbolSet.add(exportSymbol);
|
|
69
|
+
}
|
|
24
70
|
}
|
|
25
|
-
|
|
26
|
-
|
|
27
|
-
|
|
28
|
-
|
|
71
|
+
/**
|
|
72
|
+
* import 구문 등록
|
|
73
|
+
* - import * from ... → symbol = 0
|
|
74
|
+
* - import { A } from ... → symbol = "A"
|
|
75
|
+
*/
|
|
29
76
|
addImport(fileNPath, targetNPath, targetSymbol) {
|
|
30
|
-
const
|
|
31
|
-
|
|
32
|
-
|
|
33
|
-
|
|
34
|
-
|
|
35
|
-
|
|
36
|
-
|
|
37
|
-
|
|
38
|
-
|
|
77
|
+
for (const filePath of this.#getRelatedNPaths(fileNPath)) {
|
|
78
|
+
for (const targetPath of this.#getRelatedNPaths(targetNPath)) {
|
|
79
|
+
const importTargetMap = this._importCache.getOrCreate(filePath, new Map());
|
|
80
|
+
if (targetSymbol === 0) {
|
|
81
|
+
importTargetMap.set(targetPath, 0);
|
|
82
|
+
this.#addRevDep(targetPath, filePath, 0);
|
|
83
|
+
}
|
|
84
|
+
else {
|
|
85
|
+
const importTargetSymbolSet = importTargetMap.getOrCreate(targetPath, new Set());
|
|
86
|
+
if (importTargetSymbolSet === 0)
|
|
87
|
+
return;
|
|
88
|
+
importTargetSymbolSet.add(targetSymbol);
|
|
89
|
+
this.#addRevDep(targetPath, filePath, targetSymbol);
|
|
90
|
+
}
|
|
39
91
|
}
|
|
40
|
-
importTargetSymbolSet.add(targetSymbol);
|
|
41
|
-
this.#addRevDep(targetNPath, fileNPath, targetSymbol);
|
|
42
92
|
}
|
|
43
93
|
}
|
|
44
|
-
|
|
45
|
-
|
|
46
|
-
|
|
47
|
-
|
|
48
|
-
// 차후 계산시 모든 캐시가 사용되므로,
|
|
49
|
-
// 이 클래스를 사용하는 곳에서는 따로따로 입력하면됨
|
|
94
|
+
/**
|
|
95
|
+
* export * or export { A as B } from ... 구문 등록
|
|
96
|
+
* ※ export/import에 자동 등록되지 않으므로 외부에서 명시적으로 따로 입력해야 함
|
|
97
|
+
*/
|
|
50
98
|
addReexport(fileNPath, targetNPath, targetSymbolInfo) {
|
|
51
|
-
const
|
|
52
|
-
|
|
53
|
-
|
|
54
|
-
|
|
55
|
-
|
|
56
|
-
|
|
57
|
-
|
|
58
|
-
|
|
59
|
-
|
|
60
|
-
|
|
61
|
-
|
|
62
|
-
|
|
63
|
-
|
|
64
|
-
|
|
99
|
+
for (const filePath of this.#getRelatedNPaths(fileNPath)) {
|
|
100
|
+
for (const targetPath of this.#getRelatedNPaths(targetNPath)) {
|
|
101
|
+
const reexportTargetMap = this._reexportCache.getOrCreate(filePath, new Map());
|
|
102
|
+
if (targetSymbolInfo === 0) {
|
|
103
|
+
reexportTargetMap.set(targetPath, 0);
|
|
104
|
+
this.#addRevDep(targetPath, filePath, 0);
|
|
105
|
+
}
|
|
106
|
+
else {
|
|
107
|
+
const reexportTargetSymbolInfos = reexportTargetMap.getOrCreate(targetPath, []);
|
|
108
|
+
if (reexportTargetSymbolInfos === 0)
|
|
109
|
+
return;
|
|
110
|
+
if (!reexportTargetSymbolInfos.some((item) => item.importSymbol === targetSymbolInfo.importSymbol &&
|
|
111
|
+
item.exportSymbol === targetSymbolInfo.exportSymbol)) {
|
|
112
|
+
reexportTargetSymbolInfos.push(targetSymbolInfo);
|
|
113
|
+
this.#addRevDep(targetPath, filePath, targetSymbolInfo.importSymbol);
|
|
114
|
+
}
|
|
115
|
+
}
|
|
65
116
|
}
|
|
66
117
|
}
|
|
67
118
|
}
|
|
119
|
+
/**
|
|
120
|
+
* 역의존 관계 등록 (revDep)
|
|
121
|
+
*/
|
|
68
122
|
#addRevDep(targetNPath, fileNPath, exportSymbol) {
|
|
69
|
-
const
|
|
70
|
-
|
|
71
|
-
|
|
72
|
-
|
|
73
|
-
|
|
74
|
-
|
|
75
|
-
|
|
76
|
-
|
|
123
|
+
for (const targetPath of this.#getRelatedNPaths(targetNPath)) {
|
|
124
|
+
for (const filePath of this.#getRelatedNPaths(fileNPath)) {
|
|
125
|
+
const revDepInfoMap = this._revDepCache.getOrCreate(targetPath, new Map());
|
|
126
|
+
if (exportSymbol === 0) {
|
|
127
|
+
revDepInfoMap.set(filePath, 0);
|
|
128
|
+
}
|
|
129
|
+
else {
|
|
130
|
+
const exportSymbolSet = revDepInfoMap.getOrCreate(filePath, new Set());
|
|
131
|
+
if (exportSymbolSet === 0)
|
|
132
|
+
return;
|
|
133
|
+
exportSymbolSet.add(exportSymbol);
|
|
134
|
+
}
|
|
77
135
|
}
|
|
78
|
-
exportSymbolSet.add(exportSymbol);
|
|
79
136
|
}
|
|
80
137
|
}
|
|
138
|
+
/**
|
|
139
|
+
* 변경된 파일 경로 집합으로부터 영향을 받는 전체 파일 집합을 계산
|
|
140
|
+
*/
|
|
81
141
|
getAffectedFileSet(modifiedNPathSet) {
|
|
82
142
|
const visited = new Set();
|
|
83
|
-
const result = new Set(
|
|
143
|
+
const result = new Set();
|
|
84
144
|
const queue = [];
|
|
85
145
|
const enqueue = (fileNPath, exportSymbol) => {
|
|
86
146
|
const key = `${fileNPath}#${exportSymbol}`;
|
|
@@ -90,109 +150,114 @@ export class SdDependencyCache {
|
|
|
90
150
|
}
|
|
91
151
|
};
|
|
92
152
|
for (const modifiedNPath of modifiedNPathSet) {
|
|
93
|
-
const
|
|
94
|
-
|
|
95
|
-
|
|
96
|
-
|
|
97
|
-
|
|
98
|
-
|
|
99
|
-
|
|
153
|
+
for (const path of this.#getRelatedNPaths(modifiedNPath)) {
|
|
154
|
+
result.add(path);
|
|
155
|
+
const exportSymbols = this.#getExportSymbols(path);
|
|
156
|
+
if (exportSymbols.size === 0) {
|
|
157
|
+
enqueue(path, undefined);
|
|
158
|
+
}
|
|
159
|
+
else {
|
|
160
|
+
for (const symbol of exportSymbols) {
|
|
161
|
+
enqueue(path, symbol);
|
|
162
|
+
}
|
|
100
163
|
}
|
|
101
164
|
}
|
|
102
165
|
}
|
|
103
166
|
while (queue.length > 0) {
|
|
104
167
|
const curr = queue.shift();
|
|
105
|
-
|
|
106
|
-
if (visited.has(key)) continue;
|
|
107
|
-
visited.add(key);*/
|
|
108
|
-
const revDepInfoMap = this.#revDepCache.get(curr.fileNPath);
|
|
168
|
+
const revDepInfoMap = this._revDepCache.get(curr.fileNPath);
|
|
109
169
|
if (!revDepInfoMap)
|
|
110
170
|
continue;
|
|
111
171
|
for (const [revDepFileNPath, revDepInfo] of revDepInfoMap) {
|
|
112
172
|
if (curr.exportSymbol != null) {
|
|
113
|
-
// curr의 export를 토대로 revDep이 사용하고 있는지 체크
|
|
114
|
-
// curr.exportSymbol 와 revDev의 importSymbol은 같다
|
|
115
173
|
const hasImportSymbol = revDepInfo === 0 || revDepInfo.has(curr.exportSymbol);
|
|
116
174
|
if (hasImportSymbol) {
|
|
117
175
|
result.add(revDepFileNPath);
|
|
118
|
-
// 하위 Deps를 queue에 넣기전 export명칭 변환 (이름을 변경한 reexport일 경우 필요)
|
|
119
176
|
const exportSymbol = this.#convertImportSymbolToExportSymbol(revDepFileNPath, curr.fileNPath, curr.exportSymbol);
|
|
120
177
|
enqueue(revDepFileNPath, exportSymbol);
|
|
121
178
|
}
|
|
122
179
|
}
|
|
123
|
-
else {
|
|
180
|
+
else {
|
|
124
181
|
result.add(revDepFileNPath);
|
|
125
182
|
}
|
|
126
183
|
}
|
|
127
184
|
}
|
|
128
185
|
return result;
|
|
129
186
|
}
|
|
187
|
+
/**
|
|
188
|
+
* 주어진 파일들 및 그 영향 범위에 해당하는 모든 캐시를 무효화
|
|
189
|
+
*/
|
|
130
190
|
invalidates(fileNPathSet) {
|
|
131
191
|
const affectedFiles = this.getAffectedFileSet(fileNPathSet);
|
|
132
192
|
for (const fileNPath of affectedFiles) {
|
|
133
|
-
this
|
|
134
|
-
this
|
|
135
|
-
this
|
|
136
|
-
this
|
|
137
|
-
this
|
|
193
|
+
this._exportCache.delete(fileNPath);
|
|
194
|
+
this._importCache.delete(fileNPath);
|
|
195
|
+
this._reexportCache.delete(fileNPath);
|
|
196
|
+
this._collectedCache.delete(fileNPath);
|
|
197
|
+
this._revDepCache.delete(fileNPath); // 자신이 key인 경우
|
|
138
198
|
}
|
|
139
|
-
|
|
140
|
-
for (const [targetNPath, infoMap] of this.#revDepCache) {
|
|
199
|
+
for (const [targetNPath, infoMap] of this._revDepCache) {
|
|
141
200
|
for (const fileNPath of affectedFiles) {
|
|
142
201
|
infoMap.delete(fileNPath);
|
|
143
202
|
}
|
|
144
203
|
if (infoMap.size === 0) {
|
|
145
|
-
this
|
|
204
|
+
this._revDepCache.delete(targetNPath);
|
|
146
205
|
}
|
|
147
206
|
}
|
|
148
207
|
}
|
|
208
|
+
/**
|
|
209
|
+
* reexport된 경우 importSymbol → exportSymbol로 변환
|
|
210
|
+
*/
|
|
149
211
|
#convertImportSymbolToExportSymbol(fileNPath, targetNPath, importSymbol) {
|
|
150
|
-
const symbolInfos = this
|
|
212
|
+
const symbolInfos = this._reexportCache.get(fileNPath)?.get(targetNPath);
|
|
151
213
|
if (symbolInfos != null && symbolInfos !== 0 && symbolInfos.length > 0) {
|
|
152
|
-
const symbolInfo = symbolInfos.single(item => item.importSymbol === importSymbol);
|
|
153
|
-
if (symbolInfo)
|
|
214
|
+
const symbolInfo = symbolInfos.single((item) => item.importSymbol === importSymbol);
|
|
215
|
+
if (symbolInfo)
|
|
154
216
|
return symbolInfo.exportSymbol;
|
|
155
|
-
}
|
|
156
217
|
}
|
|
157
218
|
return importSymbol;
|
|
158
219
|
}
|
|
220
|
+
/**
|
|
221
|
+
* 해당 파일에서 export된 모든 심볼 (직접 + 재export 포함)
|
|
222
|
+
*/
|
|
159
223
|
#getExportSymbols(fileNPath) {
|
|
160
224
|
const result = new Set();
|
|
161
|
-
const
|
|
162
|
-
|
|
163
|
-
|
|
164
|
-
|
|
165
|
-
|
|
166
|
-
|
|
167
|
-
|
|
168
|
-
|
|
169
|
-
|
|
170
|
-
|
|
171
|
-
|
|
172
|
-
|
|
225
|
+
for (const path of this.#getRelatedNPaths(fileNPath)) {
|
|
226
|
+
const set = this._exportCache.get(path);
|
|
227
|
+
if (set)
|
|
228
|
+
result.adds(...set);
|
|
229
|
+
const map = this._reexportCache.get(path);
|
|
230
|
+
if (map) {
|
|
231
|
+
for (const [key, val] of map) {
|
|
232
|
+
if (val === 0) {
|
|
233
|
+
result.adds(...this.#getExportSymbols(key));
|
|
234
|
+
}
|
|
235
|
+
else {
|
|
236
|
+
result.adds(...val.map(item => item.exportSymbol));
|
|
237
|
+
}
|
|
173
238
|
}
|
|
174
239
|
}
|
|
175
240
|
}
|
|
176
241
|
return result;
|
|
177
242
|
}
|
|
178
|
-
|
|
243
|
+
/**
|
|
244
|
+
* 변경된 파일로부터 영향을 받는 전체 트리를 반환
|
|
245
|
+
* - 의존 관계를 시각화 및 구조적으로 추적할 수 있도록 트리 형태로 구성
|
|
246
|
+
*/
|
|
179
247
|
getAffectedFileTree(modifiedNPathSet) {
|
|
180
|
-
const visited = new Set();
|
|
181
|
-
const nodeMap = new Map();
|
|
248
|
+
const visited = new Set();
|
|
249
|
+
const nodeMap = new Map();
|
|
182
250
|
const buildTree = (fileNPath, exportSymbol) => {
|
|
183
251
|
const key = `${fileNPath}#${exportSymbol ?? "*"}`;
|
|
184
|
-
// 동일 노드가 이미 만들어졌다면 재사용
|
|
185
252
|
if (nodeMap.has(key))
|
|
186
253
|
return nodeMap.get(key);
|
|
187
|
-
// 방문 기록
|
|
188
254
|
visited.add(key);
|
|
189
|
-
// 노드 생성 및 캐싱
|
|
190
255
|
const node = {
|
|
191
256
|
fileNPath,
|
|
192
|
-
children: []
|
|
257
|
+
children: [],
|
|
193
258
|
};
|
|
194
259
|
nodeMap.set(key, node);
|
|
195
|
-
const revDepInfoMap = this
|
|
260
|
+
const revDepInfoMap = this._revDepCache.get(fileNPath);
|
|
196
261
|
if (!revDepInfoMap)
|
|
197
262
|
return node;
|
|
198
263
|
for (const [revDepFileNPath, revDepInfo] of revDepInfoMap.entries()) {
|
|
@@ -204,7 +269,7 @@ export class SdDependencyCache {
|
|
|
204
269
|
: undefined;
|
|
205
270
|
const childKey = `${revDepFileNPath}#${nextExportSymbol ?? "*"}`;
|
|
206
271
|
if (visited.has(childKey))
|
|
207
|
-
continue;
|
|
272
|
+
continue;
|
|
208
273
|
const childNode = buildTree(revDepFileNPath, nextExportSymbol);
|
|
209
274
|
node.children.push(childNode);
|
|
210
275
|
}
|
|
@@ -212,16 +277,16 @@ export class SdDependencyCache {
|
|
|
212
277
|
};
|
|
213
278
|
const result = [];
|
|
214
279
|
for (const modifiedNPath of modifiedNPathSet) {
|
|
215
|
-
const
|
|
216
|
-
|
|
217
|
-
const
|
|
218
|
-
|
|
219
|
-
|
|
220
|
-
|
|
221
|
-
|
|
222
|
-
|
|
223
|
-
|
|
224
|
-
}
|
|
280
|
+
for (const path of this.#getRelatedNPaths(modifiedNPath)) {
|
|
281
|
+
result.push(buildTree(path, undefined)); // root는 symbol상관없이
|
|
282
|
+
/*const exportSymbols = this.#getExportSymbols(path);
|
|
283
|
+
if (exportSymbols.size === 0) {
|
|
284
|
+
result.push(buildTree(path, undefined));
|
|
285
|
+
} else {
|
|
286
|
+
for (const symbol of exportSymbols) {
|
|
287
|
+
result.push(buildTree(path, symbol));
|
|
288
|
+
}
|
|
289
|
+
}*/
|
|
225
290
|
}
|
|
226
291
|
}
|
|
227
292
|
return result;
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"sd-dependency-cache.js","sourceRoot":"","sources":["../../src/ts-compiler/sd-dependency-cache.ts"],"names":[],"mappings":"AAEA,MAAM,OAAO,iBAAiB;
|
|
1
|
+
{"version":3,"file":"sd-dependency-cache.js","sourceRoot":"","sources":["../../src/ts-compiler/sd-dependency-cache.ts"],"names":[],"mappings":"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"}
|
package/package.json
CHANGED
|
@@ -1,6 +1,6 @@
|
|
|
1
1
|
{
|
|
2
2
|
"name": "@simplysm/sd-cli",
|
|
3
|
-
"version": "12.11.
|
|
3
|
+
"version": "12.11.10",
|
|
4
4
|
"description": "심플리즘 패키지 - CLI",
|
|
5
5
|
"author": "김석래",
|
|
6
6
|
"repository": {
|
|
@@ -17,10 +17,10 @@
|
|
|
17
17
|
"@angular/compiler-cli": "^20.0.0",
|
|
18
18
|
"@anthropic-ai/sdk": "^0.52.0",
|
|
19
19
|
"@electron/rebuild": "^4.0.1",
|
|
20
|
-
"@simplysm/sd-core-common": "12.11.
|
|
21
|
-
"@simplysm/sd-core-node": "12.11.
|
|
22
|
-
"@simplysm/sd-service-server": "12.11.
|
|
23
|
-
"@simplysm/sd-storage": "12.11.
|
|
20
|
+
"@simplysm/sd-core-common": "12.11.10",
|
|
21
|
+
"@simplysm/sd-core-node": "12.11.10",
|
|
22
|
+
"@simplysm/sd-service-server": "12.11.10",
|
|
23
|
+
"@simplysm/sd-storage": "12.11.10",
|
|
24
24
|
"browserslist": "^4.25.0",
|
|
25
25
|
"cordova": "^12.0.0",
|
|
26
26
|
"css-has-pseudo": "^7.0.2",
|
|
@@ -1,20 +1,22 @@
|
|
|
1
1
|
import path from "path";
|
|
2
|
-
import { FsUtils, PathUtils, SdFsWatcher } from "@simplysm/sd-core-node";
|
|
2
|
+
import { FsUtils, HashUtils, PathUtils, SdFsWatcher } from "@simplysm/sd-core-node";
|
|
3
3
|
import { StringUtils } from "@simplysm/sd-core-common";
|
|
4
4
|
|
|
5
5
|
export class SdCliNgRoutesFileGenerator {
|
|
6
|
-
|
|
6
|
+
cachedHash?: string;
|
|
7
|
+
|
|
8
|
+
watch(pkgPath: string, noLazyRoute?: boolean) {
|
|
7
9
|
const routesFilePath = path.resolve(pkgPath, "src/routes.ts");
|
|
8
|
-
|
|
10
|
+
this.cachedHash = FsUtils.exists(routesFilePath) ? HashUtils.get(FsUtils.readFile(routesFilePath)) : undefined;
|
|
9
11
|
|
|
10
12
|
SdFsWatcher.watch([path.resolve(pkgPath, "src")]).onChange({ delay: 50 }, () => {
|
|
11
|
-
|
|
13
|
+
this.run(pkgPath, noLazyRoute);
|
|
12
14
|
});
|
|
13
15
|
|
|
14
|
-
|
|
16
|
+
this.run(pkgPath, noLazyRoute);
|
|
15
17
|
}
|
|
16
18
|
|
|
17
|
-
|
|
19
|
+
run(pkgPath: string, noLazyRoute?: boolean) {
|
|
18
20
|
const appDirPath = path.resolve(pkgPath, "src/app");
|
|
19
21
|
const routesFilePath = path.resolve(pkgPath, "src/routes.ts");
|
|
20
22
|
|
|
@@ -52,16 +54,18 @@ export class SdCliNgRoutesFileGenerator {
|
|
|
52
54
|
cont += indentStr + ` path: "${key}",\n`;
|
|
53
55
|
if (val.relModulePath != null) {
|
|
54
56
|
if (noLazyRoute) {
|
|
55
|
-
cont +=
|
|
56
|
-
+
|
|
57
|
-
|
|
58
|
-
|
|
59
|
-
|
|
57
|
+
cont +=
|
|
58
|
+
indentStr +
|
|
59
|
+
` component: ${StringUtils.toPascalCase(path.basename(val.relModulePath))},\n`;
|
|
60
|
+
imports.push(
|
|
61
|
+
`import { ${StringUtils.toPascalCase(path.basename(val.relModulePath))} } from "./app/${val.relModulePath}";`,
|
|
62
|
+
);
|
|
63
|
+
} else {
|
|
60
64
|
cont +=
|
|
61
65
|
indentStr +
|
|
62
66
|
` loadComponent: () => import("./app/${val.relModulePath}").then((m) => m.${StringUtils.toPascalCase(
|
|
63
|
-
path.basename(
|
|
64
|
-
|
|
67
|
+
path.basename(val.relModulePath),
|
|
68
|
+
)}),\n`;
|
|
65
69
|
}
|
|
66
70
|
}
|
|
67
71
|
if (val.children.size > 0) {
|
|
@@ -82,10 +86,11 @@ ${imports.join("\n")}
|
|
|
82
86
|
export const routes: Routes = [
|
|
83
87
|
${routes}
|
|
84
88
|
];`.trim();
|
|
85
|
-
|
|
89
|
+
const currHash = HashUtils.get(content);
|
|
90
|
+
if (currHash !== this.cachedHash) {
|
|
86
91
|
FsUtils.writeFile(routesFilePath, content);
|
|
92
|
+
this.cachedHash = currHash;
|
|
87
93
|
}
|
|
88
|
-
return content;
|
|
89
94
|
}
|
|
90
95
|
}
|
|
91
96
|
|