@peerbit/document 13.0.44 → 13.1.1
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/dist/benchmark/document-put.js +1224 -63
- package/dist/benchmark/document-put.js.map +1 -1
- package/dist/src/index.d.ts +2 -0
- package/dist/src/index.d.ts.map +1 -1
- package/dist/src/index.js +2 -0
- package/dist/src/index.js.map +1 -1
- package/dist/src/native-rust.d.ts +50 -0
- package/dist/src/native-rust.d.ts.map +1 -0
- package/dist/src/native-rust.js +38 -0
- package/dist/src/native-rust.js.map +1 -0
- package/dist/src/policy.d.ts +51 -0
- package/dist/src/policy.d.ts.map +1 -0
- package/dist/src/policy.js +347 -0
- package/dist/src/policy.js.map +1 -0
- package/dist/src/program.d.ts +139 -22
- package/dist/src/program.d.ts.map +1 -1
- package/dist/src/program.js +3074 -342
- package/dist/src/program.js.map +1 -1
- package/dist/src/search.d.ts +80 -6
- package/dist/src/search.d.ts.map +1 -1
- package/dist/src/search.js +1155 -59
- package/dist/src/search.js.map +1 -1
- package/dist/src/transform.d.ts +42 -0
- package/dist/src/transform.d.ts.map +1 -0
- package/dist/src/transform.js +136 -0
- package/dist/src/transform.js.map +1 -0
- package/package.json +21 -16
- package/src/index.ts +2 -0
- package/src/native-rust.ts +152 -0
- package/src/policy.ts +592 -0
- package/src/program.ts +5020 -467
- package/src/search.ts +1766 -109
- package/src/transform.ts +277 -0
|
@@ -0,0 +1,347 @@
|
|
|
1
|
+
const NATIVE_CAN_PERFORM_POLICY = Symbol.for("@peerbit/document/native-can-perform-policy");
|
|
2
|
+
const copyBytes = (bytes) => new Uint8Array(bytes);
|
|
3
|
+
const bytesEqual = (left, right) => {
|
|
4
|
+
if (left.byteLength !== right.byteLength) {
|
|
5
|
+
return false;
|
|
6
|
+
}
|
|
7
|
+
for (let i = 0; i < left.byteLength; i++) {
|
|
8
|
+
if (left[i] !== right[i]) {
|
|
9
|
+
return false;
|
|
10
|
+
}
|
|
11
|
+
}
|
|
12
|
+
return true;
|
|
13
|
+
};
|
|
14
|
+
const asPath = (path) => typeof path === "string" ? [path] : path;
|
|
15
|
+
const createFieldValueAccessor = (path) => {
|
|
16
|
+
const segments = asPath(path);
|
|
17
|
+
if (segments.length === 1) {
|
|
18
|
+
const segment = segments[0];
|
|
19
|
+
return (value) => value?.[segment];
|
|
20
|
+
}
|
|
21
|
+
return (value) => {
|
|
22
|
+
let current = value;
|
|
23
|
+
for (const segment of segments) {
|
|
24
|
+
if (current == null) {
|
|
25
|
+
return undefined;
|
|
26
|
+
}
|
|
27
|
+
current = current[segment];
|
|
28
|
+
}
|
|
29
|
+
return current;
|
|
30
|
+
};
|
|
31
|
+
};
|
|
32
|
+
const keyRawBytes = (publicKey) => publicKey.publicKey;
|
|
33
|
+
const valueMatchesPublicKeyBytes = (value, publicKey, publicKeyBytes, rawPublicKeyBytes) => {
|
|
34
|
+
if (!value) {
|
|
35
|
+
return false;
|
|
36
|
+
}
|
|
37
|
+
if (value instanceof Uint8Array) {
|
|
38
|
+
return (bytesEqual(value, publicKeyBytes) ||
|
|
39
|
+
(rawPublicKeyBytes ? bytesEqual(value, rawPublicKeyBytes) : false));
|
|
40
|
+
}
|
|
41
|
+
const maybePublicKey = value;
|
|
42
|
+
if (typeof maybePublicKey.equals === "function") {
|
|
43
|
+
return maybePublicKey.equals(publicKey);
|
|
44
|
+
}
|
|
45
|
+
if (maybePublicKey.bytes instanceof Uint8Array) {
|
|
46
|
+
return bytesEqual(maybePublicKey.bytes, publicKeyBytes);
|
|
47
|
+
}
|
|
48
|
+
if (maybePublicKey.publicKey instanceof Uint8Array) {
|
|
49
|
+
return (!!rawPublicKeyBytes &&
|
|
50
|
+
bytesEqual(maybePublicKey.publicKey, rawPublicKeyBytes));
|
|
51
|
+
}
|
|
52
|
+
return false;
|
|
53
|
+
};
|
|
54
|
+
const valueMatchesPublicKey = (value, publicKey) => valueMatchesPublicKeyBytes(value, publicKey, publicKey.bytes, keyRawBytes(publicKey));
|
|
55
|
+
const createPublicKeyValueMatcher = (publicKey) => {
|
|
56
|
+
const publicKeyBytes = publicKey.bytes;
|
|
57
|
+
const rawPublicKeyBytes = keyRawBytes(publicKey);
|
|
58
|
+
return (value) => valueMatchesPublicKeyBytes(value, publicKey, publicKeyBytes, rawPublicKeyBytes);
|
|
59
|
+
};
|
|
60
|
+
const valueMatchesAnyPublicKey = (value, publicKeys) => {
|
|
61
|
+
if (!value) {
|
|
62
|
+
return false;
|
|
63
|
+
}
|
|
64
|
+
for (const publicKey of publicKeys) {
|
|
65
|
+
if (valueMatchesPublicKey(value, publicKey)) {
|
|
66
|
+
return true;
|
|
67
|
+
}
|
|
68
|
+
}
|
|
69
|
+
return false;
|
|
70
|
+
};
|
|
71
|
+
const allDescriptors = (policies) => {
|
|
72
|
+
const descriptors = [];
|
|
73
|
+
for (const policy of policies) {
|
|
74
|
+
const descriptor = getCanPerformPolicyDescriptor(policy);
|
|
75
|
+
if (!descriptor) {
|
|
76
|
+
return;
|
|
77
|
+
}
|
|
78
|
+
descriptors.push(descriptor);
|
|
79
|
+
}
|
|
80
|
+
return descriptors;
|
|
81
|
+
};
|
|
82
|
+
const attachCanPerformPolicyDescriptor = (fn, descriptor) => {
|
|
83
|
+
if (fn[NATIVE_CAN_PERFORM_POLICY]) {
|
|
84
|
+
return fn;
|
|
85
|
+
}
|
|
86
|
+
Object.defineProperty(fn, NATIVE_CAN_PERFORM_POLICY, {
|
|
87
|
+
value: Object.freeze(descriptor),
|
|
88
|
+
enumerable: false,
|
|
89
|
+
writable: false,
|
|
90
|
+
configurable: false,
|
|
91
|
+
});
|
|
92
|
+
return fn;
|
|
93
|
+
};
|
|
94
|
+
export const getCanPerformPolicyDescriptor = (canPerform) => canPerform?.[NATIVE_CAN_PERFORM_POLICY];
|
|
95
|
+
const allowFastPath = () => true;
|
|
96
|
+
const denyFastPath = () => false;
|
|
97
|
+
export const createCanPerformPolicyEvaluator = (descriptor, localPublicKey) => {
|
|
98
|
+
switch (descriptor.kind) {
|
|
99
|
+
case "allowAll":
|
|
100
|
+
return allowFastPath;
|
|
101
|
+
case "signedByPublicKey":
|
|
102
|
+
return localPublicKey &&
|
|
103
|
+
bytesEqual(descriptor.publicKey, localPublicKey.bytes)
|
|
104
|
+
? allowFastPath
|
|
105
|
+
: denyFastPath;
|
|
106
|
+
case "put":
|
|
107
|
+
return createCanPerformPolicyEvaluator(descriptor.policy, localPublicKey);
|
|
108
|
+
case "delete":
|
|
109
|
+
return denyFastPath;
|
|
110
|
+
case "deleteSignedByExistingField":
|
|
111
|
+
case "sameSignersAsPrevious":
|
|
112
|
+
return denyFastPath;
|
|
113
|
+
case "and":
|
|
114
|
+
return descriptor.policies
|
|
115
|
+
.map((policy) => createCanPerformPolicyEvaluator(policy, localPublicKey))
|
|
116
|
+
.reduce((previous, next) => (document) => previous(document) && next(document), allowFastPath);
|
|
117
|
+
case "or":
|
|
118
|
+
return descriptor.policies
|
|
119
|
+
.map((policy) => createCanPerformPolicyEvaluator(policy, localPublicKey))
|
|
120
|
+
.reduce((previous, next) => (document) => previous(document) || next(document), denyFastPath);
|
|
121
|
+
case "signedByField": {
|
|
122
|
+
if (!localPublicKey) {
|
|
123
|
+
return denyFastPath;
|
|
124
|
+
}
|
|
125
|
+
const getFieldValue = createFieldValueAccessor(descriptor.path);
|
|
126
|
+
const matchesLocalPublicKey = createPublicKeyValueMatcher(localPublicKey);
|
|
127
|
+
return (document) => matchesLocalPublicKey(getFieldValue(document));
|
|
128
|
+
}
|
|
129
|
+
}
|
|
130
|
+
};
|
|
131
|
+
export const createCanPerformDeletePolicyEvaluator = (descriptor, localPublicKey) => {
|
|
132
|
+
switch (descriptor.kind) {
|
|
133
|
+
case "allowAll":
|
|
134
|
+
return allowFastPath;
|
|
135
|
+
case "signedByPublicKey":
|
|
136
|
+
return localPublicKey &&
|
|
137
|
+
bytesEqual(descriptor.publicKey, localPublicKey.bytes)
|
|
138
|
+
? allowFastPath
|
|
139
|
+
: denyFastPath;
|
|
140
|
+
case "signedByField":
|
|
141
|
+
case "sameSignersAsPrevious":
|
|
142
|
+
case "put":
|
|
143
|
+
return denyFastPath;
|
|
144
|
+
case "delete":
|
|
145
|
+
return createCanPerformDeletePolicyEvaluator(descriptor.policy, localPublicKey);
|
|
146
|
+
case "deleteSignedByExistingField": {
|
|
147
|
+
if (!localPublicKey) {
|
|
148
|
+
return denyFastPath;
|
|
149
|
+
}
|
|
150
|
+
const getFieldValue = createFieldValueAccessor(descriptor.path);
|
|
151
|
+
const matchesLocalPublicKey = createPublicKeyValueMatcher(localPublicKey);
|
|
152
|
+
return (document) => matchesLocalPublicKey(getFieldValue(document));
|
|
153
|
+
}
|
|
154
|
+
case "and":
|
|
155
|
+
return descriptor.policies
|
|
156
|
+
.map((policy) => createCanPerformDeletePolicyEvaluator(policy, localPublicKey))
|
|
157
|
+
.reduce((previous, next) => (document) => previous(document) && next(document), allowFastPath);
|
|
158
|
+
case "or":
|
|
159
|
+
return descriptor.policies
|
|
160
|
+
.map((policy) => createCanPerformDeletePolicyEvaluator(policy, localPublicKey))
|
|
161
|
+
.reduce((previous, next) => (document) => previous(document) || next(document), denyFastPath);
|
|
162
|
+
}
|
|
163
|
+
};
|
|
164
|
+
export const canPerformPolicyNeedsDeleteValue = (descriptor) => {
|
|
165
|
+
switch (descriptor.kind) {
|
|
166
|
+
case "deleteSignedByExistingField":
|
|
167
|
+
return true;
|
|
168
|
+
case "and":
|
|
169
|
+
case "or":
|
|
170
|
+
return descriptor.policies.some(canPerformPolicyNeedsDeleteValue);
|
|
171
|
+
case "put":
|
|
172
|
+
case "delete":
|
|
173
|
+
return canPerformPolicyNeedsDeleteValue(descriptor.policy);
|
|
174
|
+
default:
|
|
175
|
+
return false;
|
|
176
|
+
}
|
|
177
|
+
};
|
|
178
|
+
export const canPerformPolicyDeleteFieldPaths = (descriptor) => {
|
|
179
|
+
switch (descriptor.kind) {
|
|
180
|
+
case "deleteSignedByExistingField":
|
|
181
|
+
return [descriptor.path];
|
|
182
|
+
case "and":
|
|
183
|
+
case "or":
|
|
184
|
+
return descriptor.policies.flatMap((policy) => [
|
|
185
|
+
...canPerformPolicyDeleteFieldPaths(policy),
|
|
186
|
+
]);
|
|
187
|
+
case "delete":
|
|
188
|
+
return canPerformPolicyDeleteFieldPaths(descriptor.policy);
|
|
189
|
+
default:
|
|
190
|
+
return [];
|
|
191
|
+
}
|
|
192
|
+
};
|
|
193
|
+
export const canPerformPolicySignedByFieldPaths = (descriptor) => {
|
|
194
|
+
switch (descriptor.kind) {
|
|
195
|
+
case "signedByField":
|
|
196
|
+
return [descriptor.path];
|
|
197
|
+
case "and":
|
|
198
|
+
case "or":
|
|
199
|
+
return descriptor.policies.flatMap((policy) => [
|
|
200
|
+
...canPerformPolicySignedByFieldPaths(policy),
|
|
201
|
+
]);
|
|
202
|
+
case "put":
|
|
203
|
+
return canPerformPolicySignedByFieldPaths(descriptor.policy);
|
|
204
|
+
default:
|
|
205
|
+
return [];
|
|
206
|
+
}
|
|
207
|
+
};
|
|
208
|
+
export const canPerformPolicyPutNeedsEntryPublicKeys = (descriptor) => {
|
|
209
|
+
switch (descriptor.kind) {
|
|
210
|
+
case "signedByPublicKey":
|
|
211
|
+
case "signedByField":
|
|
212
|
+
case "sameSignersAsPrevious":
|
|
213
|
+
return true;
|
|
214
|
+
case "and":
|
|
215
|
+
case "or":
|
|
216
|
+
return descriptor.policies.some(canPerformPolicyPutNeedsEntryPublicKeys);
|
|
217
|
+
case "put":
|
|
218
|
+
return canPerformPolicyPutNeedsEntryPublicKeys(descriptor.policy);
|
|
219
|
+
default:
|
|
220
|
+
return false;
|
|
221
|
+
}
|
|
222
|
+
};
|
|
223
|
+
export const canPerformPolicyNeedsPreviousEntries = (descriptor) => {
|
|
224
|
+
switch (descriptor.kind) {
|
|
225
|
+
case "sameSignersAsPrevious":
|
|
226
|
+
return true;
|
|
227
|
+
case "and":
|
|
228
|
+
case "or":
|
|
229
|
+
return descriptor.policies.some(canPerformPolicyNeedsPreviousEntries);
|
|
230
|
+
case "put":
|
|
231
|
+
case "delete":
|
|
232
|
+
return canPerformPolicyNeedsPreviousEntries(descriptor.policy);
|
|
233
|
+
default:
|
|
234
|
+
return false;
|
|
235
|
+
}
|
|
236
|
+
};
|
|
237
|
+
const getEntryPublicKeys = async (entry) => {
|
|
238
|
+
try {
|
|
239
|
+
if (entry.publicKeys.length > 0) {
|
|
240
|
+
return entry.publicKeys;
|
|
241
|
+
}
|
|
242
|
+
}
|
|
243
|
+
catch {
|
|
244
|
+
return entry.getPublicKeys();
|
|
245
|
+
}
|
|
246
|
+
return entry.getPublicKeys();
|
|
247
|
+
};
|
|
248
|
+
const entryPublicKeysInclude = async (properties, publicKey) => {
|
|
249
|
+
const publicKeys = await getEntryPublicKeys(properties.entry);
|
|
250
|
+
return publicKeys.some((key) => key.equals(publicKey));
|
|
251
|
+
};
|
|
252
|
+
const entryPublicKeysMatchValue = async (properties, value) => {
|
|
253
|
+
const publicKeys = await getEntryPublicKeys(properties.entry);
|
|
254
|
+
return valueMatchesAnyPublicKey(value, publicKeys);
|
|
255
|
+
};
|
|
256
|
+
const publicKeySetsEqual = (left, right) => left.length === right.length &&
|
|
257
|
+
left.every((leftKey) => right.some((rightKey) => leftKey.equals(rightKey)));
|
|
258
|
+
const sameSignersAsPrevious = async (properties) => {
|
|
259
|
+
if (properties.type !== "put") {
|
|
260
|
+
return false;
|
|
261
|
+
}
|
|
262
|
+
if (!properties.previousEntries?.length) {
|
|
263
|
+
return true;
|
|
264
|
+
}
|
|
265
|
+
const currentPublicKeys = await getEntryPublicKeys(properties.entry);
|
|
266
|
+
for (const previousEntry of properties.previousEntries) {
|
|
267
|
+
const previousPublicKeys = await getEntryPublicKeys(previousEntry);
|
|
268
|
+
if (!publicKeySetsEqual(currentPublicKeys, previousPublicKeys)) {
|
|
269
|
+
return false;
|
|
270
|
+
}
|
|
271
|
+
}
|
|
272
|
+
return true;
|
|
273
|
+
};
|
|
274
|
+
const andEvaluate = async (policies, properties) => {
|
|
275
|
+
for (const policy of policies) {
|
|
276
|
+
if (!(await policy(properties))) {
|
|
277
|
+
return false;
|
|
278
|
+
}
|
|
279
|
+
}
|
|
280
|
+
return true;
|
|
281
|
+
};
|
|
282
|
+
const orEvaluate = async (policies, properties) => {
|
|
283
|
+
for (const policy of policies) {
|
|
284
|
+
if (await policy(properties)) {
|
|
285
|
+
return true;
|
|
286
|
+
}
|
|
287
|
+
}
|
|
288
|
+
return false;
|
|
289
|
+
};
|
|
290
|
+
const attachIfDescribed = (fn, descriptor) => descriptor ? attachCanPerformPolicyDescriptor(fn, descriptor) : fn;
|
|
291
|
+
export const policy = {
|
|
292
|
+
allowAll: () => attachCanPerformPolicyDescriptor(() => true, { kind: "allowAll" }),
|
|
293
|
+
signedByPublicKey: (publicKey) => attachCanPerformPolicyDescriptor((properties) => entryPublicKeysInclude(properties, publicKey), {
|
|
294
|
+
kind: "signedByPublicKey",
|
|
295
|
+
publicKey: copyBytes(publicKey.bytes),
|
|
296
|
+
}),
|
|
297
|
+
signedByField: (path) => {
|
|
298
|
+
const getFieldValue = createFieldValueAccessor(path);
|
|
299
|
+
return attachCanPerformPolicyDescriptor(async (properties) => {
|
|
300
|
+
if (properties.type !== "put") {
|
|
301
|
+
return false;
|
|
302
|
+
}
|
|
303
|
+
const fieldValue = getFieldValue(properties.value);
|
|
304
|
+
return entryPublicKeysMatchValue(properties, fieldValue);
|
|
305
|
+
}, {
|
|
306
|
+
kind: "signedByField",
|
|
307
|
+
path: typeof path === "string" ? path : Object.freeze([...path]),
|
|
308
|
+
});
|
|
309
|
+
},
|
|
310
|
+
deleteSignedByExistingField: (path) => {
|
|
311
|
+
const getFieldValue = createFieldValueAccessor(path);
|
|
312
|
+
return attachCanPerformPolicyDescriptor(async (properties) => {
|
|
313
|
+
if (properties.type !== "delete" || !properties.value) {
|
|
314
|
+
return false;
|
|
315
|
+
}
|
|
316
|
+
const fieldValue = getFieldValue(properties.value);
|
|
317
|
+
return entryPublicKeysMatchValue(properties, fieldValue);
|
|
318
|
+
}, {
|
|
319
|
+
kind: "deleteSignedByExistingField",
|
|
320
|
+
path: typeof path === "string" ? path : Object.freeze([...path]),
|
|
321
|
+
});
|
|
322
|
+
},
|
|
323
|
+
sameSignersAsPrevious: () => attachCanPerformPolicyDescriptor(sameSignersAsPrevious, {
|
|
324
|
+
kind: "sameSignersAsPrevious",
|
|
325
|
+
}),
|
|
326
|
+
put: (inner) => attachIfDescribed((properties) => properties.type === "put" && inner(properties), (() => {
|
|
327
|
+
const descriptor = getCanPerformPolicyDescriptor(inner);
|
|
328
|
+
return descriptor ? { kind: "put", policy: descriptor } : undefined;
|
|
329
|
+
})()),
|
|
330
|
+
delete: (inner) => attachIfDescribed((properties) => properties.type === "delete" && inner(properties), (() => {
|
|
331
|
+
const descriptor = getCanPerformPolicyDescriptor(inner);
|
|
332
|
+
return descriptor ? { kind: "delete", policy: descriptor } : undefined;
|
|
333
|
+
})()),
|
|
334
|
+
and: (...policies) => attachIfDescribed((properties) => andEvaluate(policies, properties), (() => {
|
|
335
|
+
const descriptors = allDescriptors(policies);
|
|
336
|
+
return descriptors
|
|
337
|
+
? { kind: "and", policies: Object.freeze(descriptors.slice()) }
|
|
338
|
+
: undefined;
|
|
339
|
+
})()),
|
|
340
|
+
or: (...policies) => attachIfDescribed((properties) => orEvaluate(policies, properties), (() => {
|
|
341
|
+
const descriptors = allDescriptors(policies);
|
|
342
|
+
return descriptors
|
|
343
|
+
? { kind: "or", policies: Object.freeze(descriptors.slice()) }
|
|
344
|
+
: undefined;
|
|
345
|
+
})()),
|
|
346
|
+
};
|
|
347
|
+
//# sourceMappingURL=policy.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"policy.js","sourceRoot":"","sources":["../../src/policy.ts"],"names":[],"mappings":"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"}
|
package/dist/src/program.d.ts
CHANGED
|
@@ -6,11 +6,15 @@ import { Program, type ProgramEvents } from "@peerbit/program";
|
|
|
6
6
|
import { type EntryReplicated, type ReplicationDomain, type SharedAppendOptions, SharedLog, type SharedLogOptions } from "@peerbit/shared-log";
|
|
7
7
|
import type { CustomDocumentDomain } from "./domain.js";
|
|
8
8
|
import type { DocumentEvents } from "./events.js";
|
|
9
|
-
import { DeleteOperation, type Operation, PutOperation } from "./operation.js";
|
|
10
|
-
import { type CanRead, type CanSearch, DocumentIndex, type GetOptions, type PrefetchOptions, type ReachScope, type TransformOptions } from "./search.js";
|
|
9
|
+
import { DeleteOperation, type Operation, PutOperation, PutWithKeyOperation } from "./operation.js";
|
|
10
|
+
import { type CanRead, type CanSearch, DocumentIndex, type GetOptions, type IndexedContextOnly, type PrefetchOptions, type ReachScope, type TransformOptions } from "./search.js";
|
|
11
11
|
export declare class OperationError extends Error {
|
|
12
12
|
constructor(message?: string);
|
|
13
13
|
}
|
|
14
|
+
export type DocumentMode = "auto" | "compat" | "native";
|
|
15
|
+
export declare class NativeDocumentModeError extends Error {
|
|
16
|
+
constructor(message: string);
|
|
17
|
+
}
|
|
14
18
|
type MaybePromise<T> = Promise<T> | T;
|
|
15
19
|
export type CountEstimate = {
|
|
16
20
|
estimate: number;
|
|
@@ -30,21 +34,44 @@ type CanPerformPut<T> = {
|
|
|
30
34
|
value: T;
|
|
31
35
|
operation: PutOperation;
|
|
32
36
|
entry: Entry<PutOperation>;
|
|
37
|
+
previousEntries?: Entry<Operation>[];
|
|
33
38
|
};
|
|
34
|
-
type CanPerformDelete = {
|
|
39
|
+
type CanPerformDelete<T> = {
|
|
35
40
|
type: "delete";
|
|
41
|
+
value?: T;
|
|
36
42
|
operation: DeleteOperation;
|
|
37
43
|
entry: Entry<DeleteOperation>;
|
|
38
44
|
};
|
|
39
|
-
export type CanPerformOperations<T> = CanPerformPut<T> | CanPerformDelete
|
|
45
|
+
export type CanPerformOperations<T> = CanPerformPut<T> | CanPerformDelete<T>;
|
|
40
46
|
export type CanPerform<T> = (properties: CanPerformOperations<T>) => MaybePromise<boolean>;
|
|
47
|
+
type PutChangeReference<T, I extends Record<string, any>> = {
|
|
48
|
+
document: T;
|
|
49
|
+
operation: PutOperation | PutWithKeyOperation;
|
|
50
|
+
key: indexerTypes.IdKey;
|
|
51
|
+
unique?: boolean;
|
|
52
|
+
existing?: indexerTypes.IndexedResult<IndexedContextOnly<I>> | null | undefined;
|
|
53
|
+
};
|
|
54
|
+
type DocumentPutOptions = SharedAppendOptions<Operation> & {
|
|
55
|
+
unique?: boolean;
|
|
56
|
+
replicate?: boolean;
|
|
57
|
+
checkRemote?: boolean;
|
|
58
|
+
};
|
|
59
|
+
type DocumentPutResult = {
|
|
60
|
+
readonly entry: Entry<Operation>;
|
|
61
|
+
removed: ShallowOrFullEntry<Operation>[];
|
|
62
|
+
};
|
|
63
|
+
type DocumentPutManyResult = {
|
|
64
|
+
entries: Entry<Operation>[];
|
|
65
|
+
removed: ShallowOrFullEntry<Operation>[];
|
|
66
|
+
};
|
|
41
67
|
type InferR<D> = D extends ReplicationDomain<any, any, infer I> ? I : "u32";
|
|
42
68
|
export type SetupOptions<T, I extends Record<string, any> = T extends Record<string, any> ? T : any, D extends ReplicationDomain<any, Operation, any> = any> = {
|
|
43
69
|
type: AbstractType<T>;
|
|
70
|
+
mode?: DocumentMode;
|
|
44
71
|
canOpen?: (program: T) => MaybePromise<boolean>;
|
|
45
72
|
canPerform?: CanPerform<T>;
|
|
46
73
|
strictHistory?: boolean;
|
|
47
|
-
id?: (obj: any) => indexerTypes.
|
|
74
|
+
id?: (obj: any) => indexerTypes.Ideable;
|
|
48
75
|
index?: {
|
|
49
76
|
canSearch?: CanSearch;
|
|
50
77
|
canRead?: CanRead<I>;
|
|
@@ -70,6 +97,21 @@ export declare class Documents<T, I extends Record<string, any> = T extends Reco
|
|
|
70
97
|
private _index;
|
|
71
98
|
private _clazz;
|
|
72
99
|
private _optionCanPerform?;
|
|
100
|
+
private _optionCanPerformNativePolicy?;
|
|
101
|
+
private _optionCanPerformNativeFastPath?;
|
|
102
|
+
private _nativeBackboneDocumentIndexEnabled;
|
|
103
|
+
private _mode;
|
|
104
|
+
private _nativeModeReplicatedOpen;
|
|
105
|
+
private _valueClassIsProgram;
|
|
106
|
+
private _documentChangeListeners;
|
|
107
|
+
private _documentChangeListenerCount;
|
|
108
|
+
private _documentInternalChangeListenerCount;
|
|
109
|
+
private _documentChangeListenerTrackingInitialized;
|
|
110
|
+
private _documentBackend;
|
|
111
|
+
private _canAppendDecodedDocuments;
|
|
112
|
+
private _nativeDocumentIdExtractionPlan?;
|
|
113
|
+
private _nativeDocumentFieldExtractionPlans?;
|
|
114
|
+
private _hasLogTrim;
|
|
73
115
|
private idResolver;
|
|
74
116
|
private domain?;
|
|
75
117
|
private strictHistory;
|
|
@@ -81,8 +123,45 @@ export declare class Documents<T, I extends Record<string, any> = T extends Reco
|
|
|
81
123
|
index?: DocumentIndex<T, I, ExtractArgs<D>>;
|
|
82
124
|
});
|
|
83
125
|
get index(): DocumentIndex<T, I, D>;
|
|
126
|
+
private isNativeMode;
|
|
127
|
+
private createDocumentBackend;
|
|
128
|
+
private createNativeDocumentBackendContext;
|
|
129
|
+
private nativeModeError;
|
|
130
|
+
private assertNativeModeOpenOptions;
|
|
131
|
+
private assertNativeModeReady;
|
|
132
|
+
private canPerformAllowsPlainPutFastPath;
|
|
133
|
+
private nativePlainPutPolicyNeedsPreviousEntries;
|
|
134
|
+
private nativePlainPutPolicyRequiredPreviousSignerPublicKey;
|
|
135
|
+
private unsupportedNativePutOptions;
|
|
136
|
+
private assertNativeModePlainPutSupported;
|
|
137
|
+
private assertNativeModePlainPutPolicySupported;
|
|
138
|
+
private canPerformAllowsNativePlainPut;
|
|
139
|
+
private nativePutPolicyAllows;
|
|
140
|
+
private nativeFieldValueMatchesLocalPublicKey;
|
|
141
|
+
private nativeFieldValueMatchesPublicKey;
|
|
142
|
+
private nativeFieldValueMatchesPublicKeys;
|
|
143
|
+
private nativeDeletePolicyNeedsEntryPublicKeys;
|
|
144
|
+
private nativePutOperationPolicyAllows;
|
|
145
|
+
private nativeDeleteOperationPolicyAllows;
|
|
146
|
+
private assertNativeModePlainPutManySupported;
|
|
147
|
+
private assertNativeModeDeleteSupported;
|
|
148
|
+
private canPerformAllowsNativeDelete;
|
|
149
|
+
private normalizeNativeModePutOptions;
|
|
150
|
+
private trackDocumentChangeListeners;
|
|
84
151
|
private getLocalIndexedContext;
|
|
152
|
+
private getNativeEntrySignerPublicKeys;
|
|
153
|
+
private getSharedLogNativeBackbone;
|
|
154
|
+
private getNativePreviousEntrySignerPublicKey;
|
|
155
|
+
private getNativePreviousEntrySignerPublicKeyForPutOperation;
|
|
156
|
+
private getNativeIndexedContext;
|
|
157
|
+
private getNativeModeIndexedContext;
|
|
158
|
+
private hasNativeDocumentContextLookup;
|
|
159
|
+
private getNativeIndexedContextsAndPreviousSignerPublicKeys;
|
|
85
160
|
private getExistingContext;
|
|
161
|
+
private documentFromIdentityIndexedValue;
|
|
162
|
+
private getLocalIdentityDocumentByHead;
|
|
163
|
+
private getLocalIndexedDocumentForNativeDeletePolicy;
|
|
164
|
+
private getNativeDeletePolicyFieldValue;
|
|
86
165
|
get changes(): import("@libp2p/interface").TypedEventTarget<DocumentEvents<T, I> & ProgramEvents>;
|
|
87
166
|
private maybeSubprogramOpen;
|
|
88
167
|
private keepCache;
|
|
@@ -93,28 +172,66 @@ export declare class Documents<T, I extends Record<string, any> = T extends Reco
|
|
|
93
172
|
document: T;
|
|
94
173
|
operation: PutOperation;
|
|
95
174
|
}): Promise<boolean>;
|
|
175
|
+
private nativeCanPerformAllowsAppend;
|
|
176
|
+
private resolveCanPerformPreviousEntries;
|
|
177
|
+
private resolveCanPerformDeleteValue;
|
|
96
178
|
protected _canAppend(entry: Entry<Operation>, reference?: {
|
|
97
179
|
document: T;
|
|
98
180
|
operation: PutOperation;
|
|
99
181
|
}): Promise<PutOperation | DeleteOperation | false>;
|
|
100
|
-
|
|
101
|
-
|
|
102
|
-
|
|
103
|
-
|
|
104
|
-
|
|
105
|
-
|
|
106
|
-
|
|
107
|
-
|
|
182
|
+
private getAppendOperation;
|
|
183
|
+
private getPlainEntryOperationFromStorage;
|
|
184
|
+
private getNativeDocumentFieldExtractionPlan;
|
|
185
|
+
private getNativeDocumentFieldFromPutOperation;
|
|
186
|
+
private getNativeDocumentIdFromPutOperation;
|
|
187
|
+
private preparePut;
|
|
188
|
+
private preparePlainPut;
|
|
189
|
+
put(doc: T, options?: DocumentPutOptions): Promise<DocumentPutResult>;
|
|
190
|
+
private putCompatDocumentBackend;
|
|
191
|
+
putMany(docs: T[], options?: DocumentPutOptions): Promise<DocumentPutManyResult>;
|
|
192
|
+
private putManyCompatDocumentBackend;
|
|
193
|
+
private putManySequential;
|
|
194
|
+
private hasDuplicatePreparedPutKeys;
|
|
195
|
+
private canUsePlainPutFastPath;
|
|
196
|
+
private canUsePlainPutManyFastPath;
|
|
197
|
+
private createPlainPutCommitPlan;
|
|
198
|
+
private commitPlainPutPlan;
|
|
199
|
+
private commitNativeDocumentAppend;
|
|
200
|
+
private createNativeCheckedDocumentAppendCommitFacts;
|
|
201
|
+
private assertNativeModeDocumentAppendCommit;
|
|
202
|
+
private toNativeBackboneDocumentIndexCommitInput;
|
|
203
|
+
private prepareNativeBackboneDocumentIndexCommit;
|
|
204
|
+
private createNativeBackboneDocumentIndexAppendFactsPreparer;
|
|
205
|
+
private commitNativeDocumentAppendPayloadFallback;
|
|
206
|
+
private commitNativeDocumentAppendMany;
|
|
207
|
+
private prepareNativeBackboneDocumentIndexCommitBatch;
|
|
208
|
+
private createDocumentAppendCommitFacts;
|
|
209
|
+
private createDocumentAppendCommitFactsWithLazyContext;
|
|
210
|
+
private createNativeDocumentAppendTransaction;
|
|
211
|
+
private createDocumentAppendCommitFactsBatch;
|
|
212
|
+
private createDocumentAppendCommitFactsWithContext;
|
|
213
|
+
private hasDocumentChangeConsumers;
|
|
214
|
+
private dispatchDocumentChangeIfObserved;
|
|
215
|
+
private nextFromIndexedContext;
|
|
216
|
+
private handlePreparedPlainPutCommit;
|
|
217
|
+
private tryHandlePreparedPlainPutCommitRemovedFromHeads;
|
|
218
|
+
private tryHandlePreparedPlainPutCommitRemovedHashesFromHeads;
|
|
219
|
+
private handlePreparedPlainPutCommitRemoved;
|
|
220
|
+
private handlePreparedPlainPutCommitRemovedHashes;
|
|
221
|
+
private handlePreparedPlainPutManyCommit;
|
|
222
|
+
private collectRemovedDocumentChangeFromIndexedHead;
|
|
223
|
+
private collectRemovedDocumentChangeFromIndexedKey;
|
|
224
|
+
private collectRemovedDocumentChangesFromIndexedHeads;
|
|
225
|
+
private collectRemovedDocumentChangesFromIndexedHeadHashes;
|
|
226
|
+
private collectRemovedDocumentChange;
|
|
227
|
+
private collectRemovedPutChangeFromNativeId;
|
|
228
|
+
private putStrictNativeReceivedDocumentIndexWithContext;
|
|
229
|
+
private putStrictNativeReceivedDocumentIndexStoredWithContext;
|
|
108
230
|
get(id: indexerTypes.Ideable | indexerTypes.IdKey, options?: Omit<GetOptions<T, I, D, true | undefined>, "resolve">): Promise<T | undefined>;
|
|
109
|
-
del(id: indexerTypes.Ideable | indexerTypes.IdKey, options?: SharedAppendOptions<Operation>): Promise<
|
|
110
|
-
|
|
111
|
-
|
|
112
|
-
|
|
113
|
-
handleChanges(change: Change<Operation>, reference?: {
|
|
114
|
-
document: T;
|
|
115
|
-
operation: PutOperation;
|
|
116
|
-
unique?: boolean;
|
|
117
|
-
}): Promise<void>;
|
|
231
|
+
del(id: indexerTypes.Ideable | indexerTypes.IdKey, options?: SharedAppendOptions<Operation>): Promise<DocumentPutResult>;
|
|
232
|
+
private delCompatDocumentBackend;
|
|
233
|
+
private delNativeDocumentBackend;
|
|
234
|
+
handleChanges(change: Change<Operation>, reference?: PutChangeReference<T, I>): Promise<void>;
|
|
118
235
|
/**
|
|
119
236
|
* Count documents locally (default), or estimate the global count.
|
|
120
237
|
*
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"program.d.ts","sourceRoot":"","sources":["../../src/program.ts"],"names":[],"mappings":"AAAA,OAAO,EACN,KAAK,YAAY,EAKjB,MAAM,gBAAgB,CAAC;
|
|
1
|
+
{"version":3,"file":"program.d.ts","sourceRoot":"","sources":["../../src/program.ts"],"names":[],"mappings":"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"}
|