@xyo-network/archivist 2.26.11 → 2.26.14
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/cjs/Abstract.d.ts +15 -18
- package/dist/cjs/Abstract.d.ts.map +1 -1
- package/dist/cjs/Abstract.js +46 -0
- package/dist/cjs/Abstract.js.map +1 -1
- package/dist/cjs/Archivist.d.ts +2 -2
- package/dist/cjs/Archivist.d.ts.map +1 -1
- package/dist/cjs/Query/All.d.ts +5 -5
- package/dist/cjs/Query/All.d.ts.map +1 -1
- package/dist/cjs/Query/All.js +2 -2
- package/dist/cjs/Query/All.js.map +1 -1
- package/dist/cjs/Query/Clear.d.ts +7 -0
- package/dist/cjs/Query/Clear.d.ts.map +1 -0
- package/dist/cjs/Query/Clear.js +5 -0
- package/dist/cjs/Query/Clear.js.map +1 -0
- package/dist/cjs/Query/Commit.d.ts +7 -0
- package/dist/cjs/Query/Commit.d.ts.map +1 -0
- package/dist/cjs/Query/Commit.js +5 -0
- package/dist/cjs/Query/Commit.js.map +1 -0
- package/dist/cjs/Query/Delete.d.ts +8 -0
- package/dist/cjs/Query/Delete.d.ts.map +1 -0
- package/dist/cjs/Query/Delete.js +5 -0
- package/dist/cjs/Query/Delete.js.map +1 -0
- package/dist/cjs/Query/Find.d.ts +9 -0
- package/dist/cjs/Query/Find.d.ts.map +1 -0
- package/dist/cjs/Query/Find.js +5 -0
- package/dist/cjs/Query/Find.js.map +1 -0
- package/dist/cjs/Query/Get.d.ts +5 -5
- package/dist/cjs/Query/Get.d.ts.map +1 -1
- package/dist/cjs/Query/Get.js +2 -2
- package/dist/cjs/Query/Get.js.map +1 -1
- package/dist/cjs/Query/Insert.d.ts +8 -0
- package/dist/cjs/Query/Insert.d.ts.map +1 -0
- package/dist/cjs/Query/Insert.js +5 -0
- package/dist/cjs/Query/Insert.js.map +1 -0
- package/dist/cjs/Query/index.d.ts +15 -0
- package/dist/cjs/Query/index.d.ts.map +1 -1
- package/dist/cjs/Query/index.js +6 -0
- package/dist/cjs/Query/index.js.map +1 -1
- package/dist/cjs/XyoArchivist.d.ts +3 -15
- package/dist/cjs/XyoArchivist.d.ts.map +1 -1
- package/dist/cjs/XyoArchivist.js +0 -3
- package/dist/cjs/XyoArchivist.js.map +1 -1
- package/dist/cjs/XyoArchivistConfig.d.ts +3 -3
- package/dist/cjs/XyoArchivistConfig.d.ts.map +1 -1
- package/dist/cjs/XyoArchivistConfig.js.map +1 -1
- package/dist/cjs/XyoMemoryArchivist.d.ts +6 -8
- package/dist/cjs/XyoMemoryArchivist.d.ts.map +1 -1
- package/dist/cjs/XyoMemoryArchivist.js +17 -7
- package/dist/cjs/XyoMemoryArchivist.js.map +1 -1
- package/dist/cjs/index.d.ts +1 -0
- package/dist/cjs/index.d.ts.map +1 -1
- package/dist/cjs/index.js +1 -0
- package/dist/cjs/index.js.map +1 -1
- package/dist/docs.json +3328 -3066
- package/dist/esm/Abstract.d.ts +15 -18
- package/dist/esm/Abstract.d.ts.map +1 -1
- package/dist/esm/Abstract.js +43 -0
- package/dist/esm/Abstract.js.map +1 -1
- package/dist/esm/Archivist.d.ts +2 -2
- package/dist/esm/Archivist.d.ts.map +1 -1
- package/dist/esm/Query/All.d.ts +5 -5
- package/dist/esm/Query/All.d.ts.map +1 -1
- package/dist/esm/Query/All.js +1 -1
- package/dist/esm/Query/All.js.map +1 -1
- package/dist/esm/Query/Clear.d.ts +7 -0
- package/dist/esm/Query/Clear.d.ts.map +1 -0
- package/dist/esm/Query/Clear.js +2 -0
- package/dist/esm/Query/Clear.js.map +1 -0
- package/dist/esm/Query/Commit.d.ts +7 -0
- package/dist/esm/Query/Commit.d.ts.map +1 -0
- package/dist/esm/Query/Commit.js +2 -0
- package/dist/esm/Query/Commit.js.map +1 -0
- package/dist/esm/Query/Delete.d.ts +8 -0
- package/dist/esm/Query/Delete.d.ts.map +1 -0
- package/dist/esm/Query/Delete.js +2 -0
- package/dist/esm/Query/Delete.js.map +1 -0
- package/dist/esm/Query/Find.d.ts +9 -0
- package/dist/esm/Query/Find.d.ts.map +1 -0
- package/dist/esm/Query/Find.js +2 -0
- package/dist/esm/Query/Find.js.map +1 -0
- package/dist/esm/Query/Get.d.ts +5 -5
- package/dist/esm/Query/Get.d.ts.map +1 -1
- package/dist/esm/Query/Get.js +1 -1
- package/dist/esm/Query/Get.js.map +1 -1
- package/dist/esm/Query/Insert.d.ts +8 -0
- package/dist/esm/Query/Insert.d.ts.map +1 -0
- package/dist/esm/Query/Insert.js +2 -0
- package/dist/esm/Query/Insert.js.map +1 -0
- package/dist/esm/Query/index.d.ts +15 -0
- package/dist/esm/Query/index.d.ts.map +1 -1
- package/dist/esm/Query/index.js +6 -0
- package/dist/esm/Query/index.js.map +1 -1
- package/dist/esm/XyoArchivist.d.ts +3 -15
- package/dist/esm/XyoArchivist.d.ts.map +1 -1
- package/dist/esm/XyoArchivist.js +1 -2
- package/dist/esm/XyoArchivist.js.map +1 -1
- package/dist/esm/XyoArchivistConfig.d.ts +3 -3
- package/dist/esm/XyoArchivistConfig.d.ts.map +1 -1
- package/dist/esm/XyoArchivistConfig.js.map +1 -1
- package/dist/esm/XyoMemoryArchivist.d.ts +6 -8
- package/dist/esm/XyoMemoryArchivist.d.ts.map +1 -1
- package/dist/esm/XyoMemoryArchivist.js +15 -5
- package/dist/esm/XyoMemoryArchivist.js.map +1 -1
- package/dist/esm/index.d.ts +1 -0
- package/dist/esm/index.d.ts.map +1 -1
- package/dist/esm/index.js +1 -0
- package/dist/esm/index.js.map +1 -1
- package/package.json +6 -7
- package/src/Abstract.ts +55 -12
- package/src/Archivist.ts +2 -2
- package/src/Query/All.ts +5 -5
- package/src/Query/Clear.ts +8 -0
- package/src/Query/Commit.ts +8 -0
- package/src/Query/Delete.ts +9 -0
- package/src/Query/Find.ts +11 -0
- package/src/Query/Get.ts +5 -5
- package/src/Query/Insert.ts +9 -0
- package/src/Query/index.ts +32 -0
- package/src/XyoArchivist.ts +3 -21
- package/src/XyoArchivistConfig.ts +4 -7
- package/src/XyoMemoryArchivist.ts +32 -10
- package/src/index.ts +1 -0
package/src/Abstract.ts
CHANGED
|
@@ -1,28 +1,71 @@
|
|
|
1
1
|
import { assertEx } from '@xylabs/sdk-js'
|
|
2
|
-
import {
|
|
3
|
-
import { XyoAbstractModule } from '@xyo-network/module'
|
|
2
|
+
import { XyoAbstractModule, XyoModuleQueryResult } from '@xyo-network/module'
|
|
4
3
|
import { XyoPayload } from '@xyo-network/payload'
|
|
5
4
|
import { NullablePromisableArray, Promisable, PromisableArray } from '@xyo-network/promisable'
|
|
6
5
|
|
|
7
6
|
import { Archivist } from './Archivist'
|
|
8
|
-
import {
|
|
7
|
+
import { XyoArchivistFindQueryPayloadSchema, XyoArchivistGetQueryPayloadSchema, XyoArchivistQueryPayload } from './Query'
|
|
8
|
+
import { XyoArchivist } from './XyoArchivist'
|
|
9
9
|
import { XyoArchivistConfig, XyoArchivistParents } from './XyoArchivistConfig'
|
|
10
10
|
import { XyoPayloadFindFilter } from './XyoPayloadFindFilter'
|
|
11
11
|
|
|
12
|
-
export abstract class XyoAbstractArchivist<
|
|
13
|
-
|
|
14
|
-
C extends XyoArchivistConfig = XyoArchivistConfig,
|
|
15
|
-
>
|
|
16
|
-
extends XyoAbstractModule<Q, C>
|
|
12
|
+
export abstract class XyoAbstractArchivist<TConfig extends XyoPayload = XyoPayload>
|
|
13
|
+
extends XyoAbstractModule<XyoArchivistQueryPayload, XyoArchivistConfig<TConfig>>
|
|
17
14
|
implements XyoArchivist<XyoArchivistQueryPayload>, Archivist<XyoPayload, XyoPayload, XyoPayload, XyoPayload, XyoPayloadFindFilter>
|
|
18
15
|
{
|
|
19
|
-
|
|
16
|
+
public override get queries() {
|
|
17
|
+
return [XyoArchivistGetQueryPayloadSchema, XyoArchivistFindQueryPayloadSchema]
|
|
18
|
+
}
|
|
19
|
+
|
|
20
|
+
abstract get(hashes: string[]): NullablePromisableArray<XyoPayload>
|
|
21
|
+
|
|
22
|
+
public all(): PromisableArray<XyoPayload> {
|
|
23
|
+
throw Error('Not implemented')
|
|
24
|
+
}
|
|
25
|
+
|
|
26
|
+
public clear(): Promisable<void> {
|
|
27
|
+
throw Error('Not implemented')
|
|
28
|
+
}
|
|
20
29
|
|
|
21
|
-
|
|
30
|
+
public commit(): PromisableArray<XyoPayload> {
|
|
31
|
+
throw Error('Not implemented')
|
|
32
|
+
}
|
|
33
|
+
|
|
34
|
+
public delete(_hashes: string[]): PromisableArray<boolean> {
|
|
35
|
+
throw Error('Not implemented')
|
|
36
|
+
}
|
|
22
37
|
|
|
23
|
-
abstract
|
|
38
|
+
abstract find(filter: XyoPayloadFindFilter): PromisableArray<XyoPayload>
|
|
24
39
|
|
|
25
|
-
abstract
|
|
40
|
+
abstract insert(item: XyoPayload[]): PromisableArray<XyoPayload>
|
|
41
|
+
|
|
42
|
+
async query(query: XyoArchivistQueryPayload): Promise<XyoModuleQueryResult> {
|
|
43
|
+
const payloads: (XyoPayload | null)[] = []
|
|
44
|
+
switch (query.schema) {
|
|
45
|
+
case 'network.xyo.query.archivist.all':
|
|
46
|
+
payloads.concat(await this.all())
|
|
47
|
+
break
|
|
48
|
+
case 'network.xyo.query.archivist.clear':
|
|
49
|
+
await this.clear()
|
|
50
|
+
break
|
|
51
|
+
case 'network.xyo.query.archivist.commit':
|
|
52
|
+
payloads.concat(await this.commit())
|
|
53
|
+
break
|
|
54
|
+
case 'network.xyo.query.archivist.delete':
|
|
55
|
+
await this.delete(query.hashes)
|
|
56
|
+
break
|
|
57
|
+
case 'network.xyo.query.archivist.find':
|
|
58
|
+
payloads.concat(await this.find(query.filter))
|
|
59
|
+
break
|
|
60
|
+
case 'network.xyo.query.archivist.get':
|
|
61
|
+
payloads.concat(await this.get(query.hashes))
|
|
62
|
+
break
|
|
63
|
+
case 'network.xyo.query.archivist.insert':
|
|
64
|
+
payloads.concat(await this.insert(query.payloads))
|
|
65
|
+
break
|
|
66
|
+
}
|
|
67
|
+
return [this.bindPayloads(payloads), payloads]
|
|
68
|
+
}
|
|
26
69
|
|
|
27
70
|
get resolver() {
|
|
28
71
|
return this.config.resolver
|
package/src/Archivist.ts
CHANGED
|
@@ -1,4 +1,4 @@
|
|
|
1
|
-
import { NullablePromisableArray, PromisableArray } from '@xyo-network/promisable'
|
|
1
|
+
import { NullablePromisableArray, Promisable, PromisableArray } from '@xyo-network/promisable'
|
|
2
2
|
|
|
3
3
|
export interface ReadArchivist<TReadResponse, TId = string> {
|
|
4
4
|
get(ids: TId[]): NullablePromisableArray<TReadResponse>
|
|
@@ -8,7 +8,7 @@ export interface ReadArchivist<TReadResponse, TId = string> {
|
|
|
8
8
|
export interface WriteArchivist<TReadResponse, TWriteResponse = TReadResponse, TWrite = TReadResponse, TId = string> {
|
|
9
9
|
insert(item: TWrite[]): PromisableArray<TWriteResponse>
|
|
10
10
|
delete?(ids: TId[]): PromisableArray<boolean>
|
|
11
|
-
clear?(): void
|
|
11
|
+
clear?(): Promisable<void>
|
|
12
12
|
}
|
|
13
13
|
|
|
14
14
|
export interface FindArchivist<TReadResponse, TFindResponse = TReadResponse, TFindFilter = unknown> {
|
package/src/Query/All.ts
CHANGED
|
@@ -1,8 +1,8 @@
|
|
|
1
|
-
import {
|
|
1
|
+
import { XyoQueryPayload } from '@xyo-network/payload'
|
|
2
2
|
|
|
3
|
-
export type
|
|
4
|
-
export const
|
|
3
|
+
export type XyoArchivistAllQueryPayloadSchema = 'network.xyo.query.archivist.all'
|
|
4
|
+
export const XyoArchivistAllQueryPayloadSchema = 'network.xyo.query.archivist.all'
|
|
5
5
|
|
|
6
|
-
export type
|
|
7
|
-
schema:
|
|
6
|
+
export type XyoArchivistAllQueryPayload = XyoQueryPayload<{
|
|
7
|
+
schema: XyoArchivistAllQueryPayloadSchema
|
|
8
8
|
}>
|
|
@@ -0,0 +1,8 @@
|
|
|
1
|
+
import { XyoQueryPayload } from '@xyo-network/payload'
|
|
2
|
+
|
|
3
|
+
export type XyoArchivistClearQueryPayloadSchema = 'network.xyo.query.archivist.clear'
|
|
4
|
+
export const XyoArchivistClearQueryPayloadSchema = 'network.xyo.query.archivist.clear'
|
|
5
|
+
|
|
6
|
+
export type XyoArchivistClearQueryPayload = XyoQueryPayload<{
|
|
7
|
+
schema: XyoArchivistClearQueryPayloadSchema
|
|
8
|
+
}>
|
|
@@ -0,0 +1,8 @@
|
|
|
1
|
+
import { XyoQueryPayload } from '@xyo-network/payload'
|
|
2
|
+
|
|
3
|
+
export type XyoArchivistCommitQueryPayloadSchema = 'network.xyo.query.archivist.commit'
|
|
4
|
+
export const XyoArchivistCommitQueryPayloadSchema = 'network.xyo.query.archivist.commit'
|
|
5
|
+
|
|
6
|
+
export type XyoArchivistCommitQueryPayload = XyoQueryPayload<{
|
|
7
|
+
schema: XyoArchivistCommitQueryPayloadSchema
|
|
8
|
+
}>
|
|
@@ -0,0 +1,9 @@
|
|
|
1
|
+
import { XyoQueryPayload } from '@xyo-network/payload'
|
|
2
|
+
|
|
3
|
+
export type XyoArchivistDeleteQueryPayloadSchema = 'network.xyo.query.archivist.delete'
|
|
4
|
+
export const XyoArchivistDeleteQueryPayloadSchema = 'network.xyo.query.archivist.delete'
|
|
5
|
+
|
|
6
|
+
export type XyoArchivistDeleteQueryPayload = XyoQueryPayload<{
|
|
7
|
+
schema: XyoArchivistDeleteQueryPayloadSchema
|
|
8
|
+
hashes: string[]
|
|
9
|
+
}>
|
|
@@ -0,0 +1,11 @@
|
|
|
1
|
+
import { XyoQueryPayload } from '@xyo-network/payload'
|
|
2
|
+
|
|
3
|
+
import { XyoPayloadFindFilter } from '../XyoPayloadFindFilter'
|
|
4
|
+
|
|
5
|
+
export type XyoArchivistFindQueryPayloadSchema = 'network.xyo.query.archivist.find'
|
|
6
|
+
export const XyoArchivistFindQueryPayloadSchema = 'network.xyo.query.archivist.find'
|
|
7
|
+
|
|
8
|
+
export type XyoArchivistFindQueryPayload = XyoQueryPayload<{
|
|
9
|
+
schema: XyoArchivistFindQueryPayloadSchema
|
|
10
|
+
filter: XyoPayloadFindFilter
|
|
11
|
+
}>
|
package/src/Query/Get.ts
CHANGED
|
@@ -1,9 +1,9 @@
|
|
|
1
|
-
import {
|
|
1
|
+
import { XyoQueryPayload } from '@xyo-network/payload'
|
|
2
2
|
|
|
3
|
-
export type
|
|
4
|
-
export const
|
|
3
|
+
export type XyoArchivistGetQueryPayloadSchema = 'network.xyo.query.archivist.get'
|
|
4
|
+
export const XyoArchivistGetQueryPayloadSchema = 'network.xyo.query.archivist.get'
|
|
5
5
|
|
|
6
|
-
export type
|
|
7
|
-
schema:
|
|
6
|
+
export type XyoArchivistGetQueryPayload = XyoQueryPayload<{
|
|
7
|
+
schema: XyoArchivistGetQueryPayloadSchema
|
|
8
8
|
hashes: string[]
|
|
9
9
|
}>
|
|
@@ -0,0 +1,9 @@
|
|
|
1
|
+
import { XyoPayload, XyoQueryPayload } from '@xyo-network/payload'
|
|
2
|
+
|
|
3
|
+
export type XyoArchivistInsertQueryPayloadSchema = 'network.xyo.query.archivist.insert'
|
|
4
|
+
export const XyoArchivistInsertQueryPayloadSchema = 'network.xyo.query.archivist.insert'
|
|
5
|
+
|
|
6
|
+
export type XyoArchivistInsertQueryPayload = XyoQueryPayload<{
|
|
7
|
+
schema: XyoArchivistInsertQueryPayloadSchema
|
|
8
|
+
payloads: XyoPayload[]
|
|
9
|
+
}>
|
package/src/Query/index.ts
CHANGED
|
@@ -1 +1,33 @@
|
|
|
1
|
+
import { XyoArchivistAllQueryPayload, XyoArchivistAllQueryPayloadSchema } from './All'
|
|
2
|
+
import { XyoArchivistClearQueryPayload, XyoArchivistClearQueryPayloadSchema } from './Clear'
|
|
3
|
+
import { XyoArchivistCommitQueryPayload, XyoArchivistCommitQueryPayloadSchema } from './Commit'
|
|
4
|
+
import { XyoArchivistDeleteQueryPayload, XyoArchivistDeleteQueryPayloadSchema } from './Delete'
|
|
5
|
+
import { XyoArchivistFindQueryPayload, XyoArchivistFindQueryPayloadSchema } from './Find'
|
|
6
|
+
import { XyoArchivistGetQueryPayload, XyoArchivistGetQueryPayloadSchema } from './Get'
|
|
7
|
+
import { XyoArchivistInsertQueryPayload, XyoArchivistInsertQueryPayloadSchema } from './Insert'
|
|
8
|
+
|
|
9
|
+
export * from './All'
|
|
10
|
+
export * from './Clear'
|
|
11
|
+
export * from './Commit'
|
|
12
|
+
export * from './Delete'
|
|
13
|
+
export * from './Find'
|
|
1
14
|
export * from './Get'
|
|
15
|
+
export * from './Insert'
|
|
16
|
+
|
|
17
|
+
export type XyoArchivistQueryPayloadSchema =
|
|
18
|
+
| XyoArchivistAllQueryPayloadSchema
|
|
19
|
+
| XyoArchivistClearQueryPayloadSchema
|
|
20
|
+
| XyoArchivistCommitQueryPayloadSchema
|
|
21
|
+
| XyoArchivistDeleteQueryPayloadSchema
|
|
22
|
+
| XyoArchivistFindQueryPayloadSchema
|
|
23
|
+
| XyoArchivistGetQueryPayloadSchema
|
|
24
|
+
| XyoArchivistInsertQueryPayloadSchema
|
|
25
|
+
|
|
26
|
+
export type XyoArchivistQueryPayload =
|
|
27
|
+
| XyoArchivistAllQueryPayload
|
|
28
|
+
| XyoArchivistClearQueryPayload
|
|
29
|
+
| XyoArchivistCommitQueryPayload
|
|
30
|
+
| XyoArchivistDeleteQueryPayload
|
|
31
|
+
| XyoArchivistFindQueryPayload
|
|
32
|
+
| XyoArchivistGetQueryPayload
|
|
33
|
+
| XyoArchivistInsertQueryPayload
|
package/src/XyoArchivist.ts
CHANGED
|
@@ -1,23 +1,5 @@
|
|
|
1
|
-
import {
|
|
2
|
-
import { XyoModule, XyoQueryPayload } from '@xyo-network/module'
|
|
3
|
-
import { XyoPayload } from '@xyo-network/payload'
|
|
4
|
-
import { Promisable } from '@xyo-network/promisable'
|
|
1
|
+
import { XyoModule } from '@xyo-network/module'
|
|
5
2
|
|
|
6
|
-
import {
|
|
7
|
-
import { XyoPayloadFindFilter } from './XyoPayloadFindFilter'
|
|
3
|
+
import { XyoArchivistQueryPayload } from './Query'
|
|
8
4
|
|
|
9
|
-
export type
|
|
10
|
-
export const XyoArchivistQueryPayloadGetSchema = 'network.xyo.query.archivist.get'
|
|
11
|
-
|
|
12
|
-
export type XyoArchivistQueryPayloadAllSchema = 'network.xyo.query.archivist.all'
|
|
13
|
-
export const XyoArchivistQueryPayloadAllSchema = 'network.xyo.query.archivist.all'
|
|
14
|
-
|
|
15
|
-
export type XyoArchivistQueryPayloadSchema = XyoArchivistQueryPayloadGetSchema | XyoArchivistQueryPayloadAllSchema
|
|
16
|
-
|
|
17
|
-
export type XyoArchivistQueryPayload<T extends XyoPayload = XyoPayload> = XyoQueryPayload<T>
|
|
18
|
-
|
|
19
|
-
export interface XyoArchivist<Q extends XyoArchivistQueryPayload = XyoArchivistQueryPayload>
|
|
20
|
-
extends XyoModule<Q>,
|
|
21
|
-
Archivist<XyoPayload, XyoPayload, XyoPayload, XyoPayload, XyoPayloadFindFilter> {
|
|
22
|
-
query<T extends Q>(query: T): Promisable<[XyoBoundWitness, XyoPayload[]]>
|
|
23
|
-
}
|
|
5
|
+
export type XyoArchivist<Q extends XyoArchivistQueryPayload = XyoArchivistQueryPayload> = XyoModule<Q>
|
|
@@ -1,7 +1,7 @@
|
|
|
1
1
|
import { XyoModuleConfig } from '@xyo-network/module'
|
|
2
2
|
import { XyoPayload } from '@xyo-network/payload'
|
|
3
3
|
|
|
4
|
-
import { XyoArchivist
|
|
4
|
+
import { XyoArchivist } from './XyoArchivist'
|
|
5
5
|
|
|
6
6
|
export interface XyoArchivistParents {
|
|
7
7
|
read?: Record<string, XyoArchivist | null | undefined>
|
|
@@ -9,18 +9,15 @@ export interface XyoArchivistParents {
|
|
|
9
9
|
commit?: Record<string, XyoArchivist | null | undefined>
|
|
10
10
|
}
|
|
11
11
|
|
|
12
|
-
export type XyoArchivistConfig<
|
|
13
|
-
T extends XyoPayload = XyoPayload,
|
|
14
|
-
M extends XyoArchivist = XyoArchivist<XyoArchivistQueryPayload<T>>,
|
|
15
|
-
> = XyoModuleConfig<
|
|
12
|
+
export type XyoArchivistConfig<TConfig extends XyoPayload = XyoPayload, TQuery extends XyoPayload = XyoPayload> = XyoModuleConfig<
|
|
16
13
|
{
|
|
17
14
|
/** @field address of one or more parent archivists to read from */
|
|
18
15
|
parents?: XyoArchivistParents
|
|
19
16
|
cacheParentReads?: boolean
|
|
20
17
|
/** @field address of archivist to write through to */
|
|
21
18
|
writeThrough?: string
|
|
22
|
-
} &
|
|
23
|
-
|
|
19
|
+
} & TConfig,
|
|
20
|
+
TQuery
|
|
24
21
|
>
|
|
25
22
|
|
|
26
23
|
export class XyoArchivistConfigWrapper<C extends XyoArchivistConfig = XyoArchivistConfig> {
|
|
@@ -1,30 +1,47 @@
|
|
|
1
1
|
import { assertEx } from '@xylabs/sdk-js'
|
|
2
2
|
import { XyoBoundWitness, XyoBoundWitnessBuilder } from '@xyo-network/boundwitness'
|
|
3
3
|
import { XyoPayload, XyoPayloadWrapper } from '@xyo-network/payload'
|
|
4
|
-
import {
|
|
4
|
+
import { PromisableArray } from '@xyo-network/promisable'
|
|
5
5
|
import compact from 'lodash/compact'
|
|
6
6
|
import LruCache from 'lru-cache'
|
|
7
7
|
|
|
8
8
|
import { XyoAbstractArchivist } from './Abstract'
|
|
9
|
-
import {
|
|
9
|
+
import {
|
|
10
|
+
XyoArchivistAllQueryPayloadSchema,
|
|
11
|
+
XyoArchivistClearQueryPayloadSchema,
|
|
12
|
+
XyoArchivistCommitQueryPayloadSchema,
|
|
13
|
+
XyoArchivistDeleteQueryPayloadSchema,
|
|
14
|
+
XyoArchivistFindQueryPayloadSchema,
|
|
15
|
+
} from './Query'
|
|
10
16
|
import { XyoArchivistConfig } from './XyoArchivistConfig'
|
|
11
17
|
import { XyoPayloadFindFilter } from './XyoPayloadFindFilter'
|
|
12
18
|
|
|
19
|
+
export type XyoMemoryArchivistConfigSchema = 'network.xyo.module.config.archivist.memory'
|
|
20
|
+
export const XyoMemoryArchivistConfigSchema = 'network.xyo.module.config.archivist.memory'
|
|
21
|
+
|
|
13
22
|
export type XyoMemoryArchivistConfig = XyoArchivistConfig<{
|
|
14
|
-
schema:
|
|
23
|
+
schema: XyoMemoryArchivistConfigSchema
|
|
15
24
|
max?: number
|
|
16
25
|
}>
|
|
17
26
|
|
|
18
|
-
export class XyoMemoryArchivist extends XyoAbstractArchivist<
|
|
19
|
-
query<Q>(_query: Q): Promisable<[XyoBoundWitness, XyoPayload<{ schema: string }>[]]> {
|
|
20
|
-
throw new Error('Method not implemented.')
|
|
21
|
-
}
|
|
27
|
+
export class XyoMemoryArchivist extends XyoAbstractArchivist<XyoMemoryArchivistConfig> {
|
|
22
28
|
public get max() {
|
|
23
29
|
return this.config?.max ?? 10000
|
|
24
30
|
}
|
|
25
31
|
|
|
26
32
|
private cache: LruCache<string, XyoPayload>
|
|
27
33
|
|
|
34
|
+
public override get queries() {
|
|
35
|
+
return [
|
|
36
|
+
...super.queries,
|
|
37
|
+
XyoArchivistAllQueryPayloadSchema,
|
|
38
|
+
XyoArchivistDeleteQueryPayloadSchema,
|
|
39
|
+
XyoArchivistClearQueryPayloadSchema,
|
|
40
|
+
XyoArchivistFindQueryPayloadSchema,
|
|
41
|
+
XyoArchivistCommitQueryPayloadSchema,
|
|
42
|
+
]
|
|
43
|
+
}
|
|
44
|
+
|
|
28
45
|
constructor(config: XyoMemoryArchivistConfig) {
|
|
29
46
|
super(config)
|
|
30
47
|
this.cache = new LruCache<string, XyoPayload>({ max: this.max })
|
|
@@ -36,7 +53,7 @@ export class XyoMemoryArchivist extends XyoAbstractArchivist<XyoArchivistQueryPa
|
|
|
36
53
|
})
|
|
37
54
|
}
|
|
38
55
|
|
|
39
|
-
public clear(): void | Promise<void> {
|
|
56
|
+
public override clear(): void | Promise<void> {
|
|
40
57
|
this.cache.clear()
|
|
41
58
|
}
|
|
42
59
|
|
|
@@ -45,7 +62,8 @@ export class XyoMemoryArchivist extends XyoAbstractArchivist<XyoArchivistQueryPa
|
|
|
45
62
|
await Promise.all(
|
|
46
63
|
compact(
|
|
47
64
|
Object.values(this.parents?.read ?? {}).map(async (parent) => {
|
|
48
|
-
|
|
65
|
+
const [, payloads] = (await parent?.query({ hashes: [hash], schema: 'network.xyo.query.archivist.get' })) ?? []
|
|
66
|
+
return payloads?.[0]
|
|
49
67
|
}),
|
|
50
68
|
),
|
|
51
69
|
),
|
|
@@ -89,7 +107,11 @@ export class XyoMemoryArchivist extends XyoAbstractArchivist<XyoArchivistQueryPa
|
|
|
89
107
|
const builder = new XyoBoundWitnessBuilder<XyoBoundWitness, XyoPayload>()
|
|
90
108
|
const block = builder.payloads(payloads).witness(account).build()
|
|
91
109
|
await Promise.allSettled(
|
|
92
|
-
compact(
|
|
110
|
+
compact(
|
|
111
|
+
Object.values(this.parents?.commit ?? [])?.map(
|
|
112
|
+
async (parent) => await parent?.query({ payloads: [block, ...payloads], schema: 'network.xyo.query.archivist.insert' }),
|
|
113
|
+
),
|
|
114
|
+
),
|
|
93
115
|
)
|
|
94
116
|
await this.clear()
|
|
95
117
|
return payloads
|