@xyo-network/archivist 2.31.5 → 2.32.0-rc.3
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/Archivist.d.ts +12 -7
- package/dist/cjs/Archivist.d.ts.map +1 -1
- package/dist/cjs/Config.d.ts +0 -8
- package/dist/cjs/Config.d.ts.map +1 -1
- package/dist/cjs/Config.js +0 -23
- package/dist/cjs/Config.js.map +1 -1
- package/dist/cjs/Queries/All.d.ts +7 -0
- package/dist/cjs/Queries/All.d.ts.map +1 -0
- package/dist/cjs/Queries/All.js +5 -0
- package/dist/cjs/Queries/All.js.map +1 -0
- package/dist/cjs/Queries/Clear.d.ts +7 -0
- package/dist/cjs/Queries/Clear.d.ts.map +1 -0
- package/dist/cjs/Queries/Clear.js +5 -0
- package/dist/cjs/Queries/Clear.js.map +1 -0
- package/dist/cjs/Queries/Commit.d.ts +7 -0
- package/dist/cjs/Queries/Commit.d.ts.map +1 -0
- package/dist/cjs/Queries/Commit.js +5 -0
- package/dist/cjs/Queries/Commit.js.map +1 -0
- package/dist/cjs/Queries/Delete.d.ts +8 -0
- package/dist/cjs/Queries/Delete.d.ts.map +1 -0
- package/dist/cjs/Queries/Delete.js +5 -0
- package/dist/cjs/Queries/Delete.js.map +1 -0
- package/dist/cjs/Queries/Find.d.ts +9 -0
- package/dist/cjs/Queries/Find.d.ts.map +1 -0
- package/dist/cjs/Queries/Find.js +5 -0
- package/dist/cjs/Queries/Find.js.map +1 -0
- package/dist/cjs/Queries/Get.d.ts +8 -0
- package/dist/cjs/Queries/Get.d.ts.map +1 -0
- package/dist/cjs/Queries/Get.js +5 -0
- package/dist/cjs/Queries/Get.js.map +1 -0
- package/dist/cjs/Queries/Insert.d.ts +9 -0
- package/dist/cjs/Queries/Insert.d.ts.map +1 -0
- package/dist/cjs/Queries/Insert.js +5 -0
- package/dist/cjs/Queries/Insert.js.map +1 -0
- package/dist/cjs/Queries/Payload.d.ts +10 -0
- package/dist/cjs/Queries/Payload.d.ts.map +1 -0
- package/dist/cjs/{Query → Queries}/Payload.js +0 -0
- package/dist/cjs/{Query → Queries}/Payload.js.map +1 -1
- package/dist/cjs/Queries/Schema.d.ts +10 -0
- package/dist/cjs/Queries/Schema.d.ts.map +1 -0
- package/dist/cjs/{Query → Queries}/Schema.js +0 -0
- package/dist/cjs/{Query → Queries}/Schema.js.map +1 -1
- package/dist/cjs/{Query → Queries}/index.d.ts +0 -0
- package/dist/cjs/Queries/index.d.ts.map +1 -0
- package/dist/cjs/{Query → Queries}/index.js +0 -0
- package/dist/cjs/Queries/index.js.map +1 -0
- package/dist/cjs/XyoArchivist.d.ts +43 -0
- package/dist/cjs/XyoArchivist.d.ts.map +1 -0
- package/dist/cjs/XyoArchivist.js +128 -0
- package/dist/cjs/XyoArchivist.js.map +1 -0
- package/dist/cjs/XyoArchivistWrapper.d.ts +5 -7
- package/dist/cjs/XyoArchivistWrapper.d.ts.map +1 -1
- package/dist/cjs/XyoArchivistWrapper.js +12 -17
- package/dist/cjs/XyoArchivistWrapper.js.map +1 -1
- package/dist/cjs/XyoCookieArchivist.d.ts +33 -0
- package/dist/cjs/XyoCookieArchivist.d.ts.map +1 -0
- package/dist/cjs/XyoCookieArchivist.js +158 -0
- package/dist/cjs/XyoCookieArchivist.js.map +1 -0
- package/dist/cjs/XyoMemoryArchivist.d.ts +7 -12
- package/dist/cjs/XyoMemoryArchivist.d.ts.map +1 -1
- package/dist/cjs/XyoMemoryArchivist.js +36 -39
- package/dist/cjs/XyoMemoryArchivist.js.map +1 -1
- package/dist/cjs/XyoStorageArchivist.d.ts +33 -0
- package/dist/cjs/XyoStorageArchivist.d.ts.map +1 -0
- package/dist/cjs/XyoStorageArchivist.js +150 -0
- package/dist/cjs/XyoStorageArchivist.js.map +1 -0
- package/dist/cjs/index.d.ts +5 -2
- package/dist/cjs/index.d.ts.map +1 -1
- package/dist/cjs/index.js +5 -2
- package/dist/cjs/index.js.map +1 -1
- package/dist/docs.json +17457 -5305
- package/dist/esm/Archivist.d.ts +12 -7
- package/dist/esm/Archivist.d.ts.map +1 -1
- package/dist/esm/Config.d.ts +0 -8
- package/dist/esm/Config.d.ts.map +1 -1
- package/dist/esm/Config.js +1 -18
- package/dist/esm/Config.js.map +1 -1
- package/dist/esm/Queries/All.d.ts +7 -0
- package/dist/esm/Queries/All.d.ts.map +1 -0
- package/dist/esm/Queries/All.js +2 -0
- package/dist/esm/Queries/All.js.map +1 -0
- package/dist/esm/Queries/Clear.d.ts +7 -0
- package/dist/esm/Queries/Clear.d.ts.map +1 -0
- package/dist/esm/Queries/Clear.js +2 -0
- package/dist/esm/Queries/Clear.js.map +1 -0
- package/dist/esm/Queries/Commit.d.ts +7 -0
- package/dist/esm/Queries/Commit.d.ts.map +1 -0
- package/dist/esm/Queries/Commit.js +2 -0
- package/dist/esm/Queries/Commit.js.map +1 -0
- package/dist/esm/Queries/Delete.d.ts +8 -0
- package/dist/esm/Queries/Delete.d.ts.map +1 -0
- package/dist/esm/Queries/Delete.js +2 -0
- package/dist/esm/Queries/Delete.js.map +1 -0
- package/dist/esm/Queries/Find.d.ts +9 -0
- package/dist/esm/Queries/Find.d.ts.map +1 -0
- package/dist/esm/Queries/Find.js +2 -0
- package/dist/esm/Queries/Find.js.map +1 -0
- package/dist/esm/Queries/Get.d.ts +8 -0
- package/dist/esm/Queries/Get.d.ts.map +1 -0
- package/dist/esm/Queries/Get.js +2 -0
- package/dist/esm/Queries/Get.js.map +1 -0
- package/dist/esm/Queries/Insert.d.ts +9 -0
- package/dist/esm/Queries/Insert.d.ts.map +1 -0
- package/dist/esm/Queries/Insert.js +2 -0
- package/dist/esm/Queries/Insert.js.map +1 -0
- package/dist/esm/Queries/Payload.d.ts +10 -0
- package/dist/esm/Queries/Payload.d.ts.map +1 -0
- package/dist/esm/{Query → Queries}/Payload.js +0 -0
- package/dist/esm/{Query → Queries}/Payload.js.map +1 -1
- package/dist/esm/Queries/Schema.d.ts +10 -0
- package/dist/esm/Queries/Schema.d.ts.map +1 -0
- package/dist/esm/{Query → Queries}/Schema.js +0 -0
- package/dist/esm/{Query → Queries}/Schema.js.map +1 -1
- package/dist/esm/{Query → Queries}/index.d.ts +0 -0
- package/dist/esm/Queries/index.d.ts.map +1 -0
- package/dist/esm/{Query → Queries}/index.js +0 -0
- package/dist/esm/Queries/index.js.map +1 -0
- package/dist/esm/XyoArchivist.d.ts +43 -0
- package/dist/esm/XyoArchivist.d.ts.map +1 -0
- package/dist/esm/XyoArchivist.js +108 -0
- package/dist/esm/XyoArchivist.js.map +1 -0
- package/dist/esm/XyoArchivistWrapper.d.ts +5 -7
- package/dist/esm/XyoArchivistWrapper.d.ts.map +1 -1
- package/dist/esm/XyoArchivistWrapper.js +12 -18
- package/dist/esm/XyoArchivistWrapper.js.map +1 -1
- package/dist/esm/XyoCookieArchivist.d.ts +33 -0
- package/dist/esm/XyoCookieArchivist.d.ts.map +1 -0
- package/dist/esm/XyoCookieArchivist.js +139 -0
- package/dist/esm/XyoCookieArchivist.js.map +1 -0
- package/dist/esm/XyoMemoryArchivist.d.ts +7 -12
- package/dist/esm/XyoMemoryArchivist.d.ts.map +1 -1
- package/dist/esm/XyoMemoryArchivist.js +24 -25
- package/dist/esm/XyoMemoryArchivist.js.map +1 -1
- package/dist/esm/XyoStorageArchivist.d.ts +33 -0
- package/dist/esm/XyoStorageArchivist.d.ts.map +1 -0
- package/dist/esm/XyoStorageArchivist.js +132 -0
- package/dist/esm/XyoStorageArchivist.js.map +1 -0
- package/dist/esm/index.d.ts +5 -2
- package/dist/esm/index.d.ts.map +1 -1
- package/dist/esm/index.js +5 -2
- package/dist/esm/index.js.map +1 -1
- package/package.json +11 -5
- package/src/Archivist.ts +32 -14
- package/src/Config.ts +0 -23
- package/src/Queries/All.ts +8 -0
- package/src/Queries/Clear.ts +8 -0
- package/src/Queries/Commit.ts +8 -0
- package/src/Queries/Delete.ts +9 -0
- package/src/Queries/Find.ts +11 -0
- package/src/Queries/Get.ts +9 -0
- package/src/Queries/Insert.ts +10 -0
- package/src/Queries/Payload.ts +19 -0
- package/src/Queries/Schema.ts +20 -0
- package/src/{Query → Queries}/index.ts +0 -0
- package/src/XyoArchivist.ts +153 -0
- package/src/XyoArchivistWrapper.ts +29 -38
- package/src/XyoCookieArchivist.ts +176 -0
- package/src/XyoMemoryArchivist.ts +35 -44
- package/src/XyoStorageArchivist.ts +169 -0
- package/src/index.ts +5 -2
- package/dist/cjs/Abstract.d.ts +0 -23
- package/dist/cjs/Abstract.d.ts.map +0 -1
- package/dist/cjs/Abstract.js +0 -83
- package/dist/cjs/Abstract.js.map +0 -1
- package/dist/cjs/Query/All.d.ts +0 -7
- package/dist/cjs/Query/All.d.ts.map +0 -1
- package/dist/cjs/Query/All.js +0 -5
- package/dist/cjs/Query/All.js.map +0 -1
- package/dist/cjs/Query/Clear.d.ts +0 -7
- package/dist/cjs/Query/Clear.d.ts.map +0 -1
- package/dist/cjs/Query/Clear.js +0 -5
- package/dist/cjs/Query/Clear.js.map +0 -1
- package/dist/cjs/Query/Commit.d.ts +0 -7
- package/dist/cjs/Query/Commit.d.ts.map +0 -1
- package/dist/cjs/Query/Commit.js +0 -5
- package/dist/cjs/Query/Commit.js.map +0 -1
- package/dist/cjs/Query/Delete.d.ts +0 -8
- package/dist/cjs/Query/Delete.d.ts.map +0 -1
- package/dist/cjs/Query/Delete.js +0 -5
- package/dist/cjs/Query/Delete.js.map +0 -1
- package/dist/cjs/Query/Find.d.ts +0 -9
- package/dist/cjs/Query/Find.d.ts.map +0 -1
- package/dist/cjs/Query/Find.js +0 -5
- package/dist/cjs/Query/Find.js.map +0 -1
- package/dist/cjs/Query/Get.d.ts +0 -8
- package/dist/cjs/Query/Get.d.ts.map +0 -1
- package/dist/cjs/Query/Get.js +0 -5
- package/dist/cjs/Query/Get.js.map +0 -1
- package/dist/cjs/Query/Insert.d.ts +0 -9
- package/dist/cjs/Query/Insert.d.ts.map +0 -1
- package/dist/cjs/Query/Insert.js +0 -5
- package/dist/cjs/Query/Insert.js.map +0 -1
- package/dist/cjs/Query/Payload.d.ts +0 -10
- package/dist/cjs/Query/Payload.d.ts.map +0 -1
- package/dist/cjs/Query/Schema.d.ts +0 -10
- package/dist/cjs/Query/Schema.d.ts.map +0 -1
- package/dist/cjs/Query/index.d.ts.map +0 -1
- package/dist/cjs/Query/index.js.map +0 -1
- package/dist/esm/Abstract.d.ts +0 -23
- package/dist/esm/Abstract.d.ts.map +0 -1
- package/dist/esm/Abstract.js +0 -75
- package/dist/esm/Abstract.js.map +0 -1
- package/dist/esm/Query/All.d.ts +0 -7
- package/dist/esm/Query/All.d.ts.map +0 -1
- package/dist/esm/Query/All.js +0 -2
- package/dist/esm/Query/All.js.map +0 -1
- package/dist/esm/Query/Clear.d.ts +0 -7
- package/dist/esm/Query/Clear.d.ts.map +0 -1
- package/dist/esm/Query/Clear.js +0 -2
- package/dist/esm/Query/Clear.js.map +0 -1
- package/dist/esm/Query/Commit.d.ts +0 -7
- package/dist/esm/Query/Commit.d.ts.map +0 -1
- package/dist/esm/Query/Commit.js +0 -2
- package/dist/esm/Query/Commit.js.map +0 -1
- package/dist/esm/Query/Delete.d.ts +0 -8
- package/dist/esm/Query/Delete.d.ts.map +0 -1
- package/dist/esm/Query/Delete.js +0 -2
- package/dist/esm/Query/Delete.js.map +0 -1
- package/dist/esm/Query/Find.d.ts +0 -9
- package/dist/esm/Query/Find.d.ts.map +0 -1
- package/dist/esm/Query/Find.js +0 -2
- package/dist/esm/Query/Find.js.map +0 -1
- package/dist/esm/Query/Get.d.ts +0 -8
- package/dist/esm/Query/Get.d.ts.map +0 -1
- package/dist/esm/Query/Get.js +0 -2
- package/dist/esm/Query/Get.js.map +0 -1
- package/dist/esm/Query/Insert.d.ts +0 -9
- package/dist/esm/Query/Insert.d.ts.map +0 -1
- package/dist/esm/Query/Insert.js +0 -2
- package/dist/esm/Query/Insert.js.map +0 -1
- package/dist/esm/Query/Payload.d.ts +0 -10
- package/dist/esm/Query/Payload.d.ts.map +0 -1
- package/dist/esm/Query/Schema.d.ts +0 -10
- package/dist/esm/Query/Schema.d.ts.map +0 -1
- package/dist/esm/Query/index.d.ts.map +0 -1
- package/dist/esm/Query/index.js.map +0 -1
- package/src/Abstract.ts +0 -108
- package/src/Query/All.ts +0 -8
- package/src/Query/Clear.ts +0 -8
- package/src/Query/Commit.ts +0 -8
- package/src/Query/Delete.ts +0 -9
- package/src/Query/Find.ts +0 -11
- package/src/Query/Get.ts +0 -9
- package/src/Query/Insert.ts +0 -10
- package/src/Query/Payload.ts +0 -19
- package/src/Query/Schema.ts +0 -20
package/src/Archivist.ts
CHANGED
|
@@ -1,32 +1,50 @@
|
|
|
1
|
+
import { XyoBoundWitness } from '@xyo-network/boundwitness'
|
|
2
|
+
import { Module } from '@xyo-network/module'
|
|
3
|
+
import { XyoPayload } from '@xyo-network/payload'
|
|
1
4
|
import { NullablePromisableArray, Promisable, PromisableArray } from '@xyo-network/promisable'
|
|
2
5
|
|
|
3
|
-
|
|
6
|
+
import { XyoArchivistQuery } from './Queries'
|
|
7
|
+
import { XyoPayloadFindFilter } from './XyoPayloadFindFilter'
|
|
8
|
+
|
|
9
|
+
export interface ReadArchivist<TReadResponse, TId = string, TQuery extends XyoArchivistQuery = XyoArchivistQuery> extends Module<TQuery> {
|
|
4
10
|
get(ids: TId[]): NullablePromisableArray<TReadResponse>
|
|
5
11
|
all?(): PromisableArray<TReadResponse>
|
|
6
12
|
}
|
|
7
13
|
|
|
8
|
-
export interface WriteArchivist<
|
|
9
|
-
|
|
14
|
+
export interface WriteArchivist<
|
|
15
|
+
TReadResponse,
|
|
16
|
+
TWriteResponse = TReadResponse,
|
|
17
|
+
TWrite = TReadResponse,
|
|
18
|
+
TId = string,
|
|
19
|
+
TQuery extends XyoArchivistQuery = XyoArchivistQuery,
|
|
20
|
+
> extends Module<TQuery> {
|
|
21
|
+
insert(item: TWrite[]): Promisable<TWriteResponse>
|
|
10
22
|
delete?(ids: TId[]): PromisableArray<boolean>
|
|
11
23
|
clear?(): Promisable<void>
|
|
12
24
|
}
|
|
13
25
|
|
|
14
|
-
export interface FindArchivist<
|
|
26
|
+
export interface FindArchivist<
|
|
27
|
+
TReadResponse,
|
|
28
|
+
TFindResponse = TReadResponse,
|
|
29
|
+
TFindFilter = unknown,
|
|
30
|
+
TQuery extends XyoArchivistQuery = XyoArchivistQuery,
|
|
31
|
+
> extends Module<TQuery> {
|
|
15
32
|
find(filter: TFindFilter): PromisableArray<TFindResponse>
|
|
16
33
|
}
|
|
17
34
|
|
|
18
|
-
export interface StashArchivist<
|
|
19
|
-
commit?():
|
|
35
|
+
export interface StashArchivist<TWriteResponse, TQuery extends XyoArchivistQuery = XyoArchivistQuery> extends Module<TQuery> {
|
|
36
|
+
commit?(): Promisable<TWriteResponse>
|
|
20
37
|
}
|
|
21
38
|
|
|
22
39
|
export interface Archivist<
|
|
23
|
-
TReadResponse,
|
|
24
|
-
TWriteResponse =
|
|
40
|
+
TReadResponse = XyoPayload | null,
|
|
41
|
+
TWriteResponse = XyoBoundWitness | null,
|
|
25
42
|
TWrite = TReadResponse,
|
|
26
|
-
TFindResponse = TReadResponse,
|
|
27
|
-
TFindFilter =
|
|
43
|
+
TFindResponse = TReadResponse | null,
|
|
44
|
+
TFindFilter = XyoPayloadFindFilter,
|
|
28
45
|
TId = string,
|
|
29
|
-
|
|
30
|
-
|
|
31
|
-
|
|
32
|
-
|
|
46
|
+
TQuery extends XyoArchivistQuery = XyoArchivistQuery,
|
|
47
|
+
> extends ReadArchivist<TReadResponse, TId, TQuery>,
|
|
48
|
+
FindArchivist<TReadResponse, TFindResponse, TFindFilter, TQuery>,
|
|
49
|
+
WriteArchivist<TReadResponse, TWriteResponse, TWrite, TId, TQuery>,
|
|
50
|
+
StashArchivist<TWriteResponse, TQuery> {}
|
package/src/Config.ts
CHANGED
|
@@ -16,26 +16,3 @@ export type XyoArchivistConfig<TConfig extends XyoPayload = XyoPayload> = XyoMod
|
|
|
16
16
|
writeThrough?: string
|
|
17
17
|
} & TConfig
|
|
18
18
|
>
|
|
19
|
-
|
|
20
|
-
export class XyoArchivistConfigWrapper<C extends XyoArchivistConfig = XyoArchivistConfig> {
|
|
21
|
-
protected config?: C
|
|
22
|
-
constructor(config?: C) {
|
|
23
|
-
this.config = config
|
|
24
|
-
}
|
|
25
|
-
|
|
26
|
-
public get parents() {
|
|
27
|
-
return this.config?.parents
|
|
28
|
-
}
|
|
29
|
-
|
|
30
|
-
public get account() {
|
|
31
|
-
return this.config?.account
|
|
32
|
-
}
|
|
33
|
-
|
|
34
|
-
public get writeThrough() {
|
|
35
|
-
return this.config?.writeThrough
|
|
36
|
-
}
|
|
37
|
-
|
|
38
|
-
public get cacheParentReads() {
|
|
39
|
-
return this.config?.cacheParentReads
|
|
40
|
-
}
|
|
41
|
-
}
|
|
@@ -0,0 +1,8 @@
|
|
|
1
|
+
import { XyoQuery } from '@xyo-network/module'
|
|
2
|
+
|
|
3
|
+
export type XyoArchivistAllQuerySchema = 'network.xyo.query.archivist.all'
|
|
4
|
+
export const XyoArchivistAllQuerySchema: XyoArchivistAllQuerySchema = 'network.xyo.query.archivist.all'
|
|
5
|
+
|
|
6
|
+
export type XyoArchivistAllQuery = XyoQuery<{
|
|
7
|
+
schema: XyoArchivistAllQuerySchema
|
|
8
|
+
}>
|
|
@@ -0,0 +1,8 @@
|
|
|
1
|
+
import { XyoQuery } from '@xyo-network/module'
|
|
2
|
+
|
|
3
|
+
export type XyoArchivistClearQuerySchema = 'network.xyo.query.archivist.clear'
|
|
4
|
+
export const XyoArchivistClearQuerySchema: XyoArchivistClearQuerySchema = 'network.xyo.query.archivist.clear'
|
|
5
|
+
|
|
6
|
+
export type XyoArchivistClearQuery = XyoQuery<{
|
|
7
|
+
schema: XyoArchivistClearQuerySchema
|
|
8
|
+
}>
|
|
@@ -0,0 +1,8 @@
|
|
|
1
|
+
import { XyoQuery } from '@xyo-network/module'
|
|
2
|
+
|
|
3
|
+
export type XyoArchivistCommitQuerySchema = 'network.xyo.query.archivist.commit'
|
|
4
|
+
export const XyoArchivistCommitQuerySchema: XyoArchivistCommitQuerySchema = 'network.xyo.query.archivist.commit'
|
|
5
|
+
|
|
6
|
+
export type XyoArchivistCommitQuery = XyoQuery<{
|
|
7
|
+
schema: XyoArchivistCommitQuerySchema
|
|
8
|
+
}>
|
|
@@ -0,0 +1,9 @@
|
|
|
1
|
+
import { XyoQuery } from '@xyo-network/module'
|
|
2
|
+
|
|
3
|
+
export type XyoArchivistDeleteQuerySchema = 'network.xyo.query.archivist.delete'
|
|
4
|
+
export const XyoArchivistDeleteQuerySchema: XyoArchivistDeleteQuerySchema = 'network.xyo.query.archivist.delete'
|
|
5
|
+
|
|
6
|
+
export type XyoArchivistDeleteQuery = XyoQuery<{
|
|
7
|
+
schema: XyoArchivistDeleteQuerySchema
|
|
8
|
+
hashes: string[]
|
|
9
|
+
}>
|
|
@@ -0,0 +1,11 @@
|
|
|
1
|
+
import { XyoQuery } from '@xyo-network/module'
|
|
2
|
+
|
|
3
|
+
import { XyoPayloadFindFilter } from '../XyoPayloadFindFilter'
|
|
4
|
+
|
|
5
|
+
export type XyoArchivistFindQuerySchema = 'network.xyo.query.archivist.find'
|
|
6
|
+
export const XyoArchivistFindQuerySchema: XyoArchivistFindQuerySchema = 'network.xyo.query.archivist.find'
|
|
7
|
+
|
|
8
|
+
export type XyoArchivistFindQuery = XyoQuery<{
|
|
9
|
+
schema: XyoArchivistFindQuerySchema
|
|
10
|
+
filter: XyoPayloadFindFilter
|
|
11
|
+
}>
|
|
@@ -0,0 +1,9 @@
|
|
|
1
|
+
import { XyoQuery } from '@xyo-network/module'
|
|
2
|
+
|
|
3
|
+
export type XyoArchivistGetQuerySchema = 'network.xyo.query.archivist.get'
|
|
4
|
+
export const XyoArchivistGetQuerySchema: XyoArchivistGetQuerySchema = 'network.xyo.query.archivist.get'
|
|
5
|
+
|
|
6
|
+
export type XyoArchivistGetQuery = XyoQuery<{
|
|
7
|
+
schema: XyoArchivistGetQuerySchema
|
|
8
|
+
hashes: string[]
|
|
9
|
+
}>
|
|
@@ -0,0 +1,10 @@
|
|
|
1
|
+
import { XyoQuery } from '@xyo-network/module'
|
|
2
|
+
import { XyoPayload } from '@xyo-network/payload'
|
|
3
|
+
|
|
4
|
+
export type XyoArchivistInsertQuerySchema = 'network.xyo.query.archivist.insert'
|
|
5
|
+
export const XyoArchivistInsertQuerySchema: XyoArchivistInsertQuerySchema = 'network.xyo.query.archivist.insert'
|
|
6
|
+
|
|
7
|
+
export type XyoArchivistInsertQuery = XyoQuery<{
|
|
8
|
+
schema: XyoArchivistInsertQuerySchema
|
|
9
|
+
payloads: XyoPayload[]
|
|
10
|
+
}>
|
|
@@ -0,0 +1,19 @@
|
|
|
1
|
+
import { XyoModuleQuery } from '@xyo-network/module'
|
|
2
|
+
|
|
3
|
+
import { XyoArchivistAllQuery } from './All'
|
|
4
|
+
import { XyoArchivistClearQuery } from './Clear'
|
|
5
|
+
import { XyoArchivistCommitQuery } from './Commit'
|
|
6
|
+
import { XyoArchivistDeleteQuery } from './Delete'
|
|
7
|
+
import { XyoArchivistFindQuery } from './Find'
|
|
8
|
+
import { XyoArchivistGetQuery } from './Get'
|
|
9
|
+
import { XyoArchivistInsertQuery } from './Insert'
|
|
10
|
+
|
|
11
|
+
export type XyoArchivistQuery =
|
|
12
|
+
| XyoModuleQuery
|
|
13
|
+
| XyoArchivistAllQuery
|
|
14
|
+
| XyoArchivistClearQuery
|
|
15
|
+
| XyoArchivistCommitQuery
|
|
16
|
+
| XyoArchivistDeleteQuery
|
|
17
|
+
| XyoArchivistFindQuery
|
|
18
|
+
| XyoArchivistGetQuery
|
|
19
|
+
| XyoArchivistInsertQuery
|
|
@@ -0,0 +1,20 @@
|
|
|
1
|
+
import { XyoModuleQuerySchema } from '@xyo-network/module'
|
|
2
|
+
|
|
3
|
+
import { XyoArchivistAllQuerySchema } from './All'
|
|
4
|
+
import { XyoArchivistClearQuerySchema } from './Clear'
|
|
5
|
+
import { XyoArchivistCommitQuerySchema } from './Commit'
|
|
6
|
+
import { XyoArchivistDeleteQuerySchema } from './Delete'
|
|
7
|
+
import { XyoArchivistFindQuerySchema } from './Find'
|
|
8
|
+
import { XyoArchivistGetQuerySchema } from './Get'
|
|
9
|
+
import { XyoArchivistInsertQuerySchema } from './Insert'
|
|
10
|
+
|
|
11
|
+
export type XyoArchivistQuerySchema<T extends string = never> =
|
|
12
|
+
| XyoArchivistAllQuerySchema
|
|
13
|
+
| XyoArchivistClearQuerySchema
|
|
14
|
+
| XyoArchivistCommitQuerySchema
|
|
15
|
+
| XyoArchivistDeleteQuerySchema
|
|
16
|
+
| XyoArchivistFindQuerySchema
|
|
17
|
+
| XyoArchivistGetQuerySchema
|
|
18
|
+
| XyoArchivistInsertQuerySchema
|
|
19
|
+
| XyoModuleQuerySchema
|
|
20
|
+
| T
|
|
File without changes
|
|
@@ -0,0 +1,153 @@
|
|
|
1
|
+
import { assertEx } from '@xylabs/sdk-js'
|
|
2
|
+
import { XyoBoundWitness } from '@xyo-network/boundwitness'
|
|
3
|
+
import { Module, XyoModule, XyoModuleInitializeQuerySchema, XyoModuleQueryResult, XyoModuleShutdownQuerySchema } from '@xyo-network/module'
|
|
4
|
+
import { XyoPayload, XyoPayloadWrapper } from '@xyo-network/payload'
|
|
5
|
+
import { NullablePromisableArray, Promisable, PromisableArray } from '@xyo-network/promisable'
|
|
6
|
+
import compact from 'lodash/compact'
|
|
7
|
+
|
|
8
|
+
import { Archivist } from './Archivist'
|
|
9
|
+
import { XyoArchivistConfig, XyoArchivistParents } from './Config'
|
|
10
|
+
import {
|
|
11
|
+
XyoArchivistAllQuerySchema,
|
|
12
|
+
XyoArchivistClearQuerySchema,
|
|
13
|
+
XyoArchivistCommitQuerySchema,
|
|
14
|
+
XyoArchivistDeleteQuerySchema,
|
|
15
|
+
XyoArchivistFindQuerySchema,
|
|
16
|
+
XyoArchivistGetQuery,
|
|
17
|
+
XyoArchivistGetQuerySchema,
|
|
18
|
+
XyoArchivistInsertQuery,
|
|
19
|
+
XyoArchivistInsertQuerySchema,
|
|
20
|
+
XyoArchivistQuery,
|
|
21
|
+
XyoArchivistQuerySchema,
|
|
22
|
+
} from './Queries'
|
|
23
|
+
import { XyoPayloadFindFilter } from './XyoPayloadFindFilter'
|
|
24
|
+
|
|
25
|
+
export abstract class XyoArchivist<TConfig extends XyoPayload = XyoPayload>
|
|
26
|
+
extends XyoModule<XyoArchivistConfig<TConfig>, XyoArchivistQuery>
|
|
27
|
+
implements Archivist<XyoPayload, XyoPayload, XyoPayload, XyoPayload, XyoPayloadFindFilter>
|
|
28
|
+
{
|
|
29
|
+
public override queries(): XyoArchivistQuerySchema[] {
|
|
30
|
+
return [
|
|
31
|
+
XyoModuleInitializeQuerySchema,
|
|
32
|
+
XyoModuleShutdownQuerySchema,
|
|
33
|
+
XyoArchivistGetQuerySchema,
|
|
34
|
+
XyoArchivistInsertQuerySchema,
|
|
35
|
+
...super.queries(),
|
|
36
|
+
]
|
|
37
|
+
}
|
|
38
|
+
|
|
39
|
+
public get cacheParentReads() {
|
|
40
|
+
return !!this.config?.cacheParentReads
|
|
41
|
+
}
|
|
42
|
+
|
|
43
|
+
public get writeThrough() {
|
|
44
|
+
return !!this.config?.writeThrough
|
|
45
|
+
}
|
|
46
|
+
|
|
47
|
+
public all(): PromisableArray<XyoPayload> {
|
|
48
|
+
throw Error('Not implemented')
|
|
49
|
+
}
|
|
50
|
+
|
|
51
|
+
public clear(): Promisable<void> {
|
|
52
|
+
throw Error('Not implemented')
|
|
53
|
+
}
|
|
54
|
+
|
|
55
|
+
public commit(): Promisable<XyoBoundWitness> {
|
|
56
|
+
throw Error('Not implemented')
|
|
57
|
+
}
|
|
58
|
+
|
|
59
|
+
public delete(_hashes: string[]): PromisableArray<boolean> {
|
|
60
|
+
throw Error('Not implemented')
|
|
61
|
+
}
|
|
62
|
+
|
|
63
|
+
public find(_filter: XyoPayloadFindFilter): PromisableArray<XyoPayload> {
|
|
64
|
+
throw Error('Not implemented')
|
|
65
|
+
}
|
|
66
|
+
|
|
67
|
+
abstract get(hashes: string[]): NullablePromisableArray<XyoPayload>
|
|
68
|
+
|
|
69
|
+
abstract insert(item: XyoPayload[]): Promisable<XyoBoundWitness>
|
|
70
|
+
|
|
71
|
+
async query(query: XyoArchivistQuery): Promise<XyoModuleQueryResult> {
|
|
72
|
+
if (!this.queries().find((schema) => schema === query.schema)) {
|
|
73
|
+
console.error(`Undeclared Module Query: ${query.schema}`)
|
|
74
|
+
}
|
|
75
|
+
|
|
76
|
+
const payloads: (XyoPayload | null)[] = []
|
|
77
|
+
switch (query.schema) {
|
|
78
|
+
case XyoArchivistAllQuerySchema:
|
|
79
|
+
payloads.push(...(await this.all()))
|
|
80
|
+
break
|
|
81
|
+
case XyoArchivistClearQuerySchema:
|
|
82
|
+
await this.clear()
|
|
83
|
+
break
|
|
84
|
+
case XyoArchivistCommitQuerySchema:
|
|
85
|
+
payloads.push(await this.commit())
|
|
86
|
+
break
|
|
87
|
+
case XyoArchivistDeleteQuerySchema:
|
|
88
|
+
await this.delete(query.hashes)
|
|
89
|
+
break
|
|
90
|
+
case XyoArchivistFindQuerySchema:
|
|
91
|
+
payloads.push(...(await this.find(query.filter)))
|
|
92
|
+
break
|
|
93
|
+
case XyoArchivistGetQuerySchema:
|
|
94
|
+
payloads.push(...(await this.get(query.hashes)))
|
|
95
|
+
break
|
|
96
|
+
case XyoArchivistInsertQuerySchema:
|
|
97
|
+
payloads.push(await this.insert(query.payloads), ...query.payloads)
|
|
98
|
+
break
|
|
99
|
+
}
|
|
100
|
+
return [this.bindPayloads(payloads), payloads]
|
|
101
|
+
}
|
|
102
|
+
|
|
103
|
+
private resolveArchivists(archivists?: Record<string, Module | null | undefined>) {
|
|
104
|
+
const resolved: Record<string, Module | null | undefined> = {}
|
|
105
|
+
if (archivists) {
|
|
106
|
+
Object.entries(archivists).forEach(([key, value]) => {
|
|
107
|
+
resolved[key] = value ?? this.resolver?.(key) ?? null
|
|
108
|
+
})
|
|
109
|
+
}
|
|
110
|
+
return resolved
|
|
111
|
+
}
|
|
112
|
+
|
|
113
|
+
protected async getFromParents(hash: string) {
|
|
114
|
+
return compact(
|
|
115
|
+
await Promise.all(
|
|
116
|
+
Object.values(this.parents?.read ?? {}).map(async (parent) => {
|
|
117
|
+
const query: XyoArchivistGetQuery = { hashes: [hash], schema: XyoArchivistGetQuerySchema }
|
|
118
|
+
const [, payloads] = (await parent?.query(query)) ?? []
|
|
119
|
+
const wrapper = payloads?.[0] ? new XyoPayloadWrapper(payloads?.[0]) : undefined
|
|
120
|
+
if (wrapper && wrapper.hash !== hash) {
|
|
121
|
+
console.warn(`Parent [${parent?.address}] returned payload with invalid hash [${hash} != ${wrapper.hash}]`)
|
|
122
|
+
return null
|
|
123
|
+
}
|
|
124
|
+
return wrapper?.payload
|
|
125
|
+
}),
|
|
126
|
+
),
|
|
127
|
+
)[0]
|
|
128
|
+
}
|
|
129
|
+
|
|
130
|
+
protected async writeToParent(parent: Module, payloads: XyoPayload[]) {
|
|
131
|
+
const query: XyoArchivistInsertQuery = { payloads, schema: XyoArchivistInsertQuerySchema }
|
|
132
|
+
const [, writtenPayloads] = (await parent?.query(query)) ?? []
|
|
133
|
+
return writtenPayloads
|
|
134
|
+
}
|
|
135
|
+
|
|
136
|
+
protected async writeToParents(payloads: XyoPayload[]) {
|
|
137
|
+
return await Promise.all(
|
|
138
|
+
Object.values(this.parents?.write ?? {}).map(async (parent) => {
|
|
139
|
+
return parent ? await this.writeToParent(parent, payloads) : undefined
|
|
140
|
+
}),
|
|
141
|
+
)
|
|
142
|
+
}
|
|
143
|
+
|
|
144
|
+
private _parents?: XyoArchivistParents
|
|
145
|
+
get parents() {
|
|
146
|
+
this._parents = this._parents ?? {
|
|
147
|
+
commit: this.resolveArchivists(this.config?.parents?.commit),
|
|
148
|
+
read: this.resolveArchivists(this.config?.parents?.read),
|
|
149
|
+
write: this.resolveArchivists(this.config?.parents?.write),
|
|
150
|
+
}
|
|
151
|
+
return assertEx(this._parents)
|
|
152
|
+
}
|
|
153
|
+
}
|
|
@@ -1,68 +1,59 @@
|
|
|
1
|
-
import {
|
|
1
|
+
import { XyoBoundWitness } from '@xyo-network/boundwitness'
|
|
2
|
+
import { XyoModuleWrapper } from '@xyo-network/module'
|
|
2
3
|
import { XyoPayload } from '@xyo-network/payload'
|
|
3
4
|
|
|
4
5
|
import { Archivist } from './Archivist'
|
|
5
6
|
import {
|
|
6
|
-
|
|
7
|
-
|
|
8
|
-
|
|
9
|
-
|
|
10
|
-
|
|
11
|
-
|
|
12
|
-
|
|
13
|
-
|
|
14
|
-
|
|
15
|
-
|
|
16
|
-
|
|
17
|
-
|
|
18
|
-
|
|
19
|
-
|
|
20
|
-
} from './
|
|
7
|
+
XyoArchivistAllQuery,
|
|
8
|
+
XyoArchivistAllQuerySchema,
|
|
9
|
+
XyoArchivistClearQuery,
|
|
10
|
+
XyoArchivistClearQuerySchema,
|
|
11
|
+
XyoArchivistCommitQuery,
|
|
12
|
+
XyoArchivistCommitQuerySchema,
|
|
13
|
+
XyoArchivistDeleteQuery,
|
|
14
|
+
XyoArchivistDeleteQuerySchema,
|
|
15
|
+
XyoArchivistFindQuery,
|
|
16
|
+
XyoArchivistFindQuerySchema,
|
|
17
|
+
XyoArchivistGetQuery,
|
|
18
|
+
XyoArchivistGetQuerySchema,
|
|
19
|
+
XyoArchivistInsertQuery,
|
|
20
|
+
XyoArchivistInsertQuerySchema,
|
|
21
|
+
} from './Queries'
|
|
21
22
|
import { XyoPayloadFindFilter } from './XyoPayloadFindFilter'
|
|
22
23
|
|
|
23
|
-
export class XyoArchivistWrapper implements Archivist
|
|
24
|
-
protected module: XyoModule
|
|
25
|
-
|
|
26
|
-
constructor(module: XyoModule) {
|
|
27
|
-
this.module = module
|
|
28
|
-
}
|
|
29
|
-
|
|
30
|
-
public get queries() {
|
|
31
|
-
return this.module.queries
|
|
32
|
-
}
|
|
33
|
-
|
|
24
|
+
export class XyoArchivistWrapper extends XyoModuleWrapper implements Archivist {
|
|
34
25
|
public async delete(hashes: string[]) {
|
|
35
|
-
const query:
|
|
26
|
+
const query: XyoArchivistDeleteQuery = { hashes, schema: XyoArchivistDeleteQuerySchema }
|
|
36
27
|
return (await this.module.query(query))[0].payload_hashes.map(() => true)
|
|
37
28
|
}
|
|
38
29
|
|
|
39
30
|
public async clear(): Promise<void> {
|
|
40
|
-
const query:
|
|
31
|
+
const query: XyoArchivistClearQuery = { schema: XyoArchivistClearQuerySchema }
|
|
41
32
|
await this.module.query(query)
|
|
42
33
|
}
|
|
43
34
|
|
|
44
35
|
public async get(hashes: string[]): Promise<(XyoPayload | null)[]> {
|
|
45
|
-
const query:
|
|
36
|
+
const query: XyoArchivistGetQuery = { hashes, schema: XyoArchivistGetQuerySchema }
|
|
46
37
|
return (await this.module.query(query))[1]
|
|
47
38
|
}
|
|
48
39
|
|
|
49
|
-
public async insert(payloads: XyoPayload[]): Promise<
|
|
50
|
-
const query:
|
|
51
|
-
return (await this.module.query(query))[
|
|
40
|
+
public async insert(payloads: XyoPayload[]): Promise<XyoBoundWitness> {
|
|
41
|
+
const query: XyoArchivistInsertQuery = { payloads, schema: XyoArchivistInsertQuerySchema }
|
|
42
|
+
return (await this.module.query(query))[0]
|
|
52
43
|
}
|
|
53
44
|
|
|
54
45
|
public async find(filter: XyoPayloadFindFilter): Promise<(XyoPayload | null)[]> {
|
|
55
|
-
const query:
|
|
46
|
+
const query: XyoArchivistFindQuery = { filter, schema: XyoArchivistFindQuerySchema }
|
|
56
47
|
return (await this.module.query(query))[1]
|
|
57
48
|
}
|
|
58
49
|
|
|
59
50
|
public async all(): Promise<(XyoPayload | null)[]> {
|
|
60
|
-
const query:
|
|
51
|
+
const query: XyoArchivistAllQuery = { schema: XyoArchivistAllQuerySchema }
|
|
61
52
|
return (await this.module.query(query))[1]
|
|
62
53
|
}
|
|
63
54
|
|
|
64
|
-
public async commit(): Promise<
|
|
65
|
-
const query:
|
|
66
|
-
return (await this.module.query(query))[
|
|
55
|
+
public async commit(): Promise<XyoBoundWitness> {
|
|
56
|
+
const query: XyoArchivistCommitQuery = { schema: XyoArchivistCommitQuerySchema }
|
|
57
|
+
return (await this.module.query(query))[0]
|
|
67
58
|
}
|
|
68
59
|
}
|
|
@@ -0,0 +1,176 @@
|
|
|
1
|
+
import { assertEx } from '@xylabs/sdk-js'
|
|
2
|
+
import { XyoBoundWitness } from '@xyo-network/boundwitness'
|
|
3
|
+
import { XyoPayload, XyoPayloadWrapper } from '@xyo-network/payload'
|
|
4
|
+
import { PromisableArray } from '@xyo-network/promisable'
|
|
5
|
+
import Cookies from 'js-cookie'
|
|
6
|
+
import compact from 'lodash/compact'
|
|
7
|
+
|
|
8
|
+
import { XyoArchivistConfig } from './Config'
|
|
9
|
+
import { PartialArchivistConfig } from './PartialArchivistConfig'
|
|
10
|
+
import {
|
|
11
|
+
XyoArchivistAllQuerySchema,
|
|
12
|
+
XyoArchivistClearQuerySchema,
|
|
13
|
+
XyoArchivistCommitQuerySchema,
|
|
14
|
+
XyoArchivistDeleteQuerySchema,
|
|
15
|
+
XyoArchivistFindQuerySchema,
|
|
16
|
+
XyoArchivistInsertQuery,
|
|
17
|
+
XyoArchivistInsertQuerySchema,
|
|
18
|
+
} from './Queries'
|
|
19
|
+
import { XyoArchivist } from './XyoArchivist'
|
|
20
|
+
import { XyoPayloadFindFilter } from './XyoPayloadFindFilter'
|
|
21
|
+
|
|
22
|
+
export type XyoCookieArchivistConfigSchema = 'network.xyo.module.config.archivist.cookie'
|
|
23
|
+
export const XyoCookieArchivistConfigSchema: XyoCookieArchivistConfigSchema = 'network.xyo.module.config.archivist.cookie'
|
|
24
|
+
|
|
25
|
+
export type XyoCookieArchivistConfig = XyoArchivistConfig<{
|
|
26
|
+
schema: XyoCookieArchivistConfigSchema
|
|
27
|
+
domain?: string
|
|
28
|
+
maxEntries?: number
|
|
29
|
+
maxEntrySize?: number
|
|
30
|
+
namespace?: string
|
|
31
|
+
}>
|
|
32
|
+
|
|
33
|
+
class CookieArchivistError extends Error {
|
|
34
|
+
constructor(action: string, error: Error['cause'], message?: string) {
|
|
35
|
+
super(`Cookie Archivist [${action}] failed${message ? ` (${message})` : ''}`, { cause: error })
|
|
36
|
+
}
|
|
37
|
+
}
|
|
38
|
+
|
|
39
|
+
export class XyoCookieArchivist extends XyoArchivist<XyoCookieArchivistConfig> {
|
|
40
|
+
public get domain() {
|
|
41
|
+
return this.config?.domain
|
|
42
|
+
}
|
|
43
|
+
|
|
44
|
+
public get namespace() {
|
|
45
|
+
return this.config?.namespace ?? 'xyoarch'
|
|
46
|
+
}
|
|
47
|
+
|
|
48
|
+
public get maxEntries() {
|
|
49
|
+
//all browsers support at least 60 cookies
|
|
50
|
+
return this.config?.maxEntries ?? 60
|
|
51
|
+
}
|
|
52
|
+
|
|
53
|
+
public get maxEntrySize() {
|
|
54
|
+
//all browsers support at least 4000 length per cookie
|
|
55
|
+
return this.config?.maxEntrySize ?? 4000
|
|
56
|
+
}
|
|
57
|
+
|
|
58
|
+
public override queries() {
|
|
59
|
+
return [
|
|
60
|
+
XyoArchivistAllQuerySchema,
|
|
61
|
+
XyoArchivistDeleteQuerySchema,
|
|
62
|
+
XyoArchivistClearQuerySchema,
|
|
63
|
+
XyoArchivistFindQuerySchema,
|
|
64
|
+
XyoArchivistCommitQuerySchema,
|
|
65
|
+
...super.queries(),
|
|
66
|
+
]
|
|
67
|
+
}
|
|
68
|
+
|
|
69
|
+
constructor(config?: PartialArchivistConfig<XyoCookieArchivistConfig>) {
|
|
70
|
+
super({ ...config, schema: XyoCookieArchivistConfigSchema })
|
|
71
|
+
}
|
|
72
|
+
|
|
73
|
+
private keyFromHash(hash: string) {
|
|
74
|
+
return `${this.namespace}-${hash}`
|
|
75
|
+
}
|
|
76
|
+
|
|
77
|
+
public delete(hashes: string[]): PromisableArray<boolean> {
|
|
78
|
+
try {
|
|
79
|
+
return hashes.map((hash) => {
|
|
80
|
+
Cookies.remove(this.keyFromHash(hash))
|
|
81
|
+
return true
|
|
82
|
+
})
|
|
83
|
+
} catch (ex) {
|
|
84
|
+
throw new CookieArchivistError('delete', ex, 'unexpected')
|
|
85
|
+
}
|
|
86
|
+
}
|
|
87
|
+
|
|
88
|
+
public override clear(): void | Promise<void> {
|
|
89
|
+
try {
|
|
90
|
+
Object.entries(Cookies.get()).map(([key]) => {
|
|
91
|
+
if (key.startsWith(`${this.namespace}-`)) {
|
|
92
|
+
Cookies.remove(key)
|
|
93
|
+
}
|
|
94
|
+
})
|
|
95
|
+
} catch (ex) {
|
|
96
|
+
throw new CookieArchivistError('clear', ex, 'unexpected')
|
|
97
|
+
}
|
|
98
|
+
}
|
|
99
|
+
|
|
100
|
+
public async get(hashes: string[]): Promise<(XyoPayload | null)[]> {
|
|
101
|
+
try {
|
|
102
|
+
return await Promise.all(
|
|
103
|
+
hashes.map(async (hash) => {
|
|
104
|
+
const cookieString = Cookies.get(this.keyFromHash(hash))
|
|
105
|
+
return cookieString ? JSON.parse(cookieString) : (await this.getFromParents(hash)) ?? null
|
|
106
|
+
}),
|
|
107
|
+
)
|
|
108
|
+
} catch (ex) {
|
|
109
|
+
throw new CookieArchivistError('get', ex, 'unexpected')
|
|
110
|
+
}
|
|
111
|
+
}
|
|
112
|
+
|
|
113
|
+
public async insert(payloads: XyoPayload[]): Promise<XyoBoundWitness> {
|
|
114
|
+
try {
|
|
115
|
+
const storedPayloads = payloads.map((payload) => {
|
|
116
|
+
const wrapper = new XyoPayloadWrapper(payload)
|
|
117
|
+
const key = this.keyFromHash(wrapper.hash)
|
|
118
|
+
const value = JSON.stringify(wrapper.payload)
|
|
119
|
+
assertEx(value.length < this.maxEntrySize, `Payload too large [${wrapper.hash}, ${value.length}]`)
|
|
120
|
+
Cookies.set(key, JSON.stringify(wrapper.payload))
|
|
121
|
+
return wrapper.payload
|
|
122
|
+
})
|
|
123
|
+
const boundwitness = this.bindPayloads(storedPayloads)
|
|
124
|
+
if (this.writeThrough) {
|
|
125
|
+
await this.writeToParents([boundwitness, ...storedPayloads])
|
|
126
|
+
}
|
|
127
|
+
return boundwitness
|
|
128
|
+
} catch (ex) {
|
|
129
|
+
throw new CookieArchivistError('insert', ex, 'unexpected')
|
|
130
|
+
}
|
|
131
|
+
}
|
|
132
|
+
|
|
133
|
+
public async find(filter: XyoPayloadFindFilter): Promise<XyoPayload[]> {
|
|
134
|
+
try {
|
|
135
|
+
const x = (await this.all()).filter((payload) => {
|
|
136
|
+
if (filter.schema && filter.schema !== payload.schema) {
|
|
137
|
+
return false
|
|
138
|
+
}
|
|
139
|
+
return true
|
|
140
|
+
})
|
|
141
|
+
return x
|
|
142
|
+
} catch (ex) {
|
|
143
|
+
throw new CookieArchivistError('find', ex, 'unexpected')
|
|
144
|
+
}
|
|
145
|
+
}
|
|
146
|
+
|
|
147
|
+
public all(): PromisableArray<XyoPayload> {
|
|
148
|
+
try {
|
|
149
|
+
return Object.entries(Cookies.get())
|
|
150
|
+
.filter(([key]) => key.startsWith(`${this.namespace}-`))
|
|
151
|
+
.map(([, value]) => JSON.parse(value))
|
|
152
|
+
} catch (ex) {
|
|
153
|
+
throw new CookieArchivistError('all', ex, 'unexpected')
|
|
154
|
+
}
|
|
155
|
+
}
|
|
156
|
+
|
|
157
|
+
public async commit(): Promise<XyoBoundWitness> {
|
|
158
|
+
try {
|
|
159
|
+
const payloads = await this.all()
|
|
160
|
+
assertEx(payloads.length > 0, 'Nothing to commit')
|
|
161
|
+
const block = this.bindPayloads(payloads)
|
|
162
|
+
await Promise.allSettled(
|
|
163
|
+
compact(
|
|
164
|
+
Object.values(this.parents?.commit ?? [])?.map(async (parent) => {
|
|
165
|
+
const query: XyoArchivistInsertQuery = { payloads: [block, ...payloads], schema: XyoArchivistInsertQuerySchema }
|
|
166
|
+
return await parent?.query(query)
|
|
167
|
+
}),
|
|
168
|
+
),
|
|
169
|
+
)
|
|
170
|
+
await this.clear()
|
|
171
|
+
return block
|
|
172
|
+
} catch (ex) {
|
|
173
|
+
throw new CookieArchivistError('commit', ex, 'unexpected')
|
|
174
|
+
}
|
|
175
|
+
}
|
|
176
|
+
}
|