@peerbit/document 6.0.6 → 6.0.7-a4f88b6

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 (47) hide show
  1. package/README.md +2 -2
  2. package/dist/benchmark/index.d.ts +2 -0
  3. package/dist/benchmark/index.d.ts.map +1 -0
  4. package/dist/benchmark/index.js +126 -0
  5. package/dist/benchmark/index.js.map +1 -0
  6. package/dist/benchmark/replication.d.ts +2 -0
  7. package/dist/benchmark/replication.d.ts.map +1 -0
  8. package/dist/benchmark/replication.js +174 -0
  9. package/dist/benchmark/replication.js.map +1 -0
  10. package/dist/src/constants.d.ts +2 -0
  11. package/dist/src/constants.d.ts.map +1 -0
  12. package/dist/src/constants.js +2 -0
  13. package/dist/src/constants.js.map +1 -0
  14. package/dist/src/index.d.ts +5 -0
  15. package/dist/src/index.d.ts.map +1 -0
  16. package/dist/src/index.js +5 -0
  17. package/dist/src/index.js.map +1 -0
  18. package/dist/src/program.d.ts +90 -0
  19. package/dist/src/program.d.ts.map +1 -0
  20. package/{lib/esm/document-store.js → dist/src/program.js} +141 -109
  21. package/dist/src/program.js.map +1 -0
  22. package/dist/src/search.d.ts +118 -0
  23. package/dist/src/search.d.ts.map +1 -0
  24. package/{lib/esm/document-index.js → dist/src/search.js} +246 -446
  25. package/dist/src/search.js.map +1 -0
  26. package/package.json +69 -43
  27. package/src/constants.ts +1 -0
  28. package/src/index.ts +4 -3
  29. package/src/{document-store.ts → program.ts} +216 -183
  30. package/src/search.ts +997 -0
  31. package/LICENSE +0 -202
  32. package/lib/esm/document-index.d.ts +0 -147
  33. package/lib/esm/document-index.js.map +0 -1
  34. package/lib/esm/document-store.d.ts +0 -72
  35. package/lib/esm/document-store.js.map +0 -1
  36. package/lib/esm/index.d.ts +0 -3
  37. package/lib/esm/index.js +0 -4
  38. package/lib/esm/index.js.map +0 -1
  39. package/lib/esm/query.d.ts +0 -191
  40. package/lib/esm/query.js +0 -615
  41. package/lib/esm/query.js.map +0 -1
  42. package/lib/esm/utils.d.ts +0 -3
  43. package/lib/esm/utils.js +0 -12
  44. package/lib/esm/utils.js.map +0 -1
  45. package/src/document-index.ts +0 -1268
  46. package/src/query.ts +0 -525
  47. package/src/utils.ts +0 -17
package/README.md CHANGED
@@ -106,6 +106,6 @@ let responses: Document[] = await store2.docs.index.search(
106
106
  ],
107
107
  })
108
108
  );
