@xyo-network/archivist-abstract 3.6.8 → 3.6.10
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/neutral/index.mjs +50 -98
- package/dist/neutral/index.mjs.map +1 -1
- package/package.json +16 -16
package/dist/neutral/index.mjs
CHANGED
|
@@ -1,33 +1,32 @@
|
|
|
1
|
-
var __defProp = Object.defineProperty;
|
|
2
|
-
var __name = (target, value) => __defProp(target, "name", { value, configurable: true });
|
|
3
|
-
|
|
4
1
|
// src/AbstractArchivist.ts
|
|
5
2
|
import { assertEx } from "@xylabs/assert";
|
|
6
3
|
import { exists } from "@xylabs/exists";
|
|
7
4
|
import { globallyUnique } from "@xylabs/object";
|
|
8
5
|
import { difference } from "@xylabs/set";
|
|
9
|
-
import {
|
|
6
|
+
import {
|
|
7
|
+
ArchivistAllQuerySchema,
|
|
8
|
+
ArchivistClearQuerySchema,
|
|
9
|
+
ArchivistCommitQuerySchema,
|
|
10
|
+
ArchivistConfigSchema,
|
|
11
|
+
ArchivistDeleteQuerySchema,
|
|
12
|
+
ArchivistGetQuerySchema,
|
|
13
|
+
ArchivistInsertQuerySchema,
|
|
14
|
+
ArchivistNextQuerySchema,
|
|
15
|
+
asArchivistInstance,
|
|
16
|
+
isArchivistInstance
|
|
17
|
+
} from "@xyo-network/archivist-model";
|
|
10
18
|
import { QueryBoundWitnessWrapper } from "@xyo-network/boundwitness-wrapper";
|
|
11
19
|
import { AbstractModuleInstance } from "@xyo-network/module-abstract";
|
|
12
20
|
import { duplicateModules } from "@xyo-network/module-model";
|
|
13
21
|
import { PayloadBuilder } from "@xyo-network/payload-builder";
|
|
14
22
|
var NOT_IMPLEMENTED = "Not implemented";
|
|
15
23
|
var AbstractArchivist = class _AbstractArchivist extends AbstractModuleInstance {
|
|
16
|
-
static
|
|
17
|
-
__name(this, "AbstractArchivist");
|
|
18
|
-
}
|
|
19
|
-
static configSchemas = [
|
|
20
|
-
...super.configSchemas,
|
|
21
|
-
ArchivistConfigSchema
|
|
22
|
-
];
|
|
24
|
+
static configSchemas = [...super.configSchemas, ArchivistConfigSchema];
|
|
23
25
|
static defaultConfigSchema = ArchivistConfigSchema;
|
|
24
26
|
static uniqueName = globallyUnique("AbstractArchivist", _AbstractArchivist, "xyo");
|
|
25
27
|
_parentArchivists;
|
|
26
28
|
get queries() {
|
|
27
|
-
return [
|
|
28
|
-
ArchivistGetQuerySchema,
|
|
29
|
-
...super.queries
|
|
30
|
-
];
|
|
29
|
+
return [ArchivistGetQuerySchema, ...super.queries];
|
|
31
30
|
}
|
|
32
31
|
get requireAllParents() {
|
|
33
32
|
return this.config.requireAllParents ?? false;
|
|
@@ -43,9 +42,7 @@ var AbstractArchivist = class _AbstractArchivist extends AbstractModuleInstance
|
|
|
43
42
|
});
|
|
44
43
|
}
|
|
45
44
|
async allQuery(account) {
|
|
46
|
-
const queryPayload = {
|
|
47
|
-
schema: ArchivistAllQuerySchema
|
|
48
|
-
};
|
|
45
|
+
const queryPayload = { schema: ArchivistAllQuerySchema };
|
|
49
46
|
return await this.sendQueryRaw(queryPayload, void 0, account);
|
|
50
47
|
}
|
|
51
48
|
clear() {
|
|
@@ -56,9 +53,7 @@ var AbstractArchivist = class _AbstractArchivist extends AbstractModuleInstance
|
|
|
56
53
|
});
|
|
57
54
|
}
|
|
58
55
|
async clearQuery(account) {
|
|
59
|
-
const queryPayload = {
|
|
60
|
-
schema: ArchivistClearQuerySchema
|
|
61
|
-
};
|
|
56
|
+
const queryPayload = { schema: ArchivistClearQuerySchema };
|
|
62
57
|
return await this.sendQueryRaw(queryPayload, void 0, account);
|
|
63
58
|
}
|
|
64
59
|
commit() {
|
|
@@ -69,9 +64,7 @@ var AbstractArchivist = class _AbstractArchivist extends AbstractModuleInstance
|
|
|
69
64
|
});
|
|
70
65
|
}
|
|
71
66
|
async commitQuery(account) {
|
|
72
|
-
const queryPayload = {
|
|
73
|
-
schema: ArchivistCommitQuerySchema
|
|
74
|
-
};
|
|
67
|
+
const queryPayload = { schema: ArchivistCommitQuerySchema };
|
|
75
68
|
return await this.sendQueryRaw(queryPayload, void 0, account);
|
|
76
69
|
}
|
|
77
70
|
async delete(hashes) {
|
|
@@ -82,10 +75,7 @@ var AbstractArchivist = class _AbstractArchivist extends AbstractModuleInstance
|
|
|
82
75
|
});
|
|
83
76
|
}
|
|
84
77
|
async deleteQuery(hashes, account) {
|
|
85
|
-
const queryPayload = {
|
|
86
|
-
hashes,
|
|
87
|
-
schema: ArchivistDeleteQuerySchema
|
|
88
|
-
};
|
|
78
|
+
const queryPayload = { hashes, schema: ArchivistDeleteQuerySchema };
|
|
89
79
|
return await this.sendQueryRaw(queryPayload, void 0, account);
|
|
90
80
|
}
|
|
91
81
|
async get(hashes) {
|
|
@@ -96,10 +86,7 @@ var AbstractArchivist = class _AbstractArchivist extends AbstractModuleInstance
|
|
|
96
86
|
});
|
|
97
87
|
}
|
|
98
88
|
async getQuery(hashes, account) {
|
|
99
|
-
const queryPayload = {
|
|
100
|
-
hashes,
|
|
101
|
-
schema: ArchivistGetQuerySchema
|
|
102
|
-
};
|
|
89
|
+
const queryPayload = { hashes, schema: ArchivistGetQuerySchema };
|
|
103
90
|
return await this.sendQueryRaw(queryPayload, void 0, account);
|
|
104
91
|
}
|
|
105
92
|
async insert(payloads) {
|
|
@@ -110,9 +97,7 @@ var AbstractArchivist = class _AbstractArchivist extends AbstractModuleInstance
|
|
|
110
97
|
});
|
|
111
98
|
}
|
|
112
99
|
async insertQuery(payloads, account) {
|
|
113
|
-
const queryPayload = {
|
|
114
|
-
schema: ArchivistInsertQuerySchema
|
|
115
|
-
};
|
|
100
|
+
const queryPayload = { schema: ArchivistInsertQuerySchema };
|
|
116
101
|
return await this.sendQueryRaw(queryPayload, payloads, account);
|
|
117
102
|
}
|
|
118
103
|
async next(options) {
|
|
@@ -123,10 +108,7 @@ var AbstractArchivist = class _AbstractArchivist extends AbstractModuleInstance
|
|
|
123
108
|
});
|
|
124
109
|
}
|
|
125
110
|
async nextQuery(options, account) {
|
|
126
|
-
const queryPayload = {
|
|
127
|
-
schema: ArchivistNextQuerySchema,
|
|
128
|
-
...options
|
|
129
|
-
};
|
|
111
|
+
const queryPayload = { schema: ArchivistNextQuerySchema, ...options };
|
|
130
112
|
return await this.sendQueryRaw(queryPayload, void 0, account);
|
|
131
113
|
}
|
|
132
114
|
allHandler() {
|
|
@@ -145,10 +127,7 @@ var AbstractArchivist = class _AbstractArchivist extends AbstractModuleInstance
|
|
|
145
127
|
const emitEvents = config?.emitEvents ?? true;
|
|
146
128
|
const deletedHashes = await this.deleteHandler(hashes);
|
|
147
129
|
if (emitEvents) {
|
|
148
|
-
await this.emit("deleted", {
|
|
149
|
-
hashes: deletedHashes,
|
|
150
|
-
mod: this
|
|
151
|
-
});
|
|
130
|
+
await this.emit("deleted", { hashes: deletedHashes, mod: this });
|
|
152
131
|
}
|
|
153
132
|
return deletedHashes;
|
|
154
133
|
}
|
|
@@ -163,46 +142,31 @@ var AbstractArchivist = class _AbstractArchivist extends AbstractModuleInstance
|
|
|
163
142
|
const foundHashes = new Set(foundPairs.map(([, hash]) => hash));
|
|
164
143
|
const foundPayloads = foundPairs.map(([payload]) => payload);
|
|
165
144
|
const notfound = hashes.filter((hash) => !foundHashes.has(hash));
|
|
166
|
-
return [
|
|
167
|
-
foundPayloads,
|
|
168
|
-
notfound
|
|
169
|
-
];
|
|
145
|
+
return [foundPayloads, notfound];
|
|
170
146
|
}
|
|
171
147
|
async getFromParents(hashes) {
|
|
172
148
|
const parents = Object.values((await this.parentArchivists())?.read ?? {});
|
|
173
|
-
let remainingHashes = [
|
|
174
|
-
...hashes
|
|
175
|
-
];
|
|
149
|
+
let remainingHashes = [...hashes];
|
|
176
150
|
let parentIndex = 0;
|
|
177
151
|
let result = [];
|
|
178
152
|
while (parentIndex < parents.length && remainingHashes.length > 0) {
|
|
179
153
|
const [found, notfound] = await this.getFromParent(remainingHashes, parents[parentIndex]);
|
|
180
|
-
result = [
|
|
181
|
-
...result,
|
|
182
|
-
...found
|
|
183
|
-
];
|
|
154
|
+
result = [...result, ...found];
|
|
184
155
|
remainingHashes = notfound;
|
|
185
156
|
parentIndex++;
|
|
186
157
|
}
|
|
187
|
-
return [
|
|
188
|
-
result,
|
|
189
|
-
remainingHashes
|
|
190
|
-
];
|
|
158
|
+
return [result, remainingHashes];
|
|
191
159
|
}
|
|
192
160
|
getHandler(_hashes) {
|
|
193
161
|
throw new Error(NOT_IMPLEMENTED);
|
|
194
162
|
}
|
|
195
163
|
async getWithConfig(hashes, _config) {
|
|
196
164
|
const requestedHashes = new Set(hashes);
|
|
197
|
-
const gotten = await this.getHandler([
|
|
198
|
-
...requestedHashes
|
|
199
|
-
]);
|
|
165
|
+
const gotten = await this.getHandler([...requestedHashes]);
|
|
200
166
|
const foundPayloads = [];
|
|
201
167
|
const foundHashes = /* @__PURE__ */ new Set();
|
|
202
168
|
for (const payload of gotten) {
|
|
203
|
-
const map = await PayloadBuilder.toAllHashMap([
|
|
204
|
-
payload
|
|
205
|
-
]);
|
|
169
|
+
const map = await PayloadBuilder.toAllHashMap([payload]);
|
|
206
170
|
for (const [key, payload2] of Object.entries(map)) {
|
|
207
171
|
let requestedPayloadFound = false;
|
|
208
172
|
const hash = key;
|
|
@@ -213,17 +177,12 @@ var AbstractArchivist = class _AbstractArchivist extends AbstractModuleInstance
|
|
|
213
177
|
if (requestedPayloadFound) foundPayloads.push(payload2);
|
|
214
178
|
}
|
|
215
179
|
}
|
|
216
|
-
const notFoundHashes = [
|
|
217
|
-
...difference(requestedHashes, foundHashes)
|
|
218
|
-
];
|
|
180
|
+
const notFoundHashes = [...difference(requestedHashes, foundHashes)];
|
|
219
181
|
const [parentFoundPayloads] = await this.getFromParents(notFoundHashes);
|
|
220
182
|
if (this.storeParentReads) {
|
|
221
183
|
await this.insertWithConfig(parentFoundPayloads);
|
|
222
184
|
}
|
|
223
|
-
return PayloadBuilder.omitPrivateStorageMeta([
|
|
224
|
-
...foundPayloads,
|
|
225
|
-
...parentFoundPayloads
|
|
226
|
-
]);
|
|
185
|
+
return PayloadBuilder.omitPrivateStorageMeta([...foundPayloads, ...parentFoundPayloads]);
|
|
227
186
|
}
|
|
228
187
|
insertHandler(_payloads) {
|
|
229
188
|
throw new Error(NOT_IMPLEMENTED);
|
|
@@ -231,7 +190,10 @@ var AbstractArchivist = class _AbstractArchivist extends AbstractModuleInstance
|
|
|
231
190
|
async insertQueryHandler(query, payloads) {
|
|
232
191
|
assertEx(payloads, () => `Missing payloads: ${JSON.stringify(query.payload, null, 2)}`);
|
|
233
192
|
const resolvedPayloads = await PayloadBuilder.filterIncludeByDataHash(payloads, query.payloadHashes);
|
|
234
|
-
assertEx(
|
|
193
|
+
assertEx(
|
|
194
|
+
resolvedPayloads.length === query.payloadHashes.length,
|
|
195
|
+
() => `Could not find some passed hashes [${resolvedPayloads.length} != ${query.payloadHashes.length}]`
|
|
196
|
+
);
|
|
235
197
|
const queryPayload = await query.getQuery();
|
|
236
198
|
const payloadsWithoutQuery = await PayloadBuilder.filterExclude(resolvedPayloads, await PayloadBuilder.dataHash(queryPayload));
|
|
237
199
|
const result = await this.insertWithConfig(payloadsWithoutQuery);
|
|
@@ -250,10 +212,7 @@ var AbstractArchivist = class _AbstractArchivist extends AbstractModuleInstance
|
|
|
250
212
|
await this.writeToParents(insertedPayloads);
|
|
251
213
|
}
|
|
252
214
|
if (emitEvents) {
|
|
253
|
-
await this.emit("inserted", {
|
|
254
|
-
mod: this,
|
|
255
|
-
payloads: insertedPayloads
|
|
256
|
-
});
|
|
215
|
+
await this.emit("inserted", { mod: this, payloads: insertedPayloads });
|
|
257
216
|
}
|
|
258
217
|
return PayloadBuilder.omitPrivateStorageMeta(insertedPayloads);
|
|
259
218
|
}
|
|
@@ -294,9 +253,7 @@ var AbstractArchivist = class _AbstractArchivist extends AbstractModuleInstance
|
|
|
294
253
|
}
|
|
295
254
|
case ArchivistDeleteQuerySchema: {
|
|
296
255
|
const resultPayload = {
|
|
297
|
-
hashes: [
|
|
298
|
-
...await this.deleteWithConfig(queryPayload.hashes)
|
|
299
|
-
],
|
|
256
|
+
hashes: [...await this.deleteWithConfig(queryPayload.hashes)],
|
|
300
257
|
schema: ArchivistDeleteQuerySchema
|
|
301
258
|
};
|
|
302
259
|
resultPayloads.push(await PayloadBuilder.addStorageMeta(resultPayload));
|
|
@@ -317,17 +274,13 @@ var AbstractArchivist = class _AbstractArchivist extends AbstractModuleInstance
|
|
|
317
274
|
default: {
|
|
318
275
|
const result = await super.queryHandler(sanitizedQuery, sanitizedPayloads);
|
|
319
276
|
if (this.config.storeQueries) {
|
|
320
|
-
await this.insertWithConfig([
|
|
321
|
-
sanitizedQuery
|
|
322
|
-
]);
|
|
277
|
+
await this.insertWithConfig([sanitizedQuery]);
|
|
323
278
|
}
|
|
324
279
|
return PayloadBuilder.omitPrivateStorageMeta(result);
|
|
325
280
|
}
|
|
326
281
|
}
|
|
327
282
|
if (this.config.storeQueries) {
|
|
328
|
-
await this.insertWithConfig([
|
|
329
|
-
sanitizedQuery
|
|
330
|
-
]);
|
|
283
|
+
await this.insertWithConfig([sanitizedQuery]);
|
|
331
284
|
}
|
|
332
285
|
return PayloadBuilder.omitPrivateStorageMeta(resultPayloads);
|
|
333
286
|
}
|
|
@@ -336,25 +289,24 @@ var AbstractArchivist = class _AbstractArchivist extends AbstractModuleInstance
|
|
|
336
289
|
}
|
|
337
290
|
async writeToParents(payloads) {
|
|
338
291
|
const parents = await this.parentArchivists();
|
|
339
|
-
return (await Promise.all(
|
|
340
|
-
|
|
341
|
-
|
|
292
|
+
return (await Promise.all(
|
|
293
|
+
Object.values(parents.write ?? {}).map(async (parent) => {
|
|
294
|
+
return parent ? await this.writeToParent(parent, payloads) : void 0;
|
|
295
|
+
})
|
|
296
|
+
)).filter(exists).flat();
|
|
342
297
|
}
|
|
343
298
|
async resolveArchivists(archivists = []) {
|
|
344
299
|
const archivistModules = [
|
|
345
|
-
...await this.resolve({
|
|
346
|
-
|
|
347
|
-
}),
|
|
348
|
-
...await this.resolve({
|
|
349
|
-
name: archivists
|
|
350
|
-
})
|
|
300
|
+
...await this.resolve({ address: archivists }),
|
|
301
|
+
...await this.resolve({ name: archivists })
|
|
351
302
|
].filter(duplicateModules);
|
|
352
|
-
assertEx(
|
|
303
|
+
assertEx(
|
|
304
|
+
!this.requireAllParents || archivistModules.length === archivists.length,
|
|
305
|
+
() => `Failed to find some archivists (set allRequired to false if ok): [${archivists.filter((archivist) => archivistModules.map((mod) => !(mod.address === archivist || mod.modName === archivist)))}]`
|
|
306
|
+
);
|
|
353
307
|
return archivistModules.reduce((prev, mod) => {
|
|
354
308
|
prev[mod.address] = asArchivistInstance(mod, () => {
|
|
355
|
-
isArchivistInstance(mod, {
|
|
356
|
-
log: console
|
|
357
|
-
});
|
|
309
|
+
isArchivistInstance(mod, { log: console });
|
|
358
310
|
return `Unable to cast resolved module to an archivist: [${mod.address}, ${mod.modName}, ${mod.config.schema})}]`;
|
|
359
311
|
});
|
|
360
312
|
return prev;
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"sources":["../../src/AbstractArchivist.ts"],"sourcesContent":["import { assertEx } from '@xylabs/assert'\nimport { exists } from '@xylabs/exists'\nimport { type Address, type Hash } from '@xylabs/hex'\nimport { globallyUnique } from '@xylabs/object'\nimport type { Promisable, PromisableArray } from '@xylabs/promise'\nimport { difference } from '@xylabs/set'\nimport type { AccountInstance } from '@xyo-network/account-model'\nimport type {\n ArchivistAllQuery,\n ArchivistClearQuery,\n ArchivistCommitQuery,\n ArchivistDeleteQuery,\n ArchivistGetQuery,\n ArchivistInsertQuery,\n ArchivistInstance,\n ArchivistModuleEventData,\n ArchivistNextOptions,\n ArchivistNextQuery,\n ArchivistParams,\n ArchivistQueries,\n AttachableArchivistInstance,\n} from '@xyo-network/archivist-model'\nimport {\n ArchivistAllQuerySchema,\n ArchivistClearQuerySchema,\n ArchivistCommitQuerySchema,\n ArchivistConfigSchema,\n ArchivistDeleteQuerySchema,\n ArchivistGetQuerySchema,\n ArchivistInsertQuerySchema,\n ArchivistNextQuerySchema,\n asArchivistInstance,\n isArchivistInstance,\n} from '@xyo-network/archivist-model'\nimport type { BoundWitness, QueryBoundWitness } from '@xyo-network/boundwitness-model'\nimport { QueryBoundWitnessWrapper } from '@xyo-network/boundwitness-wrapper'\nimport { AbstractModuleInstance } from '@xyo-network/module-abstract'\nimport type {\n ModuleConfig, ModuleIdentifier, ModuleName, ModuleQueryHandlerResult, ModuleQueryResult,\n} from '@xyo-network/module-model'\nimport { duplicateModules } from '@xyo-network/module-model'\nimport { PayloadBuilder } from '@xyo-network/payload-builder'\nimport type {\n Payload, Schema, WithStorageMeta,\n} from '@xyo-network/payload-model'\n\nconst NOT_IMPLEMENTED = 'Not implemented' as const\n\nexport interface ActionConfig {\n emitEvents?: boolean\n}\n\nexport interface InsertConfig extends ActionConfig {\n writeToParents?: boolean\n}\n\nexport interface ArchivistParentInstances {\n commit?: Record<string, ArchivistInstance>\n read?: Record<string, ArchivistInstance>\n write?: Record<string, ArchivistInstance>\n}\n\nexport abstract class AbstractArchivist<\n TParams extends ArchivistParams = ArchivistParams,\n TEventData extends ArchivistModuleEventData = ArchivistModuleEventData,\n>\n extends AbstractModuleInstance<TParams, TEventData>\n implements AttachableArchivistInstance<TParams, TEventData, Payload> {\n static override readonly configSchemas: Schema[] = [...super.configSchemas, ArchivistConfigSchema]\n static override readonly defaultConfigSchema: Schema = ArchivistConfigSchema\n static override readonly uniqueName = globallyUnique('AbstractArchivist', AbstractArchivist, 'xyo')\n private _parentArchivists?: ArchivistParentInstances\n\n override get queries(): string[] {\n return [ArchivistGetQuerySchema, ...super.queries]\n }\n\n get requireAllParents() {\n return this.config.requireAllParents ?? false\n }\n\n protected get storeParentReads() {\n return !!this.config?.storeParentReads\n }\n\n all(): PromisableArray<WithStorageMeta<Payload>> {\n this._noOverride('all')\n return this.busy(async () => {\n await this.started('throw')\n return PayloadBuilder.omitPrivateStorageMeta(await this.allHandler())\n })\n }\n\n async allQuery(account: AccountInstance): Promise<ModuleQueryResult> {\n const queryPayload: ArchivistAllQuery = { schema: ArchivistAllQuerySchema }\n return await this.sendQueryRaw(queryPayload, undefined, account)\n }\n\n clear(): Promisable<void> {\n this._noOverride('clear')\n return this.busy(async () => {\n await this.started('throw')\n return await this.clearHandler()\n })\n }\n\n async clearQuery(account: AccountInstance): Promise<ModuleQueryResult> {\n const queryPayload: ArchivistClearQuery = { schema: ArchivistClearQuerySchema }\n return await this.sendQueryRaw(queryPayload, undefined, account)\n }\n\n commit(): Promisable<BoundWitness[]> {\n this._noOverride('commit')\n return this.busy(async () => {\n await this.started('throw')\n return await this.commitHandler()\n })\n }\n\n async commitQuery(account: AccountInstance): Promise<ModuleQueryResult> {\n const queryPayload: ArchivistCommitQuery = { schema: ArchivistCommitQuerySchema }\n return await this.sendQueryRaw(queryPayload, undefined, account)\n }\n\n async delete(hashes: Hash[]): Promise<Hash[]> {\n this._noOverride('delete')\n return await this.busy(async () => {\n await this.started('throw')\n return await this.deleteWithConfig(hashes)\n })\n }\n\n async deleteQuery(hashes: Hash[], account?: AccountInstance): Promise<ModuleQueryResult> {\n const queryPayload: ArchivistDeleteQuery = { hashes, schema: ArchivistDeleteQuerySchema }\n return await this.sendQueryRaw(queryPayload, undefined, account)\n }\n\n async get(hashes: Hash[]): Promise<WithStorageMeta<Payload>[]> {\n this._noOverride('get')\n return await this.busy(async () => {\n await this.started('throw')\n return await this.getWithConfig(hashes)\n })\n }\n\n async getQuery(hashes: Hash[], account?: AccountInstance): Promise<ModuleQueryResult> {\n const queryPayload: ArchivistGetQuery = { hashes, schema: ArchivistGetQuerySchema }\n return await this.sendQueryRaw(queryPayload, undefined, account)\n }\n\n async insert(payloads: Payload[]): Promise<WithStorageMeta<Payload>[]> {\n this._noOverride('insert')\n return await this.busy(async () => {\n await this.started('throw')\n return await this.insertWithConfig(PayloadBuilder.omitStorageMeta(payloads))\n })\n }\n\n async insertQuery(payloads: Payload[], account?: AccountInstance): Promise<ModuleQueryResult> {\n const queryPayload: ArchivistInsertQuery = { schema: ArchivistInsertQuerySchema }\n return await this.sendQueryRaw(queryPayload, payloads, account)\n }\n\n async next(options?: ArchivistNextOptions): Promise<WithStorageMeta<Payload>[]> {\n this._noOverride('next')\n return await this.busy(async () => {\n await this.started('throw')\n return await this.nextWithConfig(options)\n })\n }\n\n async nextQuery(options?: ArchivistNextOptions, account?: AccountInstance): Promise<ModuleQueryResult> {\n const queryPayload: ArchivistNextQuery = { schema: ArchivistNextQuerySchema, ...options }\n return await this.sendQueryRaw(queryPayload, undefined, account)\n }\n\n protected allHandler(): PromisableArray<WithStorageMeta<Payload>> {\n throw new Error(NOT_IMPLEMENTED)\n }\n\n protected clearHandler(): Promisable<void> {\n throw new Error(NOT_IMPLEMENTED)\n }\n\n protected commitHandler(): Promisable<BoundWitness[]> {\n throw new Error(NOT_IMPLEMENTED)\n }\n\n protected deleteHandler(_hashes: Hash[]): PromisableArray<Hash> {\n throw new Error(NOT_IMPLEMENTED)\n }\n\n protected async deleteWithConfig(hashes: Hash[], config?: ActionConfig): Promise<Hash[]> {\n const emitEvents = config?.emitEvents ?? true\n\n const deletedHashes = await this.deleteHandler(hashes)\n\n if (emitEvents) {\n await this.emit('deleted', { hashes: deletedHashes, mod: this })\n }\n\n return deletedHashes\n }\n\n protected async getFromParent(hashes: Hash[], archivist: ArchivistInstance): Promise<[WithStorageMeta<Payload>[], Hash[]]> {\n const foundPairs = (await PayloadBuilder.dataHashPairs(await archivist.get(hashes))).filter(([, hash]) => {\n const askedFor = hashes.includes(hash)\n if (!askedFor) {\n console.warn(`Parent returned payload with hash not asked for: ${hash}`)\n // throw Error(`Parent returned payload with hash not asked for: ${hash}`)\n }\n return askedFor\n })\n\n const foundHashes = new Set(foundPairs.map(([, hash]) => hash))\n const foundPayloads = foundPairs.map(([payload]) => payload)\n\n const notfound = hashes.filter(hash => !foundHashes.has(hash))\n return [foundPayloads, notfound]\n }\n\n protected async getFromParents(hashes: Hash[]): Promise<[WithStorageMeta<Payload>[], Hash[]]> {\n const parents = Object.values((await this.parentArchivists())?.read ?? {})\n let remainingHashes = [...hashes]\n let parentIndex = 0\n let result: WithStorageMeta<Payload>[] = []\n\n // NOTE: intentionally doing this serially\n while (parentIndex < parents.length && remainingHashes.length > 0) {\n const [found, notfound] = await this.getFromParent(remainingHashes, parents[parentIndex])\n result = [...result, ...found]\n remainingHashes = notfound\n parentIndex++\n }\n return [result, remainingHashes]\n }\n\n protected getHandler(_hashes: Hash[]): Promisable<WithStorageMeta<Payload>[]> {\n throw new Error(NOT_IMPLEMENTED)\n }\n\n protected async getWithConfig(hashes: Hash[], _config?: InsertConfig): Promise<WithStorageMeta<Payload>[]> {\n // Filter out duplicates\n const requestedHashes = new Set(hashes)\n\n // Attempt to find the payloads in the store\n const gotten = await this.getHandler([...requestedHashes])\n\n // Do not just blindly return what the archivist told us but\n // ensure to only return requested payloads and keep track of\n // the ones it did not find so we can ask the parents.\n const foundPayloads: WithStorageMeta<Payload>[] = []\n const foundHashes = new Set<Hash>()\n\n // NOTE: We are iterating over the returned result from the archivist\n // (not the array of hashes passed in) to preserve the natural order of the\n // hashes as returned by the archivist as that should loosely\n // correspond to the order when iterated and the symmetry will\n // be helpful for debugging\n for (const payload of gotten) {\n // Compute the hashes for this payload\n const map = await PayloadBuilder.toAllHashMap([payload])\n for (const [key, payload] of Object.entries(map)) {\n let requestedPayloadFound = false\n const hash = key as Hash // NOTE: Required cast as Object.entries always returns string keys\n // If this hash was requested\n if (\n requestedHashes.has(hash) // Indicate that we found it (but do not insert it yet). Since\n // one payload could satisfy two requested hashes (vit its dataHash\n // & rootHash) we only want to insert that payload once but we want\n // to keep track of all the hashes it satisfies so we can ask th\n // parents for the ones we did not find\n && !foundHashes.has(hash)\n ) {\n requestedPayloadFound = true\n // Add it to the list of found hashes\n foundHashes.add(hash)\n }\n if (requestedPayloadFound) foundPayloads.push(payload)\n }\n }\n // For all the hashes we did not find, ask the parents\n const notFoundHashes = [...difference(requestedHashes, foundHashes)]\n const [parentFoundPayloads] = await this.getFromParents(notFoundHashes)\n\n if (this.storeParentReads) {\n await this.insertWithConfig(parentFoundPayloads)\n }\n return PayloadBuilder.omitPrivateStorageMeta([...foundPayloads, ...parentFoundPayloads])\n }\n\n protected insertHandler(_payloads: WithStorageMeta<Payload>[]): Promisable<WithStorageMeta<Payload>[]> {\n throw new Error(NOT_IMPLEMENTED)\n }\n\n protected async insertQueryHandler<T extends QueryBoundWitnessWrapper = QueryBoundWitnessWrapper>(query: T, payloads?: Payload[]) {\n assertEx(payloads, () => `Missing payloads: ${JSON.stringify(query.payload, null, 2)}`)\n const resolvedPayloads = await PayloadBuilder.filterIncludeByDataHash(payloads, query.payloadHashes)\n assertEx(\n resolvedPayloads.length === query.payloadHashes.length,\n () => `Could not find some passed hashes [${resolvedPayloads.length} != ${query.payloadHashes.length}]`,\n )\n const queryPayload = await query.getQuery()\n const payloadsWithoutQuery = await PayloadBuilder.filterExclude(resolvedPayloads, await PayloadBuilder.dataHash(queryPayload))\n const result = await this.insertWithConfig(payloadsWithoutQuery)\n return result\n }\n\n protected async insertWithConfig(payloads: Payload[], config?: InsertConfig): Promise<WithStorageMeta<Payload>[]> {\n const emitEvents = config?.emitEvents ?? true\n const writeToParents = config?.writeToParents ?? true\n\n // remove the existing payloads\n const withStorageMeta = await PayloadBuilder.addStorageMeta(payloads)\n const hashes = withStorageMeta.map(p => p._dataHash)\n const existingPayloads = await this.getWithConfig(hashes)\n const existingHashes = new Set(existingPayloads.map(p => p._hash))\n const payloadsToInsert = withStorageMeta.filter(p => !existingHashes.has(p._hash))\n\n const insertedPayloads = await this.insertHandler(payloadsToInsert)\n\n if (writeToParents) {\n await this.writeToParents(insertedPayloads)\n }\n if (emitEvents) {\n await this.emit('inserted', { mod: this, payloads: insertedPayloads })\n }\n\n return PayloadBuilder.omitPrivateStorageMeta(insertedPayloads)\n }\n\n protected nextHandler(_options?: ArchivistNextOptions): Promisable<WithStorageMeta<Payload>[]> {\n throw new Error(NOT_IMPLEMENTED)\n }\n\n protected async nextWithConfig(options?: ArchivistNextOptions, _config?: InsertConfig): Promise<WithStorageMeta<Payload>[]> {\n const foundPayloads = await this.nextHandler(options)\n return PayloadBuilder.omitPrivateStorageMeta(foundPayloads)\n }\n\n protected async parentArchivists() {\n this._parentArchivists = this._parentArchivists ?? {\n commit: await this.resolveArchivists(this.config?.parents?.commit),\n read: await this.resolveArchivists(this.config?.parents?.read),\n write: await this.resolveArchivists(this.config?.parents?.write),\n }\n return assertEx(this._parentArchivists)\n }\n\n protected override async queryHandler<T extends QueryBoundWitness = QueryBoundWitness, TConfig extends ModuleConfig = ModuleConfig>(\n query: T,\n payloads: Payload[],\n queryConfig?: TConfig,\n ): Promise<ModuleQueryHandlerResult> {\n const sanitizedQuery = PayloadBuilder.omitStorageMeta(query)\n const sanitizedPayloads = PayloadBuilder.omitStorageMeta(payloads)\n const wrappedQuery = QueryBoundWitnessWrapper.parseQuery<ArchivistQueries>(sanitizedQuery, sanitizedPayloads)\n const queryPayload = await wrappedQuery.getQuery()\n assertEx(await this.queryable(sanitizedQuery, sanitizedPayloads, queryConfig))\n const resultPayloads: Payload[] = []\n\n switch (queryPayload.schema) {\n case ArchivistAllQuerySchema: {\n resultPayloads.push(...(await this.allHandler()))\n break\n }\n case ArchivistClearQuerySchema: {\n await this.clearHandler()\n break\n }\n case ArchivistCommitQuerySchema: {\n resultPayloads.push(...(await this.commitHandler()))\n break\n }\n case ArchivistDeleteQuerySchema: {\n const resultPayload: ArchivistDeleteQuery = {\n hashes: [...(await this.deleteWithConfig(queryPayload.hashes))],\n schema: ArchivistDeleteQuerySchema,\n }\n resultPayloads.push(await PayloadBuilder.addStorageMeta(resultPayload))\n break\n }\n case ArchivistGetQuerySchema: {\n resultPayloads.push(...(await this.getWithConfig(queryPayload.hashes ?? [])))\n break\n }\n case ArchivistInsertQuerySchema: {\n resultPayloads.push(...(await this.insertQueryHandler(wrappedQuery, sanitizedPayloads)))\n break\n }\n case ArchivistNextQuerySchema: {\n resultPayloads.push(...(await this.nextHandler(queryPayload)))\n break\n }\n default: {\n const result = await super.queryHandler(sanitizedQuery, sanitizedPayloads)\n if (this.config.storeQueries) {\n await this.insertWithConfig([sanitizedQuery])\n }\n return PayloadBuilder.omitPrivateStorageMeta(result)\n }\n }\n if (this.config.storeQueries) {\n await this.insertWithConfig([sanitizedQuery])\n }\n return PayloadBuilder.omitPrivateStorageMeta(resultPayloads)\n }\n\n protected async writeToParent(parent: ArchivistInstance, payloads: Payload[]): Promise<Payload[]> {\n return await parent.insert(PayloadBuilder.omitStorageMeta(payloads))\n }\n\n protected async writeToParents(payloads: Payload[]): Promise<Payload[]> {\n const parents = await this.parentArchivists()\n return (\n await Promise.all(\n Object.values(parents.write ?? {}).map(async (parent) => {\n return parent ? await this.writeToParent(parent, payloads) : undefined\n }),\n )\n ).filter(exists).flat()\n }\n\n private async resolveArchivists(archivists: ModuleIdentifier[] = []) {\n const archivistModules = [\n ...(await this.resolve({ address: archivists as Address[] })),\n ...(await this.resolve({ name: archivists as ModuleName[] })),\n ].filter(duplicateModules)\n\n assertEx(\n !this.requireAllParents || archivistModules.length === archivists.length,\n () =>\n `Failed to find some archivists (set allRequired to false if ok): [${archivists.filter(archivist =>\n archivistModules.map(mod => !(mod.address === archivist || mod.modName === archivist)))}]`,\n )\n\n // eslint-disable-next-line unicorn/no-array-reduce\n return archivistModules.reduce<Record<string, ArchivistInstance>>((prev, mod) => {\n prev[mod.address] = asArchivistInstance(mod, () => {\n isArchivistInstance(mod, { log: console })\n return `Unable to cast resolved module to an archivist: [${mod.address}, ${mod.modName}, ${mod.config.schema})}]`\n })\n\n return prev\n }, {})\n }\n}\n"],"mappings":"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","names":["assertEx","exists","globallyUnique","difference","ArchivistAllQuerySchema","ArchivistClearQuerySchema","ArchivistCommitQuerySchema","ArchivistConfigSchema","ArchivistDeleteQuerySchema","ArchivistGetQuerySchema","ArchivistInsertQuerySchema","ArchivistNextQuerySchema","asArchivistInstance","isArchivistInstance","QueryBoundWitnessWrapper","AbstractModuleInstance","duplicateModules","PayloadBuilder","NOT_IMPLEMENTED","AbstractArchivist","AbstractModuleInstance","configSchemas","ArchivistConfigSchema","defaultConfigSchema","uniqueName","globallyUnique","_parentArchivists","queries","ArchivistGetQuerySchema","requireAllParents","config","storeParentReads","all","_noOverride","busy","started","PayloadBuilder","omitPrivateStorageMeta","allHandler","allQuery","account","queryPayload","schema","ArchivistAllQuerySchema","sendQueryRaw","undefined","clear","clearHandler","clearQuery","ArchivistClearQuerySchema","commit","commitHandler","commitQuery","ArchivistCommitQuerySchema","delete","hashes","deleteWithConfig","deleteQuery","ArchivistDeleteQuerySchema","get","getWithConfig","getQuery","insert","payloads","insertWithConfig","omitStorageMeta","insertQuery","ArchivistInsertQuerySchema","next","options","nextWithConfig","nextQuery","ArchivistNextQuerySchema","Error","deleteHandler","_hashes","emitEvents","deletedHashes","emit","mod","getFromParent","archivist","foundPairs","dataHashPairs","filter","hash","askedFor","includes","console","warn","foundHashes","Set","map","foundPayloads","payload","notfound","has","getFromParents","parents","Object","values","parentArchivists","read","remainingHashes","parentIndex","result","length","found","getHandler","_config","requestedHashes","gotten","toAllHashMap","key","entries","requestedPayloadFound","add","push","notFoundHashes","difference","parentFoundPayloads","insertHandler","_payloads","insertQueryHandler","query","assertEx","JSON","stringify","resolvedPayloads","filterIncludeByDataHash","payloadHashes","payloadsWithoutQuery","filterExclude","dataHash","writeToParents","withStorageMeta","addStorageMeta","p","_dataHash","existingPayloads","existingHashes","_hash","payloadsToInsert","insertedPayloads","nextHandler","_options","resolveArchivists","write","queryHandler","queryConfig","sanitizedQuery","sanitizedPayloads","wrappedQuery","QueryBoundWitnessWrapper","parseQuery","queryable","resultPayloads","resultPayload","storeQueries","writeToParent","parent","Promise","exists","flat","archivists","archivistModules","resolve","address","name","duplicateModules","modName","reduce","prev","asArchivistInstance","isArchivistInstance","log"]}
|
|
1
|
+
{"version":3,"sources":["../../src/AbstractArchivist.ts"],"sourcesContent":["import { assertEx } from '@xylabs/assert'\nimport { exists } from '@xylabs/exists'\nimport { type Address, type Hash } from '@xylabs/hex'\nimport { globallyUnique } from '@xylabs/object'\nimport type { Promisable, PromisableArray } from '@xylabs/promise'\nimport { difference } from '@xylabs/set'\nimport type { AccountInstance } from '@xyo-network/account-model'\nimport type {\n ArchivistAllQuery,\n ArchivistClearQuery,\n ArchivistCommitQuery,\n ArchivistDeleteQuery,\n ArchivistGetQuery,\n ArchivistInsertQuery,\n ArchivistInstance,\n ArchivistModuleEventData,\n ArchivistNextOptions,\n ArchivistNextQuery,\n ArchivistParams,\n ArchivistQueries,\n AttachableArchivistInstance,\n} from '@xyo-network/archivist-model'\nimport {\n ArchivistAllQuerySchema,\n ArchivistClearQuerySchema,\n ArchivistCommitQuerySchema,\n ArchivistConfigSchema,\n ArchivistDeleteQuerySchema,\n ArchivistGetQuerySchema,\n ArchivistInsertQuerySchema,\n ArchivistNextQuerySchema,\n asArchivistInstance,\n isArchivistInstance,\n} from '@xyo-network/archivist-model'\nimport type { BoundWitness, QueryBoundWitness } from '@xyo-network/boundwitness-model'\nimport { QueryBoundWitnessWrapper } from '@xyo-network/boundwitness-wrapper'\nimport { AbstractModuleInstance } from '@xyo-network/module-abstract'\nimport type {\n ModuleConfig, ModuleIdentifier, ModuleName, ModuleQueryHandlerResult, ModuleQueryResult,\n} from '@xyo-network/module-model'\nimport { duplicateModules } from '@xyo-network/module-model'\nimport { PayloadBuilder } from '@xyo-network/payload-builder'\nimport type {\n Payload, Schema, WithStorageMeta,\n} from '@xyo-network/payload-model'\n\nconst NOT_IMPLEMENTED = 'Not implemented' as const\n\nexport interface ActionConfig {\n emitEvents?: boolean\n}\n\nexport interface InsertConfig extends ActionConfig {\n writeToParents?: boolean\n}\n\nexport interface ArchivistParentInstances {\n commit?: Record<string, ArchivistInstance>\n read?: Record<string, ArchivistInstance>\n write?: Record<string, ArchivistInstance>\n}\n\nexport abstract class AbstractArchivist<\n TParams extends ArchivistParams = ArchivistParams,\n TEventData extends ArchivistModuleEventData = ArchivistModuleEventData,\n>\n extends AbstractModuleInstance<TParams, TEventData>\n implements AttachableArchivistInstance<TParams, TEventData, Payload> {\n static override readonly configSchemas: Schema[] = [...super.configSchemas, ArchivistConfigSchema]\n static override readonly defaultConfigSchema: Schema = ArchivistConfigSchema\n static override readonly uniqueName = globallyUnique('AbstractArchivist', AbstractArchivist, 'xyo')\n private _parentArchivists?: ArchivistParentInstances\n\n override get queries(): string[] {\n return [ArchivistGetQuerySchema, ...super.queries]\n }\n\n get requireAllParents() {\n return this.config.requireAllParents ?? false\n }\n\n protected get storeParentReads() {\n return !!this.config?.storeParentReads\n }\n\n all(): PromisableArray<WithStorageMeta<Payload>> {\n this._noOverride('all')\n return this.busy(async () => {\n await this.started('throw')\n return PayloadBuilder.omitPrivateStorageMeta(await this.allHandler())\n })\n }\n\n async allQuery(account: AccountInstance): Promise<ModuleQueryResult> {\n const queryPayload: ArchivistAllQuery = { schema: ArchivistAllQuerySchema }\n return await this.sendQueryRaw(queryPayload, undefined, account)\n }\n\n clear(): Promisable<void> {\n this._noOverride('clear')\n return this.busy(async () => {\n await this.started('throw')\n return await this.clearHandler()\n })\n }\n\n async clearQuery(account: AccountInstance): Promise<ModuleQueryResult> {\n const queryPayload: ArchivistClearQuery = { schema: ArchivistClearQuerySchema }\n return await this.sendQueryRaw(queryPayload, undefined, account)\n }\n\n commit(): Promisable<BoundWitness[]> {\n this._noOverride('commit')\n return this.busy(async () => {\n await this.started('throw')\n return await this.commitHandler()\n })\n }\n\n async commitQuery(account: AccountInstance): Promise<ModuleQueryResult> {\n const queryPayload: ArchivistCommitQuery = { schema: ArchivistCommitQuerySchema }\n return await this.sendQueryRaw(queryPayload, undefined, account)\n }\n\n async delete(hashes: Hash[]): Promise<Hash[]> {\n this._noOverride('delete')\n return await this.busy(async () => {\n await this.started('throw')\n return await this.deleteWithConfig(hashes)\n })\n }\n\n async deleteQuery(hashes: Hash[], account?: AccountInstance): Promise<ModuleQueryResult> {\n const queryPayload: ArchivistDeleteQuery = { hashes, schema: ArchivistDeleteQuerySchema }\n return await this.sendQueryRaw(queryPayload, undefined, account)\n }\n\n async get(hashes: Hash[]): Promise<WithStorageMeta<Payload>[]> {\n this._noOverride('get')\n return await this.busy(async () => {\n await this.started('throw')\n return await this.getWithConfig(hashes)\n })\n }\n\n async getQuery(hashes: Hash[], account?: AccountInstance): Promise<ModuleQueryResult> {\n const queryPayload: ArchivistGetQuery = { hashes, schema: ArchivistGetQuerySchema }\n return await this.sendQueryRaw(queryPayload, undefined, account)\n }\n\n async insert(payloads: Payload[]): Promise<WithStorageMeta<Payload>[]> {\n this._noOverride('insert')\n return await this.busy(async () => {\n await this.started('throw')\n return await this.insertWithConfig(PayloadBuilder.omitStorageMeta(payloads))\n })\n }\n\n async insertQuery(payloads: Payload[], account?: AccountInstance): Promise<ModuleQueryResult> {\n const queryPayload: ArchivistInsertQuery = { schema: ArchivistInsertQuerySchema }\n return await this.sendQueryRaw(queryPayload, payloads, account)\n }\n\n async next(options?: ArchivistNextOptions): Promise<WithStorageMeta<Payload>[]> {\n this._noOverride('next')\n return await this.busy(async () => {\n await this.started('throw')\n return await this.nextWithConfig(options)\n })\n }\n\n async nextQuery(options?: ArchivistNextOptions, account?: AccountInstance): Promise<ModuleQueryResult> {\n const queryPayload: ArchivistNextQuery = { schema: ArchivistNextQuerySchema, ...options }\n return await this.sendQueryRaw(queryPayload, undefined, account)\n }\n\n protected allHandler(): PromisableArray<WithStorageMeta<Payload>> {\n throw new Error(NOT_IMPLEMENTED)\n }\n\n protected clearHandler(): Promisable<void> {\n throw new Error(NOT_IMPLEMENTED)\n }\n\n protected commitHandler(): Promisable<BoundWitness[]> {\n throw new Error(NOT_IMPLEMENTED)\n }\n\n protected deleteHandler(_hashes: Hash[]): PromisableArray<Hash> {\n throw new Error(NOT_IMPLEMENTED)\n }\n\n protected async deleteWithConfig(hashes: Hash[], config?: ActionConfig): Promise<Hash[]> {\n const emitEvents = config?.emitEvents ?? true\n\n const deletedHashes = await this.deleteHandler(hashes)\n\n if (emitEvents) {\n await this.emit('deleted', { hashes: deletedHashes, mod: this })\n }\n\n return deletedHashes\n }\n\n protected async getFromParent(hashes: Hash[], archivist: ArchivistInstance): Promise<[WithStorageMeta<Payload>[], Hash[]]> {\n const foundPairs = (await PayloadBuilder.dataHashPairs(await archivist.get(hashes))).filter(([, hash]) => {\n const askedFor = hashes.includes(hash)\n if (!askedFor) {\n console.warn(`Parent returned payload with hash not asked for: ${hash}`)\n // throw Error(`Parent returned payload with hash not asked for: ${hash}`)\n }\n return askedFor\n })\n\n const foundHashes = new Set(foundPairs.map(([, hash]) => hash))\n const foundPayloads = foundPairs.map(([payload]) => payload)\n\n const notfound = hashes.filter(hash => !foundHashes.has(hash))\n return [foundPayloads, notfound]\n }\n\n protected async getFromParents(hashes: Hash[]): Promise<[WithStorageMeta<Payload>[], Hash[]]> {\n const parents = Object.values((await this.parentArchivists())?.read ?? {})\n let remainingHashes = [...hashes]\n let parentIndex = 0\n let result: WithStorageMeta<Payload>[] = []\n\n // NOTE: intentionally doing this serially\n while (parentIndex < parents.length && remainingHashes.length > 0) {\n const [found, notfound] = await this.getFromParent(remainingHashes, parents[parentIndex])\n result = [...result, ...found]\n remainingHashes = notfound\n parentIndex++\n }\n return [result, remainingHashes]\n }\n\n protected getHandler(_hashes: Hash[]): Promisable<WithStorageMeta<Payload>[]> {\n throw new Error(NOT_IMPLEMENTED)\n }\n\n protected async getWithConfig(hashes: Hash[], _config?: InsertConfig): Promise<WithStorageMeta<Payload>[]> {\n // Filter out duplicates\n const requestedHashes = new Set(hashes)\n\n // Attempt to find the payloads in the store\n const gotten = await this.getHandler([...requestedHashes])\n\n // Do not just blindly return what the archivist told us but\n // ensure to only return requested payloads and keep track of\n // the ones it did not find so we can ask the parents.\n const foundPayloads: WithStorageMeta<Payload>[] = []\n const foundHashes = new Set<Hash>()\n\n // NOTE: We are iterating over the returned result from the archivist\n // (not the array of hashes passed in) to preserve the natural order of the\n // hashes as returned by the archivist as that should loosely\n // correspond to the order when iterated and the symmetry will\n // be helpful for debugging\n for (const payload of gotten) {\n // Compute the hashes for this payload\n const map = await PayloadBuilder.toAllHashMap([payload])\n for (const [key, payload] of Object.entries(map)) {\n let requestedPayloadFound = false\n const hash = key as Hash // NOTE: Required cast as Object.entries always returns string keys\n // If this hash was requested\n if (\n requestedHashes.has(hash) // Indicate that we found it (but do not insert it yet). Since\n // one payload could satisfy two requested hashes (vit its dataHash\n // & rootHash) we only want to insert that payload once but we want\n // to keep track of all the hashes it satisfies so we can ask th\n // parents for the ones we did not find\n && !foundHashes.has(hash)\n ) {\n requestedPayloadFound = true\n // Add it to the list of found hashes\n foundHashes.add(hash)\n }\n if (requestedPayloadFound) foundPayloads.push(payload)\n }\n }\n // For all the hashes we did not find, ask the parents\n const notFoundHashes = [...difference(requestedHashes, foundHashes)]\n const [parentFoundPayloads] = await this.getFromParents(notFoundHashes)\n\n if (this.storeParentReads) {\n await this.insertWithConfig(parentFoundPayloads)\n }\n return PayloadBuilder.omitPrivateStorageMeta([...foundPayloads, ...parentFoundPayloads])\n }\n\n protected insertHandler(_payloads: WithStorageMeta<Payload>[]): Promisable<WithStorageMeta<Payload>[]> {\n throw new Error(NOT_IMPLEMENTED)\n }\n\n protected async insertQueryHandler<T extends QueryBoundWitnessWrapper = QueryBoundWitnessWrapper>(query: T, payloads?: Payload[]) {\n assertEx(payloads, () => `Missing payloads: ${JSON.stringify(query.payload, null, 2)}`)\n const resolvedPayloads = await PayloadBuilder.filterIncludeByDataHash(payloads, query.payloadHashes)\n assertEx(\n resolvedPayloads.length === query.payloadHashes.length,\n () => `Could not find some passed hashes [${resolvedPayloads.length} != ${query.payloadHashes.length}]`,\n )\n const queryPayload = await query.getQuery()\n const payloadsWithoutQuery = await PayloadBuilder.filterExclude(resolvedPayloads, await PayloadBuilder.dataHash(queryPayload))\n const result = await this.insertWithConfig(payloadsWithoutQuery)\n return result\n }\n\n protected async insertWithConfig(payloads: Payload[], config?: InsertConfig): Promise<WithStorageMeta<Payload>[]> {\n const emitEvents = config?.emitEvents ?? true\n const writeToParents = config?.writeToParents ?? true\n\n // remove the existing payloads\n const withStorageMeta = await PayloadBuilder.addStorageMeta(payloads)\n const hashes = withStorageMeta.map(p => p._dataHash)\n const existingPayloads = await this.getWithConfig(hashes)\n const existingHashes = new Set(existingPayloads.map(p => p._hash))\n const payloadsToInsert = withStorageMeta.filter(p => !existingHashes.has(p._hash))\n\n const insertedPayloads = await this.insertHandler(payloadsToInsert)\n\n if (writeToParents) {\n await this.writeToParents(insertedPayloads)\n }\n if (emitEvents) {\n await this.emit('inserted', { mod: this, payloads: insertedPayloads })\n }\n\n return PayloadBuilder.omitPrivateStorageMeta(insertedPayloads)\n }\n\n protected nextHandler(_options?: ArchivistNextOptions): Promisable<WithStorageMeta<Payload>[]> {\n throw new Error(NOT_IMPLEMENTED)\n }\n\n protected async nextWithConfig(options?: ArchivistNextOptions, _config?: InsertConfig): Promise<WithStorageMeta<Payload>[]> {\n const foundPayloads = await this.nextHandler(options)\n return PayloadBuilder.omitPrivateStorageMeta(foundPayloads)\n }\n\n protected async parentArchivists() {\n this._parentArchivists = this._parentArchivists ?? {\n commit: await this.resolveArchivists(this.config?.parents?.commit),\n read: await this.resolveArchivists(this.config?.parents?.read),\n write: await this.resolveArchivists(this.config?.parents?.write),\n }\n return assertEx(this._parentArchivists)\n }\n\n protected override async queryHandler<T extends QueryBoundWitness = QueryBoundWitness, TConfig extends ModuleConfig = ModuleConfig>(\n query: T,\n payloads: Payload[],\n queryConfig?: TConfig,\n ): Promise<ModuleQueryHandlerResult> {\n const sanitizedQuery = PayloadBuilder.omitStorageMeta(query)\n const sanitizedPayloads = PayloadBuilder.omitStorageMeta(payloads)\n const wrappedQuery = QueryBoundWitnessWrapper.parseQuery<ArchivistQueries>(sanitizedQuery, sanitizedPayloads)\n const queryPayload = await wrappedQuery.getQuery()\n assertEx(await this.queryable(sanitizedQuery, sanitizedPayloads, queryConfig))\n const resultPayloads: Payload[] = []\n\n switch (queryPayload.schema) {\n case ArchivistAllQuerySchema: {\n resultPayloads.push(...(await this.allHandler()))\n break\n }\n case ArchivistClearQuerySchema: {\n await this.clearHandler()\n break\n }\n case ArchivistCommitQuerySchema: {\n resultPayloads.push(...(await this.commitHandler()))\n break\n }\n case ArchivistDeleteQuerySchema: {\n const resultPayload: ArchivistDeleteQuery = {\n hashes: [...(await this.deleteWithConfig(queryPayload.hashes))],\n schema: ArchivistDeleteQuerySchema,\n }\n resultPayloads.push(await PayloadBuilder.addStorageMeta(resultPayload))\n break\n }\n case ArchivistGetQuerySchema: {\n resultPayloads.push(...(await this.getWithConfig(queryPayload.hashes ?? [])))\n break\n }\n case ArchivistInsertQuerySchema: {\n resultPayloads.push(...(await this.insertQueryHandler(wrappedQuery, sanitizedPayloads)))\n break\n }\n case ArchivistNextQuerySchema: {\n resultPayloads.push(...(await this.nextHandler(queryPayload)))\n break\n }\n default: {\n const result = await super.queryHandler(sanitizedQuery, sanitizedPayloads)\n if (this.config.storeQueries) {\n await this.insertWithConfig([sanitizedQuery])\n }\n return PayloadBuilder.omitPrivateStorageMeta(result)\n }\n }\n if (this.config.storeQueries) {\n await this.insertWithConfig([sanitizedQuery])\n }\n return PayloadBuilder.omitPrivateStorageMeta(resultPayloads)\n }\n\n protected async writeToParent(parent: ArchivistInstance, payloads: Payload[]): Promise<Payload[]> {\n return await parent.insert(PayloadBuilder.omitStorageMeta(payloads))\n }\n\n protected async writeToParents(payloads: Payload[]): Promise<Payload[]> {\n const parents = await this.parentArchivists()\n return (\n await Promise.all(\n Object.values(parents.write ?? {}).map(async (parent) => {\n return parent ? await this.writeToParent(parent, payloads) : undefined\n }),\n )\n ).filter(exists).flat()\n }\n\n private async resolveArchivists(archivists: ModuleIdentifier[] = []) {\n const archivistModules = [\n ...(await this.resolve({ address: archivists as Address[] })),\n ...(await this.resolve({ name: archivists as ModuleName[] })),\n ].filter(duplicateModules)\n\n assertEx(\n !this.requireAllParents || archivistModules.length === archivists.length,\n () =>\n `Failed to find some archivists (set allRequired to false if ok): [${archivists.filter(archivist =>\n archivistModules.map(mod => !(mod.address === archivist || mod.modName === archivist)))}]`,\n )\n\n // eslint-disable-next-line unicorn/no-array-reduce\n return archivistModules.reduce<Record<string, ArchivistInstance>>((prev, mod) => {\n prev[mod.address] = asArchivistInstance(mod, () => {\n isArchivistInstance(mod, { log: console })\n return `Unable to cast resolved module to an archivist: [${mod.address}, ${mod.modName}, ${mod.config.schema})}]`\n })\n\n return prev\n }, {})\n }\n}\n"],"mappings":"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","names":["payload"]}
|
package/package.json
CHANGED
|
@@ -1,6 +1,6 @@
|
|
|
1
1
|
{
|
|
2
2
|
"name": "@xyo-network/archivist-abstract",
|
|
3
|
-
"version": "3.6.
|
|
3
|
+
"version": "3.6.10",
|
|
4
4
|
"description": "Primary SDK for using XYO Protocol 2.0",
|
|
5
5
|
"homepage": "https://xyo.network",
|
|
6
6
|
"bugs": {
|
|
@@ -29,25 +29,25 @@
|
|
|
29
29
|
"module": "dist/neutral/index.mjs",
|
|
30
30
|
"types": "dist/neutral/index.d.ts",
|
|
31
31
|
"dependencies": {
|
|
32
|
-
"@xylabs/assert": "^4.
|
|
33
|
-
"@xylabs/exists": "^4.
|
|
34
|
-
"@xylabs/hex": "^4.
|
|
35
|
-
"@xylabs/object": "^4.
|
|
36
|
-
"@xylabs/promise": "^4.
|
|
37
|
-
"@xylabs/set": "^4.
|
|
38
|
-
"@xyo-network/account-model": "^3.6.
|
|
39
|
-
"@xyo-network/archivist-model": "^3.6.
|
|
40
|
-
"@xyo-network/boundwitness-model": "^3.6.
|
|
41
|
-
"@xyo-network/boundwitness-wrapper": "^3.6.
|
|
42
|
-
"@xyo-network/module-abstract": "^3.6.
|
|
43
|
-
"@xyo-network/module-model": "^3.6.
|
|
44
|
-
"@xyo-network/payload-builder": "^3.6.
|
|
45
|
-
"@xyo-network/payload-model": "^3.6.
|
|
32
|
+
"@xylabs/assert": "^4.5.1",
|
|
33
|
+
"@xylabs/exists": "^4.5.1",
|
|
34
|
+
"@xylabs/hex": "^4.5.1",
|
|
35
|
+
"@xylabs/object": "^4.5.1",
|
|
36
|
+
"@xylabs/promise": "^4.5.1",
|
|
37
|
+
"@xylabs/set": "^4.5.1",
|
|
38
|
+
"@xyo-network/account-model": "^3.6.10",
|
|
39
|
+
"@xyo-network/archivist-model": "^3.6.10",
|
|
40
|
+
"@xyo-network/boundwitness-model": "^3.6.10",
|
|
41
|
+
"@xyo-network/boundwitness-wrapper": "^3.6.10",
|
|
42
|
+
"@xyo-network/module-abstract": "^3.6.10",
|
|
43
|
+
"@xyo-network/module-model": "^3.6.10",
|
|
44
|
+
"@xyo-network/payload-builder": "^3.6.10",
|
|
45
|
+
"@xyo-network/payload-model": "^3.6.10"
|
|
46
46
|
},
|
|
47
47
|
"devDependencies": {
|
|
48
48
|
"@xylabs/ts-scripts-yarn3": "^4.2.6",
|
|
49
49
|
"@xylabs/tsconfig": "^4.2.6",
|
|
50
|
-
"typescript": "^5.7.
|
|
50
|
+
"typescript": "^5.7.3"
|
|
51
51
|
},
|
|
52
52
|
"publishConfig": {
|
|
53
53
|
"access": "public"
|