@fireproof/core-test 0.0.0-smoke-1b31059-1752074105

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.
Files changed (162) hide show
  1. package/LICENSE.md +232 -0
  2. package/blockstore/fp-envelope.test.ts-off +65 -0
  3. package/blockstore/fragment-gateway.test.ts-off +106 -0
  4. package/blockstore/interceptor-gateway.test.d.ts +19 -0
  5. package/blockstore/interceptor-gateway.test.js +217 -0
  6. package/blockstore/interceptor-gateway.test.js.map +1 -0
  7. package/blockstore/interceptor-gateway.test.ts +259 -0
  8. package/blockstore/keyed-crypto-indexeddb-file.test.d.ts +1 -0
  9. package/blockstore/keyed-crypto-indexeddb-file.test.js +114 -0
  10. package/blockstore/keyed-crypto-indexeddb-file.test.js.map +1 -0
  11. package/blockstore/keyed-crypto-indexeddb-file.test.ts +134 -0
  12. package/blockstore/keyed-crypto.test.d.ts +1 -0
  13. package/blockstore/keyed-crypto.test.js +310 -0
  14. package/blockstore/keyed-crypto.test.js.map +1 -0
  15. package/blockstore/keyed-crypto.test.ts +382 -0
  16. package/blockstore/loader.test.d.ts +1 -0
  17. package/blockstore/loader.test.js +241 -0
  18. package/blockstore/loader.test.js.map +1 -0
  19. package/blockstore/loader.test.ts +313 -0
  20. package/blockstore/standalone.test.d.ts +1 -0
  21. package/blockstore/standalone.test.js +112 -0
  22. package/blockstore/standalone.test.js.map +1 -0
  23. package/blockstore/standalone.test.ts +156 -0
  24. package/blockstore/store.test.d.ts +1 -0
  25. package/blockstore/store.test.js +152 -0
  26. package/blockstore/store.test.js.map +1 -0
  27. package/blockstore/store.test.ts +199 -0
  28. package/blockstore/transaction.test.d.ts +1 -0
  29. package/blockstore/transaction.test.js +109 -0
  30. package/blockstore/transaction.test.js.map +1 -0
  31. package/blockstore/transaction.test.ts +132 -0
  32. package/fireproof/all-gateway.test.d.ts +1 -0
  33. package/fireproof/all-gateway.test.js +333 -0
  34. package/fireproof/all-gateway.test.js.map +1 -0
  35. package/fireproof/all-gateway.test.ts +477 -0
  36. package/fireproof/attachable.test.d.ts +1 -0
  37. package/fireproof/attachable.test.js +438 -0
  38. package/fireproof/attachable.test.js.map +1 -0
  39. package/fireproof/attachable.test.ts +677 -0
  40. package/fireproof/cars/bafkreidxwt2nhvbl4fnqfw3ctlt6zbrir4kqwmjo5im6rf4q5si27kgo2i.car +0 -0
  41. package/fireproof/cars/bafkreidxwt2nhvbl4fnqfw3ctlt6zbrir4kqwmjo5im6rf4q5si27kgo2i.d.ts +4 -0
  42. package/fireproof/cars/bafkreidxwt2nhvbl4fnqfw3ctlt6zbrir4kqwmjo5im6rf4q5si27kgo2i.js +325 -0
  43. package/fireproof/cars/bafkreidxwt2nhvbl4fnqfw3ctlt6zbrir4kqwmjo5im6rf4q5si27kgo2i.js.map +1 -0
  44. package/fireproof/cars/bafkreidxwt2nhvbl4fnqfw3ctlt6zbrir4kqwmjo5im6rf4q5si27kgo2i.ts +324 -0
  45. package/fireproof/charwise-boolean.test.d.ts +1 -0
  46. package/fireproof/charwise-boolean.test.js +43 -0
  47. package/fireproof/charwise-boolean.test.js.map +1 -0
  48. package/fireproof/charwise-boolean.test.ts +68 -0
  49. package/fireproof/crdt.test.d.ts +1 -0
  50. package/fireproof/crdt.test.js +509 -0
  51. package/fireproof/crdt.test.js.map +1 -0
  52. package/fireproof/crdt.test.ts +572 -0
  53. package/fireproof/database.test.d.ts +1 -0
  54. package/fireproof/database.test.js +658 -0
  55. package/fireproof/database.test.js.map +1 -0
  56. package/fireproof/database.test.ts +772 -0
  57. package/fireproof/deleted-docs-handling.test.d.ts +1 -0
  58. package/fireproof/deleted-docs-handling.test.js +69 -0
  59. package/fireproof/deleted-docs-handling.test.js.map +1 -0
  60. package/fireproof/deleted-docs-handling.test.ts +112 -0
  61. package/fireproof/fireproof.test.d.ts +3 -0
  62. package/fireproof/fireproof.test.fixture.d.ts +15 -0
  63. package/fireproof/fireproof.test.fixture.js +134 -0
  64. package/fireproof/fireproof.test.fixture.js.map +1 -0
  65. package/fireproof/fireproof.test.fixture.ts +133 -0
  66. package/fireproof/fireproof.test.js +574 -0
  67. package/fireproof/fireproof.test.js.map +1 -0
  68. package/fireproof/fireproof.test.ts +767 -0
  69. package/fireproof/hello.test.d.ts +1 -0
  70. package/fireproof/hello.test.js +67 -0
  71. package/fireproof/hello.test.js.map +1 -0
  72. package/fireproof/hello.test.ts +75 -0
  73. package/fireproof/indexer.test.d.ts +1 -0
  74. package/fireproof/indexer.test.js +408 -0
  75. package/fireproof/indexer.test.js.map +1 -0
  76. package/fireproof/indexer.test.ts +459 -0
  77. package/fireproof/multiple-ledger.test.d.ts +1 -0
  78. package/fireproof/multiple-ledger.test.js +51 -0
  79. package/fireproof/multiple-ledger.test.js.map +1 -0
  80. package/fireproof/multiple-ledger.test.ts +67 -0
  81. package/fireproof/query-docs.test.d.ts +1 -0
  82. package/fireproof/query-docs.test.js +69 -0
  83. package/fireproof/query-docs.test.js.map +1 -0
  84. package/fireproof/query-docs.test.ts +117 -0
  85. package/fireproof/query-limit-issue.test.d.ts +1 -0
  86. package/fireproof/query-limit-issue.test.js +89 -0
  87. package/fireproof/query-limit-issue.test.js.map +1 -0
  88. package/fireproof/query-limit-issue.test.ts +147 -0
  89. package/fireproof/query-property-inconsistency.test.d.ts +1 -0
  90. package/fireproof/query-property-inconsistency.test.js +52 -0
  91. package/fireproof/query-property-inconsistency.test.js.map +1 -0
  92. package/fireproof/query-property-inconsistency.test.ts +90 -0
  93. package/fireproof/query-result-properties.test.d.ts +1 -0
  94. package/fireproof/query-result-properties.test.js +25 -0
  95. package/fireproof/query-result-properties.test.js.map +1 -0
  96. package/fireproof/query-result-properties.test.ts +43 -0
  97. package/fireproof/stable-cid.test.d.ts +1 -0
  98. package/fireproof/stable-cid.test.js +52 -0
  99. package/fireproof/stable-cid.test.js.map +1 -0
  100. package/fireproof/stable-cid.test.ts +72 -0
  101. package/fireproof/utils.test.d.ts +1 -0
  102. package/fireproof/utils.test.js +124 -0
  103. package/fireproof/utils.test.js.map +1 -0
  104. package/fireproof/utils.test.ts +137 -0
  105. package/gateway/file/loader-config.test.d.ts +1 -0
  106. package/gateway/file/loader-config.test.js +255 -0
  107. package/gateway/file/loader-config.test.js.map +1 -0
  108. package/gateway/file/loader-config.test.ts +309 -0
  109. package/gateway/indexeddb/loader-config.test.d.ts +1 -0
  110. package/gateway/indexeddb/loader-config.test.js +77 -0
  111. package/gateway/indexeddb/loader-config.test.js.map +1 -0
  112. package/gateway/indexeddb/loader-config.test.ts +80 -0
  113. package/global-setup.d.ts +2 -0
  114. package/global-setup.js +9 -0
  115. package/global-setup.js.map +1 -0
  116. package/global-setup.ts +11 -0
  117. package/helpers.d.ts +31 -0
  118. package/helpers.js +140 -0
  119. package/helpers.js.map +1 -0
  120. package/helpers.ts +177 -0
  121. package/package.json +75 -0
  122. package/protocols/cloud/msger.test.d.ts +1 -0
  123. package/protocols/cloud/msger.test.js +464 -0
  124. package/protocols/cloud/msger.test.js.map +1 -0
  125. package/protocols/cloud/msger.test.ts +559 -0
  126. package/runtime/fp-envelope-serialize.test.d.ts +1 -0
  127. package/runtime/fp-envelope-serialize.test.js +223 -0
  128. package/runtime/fp-envelope-serialize.test.js.map +1 -0
  129. package/runtime/fp-envelope-serialize.test.ts +266 -0
  130. package/runtime/meta-key-hack.test.d.ts +1 -0
  131. package/runtime/meta-key-hack.test.js +85 -0
  132. package/runtime/meta-key-hack.test.js.map +1 -0
  133. package/runtime/meta-key-hack.test.ts +103 -0
  134. package/setup.file.d.ts +1 -0
  135. package/setup.file.js +3 -0
  136. package/setup.file.js.map +1 -0
  137. package/setup.file.ts +1 -0
  138. package/setup.indexeddb.d.ts +1 -0
  139. package/setup.indexeddb.js +2 -0
  140. package/setup.indexeddb.js.map +1 -0
  141. package/setup.indexeddb.ts +0 -0
  142. package/setup.memory.d.ts +1 -0
  143. package/setup.memory.js +4 -0
  144. package/setup.memory.js.map +1 -0
  145. package/setup.memory.ts +2 -0
  146. package/tsconfig.json +18 -0
  147. package/vitest.config.d.ts +2 -0
  148. package/vitest.config.js +8 -0
  149. package/vitest.config.js.map +1 -0
  150. package/vitest.config.ts +8 -0
  151. package/vitest.file.config.d.ts +2 -0
  152. package/vitest.file.config.js +11 -0
  153. package/vitest.file.config.js.map +1 -0
  154. package/vitest.file.config.ts +11 -0
  155. package/vitest.indexeddb.config.d.ts +2 -0
  156. package/vitest.indexeddb.config.js +21 -0
  157. package/vitest.indexeddb.config.js.map +1 -0
  158. package/vitest.indexeddb.config.ts +34 -0
  159. package/vitest.memory.config.d.ts +2 -0
  160. package/vitest.memory.config.js +24 -0
  161. package/vitest.memory.config.js.map +1 -0
  162. package/vitest.memory.config.ts +24 -0
