dpth 0.1.0 → 0.3.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.
package/dist/dpth.js ADDED
@@ -0,0 +1,557 @@
1
+ /**
2
+ * dpth.io — Unified Database API
3
+ *
4
+ * The main entry point. One line to get a persistent, intelligent database
5
+ * with entity resolution, temporal history, correlation detection, and
6
+ * optional vector search.
7
+ *
8
+ * Usage:
9
+ * import { dpth } from 'dpth/dpth';
10
+ * const db = await dpth('./myapp.db');
11
+ *
12
+ * // Entity resolution
13
+ * const john = db.entity.resolve('person', 'John Smith', 'stripe', 'cus_123');
14
+ * db.entity.resolve('person', 'jsmith', 'github', 'jsmith'); // auto-merged
15
+ *
16
+ * // Temporal history
17
+ * db.temporal.snapshot('dashboard', { revenue: 50000, users: 200 });
18
+ * db.temporal.history('dashboard'); // all snapshots over time
19
+ *
20
+ * // Correlation
21
+ * db.correlation.track('mrr', 50000);
22
+ * db.correlation.track('deploys', 12);
23
+ * db.correlation.find('mrr'); // what correlates with MRR?
24
+ *
25
+ * // Clean up
26
+ * await db.close();
27
+ */
28
+ import crypto from 'crypto';
29
+ import { MemoryAdapter } from './storage.js';
30
+ // ─── Dpth Class ──────────────────────────────────────
31
+ export class Dpth {
32
+ adapter;
33
+ _ready;
34
+ /** Entity resolution and management */
35
+ entity;
36
+ /** Temporal history and snapshots */
37
+ temporal;
38
+ /** Correlation detection across metrics */
39
+ correlation;
40
+ /** Vector search (if adapter supports it) */
41
+ vector;
42
+ constructor(options = {}) {
43
+ this.adapter = options.adapter || new MemoryAdapter();
44
+ this.entity = new EntityAPI(this.adapter);
45
+ this.temporal = new TemporalAPI(this.adapter);
46
+ this.correlation = new CorrelationAPI(this.adapter);
47
+ this.vector = new VectorAPI(this.adapter);
48
+ this._ready = this.init(options);
49
+ }
50
+ async init(options) {
51
+ // If path provided, dynamically load SQLite adapter
52
+ if (options.path) {
53
+ try {
54
+ const { SQLiteAdapter } = await import('./adapter-sqlite.js');
55
+ this.adapter = new SQLiteAdapter(options.path);
56
+ // Re-initialize APIs with the real adapter
57
+ this.entity = new EntityAPI(this.adapter);
58
+ this.temporal = new TemporalAPI(this.adapter);
59
+ this.correlation = new CorrelationAPI(this.adapter);
60
+ this.vector = new VectorAPI(this.adapter);
61
+ }
62
+ catch {
63
+ // SQLite not available, fall back to memory
64
+ console.warn('dpth: better-sqlite3 not installed, using in-memory storage');
65
+ }
66
+ }
67
+ }
68
+ /** Wait for initialization to complete */
69
+ async ready() {
70
+ await this._ready;
71
+ return this;
72
+ }
73
+ /** Close the database and flush any pending writes */
74
+ async close() {
75
+ await this._ready;
76
+ await this.adapter.close();
77
+ }
78
+ /** Get database stats */
79
+ async stats() {
80
+ await this._ready;
81
+ return {
82
+ entities: await this.adapter.count('entities'),
83
+ snapshots: await this.adapter.count('snapshots'),
84
+ metrics: await this.adapter.count('metrics'),
85
+ vectors: await this.adapter.count('vectors'),
86
+ };
87
+ }
88
+ }
89
+ // ─── Entity API ──────────────────────────────────────
90
+ class EntityAPI {
91
+ adapter;
92
+ constructor(adapter) {
93
+ this.adapter = adapter;
94
+ }
95
+ /** Resolve an entity — find existing match or create new */
96
+ async resolve(type, name, sourceId, externalId, options) {
97
+ const sKey = `${sourceId}:${externalId}`;
98
+ // Check source index first (exact source match)
99
+ const existingId = await this.adapter.get('source_index', sKey);
100
+ if (existingId) {
101
+ const entity = await this.adapter.get('entities', existingId);
102
+ if (entity) {
103
+ // Update last seen
104
+ const ref = entity.sources.find(s => s.sourceId === sourceId && s.externalId === externalId);
105
+ if (ref)
106
+ ref.lastSeen = new Date();
107
+ await this.adapter.put('entities', entity.id, entity);
108
+ return { entity, isNew: false, confidence: 1.0 };
109
+ }
110
+ }
111
+ // Try fuzzy matching against existing entities
112
+ const minConfidence = options?.minConfidence ?? 0.7;
113
+ const match = await this.findBestMatch(type, name, options?.email, options?.aliases);
114
+ if (match && match.score >= minConfidence) {
115
+ const entity = match.entity;
116
+ // Merge: add source ref
117
+ entity.sources.push({
118
+ sourceId,
119
+ externalId,
120
+ confidence: match.score,
121
+ lastSeen: new Date(),
122
+ });
123
+ // Add alias
124
+ if (!entity.aliases.includes(name) && entity.name !== name) {
125
+ entity.aliases.push(name);
126
+ }
127
+ // Merge attributes
128
+ if (options?.attributes) {
129
+ const now = new Date();
130
+ for (const [key, value] of Object.entries(options.attributes)) {
131
+ const existing = entity.attributes[key];
132
+ if (existing) {
133
+ const current = existing.history.find(h => h.validTo === null);
134
+ if (current)
135
+ current.validTo = now;
136
+ existing.history.push({ value, validFrom: now, validTo: null, source: sourceId });
137
+ existing.current = value;
138
+ }
139
+ else {
140
+ entity.attributes[key] = {
141
+ current: value,
142
+ history: [{ value, validFrom: now, validTo: null, source: sourceId }],
143
+ };
144
+ }
145
+ }
146
+ }
147
+ entity.updatedAt = new Date();
148
+ await this.adapter.put('entities', entity.id, entity);
149
+ await this.adapter.put('source_index', sKey, entity.id);
150
+ return { entity, isNew: false, confidence: match.score };
151
+ }
152
+ // Create new entity
153
+ const id = `ent_${crypto.randomBytes(12).toString('hex')}`;
154
+ const now = new Date();
155
+ const attributes = {};
156
+ if (options?.attributes) {
157
+ for (const [key, value] of Object.entries(options.attributes)) {
158
+ attributes[key] = {
159
+ current: value,
160
+ history: [{ value, validFrom: now, validTo: null, source: sourceId }],
161
+ };
162
+ }
163
+ }
164
+ if (options?.email) {
165
+ attributes['email'] = {
166
+ current: options.email,
167
+ history: [{ value: options.email, validFrom: now, validTo: null, source: sourceId }],
168
+ };
169
+ }
170
+ const entity = {
171
+ id,
172
+ type,
173
+ name,
174
+ aliases: options?.aliases || [],
175
+ sources: [{ sourceId, externalId, confidence: 1.0, lastSeen: now }],
176
+ attributes,
177
+ createdAt: now,
178
+ updatedAt: now,
179
+ };
180
+ await this.adapter.put('entities', id, entity);
181
+ await this.adapter.put('source_index', sKey, id);
182
+ return { entity, isNew: true, confidence: 1.0 };
183
+ }
184
+ /** Get entity by ID */
185
+ async get(id) {
186
+ return await this.adapter.get('entities', id);
187
+ }
188
+ /** Find entity by source reference */
189
+ async findBySource(sourceId, externalId) {
190
+ const id = await this.adapter.get('source_index', `${sourceId}:${externalId}`);
191
+ return id ? await this.get(id) : undefined;
192
+ }
193
+ /** Get all entities of a type */
194
+ async list(type) {
195
+ const all = await this.adapter.query({
196
+ collection: 'entities',
197
+ ...(type ? { where: { type } } : {}),
198
+ });
199
+ return all;
200
+ }
201
+ /** Update an entity attribute (temporal) */
202
+ async setAttribute(entityId, key, value, sourceId) {
203
+ const entity = await this.get(entityId);
204
+ if (!entity)
205
+ return undefined;
206
+ const now = new Date();
207
+ const existing = entity.attributes[key];
208
+ if (existing) {
209
+ const current = existing.history.find(h => h.validTo === null);
210
+ if (current)
211
+ current.validTo = now;
212
+ existing.history.push({ value, validFrom: now, validTo: null, source: sourceId });
213
+ existing.current = value;
214
+ }
215
+ else {
216
+ entity.attributes[key] = {
217
+ current: value,
218
+ history: [{ value, validFrom: now, validTo: null, source: sourceId }],
219
+ };
220
+ }
221
+ entity.updatedAt = now;
222
+ await this.adapter.put('entities', entityId, entity);
223
+ return entity;
224
+ }
225
+ /** Merge two entities */
226
+ async merge(keepId, mergeId) {
227
+ const keep = await this.get(keepId);
228
+ const merge = await this.get(mergeId);
229
+ if (!keep || !merge)
230
+ return undefined;
231
+ // Merge sources
232
+ for (const source of merge.sources) {
233
+ if (!keep.sources.find(s => s.sourceId === source.sourceId && s.externalId === source.externalId)) {
234
+ keep.sources.push(source);
235
+ }
236
+ await this.adapter.put('source_index', `${source.sourceId}:${source.externalId}`, keepId);
237
+ }
238
+ // Merge aliases
239
+ for (const alias of [...merge.aliases, merge.name]) {
240
+ if (!keep.aliases.includes(alias) && keep.name !== alias) {
241
+ keep.aliases.push(alias);
242
+ }
243
+ }
244
+ // Merge attributes
245
+ for (const [key, value] of Object.entries(merge.attributes)) {
246
+ if (!keep.attributes[key]) {
247
+ keep.attributes[key] = value;
248
+ }
249
+ else {
250
+ keep.attributes[key].history.push(...value.history);
251
+ keep.attributes[key].history.sort((a, b) => new Date(a.validFrom).getTime() - new Date(b.validFrom).getTime());
252
+ }
253
+ }
254
+ keep.updatedAt = new Date();
255
+ await this.adapter.put('entities', keepId, keep);
256
+ await this.adapter.delete('entities', mergeId);
257
+ return keep;
258
+ }
259
+ /** Count entities */
260
+ async count(type) {
261
+ if (!type)
262
+ return this.adapter.count('entities');
263
+ const all = await this.list(type);
264
+ return all.length;
265
+ }
266
+ // ── Private matching ──
267
+ async findBestMatch(type, name, email, aliases) {
268
+ const candidates = await this.adapter.query({
269
+ collection: 'entities',
270
+ where: { type },
271
+ });
272
+ let best = null;
273
+ const searchTerms = [name.toLowerCase(), ...(aliases || []).map(a => a.toLowerCase())];
274
+ if (email)
275
+ searchTerms.push(email.toLowerCase());
276
+ for (const entity of candidates) {
277
+ let score = 0;
278
+ // Name matching
279
+ const entityName = entity.name.toLowerCase();
280
+ if (entityName === name.toLowerCase()) {
281
+ score += 0.8;
282
+ }
283
+ else if (this.fuzzyScore(entityName, name.toLowerCase()) > 0.85) {
284
+ score += 0.5;
285
+ }
286
+ else if (this.fuzzyScore(entityName, name.toLowerCase()) > 0.7) {
287
+ score += 0.3;
288
+ }
289
+ // Email matching
290
+ const entityEmail = entity.attributes['email']?.current;
291
+ if (email && entityEmail && entityEmail.toLowerCase() === email.toLowerCase()) {
292
+ score += 0.9;
293
+ }
294
+ // Alias matching
295
+ for (const alias of entity.aliases) {
296
+ if (searchTerms.includes(alias.toLowerCase())) {
297
+ score += 0.3;
298
+ break;
299
+ }
300
+ }
301
+ score = Math.min(1, score);
302
+ if (score > 0.3 && (!best || score > best.score)) {
303
+ best = { entity, score };
304
+ }
305
+ }
306
+ return best;
307
+ }
308
+ fuzzyScore(a, b) {
309
+ if (a === b)
310
+ return 1;
311
+ if (!a.length || !b.length)
312
+ return 0;
313
+ const matrix = [];
314
+ for (let i = 0; i <= a.length; i++)
315
+ matrix[i] = [i];
316
+ for (let j = 0; j <= b.length; j++)
317
+ matrix[0][j] = j;
318
+ for (let i = 1; i <= a.length; i++) {
319
+ for (let j = 1; j <= b.length; j++) {
320
+ const cost = a[i - 1] === b[j - 1] ? 0 : 1;
321
+ matrix[i][j] = Math.min(matrix[i - 1][j] + 1, matrix[i][j - 1] + 1, matrix[i - 1][j - 1] + cost);
322
+ }
323
+ }
324
+ return 1 - matrix[a.length][b.length] / Math.max(a.length, b.length);
325
+ }
326
+ }
327
+ // ─── Temporal API ────────────────────────────────────
328
+ class TemporalAPI {
329
+ adapter;
330
+ constructor(adapter) {
331
+ this.adapter = adapter;
332
+ }
333
+ /** Take a snapshot of any data */
334
+ async snapshot(key, data, source = 'local') {
335
+ const record = {
336
+ id: `snap_${Date.now()}_${crypto.randomBytes(4).toString('hex')}`,
337
+ key,
338
+ timestamp: new Date(),
339
+ data,
340
+ source,
341
+ };
342
+ // Store snapshot
343
+ await this.adapter.put('snapshots', record.id, record);
344
+ // Maintain index: key → [snapshot_ids]
345
+ const index = await this.adapter.get('snapshot_index', key) || [];
346
+ index.push(record.id);
347
+ await this.adapter.put('snapshot_index', key, index);
348
+ return record;
349
+ }
350
+ /** Get all snapshots for a key (ordered by time) */
351
+ async history(key) {
352
+ const index = await this.adapter.get('snapshot_index', key) || [];
353
+ const records = [];
354
+ for (const id of index) {
355
+ const record = await this.adapter.get('snapshots', id);
356
+ if (record)
357
+ records.push(record);
358
+ }
359
+ return records.sort((a, b) => new Date(a.timestamp).getTime() - new Date(b.timestamp).getTime());
360
+ }
361
+ /** Get the latest snapshot for a key */
362
+ async latest(key) {
363
+ const all = await this.history(key);
364
+ return all.length > 0 ? all[all.length - 1] : undefined;
365
+ }
366
+ /** Get snapshot closest to a specific time */
367
+ async at(key, time) {
368
+ const all = await this.history(key);
369
+ if (!all.length)
370
+ return undefined;
371
+ const targetMs = time.getTime();
372
+ let closest;
373
+ let minDiff = Infinity;
374
+ for (const snap of all) {
375
+ const diff = Math.abs(new Date(snap.timestamp).getTime() - targetMs);
376
+ if (diff < minDiff) {
377
+ minDiff = diff;
378
+ closest = snap;
379
+ }
380
+ }
381
+ return closest;
382
+ }
383
+ /** Diff two snapshots */
384
+ diff(older, newer) {
385
+ const olderKeys = new Set(Object.keys(older.data));
386
+ const newerKeys = new Set(Object.keys(newer.data));
387
+ const added = [];
388
+ const removed = [];
389
+ const changed = [];
390
+ for (const key of newerKeys) {
391
+ if (!olderKeys.has(key)) {
392
+ added.push(key);
393
+ }
394
+ else if (JSON.stringify(older.data[key]) !== JSON.stringify(newer.data[key])) {
395
+ changed.push({ key, from: older.data[key], to: newer.data[key] });
396
+ }
397
+ }
398
+ for (const key of olderKeys) {
399
+ if (!newerKeys.has(key))
400
+ removed.push(key);
401
+ }
402
+ return { added, removed, changed };
403
+ }
404
+ }
405
+ // ─── Correlation API ─────────────────────────────────
406
+ class CorrelationAPI {
407
+ adapter;
408
+ constructor(adapter) {
409
+ this.adapter = adapter;
410
+ }
411
+ /** Track a metric value */
412
+ async track(metricId, value, options) {
413
+ let metric = await this.adapter.get('metrics', metricId);
414
+ const point = {
415
+ timestamp: new Date(),
416
+ value,
417
+ source: options?.source || 'local',
418
+ confidence: 1.0,
419
+ };
420
+ if (!metric) {
421
+ metric = {
422
+ id: metricId,
423
+ entityId: options?.entityId || metricId,
424
+ name: options?.name || metricId,
425
+ unit: options?.unit,
426
+ points: [point],
427
+ aggregation: 'last',
428
+ };
429
+ }
430
+ else {
431
+ metric.points.push(point);
432
+ metric.points.sort((a, b) => new Date(a.timestamp).getTime() - new Date(b.timestamp).getTime());
433
+ }
434
+ await this.adapter.put('metrics', metricId, metric);
435
+ }
436
+ /** Find correlations for a metric */
437
+ async find(metricId, options) {
438
+ const target = await this.adapter.get('metrics', metricId);
439
+ if (!target || target.points.length < 10)
440
+ return [];
441
+ const allMetrics = await this.adapter.query({ collection: 'metrics' });
442
+ const minCorr = options?.minCorrelation ?? 0.5;
443
+ const maxLag = options?.maxLagDays ?? 14;
444
+ const results = [];
445
+ for (const other of allMetrics) {
446
+ if (other.id === metricId || other.points.length < 10)
447
+ continue;
448
+ for (let lag = 0; lag <= maxLag; lag++) {
449
+ const r = this.pearson(target, other, lag);
450
+ if (r !== null && Math.abs(r.correlation) >= minCorr) {
451
+ results.push({
452
+ metricId: other.id,
453
+ correlation: r.correlation,
454
+ lagDays: lag,
455
+ direction: r.correlation >= 0 ? 'positive' : 'negative',
456
+ sampleSize: r.n,
457
+ });
458
+ }
459
+ }
460
+ }
461
+ return results.sort((a, b) => Math.abs(b.correlation) - Math.abs(a.correlation));
462
+ }
463
+ /** Get a metric's history */
464
+ async get(metricId) {
465
+ return await this.adapter.get('metrics', metricId);
466
+ }
467
+ /** List all tracked metrics */
468
+ async list() {
469
+ return await this.adapter.query({ collection: 'metrics' });
470
+ }
471
+ // ── Private ──
472
+ pearson(a, b, lagDays) {
473
+ // Align time series at daily granularity
474
+ const dayMs = 86400000;
475
+ const aMap = new Map();
476
+ for (const p of a.points) {
477
+ const day = Math.floor(new Date(p.timestamp).getTime() / dayMs);
478
+ aMap.set(day, p.value);
479
+ }
480
+ const pairs = [];
481
+ for (const p of b.points) {
482
+ const day = Math.floor(new Date(p.timestamp).getTime() / dayMs) + lagDays;
483
+ const aVal = aMap.get(day);
484
+ if (aVal !== undefined)
485
+ pairs.push([aVal, p.value]);
486
+ }
487
+ if (pairs.length < 5)
488
+ return null;
489
+ const n = pairs.length;
490
+ const meanA = pairs.reduce((s, p) => s + p[0], 0) / n;
491
+ const meanB = pairs.reduce((s, p) => s + p[1], 0) / n;
492
+ let num = 0, denA = 0, denB = 0;
493
+ for (const [a, b] of pairs) {
494
+ const da = a - meanA;
495
+ const db = b - meanB;
496
+ num += da * db;
497
+ denA += da * da;
498
+ denB += db * db;
499
+ }
500
+ const den = Math.sqrt(denA * denB);
501
+ if (den === 0)
502
+ return null;
503
+ return { correlation: num / den, n };
504
+ }
505
+ }
506
+ // ─── Vector API ──────────────────────────────────────
507
+ class VectorAPI {
508
+ adapter;
509
+ constructor(adapter) {
510
+ this.adapter = adapter;
511
+ }
512
+ get vec() {
513
+ return 'putVector' in this.adapter ? this.adapter : null;
514
+ }
515
+ /** Check if vector search is available */
516
+ get available() {
517
+ return this.vec !== null;
518
+ }
519
+ /** Store a vector */
520
+ async store(collection, key, vector, metadata) {
521
+ const v = this.vec;
522
+ if (!v)
523
+ throw new Error('Vector search requires a VectorAdapter. Use MemoryVectorAdapter or VectorOverlay.');
524
+ await v.putVector(collection, key, vector, metadata);
525
+ }
526
+ /** Search by vector similarity */
527
+ async search(collection, vector, topK = 10, minScore) {
528
+ const v = this.vec;
529
+ if (!v)
530
+ throw new Error('Vector search requires a VectorAdapter.');
531
+ return v.searchVector(collection, vector, topK, minScore);
532
+ }
533
+ }
534
+ // ─── Factory Function ────────────────────────────────
535
+ /**
536
+ * Create a dpth database instance.
537
+ *
538
+ * @param pathOrOptions — SQLite path string, or options object
539
+ * @returns Initialized Dpth instance (call .ready() if you need to await init)
540
+ *
541
+ * @example
542
+ * // In-memory (default)
543
+ * const db = dpth();
544
+ *
545
+ * // Persistent (SQLite)
546
+ * const db = await dpth('./myapp.db').ready();
547
+ *
548
+ * // Custom adapter
549
+ * const db = dpth({ adapter: new MemoryVectorAdapter() });
550
+ */
551
+ export function dpth(pathOrOptions) {
552
+ if (typeof pathOrOptions === 'string') {
553
+ return new Dpth({ path: pathOrOptions });
554
+ }
555
+ return new Dpth(pathOrOptions);
556
+ }
557
+ //# sourceMappingURL=dpth.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"dpth.js","sourceRoot":"","sources":["../src/dpth.ts"],"names":[],"mappings":"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"}
package/dist/index.d.ts CHANGED
@@ -13,6 +13,7 @@
13
13
  * - Fallback: Centralized inference when no agents available
