semantic-complexity 0.0.1-44fdea25 → 0.0.2-1895c257

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.
@@ -0,0 +1,144 @@
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
@@ -0,0 +1 @@
1
+ {"version":3,"file":"meta.js","sourceRoot":"","sources":["../../src/metrics/meta.ts"],"names":[],"mappings":"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"}
package/package.json CHANGED
@@ -1,6 +1,6 @@
1
1
  {
2
2
  "name": "semantic-complexity",
3
- "version": "0.0.1-44fdea25",
3
+ "version": "0.0.2-1895c257",
4
4
  "description": "Multi-dimensional code complexity analyzer",
5
5
  "type": "module",
6
6
  "main": "./dist/index.js",
@@ -25,6 +25,14 @@
25
25
  "./context": {
26
26
  "types": "./dist/context/index.d.ts",
27
27
  "import": "./dist/context/index.js"
28
+ },
29
+ "./canonical": {
30
+ "types": "./dist/canonical/index.d.ts",
31
+ "import": "./dist/canonical/index.js"
32
+ },
33
+ "./gates": {
34
+ "types": "./dist/gates/index.d.ts",
35
+ "import": "./dist/gates/index.js"
28
36
  }
29
37
  },
30
38
  "files": [