@nahisaho/musubix-library-learner 2.1.1 → 2.2.0

This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
Files changed (81) hide show
  1. package/dist/EnhancedLibraryLearner.d.ts +159 -0
  2. package/dist/EnhancedLibraryLearner.d.ts.map +1 -0
  3. package/dist/EnhancedLibraryLearner.js +296 -0
  4. package/dist/EnhancedLibraryLearner.js.map +1 -0
  5. package/dist/domain/DomainAwareAbstractor.d.ts +226 -0
  6. package/dist/domain/DomainAwareAbstractor.d.ts.map +1 -0
  7. package/dist/domain/DomainAwareAbstractor.js +237 -0
  8. package/dist/domain/DomainAwareAbstractor.js.map +1 -0
  9. package/dist/domain/__tests__/DomainAwareAbstractor.test.d.ts +9 -0
  10. package/dist/domain/__tests__/DomainAwareAbstractor.test.d.ts.map +1 -0
  11. package/dist/domain/__tests__/DomainAwareAbstractor.test.js +217 -0
  12. package/dist/domain/__tests__/DomainAwareAbstractor.test.js.map +1 -0
  13. package/dist/domain/index.d.ts +7 -0
  14. package/dist/domain/index.d.ts.map +1 -0
  15. package/dist/domain/index.js +6 -0
  16. package/dist/domain/index.js.map +1 -0
  17. package/dist/hierarchy/HierarchyManager.d.ts +227 -0
  18. package/dist/hierarchy/HierarchyManager.d.ts.map +1 -0
  19. package/dist/hierarchy/HierarchyManager.js +342 -0
  20. package/dist/hierarchy/HierarchyManager.js.map +1 -0
  21. package/dist/hierarchy/index.d.ts +9 -0
  22. package/dist/hierarchy/index.d.ts.map +1 -0
  23. package/dist/hierarchy/index.js +8 -0
  24. package/dist/hierarchy/index.js.map +1 -0
  25. package/dist/index.d.ts +18 -0
  26. package/dist/index.d.ts.map +1 -1
  27. package/dist/index.js +13 -0
  28. package/dist/index.js.map +1 -1
  29. package/dist/library/IterativeCompressor.d.ts +196 -0
  30. package/dist/library/IterativeCompressor.d.ts.map +1 -0
  31. package/dist/library/IterativeCompressor.js +367 -0
  32. package/dist/library/IterativeCompressor.js.map +1 -0
  33. package/dist/library/PatternVersionManager.d.ts +177 -0
  34. package/dist/library/PatternVersionManager.d.ts.map +1 -0
  35. package/dist/library/PatternVersionManager.js +223 -0
  36. package/dist/library/PatternVersionManager.js.map +1 -0
  37. package/dist/library/__tests__/IterativeCompressor.test.d.ts +9 -0
  38. package/dist/library/__tests__/IterativeCompressor.test.d.ts.map +1 -0
  39. package/dist/library/__tests__/IterativeCompressor.test.js +200 -0
  40. package/dist/library/__tests__/IterativeCompressor.test.js.map +1 -0
  41. package/dist/library/__tests__/PatternVersionManager.test.d.ts +9 -0
  42. package/dist/library/__tests__/PatternVersionManager.test.d.ts.map +1 -0
  43. package/dist/library/__tests__/PatternVersionManager.test.js +218 -0
  44. package/dist/library/__tests__/PatternVersionManager.test.js.map +1 -0
  45. package/dist/library/index.d.ts +4 -0
  46. package/dist/library/index.d.ts.map +1 -1
  47. package/dist/library/index.js +4 -0
  48. package/dist/library/index.js.map +1 -1
  49. package/dist/metrics/MetricsExporter.d.ts +128 -0
  50. package/dist/metrics/MetricsExporter.d.ts.map +1 -0
  51. package/dist/metrics/MetricsExporter.js +157 -0
  52. package/dist/metrics/MetricsExporter.js.map +1 -0
  53. package/dist/metrics/index.d.ts +9 -0
  54. package/dist/metrics/index.d.ts.map +1 -0
  55. package/dist/metrics/index.js +8 -0
  56. package/dist/metrics/index.js.map +1 -0
  57. package/dist/rewrite/RewriteRuleSet.d.ts +136 -0
  58. package/dist/rewrite/RewriteRuleSet.d.ts.map +1 -0
  59. package/dist/rewrite/RewriteRuleSet.js +460 -0
  60. package/dist/rewrite/RewriteRuleSet.js.map +1 -0
  61. package/dist/rewrite/index.d.ts +9 -0
  62. package/dist/rewrite/index.d.ts.map +1 -0
  63. package/dist/rewrite/index.js +8 -0
  64. package/dist/rewrite/index.js.map +1 -0
  65. package/dist/search/TypeDirectedPruner.d.ts +138 -0
  66. package/dist/search/TypeDirectedPruner.d.ts.map +1 -0
  67. package/dist/search/TypeDirectedPruner.js +245 -0
  68. package/dist/search/TypeDirectedPruner.js.map +1 -0
  69. package/dist/search/index.d.ts +9 -0
  70. package/dist/search/index.d.ts.map +1 -0
  71. package/dist/search/index.js +8 -0
  72. package/dist/search/index.js.map +1 -0
  73. package/dist/updater/IncrementalUpdater.d.ts +152 -0
  74. package/dist/updater/IncrementalUpdater.d.ts.map +1 -0
  75. package/dist/updater/IncrementalUpdater.js +283 -0
  76. package/dist/updater/IncrementalUpdater.js.map +1 -0
  77. package/dist/updater/index.d.ts +7 -0
  78. package/dist/updater/index.d.ts.map +1 -0
  79. package/dist/updater/index.js +6 -0
  80. package/dist/updater/index.js.map +1 -0
  81. package/package.json +1 -1
