@skillsmith/core 0.4.12 → 0.4.14
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/.tsbuildinfo +1 -1
- package/dist/src/analytics/storage.d.ts +8 -2
- package/dist/src/analytics/storage.d.ts.map +1 -1
- package/dist/src/analytics/storage.js +16 -5
- package/dist/src/analytics/storage.js.map +1 -1
- package/dist/src/analytics/usage-tracker.d.ts +8 -2
- package/dist/src/analytics/usage-tracker.d.ts.map +1 -1
- package/dist/src/analytics/usage-tracker.js +24 -11
- package/dist/src/analytics/usage-tracker.js.map +1 -1
- package/dist/src/benchmarks/IndexBenchmark.js +2 -2
- package/dist/src/benchmarks/IndexBenchmark.js.map +1 -1
- package/dist/src/benchmarks/SearchBenchmark.js +2 -2
- package/dist/src/benchmarks/SearchBenchmark.js.map +1 -1
- package/dist/src/benchmarks/cacheBenchmark.js +2 -2
- package/dist/src/benchmarks/cacheBenchmark.js.map +1 -1
- package/dist/src/benchmarks/embeddingBenchmark.js +1 -1
- package/dist/src/benchmarks/embeddingBenchmark.js.map +1 -1
- package/dist/src/cache/CacheManager.d.ts +13 -2
- package/dist/src/cache/CacheManager.d.ts.map +1 -1
- package/dist/src/cache/CacheManager.js +27 -6
- package/dist/src/cache/CacheManager.js.map +1 -1
- package/dist/src/cache/TieredCache.d.ts +15 -2
- package/dist/src/cache/TieredCache.d.ts.map +1 -1
- package/dist/src/cache/TieredCache.js +52 -70
- package/dist/src/cache/TieredCache.js.map +1 -1
- package/dist/src/cache/index.d.ts +12 -0
- package/dist/src/cache/index.d.ts.map +1 -1
- package/dist/src/cache/index.js +20 -1
- package/dist/src/cache/index.js.map +1 -1
- package/dist/src/cache/sqlite.d.ts +15 -1
- package/dist/src/cache/sqlite.d.ts.map +1 -1
- package/dist/src/cache/sqlite.js +22 -4
- package/dist/src/cache/sqlite.js.map +1 -1
- package/dist/src/db/createDatabase.d.ts.map +1 -1
- package/dist/src/db/createDatabase.js +12 -0
- package/dist/src/db/createDatabase.js.map +1 -1
- package/dist/src/db/migrations/v5-skill-versions.d.ts +30 -0
- package/dist/src/db/migrations/v5-skill-versions.d.ts.map +1 -0
- package/dist/src/db/migrations/v5-skill-versions.js +45 -0
- package/dist/src/db/migrations/v5-skill-versions.js.map +1 -0
- package/dist/src/db/schema.d.ts +6 -0
- package/dist/src/db/schema.d.ts.map +1 -1
- package/dist/src/db/schema.js +6 -0
- package/dist/src/db/schema.js.map +1 -1
- package/dist/src/embeddings/hnsw-store.d.ts +14 -0
- package/dist/src/embeddings/hnsw-store.d.ts.map +1 -1
- package/dist/src/embeddings/hnsw-store.helpers.d.ts +4 -4
- package/dist/src/embeddings/hnsw-store.helpers.d.ts.map +1 -1
- package/dist/src/embeddings/hnsw-store.helpers.js +5 -5
- package/dist/src/embeddings/hnsw-store.helpers.js.map +1 -1
- package/dist/src/embeddings/hnsw-store.js +32 -4
- package/dist/src/embeddings/hnsw-store.js.map +1 -1
- package/dist/src/embeddings/index.d.ts +15 -1
- package/dist/src/embeddings/index.d.ts.map +1 -1
- package/dist/src/embeddings/index.js +24 -4
- package/dist/src/embeddings/index.js.map +1 -1
- package/dist/src/index.d.ts +1 -1
- package/dist/src/index.d.ts.map +1 -1
- package/dist/src/index.js +2 -1
- package/dist/src/index.js.map +1 -1
- package/dist/src/learning/PatternStore.d.ts +8 -0
- package/dist/src/learning/PatternStore.d.ts.map +1 -1
- package/dist/src/learning/PatternStore.js +14 -2
- package/dist/src/learning/PatternStore.js.map +1 -1
- package/dist/src/repositories/SkillVersionRepository.d.ts +82 -0
- package/dist/src/repositories/SkillVersionRepository.d.ts.map +1 -0
- package/dist/src/repositories/SkillVersionRepository.js +118 -0
- package/dist/src/repositories/SkillVersionRepository.js.map +1 -0
- package/dist/src/search/hybrid.d.ts +15 -4
- package/dist/src/search/hybrid.d.ts.map +1 -1
- package/dist/src/search/hybrid.js +25 -9
- package/dist/src/search/hybrid.js.map +1 -1
- package/dist/src/types.d.ts +4 -0
- package/dist/src/types.d.ts.map +1 -1
- package/dist/tests/AnalyticsStorage.test.js +2 -2
- package/dist/tests/AnalyticsStorage.test.js.map +1 -1
- package/dist/tests/CacheSecurity.test.js +4 -4
- package/dist/tests/CacheSecurity.test.js.map +1 -1
- package/dist/tests/EmbeddingService.test.js +11 -12
- package/dist/tests/EmbeddingService.test.js.map +1 -1
- package/dist/tests/HybridSearch.test.d.ts +8 -0
- package/dist/tests/HybridSearch.test.d.ts.map +1 -0
- package/dist/tests/HybridSearch.test.js +48 -0
- package/dist/tests/HybridSearch.test.js.map +1 -0
- package/dist/tests/SkillVersionRepository.test.d.ts +13 -0
- package/dist/tests/SkillVersionRepository.test.d.ts.map +1 -0
- package/dist/tests/SkillVersionRepository.test.js +231 -0
- package/dist/tests/SkillVersionRepository.test.js.map +1 -0
- package/dist/tests/TieredCache.test.js +10 -10
- package/dist/tests/TieredCache.test.js.map +1 -1
- package/dist/tests/UsageTracker.test.js +6 -6
- package/dist/tests/UsageTracker.test.js.map +1 -1
- package/dist/tests/analytics/usage-tracker.test.js +8 -8
- package/dist/tests/analytics/usage-tracker.test.js.map +1 -1
- package/dist/tests/cache.test.js +7 -9
- package/dist/tests/cache.test.js.map +1 -1
- package/dist/tests/db/database-abstraction.test.js +36 -0
- package/dist/tests/db/database-abstraction.test.js.map +1 -1
- package/dist/tests/embeddings/hnsw-store.test.js +27 -24
- package/dist/tests/embeddings/hnsw-store.test.js.map +1 -1
- package/dist/tests/learning/PatternStore.test.js +9 -0
- package/dist/tests/learning/PatternStore.test.js.map +1 -1
- package/package.json +1 -3
|
@@ -44,12 +44,25 @@ export interface TieredCacheStats {
|
|
|
44
44
|
export declare class EnhancedTieredCache {
|
|
45
45
|
private l1;
|
|
46
46
|
private db;
|
|
47
|
-
private
|
|
47
|
+
private config;
|
|
48
48
|
private pruneTimer;
|
|
49
49
|
private stats;
|
|
50
50
|
private stmts;
|
|
51
|
+
/**
|
|
52
|
+
* @deprecated If l2.dbPath is passed, use EnhancedTieredCache.create(config) instead —
|
|
53
|
+
* the async factory supports both native and WASM SQLite. Passing l2.dbPath to this
|
|
54
|
+
* constructor throws to prevent silent data loss.
|
|
55
|
+
*/
|
|
51
56
|
constructor(config?: TieredCacheConfig);
|
|
52
|
-
|
|
57
|
+
/**
|
|
58
|
+
* Async factory — supports both native and WASM SQLite.
|
|
59
|
+
*
|
|
60
|
+
* @param config - Cache configuration; l2.dbPath is opened via createDatabaseAsync
|
|
61
|
+
* @returns Fully initialised EnhancedTieredCache instance
|
|
62
|
+
*/
|
|
63
|
+
static create(config?: TieredCacheConfig): Promise<EnhancedTieredCache>;
|
|
64
|
+
private initFromConfig;
|
|
65
|
+
private initL2Async;
|
|
53
66
|
/**
|
|
54
67
|
* Get entry from cache (L1 first, then L2)
|
|
55
68
|
*/
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"TieredCache.d.ts","sourceRoot":"","sources":["../../../src/cache/TieredCache.ts"],"names":[],"mappings":"AAAA;;;GAGG;AAKH,OAAO,KAAK,EAAE,YAAY,EAAE,MAAM,UAAU,CAAA;AAC5C,OAAO,EAGL,OAAO,EAQR,MAAM,iBAAiB,CAAA;AAExB,6BAA6B;AAC7B,MAAM,WAAW,QAAQ;IACvB,UAAU,CAAC,EAAE,MAAM,CAAA;IACnB,cAAc,CAAC,EAAE,MAAM,CAAA;CACxB;AAED,6BAA6B;AAC7B,MAAM,WAAW,QAAQ;IACvB,MAAM,EAAE,MAAM,CAAA;IACd,eAAe,CAAC,EAAE,MAAM,CAAA;CACzB;AAED,0CAA0C;AAC1C,MAAM,WAAW,iBAAiB;IAChC,EAAE,CAAC,EAAE,QAAQ,CAAA;IACb,EAAE,CAAC,EAAE,QAAQ,CAAA;IACb,eAAe,CAAC,EAAE,OAAO,CAAA;IACzB,cAAc,CAAC,EAAE,OAAO,CAAA;CACzB;AAED,uBAAuB;AACvB,MAAM,WAAW,gBAAgB;IAC/B,MAAM,EAAE,MAAM,CAAA;IACd,QAAQ,EAAE,MAAM,CAAA;IAChB,MAAM,EAAE,MAAM,CAAA;IACd,QAAQ,EAAE,MAAM,CAAA;IAChB,SAAS,EAAE,MAAM,CAAA;IACjB,WAAW,EAAE,MAAM,CAAA;IACnB,OAAO,EAAE,MAAM,CAAA;IACf,MAAM,EAAE,MAAM,CAAA;IACd,MAAM,EAAE,MAAM,CAAA;IACd,UAAU,EAAE,MAAM,CAAA;IAClB,SAAS,EAAE,MAAM,CAAA;IACjB,SAAS,EAAE,MAAM,CAAA;IACjB,cAAc,EAAE,MAAM,CAAA;IACtB,WAAW,EAAE,MAAM,CAAA;CACpB;AAuBD;;GAEG;AACH,qBAAa,mBAAmB;IAC9B,OAAO,CAAC,EAAE,
|
|
1
|
+
{"version":3,"file":"TieredCache.d.ts","sourceRoot":"","sources":["../../../src/cache/TieredCache.ts"],"names":[],"mappings":"AAAA;;;GAGG;AAKH,OAAO,KAAK,EAAE,YAAY,EAAE,MAAM,UAAU,CAAA;AAC5C,OAAO,EAGL,OAAO,EAQR,MAAM,iBAAiB,CAAA;AAExB,6BAA6B;AAC7B,MAAM,WAAW,QAAQ;IACvB,UAAU,CAAC,EAAE,MAAM,CAAA;IACnB,cAAc,CAAC,EAAE,MAAM,CAAA;CACxB;AAED,6BAA6B;AAC7B,MAAM,WAAW,QAAQ;IACvB,MAAM,EAAE,MAAM,CAAA;IACd,eAAe,CAAC,EAAE,MAAM,CAAA;CACzB;AAED,0CAA0C;AAC1C,MAAM,WAAW,iBAAiB;IAChC,EAAE,CAAC,EAAE,QAAQ,CAAA;IACb,EAAE,CAAC,EAAE,QAAQ,CAAA;IACb,eAAe,CAAC,EAAE,OAAO,CAAA;IACzB,cAAc,CAAC,EAAE,OAAO,CAAA;CACzB;AAED,uBAAuB;AACvB,MAAM,WAAW,gBAAgB;IAC/B,MAAM,EAAE,MAAM,CAAA;IACd,QAAQ,EAAE,MAAM,CAAA;IAChB,MAAM,EAAE,MAAM,CAAA;IACd,QAAQ,EAAE,MAAM,CAAA;IAChB,SAAS,EAAE,MAAM,CAAA;IACjB,WAAW,EAAE,MAAM,CAAA;IACnB,OAAO,EAAE,MAAM,CAAA;IACf,MAAM,EAAE,MAAM,CAAA;IACd,MAAM,EAAE,MAAM,CAAA;IACd,UAAU,EAAE,MAAM,CAAA;IAClB,SAAS,EAAE,MAAM,CAAA;IACjB,SAAS,EAAE,MAAM,CAAA;IACjB,cAAc,EAAE,MAAM,CAAA;IACtB,WAAW,EAAE,MAAM,CAAA;CACpB;AAuBD;;GAEG;AACH,qBAAa,mBAAmB;IAC9B,OAAO,CAAC,EAAE,CAA+B;IACzC,OAAO,CAAC,EAAE,CAAwB;IAClC,OAAO,CAAC,MAAM,CAAsB;IACpC,OAAO,CAAC,UAAU,CAA8C;IAGhE,OAAO,CAAC,KAAK,CAQZ;IAGD,OAAO,CAAC,KAAK,CASE;IAEf;;;;OAIG;gBACS,MAAM,GAAE,iBAAsB;IAW1C;;;;;OAKG;WACU,MAAM,CAAC,MAAM,GAAE,iBAAsB,GAAG,OAAO,CAAC,mBAAmB,CAAC;IAajF,OAAO,CAAC,cAAc;YA6BR,WAAW;IAmCzB;;OAEG;IACH,GAAG,CAAC,GAAG,EAAE,MAAM,GAAG;QAAE,OAAO,EAAE,YAAY,EAAE,CAAC;QAAC,UAAU,EAAE,MAAM,CAAA;KAAE,GAAG,SAAS;IAuD7E;;OAEG;IACH,GAAG,CACD,GAAG,EAAE,MAAM,EACX,OAAO,EAAE,YAAY,EAAE,EACvB,UAAU,EAAE,MAAM,EAClB,OAAO,GAAE,OAA0B,GAClC,IAAI;IA0BP;;OAEG;IACH,GAAG,CAAC,GAAG,EAAE,MAAM,GAAG,OAAO;IAqBzB;;OAEG;IACH,MAAM,CAAC,GAAG,EAAE,MAAM,GAAG,OAAO;IAkB5B;;OAEG;IACH,aAAa,IAAI,IAAI;IAOrB;;OAEG;IACH,KAAK,IAAI,MAAM;IAiBf;;OAEG;IACH,wBAAwB,IAAI,MAAM,EAAE;IAcpC;;OAEG;IACH,QAAQ,IAAI,gBAAgB;IA+C5B;;OAEG;IACH,OAAO,CAAC,UAAU;IAoBlB;;OAEG;IACH,KAAK,IAAI,IAAI;CAWd"}
|
|
@@ -3,7 +3,7 @@
|
|
|
3
3
|
* L1 (memory) + L2 (SQLite) with automatic promotion/demotion
|
|
4
4
|
*/
|
|
5
5
|
import { LRUCache } from 'lru-cache';
|
|
6
|
-
import {
|
|
6
|
+
import { createDatabaseAsync } from '../db/createDatabase.js';
|
|
7
7
|
import { TTLTier, createCacheEntry, recordHit, isExpired, shouldRefresh, serializeCacheEntry, deserializeCacheEntry, isValidCacheKey, } from './CacheEntry.js';
|
|
8
8
|
/**
|
|
9
9
|
* Entry size estimator for memory bounds
|
|
@@ -35,7 +35,37 @@ export class EnhancedTieredCache {
|
|
|
35
35
|
};
|
|
36
36
|
// Prepared statements for L2
|
|
37
37
|
stmts = null;
|
|
38
|
+
/**
|
|
39
|
+
* @deprecated If l2.dbPath is passed, use EnhancedTieredCache.create(config) instead —
|
|
40
|
+
* the async factory supports both native and WASM SQLite. Passing l2.dbPath to this
|
|
41
|
+
* constructor throws to prevent silent data loss.
|
|
42
|
+
*/
|
|
38
43
|
constructor(config = {}) {
|
|
44
|
+
if (config.l2?.dbPath) {
|
|
45
|
+
throw new Error('[EnhancedTieredCache] Cannot open a database file in the sync constructor. ' +
|
|
46
|
+
'Use await EnhancedTieredCache.create(config) instead.');
|
|
47
|
+
}
|
|
48
|
+
this.initFromConfig(config);
|
|
49
|
+
}
|
|
50
|
+
/**
|
|
51
|
+
* Async factory — supports both native and WASM SQLite.
|
|
52
|
+
*
|
|
53
|
+
* @param config - Cache configuration; l2.dbPath is opened via createDatabaseAsync
|
|
54
|
+
* @returns Fully initialised EnhancedTieredCache instance
|
|
55
|
+
*/
|
|
56
|
+
static async create(config = {}) {
|
|
57
|
+
// Bypass the throwing constructor by omitting l2.dbPath
|
|
58
|
+
const { l2, ...rest } = config;
|
|
59
|
+
const instance = new EnhancedTieredCache(rest);
|
|
60
|
+
if (l2?.dbPath) {
|
|
61
|
+
await instance.initL2Async(l2.dbPath);
|
|
62
|
+
const pruneInterval = l2.pruneIntervalMs ?? 5 * 60 * 1000;
|
|
63
|
+
instance.pruneTimer = setInterval(() => instance.prune(), pruneInterval);
|
|
64
|
+
instance.pruneTimer.unref();
|
|
65
|
+
}
|
|
66
|
+
return instance;
|
|
67
|
+
}
|
|
68
|
+
initFromConfig(config) {
|
|
39
69
|
const l1MaxEntries = config.l1?.maxEntries ?? 1000;
|
|
40
70
|
const l1MaxMemoryBytes = config.l1?.maxMemoryBytes ?? 100 * 1024 * 1024; // 100MB
|
|
41
71
|
this.config = {
|
|
@@ -60,79 +90,31 @@ export class EnhancedTieredCache {
|
|
|
60
90
|
this.stats.evictions++;
|
|
61
91
|
},
|
|
62
92
|
});
|
|
63
|
-
// Initialize L2 if configured
|
|
64
|
-
if (config.l2?.dbPath) {
|
|
65
|
-
this.initL2(config.l2.dbPath);
|
|
66
|
-
// Set up periodic pruning (unref to not block process exit)
|
|
67
|
-
const pruneInterval = config.l2.pruneIntervalMs ?? 5 * 60 * 1000;
|
|
68
|
-
this.pruneTimer = setInterval(() => this.prune(), pruneInterval);
|
|
69
|
-
this.pruneTimer.unref();
|
|
70
|
-
}
|
|
71
93
|
}
|
|
72
|
-
|
|
73
|
-
this.db =
|
|
74
|
-
|
|
75
|
-
|
|
76
|
-
// Create table with enhanced schema for TTL management
|
|
77
|
-
this.db.exec(`
|
|
94
|
+
async initL2Async(dbPath) {
|
|
95
|
+
const db = (this.db = await createDatabaseAsync(dbPath));
|
|
96
|
+
db.pragma('cache_size = -16000');
|
|
97
|
+
db.exec(`
|
|
78
98
|
CREATE TABLE IF NOT EXISTS cache_entries (
|
|
79
|
-
key TEXT PRIMARY KEY,
|
|
80
|
-
|
|
81
|
-
|
|
82
|
-
|
|
83
|
-
|
|
84
|
-
|
|
85
|
-
last_accessed_at INTEGER NOT NULL,
|
|
86
|
-
ttl_tier INTEGER NOT NULL
|
|
87
|
-
)
|
|
88
|
-
`);
|
|
89
|
-
// Index for expiration pruning
|
|
90
|
-
this.db.exec(`
|
|
91
|
-
CREATE INDEX IF NOT EXISTS idx_cache_expires
|
|
92
|
-
ON cache_entries(expires_at)
|
|
93
|
-
`);
|
|
94
|
-
// Index for TTL tier queries
|
|
95
|
-
this.db.exec(`
|
|
96
|
-
CREATE INDEX IF NOT EXISTS idx_cache_tier
|
|
97
|
-
ON cache_entries(ttl_tier)
|
|
99
|
+
key TEXT PRIMARY KEY, data_json TEXT NOT NULL, total_count INTEGER NOT NULL,
|
|
100
|
+
created_at INTEGER NOT NULL, expires_at INTEGER NOT NULL,
|
|
101
|
+
hit_count INTEGER NOT NULL DEFAULT 0, last_accessed_at INTEGER NOT NULL, ttl_tier INTEGER NOT NULL
|
|
102
|
+
);
|
|
103
|
+
CREATE INDEX IF NOT EXISTS idx_cache_expires ON cache_entries(expires_at);
|
|
104
|
+
CREATE INDEX IF NOT EXISTS idx_cache_tier ON cache_entries(ttl_tier);
|
|
98
105
|
`);
|
|
99
|
-
// Prepare statements
|
|
100
106
|
this.stmts = {
|
|
101
|
-
get:
|
|
102
|
-
|
|
103
|
-
|
|
104
|
-
|
|
105
|
-
|
|
106
|
-
|
|
107
|
-
|
|
108
|
-
|
|
109
|
-
|
|
110
|
-
|
|
111
|
-
|
|
112
|
-
`),
|
|
113
|
-
has: this.db.prepare(`
|
|
114
|
-
SELECT 1 FROM cache_entries
|
|
115
|
-
WHERE key = ? AND expires_at > ?
|
|
116
|
-
`),
|
|
117
|
-
delete: this.db.prepare(`
|
|
118
|
-
DELETE FROM cache_entries WHERE key = ?
|
|
119
|
-
`),
|
|
120
|
-
prune: this.db.prepare(`
|
|
121
|
-
DELETE FROM cache_entries WHERE expires_at <= ?
|
|
122
|
-
`),
|
|
123
|
-
count: this.db.prepare(`
|
|
124
|
-
SELECT COUNT(*) as count FROM cache_entries
|
|
125
|
-
WHERE expires_at > ?
|
|
126
|
-
`),
|
|
127
|
-
updateHit: this.db.prepare(`
|
|
128
|
-
UPDATE cache_entries
|
|
129
|
-
SET hit_count = ?, last_accessed_at = ?, ttl_tier = ?
|
|
130
|
-
WHERE key = ?
|
|
131
|
-
`),
|
|
132
|
-
countByTier: this.db.prepare(`
|
|
133
|
-
SELECT COUNT(*) as count FROM cache_entries
|
|
134
|
-
WHERE ttl_tier = ? AND expires_at > ?
|
|
135
|
-
`),
|
|
107
|
+
get: db.prepare(`SELECT key, data_json, total_count, created_at, expires_at,
|
|
108
|
+
hit_count, last_accessed_at, ttl_tier FROM cache_entries WHERE key = ? AND expires_at > ?`),
|
|
109
|
+
set: db.prepare(`INSERT OR REPLACE INTO cache_entries
|
|
110
|
+
(key, data_json, total_count, created_at, expires_at, hit_count, last_accessed_at, ttl_tier)
|
|
111
|
+
VALUES (?, ?, ?, ?, ?, ?, ?, ?)`),
|
|
112
|
+
has: db.prepare(`SELECT 1 FROM cache_entries WHERE key = ? AND expires_at > ?`),
|
|
113
|
+
delete: db.prepare(`DELETE FROM cache_entries WHERE key = ?`),
|
|
114
|
+
prune: db.prepare(`DELETE FROM cache_entries WHERE expires_at <= ?`),
|
|
115
|
+
count: db.prepare(`SELECT COUNT(*) as count FROM cache_entries WHERE expires_at > ?`),
|
|
116
|
+
updateHit: db.prepare(`UPDATE cache_entries SET hit_count = ?, last_accessed_at = ?, ttl_tier = ? WHERE key = ?`),
|
|
117
|
+
countByTier: db.prepare(`SELECT COUNT(*) as count FROM cache_entries WHERE ttl_tier = ? AND expires_at > ?`),
|
|
136
118
|
};
|
|
137
119
|
}
|
|
138
120
|
/**
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"TieredCache.js","sourceRoot":"","sources":["../../../src/cache/TieredCache.ts"],"names":[],"mappings":"AAAA;;;GAGG;AAEH,OAAO,EAAE,QAAQ,EAAE,MAAM,WAAW,CAAA;AAEpC,OAAO,EAAE,
|
|
1
|
+
{"version":3,"file":"TieredCache.js","sourceRoot":"","sources":["../../../src/cache/TieredCache.ts"],"names":[],"mappings":"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"}
|
|
@@ -24,7 +24,19 @@ export interface TieredCacheOptions {
|
|
|
24
24
|
export declare class TieredCache {
|
|
25
25
|
private l1;
|
|
26
26
|
private l2;
|
|
27
|
+
/**
|
|
28
|
+
* @deprecated If l2Options is passed, use TieredCache.create(options) — async factory
|
|
29
|
+
* with WASM fallback. Passing l2Options to this constructor throws to prevent silent
|
|
30
|
+
* data loss.
|
|
31
|
+
*/
|
|
27
32
|
constructor(options?: TieredCacheOptions);
|
|
33
|
+
/**
|
|
34
|
+
* Async factory — supports both native and WASM SQLite.
|
|
35
|
+
*
|
|
36
|
+
* @param options - Cache options; l2Options.dbPath is opened via createDatabaseAsync
|
|
37
|
+
* @returns Fully initialised TieredCache instance
|
|
38
|
+
*/
|
|
39
|
+
static create(options?: TieredCacheOptions): Promise<TieredCache>;
|
|
28
40
|
/**
|
|
29
41
|
* Get from cache, checking L1 first, then L2
|
|
30
42
|
*/
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"index.d.ts","sourceRoot":"","sources":["../../../src/cache/index.ts"],"names":[],"mappings":"AAAA;;;GAGG;AAGH,OAAO,EAAE,OAAO,EAAE,MAAM,UAAU,CAAA;AAClC,YAAY,EAAE,gBAAgB,EAAE,YAAY,EAAE,UAAU,EAAE,MAAM,UAAU,CAAA;AAE1E,OAAO,EAAE,OAAO,EAAE,MAAM,aAAa,CAAA;AACrC,YAAY,EAAE,cAAc,EAAE,MAAM,aAAa,CAAA;AAGjD,OAAO,EACL,OAAO,EACP,qBAAqB,EACrB,gBAAgB,EAChB,SAAS,EACT,gBAAgB,EAChB,SAAS,EACT,aAAa,EACb,eAAe,EACf,mBAAmB,EACnB,qBAAqB,EACrB,cAAc,GACf,MAAM,iBAAiB,CAAA;AACxB,YAAY,EAAE,UAAU,EAAE,oBAAoB,EAAE,MAAM,iBAAiB,CAAA;AAEvE,OAAO,EAAE,mBAAmB,EAAE,MAAM,kBAAkB,CAAA;AACtD,YAAY,EAAE,QAAQ,EAAE,QAAQ,EAAE,iBAAiB,EAAE,gBAAgB,EAAE,MAAM,kBAAkB,CAAA;AAE/F,OAAO,EAAE,YAAY,EAAE,MAAM,mBAAmB,CAAA;AAChD,YAAY,EAAE,aAAa,EAAE,eAAe,EAAE,kBAAkB,EAAE,MAAM,mBAAmB,CAAA;AAE3F,OAAO,EAAW,KAAK,YAAY,EAAE,KAAK,UAAU,EAAE,MAAM,UAAU,CAAA;AACtE,OAAO,EAAW,KAAK,cAAc,EAAE,MAAM,aAAa,CAAA;AAE1D,MAAM,WAAW,kBAAkB;IACjC,SAAS,CAAC,EAAE,MAAM,CAAA;IAClB,SAAS,CAAC,EAAE,cAAc,CAAA;CAC3B;AAED;;GAEG;AACH,qBAAa,WAAW;IACtB,OAAO,CAAC,EAAE,CAAS;IACnB,OAAO,CAAC,EAAE,CAAuB;
|
|
1
|
+
{"version":3,"file":"index.d.ts","sourceRoot":"","sources":["../../../src/cache/index.ts"],"names":[],"mappings":"AAAA;;;GAGG;AAGH,OAAO,EAAE,OAAO,EAAE,MAAM,UAAU,CAAA;AAClC,YAAY,EAAE,gBAAgB,EAAE,YAAY,EAAE,UAAU,EAAE,MAAM,UAAU,CAAA;AAE1E,OAAO,EAAE,OAAO,EAAE,MAAM,aAAa,CAAA;AACrC,YAAY,EAAE,cAAc,EAAE,MAAM,aAAa,CAAA;AAGjD,OAAO,EACL,OAAO,EACP,qBAAqB,EACrB,gBAAgB,EAChB,SAAS,EACT,gBAAgB,EAChB,SAAS,EACT,aAAa,EACb,eAAe,EACf,mBAAmB,EACnB,qBAAqB,EACrB,cAAc,GACf,MAAM,iBAAiB,CAAA;AACxB,YAAY,EAAE,UAAU,EAAE,oBAAoB,EAAE,MAAM,iBAAiB,CAAA;AAEvE,OAAO,EAAE,mBAAmB,EAAE,MAAM,kBAAkB,CAAA;AACtD,YAAY,EAAE,QAAQ,EAAE,QAAQ,EAAE,iBAAiB,EAAE,gBAAgB,EAAE,MAAM,kBAAkB,CAAA;AAE/F,OAAO,EAAE,YAAY,EAAE,MAAM,mBAAmB,CAAA;AAChD,YAAY,EAAE,aAAa,EAAE,eAAe,EAAE,kBAAkB,EAAE,MAAM,mBAAmB,CAAA;AAE3F,OAAO,EAAW,KAAK,YAAY,EAAE,KAAK,UAAU,EAAE,MAAM,UAAU,CAAA;AACtE,OAAO,EAAW,KAAK,cAAc,EAAE,MAAM,aAAa,CAAA;AAE1D,MAAM,WAAW,kBAAkB;IACjC,SAAS,CAAC,EAAE,MAAM,CAAA;IAClB,SAAS,CAAC,EAAE,cAAc,CAAA;CAC3B;AAED;;GAEG;AACH,qBAAa,WAAW;IACtB,OAAO,CAAC,EAAE,CAAS;IACnB,OAAO,CAAC,EAAE,CAAuB;IAEjC;;;;OAIG;gBACS,OAAO,GAAE,kBAAuB;IAU5C;;;;;OAKG;WACU,MAAM,CAAC,OAAO,GAAE,kBAAuB,GAAG,OAAO,CAAC,WAAW,CAAC;IAQ3E;;OAEG;IACH,GAAG,CAAC,GAAG,EAAE,MAAM,GAAG;QAAE,OAAO,EAAE,YAAY,EAAE,CAAC;QAAC,UAAU,EAAE,MAAM,CAAA;KAAE,GAAG,SAAS;IAoB7E;;OAEG;IACH,GAAG,CAAC,GAAG,EAAE,MAAM,EAAE,OAAO,EAAE,YAAY,EAAE,EAAE,UAAU,EAAE,MAAM,GAAG,IAAI;IAQnE;;OAEG;IACH,GAAG,CAAC,GAAG,EAAE,MAAM,GAAG,OAAO;IAIzB;;OAEG;IACH,aAAa,IAAI,IAAI;IAKrB;;OAEG;IACH,QAAQ,IAAI;QAAE,EAAE,EAAE,UAAU,CAAC;QAAC,EAAE,EAAE,UAAU,GAAG,IAAI,CAAA;KAAE;IAOrD;;OAEG;IACH,KAAK,IAAI,IAAI;IAKb;;OAEG;IACH,KAAK,IAAI,IAAI;CAGd"}
|
package/dist/src/cache/index.js
CHANGED
|
@@ -17,11 +17,30 @@ import { L2Cache } from './sqlite.js';
|
|
|
17
17
|
export class TieredCache {
|
|
18
18
|
l1;
|
|
19
19
|
l2 = null;
|
|
20
|
+
/**
|
|
21
|
+
* @deprecated If l2Options is passed, use TieredCache.create(options) — async factory
|
|
22
|
+
* with WASM fallback. Passing l2Options to this constructor throws to prevent silent
|
|
23
|
+
* data loss.
|
|
24
|
+
*/
|
|
20
25
|
constructor(options = {}) {
|
|
26
|
+
if (options.l2Options) {
|
|
27
|
+
throw new Error('[TieredCache] Cannot open a database file in the sync constructor. ' +
|
|
28
|
+
'Use await TieredCache.create(options) instead.');
|
|
29
|
+
}
|
|
21
30
|
this.l1 = new L1Cache(options.l1MaxSize ?? 100);
|
|
31
|
+
}
|
|
32
|
+
/**
|
|
33
|
+
* Async factory — supports both native and WASM SQLite.
|
|
34
|
+
*
|
|
35
|
+
* @param options - Cache options; l2Options.dbPath is opened via createDatabaseAsync
|
|
36
|
+
* @returns Fully initialised TieredCache instance
|
|
37
|
+
*/
|
|
38
|
+
static async create(options = {}) {
|
|
39
|
+
const instance = new TieredCache({ l1MaxSize: options.l1MaxSize });
|
|
22
40
|
if (options.l2Options) {
|
|
23
|
-
|
|
41
|
+
instance.l2 = await L2Cache.create(options.l2Options);
|
|
24
42
|
}
|
|
43
|
+
return instance;
|
|
25
44
|
}
|
|
26
45
|
/**
|
|
27
46
|
* Get from cache, checking L1 first, then L2
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"index.js","sourceRoot":"","sources":["../../../src/cache/index.ts"],"names":[],"mappings":"AAAA;;;GAGG;AAEH,kCAAkC;AAClC,OAAO,EAAE,OAAO,EAAE,MAAM,UAAU,CAAA;AAGlC,OAAO,EAAE,OAAO,EAAE,MAAM,aAAa,CAAA;AAGrC,8CAA8C;AAC9C,OAAO,EACL,OAAO,EACP,qBAAqB,EACrB,gBAAgB,EAChB,SAAS,EACT,gBAAgB,EAChB,SAAS,EACT,aAAa,EACb,eAAe,EACf,mBAAmB,EACnB,qBAAqB,EACrB,cAAc,GACf,MAAM,iBAAiB,CAAA;AAGxB,OAAO,EAAE,mBAAmB,EAAE,MAAM,kBAAkB,CAAA;AAGtD,OAAO,EAAE,YAAY,EAAE,MAAM,mBAAmB,CAAA;AAGhD,OAAO,EAAE,OAAO,EAAsC,MAAM,UAAU,CAAA;AACtE,OAAO,EAAE,OAAO,EAAuB,MAAM,aAAa,CAAA;AAO1D;;GAEG;AACH,MAAM,OAAO,WAAW;IACd,EAAE,CAAS;IACX,EAAE,GAAmB,IAAI,CAAA;IAEjC,YAAY,UAA8B,EAAE;QAC1C,IAAI,CAAC,EAAE,GAAG,IAAI,OAAO,CAAC,OAAO,CAAC,SAAS,IAAI,GAAG,CAAC,CAAA;
|
|
1
|
+
{"version":3,"file":"index.js","sourceRoot":"","sources":["../../../src/cache/index.ts"],"names":[],"mappings":"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"}
|
|
@@ -7,13 +7,27 @@ export interface L2CacheOptions {
|
|
|
7
7
|
dbPath: string;
|
|
8
8
|
ttlSeconds?: number;
|
|
9
9
|
}
|
|
10
|
+
interface L2CacheInternalOptions {
|
|
11
|
+
ttlSeconds?: number;
|
|
12
|
+
}
|
|
10
13
|
export declare class L2Cache {
|
|
11
14
|
private db;
|
|
12
15
|
private readonly ttlSeconds;
|
|
13
16
|
private hits;
|
|
14
17
|
private misses;
|
|
15
18
|
private stmts;
|
|
16
|
-
|
|
19
|
+
/**
|
|
20
|
+
* @deprecated Use L2Cache.create(options) — async factory with WASM fallback.
|
|
21
|
+
* The dbPath passed to this constructor throws to prevent silent data loss.
|
|
22
|
+
*/
|
|
23
|
+
constructor(options: L2CacheOptions | L2CacheInternalOptions);
|
|
24
|
+
/**
|
|
25
|
+
* Async factory — supports both native and WASM SQLite.
|
|
26
|
+
*
|
|
27
|
+
* @param options - Cache options including dbPath
|
|
28
|
+
* @returns Fully initialised L2Cache instance
|
|
29
|
+
*/
|
|
30
|
+
static create(options: L2CacheOptions): Promise<L2Cache>;
|
|
17
31
|
private initTable;
|
|
18
32
|
private prepareStatements;
|
|
19
33
|
/**
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"sqlite.d.ts","sourceRoot":"","sources":["../../../src/cache/sqlite.ts"],"names":[],"mappings":"AAAA;;;GAGG;AAIH,OAAO,KAAK,EAAE,YAAY,EAAE,gBAAgB,EAAE,UAAU,EAAE,MAAM,UAAU,CAAA;AAG1E,MAAM,WAAW,cAAc;IAC7B,MAAM,EAAE,MAAM,CAAA;IACd,UAAU,CAAC,EAAE,MAAM,CAAA;CACpB;AAED,qBAAa,OAAO;IAClB,OAAO,CAAC,EAAE,
|
|
1
|
+
{"version":3,"file":"sqlite.d.ts","sourceRoot":"","sources":["../../../src/cache/sqlite.ts"],"names":[],"mappings":"AAAA;;;GAGG;AAIH,OAAO,KAAK,EAAE,YAAY,EAAE,gBAAgB,EAAE,UAAU,EAAE,MAAM,UAAU,CAAA;AAG1E,MAAM,WAAW,cAAc;IAC7B,MAAM,EAAE,MAAM,CAAA;IACd,UAAU,CAAC,EAAE,MAAM,CAAA;CACpB;AAGD,UAAU,sBAAsB;IAC9B,UAAU,CAAC,EAAE,MAAM,CAAA;CACpB;AAED,qBAAa,OAAO;IAClB,OAAO,CAAC,EAAE,CAAW;IACrB,OAAO,CAAC,QAAQ,CAAC,UAAU,CAAQ;IACnC,OAAO,CAAC,IAAI,CAAI;IAChB,OAAO,CAAC,MAAM,CAAI;IAIlB,OAAO,CAAC,KAAK,CAOZ;IAED;;;OAGG;gBACS,OAAO,EAAE,cAAc,GAAG,sBAAsB;IAU5D;;;;;OAKG;WACU,MAAM,CAAC,OAAO,EAAE,cAAc,GAAG,OAAO,CAAC,OAAO,CAAC;IAQ9D,OAAO,CAAC,SAAS;IAiBjB,OAAO,CAAC,iBAAiB;IA+BzB;;OAEG;IACH,GAAG,CAAC,GAAG,EAAE,MAAM,GAAG,gBAAgB,GAAG,SAAS;IA4B9C;;OAEG;IACH,GAAG,CAAC,GAAG,EAAE,MAAM,EAAE,OAAO,EAAE,YAAY,EAAE,EAAE,UAAU,EAAE,MAAM,GAAG,IAAI;IAUnE;;OAEG;IACH,GAAG,CAAC,GAAG,EAAE,MAAM,GAAG,OAAO;IAMzB;;OAEG;IACH,MAAM,CAAC,GAAG,EAAE,MAAM,GAAG,OAAO;IAK5B;;OAEG;IACH,KAAK,IAAI,IAAI;IAMb;;OAEG;IACH,aAAa,IAAI,IAAI;IAIrB;;OAEG;IACH,KAAK,IAAI,MAAM;IAMf;;OAEG;IACH,QAAQ,IAAI,UAAU,GAAG;QAAE,YAAY,EAAE,MAAM,CAAA;KAAE;IAejD;;OAEG;IACH,KAAK,IAAI,IAAI;CAGd;AAED,eAAe,OAAO,CAAA"}
|
package/dist/src/cache/sqlite.js
CHANGED
|
@@ -2,7 +2,7 @@
|
|
|
2
2
|
* SMI-585: L2 SQLite Persistent Cache
|
|
3
3
|
* Persistent cache layer with configurable TTL
|
|
4
4
|
*/
|
|
5
|
-
import {
|
|
5
|
+
import { createDatabaseAsync } from '../db/createDatabase.js';
|
|
6
6
|
import { isValidCacheKey } from './CacheEntry.js';
|
|
7
7
|
export class L2Cache {
|
|
8
8
|
db;
|
|
@@ -12,11 +12,29 @@ export class L2Cache {
|
|
|
12
12
|
// Prepared statements (created once, reused for performance)
|
|
13
13
|
// Type parameter represents the return type of get()/all() queries
|
|
14
14
|
stmts;
|
|
15
|
+
/**
|
|
16
|
+
* @deprecated Use L2Cache.create(options) — async factory with WASM fallback.
|
|
17
|
+
* The dbPath passed to this constructor throws to prevent silent data loss.
|
|
18
|
+
*/
|
|
15
19
|
constructor(options) {
|
|
16
|
-
this.db = createDatabaseSync(options.dbPath);
|
|
17
20
|
this.ttlSeconds = options.ttlSeconds ?? 3600; // 1 hour default
|
|
18
|
-
|
|
19
|
-
|
|
21
|
+
if ('dbPath' in options) {
|
|
22
|
+
throw new Error('[L2Cache] Cannot open a database file in the sync constructor. ' +
|
|
23
|
+
'Use await L2Cache.create(options) instead.');
|
|
24
|
+
}
|
|
25
|
+
}
|
|
26
|
+
/**
|
|
27
|
+
* Async factory — supports both native and WASM SQLite.
|
|
28
|
+
*
|
|
29
|
+
* @param options - Cache options including dbPath
|
|
30
|
+
* @returns Fully initialised L2Cache instance
|
|
31
|
+
*/
|
|
32
|
+
static async create(options) {
|
|
33
|
+
const instance = new L2Cache({ ttlSeconds: options.ttlSeconds });
|
|
34
|
+
instance.db = await createDatabaseAsync(options.dbPath);
|
|
35
|
+
instance.initTable();
|
|
36
|
+
instance.stmts = instance.prepareStatements();
|
|
37
|
+
return instance;
|
|
20
38
|
}
|
|
21
39
|
initTable() {
|
|
22
40
|
this.db.exec(`
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"sqlite.js","sourceRoot":"","sources":["../../../src/cache/sqlite.ts"],"names":[],"mappings":"AAAA;;;GAGG;AAGH,OAAO,EAAE,
|
|
1
|
+
{"version":3,"file":"sqlite.js","sourceRoot":"","sources":["../../../src/cache/sqlite.ts"],"names":[],"mappings":"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"}
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"createDatabase.d.ts","sourceRoot":"","sources":["../../../src/db/createDatabase.ts"],"names":[],"mappings":"AAAA;;;;;;;;;;;;;;;;;GAiBG;AAEH,OAAO,KAAK,EAAE,QAAQ,EAAE,eAAe,EAAE,MAAM,yBAAyB,CAAA;AAOxE;;GAEG;AACH,MAAM,MAAM,UAAU,GAAG,gBAAgB,GAAG,QAAQ,CAAA;AAEpD;;GAEG;AACH,MAAM,WAAW,UAAU;IACzB,IAAI,EAAE,UAAU,CAAA;IAChB,SAAS,EAAE,OAAO,CAAA;IAClB,MAAM,CAAC,EAAE,MAAM,CAAA;CAChB;AAED;;;GAGG;AACH,wBAAgB,sBAAsB,IAAI,UAAU,EAAE,CA0BrD;AAED;;;GAGG;AACH,wBAAgB,aAAa,IAAI,UAAU,GAAG,IAAI,
|
|
1
|
+
{"version":3,"file":"createDatabase.d.ts","sourceRoot":"","sources":["../../../src/db/createDatabase.ts"],"names":[],"mappings":"AAAA;;;;;;;;;;;;;;;;;GAiBG;AAEH,OAAO,KAAK,EAAE,QAAQ,EAAE,eAAe,EAAE,MAAM,yBAAyB,CAAA;AAOxE;;GAEG;AACH,MAAM,MAAM,UAAU,GAAG,gBAAgB,GAAG,QAAQ,CAAA;AAEpD;;GAEG;AACH,MAAM,WAAW,UAAU;IACzB,IAAI,EAAE,UAAU,CAAA;IAChB,SAAS,EAAE,OAAO,CAAA;IAClB,MAAM,CAAC,EAAE,MAAM,CAAA;CAChB;AAED;;;GAGG;AACH,wBAAgB,sBAAsB,IAAI,UAAU,EAAE,CA0BrD;AAED;;;GAGG;AACH,wBAAgB,aAAa,IAAI,UAAU,GAAG,IAAI,CAiBjD;AAED;;;;;;;;;;GAUG;AACH,wBAAgB,kBAAkB,CAAC,IAAI,GAAE,MAAmB,EAAE,OAAO,CAAC,EAAE,eAAe,GAAG,QAAQ,CAgBjG;AAED;;;;;;;;;;;;GAYG;AACH,wBAAsB,mBAAmB,CACvC,IAAI,GAAE,MAAmB,EACzB,OAAO,CAAC,EAAE,eAAe,GACxB,OAAO,CAAC,QAAQ,CAAC,CA+BnB;AAED;;;;;;;;;;;;;;;;GAgBG;AACH,eAAO,MAAM,cAAc,2BAAqB,CAAA"}
|
|
@@ -53,6 +53,10 @@ export function detectAvailableDrivers() {
|
|
|
53
53
|
* @returns The driver type to use, or null if none available
|
|
54
54
|
*/
|
|
55
55
|
export function getBestDriver() {
|
|
56
|
+
// Allow env var override for testing WASM path in Docker
|
|
57
|
+
if (process.env.SKILLSMITH_FORCE_WASM === 'true') {
|
|
58
|
+
return isSqlJsAvailable() ? 'sql.js' : null;
|
|
59
|
+
}
|
|
56
60
|
// Prefer native for performance
|
|
57
61
|
if (isBetterSqlite3Available()) {
|
|
58
62
|
return 'better-sqlite3';
|
|
@@ -102,6 +106,14 @@ export function createDatabaseSync(path = ':memory:', options) {
|
|
|
102
106
|
* @throws Error if no database driver is available
|
|
103
107
|
*/
|
|
104
108
|
export async function createDatabaseAsync(path = ':memory:', options) {
|
|
109
|
+
// Allow env var override for testing WASM path in Docker
|
|
110
|
+
if (process.env.SKILLSMITH_FORCE_WASM === 'true') {
|
|
111
|
+
if (isSqlJsAvailable()) {
|
|
112
|
+
return await createSqlJsDatabase(path, options);
|
|
113
|
+
}
|
|
114
|
+
throw new Error('[Skillsmith] SKILLSMITH_FORCE_WASM is set but sql.js (WASM) is not available.\n\n' +
|
|
115
|
+
'Install sql.js: npm install sql.js');
|
|
116
|
+
}
|
|
105
117
|
// Try native first
|
|
106
118
|
if (isBetterSqlite3Available()) {
|
|
107
119
|
return createBetterSqlite3Database(path, options);
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"createDatabase.js","sourceRoot":"","sources":["../../../src/db/createDatabase.ts"],"names":[],"mappings":"AAAA;;;;;;;;;;;;;;;;;GAiBG;AAGH,OAAO,EACL,2BAA2B,EAC3B,wBAAwB,GACzB,MAAM,kCAAkC,CAAA;AACzC,OAAO,EAAE,mBAAmB,EAAE,gBAAgB,EAAE,MAAM,0BAA0B,CAAA;AAgBhF;;;GAGG;AACH,MAAM,UAAU,sBAAsB;IACpC,MAAM,OAAO,GAAiB,EAAE,CAAA;IAEhC,uBAAuB;IACvB,IAAI,wBAAwB,EAAE,EAAE,CAAC;QAC/B,OAAO,CAAC,IAAI,CAAC,EAAE,IAAI,EAAE,gBAAgB,EAAE,SAAS,EAAE,IAAI,EAAE,CAAC,CAAA;IAC3D,CAAC;SAAM,CAAC;QACN,OAAO,CAAC,IAAI,CAAC;YACX,IAAI,EAAE,gBAAgB;YACtB,SAAS,EAAE,KAAK;YAChB,MAAM,EAAE,uEAAuE;SAChF,CAAC,CAAA;IACJ,CAAC;IAED,oDAAoD;IACpD,IAAI,gBAAgB,EAAE,EAAE,CAAC;QACvB,OAAO,CAAC,IAAI,CAAC,EAAE,IAAI,EAAE,QAAQ,EAAE,SAAS,EAAE,IAAI,EAAE,CAAC,CAAA;IACnD,CAAC;SAAM,CAAC;QACN,OAAO,CAAC,IAAI,CAAC;YACX,IAAI,EAAE,QAAQ;YACd,SAAS,EAAE,KAAK;YAChB,MAAM,EAAE,8BAA8B;SACvC,CAAC,CAAA;IACJ,CAAC;IAED,OAAO,OAAO,CAAA;AAChB,CAAC;AAED;;;GAGG;AACH,MAAM,UAAU,aAAa;IAC3B,gCAAgC;IAChC,IAAI,wBAAwB,EAAE,EAAE,CAAC;QAC/B,OAAO,gBAAgB,CAAA;IACzB,CAAC;IAED,2BAA2B;IAC3B,IAAI,gBAAgB,EAAE,EAAE,CAAC;QACvB,OAAO,QAAQ,CAAA;IACjB,CAAC;IAED,OAAO,IAAI,CAAA;AACb,CAAC;AAED;;;;;;;;;;GAUG;AACH,MAAM,UAAU,kBAAkB,CAAC,OAAe,UAAU,EAAE,OAAyB;IACrF,IAAI,CAAC,wBAAwB,EAAE,EAAE,CAAC;QAChC,MAAM,IAAI,KAAK,CACb,uEAAuE;YACrE,uBAAuB;YACvB,iEAAiE;YACjE,gCAAgC;YAChC,oCAAoC;YACpC,cAAc;YACd,yDAAyD;YACzD,yDAAyD;YACzD,2DAA2D,CAC9D,CAAA;IACH,CAAC;IAED,OAAO,2BAA2B,CAAC,IAAI,EAAE,OAAO,CAAC,CAAA;AACnD,CAAC;AAED;;;;;;;;;;;;GAYG;AACH,MAAM,CAAC,KAAK,UAAU,mBAAmB,CACvC,OAAe,UAAU,EACzB,OAAyB;IAEzB,mBAAmB;IACnB,IAAI,wBAAwB,EAAE,EAAE,CAAC;QAC/B,OAAO,2BAA2B,CAAC,IAAI,EAAE,OAAO,CAAC,CAAA;IACnD,CAAC;IAED,2BAA2B;IAC3B,IAAI,gBAAgB,EAAE,EAAE,CAAC;QACvB,OAAO,CAAC,IAAI,CAAC,2DAA2D,CAAC,CAAA;QACzE,OAAO,MAAM,mBAAmB,CAAC,IAAI,EAAE,OAAO,CAAC,CAAA;IACjD,CAAC;IAED,MAAM,IAAI,KAAK,CACb,8CAA8C;QAC5C,wEAAwE;QACxE,cAAc;QACd,yDAAyD;QACzD,yDAAyD;QACzD,wCAAwC,CAC3C,CAAA;AACH,CAAC;AAED;;;;;;;;;;;;;;;;GAgBG;AACH,MAAM,CAAC,MAAM,cAAc,GAAG,kBAAkB,CAAA"}
|
|
1
|
+
{"version":3,"file":"createDatabase.js","sourceRoot":"","sources":["../../../src/db/createDatabase.ts"],"names":[],"mappings":"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"}
|
|
@@ -0,0 +1,30 @@
|
|
|
1
|
+
/**
|
|
2
|
+
* @fileoverview Migration v5 — skill_versions table
|
|
3
|
+
* @module @skillsmith/core/db/migrations/v5-skill-versions
|
|
4
|
+
* @see SMI-skill-version-tracking Wave 1
|
|
5
|
+
*
|
|
6
|
+
* Creates the skill_versions table for persistent content-hash-based
|
|
7
|
+
* version tracking. Deliberately uses no FK constraint on skill_id so
|
|
8
|
+
* that version history is preserved even when a skill is removed from
|
|
9
|
+
* the registry (soft reference by design).
|
|
10
|
+
*
|
|
11
|
+
* No change_type column in this migration — deferred to Wave 2 per plan.
|
|
12
|
+
*/
|
|
13
|
+
/**
|
|
14
|
+
* SQL for the skill_versions migration (v5).
|
|
15
|
+
*
|
|
16
|
+
* Table columns:
|
|
17
|
+
* - id AUTOINCREMENT surrogate key
|
|
18
|
+
* - skill_id Registry skill identifier (TEXT, not FK)
|
|
19
|
+
* - content_hash SHA-256 hex digest of skill content proxy
|
|
20
|
+
* - recorded_at Unix epoch seconds (DEFAULT unixepoch())
|
|
21
|
+
* - semver Optional semver string from skill metadata
|
|
22
|
+
* - metadata Optional JSON blob for future extension
|
|
23
|
+
*
|
|
24
|
+
* Indexes:
|
|
25
|
+
* - UNIQUE (skill_id, content_hash) — makes recordVersion idempotent
|
|
26
|
+
* via INSERT OR IGNORE
|
|
27
|
+
* - (skill_id, recorded_at DESC) — efficient "latest version" queries
|
|
28
|
+
*/
|
|
29
|
+
export declare const MIGRATION_V5_SQL = "\nCREATE TABLE IF NOT EXISTS skill_versions (\n id INTEGER PRIMARY KEY AUTOINCREMENT,\n skill_id TEXT NOT NULL,\n content_hash TEXT NOT NULL,\n recorded_at INTEGER NOT NULL DEFAULT (unixepoch()),\n semver TEXT,\n metadata TEXT\n);\n\nCREATE UNIQUE INDEX IF NOT EXISTS idx_skill_versions_skill_hash\n ON skill_versions(skill_id, content_hash);\n\nCREATE INDEX IF NOT EXISTS idx_skill_versions_skill_recorded\n ON skill_versions(skill_id, recorded_at DESC);\n";
|
|
30
|
+
//# sourceMappingURL=v5-skill-versions.d.ts.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"v5-skill-versions.d.ts","sourceRoot":"","sources":["../../../../src/db/migrations/v5-skill-versions.ts"],"names":[],"mappings":"AAAA;;;;;;;;;;;GAWG;AAEH;;;;;;;;;;;;;;;GAeG;AACH,eAAO,MAAM,gBAAgB,qfAe5B,CAAA"}
|
|
@@ -0,0 +1,45 @@
|
|
|
1
|
+
/**
|
|
2
|
+
* @fileoverview Migration v5 — skill_versions table
|
|
3
|
+
* @module @skillsmith/core/db/migrations/v5-skill-versions
|
|
4
|
+
* @see SMI-skill-version-tracking Wave 1
|
|
5
|
+
*
|
|
6
|
+
* Creates the skill_versions table for persistent content-hash-based
|
|
7
|
+
* version tracking. Deliberately uses no FK constraint on skill_id so
|
|
8
|
+
* that version history is preserved even when a skill is removed from
|
|
9
|
+
* the registry (soft reference by design).
|
|
10
|
+
*
|
|
11
|
+
* No change_type column in this migration — deferred to Wave 2 per plan.
|
|
12
|
+
*/
|
|
13
|
+
/**
|
|
14
|
+
* SQL for the skill_versions migration (v5).
|
|
15
|
+
*
|
|
16
|
+
* Table columns:
|
|
17
|
+
* - id AUTOINCREMENT surrogate key
|
|
18
|
+
* - skill_id Registry skill identifier (TEXT, not FK)
|
|
19
|
+
* - content_hash SHA-256 hex digest of skill content proxy
|
|
20
|
+
* - recorded_at Unix epoch seconds (DEFAULT unixepoch())
|
|
21
|
+
* - semver Optional semver string from skill metadata
|
|
22
|
+
* - metadata Optional JSON blob for future extension
|
|
23
|
+
*
|
|
24
|
+
* Indexes:
|
|
25
|
+
* - UNIQUE (skill_id, content_hash) — makes recordVersion idempotent
|
|
26
|
+
* via INSERT OR IGNORE
|
|
27
|
+
* - (skill_id, recorded_at DESC) — efficient "latest version" queries
|
|
28
|
+
*/
|
|
29
|
+
export const MIGRATION_V5_SQL = `
|
|
30
|
+
CREATE TABLE IF NOT EXISTS skill_versions (
|
|
31
|
+
id INTEGER PRIMARY KEY AUTOINCREMENT,
|
|
32
|
+
skill_id TEXT NOT NULL,
|
|
33
|
+
content_hash TEXT NOT NULL,
|
|
34
|
+
recorded_at INTEGER NOT NULL DEFAULT (unixepoch()),
|
|
35
|
+
semver TEXT,
|
|
36
|
+
metadata TEXT
|
|
37
|
+
);
|
|
38
|
+
|
|
39
|
+
CREATE UNIQUE INDEX IF NOT EXISTS idx_skill_versions_skill_hash
|
|
40
|
+
ON skill_versions(skill_id, content_hash);
|
|
41
|
+
|
|
42
|
+
CREATE INDEX IF NOT EXISTS idx_skill_versions_skill_recorded
|
|
43
|
+
ON skill_versions(skill_id, recorded_at DESC);
|
|
44
|
+
`;
|
|
45
|
+
//# sourceMappingURL=v5-skill-versions.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"v5-skill-versions.js","sourceRoot":"","sources":["../../../../src/db/migrations/v5-skill-versions.ts"],"names":[],"mappings":"AAAA;;;;;;;;;;;GAWG;AAEH;;;;;;;;;;;;;;;GAeG;AACH,MAAM,CAAC,MAAM,gBAAgB,GAAG;;;;;;;;;;;;;;;CAe/B,CAAA"}
|
package/dist/src/db/schema.d.ts
CHANGED
|
@@ -47,11 +47,17 @@ export declare function runMigrations(db: DatabaseType): number;
|
|
|
47
47
|
/**
|
|
48
48
|
* Create a new database connection with proper configuration
|
|
49
49
|
* This initializes the full schema - use openDatabase for existing databases
|
|
50
|
+
*
|
|
51
|
+
* @deprecated Use createDatabaseAsync() for cross-platform WASM support.
|
|
52
|
+
* This function requires better-sqlite3 native module and will fail on
|
|
53
|
+
* platforms where native modules are unavailable.
|
|
50
54
|
*/
|
|
51
55
|
export declare function createDatabase(path?: string): DatabaseType;
|
|
52
56
|
/**
|
|
53
57
|
* SMI-974: Open an existing database and run any pending migrations
|
|
54
58
|
* Use this for databases that may have been created by different versions
|
|
59
|
+
*
|
|
60
|
+
* @deprecated Use openDatabaseAsync() for cross-platform WASM support.
|
|
55
61
|
*/
|
|
56
62
|
export declare function openDatabase(path: string): DatabaseType;
|
|
57
63
|
/**
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"schema.d.ts","sourceRoot":"","sources":["../../../src/db/schema.ts"],"names":[],"mappings":"AAAA;;;;;;;;;GASG;AAEH,OAAO,KAAK,EAAE,QAAQ,EAAE,MAAM,yBAAyB,CAAA;AAGvD,MAAM,MAAM,YAAY,GAAG,QAAQ,CAAA;AAEnC,eAAO,MAAM,cAAc,IAAI,CAAA;AAE/B;;GAEG;AACH,eAAO,MAAM,UAAU,ykKAiItB,CAAA;AAED;;GAEG;AACH,MAAM,WAAW,SAAS;IACxB,OAAO,EAAE,MAAM,CAAA;IACf,WAAW,EAAE,MAAM,CAAA;IACnB,GAAG,EAAE,MAAM,CAAA;CACZ;AAED,eAAO,MAAM,UAAU,EAAE,SAAS,EA2EjC,CAAA;AAED;;;GAGG;AACH,eAAO,MAAM,kBAAkB,wbAe9B,CAAA;AAED;;GAEG;AACH,wBAAgB,gBAAgB,CAAC,EAAE,EAAE,YAAY,GAAG,IAAI,CAMvD;AAED;;GAEG;AACH,wBAAgB,gBAAgB,CAAC,EAAE,EAAE,YAAY,GAAG,MAAM,CASzD;AAED;;;;;GAKG;AACH,wBAAgB,aAAa,CAAC,EAAE,EAAE,YAAY,GAAG,MAAM,CAyBtD;AAED
|
|
1
|
+
{"version":3,"file":"schema.d.ts","sourceRoot":"","sources":["../../../src/db/schema.ts"],"names":[],"mappings":"AAAA;;;;;;;;;GASG;AAEH,OAAO,KAAK,EAAE,QAAQ,EAAE,MAAM,yBAAyB,CAAA;AAGvD,MAAM,MAAM,YAAY,GAAG,QAAQ,CAAA;AAEnC,eAAO,MAAM,cAAc,IAAI,CAAA;AAE/B;;GAEG;AACH,eAAO,MAAM,UAAU,ykKAiItB,CAAA;AAED;;GAEG;AACH,MAAM,WAAW,SAAS;IACxB,OAAO,EAAE,MAAM,CAAA;IACf,WAAW,EAAE,MAAM,CAAA;IACnB,GAAG,EAAE,MAAM,CAAA;CACZ;AAED,eAAO,MAAM,UAAU,EAAE,SAAS,EA2EjC,CAAA;AAED;;;GAGG;AACH,eAAO,MAAM,kBAAkB,wbAe9B,CAAA;AAED;;GAEG;AACH,wBAAgB,gBAAgB,CAAC,EAAE,EAAE,YAAY,GAAG,IAAI,CAMvD;AAED;;GAEG;AACH,wBAAgB,gBAAgB,CAAC,EAAE,EAAE,YAAY,GAAG,MAAM,CASzD;AAED;;;;;GAKG;AACH,wBAAgB,aAAa,CAAC,EAAE,EAAE,YAAY,GAAG,MAAM,CAyBtD;AAED;;;;;;;GAOG;AACH,wBAAgB,cAAc,CAAC,IAAI,GAAE,MAAmB,GAAG,YAAY,CAUtE;AAED;;;;;GAKG;AACH,wBAAgB,YAAY,CAAC,IAAI,EAAE,MAAM,GAAG,YAAY,CA2BvD;AAED;;GAEG;AACH,wBAAgB,iBAAiB,CAAC,EAAE,EAAE,YAAY,GAAG,MAAM,CAqC1D;AAED;;GAEG;AACH,wBAAgB,aAAa,CAAC,EAAE,EAAE,YAAY,GAAG,IAAI,CAEpD;AAQD;;;;;;;;GAQG;AACH,wBAAsB,mBAAmB,CAAC,IAAI,GAAE,MAAmB,GAAG,OAAO,CAAC,YAAY,CAAC,CAU1F;AAED;;;;;;;;GAQG;AACH,wBAAsB,iBAAiB,CAAC,IAAI,EAAE,MAAM,GAAG,OAAO,CAAC,YAAY,CAAC,CA0B3E"}
|
package/dist/src/db/schema.js
CHANGED
|
@@ -294,6 +294,10 @@ export function runMigrations(db) {
|
|
|
294
294
|
/**
|
|
295
295
|
* Create a new database connection with proper configuration
|
|
296
296
|
* This initializes the full schema - use openDatabase for existing databases
|
|
297
|
+
*
|
|
298
|
+
* @deprecated Use createDatabaseAsync() for cross-platform WASM support.
|
|
299
|
+
* This function requires better-sqlite3 native module and will fail on
|
|
300
|
+
* platforms where native modules are unavailable.
|
|
297
301
|
*/
|
|
298
302
|
export function createDatabase(path = ':memory:') {
|
|
299
303
|
const db = createDatabaseSync(path);
|
|
@@ -306,6 +310,8 @@ export function createDatabase(path = ':memory:') {
|
|
|
306
310
|
/**
|
|
307
311
|
* SMI-974: Open an existing database and run any pending migrations
|
|
308
312
|
* Use this for databases that may have been created by different versions
|
|
313
|
+
*
|
|
314
|
+
* @deprecated Use openDatabaseAsync() for cross-platform WASM support.
|
|
309
315
|
*/
|
|
310
316
|
export function openDatabase(path) {
|
|
311
317
|
const db = createDatabaseSync(path);
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"schema.js","sourceRoot":"","sources":["../../../src/db/schema.ts"],"names":[],"mappings":"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
|
|
1
|
+
{"version":3,"file":"schema.js","sourceRoot":"","sources":["../../../src/db/schema.ts"],"names":[],"mappings":"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"}
|