109
- expect(responses]).toHaveLength(2);
110
- expect(responses.map((x) => x.value.id)).toEqual(["1", "2"]);
109
+ expect(responses]).to.have.length(2);
110
+ expect(responses.map((x) => x.value.id)).to.deep.equal(["1", "2"]);
111
111
  ```
@@ -0,0 +1,2 @@
1
+ export {};
2
+ //# sourceMappingURL=index.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"index.d.ts","sourceRoot":"","sources":["../../benchmark/index.ts"],"names":[],"mappings":""}
@@ -0,0 +1,126 @@
1
+ var __decorate = (this && this.__decorate) || function (decorators, target, key, desc) {
2
+ var c = arguments.length, r = c < 3 ? target : desc === null ? desc = Object.getOwnPropertyDescriptor(target, key) : desc, d;
3
+ if (typeof Reflect === "object" && typeof Reflect.decorate === "function") r = Reflect.decorate(decorators, target, key, desc);
4
+ else for (var i = decorators.length - 1; i >= 0; i--) if (d = decorators[i]) r = (c < 3 ? d(r) : c > 3 ? d(target, key, r) : d(target, key)) || r;
5
+ return c > 3 && r && Object.defineProperty(target, key, r), r;
6
+ };
7
+ var __metadata = (this && this.__metadata) || function (k, v) {
8
+ if (typeof Reflect === "object" && typeof Reflect.metadata === "function") return Reflect.metadata(k, v);
9
+ };
10
+ import B from "benchmark";
11
+ import { field, option, variant } from "@dao-xyz/borsh";
12
+ import { Documents } from "../src/program.js";
13
+ import { TestSession } from "@peerbit/test-utils";
14
+ import { Program } from "@peerbit/program";
15
+ import { v4 as uuid } from "uuid";
16
+ import crypto from "crypto";
17
+ // Run with "node --loader ts-node/esm ./src/__benchmark__/index.ts"
18
+ // put x 9,522 ops/sec ±4.61% (76 runs sampled) (prev merge store with log: put x 11,527 ops/sec ±6.09% (75 runs sampled))
19
+ let Document = class Document {
20
+ id;
21
+ name;
22
+ number;
23
+ bytes;
24
+ constructor(opts) {
25
+ if (opts) {
26
+ this.id = opts.id;
27
+ this.name = opts.name;
28
+ this.number = opts.number;
29
+ this.bytes = opts.bytes;
30
+ }
31
+ }
32
+ };
33
+ __decorate([
34
+ field({ type: "string" }),
35
+ __metadata("design:type", String)
36
+ ], Document.prototype, "id", void 0);
37
+ __decorate([
38
+ field({ type: option("string") }),
39
+ __metadata("design:type", String)
40
+ ], Document.prototype, "name", void 0);
41
+ __decorate([
42
+ field({ type: option("u64") }),
43
+ __metadata("design:type", BigInt)
44
+ ], Document.prototype, "number", void 0);
45
+ __decorate([
46
+ field({ type: Uint8Array }),
47
+ __metadata("design:type", Uint8Array)
48
+ ], Document.prototype, "bytes", void 0);
49
+ Document = __decorate([
50
+ variant("document"),
51
+ __metadata("design:paramtypes", [Document])
52
+ ], Document);
53
+ let TestStore = class TestStore extends Program {
54
+ docs;
55
+ constructor(properties) {
56
+ super();
57
+ if (properties) {
58
+ this.docs = properties.docs;
59
+ }
60
+ }
61
+ async open(options) {
62
+ await this.docs.open({ ...options, type: Document });
63
+ }
64
+ };
65
+ __decorate([
66
+ field({ type: Documents }),
67
+ __metadata("design:type", Documents)
68
+ ], TestStore.prototype, "docs", void 0);
69
+ TestStore = __decorate([
70
+ variant("test_documents"),
71
+ __metadata("design:paramtypes", [Object])
72
+ ], TestStore);
73
+ const peersCount = 1;
74
+ const session = await TestSession.connected(peersCount);
75
+ const store = new TestStore({
76
+ docs: new Documents()
77
+ });
78
+ const client = session.peers[0];
79
+ await client.open(store, {
80
+ args: {
81
+ role: {
82
+ type: "replicator",
83
+ factor: 1
84
+ },
85
+ log: {
86
+ trim: { type: "length", to: 100 }
87
+ }
88
+ }
89
+ });
90
+ const resolver = new Map();
91
+ store.docs.events.addEventListener("change", (change) => {
92
+ change.detail.added.forEach((doc) => {
93
+ resolver.get(doc.id)();
94
+ resolver.delete(doc.id);
95
+ });
96
+ });
97
+ const suite = new B.Suite();
98
+ suite
99
+ .add("put", {
100
+ fn: async (deferred) => {
101
+ const doc = new Document({
102
+ id: uuid(),
103
+ name: "hello",
104
+ number: 1n,
105
+ bytes: crypto.randomBytes(1200)
106
+ });
107
+ resolver.set(doc.id, () => {
108
+ deferred.resolve();
109
+ });
110
+ await store.docs.put(doc, { unique: true });
111
+ },
112
+ minSamples: 300,
113
+ defer: true
114
+ })
115
+ .on("cycle", (event) => {
116
+ console.log(String(event.target));
117
+ })
118
+ .on("error", (err) => {
119
+ throw err;
120
+ })
121
+ .on("complete", async function (...args) {
122
+ await store.drop();
123
+ await session.stop();
124
+ })
125
+ .run();
126
+ //# sourceMappingURL=index.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"index.js","sourceRoot":"","sources":["../../benchmark/index.ts"],"names":[],"mappings":"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"}
@@ -0,0 +1,2 @@
1
+ export {};
2
+ //# sourceMappingURL=replication.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"replication.d.ts","sourceRoot":"","sources":["../../benchmark/replication.ts"],"names":[],"mappings":""}
@@ -0,0 +1,174 @@
1
+ var __decorate = (this && this.__decorate) || function (decorators, target, key, desc) {
2
+ var c = arguments.length, r = c < 3 ? target : desc === null ? desc = Object.getOwnPropertyDescriptor(target, key) : desc, d;
3
+ if (typeof Reflect === "object" && typeof Reflect.decorate === "function") r = Reflect.decorate(decorators, target, key, desc);
4
+ else for (var i = decorators.length - 1; i >= 0; i--) if (d = decorators[i]) r = (c < 3 ? d(r) : c > 3 ? d(target, key, r) : d(target, key)) || r;
5
+ return c > 3 && r && Object.defineProperty(target, key, r), r;
6
+ };
7
+ var __metadata = (this && this.__metadata) || function (k, v) {
8
+ if (typeof Reflect === "object" && typeof Reflect.metadata === "function") return Reflect.metadata(k, v);
9
+ };
10
+ import B from "benchmark";
11
+ import { field, option, variant } from "@dao-xyz/borsh";
12
+ import { Program } from "@peerbit/program";
13
+ import { v4 as uuid } from "uuid";
14
+ import { Peerbit, createLibp2pExtended } from "peerbit";
15
+ import { tcp } from "@libp2p/tcp";
16
+ import { Documents } from "../src/program.js";
17
+ import { DirectSub } from "@peerbit/pubsub";
18
+ import { yamux } from "@chainsafe/libp2p-yamux";
19
+ import { delay } from "@peerbit/time";
20
+ // Run with "node --loader ts-node/esm ./src/__benchmark__/replication.ts"
21
+ // put x 862 ops/sec ±4.75% (75 runs sampled)
22
+ let Document = class Document {
23
+ id;
24
+ name;
25
+ number;
26
+ constructor(opts) {
27
+ if (opts) {
28
+ this.id = opts.id;
29
+ this.name = opts.name;
30
+ this.number = opts.number;
31
+ }
32
+ }
33
+ };
34
+ __decorate([
35
+ field({ type: "string" }),
36
+ __metadata("design:type", String)
37
+ ], Document.prototype, "id", void 0);
38
+ __decorate([
39
+ field({ type: option("string") }),
40
+ __metadata("design:type", String)
41
+ ], Document.prototype, "name", void 0);
42
+ __decorate([
43
+ field({ type: option("u64") }),
44
+ __metadata("design:type", BigInt)
45
+ ], Document.prototype, "number", void 0);
46
+ Document = __decorate([
47
+ variant("document"),
48
+ __metadata("design:paramtypes", [Document])
49
+ ], Document);
50
+ let TestStore = class TestStore extends Program {
51
+ docs;
52
+ constructor() {
53
+ super();
54
+ this.docs = new Documents();
55
+ }
56
+ async open(options) {
57
+ await this.docs.open({ ...options, type: Document });
58
+ }
59
+ };
60
+ __decorate([
61
+ field({ type: Documents }),
62
+ __metadata("design:type", Documents)
63
+ ], TestStore.prototype, "docs", void 0);
64
+ TestStore = __decorate([
65
+ variant("test_documents"),
66
+ __metadata("design:paramtypes", [])
67
+ ], TestStore);
68
+ const peers = await Promise.all([
69
+ await createLibp2pExtended({
70
+ transports: [tcp()],
71
+ streamMuxers: [yamux()],
72
+ services: {
73
+ pubsub: (sub) => new DirectSub(sub, {
74
+ canRelayMessage: true
75
+ /* connectionManager: true */
76
+ })
77
+ }
78
+ }),
79
+ await createLibp2pExtended({
80
+ connectionManager: {},
81
+ transports: [tcp()],
82
+ streamMuxers: [yamux()],
83
+ services: {
84
+ pubsub: (sub) => new DirectSub(sub, {
85
+ canRelayMessage: true
86
+ /* connectionManager: true */
87
+ })
88
+ }
89
+ }),
90
+ await createLibp2pExtended({
91
+ transports: [tcp()],
92
+ streamMuxers: [yamux()],
93
+ services: {
94
+ pubsub: (sub) => new DirectSub(sub, {
95
+ canRelayMessage: true
96
+ /* connectionManager: true */
97
+ })
98
+ }
99
+ })
100
+ ].map((x) => Peerbit.create({ libp2p: x })));
101
+ await peers[0].dial(peers[1].getMultiaddrs());
102
+ await peers[1].dial(peers[2].getMultiaddrs());
103
+ const stores = [];
104
+ // Create store
105
+ let address = undefined;
106
+ const readerResolver = new Map();
107
+ for (const [i, client] of peers.entries()) {
108
+ let store;
109
+ if (address) {
110
+ store = await client.open(address, {
111
+ args: {
112
+ role: {
113
+ type: "replicator",
114
+ factor: 1
115
+ }
116
+ }
117
+ });
118
+ }
119
+ else {
120
+ store = await client.open(new TestStore(), {
121
+ args: {
122
+ role: {
123
+ type: "replicator",
124
+ factor: 1
125
+ }
126
+ }
127
+ });
128
+ address = store.address;
129
+ }
130
+ if (i === 1) {
131
+ store.docs.events.addEventListener("change", (event) => {
132
+ event.detail.added.forEach((e) => {
133
+ readerResolver.get(e.id)?.();
134
+ readerResolver.delete(e.id);
135
+ });
136
+ });
137
+ }
138
+ stores.push(store);
139
+ }
140
+ const createDoc = () => new Document({
141
+ id: uuid(),
142
+ name: uuid(),
143
+ number: 2341n
144
+ });
145
+ // warmup
146
+ for (let i = 0; i < 10; i++) {
147
+ await stores[0].docs.put(createDoc(), { unique: true });
148
+ await delay(1000);
149
+ }
150
+ await delay(5000);
151
+ const suite = new B.Suite();
152
+ suite
153
+ .add("put", {
154
+ fn: async (deferred) => {
155
+ const writeStore = stores[0];
156
+ const doc = createDoc();
157
+ // wait for reading
158
+ readerResolver.set(doc.id, deferred.resolve.bind(deferred));
159
+ await writeStore.docs.put(doc, { unique: true });
160
+ },
161
+ defer: true
162
+ })
163
+ .on("cycle", (event) => {
164
+ console.log(String(event.target));
165
+ })
166
+ .on("error", (err) => {
167
+ throw err;
168
+ })
169
+ .on("complete", async function (...args) {
170
+ await Promise.all(peers.map((x) => x.stop()));
171
+ await Promise.all(peers.map((x) => x["libp2p"].stop()));
172
+ })
173
+ .run();
174
+ //# sourceMappingURL=replication.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"replication.js","sourceRoot":"","sources":["../../benchmark/replication.ts"],"names":[],"mappings":";;;;;;;;;AAAA,OAAO,CAAC,MAAM,WAAW,CAAC;AAC1B,OAAO,EAAE,KAAK,EAAE,MAAM,EAAE,OAAO,EAAE,MAAM,gBAAgB,CAAC;AACxD,OAAO,EAAE,OAAO,EAAE,MAAM,kBAAkB,CAAC;AAC3C,OAAO,EAAE,EAAE,IAAI,IAAI,EAAE,MAAM,MAAM,CAAC;AAClC,OAAO,EAAE,OAAO,EAAE,oBAAoB,EAAE,MAAM,SAAS,CAAC;AACxD,OAAO,EAAE,GAAG,EAAE,MAAM,aAAa,CAAC;AAClC,OAAO,EAAE,SAAS,EAAqB,MAAM,mBAAmB,CAAC;AACjE,OAAO,EAAE,SAAS,EAAE,MAAM,iBAAiB,CAAC;AAC5C,OAAO,EAAE,KAAK,EAAE,MAAM,yBAAyB,CAAC;AAChD,OAAO,EAAE,KAAK,EAAE,MAAM,eAAe,CAAC;AAEtC,0EAA0E;AAC1E,6CAA6C;AAE7C,IACM,QAAQ,GADd,MACM,QAAQ;IAEb,EAAE,CAAS;IAGX,IAAI,CAAU;IAGd,MAAM,CAAU;IAEhB,YAAY,IAAc;QACzB,IAAI,IAAI,EAAE,CAAC;YACV,IAAI,CAAC,EAAE,GAAG,IAAI,CAAC,EAAE,CAAC;YAClB,IAAI,CAAC,IAAI,GAAG,IAAI,CAAC,IAAI,CAAC;YACtB,IAAI,CAAC,MAAM,GAAG,IAAI,CAAC,MAAM,CAAC;QAC3B,CAAC;IACF,CAAC;CACD,CAAA;AAfA;IADC,KAAK,CAAC,EAAE,IAAI,EAAE,QAAQ,EAAE,CAAC;;oCACf;AAGX;IADC,KAAK,CAAC,EAAE,IAAI,EAAE,MAAM,CAAC,QAAQ,CAAC,EAAE,CAAC;;sCACpB;AAGd;IADC,KAAK,CAAC,EAAE,IAAI,EAAE,MAAM,CAAC,KAAK,CAAC,EAAE,CAAC;;wCACf;AARX,QAAQ;IADb,OAAO,CAAC,UAAU,CAAC;qCAWD,QAAQ;GAVrB,QAAQ,CAiBb;AAED,IACM,SAAS,GADf,MACM,SAAU,SAAQ,OAAwC;IAE/D,IAAI,CAAsB;IAE1B;QACC,KAAK,EAAE,CAAC;QACR,IAAI,CAAC,IAAI,GAAG,IAAI,SAAS,EAAE,CAAC;IAC7B,CAAC;IAED,KAAK,CAAC,IAAI,CAAC,OAAyC;QACnD,MAAM,IAAI,CAAC,IAAI,CAAC,IAAI,CAAC,EAAE,GAAG,OAAO,EAAE,IAAI,EAAE,QAAQ,EAAE,CAAC,CAAC;IACtD,CAAC;CACD,CAAA;AAVA;IADC,KAAK,CAAC,EAAE,IAAI,EAAE,SAAS,EAAE,CAAC;8BACrB,SAAS;uCAAW;AAFrB,SAAS;IADd,OAAO,CAAC,gBAAgB,CAAC;;GACpB,SAAS,CAYd;AAED,MAAM,KAAK,GAAG,MAAM,OAAO,CAAC,GAAG,CAC9B;IACC,MAAM,oBAAoB,CAAC;QAC1B,UAAU,EAAE,CAAC,GAAG,EAAE,CAAC;QACnB,YAAY,EAAE,CAAC,KAAK,EAAE,CAAC;QACvB,QAAQ,EAAE;YACT,MAAM,EAAE,CAAC,GAAG,EAAE,EAAE,CACf,IAAI,SAAS,CAAC,GAAG,EAAE;gBAClB,eAAe,EAAE,IAAI;gBACrB,6BAA6B;aAC7B,CAAC;SACH;KACD,CAAC;IACF,MAAM,oBAAoB,CAAC;QAC1B,iBAAiB,EAAE,EAAE;QACrB,UAAU,EAAE,CAAC,GAAG,EAAE,CAAC;QACnB,YAAY,EAAE,CAAC,KAAK,EAAE,CAAC;QACvB,QAAQ,EAAE;YACT,MAAM,EAAE,CAAC,GAAG,EAAE,EAAE,CACf,IAAI,SAAS,CAAC,GAAG,EAAE;gBAClB,eAAe,EAAE,IAAI;gBACrB,6BAA6B;aAC7B,CAAC;SACH;KACD,CAAC;IACF,MAAM,oBAAoB,CAAC;QAC1B,UAAU,EAAE,CAAC,GAAG,EAAE,CAAC;QACnB,YAAY,EAAE,CAAC,KAAK,EAAE,CAAC;QACvB,QAAQ,EAAE;YACT,MAAM,EAAE,CAAC,GAAG,EAAE,EAAE,CACf,IAAI,SAAS,CAAC,GAAG,EAAE;gBAClB,eAAe,EAAE,IAAI;gBACrB,6BAA6B;aAC7B,CAAC;SACH;KACD,CAAC;CACF,CAAC,GAAG,CAAC,CAAC,CAAC,EAAE,EAAE,CAAC,OAAO,CAAC,MAAM,CAAC,EAAE,MAAM,EAAE,CAAC,EAAE,CAAC,CAAC,CAC3C,CAAC;AAEF,MAAM,KAAK,CAAC,CAAC,CAAC,CAAC,IAAI,CAAC,KAAK,CAAC,CAAC,CAAC,CAAC,aAAa,EAAE,CAAC,CAAC;AAC9C,MAAM,KAAK,CAAC,CAAC,CAAC,CAAC,IAAI,CAAC,KAAK,CAAC,CAAC,CAAC,CAAC,aAAa,EAAE,CAAC,CAAC;AAE9C,MAAM,MAAM,GAAgB,EAAE,CAAC;AAE/B,eAAe;AACf,IAAI,OAAO,GAAuB,SAAS,CAAC;AAE5C,MAAM,cAAc,GAA4B,IAAI,GAAG,EAAE,CAAC;AAE1D,KAAK,MAAM,CAAC,CAAC,EAAE,MAAM,CAAC,IAAI,KAAK,CAAC,OAAO,EAAE,EAAE,CAAC;IAC3C,IAAI,KAAgB,CAAC;IACrB,IAAI,OAAO,EAAE,CAAC;QACb,KAAK,GAAG,MAAM,MAAM,CAAC,IAAI,CAAY,OAAO,EAAE;YAC7C,IAAI,EAAE;gBACL,IAAI,EAAE;oBACL,IAAI,EAAE,YAAY;oBAClB,MAAM,EAAE,CAAC;iBACT;aACD;SACD,CAAC,CAAC;IACJ,CAAC;SAAM,CAAC;QACP,KAAK,GAAG,MAAM,MAAM,CAAC,IAAI,CAAC,IAAI,SAAS,EAAE,EAAE;YAC1C,IAAI,EAAE;gBACL,IAAI,EAAE;oBACL,IAAI,EAAE,YAAY;oBAClB,MAAM,EAAE,CAAC;iBACT;aACD;SACD,CAAC,CAAC;QACH,OAAO,GAAG,KAAK,CAAC,OAAO,CAAC;IACzB,CAAC;IACD,IAAI,CAAC,KAAK,CAAC,EAAE,CAAC;QACb,KAAK,CAAC,IAAI,CAAC,MAAM,CAAC,gBAAgB,CAAC,QAAQ,EAAE,CAAC,KAAK,EAAE,EAAE;YACtD,KAAK,CAAC,MAAM,CAAC,KAAK,CAAC,OAAO,CAAC,CAAC,CAAC,EAAE,EAAE;gBAChC,cAAc,CAAC,GAAG,CAAC,CAAC,CAAC,EAAE,CAAC,EAAE,EAAE,CAAC;gBAC7B,cAAc,CAAC,MAAM,CAAC,CAAC,CAAC,EAAE,CAAC,CAAC;YAC7B,CAAC,CAAC,CAAC;QACJ,CAAC,CAAC,CAAC;IACJ,CAAC;IAED,MAAM,CAAC,IAAI,CAAC,KAAK,CAAC,CAAC;AACpB,CAAC;AAED,MAAM,SAAS,GAAG,GAAG,EAAE,CACtB,IAAI,QAAQ,CAAC;IACZ,EAAE,EAAE,IAAI,EAAE;IACV,IAAI,EAAE,IAAI,EAAE;IACZ,MAAM,EAAE,KAAK;CACb,CAAC,CAAC;AAEJ,SAAS;AACT,KAAK,IAAI,CAAC,GAAG,CAAC,EAAE,CAAC,GAAG,EAAE,EAAE,CAAC,EAAE,EAAE,CAAC;IAC7B,MAAM,MAAM,CAAC,CAAC,CAAC,CAAC,IAAI,CAAC,GAAG,CAAC,SAAS,EAAE,EAAE,EAAE,MAAM,EAAE,IAAI,EAAE,CAAC,CAAC;IACxD,MAAM,KAAK,CAAC,IAAI,CAAC,CAAC;AACnB,CAAC;AAED,MAAM,KAAK,CAAC,IAAI,CAAC,CAAC;AAClB,MAAM,KAAK,GAAG,IAAI,CAAC,CAAC,KAAK,EAAE,CAAC;AAC5B,KAAK;KACH,GAAG,CAAC,KAAK,EAAE;IACX,EAAE,EAAE,KAAK,EAAE,QAAa,EAAE,EAAE;QAC3B,MAAM,UAAU,GAAG,MAAM,CAAC,CAAC,CAAC,CAAC;QAC7B,MAAM,GAAG,GAAG,SAAS,EAAE,CAAC;QACxB,mBAAmB;QACnB,cAAc,CAAC,GAAG,CAAC,GAAG,CAAC,EAAE,EAAE,QAAQ,CAAC,OAAO,CAAC,IAAI,CAAC,QAAQ,CAAC,CAAC,CAAC;QAC5D,MAAM,UAAU,CAAC,IAAI,CAAC,GAAG,CAAC,GAAG,EAAE,EAAE,MAAM,EAAE,IAAI,EAAE,CAAC,CAAC;IAClD,CAAC;IACD,KAAK,EAAE,IAAI;CACX,CAAC;KACD,EAAE,CAAC,OAAO,EAAE,CAAC,KAAU,EAAE,EAAE;IAC3B,OAAO,CAAC,GAAG,CAAC,MAAM,CAAC,KAAK,CAAC,MAAM,CAAC,CAAC,CAAC;AACnC,CAAC,CAAC;KACD,EAAE,CAAC,OAAO,EAAE,CAAC,GAAQ,EAAE,EAAE;IACzB,MAAM,GAAG,CAAC;AACX,CAAC,CAAC;KACD,EAAE,CAAC,UAAU,EAAE,KAAK,WAAsB,GAAG,IAAW;IACxD,MAAM,OAAO,CAAC,GAAG,CAAC,KAAK,CAAC,GAAG,CAAC,CAAC,CAAC,EAAE,EAAE,CAAC,CAAC,CAAC,IAAI,EAAE,CAAC,CAAC,CAAC;IAC9C,MAAM,OAAO,CAAC,GAAG,CAAC,KAAK,CAAC,GAAG,CAAC,CAAC,CAAC,EAAE,EAAE,CAAC,CAAC,CAAC,QAAQ,CAAC,CAAC,IAAI,EAAE,CAAC,CAAC,CAAC;AACzD,CAAC,CAAC;KACD,GAAG,EAAE,CAAC"}
@@ -0,0 +1,2 @@
1
+ export declare const MAX_BATCH_SIZE = 5000000;
2
+ //# sourceMappingURL=constants.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"constants.d.ts","sourceRoot":"","sources":["../../src/constants.ts"],"names":[],"mappings":"AAAA,eAAO,MAAM,cAAc,UAAM,CAAC"}
@@ -0,0 +1,2 @@
1
+ export const MAX_BATCH_SIZE = 5e6;
2
+ //# sourceMappingURL=constants.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"constants.js","sourceRoot":"","sources":["../../src/constants.ts"],"names":[],"mappings":"AAAA,MAAM,CAAC,MAAM,cAAc,GAAG,GAAG,CAAC"}
@@ -0,0 +1,5 @@
1
+ export * from "./program.js";
2
+ export * from "./search.js";
3
+ export { MAX_BATCH_SIZE as MAX_DOCUMENT_SIZE } from "./constants.js";
4
+ export * from "@peerbit/document-interface";
5
+ //# sourceMappingURL=index.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"index.d.ts","sourceRoot":"","sources":["../../src/index.ts"],"names":[],"mappings":"AAAA,cAAc,cAAc,CAAC;AAC7B,cAAc,aAAa,CAAC;AAC5B,OAAO,EAAE,cAAc,IAAI,iBAAiB,EAAE,MAAM,gBAAgB,CAAC;AACrE,cAAc,6BAA6B,CAAC"}
@@ -0,0 +1,5 @@
1
+ export * from "./program.js";
2
+ export * from "./search.js";
3
+ export { MAX_BATCH_SIZE as MAX_DOCUMENT_SIZE } from "./constants.js";
4
+ export * from "@peerbit/document-interface";
5
+ //# sourceMappingURL=index.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"index.js","sourceRoot":"","sources":["../../src/index.ts"],"names":[],"mappings":"AAAA,cAAc,cAAc,CAAC;AAC7B,cAAc,aAAa,CAAC;AAC5B,OAAO,EAAE,cAAc,IAAI,iBAAiB,EAAE,MAAM,gBAAgB,CAAC;AACrE,cAAc,6BAA6B,CAAC"}
@@ -0,0 +1,90 @@
1
+ import { type AbstractType } from "@dao-xyz/borsh";
2
+ import { type Change, Entry, type TrimOptions } from "@peerbit/log";
3
+ import { Program, type ProgramEvents } from "@peerbit/program";
4
+ import { type RoleOptions, Observer, Replicator, SharedLog, type SharedLogOptions, type SharedAppendOptions } from "@peerbit/shared-log";
5
+ import * as types from "@peerbit/document-interface";
6
+ export type { RoleOptions };
7
+ import { type IndexableFields, DeleteOperation, DocumentIndex, Operation, PutOperation, type CanSearch, type CanRead } from "./search.js";
8
+ export declare class OperationError extends Error {
9
+ constructor(message?: string);
10
+ }
11
+ export interface DocumentsChange<T> {
12
+ added: T[];
13
+ removed: T[];
14
+ }
15
+ export interface DocumentEvents<T> {
16
+ change: CustomEvent<DocumentsChange<T>>;
17
+ }
18
+ type MaybePromise<T> = Promise<T> | T;
19
+ type CanPerformPut<T> = {
20
+ type: "put";
21
+ value: T;
22
+ operation: PutOperation;
23
+ entry: Entry<PutOperation>;
24
+ };
25
+ type CanPerformDelete<T> = {
26
+ type: "delete";
27
+ operation: DeleteOperation;
28
+ entry: Entry<DeleteOperation>;
29
+ };
30
+ export type CanPerformOperations<T> = CanPerformPut<T> | CanPerformDelete<T>;
31
+ export type CanPerform<T> = (properties: CanPerformOperations<T>) => MaybePromise<boolean>;
32
+ export type SetupOptions<T> = {
33
+ type: AbstractType<T>;
34
+ canOpen?: (program: T) => MaybePromise<boolean>;
35
+ canPerform?: CanPerform<T>;
36
+ id?: (obj: any) => types.IdPrimitive;
37
+ index?: {
38
+ idProperty?: string | string[];
39
+ canSearch?: CanSearch;
40
+ canRead?: CanRead<T>;
41
+ fields?: IndexableFields<T>;
42
+ };
43
+ log?: {
44
+ trim?: TrimOptions;
45
+ };
46
+ } & SharedLogOptions<Operation>;
47
+ export declare class Documents<T> extends Program<SetupOptions<T>, DocumentEvents<T> & ProgramEvents> {
48
+ log: SharedLog<Operation>;
49
+ immutable: boolean;
50
+ private _index;
51
+ private _clazz;
52
+ private _optionCanPerform?;
53
+ private _manuallySynced;
54
+ private idResolver;
55
+ canOpen?: (program: T, entry: Entry<Operation>) => Promise<boolean> | boolean;
56
+ constructor(properties?: {
57
+ id?: Uint8Array;
58
+ immutable?: boolean;
59
+ index?: DocumentIndex<T>;
60
+ });
61
+ get index(): DocumentIndex<T>;
62
+ open(options: SetupOptions<T>): Promise<void>;
63
+ recover(): Promise<void>;
64
+ private _resolveEntry;
65
+ updateRole(role: RoleOptions): Promise<void>;
66
+ get role(): Replicator | Observer;
67
+ canAppend(entry: Entry<Operation>, reference?: {
68
+ document: T;
69
+ operation: PutOperation;
70
+ }): Promise<boolean>;
71
+ _canAppend(entry: Entry<Operation>, reference?: {
72
+ document: T;
73
+ operation: PutOperation;
74
+ }): Promise<PutOperation | DeleteOperation | false>;
75
+ put(doc: T, options?: SharedAppendOptions<Operation> & {
76
+ unique?: boolean;
77
+ }): Promise<{
78
+ entry: Entry<Operation>;
79
+ removed: Entry<Operation>[];
80
+ }>;
81
+ del(id: types.Ideable, options?: SharedAppendOptions<Operation>): Promise<{
82
+ entry: Entry<Operation>;
83
+ removed: Entry<Operation>[];
84
+ }>;
85
+ handleChanges(change: Change<Operation>, reference?: {
86
+ document: T;
87
+ operation: PutOperation;
88
+ }): Promise<void>;
89
+ }
90
+ //# sourceMappingURL=program.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"program.d.ts","sourceRoot":"","sources":["../../src/program.ts"],"names":[],"mappings":"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"}