@fireproof/core 0.19.121 → 0.20.0-dev-preview-05
Sign up to get free protection for your applications and to get access to all the features.
- package/README.md +13 -12
- package/deno/index.d.ts +7 -0
- package/deno/index.js +66 -0
- package/deno/index.js.map +1 -0
- package/deno/metafile-esm.json +1 -0
- package/deno.json +2 -3
- package/index.cjs +1827 -1059
- package/index.cjs.map +1 -1
- package/index.d.cts +747 -334
- package/index.d.ts +747 -334
- package/index.js +1800 -1034
- package/index.js.map +1 -1
- package/metafile-cjs.json +1 -1
- package/metafile-esm.json +1 -1
- package/node/index.cjs +16 -293
- package/node/index.cjs.map +1 -1
- package/node/index.d.cts +4 -40
- package/node/index.d.ts +4 -40
- package/node/index.js +22 -237
- package/node/index.js.map +1 -1
- package/node/metafile-cjs.json +1 -1
- package/node/metafile-esm.json +1 -1
- package/package.json +14 -6
- 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/fp-envelope.test.ts-off +65 -0
- package/tests/blockstore/interceptor-gateway.test.ts +122 -0
- package/tests/blockstore/keyed-crypto-indexdb-file.test.ts +130 -0
- package/tests/blockstore/keyed-crypto.test.ts +73 -118
- package/tests/blockstore/loader.test.ts +18 -9
- package/tests/blockstore/store.test.ts +40 -31
- package/tests/blockstore/transaction.test.ts +14 -13
- package/tests/fireproof/all-gateway.test.ts +286 -216
- package/tests/fireproof/cars/bafkreidxwt2nhvbl4fnqfw3ctlt6zbrir4kqwmjo5im6rf4q5si27kgo2i.ts +324 -316
- package/tests/fireproof/crdt.test.ts +78 -19
- package/tests/fireproof/fireproof.test.ts +111 -92
- package/tests/fireproof/hello.test.ts +21 -17
- package/tests/fireproof/indexer.test.ts +74 -50
- package/tests/fireproof/{database.test.ts → ledger.test.ts} +241 -45
- package/tests/fireproof/multiple-ledger.test.ts +2 -2
- package/tests/fireproof/utils.test.ts +47 -6
- package/tests/gateway/file/loader-config.test.ts +307 -0
- package/tests/gateway/fp-envelope-serialize.test.ts +256 -0
- package/tests/gateway/indexdb/loader-config.test.ts +79 -0
- package/tests/helpers.ts +44 -17
- package/tests/react/useFireproof.test.tsx +2 -2
- package/tests/www/gallery.html +2 -2
- package/tests/www/todo-aws.html +1 -1
- package/tests/www/todo-ipfs.html +1 -1
- package/tests/www/todo-local.html +1 -1
- package/tests/www/todo.html +25 -4
- package/web/index.cjs +102 -116
- package/web/index.cjs.map +1 -1
- package/web/index.d.cts +15 -29
- package/web/index.d.ts +15 -29
- package/web/index.js +91 -105
- package/web/index.js.map +1 -1
- package/web/metafile-cjs.json +1 -1
- package/web/metafile-esm.json +1 -1
- package/node/chunk-4A4RAVNS.js +0 -17
- package/node/chunk-4A4RAVNS.js.map +0 -1
- package/node/mem-filesystem-LPPT7QV5.js +0 -40
- package/node/mem-filesystem-LPPT7QV5.js.map +0 -1
- package/tests/fireproof/config.test.ts +0 -163
- /package/tests/blockstore/{fragment-gateway.test.ts → fragment-gateway.test.ts-off} +0 -0
@@ -1,23 +1,27 @@
|
|
1
1
|
import { CID } from "multiformats";
|
2
|
-
import {
|
2
|
+
import { rt, bs, NotFoundError, SuperThis, PARAM, DbMeta, ensureSuperThis } from "@fireproof/core";
|
3
|
+
import { noopUrl } from "../helpers.js";
|
4
|
+
import { Result } from "@adviser/cement";
|
3
5
|
|
4
6
|
function runtime(sthis: SuperThis) {
|
5
|
-
return bs.toStoreRuntime(
|
7
|
+
return bs.toStoreRuntime(sthis);
|
6
8
|
}
|
7
9
|
|
8
|
-
function mockLoader(sthis: SuperThis, name
|
10
|
+
async function mockLoader(sthis: SuperThis, name?: string): Promise<bs.StoreFactoryItem> {
|
11
|
+
const url = noopUrl(name);
|
9
12
|
return {
|
10
13
|
sthis,
|
11
|
-
|
12
|
-
|
13
|
-
|
14
|
-
|
15
|
-
|
14
|
+
url: url,
|
15
|
+
loader: {
|
16
|
+
keyBag: () => rt.kb.getKeyBag(sthis),
|
17
|
+
// eslint-disable-next-line @typescript-eslint/no-unused-vars
|
18
|
+
handleDbMetasFromStore: (metas: DbMeta[]): Promise<void> => Promise.resolve(),
|
19
|
+
} as bs.Loader,
|
20
|
+
};
|
16
21
|
}
|
17
22
|
|
18
23
|
describe("DataStore", function () {
|
19
24
|
let store: bs.DataStore;
|
20
|
-
let raw: bs.TestGateway;
|
21
25
|
|
22
26
|
const sthis = ensureSuperThis();
|
23
27
|
afterEach(async () => {
|
@@ -27,13 +31,12 @@ describe("DataStore", function () {
|
|
27
31
|
|
28
32
|
beforeEach(async () => {
|
29
33
|
await sthis.start();
|
30
|
-
store = await runtime(sthis).makeDataStore(mockLoader(sthis
|
34
|
+
store = await runtime(sthis).makeDataStore(await mockLoader(sthis));
|
31
35
|
await store.start();
|
32
|
-
raw = await bs.testStoreFactory(store.url(), sthis);
|
33
36
|
});
|
34
37
|
|
35
38
|
it("should have a name", function () {
|
36
|
-
expect(store.
|
39
|
+
expect(store.url().getParam(PARAM.NAME)).toEqual("test");
|
37
40
|
});
|
38
41
|
|
39
42
|
it("should save a car", async function () {
|
@@ -42,14 +45,13 @@ describe("DataStore", function () {
|
|
42
45
|
bytes: new Uint8Array([55, 56, 57]),
|
43
46
|
};
|
44
47
|
await store.save(car);
|
45
|
-
const data = await
|
48
|
+
const data = (await store.realGateway.getPlain(sthis, store.url(), car.cid.toString())).Ok();
|
46
49
|
expect(sthis.txt.decode(data)).toEqual(sthis.txt.decode(car.bytes));
|
47
50
|
});
|
48
51
|
});
|
49
52
|
|
50
53
|
describe("DataStore with a saved car", function () {
|
51
54
|
let store: bs.DataStore;
|
52
|
-
let raw: bs.TestGateway;
|
53
55
|
let car: bs.AnyBlock;
|
54
56
|
|
55
57
|
const sthis = ensureSuperThis();
|
@@ -61,9 +63,8 @@ describe("DataStore with a saved car", function () {
|
|
61
63
|
|
62
64
|
beforeEach(async function () {
|
63
65
|
await sthis.start();
|
64
|
-
store = await runtime(sthis).makeDataStore(mockLoader(sthis, "test2"));
|
66
|
+
store = await runtime(sthis).makeDataStore(await mockLoader(sthis, "test2"));
|
65
67
|
await store.start();
|
66
|
-
raw = await bs.testStoreFactory(store.url(), sthis);
|
67
68
|
car = {
|
68
69
|
cid: "cid" as unknown as CID,
|
69
70
|
bytes: new Uint8Array([55, 56, 57, 80]),
|
@@ -72,7 +73,7 @@ describe("DataStore with a saved car", function () {
|
|
72
73
|
});
|
73
74
|
|
74
75
|
it("should have a car", async function () {
|
75
|
-
const data = await
|
76
|
+
const data = (await store.realGateway.getPlain(sthis, store.url(), car.cid.toString())).Ok();
|
76
77
|
expect(sthis.txt.decode(data)).toEqual(sthis.txt.decode(car.bytes));
|
77
78
|
});
|
78
79
|
|
@@ -92,7 +93,6 @@ describe("DataStore with a saved car", function () {
|
|
92
93
|
|
93
94
|
describe("MetaStore", function () {
|
94
95
|
let store: bs.MetaStore;
|
95
|
-
let raw: bs.TestGateway;
|
96
96
|
|
97
97
|
const sthis = ensureSuperThis();
|
98
98
|
|
@@ -103,13 +103,12 @@ describe("MetaStore", function () {
|
|
103
103
|
|
104
104
|
beforeEach(async function () {
|
105
105
|
await sthis.start();
|
106
|
-
store = await runtime(sthis).makeMetaStore(mockLoader(sthis, "test"));
|
106
|
+
store = await runtime(sthis).makeMetaStore(await mockLoader(sthis, "test"));
|
107
107
|
await store.start();
|
108
|
-
raw = await bs.testStoreFactory(store.url(), sthis);
|
109
108
|
});
|
110
109
|
|
111
110
|
it("should have a name", function () {
|
112
|
-
expect(store.
|
111
|
+
expect(store.url().getParam(PARAM.NAME)).toEqual("test");
|
113
112
|
});
|
114
113
|
|
115
114
|
it("should save a header", async function () {
|
@@ -119,9 +118,11 @@ describe("MetaStore", function () {
|
|
119
118
|
// key: undefined,
|
120
119
|
};
|
121
120
|
await store.save(h);
|
122
|
-
const file = await
|
123
|
-
const
|
124
|
-
|
121
|
+
const file = await store.realGateway.getPlain(sthis, store.url(), "main");
|
122
|
+
const blockMeta = (await rt.gw.fpDeserialize(sthis, store.url(), file)) as Result<bs.FPEnvelopeMeta>;
|
123
|
+
expect(blockMeta.Ok()).toBeTruthy();
|
124
|
+
expect(blockMeta.Ok().payload.length).toEqual(1);
|
125
|
+
const decodedHeader = blockMeta.Ok().payload[0].dbMeta;
|
125
126
|
expect(decodedHeader).toBeTruthy();
|
126
127
|
expect(decodedHeader.cars).toBeTruthy();
|
127
128
|
expect(decodedHeader.cars[0].toString()).toEqual(cid.toString());
|
@@ -130,7 +131,6 @@ describe("MetaStore", function () {
|
|
130
131
|
|
131
132
|
describe("MetaStore with a saved header", function () {
|
132
133
|
let store: bs.MetaStore;
|
133
|
-
let raw: bs.TestGateway;
|
134
134
|
let cid: CID;
|
135
135
|
const sthis = ensureSuperThis();
|
136
136
|
|
@@ -141,22 +141,31 @@ describe("MetaStore with a saved header", function () {
|
|
141
141
|
|
142
142
|
beforeEach(async function () {
|
143
143
|
await sthis.start();
|
144
|
-
store = await runtime(sthis).makeMetaStore(mockLoader(sthis, "test-saved-header"));
|
144
|
+
store = await runtime(sthis).makeMetaStore(await mockLoader(sthis, "test-saved-header"));
|
145
145
|
await store.start();
|
146
|
-
raw = await bs.testStoreFactory(store.url(), sthis);
|
147
146
|
cid = CID.parse("bafybeia4luuns6dgymy5kau5rm7r4qzrrzg6cglpzpogussprpy42cmcn4");
|
148
147
|
await store.save({ cars: [cid] /*, key: undefined */ });
|
149
148
|
});
|
150
149
|
|
150
|
+
// it("should load", async function () {
|
151
|
+
// expect(onload).toBeTruthy();
|
152
|
+
// expect(onload?.length).toEqual(1);
|
153
|
+
// expect(onload?.[0].cars.toString()).toEqual(cid.toString());
|
154
|
+
// });
|
155
|
+
|
151
156
|
it("should have a header", async function () {
|
152
|
-
const bytes = await
|
153
|
-
const data = sthis.txt.decode(bytes);
|
157
|
+
const bytes = await store.realGateway.getPlain(sthis, store.url(), "main");
|
158
|
+
const data = sthis.txt.decode(bytes.Ok());
|
154
159
|
expect(data).toMatch(/parents/);
|
155
160
|
const header = JSON.parse(data)[0];
|
156
161
|
expect(header).toBeDefined();
|
157
162
|
expect(header.parents).toBeDefined();
|
158
|
-
const [blockMeta] = await store.handleByteHeads(bytes);
|
159
|
-
|
163
|
+
// const [blockMeta] = await store.handleByteHeads(bytes);
|
164
|
+
|
165
|
+
const blockMeta = (await rt.gw.fpDeserialize(sthis, store.url(), bytes)) as Result<bs.FPEnvelopeMeta>;
|
166
|
+
expect(blockMeta.Ok()).toBeTruthy();
|
167
|
+
expect(blockMeta.Ok().payload.length).toEqual(1);
|
168
|
+
const decodedHeader = blockMeta.Ok().payload[0].dbMeta;
|
160
169
|
expect(decodedHeader).toBeDefined();
|
161
170
|
expect(decodedHeader.cars).toBeDefined();
|
162
171
|
expect(decodedHeader.cars[0].toString()).toEqual(cid.toString());
|
@@ -1,18 +1,19 @@
|
|
1
1
|
import { CID } from "multiformats";
|
2
2
|
import { bs, ensureSuperThis, SuperThis } from "@fireproof/core";
|
3
|
+
import { simpleBlockOpts } from "../helpers.js";
|
3
4
|
|
4
5
|
describe("Fresh TransactionBlockstore", function () {
|
5
6
|
let blocks: bs.BaseBlockstore;
|
6
7
|
const sthis = ensureSuperThis();
|
7
8
|
beforeEach(function () {
|
8
|
-
blocks = new bs.BaseBlockstore();
|
9
|
-
});
|
10
|
-
it("should not have a name", function () {
|
11
|
-
expect(blocks.name).toBeFalsy();
|
12
|
-
});
|
13
|
-
it("should not have a loader", function () {
|
14
|
-
expect(blocks.loader).toBeFalsy();
|
9
|
+
blocks = new bs.BaseBlockstore(simpleBlockOpts(sthis));
|
15
10
|
});
|
11
|
+
// it("should not have a name", function () {
|
12
|
+
// expect(blocks.name).toBeFalsy();
|
13
|
+
// });
|
14
|
+
// it("should not have a loader", function () {
|
15
|
+
// expect(blocks.loader).toBeFalsy();
|
16
|
+
// });
|
16
17
|
it("should not put", async function () {
|
17
18
|
const value = sthis.txt.encode("value");
|
18
19
|
const e = await blocks.put("key" as unknown as bs.AnyLink, value).catch((e) => e);
|
@@ -34,11 +35,11 @@ describe("TransactionBlockstore with name", function () {
|
|
34
35
|
let blocks: bs.EncryptedBlockstore;
|
35
36
|
const sthis = ensureSuperThis();
|
36
37
|
beforeEach(function () {
|
37
|
-
blocks = new bs.EncryptedBlockstore(sthis,
|
38
|
-
});
|
39
|
-
it("should have a name", function () {
|
40
|
-
expect(blocks.name).toEqual("test");
|
38
|
+
blocks = new bs.EncryptedBlockstore(sthis, simpleBlockOpts(sthis));
|
41
39
|
});
|
40
|
+
// it("should have a name", function () {
|
41
|
+
// expect(blocks.name).toEqual("test");
|
42
|
+
// });
|
42
43
|
it("should have a loader", function () {
|
43
44
|
expect(blocks.loader).toBeTruthy();
|
44
45
|
});
|
@@ -58,7 +59,7 @@ describe("A transaction", function () {
|
|
58
59
|
let blocks: bs.EncryptedBlockstore;
|
59
60
|
const sthis = ensureSuperThis();
|
60
61
|
beforeEach(async function () {
|
61
|
-
blocks = new bs.EncryptedBlockstore(sthis,
|
62
|
+
blocks = new bs.EncryptedBlockstore(sthis, simpleBlockOpts(sthis, "test"));
|
62
63
|
tblocks = new bs.CarTransaction(blocks);
|
63
64
|
blocks.transactions.add(tblocks);
|
64
65
|
});
|
@@ -88,7 +89,7 @@ describe("TransactionBlockstore with a completed transaction", function () {
|
|
88
89
|
cid = CID.parse("bafybeia4luuns6dgymy5kau5rm7r4qzrrzg6cglpzpogussprpy42cmcn4");
|
89
90
|
cid2 = CID.parse("bafybeibgouhn5ktecpjuovt52zamzvm4dlve5ak7x6d5smms3itkhplnhm");
|
90
91
|
|
91
|
-
blocks = new bs.BaseBlockstore();
|
92
|
+
blocks = new bs.BaseBlockstore(simpleBlockOpts(sthis));
|
92
93
|
await blocks.transaction(async (tblocks) => {
|
93
94
|
await tblocks.put(cid, asUInt8Array("value", sthis));
|
94
95
|
await tblocks.put(cid, asUInt8Array("value", sthis));
|