@noyrax/documentation-system-plugin 1.0.4-beta.2 → 1.0.4-beta.3
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/docs/index/symbols.jsonl +54 -16
- package/docs/modules/mcp__src__tools__drift.ts.md +6 -2
- package/docs/modules/mcp__src__tools__impact.ts.md +3 -0
- package/docs/modules/package.json.md +10 -11
- package/docs/modules/scripts__verify-adrs.js.md +1 -1
- package/docs/modules/src__core__scanner.ts.md +0 -1
- package/docs/modules/src__index__index.ts.md +18 -0
- package/docs/modules/src__parsers__json-yaml.ts.md +0 -1
- package/docs/modules/src__parsers__types.ts.md +18 -0
- package/docs/system/CHANGE_REPORT.md +7 -10
- package/docs/system/SYSTEM_METADATA.json +37 -0
- package/package.json +1 -2
- package/noyrax-5d-database-plugin-0.1.8.tgz +0 -0
- package/noyrax-documentation-system-plugin-1.0.4-beta.2.tgz +0 -0
- package/out/cache/ast-cache.js +0 -69
- package/out/cache/ast-cache.js.map +0 -1
- package/out/cache/dependencies-cache.js +0 -73
- package/out/cache/dependencies-cache.js.map +0 -1
- package/out/cache/output-cache.js +0 -69
- package/out/cache/output-cache.js.map +0 -1
- package/out/cache/signature-cache.js +0 -60
- package/out/cache/signature-cache.js.map +0 -1
- package/out/cli/generate-cli.js +0 -330
- package/out/cli/generate-cli.js.map +0 -1
- package/out/cli/scan-cli.js +0 -151
- package/out/cli/scan-cli.js.map +0 -1
- package/out/cli/validate-cli.js +0 -258
- package/out/cli/validate-cli.js.map +0 -1
- package/out/core/async.js +0 -38
- package/out/core/async.js.map +0 -1
- package/out/core/consolidation.js +0 -230
- package/out/core/consolidation.js.map +0 -1
- package/out/core/git.js +0 -48
- package/out/core/git.js.map +0 -1
- package/out/core/language-detection.js +0 -29
- package/out/core/language-detection.js.map +0 -1
- package/out/core/scanner.js +0 -179
- package/out/core/scanner.js.map +0 -1
- package/out/core/signature-formatter.js +0 -162
- package/out/core/signature-formatter.js.map +0 -1
- package/out/core/symbol-classifier.js +0 -96
- package/out/core/symbol-classifier.js.map +0 -1
- package/out/core/symbols.js +0 -24
- package/out/core/symbols.js.map +0 -1
- package/out/drift/index.js +0 -28
- package/out/drift/index.js.map +0 -1
- package/out/extension.js +0 -984
- package/out/extension.js.map +0 -1
- package/out/generator/adr-linker.js +0 -216
- package/out/generator/adr-linker.js.map +0 -1
- package/out/generator/change-report.js +0 -124
- package/out/generator/change-report.js.map +0 -1
- package/out/generator/dependency-graph.js +0 -98
- package/out/generator/dependency-graph.js.map +0 -1
- package/out/generator/index.js +0 -117
- package/out/generator/index.js.map +0 -1
- package/out/generator/module-doc.js +0 -438
- package/out/generator/module-doc.js.map +0 -1
- package/out/index/index.js +0 -147
- package/out/index/index.js.map +0 -1
- package/out/logging/index.js +0 -24
- package/out/logging/index.js.map +0 -1
- package/out/parsers/dependencies.js +0 -126
- package/out/parsers/dependencies.js.map +0 -1
- package/out/parsers/json-yaml.js +0 -121
- package/out/parsers/json-yaml.js.map +0 -1
- package/out/parsers/python.js +0 -160
- package/out/parsers/python.js.map +0 -1
- package/out/parsers/ts-js.js +0 -397
- package/out/parsers/ts-js.js.map +0 -1
- package/out/parsers/types.js +0 -3
- package/out/parsers/types.js.map +0 -1
- package/out/ui/commands-provider.js +0 -91
- package/out/ui/commands-provider.js.map +0 -1
- package/out/ui/status-bar.js +0 -85
- package/out/ui/status-bar.js.map +0 -1
- package/out/validator/index.js +0 -185
- package/out/validator/index.js.map +0 -1
- package/out/validator/signature-matching.js +0 -261
- package/out/validator/signature-matching.js.map +0 -1
- package/out/validator/status.js +0 -38
- package/out/validator/status.js.map +0 -1
|
@@ -1,162 +0,0 @@
|
|
|
1
|
-
"use strict";
|
|
2
|
-
Object.defineProperty(exports, "__esModule", { value: true });
|
|
3
|
-
exports.SignatureFormatter = void 0;
|
|
4
|
-
/**
|
|
5
|
-
* @public
|
|
6
|
-
* Zentrale Klasse für konsistente Signatur-Formatierung
|
|
7
|
-
*
|
|
8
|
-
* Diese Klasse stellt sicher, dass Generator und Validator identische
|
|
9
|
-
* Signatur-Darstellungen verwenden. Basierend auf ADR-004 und der
|
|
10
|
-
* Analyse aus agent-pre.plan.md (Abschnitt 2.6).
|
|
11
|
-
*/
|
|
12
|
-
class SignatureFormatter {
|
|
13
|
-
/**
|
|
14
|
-
* Formatiert ein Symbol für die Dokumentation
|
|
15
|
-
* Verwendet von: Generator (renderModuleDoc) und Validator (formatSignatureForDoc)
|
|
16
|
-
*/
|
|
17
|
-
static formatForDoc(symbol) {
|
|
18
|
-
switch (symbol.kind) {
|
|
19
|
-
case 'interface':
|
|
20
|
-
return SignatureFormatter.formatInterface(symbol);
|
|
21
|
-
case 'class':
|
|
22
|
-
return `class ${symbol.signature.name}`;
|
|
23
|
-
case 'type':
|
|
24
|
-
return `type ${symbol.signature.name}`;
|
|
25
|
-
case 'enum':
|
|
26
|
-
return `enum ${symbol.signature.name}`;
|
|
27
|
-
case 'function':
|
|
28
|
-
case 'method':
|
|
29
|
-
return SignatureFormatter.formatFunctionOrMethod(symbol);
|
|
30
|
-
case 'variable':
|
|
31
|
-
return SignatureFormatter.formatVariable(symbol);
|
|
32
|
-
case 'module':
|
|
33
|
-
return `module ${symbol.signature.name}`;
|
|
34
|
-
default:
|
|
35
|
-
return symbol.signature.name;
|
|
36
|
-
}
|
|
37
|
-
}
|
|
38
|
-
/**
|
|
39
|
-
* Formatiert ein Interface mit allen Properties
|
|
40
|
-
*/
|
|
41
|
-
static formatInterface(symbol) {
|
|
42
|
-
if (symbol.signature.parameters.length > 0) {
|
|
43
|
-
const props = symbol.signature.parameters
|
|
44
|
-
.map(p => SignatureFormatter.formatInterfaceProperty(p))
|
|
45
|
-
.join('\n');
|
|
46
|
-
return 'interface ' + symbol.signature.name + ' {\n' + props + '\n}';
|
|
47
|
-
}
|
|
48
|
-
return 'interface ' + symbol.signature.name + ' {}';
|
|
49
|
-
}
|
|
50
|
-
/**
|
|
51
|
-
* Formatiert eine einzelne Interface-Property
|
|
52
|
-
*/
|
|
53
|
-
static formatInterfaceProperty(p) {
|
|
54
|
-
const optionalMarker = p.optional ? '?' : '';
|
|
55
|
-
const typeAnnotation = p.type ? ': ' + p.type : '';
|
|
56
|
-
return ' ' + p.name + optionalMarker + typeAnnotation + ';';
|
|
57
|
-
}
|
|
58
|
-
/**
|
|
59
|
-
* Formatiert eine Funktion oder Methode mit Parametern und Rückgabetyp
|
|
60
|
-
*/
|
|
61
|
-
static formatFunctionOrMethod(symbol) {
|
|
62
|
-
const params = symbol.signature.parameters
|
|
63
|
-
.map(p => SignatureFormatter.formatFunctionParameter(p))
|
|
64
|
-
.join(', ');
|
|
65
|
-
const ret = symbol.signature.returnType ? ': ' + symbol.signature.returnType : '';
|
|
66
|
-
return symbol.signature.name + '(' + params + ')' + ret;
|
|
67
|
-
}
|
|
68
|
-
/**
|
|
69
|
-
* Formatiert einen einzelnen Funktions-Parameter
|
|
70
|
-
*/
|
|
71
|
-
static formatFunctionParameter(p) {
|
|
72
|
-
const optionalMarker = p.optional ? '?' : '';
|
|
73
|
-
const typeAnnotation = p.type ? ': ' + p.type : '';
|
|
74
|
-
const defaultMarker = p.hasDefault ? ' = …' : '';
|
|
75
|
-
return p.name + optionalMarker + typeAnnotation + defaultMarker;
|
|
76
|
-
}
|
|
77
|
-
/**
|
|
78
|
-
* Formatiert eine Variable mit Typ
|
|
79
|
-
*/
|
|
80
|
-
static formatVariable(symbol) {
|
|
81
|
-
const varType = symbol.signature.returnType ? `: ${symbol.signature.returnType}` : '';
|
|
82
|
-
return `${symbol.signature.name}${varType}`;
|
|
83
|
-
}
|
|
84
|
-
/**
|
|
85
|
-
* Normalisiert eine Signatur für Vergleiche
|
|
86
|
-
* Entfernt Whitespace-Unterschiede und normalisiert Formatierung
|
|
87
|
-
*/
|
|
88
|
-
static normalize(signature) {
|
|
89
|
-
// Using replace with /g flag (replaceAll requires ES2021+)
|
|
90
|
-
return signature
|
|
91
|
-
.replace(/\s+/g, ' ')
|
|
92
|
-
.replace(/\s*:\s*/g, ':')
|
|
93
|
-
.replace(/\s*;\s*/g, ';')
|
|
94
|
-
.replace(/\s*\{\s*/g, '{')
|
|
95
|
-
.replace(/\s*\}\s*/g, '}')
|
|
96
|
-
.replace(/\s*\|\s*/g, '|')
|
|
97
|
-
.replace(/\s*,\s*/g, ', ')
|
|
98
|
-
.trim();
|
|
99
|
-
}
|
|
100
|
-
/**
|
|
101
|
-
* Normalisiert eine SymbolSignature zu einem String für Hashing/Vergleiche
|
|
102
|
-
*/
|
|
103
|
-
static normalizeSignature(sig) {
|
|
104
|
-
const params = sig.parameters
|
|
105
|
-
.map(p => {
|
|
106
|
-
const optMarker = p.optional ? '?' : '';
|
|
107
|
-
const typeStr = p.type ?? '';
|
|
108
|
-
const defaultMarker = p.hasDefault ? '=…' : '';
|
|
109
|
-
return p.name + optMarker + ':' + typeStr + defaultMarker;
|
|
110
|
-
})
|
|
111
|
-
.sort((a, b) => a.localeCompare(b))
|
|
112
|
-
.join(',');
|
|
113
|
-
const retType = sig.returnType ?? '';
|
|
114
|
-
return sig.name + '(' + params + '):' + retType;
|
|
115
|
-
}
|
|
116
|
-
/**
|
|
117
|
-
* Vergleicht zwei Signaturen mit konfigurierbarer Toleranz
|
|
118
|
-
*/
|
|
119
|
-
static compare(expected, documented, options = {}) {
|
|
120
|
-
const expectedNorm = SignatureFormatter.normalize(expected);
|
|
121
|
-
const documentedNorm = SignatureFormatter.normalize(documented);
|
|
122
|
-
// Exakter Match
|
|
123
|
-
if (expectedNorm === documentedNorm) {
|
|
124
|
-
return { match: true, reason: 'exact' };
|
|
125
|
-
}
|
|
126
|
-
// Optional-Feld-Toleranz
|
|
127
|
-
if (options.tolerateOptionalFields && SignatureFormatter.isOptionalFieldCompatible(expectedNorm, documentedNorm)) {
|
|
128
|
-
return { match: true, reason: 'optional-fields' };
|
|
129
|
-
}
|
|
130
|
-
// Generics-Vereinfachung
|
|
131
|
-
if (options.tolerateGenericSimplification && SignatureFormatter.isGenericTypeSimplification(expectedNorm, documentedNorm)) {
|
|
132
|
-
return { match: true, reason: 'generic-simplification' };
|
|
133
|
-
}
|
|
134
|
-
return { match: false, reason: 'mismatch' };
|
|
135
|
-
}
|
|
136
|
-
/**
|
|
137
|
-
* Prüft ob Signaturen nur durch optionale Felder unterschiedlich sind
|
|
138
|
-
*/
|
|
139
|
-
static isOptionalFieldCompatible(expected, documented) {
|
|
140
|
-
// Using replace with /g flag (replaceAll requires ES2021+)
|
|
141
|
-
const removeOptionalMarkers = (s) => s.replace(/(\w+)\?:/g, '$1:');
|
|
142
|
-
return removeOptionalMarkers(expected) === removeOptionalMarkers(documented);
|
|
143
|
-
}
|
|
144
|
-
/**
|
|
145
|
-
* Prüft ob es sich um eine Generics-Vereinfachung handelt
|
|
146
|
-
*/
|
|
147
|
-
static isGenericTypeSimplification(expected, documented) {
|
|
148
|
-
// Using replace with /g flag (replaceAll requires ES2021+)
|
|
149
|
-
const simplifyTypes = (sig) => {
|
|
150
|
-
return sig
|
|
151
|
-
.replace(/\b[A-Z]\b\[\]/g, '{}')
|
|
152
|
-
.replace(/\b[A-Z]\b(?!\[\])/g, '{}')
|
|
153
|
-
.replace(/Promise<[^>]+>/g, 'Promise<{}>')
|
|
154
|
-
.replace(/Thenable<[^>]+>/g, 'Thenable<{}>')
|
|
155
|
-
.replace(/Map<([^,>]+),\s*[^>]+>/g, 'Map<$1, {}>')
|
|
156
|
-
.replace(/Array<([^>]+)>/g, '$1[]');
|
|
157
|
-
};
|
|
158
|
-
return simplifyTypes(expected) === simplifyTypes(documented);
|
|
159
|
-
}
|
|
160
|
-
}
|
|
161
|
-
exports.SignatureFormatter = SignatureFormatter;
|
|
162
|
-
//# sourceMappingURL=signature-formatter.js.map
|
|
@@ -1 +0,0 @@
|
|
|
1
|
-
{"version":3,"file":"signature-formatter.js","sourceRoot":"","sources":["../../src/core/signature-formatter.ts"],"names":[],"mappings":"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"}
|
|
@@ -1,96 +0,0 @@
|
|
|
1
|
-
"use strict";
|
|
2
|
-
Object.defineProperty(exports, "__esModule", { value: true });
|
|
3
|
-
exports.classifySymbol = void 0;
|
|
4
|
-
/**
|
|
5
|
-
* @public
|
|
6
|
-
* Zentrale, deterministische Klassifizierungs-API für Symbole.
|
|
7
|
-
*
|
|
8
|
-
* Arbeitet ausschließlich auf ParsedSymbol-Daten (kein I/O, keine
|
|
9
|
-
* Plugin-spezifischen Abhängigkeiten) und wird von Generator und
|
|
10
|
-
* Validator verwendet, um Doku-Tiefe und Prüfstrenge zu steuern.
|
|
11
|
-
*/
|
|
12
|
-
function classifySymbol(symbol) {
|
|
13
|
-
const visibility = classifyVisibility(symbol);
|
|
14
|
-
const role = classifyRole(symbol);
|
|
15
|
-
const priority = classifyPriority(role, visibility);
|
|
16
|
-
return { visibility, role, priority };
|
|
17
|
-
}
|
|
18
|
-
exports.classifySymbol = classifySymbol;
|
|
19
|
-
function classifyVisibility(symbol) {
|
|
20
|
-
// Wenn der Parser explizite Sichtbarkeit liefert, respektieren
|
|
21
|
-
// wir diese. Fallback ist „public“, um sich konservativ zu verhalten.
|
|
22
|
-
const v = symbol.signature.visibility;
|
|
23
|
-
if (v === 'private' || v === 'protected') {
|
|
24
|
-
return 'internal';
|
|
25
|
-
}
|
|
26
|
-
return 'public';
|
|
27
|
-
}
|
|
28
|
-
function classifyRole(symbol) {
|
|
29
|
-
const kind = symbol.kind;
|
|
30
|
-
const name = symbol.signature.name;
|
|
31
|
-
const fqn = symbol.fullyQualifiedName;
|
|
32
|
-
const filePath = normalizePath(symbol.filePath);
|
|
33
|
-
// Service-APIs: Funktionen/Methoden/Klassen mit typischen Suffixen
|
|
34
|
-
if (kind === 'function' || kind === 'method' || kind === 'class') {
|
|
35
|
-
if (hasAnySuffix(name, ['Api', 'API', 'Service', 'Manager', 'Controller'])) {
|
|
36
|
-
return 'service-api';
|
|
37
|
-
}
|
|
38
|
-
if (filePathIncludes(filePath, ['api', 'service', 'services', 'controller'])) {
|
|
39
|
-
return 'service-api';
|
|
40
|
-
}
|
|
41
|
-
}
|
|
42
|
-
// Domain-Modelle: Interfaces/Klassen mit typischen Namensmustern
|
|
43
|
-
if (kind === 'interface' || kind === 'class' || kind === 'type') {
|
|
44
|
-
if (hasAnySuffix(name, ['Entity', 'Model', 'Record', 'Result', 'Request', 'Response', 'Stats'])) {
|
|
45
|
-
return 'domain-model';
|
|
46
|
-
}
|
|
47
|
-
if (filePathIncludes(filePath, ['models', 'entities', 'domain'])) {
|
|
48
|
-
return 'domain-model';
|
|
49
|
-
}
|
|
50
|
-
}
|
|
51
|
-
// Konfigurationen: Typen mit „Config“/„Options“ oder in *config*-Pfaden
|
|
52
|
-
if (kind === 'interface' || kind === 'type' || kind === 'variable') {
|
|
53
|
-
if (hasAnySuffix(name, ['Config', 'Options', 'Settings'])) {
|
|
54
|
-
return 'config';
|
|
55
|
-
}
|
|
56
|
-
if (filePathIncludes(filePath, ['config', 'configs'])) {
|
|
57
|
-
return 'config';
|
|
58
|
-
}
|
|
59
|
-
}
|
|
60
|
-
// Infrastruktur / technische Typen (Cache, Validator, Repository, Query, Migration, Snapshot etc.)
|
|
61
|
-
if (hasAnySubstring(name, ['Cache', 'Validator', 'Repository', 'Query', 'Migration', 'Snapshot']) ||
|
|
62
|
-
filePathIncludes(filePath, ['cache', 'validator', 'validators', 'repository', 'repositories', 'migrations'])) {
|
|
63
|
-
return 'infra';
|
|
64
|
-
}
|
|
65
|
-
return 'other';
|
|
66
|
-
}
|
|
67
|
-
function classifyPriority(role, visibility) {
|
|
68
|
-
if (visibility === 'public') {
|
|
69
|
-
if (role === 'service-api' || role === 'domain-model') {
|
|
70
|
-
return 'high';
|
|
71
|
-
}
|
|
72
|
-
if (role === 'config') {
|
|
73
|
-
return 'normal';
|
|
74
|
-
}
|
|
75
|
-
}
|
|
76
|
-
// Interne oder rein infrastrukturelle Symbole sind niedriger priorisiert
|
|
77
|
-
if (role === 'infra' || visibility === 'internal') {
|
|
78
|
-
return 'low';
|
|
79
|
-
}
|
|
80
|
-
return 'normal';
|
|
81
|
-
}
|
|
82
|
-
function normalizePath(p) {
|
|
83
|
-
return p.replace(/\\/g, '/').toLowerCase();
|
|
84
|
-
}
|
|
85
|
-
function hasAnySuffix(name, suffixes) {
|
|
86
|
-
return suffixes.some(s => name.endsWith(s));
|
|
87
|
-
}
|
|
88
|
-
function hasAnySubstring(name, parts) {
|
|
89
|
-
const lower = name.toLowerCase();
|
|
90
|
-
return parts.some(p => lower.includes(p.toLowerCase()));
|
|
91
|
-
}
|
|
92
|
-
function filePathIncludes(path, segments) {
|
|
93
|
-
const lower = path.toLowerCase();
|
|
94
|
-
return segments.some(seg => lower.includes(`/${seg.toLowerCase()}/`) || lower.endsWith(`/${seg.toLowerCase()}.ts`));
|
|
95
|
-
}
|
|
96
|
-
//# sourceMappingURL=symbol-classifier.js.map
|
|
@@ -1 +0,0 @@
|
|
|
1
|
-
{"version":3,"file":"symbol-classifier.js","sourceRoot":"","sources":["../../src/core/symbol-classifier.ts"],"names":[],"mappings":"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"}
|
package/out/core/symbols.js
DELETED
|
@@ -1,24 +0,0 @@
|
|
|
1
|
-
"use strict";
|
|
2
|
-
Object.defineProperty(exports, "__esModule", { value: true });
|
|
3
|
-
exports.makeStableSymbolId = exports.computeSignatureHash = void 0;
|
|
4
|
-
const crypto_1 = require("crypto");
|
|
5
|
-
/**
|
|
6
|
-
* @public
|
|
7
|
-
* Compute hash for symbol signature
|
|
8
|
-
*/
|
|
9
|
-
function computeSignatureHash(symbol) {
|
|
10
|
-
const base = [
|
|
11
|
-
symbol.signature.name,
|
|
12
|
-
symbol.signature.parameters.map(p => `${p.name}:${p.type ?? ''}:${p.hasDefault ? '1' : '0'}`).join('|'),
|
|
13
|
-
symbol.signature.returnType ?? '',
|
|
14
|
-
symbol.signature.visibility ?? 'public',
|
|
15
|
-
].join('::');
|
|
16
|
-
return (0, crypto_1.createHash)('sha256').update(base).digest('hex').slice(0, 16);
|
|
17
|
-
}
|
|
18
|
-
exports.computeSignatureHash = computeSignatureHash;
|
|
19
|
-
function makeStableSymbolId(symbol) {
|
|
20
|
-
const hash = computeSignatureHash(symbol);
|
|
21
|
-
return `${symbol.language}://${symbol.filePath}#${symbol.fullyQualifiedName}(${hash})`;
|
|
22
|
-
}
|
|
23
|
-
exports.makeStableSymbolId = makeStableSymbolId;
|
|
24
|
-
//# sourceMappingURL=symbols.js.map
|
package/out/core/symbols.js.map
DELETED
|
@@ -1 +0,0 @@
|
|
|
1
|
-
{"version":3,"file":"symbols.js","sourceRoot":"","sources":["../../src/core/symbols.ts"],"names":[],"mappings":";;;AAAA,mCAAoC;AAGpC;;;GAGG;AACH,SAAgB,oBAAoB,CAAC,MAAoB;IACrD,MAAM,IAAI,GAAG;QACT,MAAM,CAAC,SAAS,CAAC,IAAI;QACrB,MAAM,CAAC,SAAS,CAAC,UAAU,CAAC,GAAG,CAAC,CAAC,CAAC,EAAE,CAAC,GAAG,CAAC,CAAC,IAAI,IAAI,CAAC,CAAC,IAAI,IAAI,EAAE,IAAI,CAAC,CAAC,UAAU,CAAC,CAAC,CAAC,GAAG,CAAC,CAAC,CAAC,GAAG,EAAE,CAAC,CAAC,IAAI,CAAC,GAAG,CAAC;QACvG,MAAM,CAAC,SAAS,CAAC,UAAU,IAAI,EAAE;QACjC,MAAM,CAAC,SAAS,CAAC,UAAU,IAAI,QAAQ;KAC1C,CAAC,IAAI,CAAC,IAAI,CAAC,CAAC;IACb,OAAO,IAAA,mBAAU,EAAC,QAAQ,CAAC,CAAC,MAAM,CAAC,IAAI,CAAC,CAAC,MAAM,CAAC,KAAK,CAAC,CAAC,KAAK,CAAC,CAAC,EAAE,EAAE,CAAC,CAAC;AACxE,CAAC;AARD,oDAQC;AAED,SAAgB,kBAAkB,CAAC,MAAoB;IACnD,MAAM,IAAI,GAAG,oBAAoB,CAAC,MAAM,CAAC,CAAC;IAC1C,OAAO,GAAG,MAAM,CAAC,QAAQ,MAAM,MAAM,CAAC,QAAQ,IAAI,MAAM,CAAC,kBAAkB,IAAI,IAAI,GAAG,CAAC;AAC3F,CAAC;AAHD,gDAGC"}
|
package/out/drift/index.js
DELETED
|
@@ -1,28 +0,0 @@
|
|
|
1
|
-
"use strict";
|
|
2
|
-
Object.defineProperty(exports, "__esModule", { value: true });
|
|
3
|
-
exports.detectDrift = exports.computeCacheEntries = void 0;
|
|
4
|
-
const symbols_1 = require("../core/symbols");
|
|
5
|
-
function computeCacheEntries(symbols) {
|
|
6
|
-
return symbols.map(s => {
|
|
7
|
-
const id = (0, symbols_1.makeStableSymbolId)(s);
|
|
8
|
-
const baseId = id.replace(/\([^)]*\)$/, ''); // ohne hash
|
|
9
|
-
const signatureHash = (0, symbols_1.computeSignatureHash)(s);
|
|
10
|
-
return { baseId, signatureHash };
|
|
11
|
-
}).sort((a, b) => a.baseId.localeCompare(b.baseId));
|
|
12
|
-
}
|
|
13
|
-
exports.computeCacheEntries = computeCacheEntries;
|
|
14
|
-
function detectDrift(previous, current) {
|
|
15
|
-
if (!previous)
|
|
16
|
-
return { staleSymbols: [] };
|
|
17
|
-
const prevMap = new Map(previous.entries.map(e => [e.baseId, e.signatureHash]));
|
|
18
|
-
const stale = [];
|
|
19
|
-
for (const now of current) {
|
|
20
|
-
const before = prevMap.get(now.baseId);
|
|
21
|
-
if (before && before !== now.signatureHash) {
|
|
22
|
-
stale.push(now.baseId);
|
|
23
|
-
}
|
|
24
|
-
}
|
|
25
|
-
return { staleSymbols: stale };
|
|
26
|
-
}
|
|
27
|
-
exports.detectDrift = detectDrift;
|
|
28
|
-
//# sourceMappingURL=index.js.map
|
package/out/drift/index.js.map
DELETED
|
@@ -1 +0,0 @@
|
|
|
1
|
-
{"version":3,"file":"index.js","sourceRoot":"","sources":["../../src/drift/index.ts"],"names":[],"mappings":";;;AACA,6CAA2E;AAO3E,SAAgB,mBAAmB,CAAC,OAAuB;IACvD,OAAO,OAAO,CAAC,GAAG,CAAC,CAAC,CAAC,EAAE;QACnB,MAAM,EAAE,GAAG,IAAA,4BAAkB,EAAC,CAAC,CAAC,CAAC;QACjC,MAAM,MAAM,GAAG,EAAE,CAAC,OAAO,CAAC,YAAY,EAAE,EAAE,CAAC,CAAC,CAAC,YAAY;QACzD,MAAM,aAAa,GAAG,IAAA,8BAAoB,EAAC,CAAC,CAAC,CAAC;QAC9C,OAAO,EAAE,MAAM,EAAE,aAAa,EAAE,CAAC;IACrC,CAAC,CAAC,CAAC,IAAI,CAAC,CAAC,CAAC,EAAE,CAAC,EAAE,EAAE,CAAC,CAAC,CAAC,MAAM,CAAC,aAAa,CAAC,CAAC,CAAC,MAAM,CAAC,CAAC,CAAC;AACxD,CAAC;AAPD,kDAOC;AAED,SAAgB,WAAW,CAAC,QAAmC,EAAE,OAAqB;IAClF,IAAI,CAAC,QAAQ;QAAE,OAAO,EAAE,YAAY,EAAE,EAAE,EAAE,CAAC;IAC3C,MAAM,OAAO,GAAG,IAAI,GAAG,CAAC,QAAQ,CAAC,OAAO,CAAC,GAAG,CAAC,CAAC,CAAC,EAAE,CAAC,CAAC,CAAC,CAAC,MAAM,EAAE,CAAC,CAAC,aAAa,CAAU,CAAC,CAAC,CAAC;IACzF,MAAM,KAAK,GAAa,EAAE,CAAC;IAC3B,KAAK,MAAM,GAAG,IAAI,OAAO,EAAE;QACvB,MAAM,MAAM,GAAG,OAAO,CAAC,GAAG,CAAC,GAAG,CAAC,MAAM,CAAC,CAAC;QACvC,IAAI,MAAM,IAAI,MAAM,KAAK,GAAG,CAAC,aAAa,EAAE;YACxC,KAAK,CAAC,IAAI,CAAC,GAAG,CAAC,MAAM,CAAC,CAAC;SAC1B;KACJ;IACD,OAAO,EAAE,YAAY,EAAE,KAAK,EAAE,CAAC;AACnC,CAAC;AAXD,kCAWC"}
|