@@ -0,0 +1,367 @@
1
+ /**
2
+ * IterativeCompressor - Iterative Pattern Compression
3
+ * @module @nahisaho/musubix-library-learner
4
+ * @see TSK-LL-103
5
+ * @see DES-LL-103
6
+ * @see REQ-LL-103 30%+ size reduction, 95% coverage retention
7
+ */
8
+ // ============================================================================
9
+ // Default Implementation
10
+ // ============================================================================
11
+ /**
12
+ * Default IterativeCompressor implementation
13
+ */
14
+ export class DefaultIterativeCompressor {
15
+ config;
16
+ statistics;
17
+ constructor(config) {
18
+ this.config = {
19
+ similarityThreshold: config?.similarityThreshold ?? 0.75,
20
+ minPatterns: config?.minPatterns ?? 100,
21
+ targetReduction: config?.targetReduction ?? 0.3,
22
+ maxIterations: config?.maxIterations ?? 10,
23
+ };
24
+ this.statistics = {
25
+ totalCompressions: 0,
26
+ averageReduction: 0,
27
+ lastCompressionTime: null,
28
+ };
29
+ }
30
+ /**
31
+ * Check if compression should be triggered
32
+ */
33
+ shouldCompress(patterns) {
34
+ return patterns.length >= this.config.minPatterns;
35
+ }
36
+ /**
37
+ * Compress patterns using iterative merging
38
+ */
39
+ async compress(patterns) {
40
+ if (patterns.length === 0) {
41
+ return {
42
+ originalCount: 0,
43
+ compressedCount: 0,
44
+ mergedGroups: [],
45
+ coverageRetained: 1.0,
46
+ compressionRatio: 0,
47
+ compressedPatterns: [],
48
+ };
49
+ }
50
+ const originalCount = patterns.length;
51
+ const mergedGroups = [];
52
+ let currentPatterns = [...patterns];
53
+ // Iterative compression until target reached or convergence
54
+ for (let iteration = 0; iteration < this.config.maxIterations; iteration++) {
55
+ const { merged, groups } = await this.compressIteration(currentPatterns);
56
+ if (groups.length === 0) {
57
+ // No more merges possible
58
+ break;
59
+ }
60
+ mergedGroups.push(...groups);
61
+ currentPatterns = merged;
62
+ // Check if target reduction achieved
63
+ const currentReduction = 1 - currentPatterns.length / originalCount;
64
+ if (currentReduction >= this.config.targetReduction) {
65
+ break;
66
+ }
67
+ }
68
+ // Calculate coverage (based on usage counts)
69
+ const originalUsage = patterns.reduce((sum, p) => sum + p.usageCount, 0);
70
+ const compressedUsage = currentPatterns.reduce((sum, p) => sum + p.usageCount, 0);
71
+ const coverageRetained = originalUsage > 0 ? compressedUsage / originalUsage : 1.0;
72
+ const compressionRatio = 1 - currentPatterns.length / originalCount;
73
+ // Update statistics
74
+ this.updateStatistics(compressionRatio);
75
+ return {
76
+ originalCount,
77
+ compressedCount: currentPatterns.length,
78
+ mergedGroups,
79
+ coverageRetained: Math.min(coverageRetained, 1.0),
80
+ compressionRatio,
81
+ compressedPatterns: currentPatterns,
82
+ };
83
+ }
84
+ /**
85
+ * Single compression iteration
86
+ */
87
+ async compressIteration(patterns) {
88
+ const clusters = this.findSimilarClusters(patterns);
89
+ const groups = [];
90
+ const merged = [];
91
+ const mergedIds = new Set();
92
+ // Merge each cluster
93
+ for (const cluster of clusters) {
94
+ if (cluster.length > 1) {
95
+ const mergedPattern = await this.mergePatterns(cluster);
96
+ merged.push(mergedPattern);
97
+ groups.push({
98
+ mergedId: mergedPattern.id,
99
+ sourceIds: cluster.map((p) => p.id),
100
+ similarityScore: this.calculateClusterSimilarity(cluster),
101
+ });
102
+ cluster.forEach((p) => mergedIds.add(p.id));
103
+ }
104
+ }
105
+ // Add patterns that weren't merged
106
+ for (const pattern of patterns) {
107
+ if (!mergedIds.has(pattern.id)) {
108
+ merged.push(pattern);
109
+ }
110
+ }
111
+ return { merged, groups };
112
+ }
113
+ /**
114
+ * Find clusters of similar patterns
115
+ */
116
+ findSimilarClusters(patterns) {
117
+ const clusters = [];
118
+ const used = new Set();
119
+ for (const pattern of patterns) {
120
+ if (used.has(pattern.id))
121
+ continue;
122
+ const cluster = [pattern];
123
+ used.add(pattern.id);
124
+ for (const other of patterns) {
125
+ if (used.has(other.id))
126
+ continue;
127
+ const similarity = this.calculateSimilarity(pattern, other);
128
+ if (similarity >= this.config.similarityThreshold) {
129
+ cluster.push(other);
130
+ used.add(other.id);
131
+ }
132
+ }
133
+ if (cluster.length > 1) {
134
+ clusters.push(cluster);
135
+ }
136
+ }
137
+ return clusters;
138
+ }
139
+ /**
140
+ * Calculate similarity between two patterns
141
+ */
142
+ calculateSimilarity(p1, p2) {
143
+ if (p1.id === p2.id)
144
+ return 1.0;
145
+ let similarity = 0;
146
+ let factors = 0;
147
+ // Name similarity (Jaccard on words)
148
+ const words1 = this.tokenizeName(p1.name);
149
+ const words2 = this.tokenizeName(p2.name);
150
+ const nameSimilarity = this.jaccardSimilarity(words1, words2);
151
+ similarity += nameSimilarity * 0.3;
152
+ factors += 0.3;
153
+ // Tag similarity
154
+ const tagSimilarity = this.jaccardSimilarity(new Set(p1.tags), new Set(p2.tags));
155
+ similarity += tagSimilarity * 0.2;
156
+ factors += 0.2;
157
+ // Level match bonus
158
+ if (p1.level === p2.level) {
159
+ similarity += 0.1;
160
+ }
161
+ factors += 0.1;
162
+ // AST structure similarity (simplified)
163
+ const astSimilarity = this.calculateASTSimilarity(p1, p2);
164
+ similarity += astSimilarity * 0.4;
165
+ factors += 0.4;
166
+ return factors > 0 ? similarity / factors : 0;
167
+ }
168
+ /**
169
+ * Tokenize pattern name into words
170
+ */
171
+ tokenizeName(name) {
172
+ // Split on camelCase, PascalCase, snake_case, kebab-case
173
+ const words = name
174
+ .replace(/([a-z])([A-Z])/g, '$1 $2')
175
+ .replace(/[_-]/g, ' ')
176
+ .toLowerCase()
177
+ .split(/\s+/)
178
+ .filter((w) => w.length > 0);
179
+ return new Set(words);
180
+ }
181
+ /**
182
+ * Jaccard similarity between two sets
183
+ */
184
+ jaccardSimilarity(set1, set2) {
185
+ const intersection = new Set([...set1].filter((x) => set2.has(x)));
186
+ const union = new Set([...set1, ...set2]);
187
+ if (union.size === 0)
188
+ return 0;
189
+ return intersection.size / union.size;
190
+ }
191
+ /**
192
+ * Calculate AST structure similarity
193
+ */
194
+ calculateASTSimilarity(p1, p2) {
195
+ const content1 = p1.content;
196
+ const content2 = p2.content;
197
+ if (!content1?.ast || !content2?.ast)
198
+ return 0;
199
+ // Simplified: compare AST type
200
+ if (content1.ast.type === content2.ast.type) {
201
+ return 0.8;
202
+ }
203
+ return 0.2;
204
+ }
205
+ /**
206
+ * Calculate average similarity within a cluster
207
+ */
208
+ calculateClusterSimilarity(cluster) {
209
+ if (cluster.length < 2)
210
+ return 1.0;
211
+ let totalSimilarity = 0;
212
+ let count = 0;
213
+ for (let i = 0; i < cluster.length; i++) {
214
+ for (let j = i + 1; j < cluster.length; j++) {
215
+ totalSimilarity += this.calculateSimilarity(cluster[i], cluster[j]);
216
+ count++;
217
+ }
218
+ }
219
+ return count > 0 ? totalSimilarity / count : 0;
220
+ }
221
+ /**
222
+ * Merge similar patterns into one
223
+ */
224
+ async mergePatterns(patterns) {
225
+ if (patterns.length === 0) {
226
+ throw new Error('Cannot merge empty pattern array');
227
+ }
228
+ if (patterns.length === 1) {
229
+ return patterns[0];
230
+ }
231
+ // Use the most confident pattern as base
232
+ const sortedByConfidence = [...patterns].sort((a, b) => b.confidence - a.confidence);
233
+ const base = sortedByConfidence[0];
234
+ // Aggregate usage counts
235
+ const totalUsage = patterns.reduce((sum, p) => sum + p.usageCount, 0);
236
+ // Combine tags
237
+ const allTags = new Set();
238
+ patterns.forEach((p) => p.tags.forEach((t) => allTags.add(t)));
239
+ // Create merged pattern
240
+ const merged = {
241
+ id: `MERGED-${Date.now()}-${Math.random().toString(36).substr(2, 9)}`,
242
+ name: this.generateMergedName(patterns),
243
+ level: base.level,
244
+ content: base.content,
245
+ usageCount: totalUsage,
246
+ confidence: base.confidence, // Keep highest confidence
247
+ createdAt: new Date(),
248
+ lastUsedAt: new Date(),
249
+ tags: Array.from(allTags),
250
+ };
251
+ return merged;
252
+ }
253
+ /**
254
+ * Generate a name for merged pattern
255
+ */
256
+ generateMergedName(patterns) {
257
+ // Find common prefix
258
+ const names = patterns.map((p) => p.name);
259
+ const prefix = this.findCommonPrefix(names);
260
+ if (prefix.length >= 3) {
261
+ return `${prefix}*`;
262
+ }
263
+ return `Merged(${patterns.length})`;
264
+ }
265
+ /**
266
+ * Find common prefix among strings
267
+ */
268
+ findCommonPrefix(strings) {
269
+ if (strings.length === 0)
270
+ return '';
271
+ if (strings.length === 1)
272
+ return strings[0];
273
+ let prefix = '';
274
+ const first = strings[0];
275
+ for (let i = 0; i < first.length; i++) {
276
+ const char = first[i];
277
+ if (strings.every((s) => s[i] === char)) {
278
+ prefix += char;
279
+ }
280
+ else {
281
+ break;
282
+ }
283
+ }
284
+ return prefix;
285
+ }
286
+ /**
287
+ * Update statistics after compression
288
+ */
289
+ updateStatistics(compressionRatio) {
290
+ const prevTotal = this.statistics.totalCompressions;
291
+ const prevAvg = this.statistics.averageReduction;
292
+ this.statistics.totalCompressions++;
293
+ this.statistics.averageReduction =
294
+ (prevAvg * prevTotal + compressionRatio) / (prevTotal + 1);
295
+ this.statistics.lastCompressionTime = new Date();
296
+ }
297
+ /**
298
+ * Get compression statistics
299
+ */
300
+ getStatistics() {
301
+ return { ...this.statistics };
302
+ }
303
+ /**
304
+ * Reset statistics
305
+ */
306
+ resetStatistics() {
307
+ this.statistics = {
308
+ totalCompressions: 0,
309
+ averageReduction: 0,
310
+ lastCompressionTime: null,
311
+ };
312
+ }
313
+ /**
314
+ * Get current configuration
315
+ */
316
+ getConfig() {
317
+ return { ...this.config };
318
+ }
319
+ /**
320
+ * Update configuration
321
+ */
322
+ updateConfig(config) {
323
+ this.config = { ...this.config, ...config };
324
+ }
325
+ /**
326
+ * Serialize to JSON
327
+ */
328
+ toJSON() {
329
+ return JSON.stringify({
330
+ config: this.config,
331
+ statistics: {
332
+ ...this.statistics,
333
+ lastCompressionTime: this.statistics.lastCompressionTime?.toISOString(),
334
+ },
335
+ });
336
+ }
337
+ /**
338
+ * Deserialize from JSON
339
+ */
340
+ fromJSON(json) {
341
+ const data = JSON.parse(json);
342
+ if (data.config) {
343
+ this.config = { ...this.config, ...data.config };
344
+ }
345
+ if (data.statistics) {
346
+ this.statistics = {
347
+ totalCompressions: data.statistics.totalCompressions ?? 0,
348
+ averageReduction: data.statistics.averageReduction ?? 0,
349
+ lastCompressionTime: data.statistics.lastCompressionTime
350
+ ? new Date(data.statistics.lastCompressionTime)
351
+ : null,
352
+ };
353
+ }
354
+ }
355
+ }
356
+ // ============================================================================
357
+ // Factory Function
358
+ // ============================================================================
359
+ /**
360
+ * Create an IterativeCompressor instance
361
+ * @param config - Optional configuration
362
+ * @returns IterativeCompressor instance
363
+ */
364
+ export function createIterativeCompressor(config) {
365
+ return new DefaultIterativeCompressor(config);
366
+ }
367
+ //# sourceMappingURL=IterativeCompressor.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"IterativeCompressor.js","sourceRoot":"","sources":["../../src/library/IterativeCompressor.ts"],"names":[],"mappings":"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"}
@@ -0,0 +1,177 @@
1
+ /**
2
+ * PatternVersionManager - Pattern Version History Management
3
+ * @module @nahisaho/musubix-library-learner
4
+ * @see TSK-LL-105
5
+ * @see DES-LL-105
6
+ * @see REQ-LL-105 Pattern versioning with rollback capability
7
+ */
8
+ import type { LearnedPattern } from '../types.js';
9
+ /**
10
+ * PatternVersionManager configuration
11
+ */
12
+ export interface PatternVersionManagerConfig {
13
+ /** Maximum versions to keep per pattern (default: 50) */
14
+ maxVersionsPerPattern: number;
15
+ /** Auto cleanup old versions when limit exceeded */
16
+ autoCleanup: boolean;
17
+ }
18
+ /**
19
+ * Version metadata
20
+ */
21
+ export interface VersionMetadata {
22
+ /** Reason for the change */
23
+ reason?: string;
24
+ /** Author of the change */
25
+ author?: string;
26
+ /** Additional metadata */
27
+ [key: string]: unknown;
28
+ }
29
+ /**
30
+ * Version history entry
31
+ */
32
+ export interface VersionEntry {
33
+ /** Version identifier */
34
+ versionId: string;
35
+ /** Version number (sequential) */
36
+ versionNumber: number;
37
+ /** Timestamp of version creation */
38
+ timestamp: Date;
39
+ /** Pattern snapshot */
40
+ snapshot: LearnedPattern;
41
+ /** Version metadata */
42
+ metadata?: VersionMetadata;
43
+ }
44
+ /**
45
+ * Version comparison result
46
+ */
47
+ export interface VersionDiff {
48
+ /** From version */
49
+ fromVersion: string;
50
+ /** To version */
51
+ toVersion: string;
52
+ /** List of changes */
53
+ changes: VersionChange[];
54
+ }
55
+ /**
56
+ * Individual change in a version diff
57
+ */
58
+ export interface VersionChange {
59
+ /** Field that changed */
60
+ field: string;
61
+ /** Old value */
62
+ oldValue: unknown;
63
+ /** New value */
64
+ newValue: unknown;
65
+ }
66
+ /**
67
+ * Version statistics
68
+ */
69
+ export interface VersionStatistics {
70
+ /** Total versions across all patterns */
71
+ totalVersions: number;
72
+ /** Total patterns with versions */
73
+ totalPatterns: number;
74
+ /** Average versions per pattern */
75
+ averageVersionsPerPattern: number;
76
+ }
77
+ /**
78
+ * PatternVersionManager interface
79
+ */
80
+ export interface PatternVersionManager {
81
+ /**
82
+ * Record a new version of a pattern
83
+ */
84
+ recordVersion(pattern: LearnedPattern, metadata?: VersionMetadata): string;
85
+ /**
86
+ * Get version history for a pattern
87
+ */
88
+ getHistory(patternId: string): VersionEntry[];
89
+ /**
90
+ * Get specific version
91
+ */
92
+ getVersion(patternId: string, versionId: string): LearnedPattern | undefined;
93
+ /**
94
+ * Get latest version
95
+ */
96
+ getLatestVersion(patternId: string): LearnedPattern | undefined;
97
+ /**
98
+ * Rollback to specific version
99
+ */
100
+ rollback(patternId: string, versionId: string): Promise<LearnedPattern>;
101
+ /**
102
+ * Compare two versions
103
+ */
104
+ compareVersions(patternId: string, versionId1: string, versionId2: string): VersionDiff;
105
+ /**
106
+ * Get statistics
107
+ */
108
+ getStatistics(): VersionStatistics;
109
+ /**
110
+ * Serialize to JSON
111
+ */
112
+ toJSON(): string;
113
+ /**
114
+ * Deserialize from JSON
115
+ */
116
+ fromJSON(json: string): void;
117
+ }
118
+ /**
119
+ * Default PatternVersionManager implementation
120
+ */
121
+ export declare class DefaultPatternVersionManager implements PatternVersionManager {
122
+ private config;
123
+ private versions;
124
+ private versionCounter;
125
+ constructor(config?: Partial<PatternVersionManagerConfig>);
126
+ /**
127
+ * Record a new version of a pattern
128
+ */
129
+ recordVersion(pattern: LearnedPattern, metadata?: VersionMetadata): string;
130
+ /**
131
+ * Get version history for a pattern
132
+ */
133
+ getHistory(patternId: string): VersionEntry[];
134
+ /**
135
+ * Get specific version
136
+ */
137
+ getVersion(patternId: string, versionId: string): LearnedPattern | undefined;
138
+ /**
139
+ * Get latest version
140
+ */
141
+ getLatestVersion(patternId: string): LearnedPattern | undefined;
142
+ /**
143
+ * Rollback to specific version
144
+ */
145
+ rollback(patternId: string, versionId: string): Promise<LearnedPattern>;
146
+ /**
147
+ * Compare two versions
148
+ */
149
+ compareVersions(patternId: string, versionId1: string, versionId2: string): VersionDiff;
150
+ /**
151
+ * Get statistics
152
+ */
153
+ getStatistics(): VersionStatistics;
154
+ /**
155
+ * Cleanup old versions for a pattern
156
+ */
157
+ private cleanupOldVersions;
158
+ /**
159
+ * Deep clone an object
160
+ */
161
+ private deepClone;
162
+ /**
163
+ * Serialize to JSON
164
+ */
165
+ toJSON(): string;
166
+ /**
167
+ * Deserialize from JSON
168
+ */
169
+ fromJSON(json: string): void;
170
+ }
171
+ /**
172
+ * Create a PatternVersionManager instance
173
+ * @param config - Optional configuration
174
+ * @returns PatternVersionManager instance
175
+ */
176
+ export declare function createPatternVersionManager(config?: Partial<PatternVersionManagerConfig>): PatternVersionManager;
177
+ //# sourceMappingURL=PatternVersionManager.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"PatternVersionManager.d.ts","sourceRoot":"","sources":["../../src/library/PatternVersionManager.ts"],"names":[],"mappings":"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"}