@@ -0,0 +1,333 @@
1
+ import { LedgerFactory, PARAM, fireproof } from "@fireproof/core";
2
+ import { fileContent } from "./cars/bafkreidxwt2nhvbl4fnqfw3ctlt6zbrir4kqwmjo5im6rf4q5si27kgo2i.js";
3
+ import { simpleCID } from "../helpers.js";
4
+ import { BuildURI, Future } from "@adviser/cement";
5
+ import { ensureSuperThis } from "@fireproof/core-runtime";
6
+ import { FPEnvelopeTypes, } from "@fireproof/core-types-blockstore";
7
+ import { describe, afterEach, beforeEach, it, expect } from "vitest";
8
+ describe("noop Gateway", function () {
9
+ let db;
10
+ let carStore;
11
+ let metaStore;
12
+ let fileStore;
13
+ let walStore;
14
+ let carGateway;
15
+ let metaGateway;
16
+ let fileGateway;
17
+ let walGateway;
18
+ const sthis = ensureSuperThis();
19
+ let ctx;
20
+ afterEach(async () => {
21
+ await db.close();
22
+ await db.destroy();
23
+ });
24
+ beforeEach(async () => {
25
+ db = LedgerFactory("test-gateway-" + sthis.nextId().str, {
26
+ logger: sthis.logger,
27
+ });
28
+ await db.ready();
29
+ ctx = { loader: db.crdt.blockstore.loader };
30
+ carStore = ctx.loader.attachedStores.local().active.car;
31
+ metaStore = ctx.loader.attachedStores.local().active.meta;
32
+ fileStore = ctx.loader.attachedStores.local().active.file;
33
+ walStore = ctx.loader.attachedStores.local().active.wal;
34
+ carGateway = carStore.realGateway;
35
+ metaGateway = metaStore.realGateway;
36
+ fileGateway = fileStore.realGateway;
37
+ walGateway = walStore.realGateway;
38
+ });
39
+ it("should have valid stores and gateways", async () => {
40
+ expect(carStore).toBeTruthy();
41
+ expect(metaStore).toBeTruthy();
42
+ expect(fileStore).toBeTruthy();
43
+ expect(walStore).toBeTruthy();
44
+ expect(carGateway).toBeTruthy();
45
+ expect(metaGateway).toBeTruthy();
46
+ expect(fileGateway).toBeTruthy();
47
+ expect(walGateway).toBeTruthy();
48
+ });
49
+ it("should have correct store names", async () => {
50
+ expect(carStore.url().getParam(PARAM.NAME)).toContain("test-gateway");
51
+ expect(metaStore.url().getParam(PARAM.NAME)).toContain("test-gateway");
52
+ expect(fileStore.url().getParam(PARAM.NAME)).toContain("test-gateway");
53
+ expect(walStore.url().getParam(PARAM.NAME)).toContain("test-gateway");
54
+ });
55
+ it("should have correct store types in URLs", async () => {
56
+ expect(carStore.url().toString()).toContain("store=car");
57
+ expect(carStore.url().toString()).toContain("suffix=.car");
58
+ expect(metaStore.url().toString()).toContain("store=meta");
59
+ expect(fileStore.url().toString()).toContain("store=file");
60
+ expect(walStore.url().toString()).toContain("store=wal");
61
+ });
62
+ it("should have version specified in URLs", async () => {
63
+ expect(carStore.url().toString()).toContain("version=");
64
+ expect(metaStore.url().toString()).toContain("version=");
65
+ expect(fileStore.url().toString()).toContain("version=");
66
+ expect(walStore.url().toString()).toContain("version=");
67
+ });
68
+ it("should have correct gateway types", async () => {
69
+ expect(typeof carGateway).toBe("object");
70
+ expect(typeof metaGateway).toBe("object");
71
+ expect(typeof fileGateway).toBe("object");
72
+ expect(typeof walGateway).toBe("object");
73
+ });
74
+ it("should build CAR Gateway URL", async () => {
75
+ const testKey = "bafkreidxwt2nhvbl4fnqfw3ctlt6zbrir4kqwmjo5im6rf4q5si27kgo2i";
76
+ const carUrl = await carGateway.buildUrl(ctx, carStore.url(), testKey);
77
+ expect(carUrl.Ok().hasParam("key")).toBeTruthy();
78
+ });
79
+ it("should start CAR Gateway", async () => {
80
+ const url = await carGateway.start(ctx, carStore.url());
81
+ expect(url.Ok().asObj()).toEqual(carStore.url().asObj());
82
+ });
83
+ it("should put data in CAR Gateway", async () => {
84
+ const carUrl = await carGateway.buildUrl(ctx, carStore.url(), fileContent.cid);
85
+ await carGateway.start(ctx, carStore.url());
86
+ const carPutResult = await carGateway.put(ctx, carUrl.Ok(), {
87
+ type: FPEnvelopeTypes.CAR,
88
+ payload: fileContent.block,
89
+ });
90
+ expect(carPutResult.isOk()).toBeTruthy();
91
+ });
92
+ it("should get data from CAR Gateway", async () => {
93
+ const carUrl = await carGateway.buildUrl(ctx, carStore.url(), fileContent.cid);
94
+ await carGateway.start(ctx, carStore.url());
95
+ await carGateway.put(ctx, carUrl.Ok(), {
96
+ type: FPEnvelopeTypes.CAR,
97
+ payload: fileContent.block,
98
+ });
99
+ const carGetResult = await carGateway.get(ctx, carUrl.Ok());
100
+ expect(carGetResult.Ok().type).toEqual("car");
101
+ expect(carGetResult.Ok().payload).toEqual(fileContent.block);
102
+ });
103
+ it("should delete data from CAR Gateway", async () => {
104
+ const carUrl = await carGateway.buildUrl(ctx, carStore.url(), fileContent.cid);
105
+ await carGateway.start(ctx, carStore.url());
106
+ await carGateway.put(ctx, carUrl.Ok(), {
107
+ type: FPEnvelopeTypes.CAR,
108
+ payload: fileContent.block,
109
+ });
110
+ const carDeleteResult = await carGateway.delete(ctx, carUrl.Ok());
111
+ expect(carDeleteResult.isOk()).toBeTruthy();
112
+ });
113
+ it("should close CAR Gateway", async () => {
114
+ await carGateway.close(ctx, carStore.url());
115
+ });
116
+ it("should build Meta Gateway URL", async () => {
117
+ const metaUrl = await metaGateway.buildUrl(ctx, metaStore.url(), "main");
118
+ expect(metaUrl.Ok()).toBeTruthy();
119
+ });
120
+ it("should start Meta Gateway", async () => {
121
+ await metaGateway.start(ctx, metaStore.url());
122
+ });
123
+ it("should close Meta Gateway", async () => {
124
+ await metaGateway.start(ctx, metaStore.url());
125
+ await metaGateway.close(ctx, metaStore.url());
126
+ });
127
+ it("should build File Gateway URL", async () => {
128
+ const fileUrl = await fileGateway.buildUrl(ctx, fileStore.url(), fileContent.cid);
129
+ expect(fileUrl.Ok()).toBeTruthy();
130
+ });
131
+ it("should start File Gateway", async () => {
132
+ await fileGateway.start(ctx, fileStore.url());
133
+ });
134
+ it("should put data to File Gateway", async () => {
135
+ const fileUrl = await fileGateway.buildUrl(ctx, fileStore.url(), fileContent.cid);
136
+ await fileGateway.start(ctx, fileStore.url());
137
+ const filePutResult = await fileGateway.put(ctx, fileUrl.Ok(), {
138
+ type: FPEnvelopeTypes.FILE,
139
+ payload: fileContent.block,
140
+ });
141
+ expect(filePutResult.Ok()).toBeFalsy();
142
+ });
143
+ it("should get data from File Gateway", async () => {
144
+ const fileUrl = await fileGateway.buildUrl(ctx, fileStore.url(), fileContent.cid);
145
+ await fileGateway.start(ctx, fileStore.url());
146
+ await fileGateway.put(ctx, fileUrl.Ok(), {
147
+ type: FPEnvelopeTypes.FILE,
148
+ payload: fileContent.block,
149
+ });
150
+ const fileGetResult = await fileGateway.get(ctx, fileUrl.Ok());
151
+ expect(fileGetResult.Ok().type).toEqual("file");
152
+ expect(fileGetResult.Ok().payload).toEqual(fileContent.block);
153
+ });
154
+ it("should delete data from File Gateway", async () => {
155
+ const fileUrl = await fileGateway.buildUrl(ctx, fileStore.url(), fileContent.cid);
156
+ await fileGateway.start(ctx, fileStore.url());
157
+ await fileGateway.put(ctx, fileUrl.Ok(), {
158
+ type: FPEnvelopeTypes.FILE,
159
+ payload: fileContent.block,
160
+ });
161
+ const fileDeleteResult = await fileGateway.delete(ctx, fileUrl.Ok());
162
+ expect(fileDeleteResult.isOk()).toBeTruthy();
163
+ });
164
+ it("should close File Gateway", async () => {
165
+ await fileGateway.close(ctx, fileStore.url());
166
+ });
167
+ it("should build WAL Gateway URL", async () => {
168
+ const testKey = "bafkreidxwt2nhvbl4fnqfw3ctlt6zbrir4kqwmjo5im6rf4q5si27kgo2i";
169
+ const walUrl = await walGateway.buildUrl(ctx, walStore.url(), testKey);
170
+ expect(walUrl.Ok()).toBeTruthy();
171
+ });
172
+ it("should start WAL Gateway", async () => {
173
+ await walGateway.start(ctx, walStore.url());
174
+ });
175
+ it("should put data to WAL Gateway", async () => {
176
+ const testKey = "bafkreidxwt2nhvbl4fnqfw3ctlt6zbrir4kqwmjo5im6rf4q5si27kgo2i";
177
+ const walUrl = await walGateway.buildUrl(ctx, walStore.url(), testKey);
178
+ await walGateway.start(ctx, walStore.url());
179
+ const walPutResult = await walGateway.put(ctx, walUrl.Ok(), {
180
+ type: FPEnvelopeTypes.WAL,
181
+ payload: {
182
+ operations: [],
183
+ noLoaderOps: [],
184
+ fileOperations: [],
185
+ },
186
+ });
187
+ expect(walPutResult.Ok()).toBeFalsy();
188
+ });
189
+ it("should get data from WAL Gateway", async () => {
190
+ const testKey = "bafkreidxwt2nhvbl4fnqfw3ctlt6zbrir4kqwmjo5im6rf4q5si27kgo2i";
191
+ const walUrl = await walGateway.buildUrl(ctx, walStore.url(), testKey);
192
+ await walGateway.start(ctx, walStore.url());
193
+ const ref = {
194
+ operations: [
195
+ {
196
+ cars: [await simpleCID(sthis)],
197
+ },
198
+ ],
199
+ noLoaderOps: [
200
+ {
201
+ cars: [await simpleCID(sthis)],
202
+ },
203
+ ],
204
+ fileOperations: [
205
+ {
206
+ cid: await simpleCID(sthis),
207
+ public: false,
208
+ },
209
+ ],
210
+ };
211
+ await walGateway.put(ctx, walUrl.Ok(), {
212
+ type: FPEnvelopeTypes.WAL,
213
+ payload: ref,
214
+ });
215
+ const walGetResult = await walGateway.get(ctx, walUrl.Ok());
216
+ expect(walGetResult.isOk()).toBeTruthy();
217
+ expect(ref).toEqual(walGetResult.Ok().payload);
218
+ });
219
+ it("should delete data from WAL Gateway", async () => {
220
+ const testKey = "bafkreidxwt2nhvbl4fnqfw3ctlt6zbrir4kqwmjo5im6rf4q5si27kgo2i";
221
+ const walUrl = await walGateway.buildUrl(ctx, walStore.url(), testKey);
222
+ await walGateway.start(ctx, walStore.url());
223
+ const ref = {
224
+ operations: [
225
+ {
226
+ cars: [await simpleCID(sthis)],
227
+ },
228
+ ],
229
+ noLoaderOps: [
230
+ {
231
+ cars: [await simpleCID(sthis)],
232
+ },
233
+ ],
234
+ fileOperations: [
235
+ {
236
+ cid: await simpleCID(sthis),
237
+ public: false,
238
+ },
239
+ ],
240
+ };
241
+ await walGateway.put(ctx, walUrl.Ok(), {
242
+ type: FPEnvelopeTypes.WAL,
243
+ payload: ref,
244
+ });
245
+ const walDeleteResult = await walGateway.delete(ctx, walUrl.Ok());
246
+ expect(walDeleteResult.isOk()).toBeTruthy();
247
+ });
248
+ it("should close WAL Gateway", async () => {
249
+ await walGateway.start(ctx, walStore.url());
250
+ await walGateway.close(ctx, walStore.url());
251
+ });
252
+ });
253
+ describe("noop Gateway subscribe", function () {
254
+ let db;
255
+ let metaStore;
256
+ let metaGateway;
257
+ const sthis = ensureSuperThis();
258
+ let ctx;
259
+ afterEach(async () => {
260
+ await db.close();
261
+ await db.destroy();
262
+ });
263
+ beforeEach(async () => {
264
+ db = fireproof("test-gateway-" + sthis.nextId().str);
265
+ await db.close();
266
+ db = fireproof("test-gateway-" + sthis.nextId().str, {
267
+ storeUrls: {
268
+ ...db.ledger.opts.storeUrls,
269
+ data: {
270
+ ...db.ledger.opts.storeUrls.data,
271
+ meta: BuildURI.from(db.ledger.opts.storeUrls.data.meta).setParam(PARAM.SELF_REFLECT, "x").URI(),
272
+ },
273
+ },
274
+ });
275
+ await db.ready();
276
+ ctx = { loader: db.ledger.crdt.blockstore.loader };
277
+ metaStore = db.ledger.crdt.blockstore.loader.attachedStores.local().active.meta;
278
+ metaGateway = metaStore.realGateway;
279
+ });
280
+ it("should subscribe to meta Gateway", async () => {
281
+ const metaUrl = await metaGateway.buildUrl(ctx, metaStore.url(), "main");
282
+ await metaGateway.start(ctx, metaStore.url());
283
+ let didCall = false;
284
+ const p = new Future();
285
+ const metaSubscribeResult = (await metaGateway.subscribe(ctx, metaUrl.Ok().build().setParam(PARAM.SELF_REFLECT, "x").URI(), async (data) => {
286
+ expect(Array.isArray(data.payload)).toBeTruthy();
287
+ didCall = true;
288
+ p.resolve();
289
+ }));
290
+ expect(metaSubscribeResult.isOk()).toBeTruthy();
291
+ const ok = await db.put({ _id: "key1", hello: "world1" });
292
+ expect(ok).toBeTruthy();
293
+ expect(ok.id).toBe("key1");
294
+ await p.asPromise();
295
+ expect(didCall).toBeTruthy();
296
+ });
297
+ });
298
+ describe("Gateway", function () {
299
+ let db;
300
+ let metaStore;
301
+ let metaGateway;
302
+ const sthis = ensureSuperThis();
303
+ let ctx;
304
+ afterEach(async () => {
305
+ await db.close();
306
+ await db.destroy();
307
+ });
308
+ beforeEach(async () => {
309
+ db = fireproof("test-gateway-" + sthis.nextId().str);
310
+ ctx = { loader: db.ledger.crdt.blockstore.loader };
311
+ const ok = await db.put({ _id: "test", foo: "bar" });
312
+ expect(ok).toBeTruthy();
313
+ expect(ok.id).toBe("test");
314
+ metaStore = db.ledger.crdt.blockstore.loader.attachedStores.local().active.meta;
315
+ metaGateway = metaStore.realGateway;
316
+ });
317
+ it("should get data from Meta Gateway", async () => {
318
+ const metaUrl = await metaGateway.buildUrl(ctx, metaStore.url(), "main");
319
+ await metaGateway.start(ctx, metaStore.url());
320
+ const metaGetResult = await metaGateway.get(ctx, metaUrl.Ok());
321
+ expect(metaGetResult.isOk()).toBeTruthy();
322
+ const meta = metaGetResult.Ok().payload;
323
+ expect(meta.length).toBe(1);
324
+ expect(Object.keys(meta[0])).toEqual(["eventCid", "parents", "dbMeta"]);
325
+ });
326
+ it("should delete data from Meta Gateway", async () => {
327
+ const metaUrl = await metaGateway.buildUrl(ctx, metaStore.url(), "main");
328
+ await metaGateway.start(ctx, metaStore.url());
329
+ const metaDeleteResult = await metaGateway.delete(ctx, metaUrl.Ok());
330
+ expect(metaDeleteResult.isOk()).toBeTruthy();
331
+ });
332
+ });
333
+ //# sourceMappingURL=all-gateway.test.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"all-gateway.test.js","sourceRoot":"","sources":["all-gateway.test.ts"],"names":[],"mappings":"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"}