14
14
  */
15
15
  export * from './types.js';
16
+ export * from './storage.js';
16
17
  export * from './entity.js';
17
18
  export * from './correlation.js';
18
19
  export * from './temporal.js';
@@ -1 +1 @@
1
- {"version":3,"file":"index.d.ts","sourceRoot":"","sources":["../src/index.ts"],"names":[],"mappings":"AAAA;;;;;;;;;;;;;GAaG;AAEH,cAAc,YAAY,CAAC;AAC3B,cAAc,aAAa,CAAC;AAC5B,cAAc,kBAAkB,CAAC;AACjC,cAAc,eAAe,CAAC;AAC9B,cAAc,YAAY,CAAC;AAC3B,cAAc,gBAAgB,CAAC;AAC/B,cAAc,eAAe,CAAC;AAC9B,cAAc,gBAAgB,CAAC;AAC/B,cAAc,iBAAiB,CAAC"}
1
+ {"version":3,"file":"index.d.ts","sourceRoot":"","sources":["../src/index.ts"],"names":[],"mappings":"AAAA;;;;;;;;;;;;;GAaG;AAEH,cAAc,YAAY,CAAC;AAC3B,cAAc,cAAc,CAAC;AAC7B,cAAc,aAAa,CAAC;AAC5B,cAAc,kBAAkB,CAAC;AACjC,cAAc,eAAe,CAAC;AAC9B,cAAc,YAAY,CAAC;AAC3B,cAAc,gBAAgB,CAAC;AAC/B,cAAc,eAAe,CAAC;AAC9B,cAAc,gBAAgB,CAAC;AAC/B,cAAc,iBAAiB,CAAC"}
package/dist/index.js CHANGED
@@ -13,6 +13,7 @@
13
13
  * - Fallback: Centralized inference when no agents available
