@rlabs-inc/fsdb 1.0.0 → 1.1.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/core/collection.d.ts +2 -0
- package/dist/core/collection.d.ts.map +1 -1
- package/dist/core/database.d.ts.map +1 -1
- package/dist/index.js +101 -15
- package/dist/index.mjs +101 -15
- package/dist/persistence/markdown.d.ts +1 -1
- package/dist/persistence/markdown.d.ts.map +1 -1
- package/dist/persistence/watcher.d.ts.map +1 -1
- package/dist/vector/search.d.ts +1 -1
- package/dist/vector/search.d.ts.map +1 -1
- package/package.json +1 -1
|
@@ -59,6 +59,8 @@ export interface Collection<S extends SchemaDefinition> {
|
|
|
59
59
|
getStaleIds(): string[];
|
|
60
60
|
/** Manually set stale flag */
|
|
61
61
|
setStale(id: string, stale: boolean): void;
|
|
62
|
+
/** Set metadata (created, updated, stale) for a record - used by persistence layer */
|
|
63
|
+
setMetadata(id: string, created: number, updated: number, stale?: boolean): void;
|
|
62
64
|
/** Clear all data */
|
|
63
65
|
clear(): void;
|
|
64
66
|
}
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"collection.d.ts","sourceRoot":"","sources":["../../src/core/collection.ts"],"names":[],"mappings":"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
|
|
1
|
+
{"version":3,"file":"collection.d.ts","sourceRoot":"","sources":["../../src/core/collection.ts"],"names":[],"mappings":"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"}
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"database.d.ts","sourceRoot":"","sources":["../../src/core/database.ts"],"names":[],"mappings":"AAAA;;;;;GAKG;AAGH,OAAO,EAAoB,KAAK,UAAU,EAAE,MAAM,cAAc,CAAA;AAChE,OAAO,KAAK,EAAE,gBAAgB,EAAE,iBAAiB,EAAE,eAAe,EAAkB,eAAe,EAAE,MAAM,SAAS,CAAA;AAUpH,OAAO,KAAK,EAAE,mBAAmB,EAAE,kBAAkB,EAAE,MAAM,SAAS,CAAA;AAMtE,MAAM,WAAW,oBAAoB,CAAC,CAAC,SAAS,gBAAgB,CAAE,SAAQ,UAAU,CAAC,CAAC,CAAC;IACrF,iCAAiC;IACjC,IAAI,IAAI,OAAO,CAAC,MAAM,CAAC,CAAA;IAEvB,+BAA+B;IAC/B,IAAI,IAAI,OAAO,CAAC,MAAM,CAAC,CAAA;IAEvB,0BAA0B;IAC1B,aAAa,IAAI,IAAI,CAAA;IAErB,yBAAyB;IACzB,YAAY,IAAI,IAAI,CAAA;IAEpB,4BAA4B;IAC5B,QAAQ,CAAC,UAAU,EAAE,OAAO,CAAA;IAE5B,yCAAyC;IACzC,YAAY,CAAC,QAAQ,EAAE,CAAC,KAAK,EAAE,eAAe,CAAC,CAAC,CAAC,KAAK,IAAI,GAAG,OAAO,CAAC,IAAI,CAAC,GAAG,MAAM,IAAI,CAAA;IAEvF,0DAA0D;IAC1D,YAAY,CAAC,EAAE,EAAE,MAAM,EAAE,MAAM,EAAE,MAAM,CAAC,EAAE,SAAS,EAAE,YAAY,GAAG,MAAM,EAAE,EAAE,aAAa,EAAE,MAAM,GAAG,IAAI,CAAA;IAE1G,+BAA+B;IAC/B,MAAM,CAAC,MAAM,EAAE,MAAM,CAAC,EAAE,WAAW,EAAE,YAAY,GAAG,MAAM,EAAE,EAAE,OAAO,CAAC,EAAE,mBAAmB,CAAC,CAAC,CAAC,GAAG,kBAAkB,CAAC,CAAC,CAAC,EAAE,CAAA;IAExH,oDAAoD;IACpD,KAAK,IAAI,IAAI,CAAA;CACd;AAED;;GAEG;AACH,wBAAgB,0BAA0B,CAAC,CAAC,SAAS,gBAAgB,EACnE,IAAI,EAAE,MAAM,EACZ,OAAO,EAAE,iBAAiB,CAAC,CAAC,CAAC,GAAG;IAAE,IAAI,EAAE,MAAM,CAAA;CAAE,GAC/C,oBAAoB,CAAC,CAAC,CAAC,
|
|
1
|
+
{"version":3,"file":"database.d.ts","sourceRoot":"","sources":["../../src/core/database.ts"],"names":[],"mappings":"AAAA;;;;;GAKG;AAGH,OAAO,EAAoB,KAAK,UAAU,EAAE,MAAM,cAAc,CAAA;AAChE,OAAO,KAAK,EAAE,gBAAgB,EAAE,iBAAiB,EAAE,eAAe,EAAkB,eAAe,EAAE,MAAM,SAAS,CAAA;AAUpH,OAAO,KAAK,EAAE,mBAAmB,EAAE,kBAAkB,EAAE,MAAM,SAAS,CAAA;AAMtE,MAAM,WAAW,oBAAoB,CAAC,CAAC,SAAS,gBAAgB,CAAE,SAAQ,UAAU,CAAC,CAAC,CAAC;IACrF,iCAAiC;IACjC,IAAI,IAAI,OAAO,CAAC,MAAM,CAAC,CAAA;IAEvB,+BAA+B;IAC/B,IAAI,IAAI,OAAO,CAAC,MAAM,CAAC,CAAA;IAEvB,0BAA0B;IAC1B,aAAa,IAAI,IAAI,CAAA;IAErB,yBAAyB;IACzB,YAAY,IAAI,IAAI,CAAA;IAEpB,4BAA4B;IAC5B,QAAQ,CAAC,UAAU,EAAE,OAAO,CAAA;IAE5B,yCAAyC;IACzC,YAAY,CAAC,QAAQ,EAAE,CAAC,KAAK,EAAE,eAAe,CAAC,CAAC,CAAC,KAAK,IAAI,GAAG,OAAO,CAAC,IAAI,CAAC,GAAG,MAAM,IAAI,CAAA;IAEvF,0DAA0D;IAC1D,YAAY,CAAC,EAAE,EAAE,MAAM,EAAE,MAAM,EAAE,MAAM,CAAC,EAAE,SAAS,EAAE,YAAY,GAAG,MAAM,EAAE,EAAE,aAAa,EAAE,MAAM,GAAG,IAAI,CAAA;IAE1G,+BAA+B;IAC/B,MAAM,CAAC,MAAM,EAAE,MAAM,CAAC,EAAE,WAAW,EAAE,YAAY,GAAG,MAAM,EAAE,EAAE,OAAO,CAAC,EAAE,mBAAmB,CAAC,CAAC,CAAC,GAAG,kBAAkB,CAAC,CAAC,CAAC,EAAE,CAAA;IAExH,oDAAoD;IACpD,KAAK,IAAI,IAAI,CAAA;CACd;AAED;;GAEG;AACH,wBAAgB,0BAA0B,CAAC,CAAC,SAAS,gBAAgB,EACnE,IAAI,EAAE,MAAM,EACZ,OAAO,EAAE,iBAAiB,CAAC,CAAC,CAAC,GAAG;IAAE,IAAI,EAAE,MAAM,CAAA;CAAE,GAC/C,oBAAoB,CAAC,CAAC,CAAC,CAgRzB;AAMD,MAAM,WAAW,QAAQ;IACvB,oBAAoB;IACpB,QAAQ,CAAC,IAAI,EAAE,MAAM,CAAA;IAErB,gCAAgC;IAChC,QAAQ,CAAC,QAAQ,EAAE,MAAM,CAAA;IAEzB,iCAAiC;IACjC,UAAU,CAAC,CAAC,SAAS,gBAAgB,EACnC,IAAI,EAAE,MAAM,EACZ,OAAO,EAAE,IAAI,CAAC,iBAAiB,CAAC,CAAC,CAAC,EAAE,MAAM,CAAC,GAC1C,oBAAoB,CAAC,CAAC,CAAC,CAAA;IAE1B,iCAAiC;IACjC,aAAa,CAAC,CAAC,SAAS,gBAAgB,EAAE,IAAI,EAAE,MAAM,GAAG,oBAAoB,CAAC,CAAC,CAAC,GAAG,SAAS,CAAA;IAE5F,gCAAgC;IAChC,eAAe,IAAI,MAAM,EAAE,CAAA;IAE3B,4BAA4B;IAC5B,KAAK,IAAI,IAAI,CAAA;CACd;AAED;;GAEG;AACH,wBAAgB,cAAc,CAAC,OAAO,GAAE,eAAoB,GAAG,QAAQ,CA2DtE;AAGD,OAAO,EAAE,cAAc,IAAI,IAAI,EAAE,CAAA"}
|
package/dist/index.js
CHANGED
|
@@ -1702,6 +1702,12 @@ function createCollection(name, options) {
|
|
|
1702
1702
|
staleArr[index] = stale;
|
|
1703
1703
|
metadata.stale.value = staleArr;
|
|
1704
1704
|
},
|
|
1705
|
+
setMetadata(id, created, updated, stale = false) {
|
|
1706
|
+
const index = registry.getIndex(id);
|
|
1707
|
+
if (index === -1)
|
|
1708
|
+
return;
|
|
1709
|
+
setMetadataAt(index, created, updated, stale);
|
|
1710
|
+
},
|
|
1705
1711
|
clear() {
|
|
1706
1712
|
registry.reset();
|
|
1707
1713
|
columns.reset();
|
|
@@ -1714,6 +1720,46 @@ function createCollection(name, options) {
|
|
|
1714
1720
|
}
|
|
1715
1721
|
|
|
1716
1722
|
// src/persistence/markdown.ts
|
|
1723
|
+
var isBun = typeof Bun !== "undefined";
|
|
1724
|
+
async function readFileText(filepath) {
|
|
1725
|
+
if (isBun) {
|
|
1726
|
+
const file = Bun.file(filepath);
|
|
1727
|
+
if (!await file.exists())
|
|
1728
|
+
return null;
|
|
1729
|
+
return await file.text();
|
|
1730
|
+
} else {
|
|
1731
|
+
const fs = await import("fs/promises");
|
|
1732
|
+
try {
|
|
1733
|
+
return await fs.readFile(filepath, "utf-8");
|
|
1734
|
+
} catch {
|
|
1735
|
+
return null;
|
|
1736
|
+
}
|
|
1737
|
+
}
|
|
1738
|
+
}
|
|
1739
|
+
async function writeFile(filepath, content) {
|
|
1740
|
+
if (isBun) {
|
|
1741
|
+
await Bun.write(filepath, content);
|
|
1742
|
+
return true;
|
|
1743
|
+
} else {
|
|
1744
|
+
const fs = await import("fs/promises");
|
|
1745
|
+
await fs.writeFile(filepath, content, "utf-8");
|
|
1746
|
+
return true;
|
|
1747
|
+
}
|
|
1748
|
+
}
|
|
1749
|
+
function listMarkdownFiles(dirpath) {
|
|
1750
|
+
if (isBun) {
|
|
1751
|
+
const glob = new Bun.Glob("*.md");
|
|
1752
|
+
return Array.from(glob.scanSync({ cwd: dirpath }));
|
|
1753
|
+
} else {
|
|
1754
|
+
const fs = require("fs");
|
|
1755
|
+
try {
|
|
1756
|
+
const files = fs.readdirSync(dirpath);
|
|
1757
|
+
return files.filter((f) => f.endsWith(".md"));
|
|
1758
|
+
} catch {
|
|
1759
|
+
return [];
|
|
1760
|
+
}
|
|
1761
|
+
}
|
|
1762
|
+
}
|
|
1717
1763
|
function idToFilename(id) {
|
|
1718
1764
|
return id.replace(/[<>:"/\\|?*\x00-\x1f]/g, "_") + ".md";
|
|
1719
1765
|
}
|
|
@@ -1823,11 +1869,10 @@ function generateMarkdown(record, schema, contentColumn) {
|
|
|
1823
1869
|
}
|
|
1824
1870
|
async function loadFromMarkdown(filepath, schema, contentColumn) {
|
|
1825
1871
|
try {
|
|
1826
|
-
const
|
|
1827
|
-
if (
|
|
1872
|
+
const text = await readFileText(filepath);
|
|
1873
|
+
if (text === null) {
|
|
1828
1874
|
return null;
|
|
1829
1875
|
}
|
|
1830
|
-
const text = await file.text();
|
|
1831
1876
|
const { frontmatter, content } = parseMarkdown(text);
|
|
1832
1877
|
const id = frontmatter.id;
|
|
1833
1878
|
if (!id) {
|
|
@@ -1860,8 +1905,7 @@ async function loadFromMarkdown(filepath, schema, contentColumn) {
|
|
|
1860
1905
|
async function saveToMarkdown(filepath, record, schema, contentColumn) {
|
|
1861
1906
|
try {
|
|
1862
1907
|
const markdown = generateMarkdown(record, schema, contentColumn);
|
|
1863
|
-
await
|
|
1864
|
-
return true;
|
|
1908
|
+
return await writeFile(filepath, markdown);
|
|
1865
1909
|
} catch {
|
|
1866
1910
|
return false;
|
|
1867
1911
|
}
|
|
@@ -1869,8 +1913,7 @@ async function saveToMarkdown(filepath, record, schema, contentColumn) {
|
|
|
1869
1913
|
async function loadFromDirectory(dirpath, schema, contentColumn) {
|
|
1870
1914
|
const results = [];
|
|
1871
1915
|
try {
|
|
1872
|
-
const
|
|
1873
|
-
const files = glob.scanSync({ cwd: dirpath });
|
|
1916
|
+
const files = listMarkdownFiles(dirpath);
|
|
1874
1917
|
for (const filename of files) {
|
|
1875
1918
|
const filepath = `${dirpath}/${filename}`;
|
|
1876
1919
|
const result = await loadFromMarkdown(filepath, schema, contentColumn);
|
|
@@ -1897,6 +1940,34 @@ async function ensureDirectory(dirpath) {
|
|
|
1897
1940
|
|
|
1898
1941
|
// src/persistence/watcher.ts
|
|
1899
1942
|
var import_fs = require("fs");
|
|
1943
|
+
var isBun2 = typeof Bun !== "undefined";
|
|
1944
|
+
async function fileExists(filepath) {
|
|
1945
|
+
if (isBun2) {
|
|
1946
|
+
return await Bun.file(filepath).exists();
|
|
1947
|
+
} else {
|
|
1948
|
+
const fs = await import("fs/promises");
|
|
1949
|
+
try {
|
|
1950
|
+
await fs.access(filepath);
|
|
1951
|
+
return true;
|
|
1952
|
+
} catch {
|
|
1953
|
+
return false;
|
|
1954
|
+
}
|
|
1955
|
+
}
|
|
1956
|
+
}
|
|
1957
|
+
function listMarkdownFilesSync(dirpath) {
|
|
1958
|
+
if (isBun2) {
|
|
1959
|
+
const glob = new Bun.Glob("*.md");
|
|
1960
|
+
return Array.from(glob.scanSync({ cwd: dirpath }));
|
|
1961
|
+
} else {
|
|
1962
|
+
const fs = require("fs");
|
|
1963
|
+
try {
|
|
1964
|
+
const files = fs.readdirSync(dirpath);
|
|
1965
|
+
return files.filter((f) => f.endsWith(".md"));
|
|
1966
|
+
} catch {
|
|
1967
|
+
return [];
|
|
1968
|
+
}
|
|
1969
|
+
}
|
|
1970
|
+
}
|
|
1900
1971
|
function createFileWatcher(options) {
|
|
1901
1972
|
const {
|
|
1902
1973
|
dirpath,
|
|
@@ -1918,8 +1989,7 @@ function createFileWatcher(options) {
|
|
|
1918
1989
|
if (_savingIds.has(id)) {
|
|
1919
1990
|
return;
|
|
1920
1991
|
}
|
|
1921
|
-
const
|
|
1922
|
-
const exists = await file.exists();
|
|
1992
|
+
const exists = await fileExists(filepath);
|
|
1923
1993
|
let event;
|
|
1924
1994
|
if (!exists) {
|
|
1925
1995
|
if (!_knownFiles.has(filename))
|
|
@@ -1978,8 +2048,7 @@ function createFileWatcher(options) {
|
|
|
1978
2048
|
if (_isWatching.value)
|
|
1979
2049
|
return;
|
|
1980
2050
|
try {
|
|
1981
|
-
const
|
|
1982
|
-
for (const filename of glob.scanSync({ cwd: dirpath })) {
|
|
2051
|
+
for (const filename of listMarkdownFilesSync(dirpath)) {
|
|
1983
2052
|
_knownFiles.add(filename);
|
|
1984
2053
|
}
|
|
1985
2054
|
_watcher = import_fs.watch(dirpath, { recursive: false }, (eventType, filename) => {
|
|
@@ -2025,6 +2094,18 @@ function createFileWatcher(options) {
|
|
|
2025
2094
|
}
|
|
2026
2095
|
|
|
2027
2096
|
// src/vector/search.ts
|
|
2097
|
+
var isBun3 = typeof Bun !== "undefined";
|
|
2098
|
+
function hashContent(content) {
|
|
2099
|
+
if (isBun3) {
|
|
2100
|
+
return BigInt(Bun.hash(content));
|
|
2101
|
+
} else {
|
|
2102
|
+
let hash = 5381n;
|
|
2103
|
+
for (let i = 0;i < content.length; i++) {
|
|
2104
|
+
hash = (hash << 5n) + hash + BigInt(content.charCodeAt(i));
|
|
2105
|
+
}
|
|
2106
|
+
return hash;
|
|
2107
|
+
}
|
|
2108
|
+
}
|
|
2028
2109
|
function toFloat32Array(arr) {
|
|
2029
2110
|
if (arr instanceof Float32Array)
|
|
2030
2111
|
return arr;
|
|
@@ -2094,7 +2175,7 @@ function createEmbeddingManager() {
|
|
|
2094
2175
|
const hashes = new ReactiveMap;
|
|
2095
2176
|
return {
|
|
2096
2177
|
setEmbedding(id, column, content) {
|
|
2097
|
-
const hash =
|
|
2178
|
+
const hash = hashContent(content);
|
|
2098
2179
|
let columnHashes = hashes.get(id);
|
|
2099
2180
|
if (!columnHashes) {
|
|
2100
2181
|
columnHashes = new Map;
|
|
@@ -2109,7 +2190,7 @@ function createEmbeddingManager() {
|
|
|
2109
2190
|
const storedHash = columnHashes.get(column);
|
|
2110
2191
|
if (storedHash === undefined)
|
|
2111
2192
|
return false;
|
|
2112
|
-
const currentHash =
|
|
2193
|
+
const currentHash = hashContent(currentContent);
|
|
2113
2194
|
return storedHash !== currentHash;
|
|
2114
2195
|
},
|
|
2115
2196
|
getHash(id, column) {
|
|
@@ -2271,6 +2352,7 @@ function createPersistentCollection(name, options) {
|
|
|
2271
2352
|
isStale: baseCollection.isStale.bind(baseCollection),
|
|
2272
2353
|
getStaleIds: baseCollection.getStaleIds.bind(baseCollection),
|
|
2273
2354
|
setStale: baseCollection.setStale.bind(baseCollection),
|
|
2355
|
+
setMetadata: baseCollection.setMetadata.bind(baseCollection),
|
|
2274
2356
|
clear() {
|
|
2275
2357
|
baseCollection.clear();
|
|
2276
2358
|
embeddingManager.reset();
|
|
@@ -2281,7 +2363,10 @@ function createPersistentCollection(name, options) {
|
|
|
2281
2363
|
for (const { id, record } of loaded) {
|
|
2282
2364
|
const index = baseCollection.registry.allocate(id);
|
|
2283
2365
|
baseCollection.columns.setRecord(index, record);
|
|
2284
|
-
|
|
2366
|
+
const created = record.created ?? Date.now();
|
|
2367
|
+
const updated = record.updated ?? created;
|
|
2368
|
+
const stale = record.stale ?? false;
|
|
2369
|
+
baseCollection.setMetadata(id, created, updated, stale);
|
|
2285
2370
|
if (contentColumn) {
|
|
2286
2371
|
const content = record[contentColumn];
|
|
2287
2372
|
if (content && isContentStale(id, content)) {
|
|
@@ -2375,7 +2460,8 @@ function createDatabase(options = {}) {
|
|
|
2375
2460
|
} else if (options.local) {
|
|
2376
2461
|
basePath = `${process.cwd()}/.fsdb/${name}`;
|
|
2377
2462
|
} else {
|
|
2378
|
-
|
|
2463
|
+
const home = typeof Bun !== "undefined" ? Bun.env.HOME : process.env.HOME;
|
|
2464
|
+
basePath = `${home}/.fsdb/${name}`;
|
|
2379
2465
|
}
|
|
2380
2466
|
const collections = new ReactiveMap;
|
|
2381
2467
|
return {
|
package/dist/index.mjs
CHANGED
|
@@ -1611,6 +1611,12 @@ function createCollection(name, options) {
|
|
|
1611
1611
|
staleArr[index] = stale;
|
|
1612
1612
|
metadata.stale.value = staleArr;
|
|
1613
1613
|
},
|
|
1614
|
+
setMetadata(id, created, updated, stale = false) {
|
|
1615
|
+
const index = registry.getIndex(id);
|
|
1616
|
+
if (index === -1)
|
|
1617
|
+
return;
|
|
1618
|
+
setMetadataAt(index, created, updated, stale);
|
|
1619
|
+
},
|
|
1614
1620
|
clear() {
|
|
1615
1621
|
registry.reset();
|
|
1616
1622
|
columns.reset();
|
|
@@ -1623,6 +1629,46 @@ function createCollection(name, options) {
|
|
|
1623
1629
|
}
|
|
1624
1630
|
|
|
1625
1631
|
// src/persistence/markdown.ts
|
|
1632
|
+
var isBun = typeof Bun !== "undefined";
|
|
1633
|
+
async function readFileText(filepath) {
|
|
1634
|
+
if (isBun) {
|
|
1635
|
+
const file = Bun.file(filepath);
|
|
1636
|
+
if (!await file.exists())
|
|
1637
|
+
return null;
|
|
1638
|
+
return await file.text();
|
|
1639
|
+
} else {
|
|
1640
|
+
const fs = await import("fs/promises");
|
|
1641
|
+
try {
|
|
1642
|
+
return await fs.readFile(filepath, "utf-8");
|
|
1643
|
+
} catch {
|
|
1644
|
+
return null;
|
|
1645
|
+
}
|
|
1646
|
+
}
|
|
1647
|
+
}
|
|
1648
|
+
async function writeFile(filepath, content) {
|
|
1649
|
+
if (isBun) {
|
|
1650
|
+
await Bun.write(filepath, content);
|
|
1651
|
+
return true;
|
|
1652
|
+
} else {
|
|
1653
|
+
const fs = await import("fs/promises");
|
|
1654
|
+
await fs.writeFile(filepath, content, "utf-8");
|
|
1655
|
+
return true;
|
|
1656
|
+
}
|
|
1657
|
+
}
|
|
1658
|
+
function listMarkdownFiles(dirpath) {
|
|
1659
|
+
if (isBun) {
|
|
1660
|
+
const glob = new Bun.Glob("*.md");
|
|
1661
|
+
return Array.from(glob.scanSync({ cwd: dirpath }));
|
|
1662
|
+
} else {
|
|
1663
|
+
const fs = __require("fs");
|
|
1664
|
+
try {
|
|
1665
|
+
const files = fs.readdirSync(dirpath);
|
|
1666
|
+
return files.filter((f) => f.endsWith(".md"));
|
|
1667
|
+
} catch {
|
|
1668
|
+
return [];
|
|
1669
|
+
}
|
|
1670
|
+
}
|
|
1671
|
+
}
|
|
1626
1672
|
function idToFilename(id) {
|
|
1627
1673
|
return id.replace(/[<>:"/\\|?*\x00-\x1f]/g, "_") + ".md";
|
|
1628
1674
|
}
|
|
@@ -1732,11 +1778,10 @@ function generateMarkdown(record, schema, contentColumn) {
|
|
|
1732
1778
|
}
|
|
1733
1779
|
async function loadFromMarkdown(filepath, schema, contentColumn) {
|
|
1734
1780
|
try {
|
|
1735
|
-
const
|
|
1736
|
-
if (
|
|
1781
|
+
const text = await readFileText(filepath);
|
|
1782
|
+
if (text === null) {
|
|
1737
1783
|
return null;
|
|
1738
1784
|
}
|
|
1739
|
-
const text = await file.text();
|
|
1740
1785
|
const { frontmatter, content } = parseMarkdown(text);
|
|
1741
1786
|
const id = frontmatter.id;
|
|
1742
1787
|
if (!id) {
|
|
@@ -1769,8 +1814,7 @@ async function loadFromMarkdown(filepath, schema, contentColumn) {
|
|
|
1769
1814
|
async function saveToMarkdown(filepath, record, schema, contentColumn) {
|
|
1770
1815
|
try {
|
|
1771
1816
|
const markdown = generateMarkdown(record, schema, contentColumn);
|
|
1772
|
-
await
|
|
1773
|
-
return true;
|
|
1817
|
+
return await writeFile(filepath, markdown);
|
|
1774
1818
|
} catch {
|
|
1775
1819
|
return false;
|
|
1776
1820
|
}
|
|
@@ -1778,8 +1822,7 @@ async function saveToMarkdown(filepath, record, schema, contentColumn) {
|
|
|
1778
1822
|
async function loadFromDirectory(dirpath, schema, contentColumn) {
|
|
1779
1823
|
const results = [];
|
|
1780
1824
|
try {
|
|
1781
|
-
const
|
|
1782
|
-
const files = glob.scanSync({ cwd: dirpath });
|
|
1825
|
+
const files = listMarkdownFiles(dirpath);
|
|
1783
1826
|
for (const filename of files) {
|
|
1784
1827
|
const filepath = `${dirpath}/${filename}`;
|
|
1785
1828
|
const result = await loadFromMarkdown(filepath, schema, contentColumn);
|
|
@@ -1806,6 +1849,34 @@ async function ensureDirectory(dirpath) {
|
|
|
1806
1849
|
|
|
1807
1850
|
// src/persistence/watcher.ts
|
|
1808
1851
|
import { watch } from "fs";
|
|
1852
|
+
var isBun2 = typeof Bun !== "undefined";
|
|
1853
|
+
async function fileExists(filepath) {
|
|
1854
|
+
if (isBun2) {
|
|
1855
|
+
return await Bun.file(filepath).exists();
|
|
1856
|
+
} else {
|
|
1857
|
+
const fs = await import("fs/promises");
|
|
1858
|
+
try {
|
|
1859
|
+
await fs.access(filepath);
|
|
1860
|
+
return true;
|
|
1861
|
+
} catch {
|
|
1862
|
+
return false;
|
|
1863
|
+
}
|
|
1864
|
+
}
|
|
1865
|
+
}
|
|
1866
|
+
function listMarkdownFilesSync(dirpath) {
|
|
1867
|
+
if (isBun2) {
|
|
1868
|
+
const glob = new Bun.Glob("*.md");
|
|
1869
|
+
return Array.from(glob.scanSync({ cwd: dirpath }));
|
|
1870
|
+
} else {
|
|
1871
|
+
const fs = __require("fs");
|
|
1872
|
+
try {
|
|
1873
|
+
const files = fs.readdirSync(dirpath);
|
|
1874
|
+
return files.filter((f) => f.endsWith(".md"));
|
|
1875
|
+
} catch {
|
|
1876
|
+
return [];
|
|
1877
|
+
}
|
|
1878
|
+
}
|
|
1879
|
+
}
|
|
1809
1880
|
function createFileWatcher(options) {
|
|
1810
1881
|
const {
|
|
1811
1882
|
dirpath,
|
|
@@ -1827,8 +1898,7 @@ function createFileWatcher(options) {
|
|
|
1827
1898
|
if (_savingIds.has(id)) {
|
|
1828
1899
|
return;
|
|
1829
1900
|
}
|
|
1830
|
-
const
|
|
1831
|
-
const exists = await file.exists();
|
|
1901
|
+
const exists = await fileExists(filepath);
|
|
1832
1902
|
let event;
|
|
1833
1903
|
if (!exists) {
|
|
1834
1904
|
if (!_knownFiles.has(filename))
|
|
@@ -1887,8 +1957,7 @@ function createFileWatcher(options) {
|
|
|
1887
1957
|
if (_isWatching.value)
|
|
1888
1958
|
return;
|
|
1889
1959
|
try {
|
|
1890
|
-
const
|
|
1891
|
-
for (const filename of glob.scanSync({ cwd: dirpath })) {
|
|
1960
|
+
for (const filename of listMarkdownFilesSync(dirpath)) {
|
|
1892
1961
|
_knownFiles.add(filename);
|
|
1893
1962
|
}
|
|
1894
1963
|
_watcher = watch(dirpath, { recursive: false }, (eventType, filename) => {
|
|
@@ -1934,6 +2003,18 @@ function createFileWatcher(options) {
|
|
|
1934
2003
|
}
|
|
1935
2004
|
|
|
1936
2005
|
// src/vector/search.ts
|
|
2006
|
+
var isBun3 = typeof Bun !== "undefined";
|
|
2007
|
+
function hashContent(content) {
|
|
2008
|
+
if (isBun3) {
|
|
2009
|
+
return BigInt(Bun.hash(content));
|
|
2010
|
+
} else {
|
|
2011
|
+
let hash = 5381n;
|
|
2012
|
+
for (let i = 0;i < content.length; i++) {
|
|
2013
|
+
hash = (hash << 5n) + hash + BigInt(content.charCodeAt(i));
|
|
2014
|
+
}
|
|
2015
|
+
return hash;
|
|
2016
|
+
}
|
|
2017
|
+
}
|
|
1937
2018
|
function toFloat32Array(arr) {
|
|
1938
2019
|
if (arr instanceof Float32Array)
|
|
1939
2020
|
return arr;
|
|
@@ -2003,7 +2084,7 @@ function createEmbeddingManager() {
|
|
|
2003
2084
|
const hashes = new ReactiveMap;
|
|
2004
2085
|
return {
|
|
2005
2086
|
setEmbedding(id, column, content) {
|
|
2006
|
-
const hash =
|
|
2087
|
+
const hash = hashContent(content);
|
|
2007
2088
|
let columnHashes = hashes.get(id);
|
|
2008
2089
|
if (!columnHashes) {
|
|
2009
2090
|
columnHashes = new Map;
|
|
@@ -2018,7 +2099,7 @@ function createEmbeddingManager() {
|
|
|
2018
2099
|
const storedHash = columnHashes.get(column);
|
|
2019
2100
|
if (storedHash === undefined)
|
|
2020
2101
|
return false;
|
|
2021
|
-
const currentHash =
|
|
2102
|
+
const currentHash = hashContent(currentContent);
|
|
2022
2103
|
return storedHash !== currentHash;
|
|
2023
2104
|
},
|
|
2024
2105
|
getHash(id, column) {
|
|
@@ -2180,6 +2261,7 @@ function createPersistentCollection(name, options) {
|
|
|
2180
2261
|
isStale: baseCollection.isStale.bind(baseCollection),
|
|
2181
2262
|
getStaleIds: baseCollection.getStaleIds.bind(baseCollection),
|
|
2182
2263
|
setStale: baseCollection.setStale.bind(baseCollection),
|
|
2264
|
+
setMetadata: baseCollection.setMetadata.bind(baseCollection),
|
|
2183
2265
|
clear() {
|
|
2184
2266
|
baseCollection.clear();
|
|
2185
2267
|
embeddingManager.reset();
|
|
@@ -2190,7 +2272,10 @@ function createPersistentCollection(name, options) {
|
|
|
2190
2272
|
for (const { id, record } of loaded) {
|
|
2191
2273
|
const index = baseCollection.registry.allocate(id);
|
|
2192
2274
|
baseCollection.columns.setRecord(index, record);
|
|
2193
|
-
|
|
2275
|
+
const created = record.created ?? Date.now();
|
|
2276
|
+
const updated = record.updated ?? created;
|
|
2277
|
+
const stale = record.stale ?? false;
|
|
2278
|
+
baseCollection.setMetadata(id, created, updated, stale);
|
|
2194
2279
|
if (contentColumn) {
|
|
2195
2280
|
const content = record[contentColumn];
|
|
2196
2281
|
if (content && isContentStale(id, content)) {
|
|
@@ -2284,7 +2369,8 @@ function createDatabase(options = {}) {
|
|
|
2284
2369
|
} else if (options.local) {
|
|
2285
2370
|
basePath = `${process.cwd()}/.fsdb/${name}`;
|
|
2286
2371
|
} else {
|
|
2287
|
-
|
|
2372
|
+
const home = typeof Bun !== "undefined" ? Bun.env.HOME : process.env.HOME;
|
|
2373
|
+
basePath = `${home}/.fsdb/${name}`;
|
|
2288
2374
|
}
|
|
2289
2375
|
const collections = new ReactiveMap;
|
|
2290
2376
|
return {
|
|
@@ -2,7 +2,7 @@
|
|
|
2
2
|
* Markdown Persistence
|
|
3
3
|
*
|
|
4
4
|
* Parse and generate markdown files with YAML frontmatter.
|
|
5
|
-
* Uses Bun file APIs
|
|
5
|
+
* Uses Bun file APIs when available, falls back to Node.js fs/promises.
|
|
6
6
|
*/
|
|
7
7
|
import type { SchemaDefinition, RecordWithMeta } from '../core/types';
|
|
8
8
|
/** Convert an ID to a safe filename */
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"markdown.d.ts","sourceRoot":"","sources":["../../src/persistence/markdown.ts"],"names":[],"mappings":"AAAA;;;;;GAKG;AAEH,OAAO,KAAK,EAAE,gBAAgB,EAAkB,cAAc,EAAE,MAAM,eAAe,CAAA;
|
|
1
|
+
{"version":3,"file":"markdown.d.ts","sourceRoot":"","sources":["../../src/persistence/markdown.ts"],"names":[],"mappings":"AAAA;;;;;GAKG;AAEH,OAAO,KAAK,EAAE,gBAAgB,EAAkB,cAAc,EAAE,MAAM,eAAe,CAAA;AA2DrF,uCAAuC;AACvC,wBAAgB,YAAY,CAAC,EAAE,EAAE,MAAM,GAAG,MAAM,CAG/C;AAED,iCAAiC;AACjC,wBAAgB,YAAY,CAAC,QAAQ,EAAE,MAAM,GAAG,MAAM,CAErD;AAMD,UAAU,cAAc;IACtB,WAAW,EAAE,MAAM,CAAC,MAAM,EAAE,OAAO,CAAC,CAAA;IACpC,OAAO,EAAE,MAAM,CAAA;CAChB;AAED;;;;;;;;GAQG;AACH,wBAAgB,aAAa,CAAC,IAAI,EAAE,MAAM,GAAG,cAAc,CAqC1D;AAkFD;;GAEG;AACH,wBAAgB,gBAAgB,CAAC,CAAC,SAAS,gBAAgB,EACzD,MAAM,EAAE,cAAc,CAAC,CAAC,CAAC,EACzB,MAAM,EAAE,CAAC,EACT,aAAa,CAAC,EAAE,MAAM,CAAC,GACtB,MAAM,CA4BR;AAMD;;GAEG;AACH,wBAAsB,gBAAgB,CAAC,CAAC,SAAS,gBAAgB,EAC/D,QAAQ,EAAE,MAAM,EAChB,MAAM,EAAE,CAAC,EACT,aAAa,CAAC,EAAE,MAAM,CAAC,GACtB,OAAO,CAAC;IAAE,EAAE,EAAE,MAAM,CAAC;IAAC,MAAM,EAAE,OAAO,CAAC,cAAc,CAAC,CAAC,CAAC,CAAC,CAAA;CAAE,GAAG,IAAI,CAAC,CA6CpE;AAED;;GAEG;AACH,wBAAsB,cAAc,CAAC,CAAC,SAAS,gBAAgB,EAC7D,QAAQ,EAAE,MAAM,EAChB,MAAM,EAAE,cAAc,CAAC,CAAC,CAAC,EACzB,MAAM,EAAE,CAAC,EACT,aAAa,CAAC,EAAE,MAAM,CAAC,GACtB,OAAO,CAAC,OAAO,CAAC,CAOlB;AAED;;GAEG;AACH,wBAAsB,iBAAiB,CAAC,CAAC,SAAS,gBAAgB,EAChE,OAAO,EAAE,MAAM,EACf,MAAM,EAAE,CAAC,EACT,aAAa,CAAC,EAAE,MAAM,CAAC,GACtB,OAAO,CAAC;IAAE,EAAE,EAAE,MAAM,CAAC;IAAC,MAAM,EAAE,OAAO,CAAC,cAAc,CAAC,CAAC,CAAC,CAAC,CAAA;CAAE,EAAE,CAAC,CAkB/D;AAED;;GAEG;AACH,wBAAsB,kBAAkB,CAAC,QAAQ,EAAE,MAAM,GAAG,OAAO,CAAC,OAAO,CAAC,CAQ3E;AAED;;GAEG;AACH,wBAAsB,eAAe,CAAC,OAAO,EAAE,MAAM,GAAG,OAAO,CAAC,IAAI,CAAC,CAGpE"}
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"watcher.d.ts","sourceRoot":"","sources":["../../src/persistence/watcher.ts"],"names":[],"mappings":"AAAA;;;;;GAKG;AAIH,OAAO,KAAK,EAAE,gBAAgB,EAAkB,eAAe,EAAE,MAAM,eAAe,CAAA;
|
|
1
|
+
{"version":3,"file":"watcher.d.ts","sourceRoot":"","sources":["../../src/persistence/watcher.ts"],"names":[],"mappings":"AAAA;;;;;GAKG;AAIH,OAAO,KAAK,EAAE,gBAAgB,EAAkB,eAAe,EAAE,MAAM,eAAe,CAAA;AAsCtF,MAAM,WAAW,WAAW,CAAC,CAAC,SAAS,gBAAgB;IACrD,qBAAqB;IACrB,KAAK,IAAI,IAAI,CAAA;IAEb,oBAAoB;IACpB,IAAI,IAAI,IAAI,CAAA;IAEZ,4BAA4B;IAC5B,QAAQ,CAAC,UAAU,EAAE,OAAO,CAAA;IAE5B,2CAA2C;IAC3C,QAAQ,CAAC,QAAQ,EAAE,CAAC,KAAK,EAAE,eAAe,CAAC,CAAC,CAAC,KAAK,IAAI,GAAG,OAAO,CAAC,IAAI,CAAC,GAAG,MAAM,IAAI,CAAA;IAEnF,wDAAwD;IACxD,UAAU,CAAC,EAAE,EAAE,MAAM,GAAG,IAAI,CAAA;IAE5B,wBAAwB;IACxB,WAAW,CAAC,EAAE,EAAE,MAAM,GAAG,IAAI,CAAA;CAC9B;AAED,MAAM,WAAW,cAAc,CAAC,CAAC,SAAS,gBAAgB;IACxD,yBAAyB;IACzB,OAAO,EAAE,MAAM,CAAA;IAEf,+BAA+B;IAC/B,MAAM,EAAE,CAAC,CAAA;IAET,qBAAqB;IACrB,aAAa,CAAC,EAAE,MAAM,CAAC,CAAA;IAEvB,0BAA0B;IAC1B,UAAU,CAAC,EAAE,MAAM,CAAA;IAEnB,8CAA8C;IAC9C,eAAe,CAAC,EAAE,CAAC,EAAE,EAAE,MAAM,EAAE,OAAO,EAAE,MAAM,KAAK,OAAO,CAAA;CAC3D;AAED;;GAEG;AACH,wBAAgB,iBAAiB,CAAC,CAAC,SAAS,gBAAgB,EAC1D,OAAO,EAAE,cAAc,CAAC,CAAC,CAAC,GACzB,WAAW,CAAC,CAAC,CAAC,CAkKhB"}
|
package/dist/vector/search.d.ts
CHANGED
|
@@ -44,7 +44,7 @@ export interface EmbeddingManager {
|
|
|
44
44
|
/**
|
|
45
45
|
* Create an embedding manager for stale detection
|
|
46
46
|
*
|
|
47
|
-
* Uses Bun.hash
|
|
47
|
+
* Uses fast content hashing for fingerprinting (Bun.hash when available)
|
|
48
48
|
*/
|
|
49
49
|
export declare function createEmbeddingManager(): EmbeddingManager;
|
|
50
50
|
/**
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"search.d.ts","sourceRoot":"","sources":["../../src/vector/search.ts"],"names":[],"mappings":"AAAA;;;;;GAKG;AAGH,OAAO,KAAK,EAAE,UAAU,EAAE,MAAM,oBAAoB,CAAA;AACpD,OAAO,KAAK,EACV,gBAAgB,EAEhB,mBAAmB,EACnB,kBAAkB,EACnB,MAAM,eAAe,CAAA;
|
|
1
|
+
{"version":3,"file":"search.d.ts","sourceRoot":"","sources":["../../src/vector/search.ts"],"names":[],"mappings":"AAAA;;;;;GAKG;AAGH,OAAO,KAAK,EAAE,UAAU,EAAE,MAAM,oBAAoB,CAAA;AACpD,OAAO,KAAK,EACV,gBAAgB,EAEhB,mBAAmB,EACnB,kBAAkB,EACnB,MAAM,eAAe,CAAA;AA0BtB;;GAEG;AACH,wBAAgB,cAAc,CAAC,GAAG,EAAE,MAAM,EAAE,GAAG,YAAY,GAAG,YAAY,CAGzE;AAED;;GAEG;AACH,wBAAgB,eAAe,CAAC,GAAG,EAAE,YAAY,GAAG,YAAY,CAY/D;AAED;;;;GAIG;AACH,wBAAgB,gBAAgB,CAC9B,CAAC,EAAE,YAAY,GAAG,MAAM,EAAE,EAC1B,CAAC,EAAE,YAAY,GAAG,MAAM,EAAE,GACzB,MAAM,CAsBR;AAED;;;;GAIG;AACH,wBAAgB,qBAAqB,CACnC,KAAK,EAAE,YAAY,EACnB,OAAO,EAAE,YAAY,EAAE,EACvB,OAAO,EAAE,MAAM,EAAE,EACjB,IAAI,EAAE,MAAM,GACX;IAAE,KAAK,EAAE,MAAM,CAAC;IAAC,UAAU,EAAE,MAAM,CAAA;CAAE,EAAE,CAmCzC;AAMD,MAAM,WAAW,gBAAgB;IAC/B,sDAAsD;IACtD,YAAY,CAAC,EAAE,EAAE,MAAM,EAAE,MAAM,EAAE,MAAM,EAAE,OAAO,EAAE,MAAM,GAAG,IAAI,CAAA;IAE/D,uDAAuD;IACvD,OAAO,CAAC,EAAE,EAAE,MAAM,EAAE,MAAM,EAAE,MAAM,EAAE,cAAc,EAAE,MAAM,GAAG,OAAO,CAAA;IAEpE,2CAA2C;IAC3C,OAAO,CAAC,EAAE,EAAE,MAAM,EAAE,MAAM,EAAE,MAAM,GAAG,MAAM,GAAG,SAAS,CAAA;IAEvD,8BAA8B;IAC9B,SAAS,CAAC,EAAE,EAAE,MAAM,EAAE,MAAM,EAAE,MAAM,GAAG,IAAI,CAAA;IAE3C,uBAAuB;IACvB,KAAK,IAAI,IAAI,CAAA;CACd;AAED;;;;GAIG;AACH,wBAAgB,sBAAsB,IAAI,gBAAgB,CA4CzD;AAMD;;;;;;;GAOG;AACH,wBAAgB,YAAY,CAAC,CAAC,SAAS,gBAAgB,EACrD,UAAU,EAAE,UAAU,CAAC,CAAC,CAAC,EACzB,YAAY,EAAE,MAAM,CAAC,EACrB,WAAW,EAAE,YAAY,GAAG,MAAM,EAAE,EACpC,OAAO,GAAE,mBAAmB,CAAC,CAAC,CAAM,GACnC,kBAAkB,CAAC,CAAC,CAAC,EAAE,CA4CzB"}
|
package/package.json
CHANGED
|
@@ -1,6 +1,6 @@
|
|
|
1
1
|
{
|
|
2
2
|
"name": "@rlabs-inc/fsdb",
|
|
3
|
-
"version": "1.
|
|
3
|
+
"version": "1.1.0",
|
|
4
4
|
"description": "Fractal State Database - A reactive in memory database with markdown files persistence made with parallel arrays and fine-grained reactivity.",
|
|
5
5
|
"main": "dist/index.js",
|
|
6
6
|
"module": "dist/index.mjs",
|