@fireproof/core 0.19.11-dev-dryrun → 0.19.11-dev-dryrun4
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/{chunk-MAK4D54P.js → chunk-OFGPKRCM.js} +11 -1
- package/chunk-OFGPKRCM.js.map +1 -0
- package/{chunk-XINRLWR3.js → chunk-WS3YRPIA.js} +4 -4
- package/{gateway-VWWKLHUI.js → gateway-5FCWPX5W.js} +3 -3
- package/{gateway-7OM6OSYK.js → gateway-H7UD6TNB.js} +2 -2
- package/index.cjs +331 -378
- package/index.cjs.map +1 -1
- package/index.d.cts +9 -5
- package/index.d.ts +9 -5
- package/index.global.js +270 -318
- package/index.global.js.map +1 -1
- package/index.js +273 -329
- package/index.js.map +1 -1
- package/{key-bag-file-DFMW6ZM6.js → key-bag-file-WADZBHYG.js} +3 -3
- package/{key-bag-indexdb-R2RWGSQ4.js → key-bag-indexdb-PGVAI3FJ.js} +3 -3
- package/{mem-filesystem-BZQZLUR6.js → mem-filesystem-YPPJV7Q2.js} +3 -3
- package/metafile-cjs.json +1 -1
- package/metafile-esm.json +1 -1
- package/metafile-iife.json +1 -1
- package/{node-filesystem-7YZR3POJ.js → node-filesystem-INX4ZTHE.js} +3 -3
- package/package.json +1 -1
- package/tests/fireproof/all-gateway.test.ts +12 -13
- package/tests/fireproof/utils.test.ts +19 -0
- package/tests/www/todo-local.html +1 -1
- package/tests/www/todo.html +12 -15
- package/{utils-AISQB3PB.js → utils-QO2HIWGI.js} +3 -3
- package/chunk-MAK4D54P.js.map +0 -1
- package/tests/fireproof/convert_uint8.py +0 -27
- /package/{chunk-XINRLWR3.js.map → chunk-WS3YRPIA.js.map} +0 -0
- /package/{gateway-VWWKLHUI.js.map → gateway-5FCWPX5W.js.map} +0 -0
- /package/{gateway-7OM6OSYK.js.map → gateway-H7UD6TNB.js.map} +0 -0
- /package/{key-bag-file-DFMW6ZM6.js.map → key-bag-file-WADZBHYG.js.map} +0 -0
- /package/{key-bag-indexdb-R2RWGSQ4.js.map → key-bag-indexdb-PGVAI3FJ.js.map} +0 -0
- /package/{mem-filesystem-BZQZLUR6.js.map → mem-filesystem-YPPJV7Q2.js.map} +0 -0
- /package/{node-filesystem-7YZR3POJ.js.map → node-filesystem-INX4ZTHE.js.map} +0 -0
- /package/tests/fireproof/cars/{bafkreidxwt2nhvbl4fnqfw3ctlt6zbrir4kqwmjo5im6rf4q5si27kgo2i.js → bafkreidxwt2nhvbl4fnqfw3ctlt6zbrir4kqwmjo5im6rf4q5si27kgo2i.ts} +0 -0
- /package/{utils-AISQB3PB.js.map → utils-QO2HIWGI.js.map} +0 -0
package/index.js
CHANGED
@@ -6,7 +6,7 @@ import {
|
|
6
6
|
getFileSystem,
|
7
7
|
getPath,
|
8
8
|
toArrayBuffer
|
9
|
-
} from "./chunk-
|
9
|
+
} from "./chunk-WS3YRPIA.js";
|
10
10
|
import {
|
11
11
|
INDEXDB_VERSION
|
12
12
|
} from "./chunk-PB4BKL4O.js";
|
@@ -24,7 +24,7 @@ import {
|
|
24
24
|
getName,
|
25
25
|
getStore,
|
26
26
|
isNotFoundError
|
27
|
-
} from "./chunk-
|
27
|
+
} from "./chunk-OFGPKRCM.js";
|
28
28
|
|
29
29
|
// src/database.ts
|
30
30
|
import { ResolveOnce as ResolveOnce6 } from "@adviser/cement";
|
@@ -253,8 +253,8 @@ var UnixFSFileBuilder = class {
|
|
253
253
|
|
254
254
|
// src/blockstore/store.ts
|
255
255
|
import pLimit2 from "p-limit";
|
256
|
-
import { format, parse } from "@ipld/dag-json";
|
257
|
-
import { exception2Result, ResolveOnce as ResolveOnce3, Result as
|
256
|
+
import { format as format2, parse as parse2 } from "@ipld/dag-json";
|
257
|
+
import { exception2Result, ResolveOnce as ResolveOnce3, Result as Result5 } from "@adviser/cement";
|
258
258
|
|
259
259
|
// src/types.ts
|
260
260
|
function isFalsy(value) {
|
@@ -668,14 +668,14 @@ var keyBagProviderFactories = new Map(
|
|
668
668
|
{
|
669
669
|
protocol: "file:",
|
670
670
|
factory: async (url, sthis) => {
|
671
|
-
const { KeyBagProviderFile } = await import("./key-bag-file-
|
671
|
+
const { KeyBagProviderFile } = await import("./key-bag-file-WADZBHYG.js");
|
672
672
|
return new KeyBagProviderFile(url, sthis);
|
673
673
|
}
|
674
674
|
},
|
675
675
|
{
|
676
676
|
protocol: "indexdb:",
|
677
677
|
factory: async (url, sthis) => {
|
678
|
-
const { KeyBagProviderIndexDB } = await import("./key-bag-indexdb-
|
678
|
+
const { KeyBagProviderIndexDB } = await import("./key-bag-indexdb-PGVAI3FJ.js");
|
679
679
|
return new KeyBagProviderIndexDB(url, sthis);
|
680
680
|
}
|
681
681
|
}
|
@@ -820,7 +820,7 @@ async function commit(params, t, done, opts = { noLoader: false, compact: false
|
|
820
820
|
}
|
821
821
|
async function prepareCarFiles(encoder, threshold, rootBlock, t) {
|
822
822
|
const carFiles = [];
|
823
|
-
threshold = threshold ||
|
823
|
+
threshold = threshold || 128e3 * 8;
|
824
824
|
let clonedt = new CarTransaction(t.parent, { add: false, noLoader: false });
|
825
825
|
clonedt.putSync(rootBlock.cid, rootBlock.bytes);
|
826
826
|
let newsize = CBW.blockLength(toCIDBlock(rootBlock));
|
@@ -1032,7 +1032,8 @@ var Loader = class {
|
|
1032
1032
|
carLog: this.carLog,
|
1033
1033
|
carStore: fstore,
|
1034
1034
|
WALStore: await this.WALStore(),
|
1035
|
-
metaStore: await this.metaStore()
|
1035
|
+
metaStore: await this.metaStore(),
|
1036
|
+
threshold: this.ebOpts.threshold
|
1036
1037
|
};
|
1037
1038
|
return this.commitQueue.enqueue(async () => {
|
1038
1039
|
await this.cacheTransaction(t);
|
@@ -1540,26 +1541,7 @@ var FragmentGateway = class {
|
|
1540
1541
|
if (this.innerGW.subscribe) {
|
1541
1542
|
return this.innerGW.subscribe(url, callback);
|
1542
1543
|
} else {
|
1543
|
-
|
1544
|
-
let interval = 100;
|
1545
|
-
const fetchData = async () => {
|
1546
|
-
const result = await this.innerGW.get(url);
|
1547
|
-
if (result.isOk()) {
|
1548
|
-
const data = result.Ok();
|
1549
|
-
if (!lastData || !data.every((value, index2) => lastData && value === lastData[index2])) {
|
1550
|
-
lastData = data;
|
1551
|
-
callback(data);
|
1552
|
-
interval = 100;
|
1553
|
-
} else {
|
1554
|
-
interval *= 2;
|
1555
|
-
}
|
1556
|
-
}
|
1557
|
-
timeoutId = setTimeout(fetchData, interval);
|
1558
|
-
};
|
1559
|
-
let timeoutId = setTimeout(fetchData, interval);
|
1560
|
-
return Result3.Ok(() => {
|
1561
|
-
clearTimeout(timeoutId);
|
1562
|
-
});
|
1544
|
+
return Result3.Err(this.logger.Error().Url(url).Msg("subscribe not supported").AsError());
|
1563
1545
|
}
|
1564
1546
|
}
|
1565
1547
|
async delete(url) {
|
@@ -1577,12 +1559,119 @@ var FragmentGateway = class {
|
|
1577
1559
|
}
|
1578
1560
|
};
|
1579
1561
|
|
1562
|
+
// src/blockstore/meta-key-helper.ts
|
1563
|
+
import { format, parse } from "@ipld/dag-json";
|
1564
|
+
import { EventBlock, decodeEventBlock } from "@web3-storage/pail/clock";
|
1565
|
+
import { CID as CID2 } from "multiformats";
|
1566
|
+
import { base64pad } from "multiformats/bases/base64";
|
1567
|
+
import { Result as Result4 } from "@adviser/cement";
|
1568
|
+
async function decodeGatewayMetaBytesToDbMeta(sthis, byteHeads) {
|
1569
|
+
const crdtEntries = JSON.parse(sthis.txt.decode(byteHeads));
|
1570
|
+
if (!crdtEntries.length) {
|
1571
|
+
sthis.logger.Debug().Str("byteHeads", new TextDecoder().decode(byteHeads)).Msg("No CRDT entries found");
|
1572
|
+
return [];
|
1573
|
+
}
|
1574
|
+
if (!crdtEntries.map) {
|
1575
|
+
sthis.logger.Debug().Str("crdtEntries", JSON.stringify(crdtEntries)).Msg("No data in CRDT entries");
|
1576
|
+
return [];
|
1577
|
+
}
|
1578
|
+
return Promise.all(
|
1579
|
+
crdtEntries.map(async (crdtEntry) => {
|
1580
|
+
const eventBlock = await decodeEventBlock(base64pad.decode(crdtEntry.data));
|
1581
|
+
const dbMeta = parse(sthis.txt.decode(eventBlock.value.data.dbMeta));
|
1582
|
+
return {
|
1583
|
+
eventCid: eventBlock.cid,
|
1584
|
+
parents: crdtEntry.parents,
|
1585
|
+
dbMeta
|
1586
|
+
};
|
1587
|
+
})
|
1588
|
+
);
|
1589
|
+
}
|
1590
|
+
async function setCryptoKeyFromGatewayMetaPayload(uri, sthis, data) {
|
1591
|
+
try {
|
1592
|
+
sthis.logger.Debug().Str("uri", uri.toString()).Msg("Setting crypto key from gateway meta payload");
|
1593
|
+
const keyInfo = await decodeGatewayMetaBytesToDbMeta(sthis, data);
|
1594
|
+
if (keyInfo.length) {
|
1595
|
+
const dbMeta = keyInfo[0].dbMeta;
|
1596
|
+
if (dbMeta.key) {
|
1597
|
+
const kb = await getKeyBag(sthis);
|
1598
|
+
const keyName = getStoreKeyName(uri);
|
1599
|
+
const res = await kb.setNamedKey(keyName, dbMeta.key);
|
1600
|
+
if (res.isErr()) {
|
1601
|
+
sthis.logger.Debug().Str("keyName", keyName).Str("dbMeta.key", dbMeta.key).Msg("Failed to set named key");
|
1602
|
+
throw res.Err();
|
1603
|
+
}
|
1604
|
+
}
|
1605
|
+
sthis.logger.Debug().Str("dbMeta.key", dbMeta.key).Str("uri", uri.toString()).Msg("Set crypto key from gateway meta payload");
|
1606
|
+
return Result4.Ok(dbMeta);
|
1607
|
+
}
|
1608
|
+
sthis.logger.Debug().Str("data", new TextDecoder().decode(data)).Msg("No crypto in gateway meta payload");
|
1609
|
+
return Result4.Ok(void 0);
|
1610
|
+
} catch (error) {
|
1611
|
+
sthis.logger.Debug().Err(error).Msg("Failed to set crypto key from gateway meta payload");
|
1612
|
+
return Result4.Err(error);
|
1613
|
+
}
|
1614
|
+
}
|
1615
|
+
async function addCryptoKeyToGatewayMetaPayload(uri, sthis, body) {
|
1616
|
+
try {
|
1617
|
+
sthis.logger.Debug().Str("uri", uri.toString()).Msg("Adding crypto key to gateway meta payload");
|
1618
|
+
const keyName = getStoreKeyName(uri);
|
1619
|
+
const kb = await getKeyBag(sthis);
|
1620
|
+
const res = await kb.getNamedExtractableKey(keyName, true);
|
1621
|
+
if (res.isErr()) {
|
1622
|
+
sthis.logger.Error().Str("keyName", keyName).Msg("Failed to get named extractable key");
|
1623
|
+
throw res.Err();
|
1624
|
+
}
|
1625
|
+
const keyData = await res.Ok().extract();
|
1626
|
+
const dbMetas = await decodeGatewayMetaBytesToDbMeta(sthis, body);
|
1627
|
+
const { dbMeta, parents } = dbMetas[0];
|
1628
|
+
const parentLinks = parents.map((p) => CID2.parse(p));
|
1629
|
+
dbMeta.key = keyData.keyStr;
|
1630
|
+
const events = await Promise.all([dbMeta].map((dbMeta2) => createDbMetaEventBlock(sthis, dbMeta2, parentLinks)));
|
1631
|
+
const encoded = await encodeEventsWithParents(sthis, events, parentLinks);
|
1632
|
+
sthis.logger.Debug().Str("uri", uri.toString()).Msg("Added crypto key to gateway meta payload");
|
1633
|
+
return Result4.Ok(encoded);
|
1634
|
+
} catch (error) {
|
1635
|
+
sthis.logger.Error().Err(error).Msg("Failed to add crypto key to gateway meta payload");
|
1636
|
+
return Result4.Err(error);
|
1637
|
+
}
|
1638
|
+
}
|
1639
|
+
function getStoreKeyName(url) {
|
1640
|
+
const storeKeyName = [url.getParam("localName") || url.getParam("name")];
|
1641
|
+
const idx = url.getParam("index");
|
1642
|
+
if (idx) {
|
1643
|
+
storeKeyName.push(idx);
|
1644
|
+
}
|
1645
|
+
storeKeyName.push("data");
|
1646
|
+
return `@${storeKeyName.join(":")}@`;
|
1647
|
+
}
|
1648
|
+
async function createDbMetaEventBlock(sthis, dbMeta, parents) {
|
1649
|
+
const event = await EventBlock.create(
|
1650
|
+
{
|
1651
|
+
dbMeta: sthis.txt.encode(format(dbMeta))
|
1652
|
+
},
|
1653
|
+
parents
|
1654
|
+
);
|
1655
|
+
return event;
|
1656
|
+
}
|
1657
|
+
async function encodeEventsWithParents(sthis, events, parents) {
|
1658
|
+
const crdtEntries = events.map((event) => {
|
1659
|
+
const base64String = base64pad.encode(event.bytes);
|
1660
|
+
return {
|
1661
|
+
cid: event.cid.toString(),
|
1662
|
+
data: base64String,
|
1663
|
+
parents: parents.map((p) => p.toString())
|
1664
|
+
};
|
1665
|
+
});
|
1666
|
+
return sthis.txt.encode(JSON.stringify(crdtEntries));
|
1667
|
+
}
|
1668
|
+
|
1580
1669
|
// src/blockstore/store.ts
|
1581
1670
|
function guardVersion(url) {
|
1582
1671
|
if (!url.hasParam("version")) {
|
1583
|
-
return
|
1672
|
+
return Result5.Err(`missing version: ${url.toString()}`);
|
1584
1673
|
}
|
1585
|
-
return
|
1674
|
+
return Result5.Ok(url);
|
1586
1675
|
}
|
1587
1676
|
var BaseStoreImpl = class {
|
1588
1677
|
constructor(name, url, opts, sthis, logger) {
|
@@ -1605,6 +1694,9 @@ var BaseStoreImpl = class {
|
|
1605
1694
|
onClosed(fn) {
|
1606
1695
|
this._onClosed.push(fn);
|
1607
1696
|
}
|
1697
|
+
async ready() {
|
1698
|
+
return;
|
1699
|
+
}
|
1608
1700
|
async keyedCrypto() {
|
1609
1701
|
return keyedCryptoFactory(this._url, await this.keybag(), this.sthis);
|
1610
1702
|
}
|
@@ -1650,18 +1742,87 @@ var BaseStoreImpl = class {
|
|
1650
1742
|
return version;
|
1651
1743
|
}
|
1652
1744
|
};
|
1745
|
+
var MetaStoreImpl = class extends BaseStoreImpl {
|
1746
|
+
// remote: boolean;
|
1747
|
+
constructor(sthis, name, url, opts) {
|
1748
|
+
super(name, url, { ...opts }, sthis, ensureLogger(sthis, "MetaStoreImpl"));
|
1749
|
+
this.storeType = "meta";
|
1750
|
+
this.subscribers = /* @__PURE__ */ new Map();
|
1751
|
+
this.parents = [];
|
1752
|
+
if (
|
1753
|
+
/*this.remote && */
|
1754
|
+
opts.gateway.subscribe
|
1755
|
+
) {
|
1756
|
+
this.onStarted(async () => {
|
1757
|
+
this.logger.Debug().Str("url", this.url().toString()).Msg("Subscribing to the gateway");
|
1758
|
+
opts.gateway.subscribe?.(this.url(), async (message) => {
|
1759
|
+
this.logger.Debug().Msg("Received message from gateway");
|
1760
|
+
const dbMetas = await decodeGatewayMetaBytesToDbMeta(this.sthis, message);
|
1761
|
+
await Promise.all(
|
1762
|
+
dbMetas.map((dbMeta) => this.loader?.taskManager?.handleEvent(dbMeta.eventCid, dbMeta.parents, dbMeta.dbMeta))
|
1763
|
+
);
|
1764
|
+
this.updateParentsFromDbMetas(dbMetas);
|
1765
|
+
});
|
1766
|
+
});
|
1767
|
+
}
|
1768
|
+
}
|
1769
|
+
updateParentsFromDbMetas(dbMetas) {
|
1770
|
+
const cids = dbMetas.map((m) => m.eventCid);
|
1771
|
+
const dbMetaParents = dbMetas.flatMap((m) => m.parents);
|
1772
|
+
const uniqueParentsMap = new Map([...this.parents, ...cids].map((p) => [p.toString(), p]));
|
1773
|
+
const dbMetaParentsSet = new Set(dbMetaParents.map((p) => p.toString()));
|
1774
|
+
this.parents = Array.from(uniqueParentsMap.values()).filter((p) => !dbMetaParentsSet.has(p.toString()));
|
1775
|
+
}
|
1776
|
+
async handleByteHeads(byteHeads) {
|
1777
|
+
return await decodeGatewayMetaBytesToDbMeta(this.sthis, byteHeads);
|
1778
|
+
}
|
1779
|
+
async load() {
|
1780
|
+
const branch = "main";
|
1781
|
+
const url = await this.gateway.buildUrl(this.url(), branch);
|
1782
|
+
if (url.isErr()) {
|
1783
|
+
throw this.logger.Error().Result("buildUrl", url).Str("branch", branch).Msg("got error from gateway.buildUrl").AsError();
|
1784
|
+
}
|
1785
|
+
const bytes = await this.gateway.get(url.Ok());
|
1786
|
+
if (bytes.isErr()) {
|
1787
|
+
if (isNotFoundError(bytes)) {
|
1788
|
+
return void 0;
|
1789
|
+
}
|
1790
|
+
throw this.logger.Error().Url(url.Ok()).Result("bytes:", bytes).Msg("gateway get").AsError();
|
1791
|
+
}
|
1792
|
+
const dbMetas = await this.handleByteHeads(bytes.Ok());
|
1793
|
+
await this.loader?.handleDbMetasFromStore(dbMetas.map((m) => m.dbMeta));
|
1794
|
+
this.updateParentsFromDbMetas(dbMetas);
|
1795
|
+
return dbMetas.map((m) => m.dbMeta);
|
1796
|
+
}
|
1797
|
+
async save(meta, branch) {
|
1798
|
+
branch = branch || "main";
|
1799
|
+
this.logger.Debug().Str("branch", branch).Any("meta", meta).Msg("saving meta");
|
1800
|
+
const event = await createDbMetaEventBlock(this.sthis, meta, this.parents);
|
1801
|
+
const bytes = await encodeEventsWithParents(this.sthis, [event], this.parents);
|
1802
|
+
const url = await this.gateway.buildUrl(this.url(), branch);
|
1803
|
+
if (url.isErr()) {
|
1804
|
+
throw this.logger.Error().Err(url.Err()).Str("branch", branch).Msg("got error from gateway.buildUrl").AsError();
|
1805
|
+
}
|
1806
|
+
this.parents = [event.cid];
|
1807
|
+
const res = await this.gateway.put(url.Ok(), bytes);
|
1808
|
+
if (res.isErr()) {
|
1809
|
+
throw this.logger.Error().Err(res.Err()).Msg("got error from gateway.put").AsError();
|
1810
|
+
}
|
1811
|
+
return res;
|
1812
|
+
}
|
1813
|
+
async close() {
|
1814
|
+
await this.gateway.close(this.url());
|
1815
|
+
this._onClosed.forEach((fn) => fn());
|
1816
|
+
return Result5.Ok(void 0);
|
1817
|
+
}
|
1818
|
+
async destroy() {
|
1819
|
+
return this.gateway.destroy(this.url());
|
1820
|
+
}
|
1821
|
+
};
|
1653
1822
|
var DataStoreImpl = class extends BaseStoreImpl {
|
1654
1823
|
// readonly tag: string = "car-base";
|
1655
1824
|
constructor(sthis, name, url, opts) {
|
1656
|
-
super(
|
1657
|
-
name,
|
1658
|
-
url,
|
1659
|
-
{
|
1660
|
-
...opts
|
1661
|
-
},
|
1662
|
-
sthis,
|
1663
|
-
ensureLogger(sthis, "DataStoreImpl")
|
1664
|
-
);
|
1825
|
+
super(name, url, { ...opts }, sthis, ensureLogger(sthis, "DataStoreImpl"));
|
1665
1826
|
this.storeType = "data";
|
1666
1827
|
}
|
1667
1828
|
async load(cid) {
|
@@ -1699,7 +1860,7 @@ var DataStoreImpl = class extends BaseStoreImpl {
|
|
1699
1860
|
async close() {
|
1700
1861
|
await this.gateway.close(this.url());
|
1701
1862
|
this._onClosed.forEach((fn) => fn());
|
1702
|
-
return
|
1863
|
+
return Result5.Ok(void 0);
|
1703
1864
|
}
|
1704
1865
|
destroy() {
|
1705
1866
|
return this.gateway.destroy(this.url());
|
@@ -1707,46 +1868,43 @@ var DataStoreImpl = class extends BaseStoreImpl {
|
|
1707
1868
|
};
|
1708
1869
|
var WALStoreImpl = class extends BaseStoreImpl {
|
1709
1870
|
constructor(loader, url, opts) {
|
1710
|
-
super(
|
1711
|
-
loader.name,
|
1712
|
-
url,
|
1713
|
-
{
|
1714
|
-
...opts
|
1715
|
-
},
|
1716
|
-
loader.sthis,
|
1717
|
-
ensureLogger(loader.sthis, "WALStoreImpl")
|
1718
|
-
);
|
1871
|
+
super(loader.name, url, { ...opts }, loader.sthis, ensureLogger(loader.sthis, "WALStoreImpl"));
|
1719
1872
|
this.storeType = "wal";
|
1720
1873
|
this._ready = new ResolveOnce3();
|
1721
1874
|
this.walState = { operations: [], noLoaderOps: [], fileOperations: [] };
|
1722
1875
|
this.processing = void 0;
|
1723
1876
|
this.processQueue = new CommitQueue();
|
1724
|
-
this.ready = async () => {
|
1725
|
-
return this._ready.once(async () => {
|
1726
|
-
const walState = await this.load().catch((e) => {
|
1727
|
-
this.logger.Error().Any("error", e).Msg("error loading wal");
|
1728
|
-
return void 0;
|
1729
|
-
});
|
1730
|
-
if (!walState) {
|
1731
|
-
this.walState.operations = [];
|
1732
|
-
this.walState.fileOperations = [];
|
1733
|
-
} else {
|
1734
|
-
this.walState.operations = walState.operations || [];
|
1735
|
-
this.walState.fileOperations = walState.fileOperations || [];
|
1736
|
-
}
|
1737
|
-
});
|
1738
|
-
};
|
1739
1877
|
this.loader = loader;
|
1740
1878
|
}
|
1879
|
+
async ready() {
|
1880
|
+
return this._ready.once(async () => {
|
1881
|
+
const walState = await this.load().catch((e) => {
|
1882
|
+
this.logger.Error().Any("error", e).Msg("error loading wal");
|
1883
|
+
return void 0;
|
1884
|
+
});
|
1885
|
+
if (!walState) {
|
1886
|
+
this.walState.operations = [];
|
1887
|
+
this.walState.fileOperations = [];
|
1888
|
+
} else {
|
1889
|
+
this.walState.operations = walState.operations || [];
|
1890
|
+
this.walState.fileOperations = walState.fileOperations || [];
|
1891
|
+
}
|
1892
|
+
});
|
1893
|
+
}
|
1741
1894
|
async enqueue(dbMeta, opts) {
|
1742
1895
|
await this.ready();
|
1743
|
-
if (opts.
|
1896
|
+
if (opts.compact) {
|
1897
|
+
this.walState.operations = [];
|
1898
|
+
this.walState.noLoaderOps = [dbMeta];
|
1899
|
+
} else if (opts.noLoader) {
|
1744
1900
|
this.walState.noLoaderOps.push(dbMeta);
|
1745
1901
|
} else {
|
1746
1902
|
this.walState.operations.push(dbMeta);
|
1747
1903
|
}
|
1748
1904
|
await this.save(this.walState);
|
1749
|
-
|
1905
|
+
if (!opts.noLoader) {
|
1906
|
+
void this.process();
|
1907
|
+
}
|
1750
1908
|
}
|
1751
1909
|
async enqueueFile(fileCid, publicFile = false) {
|
1752
1910
|
await this.ready();
|
@@ -1773,7 +1931,7 @@ var WALStoreImpl = class extends BaseStoreImpl {
|
|
1773
1931
|
const fileOperations = [...this.walState.fileOperations];
|
1774
1932
|
const uploads = [];
|
1775
1933
|
const noLoaderOps = [...this.walState.noLoaderOps];
|
1776
|
-
const limit = pLimit2(
|
1934
|
+
const limit = pLimit2(3);
|
1777
1935
|
if (operations.length + fileOperations.length + noLoaderOps.length === 0) return;
|
1778
1936
|
for (const dbMeta of noLoaderOps) {
|
1779
1937
|
const uploadP = limit(async () => {
|
@@ -1849,7 +2007,7 @@ var WALStoreImpl = class extends BaseStoreImpl {
|
|
1849
2007
|
throw this.logger.Error().Err(bytes.Err()).Msg("error get").AsError();
|
1850
2008
|
}
|
1851
2009
|
try {
|
1852
|
-
return bytes &&
|
2010
|
+
return bytes && parse2(this.sthis.txt.decode(bytes.Ok()));
|
1853
2011
|
} catch (e) {
|
1854
2012
|
throw this.logger.Error().Err(e).Msg("error parse").AsError();
|
1855
2013
|
}
|
@@ -1861,7 +2019,7 @@ var WALStoreImpl = class extends BaseStoreImpl {
|
|
1861
2019
|
}
|
1862
2020
|
let encoded;
|
1863
2021
|
try {
|
1864
|
-
encoded =
|
2022
|
+
encoded = format2(state);
|
1865
2023
|
} catch (e) {
|
1866
2024
|
throw this.logger.Error().Err(e).Any("state", state).Msg("error format").AsError();
|
1867
2025
|
}
|
@@ -1870,263 +2028,15 @@ var WALStoreImpl = class extends BaseStoreImpl {
|
|
1870
2028
|
throw this.logger.Error().Err(res.Err()).Str("filePath", filepath.Ok().toString()).Msg("error saving").AsError();
|
1871
2029
|
}
|
1872
2030
|
}
|
1873
|
-
async close() {
|
1874
|
-
await this.gateway.close(this.url());
|
1875
|
-
this._onClosed.forEach((fn) => fn());
|
1876
|
-
return Result4.Ok(void 0);
|
1877
|
-
}
|
1878
|
-
destroy() {
|
1879
|
-
return this.gateway.destroy(this.url());
|
1880
|
-
}
|
1881
|
-
};
|
1882
|
-
|
1883
|
-
// src/blockstore/store-meta.ts
|
1884
|
-
import { format as format2, parse as parse2 } from "@ipld/dag-json";
|
1885
|
-
import { EventBlock, decodeEventBlock } from "@web3-storage/pail/clock";
|
1886
|
-
import { CID as CID2 } from "multiformats";
|
1887
|
-
import { Result as Result5 } from "@adviser/cement";
|
1888
|
-
|
1889
|
-
// src/runtime/index.ts
|
1890
|
-
var runtime_exports = {};
|
1891
|
-
__export(runtime_exports, {
|
1892
|
-
FILESTORE_VERSION: () => FILESTORE_VERSION,
|
1893
|
-
INDEXDB_VERSION: () => INDEXDB_VERSION,
|
1894
|
-
files: () => files_exports,
|
1895
|
-
getFileName: () => getFileName,
|
1896
|
-
getFileSystem: () => getFileSystem,
|
1897
|
-
getPath: () => getPath,
|
1898
|
-
kb: () => key_bag_exports,
|
1899
|
-
kc: () => keyed_crypto_exports,
|
1900
|
-
mf: () => wait_pr_multiformats_exports,
|
1901
|
-
runtimeFn: () => runtimeFn2,
|
1902
|
-
toArrayBuffer: () => toArrayBuffer
|
1903
|
-
});
|
1904
|
-
|
1905
|
-
// src/runtime/wait-pr-multiformats/index.ts
|
1906
|
-
var wait_pr_multiformats_exports = {};
|
1907
|
-
__export(wait_pr_multiformats_exports, {
|
1908
|
-
block: () => block_exports,
|
1909
|
-
codec: () => codec_interface_exports
|
1910
|
-
});
|
1911
|
-
|
1912
|
-
// src/runtime/wait-pr-multiformats/codec-interface.ts
|
1913
|
-
var codec_interface_exports = {};
|
1914
|
-
|
1915
|
-
// src/runtime/index.ts
|
1916
|
-
import { runtimeFn as runtimeFn2 } from "@adviser/cement";
|
1917
|
-
|
1918
|
-
// src/blockstore/store-meta.ts
|
1919
|
-
async function decodeGatewayMetaBytesToDbMeta(sthis, byteHeads) {
|
1920
|
-
const crdtEntries = JSON.parse(sthis.txt.decode(byteHeads));
|
1921
|
-
return Promise.all(
|
1922
|
-
crdtEntries.map(async (crdtEntry) => {
|
1923
|
-
const eventBlock = await decodeEventBlock(decodeFromBase64(crdtEntry.data));
|
1924
|
-
const dbMeta = parse2(sthis.txt.decode(eventBlock.value.data.dbMeta));
|
1925
|
-
return {
|
1926
|
-
eventCid: eventBlock.cid,
|
1927
|
-
parents: crdtEntry.parents,
|
1928
|
-
dbMeta
|
1929
|
-
};
|
1930
|
-
})
|
1931
|
-
);
|
1932
|
-
}
|
1933
|
-
async function setCryptoKeyFromGatewayMetaPayload(uri, sthis, data) {
|
1934
|
-
try {
|
1935
|
-
sthis.logger.Debug().Str("uri", uri.toString()).Msg("Setting crypto key from gateway meta payload");
|
1936
|
-
const keyInfo = await decodeGatewayMetaBytesToDbMeta(sthis, data);
|
1937
|
-
if (keyInfo.length) {
|
1938
|
-
const dbMeta = keyInfo[0].dbMeta;
|
1939
|
-
if (dbMeta.key) {
|
1940
|
-
const kb = await key_bag_exports.getKeyBag(sthis);
|
1941
|
-
const keyName = getStoreKeyName(uri);
|
1942
|
-
const res = await kb.setNamedKey(keyName, dbMeta.key);
|
1943
|
-
if (res.isErr()) {
|
1944
|
-
sthis.logger.Debug().Str("keyName", keyName).Str("dbMeta.key", dbMeta.key).Msg("Failed to set named key");
|
1945
|
-
throw res.Err();
|
1946
|
-
}
|
1947
|
-
}
|
1948
|
-
sthis.logger.Debug().Str("dbMeta.key", dbMeta.key).Str("uri", uri.toString()).Msg("Set crypto key from gateway meta payload");
|
1949
|
-
return Result5.Ok(dbMeta);
|
1950
|
-
}
|
1951
|
-
sthis.logger.Debug().Str("data", new TextDecoder().decode(data)).Msg("No crypto in gateway meta payload");
|
1952
|
-
return Result5.Ok(void 0);
|
1953
|
-
} catch (error) {
|
1954
|
-
sthis.logger.Debug().Err(error).Msg("Failed to set crypto key from gateway meta payload");
|
1955
|
-
return Result5.Err(error);
|
1956
|
-
}
|
1957
|
-
}
|
1958
|
-
async function addCryptoKeyToGatewayMetaPayload(uri, sthis, body) {
|
1959
|
-
try {
|
1960
|
-
sthis.logger.Debug().Str("uri", uri.toString()).Msg("Adding crypto key to gateway meta payload");
|
1961
|
-
const keyName = getStoreKeyName(uri);
|
1962
|
-
const kb = await key_bag_exports.getKeyBag(sthis);
|
1963
|
-
const res = await kb.getNamedExtractableKey(keyName, true);
|
1964
|
-
if (res.isErr()) {
|
1965
|
-
sthis.logger.Error().Str("keyName", keyName).Msg("Failed to get named extractable key");
|
1966
|
-
throw res.Err();
|
1967
|
-
}
|
1968
|
-
const keyData = await res.Ok().extract();
|
1969
|
-
const dbMetas = await decodeGatewayMetaBytesToDbMeta(sthis, body);
|
1970
|
-
const { dbMeta, parents } = dbMetas[0];
|
1971
|
-
const parentLinks = parents.map((p) => CID2.parse(p));
|
1972
|
-
dbMeta.key = keyData.keyStr;
|
1973
|
-
const events = await Promise.all([dbMeta].map((dbMeta2) => createDbMetaEventBlock(sthis, dbMeta2, parentLinks)));
|
1974
|
-
const encoded = await encodeEventsWithParents(sthis, events, parentLinks);
|
1975
|
-
sthis.logger.Debug().Str("uri", uri.toString()).Msg("Added crypto key to gateway meta payload");
|
1976
|
-
return Result5.Ok(encoded);
|
1977
|
-
} catch (error) {
|
1978
|
-
sthis.logger.Error().Err(error).Msg("Failed to add crypto key to gateway meta payload");
|
1979
|
-
return Result5.Err(error);
|
1980
|
-
}
|
1981
|
-
}
|
1982
|
-
function getStoreKeyName(url) {
|
1983
|
-
const storeKeyName = [url.getParam("localName") || url.getParam("name")];
|
1984
|
-
const idx = url.getParam("index");
|
1985
|
-
if (idx) {
|
1986
|
-
storeKeyName.push(idx);
|
1987
|
-
}
|
1988
|
-
storeKeyName.push("data");
|
1989
|
-
return `@${storeKeyName.join(":")}@`;
|
1990
|
-
}
|
1991
|
-
async function createDbMetaEventBlock(sthis, dbMeta, parents) {
|
1992
|
-
const event = await EventBlock.create(
|
1993
|
-
{
|
1994
|
-
dbMeta: sthis.txt.encode(format2(dbMeta))
|
1995
|
-
},
|
1996
|
-
parents
|
1997
|
-
);
|
1998
|
-
return event;
|
1999
|
-
}
|
2000
|
-
async function encodeEventsWithParents(sthis, events, parents) {
|
2001
|
-
const crdtEntries = events.map((event) => {
|
2002
|
-
const base64String = encodeToBase64(event.bytes);
|
2003
|
-
return {
|
2004
|
-
cid: event.cid.toString(),
|
2005
|
-
data: base64String,
|
2006
|
-
parents: parents.map((p) => p.toString())
|
2007
|
-
};
|
2008
|
-
});
|
2009
|
-
return sthis.txt.encode(JSON.stringify(crdtEntries));
|
2010
|
-
}
|
2011
|
-
var MetaStoreImpl = class extends BaseStoreImpl {
|
2012
|
-
constructor(sthis, name, url, opts, remote) {
|
2013
|
-
super(
|
2014
|
-
name,
|
2015
|
-
url,
|
2016
|
-
{
|
2017
|
-
...opts
|
2018
|
-
},
|
2019
|
-
sthis,
|
2020
|
-
ensureLogger(sthis, "MetaStoreImpl")
|
2021
|
-
);
|
2022
|
-
this.storeType = "meta";
|
2023
|
-
this.subscribers = /* @__PURE__ */ new Map();
|
2024
|
-
this.parents = [];
|
2025
|
-
if (remote && opts.gateway.subscribe) {
|
2026
|
-
this.onStarted(async () => {
|
2027
|
-
this.logger.Debug().Str("url", this.url().toString()).Msg("Subscribing to the gateway");
|
2028
|
-
opts.gateway.subscribe?.(this.url(), async (message) => {
|
2029
|
-
this.logger.Debug().Msg("Received message from gateway");
|
2030
|
-
const dbMetas = await decodeGatewayMetaBytesToDbMeta(this.sthis, message);
|
2031
|
-
await Promise.all(
|
2032
|
-
dbMetas.map((dbMeta) => this.loader?.taskManager?.handleEvent(dbMeta.eventCid, dbMeta.parents, dbMeta.dbMeta))
|
2033
|
-
);
|
2034
|
-
});
|
2035
|
-
});
|
2036
|
-
}
|
2037
|
-
}
|
2038
|
-
async handleByteHeads(byteHeads) {
|
2039
|
-
return await decodeGatewayMetaBytesToDbMeta(this.sthis, byteHeads);
|
2040
|
-
}
|
2041
|
-
async load() {
|
2042
|
-
const branch = "main";
|
2043
|
-
const url = await this.gateway.buildUrl(this.url(), branch);
|
2044
|
-
if (url.isErr()) {
|
2045
|
-
throw this.logger.Error().Result("buildUrl", url).Str("branch", branch).Msg("got error from gateway.buildUrl").AsError();
|
2046
|
-
}
|
2047
|
-
const bytes = await this.gateway.get(url.Ok());
|
2048
|
-
if (bytes.isErr()) {
|
2049
|
-
if (isNotFoundError(bytes)) {
|
2050
|
-
return void 0;
|
2051
|
-
}
|
2052
|
-
throw this.logger.Error().Url(url.Ok()).Result("bytes:", bytes).Msg("gateway get").AsError();
|
2053
|
-
}
|
2054
|
-
const dbMetas = await this.handleByteHeads(bytes.Ok());
|
2055
|
-
await this.loader?.handleDbMetasFromStore(dbMetas.map((m) => m.dbMeta));
|
2056
|
-
const cids = dbMetas.map((m) => m.eventCid);
|
2057
|
-
const uniqueParentsMap = new Map([...this.parents, ...cids].map((p) => [p.toString(), p]));
|
2058
|
-
this.parents = Array.from(uniqueParentsMap.values());
|
2059
|
-
return dbMetas.map((m) => m.dbMeta);
|
2060
|
-
}
|
2061
|
-
async save(meta, branch) {
|
2062
|
-
branch = branch || "main";
|
2063
|
-
this.logger.Debug().Str("branch", branch).Any("meta", meta).Msg("saving meta");
|
2064
|
-
const event = await createDbMetaEventBlock(this.sthis, meta, this.parents);
|
2065
|
-
const bytes = await encodeEventsWithParents(this.sthis, [event], this.parents);
|
2066
|
-
const url = await this.gateway.buildUrl(this.url(), branch);
|
2067
|
-
if (url.isErr()) {
|
2068
|
-
throw this.logger.Error().Err(url.Err()).Str("branch", branch).Msg("got error from gateway.buildUrl").AsError();
|
2069
|
-
}
|
2070
|
-
const res = await this.gateway.put(url.Ok(), bytes);
|
2071
|
-
if (res.isErr()) {
|
2072
|
-
throw this.logger.Error().Err(res.Err()).Msg("got error from gateway.put").AsError();
|
2073
|
-
}
|
2074
|
-
await this.loader?.handleDbMetasFromStore([meta]);
|
2075
|
-
this.parents = [event.cid];
|
2076
|
-
return res;
|
2077
|
-
}
|
2078
2031
|
async close() {
|
2079
2032
|
await this.gateway.close(this.url());
|
2080
2033
|
this._onClosed.forEach((fn) => fn());
|
2081
2034
|
return Result5.Ok(void 0);
|
2082
2035
|
}
|
2083
|
-
|
2036
|
+
destroy() {
|
2084
2037
|
return this.gateway.destroy(this.url());
|
2085
2038
|
}
|
2086
2039
|
};
|
2087
|
-
function encodeToBase64(bytes) {
|
2088
|
-
const chars = "ABCDEFGHIJKLMNOPQRSTUVWXYZabcdefghijklmnopqrstuvwxyz0123456789+/";
|
2089
|
-
let base64 = "";
|
2090
|
-
let i;
|
2091
|
-
for (i = 0; i < bytes.length - 2; i += 3) {
|
2092
|
-
base64 += chars[bytes[i] >> 2];
|
2093
|
-
base64 += chars[(bytes[i] & 3) << 4 | bytes[i + 1] >> 4];
|
2094
|
-
base64 += chars[(bytes[i + 1] & 15) << 2 | bytes[i + 2] >> 6];
|
2095
|
-
base64 += chars[bytes[i + 2] & 63];
|
2096
|
-
}
|
2097
|
-
if (i < bytes.length) {
|
2098
|
-
base64 += chars[bytes[i] >> 2];
|
2099
|
-
if (i === bytes.length - 1) {
|
2100
|
-
base64 += chars[(bytes[i] & 3) << 4];
|
2101
|
-
base64 += "==";
|
2102
|
-
} else {
|
2103
|
-
base64 += chars[(bytes[i] & 3) << 4 | bytes[i + 1] >> 4];
|
2104
|
-
base64 += chars[(bytes[i + 1] & 15) << 2];
|
2105
|
-
base64 += "=";
|
2106
|
-
}
|
2107
|
-
}
|
2108
|
-
return base64;
|
2109
|
-
}
|
2110
|
-
function decodeFromBase64(base64) {
|
2111
|
-
const chars = "ABCDEFGHIJKLMNOPQRSTUVWXYZabcdefghijklmnopqrstuvwxyz0123456789+/";
|
2112
|
-
const bytes = new Uint8Array(base64.length * 3 / 4);
|
2113
|
-
let i;
|
2114
|
-
let j = 0;
|
2115
|
-
for (i = 0; i < base64.length; i += 4) {
|
2116
|
-
const a = chars.indexOf(base64[i]);
|
2117
|
-
const b = chars.indexOf(base64[i + 1]);
|
2118
|
-
const c = chars.indexOf(base64[i + 2]);
|
2119
|
-
const d = chars.indexOf(base64[i + 3]);
|
2120
|
-
bytes[j++] = a << 2 | b >> 4;
|
2121
|
-
if (base64[i + 2] !== "=") {
|
2122
|
-
bytes[j++] = (b & 15) << 4 | c >> 2;
|
2123
|
-
}
|
2124
|
-
if (base64[i + 3] !== "=") {
|
2125
|
-
bytes[j++] = (c & 3) << 6 | d;
|
2126
|
-
}
|
2127
|
-
}
|
2128
|
-
return bytes.slice(0, j);
|
2129
|
-
}
|
2130
2040
|
|
2131
2041
|
// src/blockstore/store-factory.ts
|
2132
2042
|
function ensureIsIndex(url, isIndex) {
|
@@ -2291,22 +2201,22 @@ function toStoreRuntime(opts, sthis) {
|
|
2291
2201
|
registerStoreProtocol({
|
2292
2202
|
protocol: "file:",
|
2293
2203
|
gateway: async (sthis) => {
|
2294
|
-
const { FileGateway } = await import("./gateway-
|
2204
|
+
const { FileGateway } = await import("./gateway-5FCWPX5W.js");
|
2295
2205
|
return new FileGateway(sthis);
|
2296
2206
|
},
|
2297
2207
|
test: async (sthis) => {
|
2298
|
-
const { FileTestStore } = await import("./gateway-
|
2208
|
+
const { FileTestStore } = await import("./gateway-5FCWPX5W.js");
|
2299
2209
|
return new FileTestStore(sthis);
|
2300
2210
|
}
|
2301
2211
|
});
|
2302
2212
|
registerStoreProtocol({
|
2303
2213
|
protocol: "indexdb:",
|
2304
2214
|
gateway: async (sthis) => {
|
2305
|
-
const { IndexDBGateway } = await import("./gateway-
|
2215
|
+
const { IndexDBGateway } = await import("./gateway-H7UD6TNB.js");
|
2306
2216
|
return new IndexDBGateway(sthis);
|
2307
2217
|
},
|
2308
2218
|
test: async (sthis) => {
|
2309
|
-
const { IndexDBTestStore } = await import("./gateway-
|
2219
|
+
const { IndexDBTestStore } = await import("./gateway-H7UD6TNB.js");
|
2310
2220
|
return new IndexDBTestStore(sthis);
|
2311
2221
|
}
|
2312
2222
|
});
|
@@ -2318,7 +2228,13 @@ async function RemoteDataStore(sthis, name, url, opts) {
|
|
2318
2228
|
return ds;
|
2319
2229
|
}
|
2320
2230
|
async function RemoteMetaStore(sthis, name, url, opts) {
|
2321
|
-
const ms = new MetaStoreImpl(
|
2231
|
+
const ms = new MetaStoreImpl(
|
2232
|
+
sthis,
|
2233
|
+
name,
|
2234
|
+
url,
|
2235
|
+
opts
|
2236
|
+
/* , true*/
|
2237
|
+
);
|
2322
2238
|
await ms.start();
|
2323
2239
|
return ms;
|
2324
2240
|
}
|
@@ -3018,7 +2934,7 @@ function applyHeadQueue(worker, logger) {
|
|
3018
2934
|
queue.sort((a, b) => b.updates ? 1 : -1);
|
3019
2935
|
const task = queue.shift();
|
3020
2936
|
if (!task) continue;
|
3021
|
-
await worker(task.newHead, task.prevHead, task.updates !==
|
2937
|
+
await worker(task.newHead, task.prevHead, task.updates !== void 0).catch((e) => {
|
3022
2938
|
throw logger.Error().Err(e).Msg("int_applyHead worker error").AsError();
|
3023
2939
|
});
|
3024
2940
|
if (task.updates) {
|
@@ -3108,6 +3024,7 @@ var CRDTClock = class {
|
|
3108
3024
|
this.zoomers.add(fn);
|
3109
3025
|
}
|
3110
3026
|
async int_applyHead(newHead, prevHead, localUpdates) {
|
3027
|
+
const noLoader = !localUpdates;
|
3111
3028
|
const ogHead = sortClockHead(this.head);
|
3112
3029
|
newHead = sortClockHead(newHead);
|
3113
3030
|
if (compareClockHeads(ogHead, newHead)) {
|
@@ -3118,7 +3035,6 @@ var CRDTClock = class {
|
|
3118
3035
|
this.setHead(newHead);
|
3119
3036
|
return;
|
3120
3037
|
}
|
3121
|
-
const noLoader = !localUpdates;
|
3122
3038
|
if (!this.blockstore) {
|
3123
3039
|
throw this.logger.Error().Msg("missing blockstore").AsError();
|
3124
3040
|
}
|
@@ -3237,8 +3153,7 @@ var CRDT = class {
|
|
3237
3153
|
try {
|
3238
3154
|
await Promise.all([this.blockstore.ready(), this.indexBlockstore.ready(), this.clock.ready()]);
|
3239
3155
|
} catch (e) {
|
3240
|
-
|
3241
|
-
throw this.logger.Error().Err(e).Msg(`CRDT is not ready: ${ee.stack}`).AsError();
|
3156
|
+
throw this.logger.Error().Err(e).Msg(`CRDT is not ready`).AsError();
|
3242
3157
|
}
|
3243
3158
|
});
|
3244
3159
|
}
|
@@ -3341,7 +3256,7 @@ var Database = class {
|
|
3341
3256
|
await this.ready();
|
3342
3257
|
this.logger.Debug().Str("id", doc._id).Msg("put");
|
3343
3258
|
const { _id, ...value } = doc;
|
3344
|
-
const docId = _id || this.sthis.
|
3259
|
+
const docId = _id || this.sthis.timeOrderedNextId().str;
|
3345
3260
|
const result = await this._writeQueue.push({
|
3346
3261
|
id: docId,
|
3347
3262
|
value: {
|
@@ -3470,9 +3385,38 @@ function makeName(fnString) {
|
|
3470
3385
|
}
|
3471
3386
|
}
|
3472
3387
|
|
3388
|
+
// src/runtime/index.ts
|
3389
|
+
var runtime_exports = {};
|
3390
|
+
__export(runtime_exports, {
|
3391
|
+
FILESTORE_VERSION: () => FILESTORE_VERSION,
|
3392
|
+
INDEXDB_VERSION: () => INDEXDB_VERSION,
|
3393
|
+
files: () => files_exports,
|
3394
|
+
getFileName: () => getFileName,
|
3395
|
+
getFileSystem: () => getFileSystem,
|
3396
|
+
getPath: () => getPath,
|
3397
|
+
kb: () => key_bag_exports,
|
3398
|
+
kc: () => keyed_crypto_exports,
|
3399
|
+
mf: () => wait_pr_multiformats_exports,
|
3400
|
+
runtimeFn: () => runtimeFn2,
|
3401
|
+
toArrayBuffer: () => toArrayBuffer
|
3402
|
+
});
|
3403
|
+
|
3404
|
+
// src/runtime/wait-pr-multiformats/index.ts
|
3405
|
+
var wait_pr_multiformats_exports = {};
|
3406
|
+
__export(wait_pr_multiformats_exports, {
|
3407
|
+
block: () => block_exports,
|
3408
|
+
codec: () => codec_interface_exports
|
3409
|
+
});
|
3410
|
+
|
3411
|
+
// src/runtime/wait-pr-multiformats/codec-interface.ts
|
3412
|
+
var codec_interface_exports = {};
|
3413
|
+
|
3414
|
+
// src/runtime/index.ts
|
3415
|
+
import { runtimeFn as runtimeFn2 } from "@adviser/cement";
|
3416
|
+
|
3473
3417
|
// src/version.ts
|
3474
3418
|
var PACKAGE_VERSION = Object.keys({
|
3475
|
-
"0.19.11-dev-
|
3419
|
+
"0.19.11-dev-dryrun4": "xxxx"
|
3476
3420
|
})[0];
|
3477
3421
|
export {
|
3478
3422
|
CRDT,
|