@fireproof/core 0.19.8-dev-getcon → 0.19.9-dev-frag
Sign up to get free protection for your applications and to get access to all the features.
- package/README.md +7 -0
- package/chunk-7EWIAXTM.js +7 -0
- package/chunk-7EWIAXTM.js.map +1 -0
- package/chunk-JO5AVWG7.js +67 -0
- package/chunk-JO5AVWG7.js.map +1 -0
- package/chunk-PB4BKL4O.js +7 -0
- package/chunk-PB4BKL4O.js.map +1 -0
- package/chunk-YS4GL6OK.js +266 -0
- package/chunk-YS4GL6OK.js.map +1 -0
- package/{store-indexdb-WLRSICCB.js → gateway-IZRHJWPE.js} +48 -80
- package/gateway-IZRHJWPE.js.map +1 -0
- package/gateway-YSNUK2L3.js +145 -0
- package/gateway-YSNUK2L3.js.map +1 -0
- package/index.cjs +2132 -1783
- package/index.cjs.map +1 -1
- package/index.d.cts +613 -513
- package/index.d.ts +613 -513
- package/index.global.js +19367 -20108
- package/index.global.js.map +1 -1
- package/index.js +1512 -1022
- package/index.js.map +1 -1
- package/key-bag-file-NMEBFSPM.js +54 -0
- package/key-bag-file-NMEBFSPM.js.map +1 -0
- package/key-bag-indexdb-X5V6GNBZ.js +50 -0
- package/key-bag-indexdb-X5V6GNBZ.js.map +1 -0
- package/mem-filesystem-B6C6QOIP.js +41 -0
- package/mem-filesystem-B6C6QOIP.js.map +1 -0
- package/metafile-cjs.json +1 -1
- package/metafile-esm.json +1 -1
- package/metafile-iife.json +1 -1
- package/node-filesystem-5JLBSHKQ.js +41 -0
- package/node-filesystem-5JLBSHKQ.js.map +1 -0
- package/package.json +8 -7
- package/tests/blockstore/fragment-gateway.test.ts +107 -0
- package/tests/blockstore/keyed-crypto.test.ts +302 -0
- package/tests/blockstore/loader.test.ts +24 -19
- package/tests/blockstore/store.test.ts +34 -28
- package/tests/blockstore/transaction.test.ts +19 -15
- package/tests/fireproof/config.test.ts +94 -78
- package/tests/fireproof/crdt.test.ts +34 -28
- package/tests/fireproof/database.test.ts +22 -14
- package/tests/fireproof/fireproof.test.fixture.ts +133 -0
- package/tests/fireproof/fireproof.test.ts +331 -219
- package/tests/fireproof/hello.test.ts +6 -4
- package/tests/fireproof/indexer.test.ts +34 -27
- package/tests/fireproof/utils.test.ts +65 -0
- package/tests/helpers.ts +25 -57
- package/utils-IZPK4QS7.js +14 -0
- package/utils-IZPK4QS7.js.map +1 -0
- package/chunk-BNL4PVBF.js +0 -314
- package/chunk-BNL4PVBF.js.map +0 -1
- package/chunk-JW2QT6BF.js +0 -184
- package/chunk-JW2QT6BF.js.map +0 -1
- package/node-sys-container-MIEX6ELJ.js +0 -29
- package/node-sys-container-MIEX6ELJ.js.map +0 -1
- package/store-file-VJ6BI4II.js +0 -191
- package/store-file-VJ6BI4II.js.map +0 -1
- package/store-indexdb-WLRSICCB.js.map +0 -1
@@ -1,16 +1,16 @@
|
|
1
1
|
import { CID } from "multiformats";
|
2
|
-
import {
|
3
|
-
import {
|
4
|
-
import { NotFoundError } from "../../src/blockstore/gateway";
|
2
|
+
import { bs, NotFoundError, SuperThis } from "@fireproof/core";
|
3
|
+
import { mockSuperThis } from "../helpers";
|
5
4
|
|
6
5
|
const decoder = new TextDecoder("utf-8");
|
7
6
|
|
8
|
-
function runtime() {
|
9
|
-
return bs.toStoreRuntime({},
|
7
|
+
function runtime(sthis: SuperThis) {
|
8
|
+
return bs.toStoreRuntime({}, sthis);
|
10
9
|
}
|
11
10
|
|
12
|
-
function mockLoader(name: string): bs.Loadable {
|
11
|
+
function mockLoader(sthis: SuperThis, name: string): bs.Loadable {
|
13
12
|
return {
|
13
|
+
sthis,
|
14
14
|
name,
|
15
15
|
ebOpts: {
|
16
16
|
store: {},
|
@@ -20,18 +20,19 @@ function mockLoader(name: string): bs.Loadable {
|
|
20
20
|
|
21
21
|
describe("DataStore", function () {
|
22
22
|
let store: bs.DataStore;
|
23
|
-
let raw: bs.
|
23
|
+
let raw: bs.TestGateway;
|
24
24
|
|
25
|
+
const sthis = mockSuperThis();
|
25
26
|
afterEach(async () => {
|
26
27
|
await store.close();
|
27
28
|
await store.destroy();
|
28
29
|
});
|
29
30
|
|
30
31
|
beforeEach(async () => {
|
31
|
-
await
|
32
|
-
store = await runtime().makeDataStore(mockLoader("test"));
|
32
|
+
await sthis.start();
|
33
|
+
store = await runtime(sthis).makeDataStore(mockLoader(sthis, "test"));
|
33
34
|
await store.start();
|
34
|
-
raw = await bs.testStoreFactory(store.url);
|
35
|
+
raw = await bs.testStoreFactory(store.url(), sthis);
|
35
36
|
});
|
36
37
|
|
37
38
|
it("should have a name", function () {
|
@@ -44,26 +45,28 @@ describe("DataStore", function () {
|
|
44
45
|
bytes: new Uint8Array([55, 56, 57]),
|
45
46
|
};
|
46
47
|
await store.save(car);
|
47
|
-
const data = await raw.get(store.url, car.cid.toString());
|
48
|
+
const data = await raw.get(store.url(), car.cid.toString());
|
48
49
|
expect(decoder.decode(data)).toEqual(decoder.decode(car.bytes));
|
49
50
|
});
|
50
51
|
});
|
51
52
|
|
52
53
|
describe("DataStore with a saved car", function () {
|
53
54
|
let store: bs.DataStore;
|
54
|
-
let raw: bs.
|
55
|
+
let raw: bs.TestGateway;
|
55
56
|
let car: bs.AnyBlock;
|
56
57
|
|
58
|
+
const sthis = mockSuperThis();
|
59
|
+
|
57
60
|
afterEach(async () => {
|
58
61
|
await store.close();
|
59
62
|
await store.destroy();
|
60
63
|
});
|
61
64
|
|
62
65
|
beforeEach(async function () {
|
63
|
-
await
|
64
|
-
store = await runtime().makeDataStore(mockLoader("test2"));
|
66
|
+
await sthis.start();
|
67
|
+
store = await runtime(sthis).makeDataStore(mockLoader(sthis, "test2"));
|
65
68
|
await store.start();
|
66
|
-
raw = await bs.testStoreFactory(store.url);
|
69
|
+
raw = await bs.testStoreFactory(store.url(), sthis);
|
67
70
|
car = {
|
68
71
|
cid: "cid" as unknown as CID,
|
69
72
|
bytes: new Uint8Array([55, 56, 57, 80]),
|
@@ -72,7 +75,7 @@ describe("DataStore with a saved car", function () {
|
|
72
75
|
});
|
73
76
|
|
74
77
|
it("should have a car", async function () {
|
75
|
-
const data = await raw.get(store.url, car.cid.toString());
|
78
|
+
const data = await raw.get(store.url(), car.cid.toString());
|
76
79
|
expect(decoder.decode(data)).toEqual(decoder.decode(car.bytes));
|
77
80
|
});
|
78
81
|
|
@@ -93,7 +96,9 @@ describe("DataStore with a saved car", function () {
|
|
93
96
|
|
94
97
|
describe("MetaStore", function () {
|
95
98
|
let store: bs.MetaStore;
|
96
|
-
let raw: bs.
|
99
|
+
let raw: bs.TestGateway;
|
100
|
+
|
101
|
+
const sthis = mockSuperThis();
|
97
102
|
|
98
103
|
afterEach(async () => {
|
99
104
|
await store.close();
|
@@ -101,10 +106,10 @@ describe("MetaStore", function () {
|
|
101
106
|
});
|
102
107
|
|
103
108
|
beforeEach(async function () {
|
104
|
-
await
|
105
|
-
store = await runtime().makeMetaStore(mockLoader("test"));
|
109
|
+
await sthis.start();
|
110
|
+
store = await runtime(sthis).makeMetaStore(mockLoader(sthis, "test"));
|
106
111
|
await store.start();
|
107
|
-
raw = await bs.testStoreFactory(store.url);
|
112
|
+
raw = await bs.testStoreFactory(store.url(), sthis);
|
108
113
|
});
|
109
114
|
|
110
115
|
it("should have a name", function () {
|
@@ -115,10 +120,10 @@ describe("MetaStore", function () {
|
|
115
120
|
const cid = CID.parse("bafybeia4luuns6dgymy5kau5rm7r4qzrrzg6cglpzpogussprpy42cmcn4");
|
116
121
|
const h: bs.DbMeta = {
|
117
122
|
cars: [cid],
|
118
|
-
key: undefined,
|
123
|
+
// key: undefined,
|
119
124
|
};
|
120
125
|
await store.save(h);
|
121
|
-
const file = await raw.get(store.url, "main");
|
126
|
+
const file = await raw.get(store.url(), "main");
|
122
127
|
const header = JSON.parse(decoder.decode(file));
|
123
128
|
expect(header).toBeTruthy();
|
124
129
|
expect(header.cars).toBeTruthy();
|
@@ -128,8 +133,9 @@ describe("MetaStore", function () {
|
|
128
133
|
|
129
134
|
describe("MetaStore with a saved header", function () {
|
130
135
|
let store: bs.MetaStore;
|
131
|
-
let raw: bs.
|
136
|
+
let raw: bs.TestGateway;
|
132
137
|
let cid: CID;
|
138
|
+
const sthis = mockSuperThis();
|
133
139
|
|
134
140
|
afterEach(async () => {
|
135
141
|
await store.close();
|
@@ -137,16 +143,16 @@ describe("MetaStore with a saved header", function () {
|
|
137
143
|
});
|
138
144
|
|
139
145
|
beforeEach(async function () {
|
140
|
-
await
|
141
|
-
store = await runtime().makeMetaStore(mockLoader("test-saved-header"));
|
146
|
+
await sthis.start();
|
147
|
+
store = await runtime(sthis).makeMetaStore(mockLoader(sthis, "test-saved-header"));
|
142
148
|
await store.start();
|
143
|
-
raw = await bs.testStoreFactory(store.url);
|
149
|
+
raw = await bs.testStoreFactory(store.url(), sthis);
|
144
150
|
cid = CID.parse("bafybeia4luuns6dgymy5kau5rm7r4qzrrzg6cglpzpogussprpy42cmcn4");
|
145
|
-
await store.save({ cars: [cid]
|
151
|
+
await store.save({ cars: [cid] /*, key: undefined */ });
|
146
152
|
});
|
147
153
|
|
148
154
|
it("should have a header", async function () {
|
149
|
-
const data = decoder.decode(await raw.get(store.url, "main"));
|
155
|
+
const data = decoder.decode(await raw.get(store.url(), "main"));
|
150
156
|
expect(data).toMatch(/car/);
|
151
157
|
const header = JSON.parse(data);
|
152
158
|
expect(header).toBeTruthy();
|
@@ -1,9 +1,10 @@
|
|
1
1
|
import { CID } from "multiformats";
|
2
|
-
|
3
|
-
import {
|
2
|
+
import { bs, SuperThis } from "@fireproof/core";
|
3
|
+
import { mockSuperThis } from "../helpers";
|
4
4
|
|
5
5
|
describe("Fresh TransactionBlockstore", function () {
|
6
6
|
let blocks: bs.BaseBlockstore;
|
7
|
+
const sthis = mockSuperThis();
|
7
8
|
beforeEach(function () {
|
8
9
|
blocks = new bs.BaseBlockstore();
|
9
10
|
});
|
@@ -14,7 +15,7 @@ describe("Fresh TransactionBlockstore", function () {
|
|
14
15
|
expect(blocks.loader).toBeFalsy();
|
15
16
|
});
|
16
17
|
it("should not put", async function () {
|
17
|
-
const value =
|
18
|
+
const value = sthis.txt.encode("value");
|
18
19
|
const e = await blocks.put("key" as unknown as bs.AnyLink, value).catch((e) => e);
|
19
20
|
expect(e.message).toMatch(/transaction/g);
|
20
21
|
});
|
@@ -32,8 +33,9 @@ describe("Fresh TransactionBlockstore", function () {
|
|
32
33
|
|
33
34
|
describe("TransactionBlockstore with name", function () {
|
34
35
|
let blocks: bs.EncryptedBlockstore;
|
36
|
+
const sthis = mockSuperThis();
|
35
37
|
beforeEach(function () {
|
36
|
-
blocks = new bs.EncryptedBlockstore({ name: "test" });
|
38
|
+
blocks = new bs.EncryptedBlockstore(sthis, { name: "test" });
|
37
39
|
});
|
38
40
|
it("should have a name", function () {
|
39
41
|
expect(blocks.name).toEqual("test");
|
@@ -42,7 +44,7 @@ describe("TransactionBlockstore with name", function () {
|
|
42
44
|
expect(blocks.loader).toBeTruthy();
|
43
45
|
});
|
44
46
|
it("should get from loader", async function () {
|
45
|
-
const bytes =
|
47
|
+
const bytes = sthis.txt.encode("bytes");
|
46
48
|
expect(blocks.loader).toBeTruthy();
|
47
49
|
blocks.loader.getBlock = async (cid) => {
|
48
50
|
return { cid, bytes };
|
@@ -55,14 +57,15 @@ describe("TransactionBlockstore with name", function () {
|
|
55
57
|
describe("A transaction", function () {
|
56
58
|
let tblocks: bs.CarTransaction;
|
57
59
|
let blocks: bs.EncryptedBlockstore;
|
60
|
+
const sthis = mockSuperThis();
|
58
61
|
beforeEach(async function () {
|
59
|
-
blocks = new bs.EncryptedBlockstore({ name: "test" });
|
62
|
+
blocks = new bs.EncryptedBlockstore(sthis, { name: "test" });
|
60
63
|
tblocks = new bs.CarTransaction(blocks);
|
61
64
|
blocks.transactions.add(tblocks);
|
62
65
|
});
|
63
66
|
it("should put and get", async function () {
|
64
67
|
const cid = CID.parse("bafybeia4luuns6dgymy5kau5rm7r4qzrrzg6cglpzpogussprpy42cmcn4");
|
65
|
-
const bytes =
|
68
|
+
const bytes = sthis.txt.encode("bytes");
|
66
69
|
await tblocks.put(cid, bytes);
|
67
70
|
expect(blocks.transactions.has(tblocks)).toBeTruthy();
|
68
71
|
const got = await tblocks.get(cid);
|
@@ -72,14 +75,15 @@ describe("A transaction", function () {
|
|
72
75
|
});
|
73
76
|
});
|
74
77
|
|
75
|
-
function asUInt8Array(str: string) {
|
76
|
-
return
|
78
|
+
function asUInt8Array(str: string, sthis: SuperThis) {
|
79
|
+
return sthis.txt.encode(str);
|
77
80
|
}
|
78
81
|
|
79
82
|
describe("TransactionBlockstore with a completed transaction", function () {
|
80
83
|
let blocks: bs.BaseBlockstore;
|
81
84
|
let cid: CID;
|
82
85
|
let cid2: CID;
|
86
|
+
const sthis = mockSuperThis();
|
83
87
|
|
84
88
|
beforeEach(async function () {
|
85
89
|
cid = CID.parse("bafybeia4luuns6dgymy5kau5rm7r4qzrrzg6cglpzpogussprpy42cmcn4");
|
@@ -87,13 +91,13 @@ describe("TransactionBlockstore with a completed transaction", function () {
|
|
87
91
|
|
88
92
|
blocks = new bs.BaseBlockstore();
|
89
93
|
await blocks.transaction(async (tblocks) => {
|
90
|
-
await tblocks.put(cid, asUInt8Array("value"));
|
91
|
-
await tblocks.put(
|
94
|
+
await tblocks.put(cid, asUInt8Array("value", sthis));
|
95
|
+
await tblocks.put(cid, asUInt8Array("value", sthis));
|
92
96
|
return { head: [] };
|
93
97
|
});
|
94
98
|
await blocks.transaction(async (tblocks) => {
|
95
|
-
await tblocks.put(cid, asUInt8Array("value"));
|
96
|
-
await tblocks.put(cid2, asUInt8Array("value2"));
|
99
|
+
await tblocks.put(cid, asUInt8Array("value", sthis));
|
100
|
+
await tblocks.put(cid2, asUInt8Array("value2", sthis));
|
97
101
|
return { head: [] };
|
98
102
|
});
|
99
103
|
});
|
@@ -104,10 +108,10 @@ describe("TransactionBlockstore with a completed transaction", function () {
|
|
104
108
|
it("should get", async function () {
|
105
109
|
const value = (await blocks.get(cid)) as bs.AnyBlock;
|
106
110
|
expect(value.cid).toEqual(cid);
|
107
|
-
expect(value.bytes.toString()).toEqual(asUInt8Array("value").toString());
|
111
|
+
expect(value.bytes.toString()).toEqual(asUInt8Array("value", sthis).toString());
|
108
112
|
|
109
113
|
const value2 = (await blocks.get(cid2)) as bs.AnyBlock;
|
110
|
-
expect(value2.bytes.toString()).toEqual(asUInt8Array("value2").toString());
|
114
|
+
expect(value2.bytes.toString()).toEqual(asUInt8Array("value2", sthis).toString());
|
111
115
|
});
|
112
116
|
it("should yield entries", async function () {
|
113
117
|
const blz = [];
|
@@ -1,10 +1,12 @@
|
|
1
1
|
import { describe, it, expect, beforeAll } from "vitest";
|
2
|
-
import { fireproof, rt } from "@fireproof/core";
|
2
|
+
import { dataDir, fireproof, rt } from "@fireproof/core";
|
3
|
+
import { runtimeFn, URI } from "@adviser/cement";
|
4
|
+
import { mockSuperThis } from "../helpers";
|
3
5
|
|
4
6
|
describe("runtime", () => {
|
5
7
|
it("runtime", () => {
|
6
8
|
const isNode = !!(typeof process === "object" && process.versions?.node);
|
7
|
-
expect(
|
9
|
+
expect(runtimeFn()).toEqual({
|
8
10
|
isBrowser: !isNode,
|
9
11
|
isDeno: false,
|
10
12
|
isNodeIsh: isNode,
|
@@ -18,46 +20,58 @@ describe("fireproof/config", () => {
|
|
18
20
|
function my_app() {
|
19
21
|
return _my_app;
|
20
22
|
}
|
23
|
+
function params(store: string) {
|
24
|
+
return Object.entries({
|
25
|
+
store,
|
26
|
+
name: my_app(),
|
27
|
+
storekey: `@${my_app()}:${store}@`,
|
28
|
+
version: rt.FILESTORE_VERSION,
|
29
|
+
});
|
30
|
+
}
|
31
|
+
const sthis = mockSuperThis();
|
21
32
|
beforeAll(async () => {
|
22
|
-
await
|
23
|
-
if (
|
24
|
-
const fpStorageUrl =
|
33
|
+
await sthis.start();
|
34
|
+
if (runtimeFn().isNodeIsh) {
|
35
|
+
const fpStorageUrl = sthis.env.get("FP_STORAGE_URL");
|
25
36
|
if (fpStorageUrl) {
|
26
|
-
|
27
|
-
|
28
|
-
url = new URL(fpStorageUrl);
|
29
|
-
} catch (e) {
|
30
|
-
url = new URL(`file://${fpStorageUrl}`);
|
31
|
-
}
|
32
|
-
_my_app = `my-app-${url.protocol.replace(/:$/, "")}`;
|
37
|
+
const url = URI.from(fpStorageUrl);
|
38
|
+
_my_app = `my-app-${url.protocol.replace(/:$/, "")}:${url.getParam("fs") || "fs"}`;
|
33
39
|
}
|
34
40
|
}
|
35
41
|
});
|
36
42
|
|
37
|
-
if (!
|
43
|
+
if (!runtimeFn().isNodeIsh) {
|
38
44
|
it("default", async () => {
|
39
45
|
const db = fireproof(my_app());
|
40
46
|
await db.put({ name: "my-app" });
|
41
47
|
expect(db.name).toBe(my_app());
|
42
|
-
|
43
|
-
expect(carStore?.url.toString()).toMatch(new RegExp(`indexdb://fp\\?name=my-app&store=data&version=${rt.INDEXDB_VERSION}`));
|
48
|
+
|
44
49
|
const fileStore = await db.blockstore.loader?.fileStore();
|
45
|
-
expect(fileStore?.url.toString()).toMatch(
|
50
|
+
expect(fileStore?.url().toString()).toMatch(
|
51
|
+
new RegExp(`indexdb://fp\\?name=my-app&store=data&storekey=%40my-app%3Adata%40&version=${rt.INDEXDB_VERSION}`),
|
52
|
+
);
|
46
53
|
const metaStore = await db.blockstore.loader?.metaStore();
|
47
|
-
expect(metaStore?.url.toString()).toMatch(
|
54
|
+
expect(metaStore?.url().toString()).toMatch(
|
55
|
+
new RegExp(`indexdb://fp\\?name=my-app&store=meta&storekey=%40my-app%3Ameta%40&version=${rt.INDEXDB_VERSION}`),
|
56
|
+
);
|
57
|
+
|
58
|
+
const carStore = await db.blockstore.loader?.carStore();
|
59
|
+
expect(carStore?.url().toString()).toMatch(
|
60
|
+
new RegExp(`indexdb://fp\\?name=my-app&store=data&storekey=%40my-app%3Adata%40&version=${rt.INDEXDB_VERSION}`),
|
61
|
+
);
|
62
|
+
|
48
63
|
await db.close();
|
49
64
|
});
|
50
65
|
return;
|
51
66
|
}
|
52
67
|
it("node default", async () => {
|
53
|
-
const old =
|
54
|
-
|
55
|
-
let baseDir =
|
56
|
-
|
57
|
-
|
58
|
-
|
59
|
-
|
60
|
-
await rt.SysContainer.rm(baseDir, { recursive: true }).catch(() => {
|
68
|
+
const old = sthis.env.get("FP_STORAGE_URL");
|
69
|
+
sthis.env.delete("FP_STORAGE_URL");
|
70
|
+
let baseDir = dataDir(sthis, my_app()).pathname;
|
71
|
+
baseDir = sthis.pathOps.join(baseDir, rt.FILESTORE_VERSION, my_app());
|
72
|
+
|
73
|
+
const sysfs = await rt.getFileSystem(URI.from(baseDir));
|
74
|
+
await sysfs.rm(baseDir, { recursive: true }).catch(() => {
|
61
75
|
/* */
|
62
76
|
});
|
63
77
|
|
@@ -68,34 +82,39 @@ describe("fireproof/config", () => {
|
|
68
82
|
expect(db.name).toBe(my_app());
|
69
83
|
const carStore = await db.blockstore.loader?.carStore();
|
70
84
|
|
71
|
-
|
72
|
-
|
73
|
-
|
74
|
-
|
85
|
+
for (const [param, value] of Object.entries({
|
86
|
+
store: "data",
|
87
|
+
name: my_app(),
|
88
|
+
storekey: `@${my_app()}:data@`,
|
89
|
+
version: rt.FILESTORE_VERSION,
|
90
|
+
})) {
|
91
|
+
expect(carStore?.url().getParam(param)).toBe(value);
|
92
|
+
}
|
93
|
+
expect((await sysfs.stat(sthis.pathOps.join(baseDir, "data"))).isDirectory()).toBeTruthy();
|
75
94
|
|
76
95
|
const fileStore = await db.blockstore.loader?.fileStore();
|
77
|
-
|
78
|
-
|
79
|
-
|
96
|
+
for (const [param, value] of params("data")) {
|
97
|
+
expect(fileStore?.url().getParam(param)).toBe(value);
|
98
|
+
}
|
80
99
|
const metaStore = await db.blockstore.loader?.metaStore();
|
81
|
-
|
82
|
-
|
83
|
-
|
84
|
-
expect((await
|
85
|
-
|
100
|
+
for (const [param, value] of params("meta")) {
|
101
|
+
expect(metaStore?.url().getParam(param)).toBe(value);
|
102
|
+
}
|
103
|
+
expect((await sysfs.stat(sthis.pathOps.join(baseDir, "meta"))).isDirectory()).toBeTruthy();
|
104
|
+
sthis.env.set("FP_STORAGE_URL", old);
|
86
105
|
await db.close();
|
87
106
|
});
|
88
107
|
|
89
108
|
it("set by env", async () => {
|
90
|
-
const old =
|
91
|
-
|
92
|
-
|
93
|
-
|
94
|
-
|
95
|
-
|
96
|
-
|
97
|
-
|
98
|
-
await
|
109
|
+
const old = sthis.env.get("FP_STORAGE_URL");
|
110
|
+
const testUrl = URI.merge(`./dist/env`, old);
|
111
|
+
sthis.env.set("FP_STORAGE_URL", testUrl.toString());
|
112
|
+
|
113
|
+
let baseDir = dataDir(sthis, my_app()).pathname;
|
114
|
+
baseDir = sthis.pathOps.join(baseDir, rt.FILESTORE_VERSION, my_app());
|
115
|
+
|
116
|
+
const sysfs = await rt.getFileSystem(testUrl);
|
117
|
+
await sysfs.rm(baseDir, { recursive: true }).catch(() => {
|
99
118
|
/* */
|
100
119
|
});
|
101
120
|
|
@@ -103,54 +122,51 @@ describe("fireproof/config", () => {
|
|
103
122
|
await db.put({ name: "my-app" });
|
104
123
|
expect(db.name).toBe(my_app());
|
105
124
|
const carStore = await db.blockstore.loader?.carStore();
|
106
|
-
|
107
|
-
|
108
|
-
|
109
|
-
expect((await
|
125
|
+
for (const [param, value] of params("data")) {
|
126
|
+
expect(carStore?.url().getParam(param)).toBe(value);
|
127
|
+
}
|
128
|
+
expect((await sysfs.stat(sthis.pathOps.join(baseDir, "data"))).isDirectory()).toBeTruthy();
|
110
129
|
const fileStore = await db.blockstore.loader?.fileStore();
|
111
|
-
|
112
|
-
|
113
|
-
|
130
|
+
for (const [param, value] of params("data")) {
|
131
|
+
expect(fileStore?.url().getParam(param)).toBe(value);
|
132
|
+
}
|
114
133
|
const metaStore = await db.blockstore.loader?.metaStore();
|
115
|
-
|
116
|
-
|
117
|
-
|
118
|
-
expect((await
|
134
|
+
for (const [param, value] of params("meta")) {
|
135
|
+
expect(metaStore?.url().getParam(param)).toBe(value);
|
136
|
+
}
|
137
|
+
expect((await sysfs.stat(sthis.pathOps.join(baseDir, "meta"))).isDirectory()).toBeTruthy();
|
119
138
|
await db.close();
|
120
|
-
|
139
|
+
sthis.env.set("FP_STORAGE_URL", old);
|
121
140
|
});
|
122
141
|
|
123
142
|
it("file path", async () => {
|
124
143
|
let baseDir = "./dist/data".replace(/\?.*$/, "").replace(/^file:\/\//, "");
|
125
|
-
baseDir =
|
126
|
-
|
144
|
+
baseDir = sthis.pathOps.join(baseDir, rt.FILESTORE_VERSION, my_app());
|
145
|
+
|
146
|
+
const base = "./dist/data";
|
147
|
+
const sysfs = await rt.getFileSystem(URI.from(base));
|
148
|
+
await sysfs.rm(baseDir, { recursive: true }).catch(() => {
|
127
149
|
/* */
|
128
150
|
});
|
129
151
|
|
130
|
-
const db = fireproof(my_app(), {
|
131
|
-
store: {
|
132
|
-
stores: {
|
133
|
-
base: "./dist/data",
|
134
|
-
},
|
135
|
-
},
|
136
|
-
});
|
152
|
+
const db = fireproof(my_app(), { store: { stores: { base } } });
|
137
153
|
// console.log(`>>>>>>>>>>>>>>>file-path`)
|
138
154
|
await db.put({ name: "my-app" });
|
139
155
|
expect(db.name).toBe(my_app());
|
140
156
|
const carStore = await db.blockstore.loader?.carStore();
|
141
|
-
|
142
|
-
|
143
|
-
|
157
|
+
for (const [param, value] of params("data")) {
|
158
|
+
expect(carStore?.url().getParam(param)).toBe(value);
|
159
|
+
}
|
144
160
|
const fileStore = await db.blockstore.loader?.fileStore();
|
145
|
-
|
146
|
-
|
147
|
-
|
148
|
-
expect((await
|
161
|
+
for (const [param, value] of params("data")) {
|
162
|
+
expect(fileStore?.url().getParam(param)).toBe(value);
|
163
|
+
}
|
164
|
+
expect((await sysfs.stat(sthis.pathOps.join(baseDir, "data"))).isDirectory()).toBeTruthy();
|
149
165
|
const metaStore = await db.blockstore.loader?.metaStore();
|
150
|
-
|
151
|
-
|
152
|
-
|
153
|
-
expect((await
|
166
|
+
for (const [param, value] of params("meta")) {
|
167
|
+
expect(metaStore?.url().getParam(param)).toBe(value);
|
168
|
+
}
|
169
|
+
expect((await sysfs.stat(sthis.pathOps.join(baseDir, "meta"))).isDirectory()).toBeTruthy();
|
154
170
|
await db.close();
|
155
171
|
});
|
156
172
|
});
|