14
14
  */
15
15
  export * from './types.js';
16
+ export * from './storage.js';
16
17
  export * from './entity.js';
17
18
  export * from './correlation.js';
18
19
  export * from './temporal.js';
package/dist/index.js.map CHANGED
@@ -1 +1 @@
1
- {"version":3,"file":"index.js","sourceRoot":"","sources":["../src/index.ts"],"names":[],"mappings":"AAAA;;;;;;;;;;;;;GAaG;AAEH,cAAc,YAAY,CAAC;AAC3B,cAAc,aAAa,CAAC;AAC5B,cAAc,kBAAkB,CAAC;AACjC,cAAc,eAAe,CAAC;AAC9B,cAAc,YAAY,CAAC;AAC3B,cAAc,gBAAgB,CAAC;AAC/B,cAAc,eAAe,CAAC;AAC9B,cAAc,gBAAgB,CAAC;AAC/B,cAAc,iBAAiB,CAAC"}
1
+ {"version":3,"file":"index.js","sourceRoot":"","sources":["../src/index.ts"],"names":[],"mappings":"AAAA;;;;;;;;;;;;;GAaG;AAEH,cAAc,YAAY,CAAC;AAC3B,cAAc,cAAc,CAAC;AAC7B,cAAc,aAAa,CAAC;AAC5B,cAAc,kBAAkB,CAAC;AACjC,cAAc,eAAe,CAAC;AAC9B,cAAc,YAAY,CAAC;AAC3B,cAAc,gBAAgB,CAAC;AAC/B,cAAc,eAAe,CAAC;AAC9B,cAAc,gBAAgB,CAAC;AAC/B,cAAc,iBAAiB,CAAC"}