@fireproof/core 0.20.0-dev-preview-05 → 0.20.0-dev-preview-10
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/README.md +1 -1
- package/index.cjs +3211 -3150
- package/index.cjs.map +1 -1
- package/index.d.cts +243 -187
- package/index.d.ts +243 -187
- package/index.js +3199 -3138
- package/index.js.map +1 -1
- package/metafile-cjs.json +1 -1
- package/metafile-esm.json +1 -1
- package/package.json +1 -1
- package/react/index.cjs +22 -22
- package/react/index.cjs.map +1 -1
- package/react/index.d.cts +7 -7
- package/react/index.d.ts +7 -7
- package/react/index.js +22 -22
- package/react/index.js.map +1 -1
- package/react/metafile-cjs.json +1 -1
- package/react/metafile-esm.json +1 -1
- package/tests/blockstore/interceptor-gateway.test.ts +1 -1
- package/tests/blockstore/loader.test.ts +6 -6
- package/tests/blockstore/transaction.test.ts +8 -8
- package/tests/fireproof/all-gateway.test.ts +7 -7
- package/tests/fireproof/crdt.test.ts +26 -36
- package/tests/fireproof/{ledger.test.ts → database.test.ts} +30 -29
- package/tests/fireproof/fireproof.test.ts +66 -68
- package/tests/fireproof/hello.test.ts +9 -9
- package/tests/fireproof/indexer.test.ts +35 -34
- package/tests/fireproof/multiple-ledger.test.ts +3 -3
- package/tests/gateway/file/loader-config.test.ts +21 -21
- package/tests/gateway/indexdb/loader-config.test.ts +6 -6
- package/tests/react/useFireproof.test.tsx +2 -2
package/react/metafile-esm.json
CHANGED
@@ -1 +1 @@
|
|
1
|
-
{"inputs":{"src/react/useFireproof.ts":{"bytes":
|
1
|
+
{"inputs":{"src/react/useFireproof.ts":{"bytes":11393,"imports":[{"path":"@fireproof/core","kind":"import-statement","external":true},{"path":"react","kind":"import-statement","external":true}],"format":"esm"},"src/react/useDocument.ts":{"bytes":1680,"imports":[{"path":"@fireproof/core","kind":"import-statement","external":true},{"path":"src/react/useFireproof.ts","kind":"import-statement","original":"./useFireproof.js"}],"format":"esm"},"src/react/useLiveQuery.ts":{"bytes":1409,"imports":[{"path":"@fireproof/core","kind":"import-statement","external":true},{"path":"src/react/useFireproof.ts","kind":"import-statement","original":"./useFireproof.js"}],"format":"esm"},"src/react/useAllDocs.ts":{"bytes":1146,"imports":[{"path":"@fireproof/core","kind":"import-statement","external":true},{"path":"src/react/useFireproof.ts","kind":"import-statement","original":"./useFireproof.js"}],"format":"esm"},"src/react/useChanges.ts":{"bytes":1191,"imports":[{"path":"@fireproof/core","kind":"import-statement","external":true},{"path":"src/react/useFireproof.ts","kind":"import-statement","original":"./useFireproof.js"}],"format":"esm"},"src/react/index.ts":{"bytes":971,"imports":[{"path":"src/react/useDocument.ts","kind":"import-statement","original":"./useDocument.js"},{"path":"src/react/useFireproof.ts","kind":"import-statement","original":"./useFireproof.js"},{"path":"src/react/useLiveQuery.ts","kind":"import-statement","original":"./useLiveQuery.js"},{"path":"src/react/useAllDocs.ts","kind":"import-statement","original":"./useAllDocs.js"},{"path":"src/react/useChanges.ts","kind":"import-statement","original":"./useChanges.js"}],"format":"esm"}},"outputs":{"dist/fireproof-core/react/index.js.map":{"imports":[],"exports":[],"inputs":{},"bytes":21518},"dist/fireproof-core/react/index.js":{"imports":[{"path":"@fireproof/core","kind":"import-statement","external":true},{"path":"react","kind":"import-statement","external":true}],"exports":["FireproofCtx","useAllDocs","useChanges","useDocument","useFireproof","useLiveQuery"],"entryPoint":"src/react/index.ts","inputs":{"src/react/useFireproof.ts":{"bytesInOutput":3892},"src/react/useDocument.ts":{"bytesInOutput":222},"src/react/index.ts":{"bytesInOutput":0},"src/react/useLiveQuery.ts":{"bytesInOutput":229},"src/react/useAllDocs.ts":{"bytesInOutput":215},"src/react/useChanges.ts":{"bytesInOutput":215}},"bytes":5019}}}
|
@@ -54,7 +54,7 @@ class TestInterceptor extends bs.PassThroughGateway {
|
|
54
54
|
describe("InterceptorGateway", () => {
|
55
55
|
it("passthrough", async () => {
|
56
56
|
const gwi = new TestInterceptor();
|
57
|
-
const db = fireproof("interceptor-gateway", {
|
57
|
+
const db = fireproof.DB("interceptor-gateway", {
|
58
58
|
gatewayInterceptor: gwi,
|
59
59
|
});
|
60
60
|
expect(
|
@@ -3,7 +3,7 @@ import { sha256 as hasher } from "multiformats/hashes/sha2";
|
|
3
3
|
import { BlockView } from "multiformats";
|
4
4
|
import { CID } from "multiformats/cid";
|
5
5
|
import { MemoryBlockstore } from "@fireproof/vendor/@web3-storage/pail/block";
|
6
|
-
import { CRDTMeta, IndexTransactionMeta, SuperThis, bs, ensureSuperThis, rt } from "@fireproof/core";
|
6
|
+
import { CRDTMeta, CarTransaction, IndexTransactionMeta, SuperThis, bs, ensureSuperThis, rt } from "@fireproof/core";
|
7
7
|
import { simpleBlockOpts } from "../helpers.js";
|
8
8
|
|
9
9
|
class MyMemoryBlockStore extends bs.EncryptedBlockstore {
|
@@ -23,7 +23,7 @@ class MyMemoryBlockStore extends bs.EncryptedBlockstore {
|
|
23
23
|
close(): Promise<void> {
|
24
24
|
return this.loader.close();
|
25
25
|
}
|
26
|
-
readonly transactions = new Set<
|
26
|
+
readonly transactions = new Set<CarTransaction>();
|
27
27
|
// readonly lastTxMeta?: TransactionMeta;
|
28
28
|
readonly compacting: boolean = false;
|
29
29
|
|
@@ -51,7 +51,7 @@ class MyMemoryBlockStore extends bs.EncryptedBlockstore {
|
|
51
51
|
describe("basic Loader simple", function () {
|
52
52
|
let loader: bs.Loader;
|
53
53
|
let block: BlockView;
|
54
|
-
let t:
|
54
|
+
let t: CarTransaction;
|
55
55
|
const sthis = ensureSuperThis();
|
56
56
|
|
57
57
|
afterEach(async function () {
|
@@ -63,7 +63,7 @@ describe("basic Loader simple", function () {
|
|
63
63
|
const testDbName = "test-loader-commit";
|
64
64
|
await sthis.start();
|
65
65
|
const mockM = new MyMemoryBlockStore(sthis);
|
66
|
-
t = new bs.
|
66
|
+
t = new bs.CarTransactionImpl(mockM as bs.EncryptedBlockstore);
|
67
67
|
loader = new bs.Loader(sthis, {
|
68
68
|
...simpleBlockOpts(sthis, testDbName),
|
69
69
|
public: true,
|
@@ -99,7 +99,7 @@ describe("basic Loader with two commits", function () {
|
|
99
99
|
let block2: BlockView;
|
100
100
|
let block3: BlockView;
|
101
101
|
let block4: BlockView;
|
102
|
-
let t:
|
102
|
+
let t: CarTransaction;
|
103
103
|
let carCid: bs.CarGroup;
|
104
104
|
let carCid0: bs.CarGroup;
|
105
105
|
|
@@ -113,7 +113,7 @@ describe("basic Loader with two commits", function () {
|
|
113
113
|
beforeEach(async () => {
|
114
114
|
await sthis.start();
|
115
115
|
const mockM = new MyMemoryBlockStore(sthis);
|
116
|
-
t = new bs.
|
116
|
+
t = new bs.CarTransactionImpl(mockM);
|
117
117
|
loader = new bs.Loader(sthis, {
|
118
118
|
...simpleBlockOpts(sthis, "test-loader-two-commit"),
|
119
119
|
public: true,
|
@@ -1,12 +1,12 @@
|
|
1
1
|
import { CID } from "multiformats";
|
2
|
-
import { bs, ensureSuperThis, SuperThis } from "@fireproof/core";
|
2
|
+
import { BaseBlockstore, bs, CarTransaction, ensureSuperThis, SuperThis } from "@fireproof/core";
|
3
3
|
import { simpleBlockOpts } from "../helpers.js";
|
4
4
|
|
5
5
|
describe("Fresh TransactionBlockstore", function () {
|
6
|
-
let blocks:
|
6
|
+
let blocks: BaseBlockstore;
|
7
7
|
const sthis = ensureSuperThis();
|
8
8
|
beforeEach(function () {
|
9
|
-
blocks = new bs.
|
9
|
+
blocks = new bs.BaseBlockstoreImpl(simpleBlockOpts(sthis));
|
10
10
|
});
|
11
11
|
// it("should not have a name", function () {
|
12
12
|
// expect(blocks.name).toBeFalsy();
|
@@ -22,7 +22,7 @@ describe("Fresh TransactionBlockstore", function () {
|
|
22
22
|
it("should yield a transaction", async function () {
|
23
23
|
const txR = await blocks.transaction(async (tblocks) => {
|
24
24
|
expect(tblocks).toBeTruthy();
|
25
|
-
expect(tblocks instanceof bs.
|
25
|
+
expect(tblocks instanceof bs.CarTransactionImpl).toBeTruthy();
|
26
26
|
return { head: [] };
|
27
27
|
});
|
28
28
|
expect(txR).toBeTruthy();
|
@@ -55,12 +55,12 @@ describe("TransactionBlockstore with name", function () {
|
|
55
55
|
});
|
56
56
|
|
57
57
|
describe("A transaction", function () {
|
58
|
-
let tblocks:
|
58
|
+
let tblocks: CarTransaction;
|
59
59
|
let blocks: bs.EncryptedBlockstore;
|
60
60
|
const sthis = ensureSuperThis();
|
61
61
|
beforeEach(async function () {
|
62
62
|
blocks = new bs.EncryptedBlockstore(sthis, simpleBlockOpts(sthis, "test"));
|
63
|
-
tblocks = new bs.
|
63
|
+
tblocks = new bs.CarTransactionImpl(blocks);
|
64
64
|
blocks.transactions.add(tblocks);
|
65
65
|
});
|
66
66
|
it("should put and get", async function () {
|
@@ -80,7 +80,7 @@ function asUInt8Array(str: string, sthis: SuperThis) {
|
|
80
80
|
}
|
81
81
|
|
82
82
|
describe("TransactionBlockstore with a completed transaction", function () {
|
83
|
-
let blocks:
|
83
|
+
let blocks: BaseBlockstore;
|
84
84
|
let cid: CID;
|
85
85
|
let cid2: CID;
|
86
86
|
const sthis = ensureSuperThis();
|
@@ -89,7 +89,7 @@ describe("TransactionBlockstore with a completed transaction", function () {
|
|
89
89
|
cid = CID.parse("bafybeia4luuns6dgymy5kau5rm7r4qzrrzg6cglpzpogussprpy42cmcn4");
|
90
90
|
cid2 = CID.parse("bafybeibgouhn5ktecpjuovt52zamzvm4dlve5ak7x6d5smms3itkhplnhm");
|
91
91
|
|
92
|
-
blocks = new bs.
|
92
|
+
blocks = new bs.BaseBlockstoreImpl(simpleBlockOpts(sthis));
|
93
93
|
await blocks.transaction(async (tblocks) => {
|
94
94
|
await tblocks.put(cid, asUInt8Array("value", sthis));
|
95
95
|
await tblocks.put(cid, asUInt8Array("value", sthis));
|
@@ -1,4 +1,4 @@
|
|
1
|
-
import { Ledger, LedgerFactory, PARAM, bs, ensureSuperThis } from "@fireproof/core";
|
1
|
+
import { Database, Ledger, LedgerFactory, PARAM, bs, ensureSuperThis, fireproof } from "@fireproof/core";
|
2
2
|
|
3
3
|
import { fileContent } from "./cars/bafkreidxwt2nhvbl4fnqfw3ctlt6zbrir4kqwmjo5im6rf4q5si27kgo2i.js";
|
4
4
|
import { simpleCID } from "../helpers.js";
|
@@ -363,7 +363,7 @@ describe("noop Gateway", function () {
|
|
363
363
|
});
|
364
364
|
|
365
365
|
describe("noop Gateway subscribe", function () {
|
366
|
-
let db:
|
366
|
+
let db: Database;
|
367
367
|
|
368
368
|
let metaStore: bs.MetaStore;
|
369
369
|
|
@@ -375,10 +375,10 @@ describe("noop Gateway subscribe", function () {
|
|
375
375
|
await db.destroy();
|
376
376
|
});
|
377
377
|
beforeEach(async function () {
|
378
|
-
db =
|
378
|
+
db = fireproof.DB("test-gateway-" + sthis.nextId().str);
|
379
379
|
|
380
380
|
// Extract stores from the loader
|
381
|
-
metaStore = (await db.crdt.blockstore.loader?.metaStore()) as bs.MetaStore;
|
381
|
+
metaStore = (await db.ledger.crdt.blockstore.loader?.metaStore()) as bs.MetaStore;
|
382
382
|
|
383
383
|
metaGateway = metaStore.realGateway;
|
384
384
|
});
|
@@ -409,7 +409,7 @@ describe("noop Gateway subscribe", function () {
|
|
409
409
|
});
|
410
410
|
|
411
411
|
describe("Gateway", function () {
|
412
|
-
let db:
|
412
|
+
let db: Database;
|
413
413
|
// let carStore: ExtendedStore;
|
414
414
|
let metaStore: bs.MetaStore;
|
415
415
|
// let fileStore: ExtendedStore;
|
@@ -425,14 +425,14 @@ describe("Gateway", function () {
|
|
425
425
|
await db.destroy();
|
426
426
|
});
|
427
427
|
beforeEach(async function () {
|
428
|
-
db =
|
428
|
+
db = fireproof.DB("test-gateway-" + sthis.nextId().str);
|
429
429
|
const ok = await db.put({ _id: "test", foo: "bar" });
|
430
430
|
expect(ok).toBeTruthy();
|
431
431
|
expect(ok.id).toBe("test");
|
432
432
|
|
433
433
|
// Extract stores from the loader
|
434
434
|
// carStore = (await db.blockstore.loader.carStore()) as unknown as ExtendedStore;
|
435
|
-
metaStore = (await db.crdt.blockstore.loader?.metaStore()) as bs.MetaStore;
|
435
|
+
metaStore = (await db.ledger.crdt.blockstore.loader?.metaStore()) as bs.MetaStore;
|
436
436
|
// fileStore = (await db.blockstore.loader.fileStore()) as unknown as ExtendedStore;
|
437
437
|
// walStore = (await db.blockstore.loader.WALStore()) as unknown as ExtendedStore;
|
438
438
|
|
@@ -1,10 +1,10 @@
|
|
1
|
-
import { CRDT, defaultWriteQueueOpts, ensureSuperThis, LedgerOpts, toStoreURIRuntime, rt } from "@fireproof/core";
|
1
|
+
import { CRDT, defaultWriteQueueOpts, ensureSuperThis, LedgerOpts, toStoreURIRuntime, rt, CRDTImpl } from "@fireproof/core";
|
2
2
|
import { bs } from "@fireproof/core";
|
3
3
|
import { CRDTMeta, DocValue } from "@fireproof/core";
|
4
4
|
import { Index, index } from "@fireproof/core";
|
5
5
|
|
6
6
|
describe("Fresh crdt", function () {
|
7
|
-
let crdt: CRDT
|
7
|
+
let crdt: CRDT;
|
8
8
|
const sthis = ensureSuperThis();
|
9
9
|
afterEach(async function () {
|
10
10
|
await crdt.close();
|
@@ -18,7 +18,7 @@ describe("Fresh crdt", function () {
|
|
18
18
|
storeUrls: toStoreURIRuntime(sthis, "test-crdt-cold"),
|
19
19
|
storeEnDe: bs.ensureStoreEnDeFile({}),
|
20
20
|
};
|
21
|
-
crdt = new
|
21
|
+
crdt = new CRDTImpl(sthis, dbOpts);
|
22
22
|
});
|
23
23
|
it("should have an empty head", async function () {
|
24
24
|
const head = crdt.clock.head;
|
@@ -44,7 +44,7 @@ describe("CRDT with one record", function () {
|
|
44
44
|
readonly hello: string;
|
45
45
|
readonly nice: string;
|
46
46
|
}
|
47
|
-
let crdt: CRDT
|
47
|
+
let crdt: CRDT;
|
48
48
|
let firstPut: CRDTMeta;
|
49
49
|
const sthis = ensureSuperThis();
|
50
50
|
|
@@ -61,7 +61,7 @@ describe("CRDT with one record", function () {
|
|
61
61
|
storeUrls: toStoreURIRuntime(sthis, `test@${sthis.nextId().str}`),
|
62
62
|
storeEnDe: bs.ensureStoreEnDeFile({}),
|
63
63
|
};
|
64
|
-
crdt = new
|
64
|
+
crdt = new CRDTImpl(sthis, dbOpts);
|
65
65
|
firstPut = await crdt.bulk([{ id: "hello", value: { hello: "world" } }]);
|
66
66
|
});
|
67
67
|
it("should have a one-element head", async function () {
|
@@ -90,7 +90,7 @@ describe("CRDT with one record", function () {
|
|
90
90
|
expect(got).toBeFalsy();
|
91
91
|
});
|
92
92
|
it("should offer changes", async function () {
|
93
|
-
const { result } = await crdt.changes([]);
|
93
|
+
const { result } = await crdt.changes<Partial<CRDTTestType>>([]);
|
94
94
|
expect(result.length).toBe(1);
|
95
95
|
expect(result[0].id).toBe("hello");
|
96
96
|
expect(result[0].value?.hello).toBe("world");
|
@@ -101,7 +101,7 @@ describe("CRDT with a multi-write", function () {
|
|
101
101
|
interface CRDTTestType {
|
102
102
|
readonly points: number;
|
103
103
|
}
|
104
|
-
let crdt: CRDT
|
104
|
+
let crdt: CRDT;
|
105
105
|
let firstPut: CRDTMeta;
|
106
106
|
const sthis = ensureSuperThis();
|
107
107
|
|
@@ -117,7 +117,7 @@ describe("CRDT with a multi-write", function () {
|
|
117
117
|
storeUrls: toStoreURIRuntime(sthis, "test-crdt-cold"),
|
118
118
|
storeEnDe: bs.ensureStoreEnDeFile({}),
|
119
119
|
};
|
120
|
-
crdt = new
|
120
|
+
crdt = new CRDTImpl(sthis, dbOpts);
|
121
121
|
firstPut = await crdt.bulk([
|
122
122
|
{ id: "ace", value: { points: 11 } },
|
123
123
|
{ id: "king", value: { points: 10 } },
|
@@ -145,7 +145,7 @@ describe("CRDT with a multi-write", function () {
|
|
145
145
|
expect(got.doc.points).toBe(10);
|
146
146
|
});
|
147
147
|
it("should offer changes", async function () {
|
148
|
-
const { result } = await crdt.changes([]);
|
148
|
+
const { result } = await crdt.changes<CRDTTestType>([]);
|
149
149
|
expect(result.length).toBe(2);
|
150
150
|
expect(result[0].id).toBe("ace");
|
151
151
|
expect(result[0].value?.points).toBe(11);
|
@@ -158,7 +158,7 @@ describe("CRDT with a multi-write", function () {
|
|
158
158
|
{ id: "jack", value: { points: 10 } },
|
159
159
|
]);
|
160
160
|
expect(secondPut.head).toBeTruthy();
|
161
|
-
const { result: r2, head: h2 } = await crdt.changes();
|
161
|
+
const { result: r2, head: h2 } = await crdt.changes<CRDTTestType>();
|
162
162
|
expect(r2.length).toBe(4);
|
163
163
|
const { result: r3 } = await crdt.changes(firstPut.head);
|
164
164
|
expect(r3.length).toBe(2);
|
@@ -171,8 +171,7 @@ interface CRDTTestType {
|
|
171
171
|
readonly points: number;
|
172
172
|
}
|
173
173
|
describe("CRDT with two multi-writes", function () {
|
174
|
-
|
175
|
-
let crdt: CRDT<CRDTTestType>;
|
174
|
+
let crdt: CRDT;
|
176
175
|
let firstPut: CRDTMeta;
|
177
176
|
let secondPut: CRDTMeta;
|
178
177
|
const sthis = ensureSuperThis();
|
@@ -188,7 +187,7 @@ describe("CRDT with two multi-writes", function () {
|
|
188
187
|
storeUrls: toStoreURIRuntime(sthis, `test-multiple-writes@${sthis.nextId().str}`),
|
189
188
|
storeEnDe: bs.ensureStoreEnDeFile({}),
|
190
189
|
};
|
191
|
-
crdt = new
|
190
|
+
crdt = new CRDTImpl(sthis, dbOpts);
|
192
191
|
firstPut = await crdt.bulk([
|
193
192
|
{ id: "ace", value: { points: 11 } },
|
194
193
|
{ id: "king", value: { points: 10 } },
|
@@ -217,7 +216,7 @@ describe("CRDT with two multi-writes", function () {
|
|
217
216
|
}
|
218
217
|
});
|
219
218
|
it("should offer changes", async function () {
|
220
|
-
const { result } = await crdt.changes();
|
219
|
+
const { result } = await crdt.changes<CRDTTestType>();
|
221
220
|
expect(result.length).toBe(4);
|
222
221
|
expect(result[0].id).toBe("ace");
|
223
222
|
expect(result[0].value?.points).toBe(11);
|
@@ -228,7 +227,7 @@ describe("CRDT with two multi-writes", function () {
|
|
228
227
|
});
|
229
228
|
|
230
229
|
describe("Compact a named CRDT with writes", function () {
|
231
|
-
let crdt: CRDT
|
230
|
+
let crdt: CRDT;
|
232
231
|
const sthis = ensureSuperThis();
|
233
232
|
afterEach(async function () {
|
234
233
|
await crdt.close();
|
@@ -242,7 +241,7 @@ describe("Compact a named CRDT with writes", function () {
|
|
242
241
|
storeUrls: toStoreURIRuntime(sthis, `named-crdt-compaction`),
|
243
242
|
storeEnDe: bs.ensureStoreEnDeFile({}),
|
244
243
|
};
|
245
|
-
crdt = new
|
244
|
+
crdt = new CRDTImpl(sthis, dbOpts);
|
246
245
|
for (let i = 0; i < 10; i++) {
|
247
246
|
const bulk = [
|
248
247
|
{ id: "ace", value: { points: 11 } },
|
@@ -289,7 +288,7 @@ describe("Compact a named CRDT with writes", function () {
|
|
289
288
|
});
|
290
289
|
|
291
290
|
describe("CRDT with an index", function () {
|
292
|
-
let crdt: CRDT
|
291
|
+
let crdt: CRDT;
|
293
292
|
let idx: Index<number, CRDTTestType>;
|
294
293
|
const sthis = ensureSuperThis();
|
295
294
|
afterEach(async function () {
|
@@ -304,12 +303,12 @@ describe("CRDT with an index", function () {
|
|
304
303
|
storeUrls: toStoreURIRuntime(sthis, "test-crdt-cold"),
|
305
304
|
storeEnDe: bs.ensureStoreEnDeFile({}),
|
306
305
|
};
|
307
|
-
crdt = new
|
306
|
+
crdt = new CRDTImpl(sthis, dbOpts);
|
308
307
|
await crdt.bulk([
|
309
308
|
{ id: "ace", value: { points: 11 } },
|
310
309
|
{ id: "king", value: { points: 10 } },
|
311
310
|
]);
|
312
|
-
idx = await index<number, CRDTTestType>(
|
311
|
+
idx = await index<number, CRDTTestType>(crdt, "points");
|
313
312
|
});
|
314
313
|
it("should query the data", async function () {
|
315
314
|
const got = await idx.query({ range: [9, 12] });
|
@@ -318,7 +317,7 @@ describe("CRDT with an index", function () {
|
|
318
317
|
expect(got.rows[0].key).toBe(10);
|
319
318
|
});
|
320
319
|
it("should register the index", async function () {
|
321
|
-
const rIdx = await index<number, CRDTTestType>(
|
320
|
+
const rIdx = await index<number, CRDTTestType>(crdt, "points");
|
322
321
|
expect(rIdx).toBeTruthy();
|
323
322
|
expect(rIdx.name).toBe("points");
|
324
323
|
const got = await rIdx.query({ range: [9, 12] });
|
@@ -327,7 +326,7 @@ describe("CRDT with an index", function () {
|
|
327
326
|
expect(got.rows[0].key).toBe(10);
|
328
327
|
});
|
329
328
|
it("creating a different index with same name should not work", async function () {
|
330
|
-
const e = await index(
|
329
|
+
const e = await index(crdt, "points", (doc) => doc._id)
|
331
330
|
.query()
|
332
331
|
.catch((err) => err);
|
333
332
|
expect(e.message).toMatch(/cannot apply/);
|
@@ -335,12 +334,9 @@ describe("CRDT with an index", function () {
|
|
335
334
|
});
|
336
335
|
|
337
336
|
describe("Loader with a committed transaction", function () {
|
338
|
-
interface CRDTTestType {
|
339
|
-
readonly foo: string;
|
340
|
-
}
|
341
337
|
let loader: bs.Loader;
|
342
338
|
let blockstore: bs.EncryptedBlockstore;
|
343
|
-
let crdt: CRDT
|
339
|
+
let crdt: CRDT;
|
344
340
|
let done: CRDTMeta;
|
345
341
|
const dbname = "test-loader";
|
346
342
|
const sthis = ensureSuperThis();
|
@@ -356,7 +352,7 @@ describe("Loader with a committed transaction", function () {
|
|
356
352
|
storeUrls: toStoreURIRuntime(sthis, dbname),
|
357
353
|
storeEnDe: bs.ensureStoreEnDeFile({}),
|
358
354
|
};
|
359
|
-
crdt = new
|
355
|
+
crdt = new CRDTImpl(sthis, dbOpts);
|
360
356
|
blockstore = crdt.blockstore as bs.EncryptedBlockstore;
|
361
357
|
expect(blockstore.loader).toBeTruthy();
|
362
358
|
loader = blockstore.loader as bs.Loader;
|
@@ -389,11 +385,8 @@ describe("Loader with a committed transaction", function () {
|
|
389
385
|
});
|
390
386
|
|
391
387
|
describe("Loader with two committed transactions", function () {
|
392
|
-
interface CRDTTestType {
|
393
|
-
readonly foo: string;
|
394
|
-
}
|
395
388
|
let loader: bs.Loader;
|
396
|
-
let crdt: CRDT
|
389
|
+
let crdt: CRDT;
|
397
390
|
let blockstore: bs.EncryptedBlockstore;
|
398
391
|
let done1: CRDTMeta;
|
399
392
|
let done2: CRDTMeta;
|
@@ -410,7 +403,7 @@ describe("Loader with two committed transactions", function () {
|
|
410
403
|
storeUrls: toStoreURIRuntime(sthis, "test-loader"),
|
411
404
|
storeEnDe: bs.ensureStoreEnDeFile({}),
|
412
405
|
};
|
413
|
-
crdt = new
|
406
|
+
crdt = new CRDTImpl(sthis, dbOpts);
|
414
407
|
blockstore = crdt.blockstore as bs.EncryptedBlockstore;
|
415
408
|
expect(blockstore.loader).toBeTruthy();
|
416
409
|
loader = blockstore.loader as bs.Loader;
|
@@ -445,12 +438,9 @@ describe("Loader with two committed transactions", function () {
|
|
445
438
|
});
|
446
439
|
|
447
440
|
describe("Loader with many committed transactions", function () {
|
448
|
-
interface Doc {
|
449
|
-
foo: string;
|
450
|
-
}
|
451
441
|
let loader: bs.Loader;
|
452
442
|
let blockstore: bs.EncryptedBlockstore;
|
453
|
-
let crdt: CRDT
|
443
|
+
let crdt: CRDT;
|
454
444
|
let dones: CRDTMeta[];
|
455
445
|
const count = 10;
|
456
446
|
const sthis = ensureSuperThis();
|
@@ -466,7 +456,7 @@ describe("Loader with many committed transactions", function () {
|
|
466
456
|
storeUrls: toStoreURIRuntime(sthis, "test-loader-many"),
|
467
457
|
storeEnDe: bs.ensureStoreEnDeFile({}),
|
468
458
|
};
|
469
|
-
crdt = new
|
459
|
+
crdt = new CRDTImpl(sthis, dbOpts);
|
470
460
|
blockstore = crdt.blockstore as bs.EncryptedBlockstore;
|
471
461
|
expect(blockstore.loader).toBeTruthy();
|
472
462
|
loader = blockstore.loader as bs.Loader;
|
@@ -2,20 +2,20 @@ import { URI } from "@adviser/cement";
|
|
2
2
|
import { buildBlobFiles, FileWithCid, mockSuperThis } from "../helpers.js";
|
3
3
|
import {
|
4
4
|
bs,
|
5
|
-
Ledger,
|
6
5
|
DocResponse,
|
7
6
|
DocFileMeta,
|
8
7
|
DocWithId,
|
9
8
|
DocFiles,
|
10
9
|
toStoreURIRuntime,
|
11
10
|
keyConfigOpts,
|
12
|
-
LedgerFactory,
|
13
|
-
LedgerShell,
|
14
11
|
ensureSuperThis,
|
12
|
+
Database,
|
13
|
+
fireproof,
|
14
|
+
LedgerShell,
|
15
15
|
} from "@fireproof/core";
|
16
16
|
|
17
17
|
describe("basic Ledger", () => {
|
18
|
-
let db:
|
18
|
+
let db: Database;
|
19
19
|
const sthis = mockSuperThis();
|
20
20
|
afterEach(async () => {
|
21
21
|
await db.close();
|
@@ -23,7 +23,7 @@ describe("basic Ledger", () => {
|
|
23
23
|
});
|
24
24
|
beforeEach(async () => {
|
25
25
|
await sthis.start();
|
26
|
-
db =
|
26
|
+
db = fireproof.DB(undefined as unknown as string, {
|
27
27
|
logger: sthis.logger,
|
28
28
|
});
|
29
29
|
});
|
@@ -53,7 +53,7 @@ describe("basic Ledger with record", function () {
|
|
53
53
|
interface Doc {
|
54
54
|
readonly value: string;
|
55
55
|
}
|
56
|
-
let db:
|
56
|
+
let db: Database;
|
57
57
|
const sthis = ensureSuperThis();
|
58
58
|
afterEach(async () => {
|
59
59
|
await db.close();
|
@@ -61,7 +61,7 @@ describe("basic Ledger with record", function () {
|
|
61
61
|
});
|
62
62
|
beforeEach(async function () {
|
63
63
|
await sthis.start();
|
64
|
-
db =
|
64
|
+
db = fireproof.DB("factory-name");
|
65
65
|
const ok = await db.put<Doc>({ _id: "hello", value: "world" });
|
66
66
|
expect(ok.id).toBe("hello");
|
67
67
|
});
|
@@ -93,10 +93,11 @@ describe("basic Ledger with record", function () {
|
|
93
93
|
expect(rows[0].value._id).toBe("hello");
|
94
94
|
});
|
95
95
|
it("is not persisted", async function () {
|
96
|
-
const db2 =
|
96
|
+
const db2 = fireproof.DB("factory-name");
|
97
97
|
const { rows } = await db2.changes([]);
|
98
98
|
expect(rows.length).toBe(1);
|
99
|
-
|
99
|
+
// assert((db.ledger.ref === db2.ledger.ref, "should be the same ledger");
|
100
|
+
expect((db.ledger as LedgerShell).ref).toBe((db2.ledger as LedgerShell).ref);
|
100
101
|
const doc = await db2.get<Doc>("hello").catch((e) => e);
|
101
102
|
expect(doc.value).toBe("world");
|
102
103
|
await db2.close();
|
@@ -107,7 +108,7 @@ describe("named Ledger with record", function () {
|
|
107
108
|
interface Doc {
|
108
109
|
readonly value: string;
|
109
110
|
}
|
110
|
-
let db:
|
111
|
+
let db: Database;
|
111
112
|
const sthis = ensureSuperThis();
|
112
113
|
afterEach(async () => {
|
113
114
|
await db.close();
|
@@ -115,7 +116,7 @@ describe("named Ledger with record", function () {
|
|
115
116
|
});
|
116
117
|
beforeEach(async function () {
|
117
118
|
await sthis.start();
|
118
|
-
db =
|
119
|
+
db = fireproof.DB("test-db-name");
|
119
120
|
/** @type {Doc} */
|
120
121
|
const doc = { _id: "hello", value: "world" };
|
121
122
|
const ok = await db.put(doc);
|
@@ -151,7 +152,7 @@ describe("named Ledger with record", function () {
|
|
151
152
|
it("should have a key", async function () {
|
152
153
|
const { rows } = await db.changes([]);
|
153
154
|
expect(rows.length).toBe(1);
|
154
|
-
const blocks = db.crdt.blockstore as bs.EncryptedBlockstore;
|
155
|
+
const blocks = db.ledger.crdt.blockstore as bs.EncryptedBlockstore;
|
155
156
|
const loader = blocks.loader;
|
156
157
|
expect(loader).toBeTruthy();
|
157
158
|
await loader.ready();
|
@@ -233,7 +234,7 @@ describe("named Ledger with record", function () {
|
|
233
234
|
// })
|
234
235
|
|
235
236
|
describe("basic Ledger parallel writes / public ordered", () => {
|
236
|
-
let db:
|
237
|
+
let db: Database;
|
237
238
|
const writes: Promise<DocResponse>[] = [];
|
238
239
|
const sthis = mockSuperThis();
|
239
240
|
afterEach(async () => {
|
@@ -242,7 +243,7 @@ describe("basic Ledger parallel writes / public ordered", () => {
|
|
242
243
|
});
|
243
244
|
beforeEach(async () => {
|
244
245
|
await sthis.start();
|
245
|
-
db =
|
246
|
+
db = fireproof.DB("test-parallel-writes-ordered", { writeQueue: { chunkSize: 1 } });
|
246
247
|
for (let i = 0; i < 10; i++) {
|
247
248
|
const doc = { _id: `id-${i}`, hello: "world" };
|
248
249
|
writes.push(db.put(doc));
|
@@ -251,13 +252,13 @@ describe("basic Ledger parallel writes / public ordered", () => {
|
|
251
252
|
});
|
252
253
|
|
253
254
|
it("should have one head", () => {
|
254
|
-
const crdt = db.crdt;
|
255
|
+
const crdt = db.ledger.crdt;
|
255
256
|
expect(crdt.clock.head.length).toBe(1);
|
256
257
|
});
|
257
258
|
|
258
259
|
it("has changes ordered", async function () {
|
259
260
|
const { rows, clock } = await db.changes([]);
|
260
|
-
expect(clock[0]).toBe(db.crdt.clock.head[0]);
|
261
|
+
expect(clock[0]).toBe(db.ledger.crdt.clock.head[0]);
|
261
262
|
expect(rows.length).toBe(10);
|
262
263
|
for (let i = 0; i < 10; i++) {
|
263
264
|
expect(rows[i].key).toBe("id-" + i);
|
@@ -267,7 +268,7 @@ describe("basic Ledger parallel writes / public ordered", () => {
|
|
267
268
|
});
|
268
269
|
|
269
270
|
describe("basic Ledger parallel writes / public", () => {
|
270
|
-
let db:
|
271
|
+
let db: Database;
|
271
272
|
const writes: Promise<DocResponse>[] = [];
|
272
273
|
const sthis = ensureSuperThis();
|
273
274
|
afterEach(async () => {
|
@@ -276,7 +277,7 @@ describe("basic Ledger parallel writes / public", () => {
|
|
276
277
|
});
|
277
278
|
beforeEach(async () => {
|
278
279
|
await sthis.start();
|
279
|
-
db =
|
280
|
+
db = fireproof.DB("test-parallel-writes", { writeQueue: { chunkSize: 32 } });
|
280
281
|
for (let i = 0; i < 10; i++) {
|
281
282
|
const doc = { _id: `id-${i}`, hello: "world" };
|
282
283
|
writes.push(db.put(doc));
|
@@ -284,7 +285,7 @@ describe("basic Ledger parallel writes / public", () => {
|
|
284
285
|
await Promise.all(writes);
|
285
286
|
});
|
286
287
|
it("should resolve to one head", async () => {
|
287
|
-
const crdt = db.crdt;
|
288
|
+
const crdt = db.ledger.crdt;
|
288
289
|
expect(crdt.clock.head.length).toBe(9);
|
289
290
|
await db.put({ _id: "id-10", hello: "world" });
|
290
291
|
expect(crdt.clock.head.length).toBe(1);
|
@@ -323,7 +324,7 @@ describe("basic Ledger parallel writes / public", () => {
|
|
323
324
|
});
|
324
325
|
it("has changes not ordered", async function () {
|
325
326
|
const { rows, clock } = await db.changes([]);
|
326
|
-
expect(clock[0]).toBe(db.crdt.clock.head[0]);
|
327
|
+
expect(clock[0]).toBe(db.ledger.crdt.clock.head[0]);
|
327
328
|
expect(rows.length).toBe(10);
|
328
329
|
rows.sort((a, b) => a.key.localeCompare(b.key));
|
329
330
|
// console.log(rows);
|
@@ -337,7 +338,7 @@ describe("basic Ledger parallel writes / public", () => {
|
|
337
338
|
expect(rows.length).toBe(10);
|
338
339
|
// expect(db.opts.public).toBeTruthy();
|
339
340
|
// expect(db._crdt.opts.public).toBeTruthy();
|
340
|
-
const blocks = db.crdt.blockstore as bs.EncryptedBlockstore;
|
341
|
+
const blocks = db.ledger.crdt.blockstore as bs.EncryptedBlockstore;
|
341
342
|
const loader = blocks.loader;
|
342
343
|
expect(loader).toBeTruthy();
|
343
344
|
await loader.ready();
|
@@ -347,7 +348,7 @@ describe("basic Ledger parallel writes / public", () => {
|
|
347
348
|
});
|
348
349
|
|
349
350
|
describe("basic Ledger with subscription", function () {
|
350
|
-
let db:
|
351
|
+
let db: Database;
|
351
352
|
let didRun: number;
|
352
353
|
let unsubscribe: () => void;
|
353
354
|
let lastDoc: DocWithId<NonNullable<unknown>>;
|
@@ -359,7 +360,7 @@ describe("basic Ledger with subscription", function () {
|
|
359
360
|
});
|
360
361
|
beforeEach(async function () {
|
361
362
|
await sthis.start();
|
362
|
-
db =
|
363
|
+
db = fireproof.DB("factory-name");
|
363
364
|
didRun = 0;
|
364
365
|
waitForSub = new Promise((resolve) => {
|
365
366
|
unsubscribe = db.subscribe((docs) => {
|
@@ -393,17 +394,16 @@ describe("basic Ledger with subscription", function () {
|
|
393
394
|
});
|
394
395
|
|
395
396
|
describe("basic Ledger with no update subscription", function () {
|
396
|
-
let db:
|
397
|
+
let db: Database;
|
397
398
|
let didRun: number;
|
398
399
|
let unsubscribe: () => void;
|
399
|
-
const sthis = ensureSuperThis();
|
400
|
+
// const sthis = ensureSuperThis();
|
400
401
|
afterEach(async () => {
|
401
402
|
await db.close();
|
402
403
|
await db.destroy();
|
403
404
|
});
|
404
405
|
beforeEach(async function () {
|
405
|
-
|
406
|
-
db = LedgerFactory("factory-name");
|
406
|
+
db = fireproof.DB("factory-name");
|
407
407
|
didRun = 0;
|
408
408
|
unsubscribe = db.subscribe(() => {
|
409
409
|
didRun++;
|
@@ -429,7 +429,7 @@ describe("basic Ledger with no update subscription", function () {
|
|
429
429
|
});
|
430
430
|
|
431
431
|
describe("ledger with files input", () => {
|
432
|
-
let db:
|
432
|
+
let db: Database;
|
433
433
|
let imagefiles: FileWithCid[] = [];
|
434
434
|
let result: DocResponse;
|
435
435
|
const sthis = ensureSuperThis();
|
@@ -441,7 +441,7 @@ describe("ledger with files input", () => {
|
|
441
441
|
beforeEach(async function () {
|
442
442
|
await sthis.start();
|
443
443
|
imagefiles = await buildBlobFiles();
|
444
|
-
db =
|
444
|
+
db = fireproof.DB("fireproof-with-images");
|
445
445
|
const doc = {
|
446
446
|
_id: "images-main",
|
447
447
|
type: "files",
|
@@ -532,6 +532,7 @@ describe("StoreURIRuntime", () => {
|
|
532
532
|
await sthis.start();
|
533
533
|
safeEnv = sthis.env.get("FP_STORAGE_URL");
|
534
534
|
sthis.env.set("FP_STORAGE_URL", "my://bla/storage");
|
535
|
+
// console.log(">>>>>>>>>>", bs, bs.registerStoreProtocol)
|
535
536
|
unreg = bs.registerStoreProtocol({
|
536
537
|
protocol: "murks",
|
537
538
|
isDefault: true,
|