semantic-complexity 0.0.7-741984fb → 0.0.15-29c6b296
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/__tests__/analyzers.test.d.ts +5 -0
- package/dist/__tests__/analyzers.test.d.ts.map +1 -0
- package/dist/__tests__/analyzers.test.js +357 -0
- package/dist/__tests__/analyzers.test.js.map +1 -0
- package/dist/__tests__/gate.test.d.ts +5 -0
- package/dist/__tests__/gate.test.d.ts.map +1 -0
- package/dist/__tests__/gate.test.js +140 -0
- package/dist/__tests__/gate.test.js.map +1 -0
- package/dist/analyzers/bread.d.ts +63 -0
- package/dist/analyzers/bread.d.ts.map +1 -0
- package/dist/analyzers/bread.js +415 -0
- package/dist/analyzers/bread.js.map +1 -0
- package/dist/analyzers/cheese.d.ts +111 -0
- package/dist/analyzers/cheese.d.ts.map +1 -0
- package/dist/analyzers/cheese.js +881 -0
- package/dist/analyzers/cheese.js.map +1 -0
- package/dist/analyzers/ham.d.ts +33 -0
- package/dist/analyzers/ham.d.ts.map +1 -0
- package/dist/analyzers/ham.js +264 -0
- package/dist/analyzers/ham.js.map +1 -0
- package/dist/analyzers/index.d.ts +7 -0
- package/dist/analyzers/index.d.ts.map +1 -0
- package/dist/analyzers/index.js +7 -0
- package/dist/analyzers/index.js.map +1 -0
- package/dist/budget/index.d.ts +50 -0
- package/dist/budget/index.d.ts.map +1 -0
- package/dist/budget/index.js +138 -0
- package/dist/budget/index.js.map +1 -0
- package/dist/cli/index.d.ts +6 -0
- package/dist/cli/index.d.ts.map +1 -0
- package/dist/cli/index.js +103 -0
- package/dist/cli/index.js.map +1 -0
- package/dist/gate/index.d.ts +31 -0
- package/dist/gate/index.d.ts.map +1 -0
- package/dist/gate/index.js +117 -0
- package/dist/gate/index.js.map +1 -0
- package/dist/gate/waiver.d.ts +83 -0
- package/dist/gate/waiver.d.ts.map +1 -0
- package/dist/gate/waiver.js +425 -0
- package/dist/gate/waiver.js.map +1 -0
- package/dist/index.d.ts +8 -34
- package/dist/index.d.ts.map +1 -1
- package/dist/index.js +8 -49
- package/dist/index.js.map +1 -1
- package/dist/mcp/index.d.ts +5 -0
- package/dist/mcp/index.d.ts.map +1 -0
- package/dist/mcp/index.js +351 -0
- package/dist/mcp/index.js.map +1 -0
- package/dist/recommend/index.d.ts +32 -0
- package/dist/recommend/index.d.ts.map +1 -0
- package/dist/recommend/index.js +169 -0
- package/dist/recommend/index.js.map +1 -0
- package/dist/simplex/index.d.ts +26 -0
- package/dist/simplex/index.d.ts.map +1 -0
- package/dist/simplex/index.js +100 -0
- package/dist/simplex/index.js.map +1 -0
- package/dist/types/index.d.ts +39 -0
- package/dist/types/index.d.ts.map +1 -0
- package/dist/types/index.js +5 -0
- package/dist/types/index.js.map +1 -0
- package/package.json +27 -52
- package/LICENSE +0 -21
- package/README.md +0 -72
- package/dist/ast/index.d.ts +0 -2
- package/dist/ast/index.d.ts.map +0 -1
- package/dist/ast/index.js +0 -2
- package/dist/ast/index.js.map +0 -1
- package/dist/ast/parser.d.ts +0 -27
- package/dist/ast/parser.d.ts.map +0 -1
- package/dist/ast/parser.js +0 -273
- package/dist/ast/parser.js.map +0 -1
- package/dist/canonical/convergence.d.ts +0 -56
- package/dist/canonical/convergence.d.ts.map +0 -1
- package/dist/canonical/convergence.js +0 -149
- package/dist/canonical/convergence.js.map +0 -1
- package/dist/canonical/index.d.ts +0 -11
- package/dist/canonical/index.d.ts.map +0 -1
- package/dist/canonical/index.js +0 -11
- package/dist/canonical/index.js.map +0 -1
- package/dist/canonical/profiles.d.ts +0 -40
- package/dist/canonical/profiles.d.ts.map +0 -1
- package/dist/canonical/profiles.js +0 -182
- package/dist/canonical/profiles.js.map +0 -1
- package/dist/canonical/types.d.ts +0 -124
- package/dist/canonical/types.d.ts.map +0 -1
- package/dist/canonical/types.js +0 -46
- package/dist/canonical/types.js.map +0 -1
- package/dist/compare.d.ts +0 -31
- package/dist/compare.d.ts.map +0 -1
- package/dist/compare.js +0 -354
- package/dist/compare.js.map +0 -1
- package/dist/context/index.d.ts +0 -41
- package/dist/context/index.d.ts.map +0 -1
- package/dist/context/index.js +0 -253
- package/dist/context/index.js.map +0 -1
- package/dist/gates/delta.d.ts +0 -45
- package/dist/gates/delta.d.ts.map +0 -1
- package/dist/gates/delta.js +0 -260
- package/dist/gates/delta.js.map +0 -1
- package/dist/gates/index.d.ts +0 -9
- package/dist/gates/index.d.ts.map +0 -1
- package/dist/gates/index.js +0 -9
- package/dist/gates/index.js.map +0 -1
- package/dist/gates/types.d.ts +0 -96
- package/dist/gates/types.d.ts.map +0 -1
- package/dist/gates/types.js +0 -59
- package/dist/gates/types.js.map +0 -1
- package/dist/graph/call.d.ts +0 -63
- package/dist/graph/call.d.ts.map +0 -1
- package/dist/graph/call.js +0 -240
- package/dist/graph/call.js.map +0 -1
- package/dist/graph/dependency.d.ts +0 -52
- package/dist/graph/dependency.d.ts.map +0 -1
- package/dist/graph/dependency.js +0 -296
- package/dist/graph/dependency.js.map +0 -1
- package/dist/graph/index.d.ts +0 -3
- package/dist/graph/index.d.ts.map +0 -1
- package/dist/graph/index.js +0 -3
- package/dist/graph/index.js.map +0 -1
- package/dist/metrics/cognitive.d.ts +0 -42
- package/dist/metrics/cognitive.d.ts.map +0 -1
- package/dist/metrics/cognitive.js +0 -204
- package/dist/metrics/cognitive.js.map +0 -1
- package/dist/metrics/cyclomatic.d.ts +0 -31
- package/dist/metrics/cyclomatic.d.ts.map +0 -1
- package/dist/metrics/cyclomatic.js +0 -121
- package/dist/metrics/cyclomatic.js.map +0 -1
- package/dist/metrics/dimensional.d.ts +0 -32
- package/dist/metrics/dimensional.d.ts.map +0 -1
- package/dist/metrics/dimensional.js +0 -560
- package/dist/metrics/dimensional.js.map +0 -1
- package/dist/metrics/index.d.ts +0 -26
- package/dist/metrics/index.d.ts.map +0 -1
- package/dist/metrics/index.js +0 -120
- package/dist/metrics/index.js.map +0 -1
- package/dist/metrics/meta.d.ts +0 -90
- package/dist/metrics/meta.d.ts.map +0 -1
- package/dist/metrics/meta.js +0 -144
- package/dist/metrics/meta.js.map +0 -1
- package/dist/tensor/canonical.d.ts +0 -53
- package/dist/tensor/canonical.d.ts.map +0 -1
- package/dist/tensor/canonical.js +0 -192
- package/dist/tensor/canonical.js.map +0 -1
- package/dist/tensor/index.d.ts +0 -22
- package/dist/tensor/index.d.ts.map +0 -1
- package/dist/tensor/index.js +0 -22
- package/dist/tensor/index.js.map +0 -1
- package/dist/tensor/matrix.d.ts +0 -62
- package/dist/tensor/matrix.d.ts.map +0 -1
- package/dist/tensor/matrix.js +0 -187
- package/dist/tensor/matrix.js.map +0 -1
- package/dist/tensor/scoring.d.ts +0 -82
- package/dist/tensor/scoring.d.ts.map +0 -1
- package/dist/tensor/scoring.js +0 -233
- package/dist/tensor/scoring.js.map +0 -1
- package/dist/tensor/types.d.ts +0 -186
- package/dist/tensor/types.d.ts.map +0 -1
- package/dist/tensor/types.js +0 -15
- package/dist/tensor/types.js.map +0 -1
- package/dist/types.d.ts +0 -341
- package/dist/types.d.ts.map +0 -1
- package/dist/types.js +0 -22
- package/dist/types.js.map +0 -1
package/dist/metrics/index.js
DELETED
|
@@ -1,120 +0,0 @@
|
|
|
1
|
-
import ts from 'typescript';
|
|
2
|
-
import { extractFunctionInfo, extractImports, extractExports } from '../ast/parser.js';
|
|
3
|
-
import { calculateCyclomaticComplexity } from './cyclomatic.js';
|
|
4
|
-
import { calculateCognitiveComplexity } from './cognitive.js';
|
|
5
|
-
import { analyzeDimensionalComplexity, DEFAULT_WEIGHTS } from './dimensional.js';
|
|
6
|
-
export { calculateCyclomaticComplexity, analyzeFunctionCyclomatic, analyzeFileCyclomatic, } from './cyclomatic.js';
|
|
7
|
-
export { calculateCognitiveComplexity, analyzeFunctionCognitive, analyzeFileCognitive, } from './cognitive.js';
|
|
8
|
-
export { analyzeStateComplexity, analyzeAsyncComplexity, analyzeCouplingComplexity, analyzeDimensionalComplexity, DEFAULT_WEIGHTS, } from './dimensional.js';
|
|
9
|
-
/**
|
|
10
|
-
* 함수의 순환복잡도와 인지복잡도를 모두 계산
|
|
11
|
-
*/
|
|
12
|
-
export function analyzeFunction(functionNode, sourceFile, functionInfo) {
|
|
13
|
-
const cyclomatic = calculateCyclomaticComplexity(functionNode, sourceFile);
|
|
14
|
-
const cognitive = calculateCognitiveComplexity(functionNode, sourceFile, functionInfo.name !== '<anonymous>' ? functionInfo.name : undefined);
|
|
15
|
-
// 상세 정보 병합 (인지복잡도 기준, 더 상세함)
|
|
16
|
-
return {
|
|
17
|
-
function: functionInfo,
|
|
18
|
-
cyclomatic: cyclomatic.complexity,
|
|
19
|
-
cognitive: cognitive.complexity,
|
|
20
|
-
details: cognitive.details,
|
|
21
|
-
};
|
|
22
|
-
}
|
|
23
|
-
/**
|
|
24
|
-
* 함수의 확장된 복잡도 분석 (차원 복잡도 포함)
|
|
25
|
-
*/
|
|
26
|
-
export function analyzeFunctionExtended(functionNode, sourceFile, functionInfo, weights = DEFAULT_WEIGHTS) {
|
|
27
|
-
const cyclomatic = calculateCyclomaticComplexity(functionNode, sourceFile);
|
|
28
|
-
const cognitive = calculateCognitiveComplexity(functionNode, sourceFile, functionInfo.name !== '<anonymous>' ? functionInfo.name : undefined);
|
|
29
|
-
// nesting penalty 계산 (인지복잡도 - 순환복잡도 기반 추정)
|
|
30
|
-
const nestingPenalty = cognitive.details
|
|
31
|
-
.filter((d) => d.nestingLevel > 0)
|
|
32
|
-
.reduce((sum, d) => sum + d.nestingLevel, 0);
|
|
33
|
-
// 차원 복잡도 분석
|
|
34
|
-
const dimensional = analyzeDimensionalComplexity(functionNode, sourceFile, cyclomatic.complexity, nestingPenalty, weights);
|
|
35
|
-
return {
|
|
36
|
-
function: functionInfo,
|
|
37
|
-
cyclomatic: cyclomatic.complexity,
|
|
38
|
-
cognitive: cognitive.complexity,
|
|
39
|
-
details: cognitive.details,
|
|
40
|
-
dimensional,
|
|
41
|
-
};
|
|
42
|
-
}
|
|
43
|
-
/**
|
|
44
|
-
* 소스 파일의 모든 함수에 대한 복잡도 분석
|
|
45
|
-
*/
|
|
46
|
-
export function analyzeFile(sourceFile) {
|
|
47
|
-
const functions = [];
|
|
48
|
-
function visit(node, className) {
|
|
49
|
-
// 클래스 처리
|
|
50
|
-
if (ts.isClassDeclaration(node) || ts.isClassExpression(node)) {
|
|
51
|
-
const name = node.name?.getText(sourceFile) ?? '<anonymous>';
|
|
52
|
-
node.members.forEach((member) => visit(member, name));
|
|
53
|
-
return;
|
|
54
|
-
}
|
|
55
|
-
// 함수 노드 확인
|
|
56
|
-
const functionInfo = extractFunctionInfo(node, sourceFile, className);
|
|
57
|
-
if (functionInfo) {
|
|
58
|
-
const result = analyzeFunction(node, sourceFile, functionInfo);
|
|
59
|
-
functions.push(result);
|
|
60
|
-
}
|
|
61
|
-
// 최상위 레벨만 순회 (중첩 함수는 상위 함수에서 처리)
|
|
62
|
-
}
|
|
63
|
-
ts.forEachChild(sourceFile, (node) => visit(node));
|
|
64
|
-
// 통계 계산
|
|
65
|
-
const totalCyclomatic = functions.reduce((sum, f) => sum + f.cyclomatic, 0);
|
|
66
|
-
const totalCognitive = functions.reduce((sum, f) => sum + f.cognitive, 0);
|
|
67
|
-
const count = functions.length || 1;
|
|
68
|
-
return {
|
|
69
|
-
filePath: sourceFile.fileName,
|
|
70
|
-
functions,
|
|
71
|
-
imports: extractImports(sourceFile),
|
|
72
|
-
exports: extractExports(sourceFile),
|
|
73
|
-
totalCyclomatic,
|
|
74
|
-
totalCognitive,
|
|
75
|
-
averageCyclomatic: totalCyclomatic / count,
|
|
76
|
-
averageCognitive: totalCognitive / count,
|
|
77
|
-
};
|
|
78
|
-
}
|
|
79
|
-
/**
|
|
80
|
-
* 복잡도 등급 판정
|
|
81
|
-
*/
|
|
82
|
-
export function getComplexityGrade(cyclomatic, cognitive) {
|
|
83
|
-
// 인지복잡도 기준 (SonarQube 기준)
|
|
84
|
-
if (cognitive <= 5 && cyclomatic <= 5)
|
|
85
|
-
return 'low';
|
|
86
|
-
if (cognitive <= 10 && cyclomatic <= 10)
|
|
87
|
-
return 'moderate';
|
|
88
|
-
if (cognitive <= 20 && cyclomatic <= 20)
|
|
89
|
-
return 'high';
|
|
90
|
-
return 'very-high';
|
|
91
|
-
}
|
|
92
|
-
/**
|
|
93
|
-
* 복잡도 요약 생성 (MCP용)
|
|
94
|
-
*/
|
|
95
|
-
export function generateComplexitySummary(result) {
|
|
96
|
-
const lines = [
|
|
97
|
-
`## 파일: ${result.filePath}`,
|
|
98
|
-
'',
|
|
99
|
-
`총 함수 수: ${result.functions.length}`,
|
|
100
|
-
`평균 순환복잡도: ${result.averageCyclomatic.toFixed(1)}`,
|
|
101
|
-
`평균 인지복잡도: ${result.averageCognitive.toFixed(1)}`,
|
|
102
|
-
'',
|
|
103
|
-
];
|
|
104
|
-
// 복잡도가 높은 함수 목록
|
|
105
|
-
const highComplexity = result.functions
|
|
106
|
-
.filter((f) => f.cyclomatic > 10 || f.cognitive > 15)
|
|
107
|
-
.sort((a, b) => b.cognitive - a.cognitive);
|
|
108
|
-
if (highComplexity.length > 0) {
|
|
109
|
-
lines.push('### 리팩토링 권장 함수');
|
|
110
|
-
lines.push('');
|
|
111
|
-
for (const func of highComplexity) {
|
|
112
|
-
const grade = getComplexityGrade(func.cyclomatic, func.cognitive);
|
|
113
|
-
const loc = func.function.location;
|
|
114
|
-
lines.push(`- **${func.function.name}** (${loc.startLine}행): ` +
|
|
115
|
-
`순환=${func.cyclomatic}, 인지=${func.cognitive} [${grade}]`);
|
|
116
|
-
}
|
|
117
|
-
}
|
|
118
|
-
return lines.join('\n');
|
|
119
|
-
}
|
|
120
|
-
//# sourceMappingURL=index.js.map
|
|
@@ -1 +0,0 @@
|
|
|
1
|
-
{"version":3,"file":"index.js","sourceRoot":"","sources":["../../src/metrics/index.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,MAAM,YAAY,CAAC;AAQ5B,OAAO,EAAE,mBAAmB,EAAE,cAAc,EAAE,cAAc,EAAE,MAAM,kBAAkB,CAAC;AACvF,OAAO,EAAE,6BAA6B,EAAE,MAAM,iBAAiB,CAAC;AAChE,OAAO,EAAE,4BAA4B,EAAE,MAAM,gBAAgB,CAAC;AAC9D,OAAO,EAAE,4BAA4B,EAAE,eAAe,EAAE,MAAM,kBAAkB,CAAC;AAEjF,OAAO,EACL,6BAA6B,EAC7B,yBAAyB,EACzB,qBAAqB,GACtB,MAAM,iBAAiB,CAAC;AAEzB,OAAO,EACL,4BAA4B,EAC5B,wBAAwB,EACxB,oBAAoB,GACrB,MAAM,gBAAgB,CAAC;AAExB,OAAO,EACL,sBAAsB,EACtB,sBAAsB,EACtB,yBAAyB,EACzB,4BAA4B,EAC5B,eAAe,GAChB,MAAM,kBAAkB,CAAC;AAE1B;;GAEG;AACH,MAAM,UAAU,eAAe,CAC7B,YAAqB,EACrB,UAAyB,EACzB,YAA0B;IAE1B,MAAM,UAAU,GAAG,6BAA6B,CAAC,YAAY,EAAE,UAAU,CAAC,CAAC;IAC3E,MAAM,SAAS,GAAG,4BAA4B,CAC5C,YAAY,EACZ,UAAU,EACV,YAAY,CAAC,IAAI,KAAK,aAAa,CAAC,CAAC,CAAC,YAAY,CAAC,IAAI,CAAC,CAAC,CAAC,SAAS,CACpE,CAAC;IAEF,6BAA6B;IAC7B,OAAO;QACL,QAAQ,EAAE,YAAY;QACtB,UAAU,EAAE,UAAU,CAAC,UAAU;QACjC,SAAS,EAAE,SAAS,CAAC,UAAU;QAC/B,OAAO,EAAE,SAAS,CAAC,OAAO;KAC3B,CAAC;AACJ,CAAC;AAED;;GAEG;AACH,MAAM,UAAU,uBAAuB,CACrC,YAAqB,EACrB,UAAyB,EACzB,YAA0B,EAC1B,UAA8B,eAAe;IAE7C,MAAM,UAAU,GAAG,6BAA6B,CAAC,YAAY,EAAE,UAAU,CAAC,CAAC;IAC3E,MAAM,SAAS,GAAG,4BAA4B,CAC5C,YAAY,EACZ,UAAU,EACV,YAAY,CAAC,IAAI,KAAK,aAAa,CAAC,CAAC,CAAC,YAAY,CAAC,IAAI,CAAC,CAAC,CAAC,SAAS,CACpE,CAAC;IAEF,2CAA2C;IAC3C,MAAM,cAAc,GAAG,SAAS,CAAC,OAAO;SACrC,MAAM,CAAC,CAAC,CAAC,EAAE,EAAE,CAAC,CAAC,CAAC,YAAY,GAAG,CAAC,CAAC;SACjC,MAAM,CAAC,CAAC,GAAG,EAAE,CAAC,EAAE,EAAE,CAAC,GAAG,GAAG,CAAC,CAAC,YAAY,EAAE,CAAC,CAAC,CAAC;IAE/C,YAAY;IACZ,MAAM,WAAW,GAAG,4BAA4B,CAC9C,YAAY,EACZ,UAAU,EACV,UAAU,CAAC,UAAU,EACrB,cAAc,EACd,OAAO,CACR,CAAC;IAEF,OAAO;QACL,QAAQ,EAAE,YAAY;QACtB,UAAU,EAAE,UAAU,CAAC,UAAU;QACjC,SAAS,EAAE,SAAS,CAAC,UAAU;QAC/B,OAAO,EAAE,SAAS,CAAC,OAAO;QAC1B,WAAW;KACZ,CAAC;AACJ,CAAC;AAED;;GAEG;AACH,MAAM,UAAU,WAAW,CAAC,UAAyB;IACnD,MAAM,SAAS,GAAuB,EAAE,CAAC;IAEzC,SAAS,KAAK,CAAC,IAAa,EAAE,SAAkB;QAC9C,SAAS;QACT,IAAI,EAAE,CAAC,kBAAkB,CAAC,IAAI,CAAC,IAAI,EAAE,CAAC,iBAAiB,CAAC,IAAI,CAAC,EAAE,CAAC;YAC9D,MAAM,IAAI,GAAG,IAAI,CAAC,IAAI,EAAE,OAAO,CAAC,UAAU,CAAC,IAAI,aAAa,CAAC;YAC7D,IAAI,CAAC,OAAO,CAAC,OAAO,CAAC,CAAC,MAAM,EAAE,EAAE,CAAC,KAAK,CAAC,MAAM,EAAE,IAAI,CAAC,CAAC,CAAC;YACtD,OAAO;QACT,CAAC;QAED,WAAW;QACX,MAAM,YAAY,GAAG,mBAAmB,CAAC,IAAI,EAAE,UAAU,EAAE,SAAS,CAAC,CAAC;QACtE,IAAI,YAAY,EAAE,CAAC;YACjB,MAAM,MAAM,GAAG,eAAe,CAAC,IAAI,EAAE,UAAU,EAAE,YAAY,CAAC,CAAC;YAC/D,SAAS,CAAC,IAAI,CAAC,MAAM,CAAC,CAAC;QACzB,CAAC;QAED,iCAAiC;IACnC,CAAC;IAED,EAAE,CAAC,YAAY,CAAC,UAAU,EAAE,CAAC,IAAI,EAAE,EAAE,CAAC,KAAK,CAAC,IAAI,CAAC,CAAC,CAAC;IAEnD,QAAQ;IACR,MAAM,eAAe,GAAG,SAAS,CAAC,MAAM,CAAC,CAAC,GAAG,EAAE,CAAC,EAAE,EAAE,CAAC,GAAG,GAAG,CAAC,CAAC,UAAU,EAAE,CAAC,CAAC,CAAC;IAC5E,MAAM,cAAc,GAAG,SAAS,CAAC,MAAM,CAAC,CAAC,GAAG,EAAE,CAAC,EAAE,EAAE,CAAC,GAAG,GAAG,CAAC,CAAC,SAAS,EAAE,CAAC,CAAC,CAAC;IAC1E,MAAM,KAAK,GAAG,SAAS,CAAC,MAAM,IAAI,CAAC,CAAC;IAEpC,OAAO;QACL,QAAQ,EAAE,UAAU,CAAC,QAAQ;QAC7B,SAAS;QACT,OAAO,EAAE,cAAc,CAAC,UAAU,CAAC;QACnC,OAAO,EAAE,cAAc,CAAC,UAAU,CAAC;QACnC,eAAe;QACf,cAAc;QACd,iBAAiB,EAAE,eAAe,GAAG,KAAK;QAC1C,gBAAgB,EAAE,cAAc,GAAG,KAAK;KACzC,CAAC;AACJ,CAAC;AAED;;GAEG;AACH,MAAM,UAAU,kBAAkB,CAChC,UAAkB,EAClB,SAAiB;IAEjB,0BAA0B;IAC1B,IAAI,SAAS,IAAI,CAAC,IAAI,UAAU,IAAI,CAAC;QAAE,OAAO,KAAK,CAAC;IACpD,IAAI,SAAS,IAAI,EAAE,IAAI,UAAU,IAAI,EAAE;QAAE,OAAO,UAAU,CAAC;IAC3D,IAAI,SAAS,IAAI,EAAE,IAAI,UAAU,IAAI,EAAE;QAAE,OAAO,MAAM,CAAC;IACvD,OAAO,WAAW,CAAC;AACrB,CAAC;AAED;;GAEG;AACH,MAAM,UAAU,yBAAyB,CAAC,MAA0B;IAClE,MAAM,KAAK,GAAa;QACtB,UAAU,MAAM,CAAC,QAAQ,EAAE;QAC3B,EAAE;QACF,WAAW,MAAM,CAAC,SAAS,CAAC,MAAM,EAAE;QACpC,aAAa,MAAM,CAAC,iBAAiB,CAAC,OAAO,CAAC,CAAC,CAAC,EAAE;QAClD,aAAa,MAAM,CAAC,gBAAgB,CAAC,OAAO,CAAC,CAAC,CAAC,EAAE;QACjD,EAAE;KACH,CAAC;IAEF,gBAAgB;IAChB,MAAM,cAAc,GAAG,MAAM,CAAC,SAAS;SACpC,MAAM,CAAC,CAAC,CAAC,EAAE,EAAE,CAAC,CAAC,CAAC,UAAU,GAAG,EAAE,IAAI,CAAC,CAAC,SAAS,GAAG,EAAE,CAAC;SACpD,IAAI,CAAC,CAAC,CAAC,EAAE,CAAC,EAAE,EAAE,CAAC,CAAC,CAAC,SAAS,GAAG,CAAC,CAAC,SAAS,CAAC,CAAC;IAE7C,IAAI,cAAc,CAAC,MAAM,GAAG,CAAC,EAAE,CAAC;QAC9B,KAAK,CAAC,IAAI,CAAC,gBAAgB,CAAC,CAAC;QAC7B,KAAK,CAAC,IAAI,CAAC,EAAE,CAAC,CAAC;QACf,KAAK,MAAM,IAAI,IAAI,cAAc,EAAE,CAAC;YAClC,MAAM,KAAK,GAAG,kBAAkB,CAAC,IAAI,CAAC,UAAU,EAAE,IAAI,CAAC,SAAS,CAAC,CAAC;YAClE,MAAM,GAAG,GAAG,IAAI,CAAC,QAAQ,CAAC,QAAQ,CAAC;YACnC,KAAK,CAAC,IAAI,CACR,OAAO,IAAI,CAAC,QAAQ,CAAC,IAAI,OAAO,GAAG,CAAC,SAAS,MAAM;gBACjD,MAAM,IAAI,CAAC,UAAU,QAAQ,IAAI,CAAC,SAAS,KAAK,KAAK,GAAG,CAC3D,CAAC;QACJ,CAAC;IACH,CAAC;IAED,OAAO,KAAK,CAAC,IAAI,CAAC,IAAI,CAAC,CAAC;AAC1B,CAAC"}
|
package/dist/metrics/meta.d.ts
DELETED
|
@@ -1,90 +0,0 @@
|
|
|
1
|
-
/**
|
|
2
|
-
* 메타 차원 집계 (Meta Dimensions Aggregation)
|
|
3
|
-
*
|
|
4
|
-
* 5D 복잡도 → 3D 메타 차원 변환
|
|
5
|
-
*
|
|
6
|
-
* 햄 샌드위치 분해:
|
|
7
|
-
* - 🍞 Security: coupling + globalAccess + envDependency
|
|
8
|
-
* - 🧀 Context: cognitive + nestingDepth + callbackDepth
|
|
9
|
-
* - 🥓 Behavior: state + async + sideEffects
|
|
10
|
-
*/
|
|
11
|
-
import type { DimensionalComplexity, StateComplexity, AsyncComplexity, CouplingComplexity } from '../types.js';
|
|
12
|
-
import type { MetaDimensions, MetaWeights } from '../canonical/types.js';
|
|
13
|
-
/**
|
|
14
|
-
* 🍞 Security 집계 가중치
|
|
15
|
-
*/
|
|
16
|
-
interface SecurityAggregationWeights {
|
|
17
|
-
globalAccess: number;
|
|
18
|
-
envDependency: number;
|
|
19
|
-
implicitIO: number;
|
|
20
|
-
couplingBase: number;
|
|
21
|
-
}
|
|
22
|
-
/**
|
|
23
|
-
* 🧀 Context 집계 가중치
|
|
24
|
-
*/
|
|
25
|
-
interface ContextAggregationWeights {
|
|
26
|
-
cognitive: number;
|
|
27
|
-
nesting: number;
|
|
28
|
-
callbackDepth: number;
|
|
29
|
-
control: number;
|
|
30
|
-
}
|
|
31
|
-
/**
|
|
32
|
-
* 🥓 Behavior 집계 가중치
|
|
33
|
-
*/
|
|
34
|
-
interface BehaviorAggregationWeights {
|
|
35
|
-
stateMutations: number;
|
|
36
|
-
stateBranches: number;
|
|
37
|
-
asyncBoundaries: number;
|
|
38
|
-
sideEffects: number;
|
|
39
|
-
promiseChains: number;
|
|
40
|
-
}
|
|
41
|
-
/**
|
|
42
|
-
* 🍞 Security 점수 계산
|
|
43
|
-
*
|
|
44
|
-
* 구조 안정성: 외부 의존, 환경 결합, 암묵적 I/O
|
|
45
|
-
*/
|
|
46
|
-
export declare function calculateSecurity(coupling: CouplingComplexity, weights?: SecurityAggregationWeights): number;
|
|
47
|
-
/**
|
|
48
|
-
* 🧀 Context 점수 계산
|
|
49
|
-
*
|
|
50
|
-
* 맥락 밀도: 인지 복잡도, 중첩 깊이, 콜백 깊이
|
|
51
|
-
*/
|
|
52
|
-
export declare function calculateContext(control: number, nesting: number, async: AsyncComplexity, weights?: ContextAggregationWeights): number;
|
|
53
|
-
/**
|
|
54
|
-
* 🥓 Behavior 점수 계산
|
|
55
|
-
*
|
|
56
|
-
* 행동 보존성: 상태 변이, 비동기, 부작용
|
|
57
|
-
*/
|
|
58
|
-
export declare function calculateBehavior(state: StateComplexity, async: AsyncComplexity, coupling: CouplingComplexity, weights?: BehaviorAggregationWeights): number;
|
|
59
|
-
/**
|
|
60
|
-
* DimensionalComplexity → MetaDimensions 변환
|
|
61
|
-
*
|
|
62
|
-
* 5D 복잡도를 3D 메타 차원으로 집계
|
|
63
|
-
*/
|
|
64
|
-
export declare function toMetaDimensions(dimensional: DimensionalComplexity): MetaDimensions;
|
|
65
|
-
/**
|
|
66
|
-
* 메타 차원 가중 합계
|
|
67
|
-
*/
|
|
68
|
-
export declare function calculateMetaWeightedSum(meta: MetaDimensions, weights?: MetaWeights): number;
|
|
69
|
-
/**
|
|
70
|
-
* 메타 차원 정규화 (0-1 범위)
|
|
71
|
-
*/
|
|
72
|
-
export declare function normalizeMetaDimensions(meta: MetaDimensions, maxValues?: MetaDimensions): MetaDimensions;
|
|
73
|
-
/**
|
|
74
|
-
* 두 메타 차원 간의 유클리드 거리
|
|
75
|
-
*/
|
|
76
|
-
export declare function metaDistance(a: MetaDimensions, b: MetaDimensions): number;
|
|
77
|
-
/**
|
|
78
|
-
* 메타 차원 덧셈
|
|
79
|
-
*/
|
|
80
|
-
export declare function addMetaDimensions(a: MetaDimensions, b: MetaDimensions): MetaDimensions;
|
|
81
|
-
/**
|
|
82
|
-
* 메타 차원 차이
|
|
83
|
-
*/
|
|
84
|
-
export declare function subtractMetaDimensions(a: MetaDimensions, b: MetaDimensions): MetaDimensions;
|
|
85
|
-
/**
|
|
86
|
-
* 빈 메타 차원
|
|
87
|
-
*/
|
|
88
|
-
export declare const ZERO_META: MetaDimensions;
|
|
89
|
-
export {};
|
|
90
|
-
//# sourceMappingURL=meta.d.ts.map
|
|
@@ -1 +0,0 @@
|
|
|
1
|
-
{"version":3,"file":"meta.d.ts","sourceRoot":"","sources":["../../src/metrics/meta.ts"],"names":[],"mappings":"AAAA;;;;;;;;;GASG;AAEH,OAAO,KAAK,EACV,qBAAqB,EACrB,eAAe,EACf,eAAe,EACf,kBAAkB,EACnB,MAAM,aAAa,CAAC;AACrB,OAAO,KAAK,EAAE,cAAc,EAAE,WAAW,EAAE,MAAM,uBAAuB,CAAC;AAOzE;;GAEG;AACH,UAAU,0BAA0B;IAClC,YAAY,EAAE,MAAM,CAAC;IACrB,aAAa,EAAE,MAAM,CAAC;IACtB,UAAU,EAAE,MAAM,CAAC;IACnB,YAAY,EAAE,MAAM,CAAC;CACtB;AASD;;GAEG;AACH,UAAU,yBAAyB;IACjC,SAAS,EAAE,MAAM,CAAC;IAClB,OAAO,EAAE,MAAM,CAAC;IAChB,aAAa,EAAE,MAAM,CAAC;IACtB,OAAO,EAAE,MAAM,CAAC;CACjB;AASD;;GAEG;AACH,UAAU,0BAA0B;IAClC,cAAc,EAAE,MAAM,CAAC;IACvB,aAAa,EAAE,MAAM,CAAC;IACtB,eAAe,EAAE,MAAM,CAAC;IACxB,WAAW,EAAE,MAAM,CAAC;IACpB,aAAa,EAAE,MAAM,CAAC;CACvB;AAcD;;;;GAIG;AACH,wBAAgB,iBAAiB,CAC/B,QAAQ,EAAE,kBAAkB,EAC5B,OAAO,GAAE,0BAAqD,GAC7D,MAAM,CAUR;AAED;;;;GAIG;AACH,wBAAgB,gBAAgB,CAC9B,OAAO,EAAE,MAAM,EACf,OAAO,EAAE,MAAM,EACf,KAAK,EAAE,eAAe,EACtB,OAAO,GAAE,yBAAmD,GAC3D,MAAM,CAWR;AAED;;;;GAIG;AACH,wBAAgB,iBAAiB,CAC/B,KAAK,EAAE,eAAe,EACtB,KAAK,EAAE,eAAe,EACtB,QAAQ,EAAE,kBAAkB,EAC5B,OAAO,GAAE,0BAAqD,GAC7D,MAAM,CAYR;AAMD;;;;GAIG;AACH,wBAAgB,gBAAgB,CAC9B,WAAW,EAAE,qBAAqB,GACjC,cAAc,CAchB;AAED;;GAEG;AACH,wBAAgB,wBAAwB,CACtC,IAAI,EAAE,cAAc,EACpB,OAAO,GAAE,WAAkC,GAC1C,MAAM,CAMR;AAED;;GAEG;AACH,wBAAgB,uBAAuB,CACrC,IAAI,EAAE,cAAc,EACpB,SAAS,GAAE,cAA6D,GACvE,cAAc,CAMhB;AAED;;GAEG;AACH,wBAAgB,YAAY,CAAC,CAAC,EAAE,cAAc,EAAE,CAAC,EAAE,cAAc,GAAG,MAAM,CAKzE;AAED;;GAEG;AACH,wBAAgB,iBAAiB,CAC/B,CAAC,EAAE,cAAc,EACjB,CAAC,EAAE,cAAc,GAChB,cAAc,CAMhB;AAED;;GAEG;AACH,wBAAgB,sBAAsB,CACpC,CAAC,EAAE,cAAc,EACjB,CAAC,EAAE,cAAc,GAChB,cAAc,CAMhB;AAED;;GAEG;AACH,eAAO,MAAM,SAAS,EAAE,cAIvB,CAAC"}
|
package/dist/metrics/meta.js
DELETED
|
@@ -1,144 +0,0 @@
|
|
|
1
|
-
/**
|
|
2
|
-
* 메타 차원 집계 (Meta Dimensions Aggregation)
|
|
3
|
-
*
|
|
4
|
-
* 5D 복잡도 → 3D 메타 차원 변환
|
|
5
|
-
*
|
|
6
|
-
* 햄 샌드위치 분해:
|
|
7
|
-
* - 🍞 Security: coupling + globalAccess + envDependency
|
|
8
|
-
* - 🧀 Context: cognitive + nestingDepth + callbackDepth
|
|
9
|
-
* - 🥓 Behavior: state + async + sideEffects
|
|
10
|
-
*/
|
|
11
|
-
import { DEFAULT_META_WEIGHTS } from '../canonical/types.js';
|
|
12
|
-
const DEFAULT_SECURITY_WEIGHTS = {
|
|
13
|
-
globalAccess: 2.0,
|
|
14
|
-
envDependency: 1.5,
|
|
15
|
-
implicitIO: 1.0,
|
|
16
|
-
couplingBase: 0.5,
|
|
17
|
-
};
|
|
18
|
-
const DEFAULT_CONTEXT_WEIGHTS = {
|
|
19
|
-
cognitive: 1.0,
|
|
20
|
-
nesting: 1.5,
|
|
21
|
-
callbackDepth: 2.0,
|
|
22
|
-
control: 0.5,
|
|
23
|
-
};
|
|
24
|
-
const DEFAULT_BEHAVIOR_WEIGHTS = {
|
|
25
|
-
stateMutations: 2.0,
|
|
26
|
-
stateBranches: 1.5,
|
|
27
|
-
asyncBoundaries: 1.0,
|
|
28
|
-
sideEffects: 2.5,
|
|
29
|
-
promiseChains: 1.0,
|
|
30
|
-
};
|
|
31
|
-
// ─────────────────────────────────────────────────────────────────
|
|
32
|
-
// 개별 차원 계산
|
|
33
|
-
// ─────────────────────────────────────────────────────────────────
|
|
34
|
-
/**
|
|
35
|
-
* 🍞 Security 점수 계산
|
|
36
|
-
*
|
|
37
|
-
* 구조 안정성: 외부 의존, 환경 결합, 암묵적 I/O
|
|
38
|
-
*/
|
|
39
|
-
export function calculateSecurity(coupling, weights = DEFAULT_SECURITY_WEIGHTS) {
|
|
40
|
-
const globalScore = coupling.globalAccess.length * weights.globalAccess;
|
|
41
|
-
const envScore = coupling.envDependency.length * weights.envDependency;
|
|
42
|
-
const ioScore = coupling.implicitIO.length * weights.implicitIO;
|
|
43
|
-
const baseScore = (coupling.sideEffects.length +
|
|
44
|
-
coupling.closureCaptures.length) * weights.couplingBase;
|
|
45
|
-
return Math.round((globalScore + envScore + ioScore + baseScore) * 10) / 10;
|
|
46
|
-
}
|
|
47
|
-
/**
|
|
48
|
-
* 🧀 Context 점수 계산
|
|
49
|
-
*
|
|
50
|
-
* 맥락 밀도: 인지 복잡도, 중첩 깊이, 콜백 깊이
|
|
51
|
-
*/
|
|
52
|
-
export function calculateContext(control, nesting, async, weights = DEFAULT_CONTEXT_WEIGHTS) {
|
|
53
|
-
// cognitive ≈ control + nesting 기반 추정
|
|
54
|
-
const cognitiveEstimate = control + nesting;
|
|
55
|
-
const score = cognitiveEstimate * weights.cognitive +
|
|
56
|
-
nesting * weights.nesting +
|
|
57
|
-
async.callbackDepth * weights.callbackDepth +
|
|
58
|
-
control * weights.control;
|
|
59
|
-
return Math.round(score * 10) / 10;
|
|
60
|
-
}
|
|
61
|
-
/**
|
|
62
|
-
* 🥓 Behavior 점수 계산
|
|
63
|
-
*
|
|
64
|
-
* 행동 보존성: 상태 변이, 비동기, 부작용
|
|
65
|
-
*/
|
|
66
|
-
export function calculateBehavior(state, async, coupling, weights = DEFAULT_BEHAVIOR_WEIGHTS) {
|
|
67
|
-
const stateScore = state.stateMutations * weights.stateMutations +
|
|
68
|
-
state.stateBranches * weights.stateBranches;
|
|
69
|
-
const asyncScore = async.asyncBoundaries * weights.asyncBoundaries +
|
|
70
|
-
async.promiseChains * weights.promiseChains;
|
|
71
|
-
const sideEffectScore = coupling.sideEffects.length * weights.sideEffects;
|
|
72
|
-
return Math.round((stateScore + asyncScore + sideEffectScore) * 10) / 10;
|
|
73
|
-
}
|
|
74
|
-
// ─────────────────────────────────────────────────────────────────
|
|
75
|
-
// 통합 변환
|
|
76
|
-
// ─────────────────────────────────────────────────────────────────
|
|
77
|
-
/**
|
|
78
|
-
* DimensionalComplexity → MetaDimensions 변환
|
|
79
|
-
*
|
|
80
|
-
* 5D 복잡도를 3D 메타 차원으로 집계
|
|
81
|
-
*/
|
|
82
|
-
export function toMetaDimensions(dimensional) {
|
|
83
|
-
return {
|
|
84
|
-
security: calculateSecurity(dimensional.coupling),
|
|
85
|
-
context: calculateContext(dimensional.control, dimensional.nesting, dimensional.async),
|
|
86
|
-
behavior: calculateBehavior(dimensional.state, dimensional.async, dimensional.coupling),
|
|
87
|
-
};
|
|
88
|
-
}
|
|
89
|
-
/**
|
|
90
|
-
* 메타 차원 가중 합계
|
|
91
|
-
*/
|
|
92
|
-
export function calculateMetaWeightedSum(meta, weights = DEFAULT_META_WEIGHTS) {
|
|
93
|
-
return (meta.security * weights.security +
|
|
94
|
-
meta.context * weights.context +
|
|
95
|
-
meta.behavior * weights.behavior);
|
|
96
|
-
}
|
|
97
|
-
/**
|
|
98
|
-
* 메타 차원 정규화 (0-1 범위)
|
|
99
|
-
*/
|
|
100
|
-
export function normalizeMetaDimensions(meta, maxValues = { security: 50, context: 100, behavior: 50 }) {
|
|
101
|
-
return {
|
|
102
|
-
security: Math.min(meta.security / maxValues.security, 1),
|
|
103
|
-
context: Math.min(meta.context / maxValues.context, 1),
|
|
104
|
-
behavior: Math.min(meta.behavior / maxValues.behavior, 1),
|
|
105
|
-
};
|
|
106
|
-
}
|
|
107
|
-
/**
|
|
108
|
-
* 두 메타 차원 간의 유클리드 거리
|
|
109
|
-
*/
|
|
110
|
-
export function metaDistance(a, b) {
|
|
111
|
-
const dx = a.security - b.security;
|
|
112
|
-
const dy = a.context - b.context;
|
|
113
|
-
const dz = a.behavior - b.behavior;
|
|
114
|
-
return Math.sqrt(dx * dx + dy * dy + dz * dz);
|
|
115
|
-
}
|
|
116
|
-
/**
|
|
117
|
-
* 메타 차원 덧셈
|
|
118
|
-
*/
|
|
119
|
-
export function addMetaDimensions(a, b) {
|
|
120
|
-
return {
|
|
121
|
-
security: a.security + b.security,
|
|
122
|
-
context: a.context + b.context,
|
|
123
|
-
behavior: a.behavior + b.behavior,
|
|
124
|
-
};
|
|
125
|
-
}
|
|
126
|
-
/**
|
|
127
|
-
* 메타 차원 차이
|
|
128
|
-
*/
|
|
129
|
-
export function subtractMetaDimensions(a, b) {
|
|
130
|
-
return {
|
|
131
|
-
security: a.security - b.security,
|
|
132
|
-
context: a.context - b.context,
|
|
133
|
-
behavior: a.behavior - b.behavior,
|
|
134
|
-
};
|
|
135
|
-
}
|
|
136
|
-
/**
|
|
137
|
-
* 빈 메타 차원
|
|
138
|
-
*/
|
|
139
|
-
export const ZERO_META = {
|
|
140
|
-
security: 0,
|
|
141
|
-
context: 0,
|
|
142
|
-
behavior: 0,
|
|
143
|
-
};
|
|
144
|
-
//# sourceMappingURL=meta.js.map
|
package/dist/metrics/meta.js.map
DELETED
|
@@ -1 +0,0 @@
|
|
|
1
|
-
{"version":3,"file":"meta.js","sourceRoot":"","sources":["../../src/metrics/meta.ts"],"names":[],"mappings":"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"}
|
|
@@ -1,53 +0,0 @@
|
|
|
1
|
-
/**
|
|
2
|
-
* v0.0.3: Canonical Profiles and Deviation Analysis
|
|
3
|
-
*
|
|
4
|
-
* Φ: ModuleType → CanonicalProfile
|
|
5
|
-
* δ(v, Φ(τ)) = ‖v - Φ(τ)‖_M (Mahalanobis-like distance)
|
|
6
|
-
*/
|
|
7
|
-
import type { Vector5D, ModuleType, DeviationResult } from './types.js';
|
|
8
|
-
/**
|
|
9
|
-
* Canonical profile bounds for a module type
|
|
10
|
-
*/
|
|
11
|
-
export interface CanonicalBounds {
|
|
12
|
-
control: [number, number];
|
|
13
|
-
nesting: [number, number];
|
|
14
|
-
state: [number, number];
|
|
15
|
-
async: [number, number];
|
|
16
|
-
coupling: [number, number];
|
|
17
|
-
}
|
|
18
|
-
/**
|
|
19
|
-
* Canonical profiles per module type (based on v0.0.3 spec)
|
|
20
|
-
*/
|
|
21
|
-
export declare const CANONICAL_5D_PROFILES: Record<ModuleType, CanonicalBounds>;
|
|
22
|
-
/**
|
|
23
|
-
* Get canonical profile for module type
|
|
24
|
-
*/
|
|
25
|
-
export declare function getCanonicalProfile(moduleType: ModuleType): CanonicalBounds;
|
|
26
|
-
/**
|
|
27
|
-
* Calculate centroid of canonical profile
|
|
28
|
-
*/
|
|
29
|
-
export declare function getProfileCentroid(profile: CanonicalBounds): Vector5D;
|
|
30
|
-
/**
|
|
31
|
-
* Check if vector is within canonical bounds
|
|
32
|
-
*/
|
|
33
|
-
export declare function isWithinCanonicalBounds(vector: Vector5D, profile: CanonicalBounds): boolean;
|
|
34
|
-
/**
|
|
35
|
-
* Get dimensions that violate canonical bounds
|
|
36
|
-
*/
|
|
37
|
-
export declare function getViolationDimensions(vector: Vector5D, profile: CanonicalBounds): string[];
|
|
38
|
-
/**
|
|
39
|
-
* Check if vector is orphan (outside ALL canonical regions)
|
|
40
|
-
*/
|
|
41
|
-
export declare function isOrphan(vector: Vector5D): boolean;
|
|
42
|
-
/**
|
|
43
|
-
* Analyze deviation from canonical form
|
|
44
|
-
*/
|
|
45
|
-
export declare function analyzeDeviation(vector: Vector5D, moduleType?: ModuleType): DeviationResult;
|
|
46
|
-
/**
|
|
47
|
-
* Find the best fitting module type for a vector
|
|
48
|
-
*/
|
|
49
|
-
export declare function findBestModuleType(vector: Vector5D): {
|
|
50
|
-
type: ModuleType;
|
|
51
|
-
distance: number;
|
|
52
|
-
};
|
|
53
|
-
//# sourceMappingURL=canonical.d.ts.map
|
|
@@ -1 +0,0 @@
|
|
|
1
|
-
{"version":3,"file":"canonical.d.ts","sourceRoot":"","sources":["../../src/tensor/canonical.ts"],"names":[],"mappings":"AAAA;;;;;GAKG;AAEH,OAAO,KAAK,EAAE,QAAQ,EAAE,UAAU,EAAE,eAAe,EAAE,MAAM,YAAY,CAAC;AAQxE;;GAEG;AACH,MAAM,WAAW,eAAe;IAC9B,OAAO,EAAE,CAAC,MAAM,EAAE,MAAM,CAAC,CAAC;IAC1B,OAAO,EAAE,CAAC,MAAM,EAAE,MAAM,CAAC,CAAC;IAC1B,KAAK,EAAE,CAAC,MAAM,EAAE,MAAM,CAAC,CAAC;IACxB,KAAK,EAAE,CAAC,MAAM,EAAE,MAAM,CAAC,CAAC;IACxB,QAAQ,EAAE,CAAC,MAAM,EAAE,MAAM,CAAC,CAAC;CAC5B;AAED;;GAEG;AACH,eAAO,MAAM,qBAAqB,EAAE,MAAM,CAAC,UAAU,EAAE,eAAe,CAyDrE,CAAC;AAEF;;GAEG;AACH,wBAAgB,mBAAmB,CAAC,UAAU,EAAE,UAAU,GAAG,eAAe,CAE3E;AAED;;GAEG;AACH,wBAAgB,kBAAkB,CAAC,OAAO,EAAE,eAAe,GAAG,QAAQ,CAQrE;AAED;;GAEG;AACH,wBAAgB,uBAAuB,CACrC,MAAM,EAAE,QAAQ,EAChB,OAAO,EAAE,eAAe,GACvB,OAAO,CAQT;AAED;;GAEG;AACH,wBAAgB,sBAAsB,CACpC,MAAM,EAAE,QAAQ,EAChB,OAAO,EAAE,eAAe,GACvB,MAAM,EAAE,CAaV;AAED;;GAEG;AACH,wBAAgB,QAAQ,CAAC,MAAM,EAAE,QAAQ,GAAG,OAAO,CASlD;AAED;;GAEG;AACH,wBAAgB,gBAAgB,CAC9B,MAAM,EAAE,QAAQ,EAChB,UAAU,GAAE,UAAsB,GACjC,eAAe,CA2CjB;AAED;;GAEG;AACH,wBAAgB,kBAAkB,CAAC,MAAM,EAAE,QAAQ,GAAG;IAAE,IAAI,EAAE,UAAU,CAAC;IAAC,QAAQ,EAAE,MAAM,CAAA;CAAE,CAsB3F"}
|
package/dist/tensor/canonical.js
DELETED
|
@@ -1,192 +0,0 @@
|
|
|
1
|
-
/**
|
|
2
|
-
* v0.0.3: Canonical Profiles and Deviation Analysis
|
|
3
|
-
*
|
|
4
|
-
* Φ: ModuleType → CanonicalProfile
|
|
5
|
-
* δ(v, Φ(τ)) = ‖v - Φ(τ)‖_M (Mahalanobis-like distance)
|
|
6
|
-
*/
|
|
7
|
-
import { getInteractionMatrix, euclideanDistance, mahalanobisDistance, vectorToArray, } from './matrix.js';
|
|
8
|
-
/**
|
|
9
|
-
* Canonical profiles per module type (based on v0.0.3 spec)
|
|
10
|
-
*/
|
|
11
|
-
export const CANONICAL_5D_PROFILES = {
|
|
12
|
-
api: {
|
|
13
|
-
control: [0, 5], // low: thin controllers
|
|
14
|
-
nesting: [0, 3], // low: flat structure
|
|
15
|
-
state: [0, 2], // low: stateless preferred
|
|
16
|
-
async: [0, 3], // low: simple I/O
|
|
17
|
-
coupling: [0, 3], // low: explicit deps
|
|
18
|
-
},
|
|
19
|
-
lib: {
|
|
20
|
-
control: [0, 10], // medium: algorithmic complexity ok
|
|
21
|
-
nesting: [0, 5], // medium: some depth acceptable
|
|
22
|
-
state: [0, 2], // low: pure functions preferred
|
|
23
|
-
async: [0, 2], // low: sync preferred
|
|
24
|
-
coupling: [0, 2], // low: minimal deps
|
|
25
|
-
},
|
|
26
|
-
app: {
|
|
27
|
-
control: [0, 10], // medium: business logic
|
|
28
|
-
nesting: [0, 5], // medium: reasonable depth
|
|
29
|
-
state: [0, 8], // medium: stateful ok
|
|
30
|
-
async: [0, 8], // medium: async workflows
|
|
31
|
-
coupling: [0, 5], // low: controlled deps
|
|
32
|
-
},
|
|
33
|
-
web: {
|
|
34
|
-
control: [0, 8], // medium: UI logic
|
|
35
|
-
nesting: [0, 10], // higher: component hierarchy
|
|
36
|
-
state: [0, 5], // medium: UI state
|
|
37
|
-
async: [0, 5], // medium: data fetching
|
|
38
|
-
coupling: [0, 3], // low: component isolation
|
|
39
|
-
},
|
|
40
|
-
data: {
|
|
41
|
-
control: [0, 3], // low: simple getters/setters
|
|
42
|
-
nesting: [0, 2], // low: flat structure
|
|
43
|
-
state: [0, 10], // high: entity field definitions
|
|
44
|
-
async: [0, 2], // low: typically sync
|
|
45
|
-
coupling: [0, 5], // medium: ORM relationships
|
|
46
|
-
},
|
|
47
|
-
infra: {
|
|
48
|
-
control: [0, 5], // low: simple CRUD
|
|
49
|
-
nesting: [0, 3], // low: flat queries
|
|
50
|
-
state: [0, 2], // low: stateless data access
|
|
51
|
-
async: [0, 8], // high: DB I/O
|
|
52
|
-
coupling: [0, 8], // high: external dependencies
|
|
53
|
-
},
|
|
54
|
-
deploy: {
|
|
55
|
-
control: [0, 3], // low: simple scripts
|
|
56
|
-
nesting: [0, 2], // low: flat
|
|
57
|
-
state: [0, 2], // low: idempotent
|
|
58
|
-
async: [0, 2], // low: sequential
|
|
59
|
-
coupling: [0, 3], // low: explicit config
|
|
60
|
-
},
|
|
61
|
-
unknown: {
|
|
62
|
-
control: [0, 15], // permissive
|
|
63
|
-
nesting: [0, 10],
|
|
64
|
-
state: [0, 10],
|
|
65
|
-
async: [0, 10],
|
|
66
|
-
coupling: [0, 10],
|
|
67
|
-
},
|
|
68
|
-
};
|
|
69
|
-
/**
|
|
70
|
-
* Get canonical profile for module type
|
|
71
|
-
*/
|
|
72
|
-
export function getCanonicalProfile(moduleType) {
|
|
73
|
-
return CANONICAL_5D_PROFILES[moduleType] ?? CANONICAL_5D_PROFILES.unknown;
|
|
74
|
-
}
|
|
75
|
-
/**
|
|
76
|
-
* Calculate centroid of canonical profile
|
|
77
|
-
*/
|
|
78
|
-
export function getProfileCentroid(profile) {
|
|
79
|
-
return {
|
|
80
|
-
control: (profile.control[0] + profile.control[1]) / 2,
|
|
81
|
-
nesting: (profile.nesting[0] + profile.nesting[1]) / 2,
|
|
82
|
-
state: (profile.state[0] + profile.state[1]) / 2,
|
|
83
|
-
async: (profile.async[0] + profile.async[1]) / 2,
|
|
84
|
-
coupling: (profile.coupling[0] + profile.coupling[1]) / 2,
|
|
85
|
-
};
|
|
86
|
-
}
|
|
87
|
-
/**
|
|
88
|
-
* Check if vector is within canonical bounds
|
|
89
|
-
*/
|
|
90
|
-
export function isWithinCanonicalBounds(vector, profile) {
|
|
91
|
-
return (vector.control >= profile.control[0] && vector.control <= profile.control[1] &&
|
|
92
|
-
vector.nesting >= profile.nesting[0] && vector.nesting <= profile.nesting[1] &&
|
|
93
|
-
vector.state >= profile.state[0] && vector.state <= profile.state[1] &&
|
|
94
|
-
vector.async >= profile.async[0] && vector.async <= profile.async[1] &&
|
|
95
|
-
vector.coupling >= profile.coupling[0] && vector.coupling <= profile.coupling[1]);
|
|
96
|
-
}
|
|
97
|
-
/**
|
|
98
|
-
* Get dimensions that violate canonical bounds
|
|
99
|
-
*/
|
|
100
|
-
export function getViolationDimensions(vector, profile) {
|
|
101
|
-
const violations = [];
|
|
102
|
-
const dims = ['control', 'nesting', 'state', 'async', 'coupling'];
|
|
103
|
-
for (const dim of dims) {
|
|
104
|
-
const value = vector[dim];
|
|
105
|
-
const [min, max] = profile[dim];
|
|
106
|
-
if (value < min || value > max) {
|
|
107
|
-
violations.push(dim);
|
|
108
|
-
}
|
|
109
|
-
}
|
|
110
|
-
return violations;
|
|
111
|
-
}
|
|
112
|
-
/**
|
|
113
|
-
* Check if vector is orphan (outside ALL canonical regions)
|
|
114
|
-
*/
|
|
115
|
-
export function isOrphan(vector) {
|
|
116
|
-
for (const moduleType of Object.keys(CANONICAL_5D_PROFILES)) {
|
|
117
|
-
if (moduleType === 'unknown')
|
|
118
|
-
continue;
|
|
119
|
-
const profile = CANONICAL_5D_PROFILES[moduleType];
|
|
120
|
-
if (isWithinCanonicalBounds(vector, profile)) {
|
|
121
|
-
return false;
|
|
122
|
-
}
|
|
123
|
-
}
|
|
124
|
-
return true;
|
|
125
|
-
}
|
|
126
|
-
/**
|
|
127
|
-
* Analyze deviation from canonical form
|
|
128
|
-
*/
|
|
129
|
-
export function analyzeDeviation(vector, moduleType = 'unknown') {
|
|
130
|
-
const profile = getCanonicalProfile(moduleType);
|
|
131
|
-
const centroid = getProfileCentroid(profile);
|
|
132
|
-
const matrix = getInteractionMatrix(moduleType);
|
|
133
|
-
// Calculate distances
|
|
134
|
-
const eucDist = euclideanDistance(vector, centroid);
|
|
135
|
-
const mahDist = mahalanobisDistance(vector, centroid, matrix);
|
|
136
|
-
// Max dimension deviation
|
|
137
|
-
const arr = vectorToArray(vector);
|
|
138
|
-
const centArr = vectorToArray(centroid);
|
|
139
|
-
const maxDev = Math.max(...arr.map((v, i) => Math.abs(v - centArr[i])));
|
|
140
|
-
// Normalize to 0-1 scale (assuming max reasonable deviation is 50)
|
|
141
|
-
const normDev = Math.min(1.0, mahDist / 50.0);
|
|
142
|
-
// Check canonical bounds
|
|
143
|
-
const withinBounds = isWithinCanonicalBounds(vector, profile);
|
|
144
|
-
const violations = getViolationDimensions(vector, profile);
|
|
145
|
-
const orphan = isOrphan(vector);
|
|
146
|
-
let status;
|
|
147
|
-
if (withinBounds) {
|
|
148
|
-
status = 'canonical';
|
|
149
|
-
}
|
|
150
|
-
else if (orphan) {
|
|
151
|
-
status = 'orphan';
|
|
152
|
-
}
|
|
153
|
-
else {
|
|
154
|
-
status = 'deviated';
|
|
155
|
-
}
|
|
156
|
-
return {
|
|
157
|
-
euclideanDistance: Math.round(eucDist * 1000) / 1000,
|
|
158
|
-
mahalanobisDistance: Math.round(mahDist * 1000) / 1000,
|
|
159
|
-
maxDimensionDeviation: Math.round(maxDev * 1000) / 1000,
|
|
160
|
-
normalizedDeviation: Math.round(normDev * 1000) / 1000,
|
|
161
|
-
isCanonical: withinBounds,
|
|
162
|
-
isOrphan: orphan,
|
|
163
|
-
moduleType,
|
|
164
|
-
vector,
|
|
165
|
-
violationDimensions: violations,
|
|
166
|
-
status,
|
|
167
|
-
};
|
|
168
|
-
}
|
|
169
|
-
/**
|
|
170
|
-
* Find the best fitting module type for a vector
|
|
171
|
-
*/
|
|
172
|
-
export function findBestModuleType(vector) {
|
|
173
|
-
let bestType = 'unknown';
|
|
174
|
-
let bestDist = Infinity;
|
|
175
|
-
for (const moduleType of Object.keys(CANONICAL_5D_PROFILES)) {
|
|
176
|
-
if (moduleType === 'unknown')
|
|
177
|
-
continue;
|
|
178
|
-
const profile = CANONICAL_5D_PROFILES[moduleType];
|
|
179
|
-
const centroid = getProfileCentroid(profile);
|
|
180
|
-
const matrix = getInteractionMatrix(moduleType);
|
|
181
|
-
const dist = mahalanobisDistance(vector, centroid, matrix);
|
|
182
|
-
if (dist < bestDist) {
|
|
183
|
-
bestDist = dist;
|
|
184
|
-
bestType = moduleType;
|
|
185
|
-
}
|
|
186
|
-
}
|
|
187
|
-
return {
|
|
188
|
-
type: bestType,
|
|
189
|
-
distance: Math.round(bestDist * 1000) / 1000,
|
|
190
|
-
};
|
|
191
|
-
}
|
|
192
|
-
//# sourceMappingURL=canonical.js.map
|
|
@@ -1 +0,0 @@
|
|
|
1
|
-
{"version":3,"file":"canonical.js","sourceRoot":"","sources":["../../src/tensor/canonical.ts"],"names":[],"mappings":"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"}
|
package/dist/tensor/index.d.ts
DELETED
|
@@ -1,22 +0,0 @@
|
|
|
1
|
-
/**
|
|
2
|
-
* v0.0.3: Tensor-based Complexity Analysis
|
|
3
|
-
*
|
|
4
|
-
* Second-order tensor framework for multi-dimensional code complexity.
|
|
5
|
-
*
|
|
6
|
-
* Mathematical foundation:
|
|
7
|
-
* score = v^T M v + <v, w> + ε‖v‖²
|
|
8
|
-
*
|
|
9
|
-
* Features:
|
|
10
|
-
* - 5D complexity vector: [Control, Nesting, State, Async, Coupling]
|
|
11
|
-
* - Interaction matrix M for dimension cross-effects
|
|
12
|
-
* - ε-regularization for convergence guarantee
|
|
13
|
-
* - Module-type canonical profiles
|
|
14
|
-
* - Hodge decomposition of complexity space
|
|
15
|
-
*/
|
|
16
|
-
export type { Vector5D, ModuleType, Matrix5x5, TensorScore, ConvergenceStatus, ConvergenceAnalysis, HodgeDecomposition, ComplexityLevel, DeviationResult, RefactoringRecommendation, } from './types.js';
|
|
17
|
-
export { IDX_CONTROL, IDX_NESTING, IDX_STATE, IDX_ASYNC, IDX_COUPLING, } from './types.js';
|
|
18
|
-
export { DEFAULT_MATRIX, MODULE_MATRICES, getInteractionMatrix, vectorToArray, arrayToVector, zeroVector, vectorNorm, dotProduct, quadraticForm, isPositiveSemidefinite, euclideanDistance, mahalanobisDistance, } from './matrix.js';
|
|
19
|
-
export { DEFAULT_WEIGHTS, calculateTensorScore, calculateRawSum, calculateRawSumThreshold, convergenceScore, estimateLipschitz, analyzeConvergence, hodgeDecomposition, classifyComplexityLevel, recommendRefactoring, isSafe, needsReview, isViolation, } from './scoring.js';
|
|
20
|
-
export type { CanonicalBounds } from './canonical.js';
|
|
21
|
-
export { CANONICAL_5D_PROFILES, getCanonicalProfile, getProfileCentroid, isWithinCanonicalBounds, getViolationDimensions, isOrphan, analyzeDeviation, findBestModuleType, } from './canonical.js';
|
|
22
|
-
//# sourceMappingURL=index.d.ts.map
|