@xyo-network/archivist 2.31.4 → 2.32.0-rc.2
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 +122 -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 +34 -37
- 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 +17381 -5336
- 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 +102 -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 +22 -23
- 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 +147 -0
- package/src/XyoArchivistWrapper.ts +29 -38
- package/src/XyoCookieArchivist.ts +176 -0
- package/src/XyoMemoryArchivist.ts +33 -42
- 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
|
@@ -0,0 +1,139 @@
|
|
|
1
|
+
import { assertEx } from '@xylabs/sdk-js';
|
|
2
|
+
import { XyoPayloadWrapper } from '@xyo-network/payload';
|
|
3
|
+
import Cookies from 'js-cookie';
|
|
4
|
+
import compact from 'lodash/compact';
|
|
5
|
+
import { XyoArchivistAllQuerySchema, XyoArchivistClearQuerySchema, XyoArchivistCommitQuerySchema, XyoArchivistDeleteQuerySchema, XyoArchivistFindQuerySchema, XyoArchivistInsertQuerySchema, } from './Queries';
|
|
6
|
+
import { XyoArchivist } from './XyoArchivist';
|
|
7
|
+
export const XyoCookieArchivistConfigSchema = 'network.xyo.module.config.archivist.cookie';
|
|
8
|
+
class CookieArchivistError extends Error {
|
|
9
|
+
constructor(action, error, message) {
|
|
10
|
+
super(`Cookie Archivist [${action}] failed${message ? ` (${message})` : ''}`, { cause: error });
|
|
11
|
+
}
|
|
12
|
+
}
|
|
13
|
+
export class XyoCookieArchivist extends XyoArchivist {
|
|
14
|
+
get domain() {
|
|
15
|
+
return this.config?.domain;
|
|
16
|
+
}
|
|
17
|
+
get namespace() {
|
|
18
|
+
return this.config?.namespace ?? 'xyoarch';
|
|
19
|
+
}
|
|
20
|
+
get maxEntries() {
|
|
21
|
+
//all browsers support at least 60 cookies
|
|
22
|
+
return this.config?.maxEntries ?? 60;
|
|
23
|
+
}
|
|
24
|
+
get maxEntrySize() {
|
|
25
|
+
//all browsers support at least 4000 length per cookie
|
|
26
|
+
return this.config?.maxEntrySize ?? 4000;
|
|
27
|
+
}
|
|
28
|
+
get queries() {
|
|
29
|
+
return [
|
|
30
|
+
...super.queries,
|
|
31
|
+
XyoArchivistAllQuerySchema,
|
|
32
|
+
XyoArchivistDeleteQuerySchema,
|
|
33
|
+
XyoArchivistClearQuerySchema,
|
|
34
|
+
XyoArchivistFindQuerySchema,
|
|
35
|
+
XyoArchivistCommitQuerySchema,
|
|
36
|
+
];
|
|
37
|
+
}
|
|
38
|
+
constructor(config) {
|
|
39
|
+
super({ ...config, schema: XyoCookieArchivistConfigSchema });
|
|
40
|
+
}
|
|
41
|
+
keyFromHash(hash) {
|
|
42
|
+
return `${this.namespace}-${hash}`;
|
|
43
|
+
}
|
|
44
|
+
delete(hashes) {
|
|
45
|
+
try {
|
|
46
|
+
return hashes.map((hash) => {
|
|
47
|
+
Cookies.remove(this.keyFromHash(hash));
|
|
48
|
+
return true;
|
|
49
|
+
});
|
|
50
|
+
}
|
|
51
|
+
catch (ex) {
|
|
52
|
+
throw new CookieArchivistError('delete', ex, 'unexpected');
|
|
53
|
+
}
|
|
54
|
+
}
|
|
55
|
+
clear() {
|
|
56
|
+
try {
|
|
57
|
+
Object.entries(Cookies.get()).map(([key]) => {
|
|
58
|
+
if (key.startsWith(`${this.namespace}-`)) {
|
|
59
|
+
Cookies.remove(key);
|
|
60
|
+
}
|
|
61
|
+
});
|
|
62
|
+
}
|
|
63
|
+
catch (ex) {
|
|
64
|
+
throw new CookieArchivistError('clear', ex, 'unexpected');
|
|
65
|
+
}
|
|
66
|
+
}
|
|
67
|
+
async get(hashes) {
|
|
68
|
+
try {
|
|
69
|
+
return await Promise.all(hashes.map(async (hash) => {
|
|
70
|
+
const cookieString = Cookies.get(this.keyFromHash(hash));
|
|
71
|
+
return cookieString ? JSON.parse(cookieString) : (await this.getFromParents(hash)) ?? null;
|
|
72
|
+
}));
|
|
73
|
+
}
|
|
74
|
+
catch (ex) {
|
|
75
|
+
throw new CookieArchivistError('get', ex, 'unexpected');
|
|
76
|
+
}
|
|
77
|
+
}
|
|
78
|
+
async insert(payloads) {
|
|
79
|
+
try {
|
|
80
|
+
const storedPayloads = payloads.map((payload) => {
|
|
81
|
+
const wrapper = new XyoPayloadWrapper(payload);
|
|
82
|
+
const key = this.keyFromHash(wrapper.hash);
|
|
83
|
+
const value = JSON.stringify(wrapper.payload);
|
|
84
|
+
assertEx(value.length < this.maxEntrySize, `Payload too large [${wrapper.hash}, ${value.length}]`);
|
|
85
|
+
Cookies.set(key, JSON.stringify(wrapper.payload));
|
|
86
|
+
return wrapper.payload;
|
|
87
|
+
});
|
|
88
|
+
const boundwitness = this.bindPayloads(storedPayloads);
|
|
89
|
+
if (this.writeThrough) {
|
|
90
|
+
await this.writeToParents([boundwitness, ...storedPayloads]);
|
|
91
|
+
}
|
|
92
|
+
return boundwitness;
|
|
93
|
+
}
|
|
94
|
+
catch (ex) {
|
|
95
|
+
throw new CookieArchivistError('insert', ex, 'unexpected');
|
|
96
|
+
}
|
|
97
|
+
}
|
|
98
|
+
async find(filter) {
|
|
99
|
+
try {
|
|
100
|
+
const x = (await this.all()).filter((payload) => {
|
|
101
|
+
if (filter.schema && filter.schema !== payload.schema) {
|
|
102
|
+
return false;
|
|
103
|
+
}
|
|
104
|
+
return true;
|
|
105
|
+
});
|
|
106
|
+
return x;
|
|
107
|
+
}
|
|
108
|
+
catch (ex) {
|
|
109
|
+
throw new CookieArchivistError('find', ex, 'unexpected');
|
|
110
|
+
}
|
|
111
|
+
}
|
|
112
|
+
all() {
|
|
113
|
+
try {
|
|
114
|
+
return Object.entries(Cookies.get())
|
|
115
|
+
.filter(([key]) => key.startsWith(`${this.namespace}-`))
|
|
116
|
+
.map(([, value]) => JSON.parse(value));
|
|
117
|
+
}
|
|
118
|
+
catch (ex) {
|
|
119
|
+
throw new CookieArchivistError('all', ex, 'unexpected');
|
|
120
|
+
}
|
|
121
|
+
}
|
|
122
|
+
async commit() {
|
|
123
|
+
try {
|
|
124
|
+
const payloads = await this.all();
|
|
125
|
+
assertEx(payloads.length > 0, 'Nothing to commit');
|
|
126
|
+
const block = this.bindPayloads(payloads);
|
|
127
|
+
await Promise.allSettled(compact(Object.values(this.parents?.commit ?? [])?.map(async (parent) => {
|
|
128
|
+
const query = { payloads: [block, ...payloads], schema: XyoArchivistInsertQuerySchema };
|
|
129
|
+
return await parent?.query(query);
|
|
130
|
+
})));
|
|
131
|
+
await this.clear();
|
|
132
|
+
return block;
|
|
133
|
+
}
|
|
134
|
+
catch (ex) {
|
|
135
|
+
throw new CookieArchivistError('commit', ex, 'unexpected');
|
|
136
|
+
}
|
|
137
|
+
}
|
|
138
|
+
}
|
|
139
|
+
//# sourceMappingURL=XyoCookieArchivist.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"XyoCookieArchivist.js","sourceRoot":"","sources":["../../src/XyoCookieArchivist.ts"],"names":[],"mappings":"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"}
|
|
@@ -1,8 +1,9 @@
|
|
|
1
|
+
import { XyoBoundWitness } from '@xyo-network/boundwitness';
|
|
1
2
|
import { XyoPayload } from '@xyo-network/payload';
|
|
2
3
|
import { PromisableArray } from '@xyo-network/promisable';
|
|
3
|
-
import { XyoArchivist } from './Abstract';
|
|
4
4
|
import { XyoArchivistConfig } from './Config';
|
|
5
5
|
import { PartialArchivistConfig } from './PartialArchivistConfig';
|
|
6
|
+
import { XyoArchivist } from './XyoArchivist';
|
|
6
7
|
import { XyoPayloadFindFilter } from './XyoPayloadFindFilter';
|
|
7
8
|
export declare type XyoMemoryArchivistConfigSchema = 'network.xyo.module.config.archivist.memory';
|
|
8
9
|
export declare const XyoMemoryArchivistConfigSchema: XyoMemoryArchivistConfigSchema;
|
|
@@ -13,20 +14,14 @@ export declare type XyoMemoryArchivistConfig = XyoArchivistConfig<{
|
|
|
13
14
|
export declare class XyoMemoryArchivist extends XyoArchivist<XyoMemoryArchivistConfig> {
|
|
14
15
|
get max(): number;
|
|
15
16
|
private cache;
|
|
16
|
-
get queries(): import("./
|
|
17
|
-
constructor(config
|
|
17
|
+
get queries(): import("./Queries").XyoArchivistQuerySchema<never>[];
|
|
18
|
+
constructor(config?: PartialArchivistConfig<XyoMemoryArchivistConfig>);
|
|
18
19
|
delete(hashes: string[]): PromisableArray<boolean>;
|
|
19
20
|
clear(): void | Promise<void>;
|
|
20
|
-
protected getFromParents(hash: string): Promise<{
|
|
21
|
-
schema: string;
|
|
22
|
-
previousHash?: string | undefined;
|
|
23
|
-
sources?: string[] | undefined;
|
|
24
|
-
timestamp?: number | undefined;
|
|
25
|
-
}>;
|
|
26
21
|
get(hashes: string[]): Promise<(XyoPayload | null)[]>;
|
|
27
|
-
insert(payloads: XyoPayload[]):
|
|
22
|
+
insert(payloads: XyoPayload[]): Promise<XyoBoundWitness>;
|
|
28
23
|
find<R extends XyoPayload = XyoPayload>(filter: XyoPayloadFindFilter): PromisableArray<R>;
|
|
29
|
-
all():
|
|
30
|
-
commit(): Promise<
|
|
24
|
+
all(): PromisableArray<XyoPayload>;
|
|
25
|
+
commit(): Promise<XyoBoundWitness>;
|
|
31
26
|
}
|
|
32
27
|
//# sourceMappingURL=XyoMemoryArchivist.d.ts.map
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"XyoMemoryArchivist.d.ts","sourceRoot":"","sources":["../../src/XyoMemoryArchivist.ts"],"names":[],"mappings":"
|
|
1
|
+
{"version":3,"file":"XyoMemoryArchivist.d.ts","sourceRoot":"","sources":["../../src/XyoMemoryArchivist.ts"],"names":[],"mappings":"AACA,OAAO,EAAE,eAAe,EAAE,MAAM,2BAA2B,CAAA;AAC3D,OAAO,EAAE,UAAU,EAAqB,MAAM,sBAAsB,CAAA;AACpE,OAAO,EAAE,eAAe,EAAE,MAAM,yBAAyB,CAAA;AAIzD,OAAO,EAAE,kBAAkB,EAAE,MAAM,UAAU,CAAA;AAC7C,OAAO,EAAE,sBAAsB,EAAE,MAAM,0BAA0B,CAAA;AAUjE,OAAO,EAAE,YAAY,EAAE,MAAM,gBAAgB,CAAA;AAC7C,OAAO,EAAE,oBAAoB,EAAE,MAAM,wBAAwB,CAAA;AAE7D,oBAAY,8BAA8B,GAAG,4CAA4C,CAAA;AACzF,eAAO,MAAM,8BAA8B,EAAE,8BAA6E,CAAA;AAE1H,oBAAY,wBAAwB,GAAG,kBAAkB,CAAC;IACxD,MAAM,EAAE,8BAA8B,CAAA;IACtC,GAAG,CAAC,EAAE,MAAM,CAAA;CACb,CAAC,CAAA;AAQF,qBAAa,kBAAmB,SAAQ,YAAY,CAAC,wBAAwB,CAAC;IAC5E,IAAW,GAAG,WAEb;IAED,OAAO,CAAC,KAAK,CAA8B;IAE3C,IAAoB,OAAO,yDAS1B;gBAEW,MAAM,CAAC,EAAE,sBAAsB,CAAC,wBAAwB,CAAC;IAK9D,MAAM,CAAC,MAAM,EAAE,MAAM,EAAE,GAAG,eAAe,CAAC,OAAO,CAAC;IAUzC,KAAK,IAAI,IAAI,GAAG,OAAO,CAAC,IAAI,CAAC;IAQhC,GAAG,CAAC,MAAM,EAAE,MAAM,EAAE,GAAG,OAAO,CAAC,CAAC,UAAU,GAAG,IAAI,CAAC,EAAE,CAAC;IAgBrD,MAAM,CAAC,QAAQ,EAAE,UAAU,EAAE,GAAG,OAAO,CAAC,eAAe,CAAC;IAkB9D,IAAI,CAAC,CAAC,SAAS,UAAU,GAAG,UAAU,EAAE,MAAM,EAAE,oBAAoB,GAAG,eAAe,CAAC,CAAC,CAAC;IAczF,GAAG,IAAI,eAAe,CAAC,UAAU,CAAC;IAQ5B,MAAM,IAAI,OAAO,CAAC,eAAe,CAAC;CAkBhD"}
|
|
@@ -1,10 +1,9 @@
|
|
|
1
1
|
import { assertEx } from '@xylabs/sdk-js';
|
|
2
|
-
import { XyoBoundWitnessBuilder } from '@xyo-network/boundwitness';
|
|
3
2
|
import { XyoPayloadWrapper } from '@xyo-network/payload';
|
|
4
3
|
import compact from 'lodash/compact';
|
|
5
4
|
import LruCache from 'lru-cache';
|
|
6
|
-
import {
|
|
7
|
-
import {
|
|
5
|
+
import { XyoArchivistAllQuerySchema, XyoArchivistClearQuerySchema, XyoArchivistCommitQuerySchema, XyoArchivistDeleteQuerySchema, XyoArchivistFindQuerySchema, XyoArchivistInsertQuerySchema, } from './Queries';
|
|
6
|
+
import { XyoArchivist } from './XyoArchivist';
|
|
8
7
|
export const XyoMemoryArchivistConfigSchema = 'network.xyo.module.config.archivist.memory';
|
|
9
8
|
class MemoryArchivistError extends Error {
|
|
10
9
|
constructor(action, error, message) {
|
|
@@ -19,11 +18,11 @@ export class XyoMemoryArchivist extends XyoArchivist {
|
|
|
19
18
|
get queries() {
|
|
20
19
|
return [
|
|
21
20
|
...super.queries,
|
|
22
|
-
|
|
23
|
-
|
|
24
|
-
|
|
25
|
-
|
|
26
|
-
|
|
21
|
+
XyoArchivistAllQuerySchema,
|
|
22
|
+
XyoArchivistDeleteQuerySchema,
|
|
23
|
+
XyoArchivistClearQuerySchema,
|
|
24
|
+
XyoArchivistFindQuerySchema,
|
|
25
|
+
XyoArchivistCommitQuerySchema,
|
|
27
26
|
];
|
|
28
27
|
}
|
|
29
28
|
constructor(config) {
|
|
@@ -48,31 +47,33 @@ export class XyoMemoryArchivist extends XyoArchivist {
|
|
|
48
47
|
throw new MemoryArchivistError('clear', ex, 'unexpected');
|
|
49
48
|
}
|
|
50
49
|
}
|
|
51
|
-
async getFromParents(hash) {
|
|
52
|
-
return compact(await Promise.all(compact(Object.values(this.parents?.read ?? {}).map(async (parent) => {
|
|
53
|
-
const query = { hashes: [hash], schema: XyoArchivistGetQueryPayloadSchema };
|
|
54
|
-
const [, payloads] = (await parent?.query(query)) ?? [];
|
|
55
|
-
return payloads?.[0];
|
|
56
|
-
}))))[0];
|
|
57
|
-
}
|
|
58
50
|
async get(hashes) {
|
|
59
51
|
try {
|
|
60
52
|
return await Promise.all(hashes.map(async (hash) => {
|
|
61
|
-
|
|
53
|
+
const payload = this.cache.get(hash) ?? (await this.getFromParents(hash)) ?? null;
|
|
54
|
+
if (this.cacheParentReads) {
|
|
55
|
+
this.cache.set(hash, payload);
|
|
56
|
+
}
|
|
57
|
+
return payload;
|
|
62
58
|
}));
|
|
63
59
|
}
|
|
64
60
|
catch (ex) {
|
|
65
61
|
throw new MemoryArchivistError('get', ex, 'unexpected');
|
|
66
62
|
}
|
|
67
63
|
}
|
|
68
|
-
insert(payloads) {
|
|
64
|
+
async insert(payloads) {
|
|
69
65
|
try {
|
|
70
|
-
|
|
66
|
+
payloads.map((payload) => {
|
|
71
67
|
const wrapper = new XyoPayloadWrapper(payload);
|
|
72
68
|
const payloadWithmeta = { ...payload, _hash: wrapper.hash, _timestamp: Date.now() };
|
|
73
69
|
this.cache.set(payloadWithmeta._hash, payloadWithmeta);
|
|
74
70
|
return payloadWithmeta;
|
|
75
71
|
});
|
|
72
|
+
const boundwitness = this.bindPayloads(payloads);
|
|
73
|
+
if (this.writeThrough) {
|
|
74
|
+
await this.writeToParents(payloads);
|
|
75
|
+
}
|
|
76
|
+
return boundwitness;
|
|
76
77
|
}
|
|
77
78
|
catch (ex) {
|
|
78
79
|
throw new MemoryArchivistError('insert', ex, 'unexpected');
|
|
@@ -102,16 +103,14 @@ export class XyoMemoryArchivist extends XyoArchivist {
|
|
|
102
103
|
}
|
|
103
104
|
async commit() {
|
|
104
105
|
try {
|
|
105
|
-
const account = assertEx(this.account, 'Account is required for commit');
|
|
106
106
|
const payloads = assertEx(await this.all(), 'Nothing to commit');
|
|
107
|
-
const
|
|
108
|
-
const block = builder.payloads(payloads).witness(account).build();
|
|
107
|
+
const block = this.bindPayloads(payloads);
|
|
109
108
|
await Promise.allSettled(compact(Object.values(this.parents?.commit ?? [])?.map(async (parent) => {
|
|
110
|
-
const query = { payloads: [block, ...payloads], schema:
|
|
109
|
+
const query = { payloads: [block, ...payloads], schema: XyoArchivistInsertQuerySchema };
|
|
111
110
|
return await parent?.query(query);
|
|
112
111
|
})));
|
|
113
112
|
await this.clear();
|
|
114
|
-
return
|
|
113
|
+
return block;
|
|
115
114
|
}
|
|
116
115
|
catch (ex) {
|
|
117
116
|
throw new MemoryArchivistError('commit', ex, 'unexpected');
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"XyoMemoryArchivist.js","sourceRoot":"","sources":["../../src/XyoMemoryArchivist.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,QAAQ,EAAE,MAAM,gBAAgB,CAAA;
|
|
1
|
+
{"version":3,"file":"XyoMemoryArchivist.js","sourceRoot":"","sources":["../../src/XyoMemoryArchivist.ts"],"names":[],"mappings":"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"}
|
|
@@ -0,0 +1,33 @@
|
|
|
1
|
+
import { XyoBoundWitness } from '@xyo-network/boundwitness';
|
|
2
|
+
import { XyoPayload } from '@xyo-network/payload';
|
|
3
|
+
import { PromisableArray } from '@xyo-network/promisable';
|
|
4
|
+
import { XyoArchivistConfig } from './Config';
|
|
5
|
+
import { PartialArchivistConfig } from './PartialArchivistConfig';
|
|
6
|
+
import { XyoArchivist } from './XyoArchivist';
|
|
7
|
+
import { XyoPayloadFindFilter } from './XyoPayloadFindFilter';
|
|
8
|
+
export declare type XyoStorageArchivistConfigSchema = 'network.xyo.module.config.archivist.storage';
|
|
9
|
+
export declare const XyoStorageArchivistConfigSchema: XyoStorageArchivistConfigSchema;
|
|
10
|
+
export declare type XyoStorageArchivistConfig = XyoArchivistConfig<{
|
|
11
|
+
schema: XyoStorageArchivistConfigSchema;
|
|
12
|
+
type?: 'local' | 'session' | 'page';
|
|
13
|
+
namespace?: string;
|
|
14
|
+
maxEntries?: number;
|
|
15
|
+
maxEntrySize?: number;
|
|
16
|
+
}>;
|
|
17
|
+
export declare class XyoStorageArchivist extends XyoArchivist<XyoStorageArchivistConfig> {
|
|
18
|
+
get type(): "local" | "session" | "page";
|
|
19
|
+
get namespace(): string;
|
|
20
|
+
get maxEntries(): number;
|
|
21
|
+
get maxEntrySize(): number;
|
|
22
|
+
get queries(): import("./Queries").XyoArchivistQuerySchema<never>[];
|
|
23
|
+
private storage;
|
|
24
|
+
constructor(config?: PartialArchivistConfig<XyoStorageArchivistConfig>);
|
|
25
|
+
delete(hashes: string[]): PromisableArray<boolean>;
|
|
26
|
+
clear(): void | Promise<void>;
|
|
27
|
+
get(hashes: string[]): Promise<(XyoPayload | null)[]>;
|
|
28
|
+
insert(payloads: XyoPayload[]): Promise<XyoBoundWitness>;
|
|
29
|
+
find(filter: XyoPayloadFindFilter): Promise<XyoPayload[]>;
|
|
30
|
+
all(): PromisableArray<XyoPayload>;
|
|
31
|
+
commit(): Promise<XyoBoundWitness>;
|
|
32
|
+
}
|
|
33
|
+
//# sourceMappingURL=XyoStorageArchivist.d.ts.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"XyoStorageArchivist.d.ts","sourceRoot":"","sources":["../../src/XyoStorageArchivist.ts"],"names":[],"mappings":"AACA,OAAO,EAAE,eAAe,EAAE,MAAM,2BAA2B,CAAA;AAC3D,OAAO,EAAE,UAAU,EAAqB,MAAM,sBAAsB,CAAA;AACpE,OAAO,EAAE,eAAe,EAAE,MAAM,yBAAyB,CAAA;AAIzD,OAAO,EAAE,kBAAkB,EAAE,MAAM,UAAU,CAAA;AAC7C,OAAO,EAAE,sBAAsB,EAAE,MAAM,0BAA0B,CAAA;AAUjE,OAAO,EAAE,YAAY,EAAE,MAAM,gBAAgB,CAAA;AAC7C,OAAO,EAAE,oBAAoB,EAAE,MAAM,wBAAwB,CAAA;AAE7D,oBAAY,+BAA+B,GAAG,6CAA6C,CAAA;AAC3F,eAAO,MAAM,+BAA+B,EAAE,+BAA+E,CAAA;AAE7H,oBAAY,yBAAyB,GAAG,kBAAkB,CAAC;IACzD,MAAM,EAAE,+BAA+B,CAAA;IACvC,IAAI,CAAC,EAAE,OAAO,GAAG,SAAS,GAAG,MAAM,CAAA;IACnC,SAAS,CAAC,EAAE,MAAM,CAAA;IAClB,UAAU,CAAC,EAAE,MAAM,CAAA;IACnB,YAAY,CAAC,EAAE,MAAM,CAAA;CACtB,CAAC,CAAA;AAQF,qBAAa,mBAAoB,SAAQ,YAAY,CAAC,yBAAyB,CAAC;IAC9E,IAAW,IAAI,iCAEd;IAED,IAAW,SAAS,WAEnB;IAED,IAAW,UAAU,WAEpB;IAED,IAAW,YAAY,WAEtB;IAED,IAAoB,OAAO,yDAS1B;IAED,OAAO,CAAC,OAAO,CAAW;gBAEd,MAAM,CAAC,EAAE,sBAAsB,CAAC,yBAAyB,CAAC;IAK/D,MAAM,CAAC,MAAM,EAAE,MAAM,EAAE,GAAG,eAAe,CAAC,OAAO,CAAC;IAWzC,KAAK,IAAI,IAAI,GAAG,OAAO,CAAC,IAAI,CAAC;IAQhC,GAAG,CAAC,MAAM,EAAE,MAAM,EAAE,GAAG,OAAO,CAAC,CAAC,UAAU,GAAG,IAAI,CAAC,EAAE,CAAC;IAarD,MAAM,CAAC,QAAQ,EAAE,UAAU,EAAE,GAAG,OAAO,CAAC,eAAe,CAAC;IAoBxD,IAAI,CAAC,MAAM,EAAE,oBAAoB,GAAG,OAAO,CAAC,UAAU,EAAE,CAAC;IAc/D,GAAG,IAAI,eAAe,CAAC,UAAU,CAAC;IAU5B,MAAM,IAAI,OAAO,CAAC,eAAe,CAAC;CAmBhD"}
|
|
@@ -0,0 +1,132 @@
|
|
|
1
|
+
import { assertEx } from '@xylabs/sdk-js';
|
|
2
|
+
import { XyoPayloadWrapper } from '@xyo-network/payload';
|
|
3
|
+
import compact from 'lodash/compact';
|
|
4
|
+
import store from 'store2';
|
|
5
|
+
import { XyoArchivistAllQuerySchema, XyoArchivistClearQuerySchema, XyoArchivistCommitQuerySchema, XyoArchivistDeleteQuerySchema, XyoArchivistFindQuerySchema, XyoArchivistInsertQuerySchema, } from './Queries';
|
|
6
|
+
import { XyoArchivist } from './XyoArchivist';
|
|
7
|
+
export const XyoStorageArchivistConfigSchema = 'network.xyo.module.config.archivist.storage';
|
|
8
|
+
class StorageArchivistError extends Error {
|
|
9
|
+
constructor(action, error, message) {
|
|
10
|
+
super(`Storage Archivist [${action}] failed${message ? ` (${message})` : ''}`, { cause: error });
|
|
11
|
+
}
|
|
12
|
+
}
|
|
13
|
+
export class XyoStorageArchivist extends XyoArchivist {
|
|
14
|
+
get type() {
|
|
15
|
+
return this.config?.type ?? 'local';
|
|
16
|
+
}
|
|
17
|
+
get namespace() {
|
|
18
|
+
return this.config?.namespace ?? 'xyoarch';
|
|
19
|
+
}
|
|
20
|
+
get maxEntries() {
|
|
21
|
+
return this.config?.maxEntries ?? 1000;
|
|
22
|
+
}
|
|
23
|
+
get maxEntrySize() {
|
|
24
|
+
return this.config?.maxEntries ?? 16000;
|
|
25
|
+
}
|
|
26
|
+
get queries() {
|
|
27
|
+
return [
|
|
28
|
+
...super.queries,
|
|
29
|
+
XyoArchivistAllQuerySchema,
|
|
30
|
+
XyoArchivistDeleteQuerySchema,
|
|
31
|
+
XyoArchivistClearQuerySchema,
|
|
32
|
+
XyoArchivistFindQuerySchema,
|
|
33
|
+
XyoArchivistCommitQuerySchema,
|
|
34
|
+
];
|
|
35
|
+
}
|
|
36
|
+
storage;
|
|
37
|
+
constructor(config) {
|
|
38
|
+
super({ ...config, schema: XyoStorageArchivistConfigSchema });
|
|
39
|
+
this.storage = store[this.type].namespace(this.namespace);
|
|
40
|
+
}
|
|
41
|
+
delete(hashes) {
|
|
42
|
+
try {
|
|
43
|
+
return hashes.map((hash) => {
|
|
44
|
+
this.storage.remove(hash);
|
|
45
|
+
return true;
|
|
46
|
+
});
|
|
47
|
+
}
|
|
48
|
+
catch (ex) {
|
|
49
|
+
throw new StorageArchivistError('delete', ex, 'unexpected');
|
|
50
|
+
}
|
|
51
|
+
}
|
|
52
|
+
clear() {
|
|
53
|
+
try {
|
|
54
|
+
this.storage.clear();
|
|
55
|
+
}
|
|
56
|
+
catch (ex) {
|
|
57
|
+
throw new StorageArchivistError('clear', ex, 'unexpected');
|
|
58
|
+
}
|
|
59
|
+
}
|
|
60
|
+
async get(hashes) {
|
|
61
|
+
try {
|
|
62
|
+
return await Promise.all(hashes.map(async (hash) => {
|
|
63
|
+
const cookieString = this.storage.get(hash);
|
|
64
|
+
return cookieString ? JSON.parse(cookieString) : (await this.getFromParents(hash)) ?? null;
|
|
65
|
+
}));
|
|
66
|
+
}
|
|
67
|
+
catch (ex) {
|
|
68
|
+
throw new StorageArchivistError('get', ex, 'unexpected');
|
|
69
|
+
}
|
|
70
|
+
}
|
|
71
|
+
async insert(payloads) {
|
|
72
|
+
try {
|
|
73
|
+
const storedPayloads = payloads.map((payload) => {
|
|
74
|
+
const wrapper = new XyoPayloadWrapper(payload);
|
|
75
|
+
const hash = wrapper.hash;
|
|
76
|
+
const value = JSON.stringify(wrapper.payload);
|
|
77
|
+
assertEx(value.length < this.maxEntrySize, `Payload too large [${wrapper.hash}, ${value.length}]`);
|
|
78
|
+
this.storage.set(hash, JSON.stringify(wrapper.payload));
|
|
79
|
+
return wrapper.payload;
|
|
80
|
+
});
|
|
81
|
+
const boundwitness = this.bindPayloads(storedPayloads);
|
|
82
|
+
if (this.writeThrough) {
|
|
83
|
+
await this.writeToParents([boundwitness, ...storedPayloads]);
|
|
84
|
+
}
|
|
85
|
+
return boundwitness;
|
|
86
|
+
}
|
|
87
|
+
catch (ex) {
|
|
88
|
+
throw new StorageArchivistError('insert', ex, 'unexpected');
|
|
89
|
+
}
|
|
90
|
+
}
|
|
91
|
+
async find(filter) {
|
|
92
|
+
try {
|
|
93
|
+
const x = (await this.all()).filter((payload) => {
|
|
94
|
+
if (filter.schema && filter.schema !== payload.schema) {
|
|
95
|
+
return false;
|
|
96
|
+
}
|
|
97
|
+
return true;
|
|
98
|
+
});
|
|
99
|
+
return x;
|
|
100
|
+
}
|
|
101
|
+
catch (ex) {
|
|
102
|
+
throw new StorageArchivistError('find', ex, 'unexpected');
|
|
103
|
+
}
|
|
104
|
+
}
|
|
105
|
+
all() {
|
|
106
|
+
try {
|
|
107
|
+
return Object.entries(this.storage.getAll())
|
|
108
|
+
.filter(([key]) => key.startsWith(`${this.namespace}-`))
|
|
109
|
+
.map(([, value]) => JSON.parse(value));
|
|
110
|
+
}
|
|
111
|
+
catch (ex) {
|
|
112
|
+
throw new StorageArchivistError('all', ex, 'unexpected');
|
|
113
|
+
}
|
|
114
|
+
}
|
|
115
|
+
async commit() {
|
|
116
|
+
try {
|
|
117
|
+
const payloads = await this.all();
|
|
118
|
+
assertEx(payloads.length > 0, 'Nothing to commit');
|
|
119
|
+
const block = this.bindPayloads(payloads);
|
|
120
|
+
await Promise.allSettled(compact(Object.values(this.parents?.commit ?? [])?.map(async (parent) => {
|
|
121
|
+
const query = { payloads: [block, ...payloads], schema: XyoArchivistInsertQuerySchema };
|
|
122
|
+
return await parent?.query(query);
|
|
123
|
+
})));
|
|
124
|
+
await this.clear();
|
|
125
|
+
return block;
|
|
126
|
+
}
|
|
127
|
+
catch (ex) {
|
|
128
|
+
throw new StorageArchivistError('commit', ex, 'unexpected');
|
|
129
|
+
}
|
|
130
|
+
}
|
|
131
|
+
}
|
|
132
|
+
//# sourceMappingURL=XyoStorageArchivist.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"XyoStorageArchivist.js","sourceRoot":"","sources":["../../src/XyoStorageArchivist.ts"],"names":[],"mappings":"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"}
|
package/dist/esm/index.d.ts
CHANGED
|
@@ -1,8 +1,11 @@
|
|
|
1
|
-
export * from './Abstract';
|
|
2
1
|
export * from './Archivist';
|
|
3
2
|
export * from './Config';
|
|
4
|
-
export * from './
|
|
3
|
+
export * from './PartialArchivistConfig';
|
|
4
|
+
export * from './Queries';
|
|
5
|
+
export * from './XyoArchivist';
|
|
5
6
|
export * from './XyoArchivistWrapper';
|
|
7
|
+
export * from './XyoCookieArchivist';
|
|
6
8
|
export * from './XyoMemoryArchivist';
|
|
7
9
|
export * from './XyoPayloadFindFilter';
|
|
10
|
+
export * from './XyoStorageArchivist';
|
|
8
11
|
//# sourceMappingURL=index.d.ts.map
|
package/dist/esm/index.d.ts.map
CHANGED
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"index.d.ts","sourceRoot":"","sources":["../../src/index.ts"],"names":[],"mappings":"AAAA,cAAc,
|
|
1
|
+
{"version":3,"file":"index.d.ts","sourceRoot":"","sources":["../../src/index.ts"],"names":[],"mappings":"AAAA,cAAc,aAAa,CAAA;AAC3B,cAAc,UAAU,CAAA;AACxB,cAAc,0BAA0B,CAAA;AACxC,cAAc,WAAW,CAAA;AACzB,cAAc,gBAAgB,CAAA;AAC9B,cAAc,uBAAuB,CAAA;AACrC,cAAc,sBAAsB,CAAA;AACpC,cAAc,sBAAsB,CAAA;AACpC,cAAc,wBAAwB,CAAA;AACtC,cAAc,uBAAuB,CAAA"}
|
package/dist/esm/index.js
CHANGED
|
@@ -1,8 +1,11 @@
|
|
|
1
|
-
export * from './Abstract';
|
|
2
1
|
export * from './Archivist';
|
|
3
2
|
export * from './Config';
|
|
4
|
-
export * from './
|
|
3
|
+
export * from './PartialArchivistConfig';
|
|
4
|
+
export * from './Queries';
|
|
5
|
+
export * from './XyoArchivist';
|
|
5
6
|
export * from './XyoArchivistWrapper';
|
|
7
|
+
export * from './XyoCookieArchivist';
|
|
6
8
|
export * from './XyoMemoryArchivist';
|
|
7
9
|
export * from './XyoPayloadFindFilter';
|
|
10
|
+
export * from './XyoStorageArchivist';
|
|
8
11
|
//# sourceMappingURL=index.js.map
|
package/dist/esm/index.js.map
CHANGED
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"index.js","sourceRoot":"","sources":["../../src/index.ts"],"names":[],"mappings":"AAAA,cAAc,
|
|
1
|
+
{"version":3,"file":"index.js","sourceRoot":"","sources":["../../src/index.ts"],"names":[],"mappings":"AAAA,cAAc,aAAa,CAAA;AAC3B,cAAc,UAAU,CAAA;AACxB,cAAc,0BAA0B,CAAA;AACxC,cAAc,WAAW,CAAA;AACzB,cAAc,gBAAgB,CAAA;AAC9B,cAAc,uBAAuB,CAAA;AACrC,cAAc,sBAAsB,CAAA;AACpC,cAAc,sBAAsB,CAAA;AACpC,cAAc,wBAAwB,CAAA;AACtC,cAAc,uBAAuB,CAAA"}
|
package/package.json
CHANGED
|
@@ -10,14 +10,19 @@
|
|
|
10
10
|
},
|
|
11
11
|
"dependencies": {
|
|
12
12
|
"@xylabs/sdk-js": "^2.6.7",
|
|
13
|
-
"@xyo-network/boundwitness": "^2.
|
|
14
|
-
"@xyo-network/module": "^2.
|
|
15
|
-
"@xyo-network/payload": "^2.
|
|
16
|
-
"@xyo-network/promisable": "^2.
|
|
13
|
+
"@xyo-network/boundwitness": "^2.32.0-rc.2",
|
|
14
|
+
"@xyo-network/module": "^2.32.0-rc.2",
|
|
15
|
+
"@xyo-network/payload": "^2.32.0-rc.2",
|
|
16
|
+
"@xyo-network/promisable": "^2.32.0-rc.2",
|
|
17
|
+
"js-cookie": "^3.0.1",
|
|
17
18
|
"lodash": "^4.17.21",
|
|
18
19
|
"lru-cache": "^7.14.0",
|
|
20
|
+
"store2": "^2.14.2",
|
|
19
21
|
"tslib": "^2.4.0"
|
|
20
22
|
},
|
|
23
|
+
"devDependencies": {
|
|
24
|
+
"@types/js-cookie": "^3.0.2"
|
|
25
|
+
},
|
|
21
26
|
"description": "Primary SDK for using XYO Protocol 2.0",
|
|
22
27
|
"browser": "dist/esm/index.js",
|
|
23
28
|
"docs": "dist/docs.json",
|
|
@@ -52,5 +57,6 @@
|
|
|
52
57
|
},
|
|
53
58
|
"sideEffects": false,
|
|
54
59
|
"types": "dist/esm/index.d.ts",
|
|
55
|
-
"version": "2.
|
|
60
|
+
"version": "2.32.0-rc.2",
|
|
61
|
+
"stableVersion": "2.31.5"
|
|
56
62
|
}
|
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> {}
|