@xyo-network/archivist 2.28.0-rc.7 → 2.29.0-rc.1

This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
@@ -16,7 +16,7 @@ export declare class XyoMemoryArchivist extends XyoAbstractArchivist<XyoMemoryAr
16
16
  constructor(config: XyoMemoryArchivistConfig);
17
17
  delete(hashes: string[]): PromisableArray<boolean>;
18
18
  clear(): void | Promise<void>;
19
- getFromParents(hash: string): Promise<{
19
+ protected getFromParents(hash: string): Promise<{
20
20
  schema: string;
21
21
  previousHash?: string | undefined;
22
22
  sources?: string[] | undefined;
@@ -1 +1 @@
1
- {"version":3,"file":"XyoMemoryArchivist.d.ts","sourceRoot":"","sources":["../../src/XyoMemoryArchivist.ts"],"names":[],"mappings":"AAEA,OAAO,EAAE,UAAU,EAAqB,MAAM,sBAAsB,CAAA;AACpE,OAAO,EAAE,eAAe,EAAE,MAAM,yBAAyB,CAAA;AAIzD,OAAO,EAAE,oBAAoB,EAAE,MAAM,YAAY,CAAA;AAUjD,OAAO,EAAE,kBAAkB,EAAE,MAAM,sBAAsB,CAAA;AACzD,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;AAEF,qBAAa,kBAAmB,SAAQ,oBAAoB,CAAC,wBAAwB,CAAC;IACpF,IAAW,GAAG,WAEb;IAED,OAAO,CAAC,KAAK,CAA8B;IAE3C,IAAoB,OAAO,8DAS1B;gBAEW,MAAM,EAAE,wBAAwB;IAKrC,MAAM,CAAC,MAAM,EAAE,MAAM,EAAE,GAAG,eAAe,CAAC,OAAO,CAAC;IAMzC,KAAK,IAAI,IAAI,GAAG,OAAO,CAAC,IAAI,CAAC;IAIhC,cAAc,CAAC,IAAI,EAAE,MAAM;;;;;;IAa3B,GAAG,CAAC,MAAM,EAAE,MAAM,EAAE,GAAG,OAAO,CAAC,CAAC,UAAU,GAAG,IAAI,CAAC,EAAE,CAAC;IAQ3D,MAAM,CAAC,QAAQ,EAAE,UAAU,EAAE,GAAG,eAAe,CAAC,UAAU,CAAC;IAS3D,IAAI,CAAC,CAAC,SAAS,UAAU,GAAG,UAAU,EAAE,MAAM,EAAE,oBAAoB,GAAG,eAAe,CAAC,CAAC,CAAC;IAUzF,GAAG,IAAI,OAAO,CAAC,UAAU,EAAE,CAAC,GAAG,UAAU,EAAE;IAIrC,MAAM,IAAI,OAAO,CAAC,UAAU,EAAE,CAAC;CAe7C"}
1
+ {"version":3,"file":"XyoMemoryArchivist.d.ts","sourceRoot":"","sources":["../../src/XyoMemoryArchivist.ts"],"names":[],"mappings":"AAEA,OAAO,EAAE,UAAU,EAAqB,MAAM,sBAAsB,CAAA;AACpE,OAAO,EAAE,eAAe,EAAE,MAAM,yBAAyB,CAAA;AAIzD,OAAO,EAAE,oBAAoB,EAAE,MAAM,YAAY,CAAA;AAUjD,OAAO,EAAE,kBAAkB,EAAE,MAAM,sBAAsB,CAAA;AACzD,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,oBAAoB,CAAC,wBAAwB,CAAC;IACpF,IAAW,GAAG,WAEb;IAED,OAAO,CAAC,KAAK,CAA8B;IAE3C,IAAoB,OAAO,8DAS1B;gBAEW,MAAM,EAAE,wBAAwB;IAKrC,MAAM,CAAC,MAAM,EAAE,MAAM,EAAE,GAAG,eAAe,CAAC,OAAO,CAAC;IAUzC,KAAK,IAAI,IAAI,GAAG,OAAO,CAAC,IAAI,CAAC;cAQ7B,cAAc,CAAC,IAAI,EAAE,MAAM;;;;;;IAa9B,GAAG,CAAC,MAAM,EAAE,MAAM,EAAE,GAAG,OAAO,CAAC,CAAC,UAAU,GAAG,IAAI,CAAC,EAAE,CAAC;IAY3D,MAAM,CAAC,QAAQ,EAAE,UAAU,EAAE,GAAG,eAAe,CAAC,UAAU,CAAC;IAa3D,IAAI,CAAC,CAAC,SAAS,UAAU,GAAG,UAAU,EAAE,MAAM,EAAE,oBAAoB,GAAG,eAAe,CAAC,CAAC,CAAC;IAczF,GAAG,IAAI,OAAO,CAAC,UAAU,EAAE,CAAC,GAAG,UAAU,EAAE;IAQrC,MAAM,IAAI,OAAO,CAAC,UAAU,EAAE,CAAC;CAmB7C"}
@@ -6,6 +6,11 @@ import LruCache from 'lru-cache';
6
6
  import { XyoAbstractArchivist } from './Abstract';
7
7
  import { XyoArchivistAllQueryPayloadSchema, XyoArchivistClearQueryPayloadSchema, XyoArchivistCommitQueryPayloadSchema, XyoArchivistDeleteQueryPayloadSchema, XyoArchivistFindQueryPayloadSchema, XyoArchivistGetQueryPayloadSchema, XyoArchivistInsertQueryPayloadSchema, } from './Query';
8
8
  export const XyoMemoryArchivistConfigSchema = 'network.xyo.module.config.archivist.memory';
9
+ class MemoryArchivistError extends Error {
10
+ constructor(action, error, message) {
11
+ super(`Memory Archivist [${action}] failed${message ? ` (${message})` : ''}`, { cause: error });
12
+ }
13
+ }
9
14
  export class XyoMemoryArchivist extends XyoAbstractArchivist {
10
15
  get max() {
11
16
  return this.config?.max ?? 10000;
@@ -26,12 +31,22 @@ export class XyoMemoryArchivist extends XyoAbstractArchivist {
26
31
  this.cache = new LruCache({ max: this.max });
27
32
  }
28
33
  delete(hashes) {
29
- return hashes.map((hash) => {
30
- return this.cache.delete(hash);
31
- });
34
+ try {
35
+ return hashes.map((hash) => {
36
+ return this.cache.delete(hash);
37
+ });
38
+ }
39
+ catch (ex) {
40
+ throw new MemoryArchivistError('delete', ex, 'unexpected');
41
+ }
32
42
  }
33
43
  clear() {
34
- this.cache.clear();
44
+ try {
45
+ this.cache.clear();
46
+ }
47
+ catch (ex) {
48
+ throw new MemoryArchivistError('clear', ex, 'unexpected');
49
+ }
35
50
  }
36
51
  async getFromParents(hash) {
37
52
  return compact(await Promise.all(compact(Object.values(this.parents?.read ?? {}).map(async (parent) => {
@@ -40,38 +55,63 @@ export class XyoMemoryArchivist extends XyoAbstractArchivist {
40
55
  }))))[0];
41
56
  }
42
57
  async get(hashes) {
43
- return await Promise.all(hashes.map(async (hash) => {
44
- return this.cache.get(hash) ?? (await this.getFromParents(hash)) ?? null;
45
- }));
58
+ try {
59
+ return await Promise.all(hashes.map(async (hash) => {
60
+ return this.cache.get(hash) ?? (await this.getFromParents(hash)) ?? null;
61
+ }));
62
+ }
63
+ catch (ex) {
64
+ throw new MemoryArchivistError('get', ex, 'unexpected');
65
+ }
46
66
  }
47
67
  insert(payloads) {
48
- return payloads.map((payload) => {
49
- const wrapper = new XyoPayloadWrapper(payload);
50
- const payloadWithmeta = { ...payload, _hash: wrapper.hash, _timestamp: Date.now() };
51
- this.cache.set(payloadWithmeta._hash, payloadWithmeta);
52
- return payloadWithmeta;
53
- });
68
+ try {
69
+ return payloads.map((payload) => {
70
+ const wrapper = new XyoPayloadWrapper(payload);
71
+ const payloadWithmeta = { ...payload, _hash: wrapper.hash, _timestamp: Date.now() };
72
+ this.cache.set(payloadWithmeta._hash, payloadWithmeta);
73
+ return payloadWithmeta;
74
+ });
75
+ }
76
+ catch (ex) {
77
+ throw new MemoryArchivistError('insert', ex, 'unexpected');
78
+ }
54
79
  }
55
80
  find(filter) {
56
- const result = [];
57
- this.cache.forEach((value) => {
58
- if (value.schema === filter.schema) {
59
- result.push(value);
60
- }
61
- });
62
- return result;
81
+ try {
82
+ const result = [];
83
+ this.cache.forEach((value) => {
84
+ if (value.schema === filter.schema) {
85
+ result.push(value);
86
+ }
87
+ });
88
+ return result;
89
+ }
90
+ catch (ex) {
91
+ throw new MemoryArchivistError('find', ex, 'unexpected');
92
+ }
63
93
  }
64
94
  all() {
65
- return this.cache.dump().map((value) => value[1].value);
95
+ try {
96
+ return this.cache.dump().map((value) => value[1].value);
97
+ }
98
+ catch (ex) {
99
+ throw new MemoryArchivistError('all', ex, 'unexpected');
100
+ }
66
101
  }
67
102
  async commit() {
68
- const account = assertEx(this.account, 'Account is required for commit');
69
- const payloads = assertEx(await this.all(), 'Nothing to commit');
70
- const builder = new XyoBoundWitnessBuilder();
71
- const block = builder.payloads(payloads).witness(account).build();
72
- await Promise.allSettled(compact(Object.values(this.parents?.commit ?? [])?.map(async (parent) => await parent?.query({ payloads: [block, ...payloads], schema: XyoArchivistInsertQueryPayloadSchema }))));
73
- await this.clear();
74
- return payloads;
103
+ try {
104
+ const account = assertEx(this.account, 'Account is required for commit');
105
+ const payloads = assertEx(await this.all(), 'Nothing to commit');
106
+ const builder = new XyoBoundWitnessBuilder();
107
+ const block = builder.payloads(payloads).witness(account).build();
108
+ await Promise.allSettled(compact(Object.values(this.parents?.commit ?? [])?.map(async (parent) => await parent?.query({ payloads: [block, ...payloads], schema: XyoArchivistInsertQueryPayloadSchema }))));
109
+ await this.clear();
110
+ return payloads;
111
+ }
112
+ catch (ex) {
113
+ throw new MemoryArchivistError('commit', ex, 'unexpected');
114
+ }
75
115
  }
76
116
  }
77
117
  //# sourceMappingURL=XyoMemoryArchivist.js.map
@@ -1 +1 @@
1
- {"version":3,"file":"XyoMemoryArchivist.js","sourceRoot":"","sources":["../../src/XyoMemoryArchivist.ts"],"names":[],"mappings":"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"}
1
+ {"version":3,"file":"XyoMemoryArchivist.js","sourceRoot":"","sources":["../../src/XyoMemoryArchivist.ts"],"names":[],"mappings":"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"}
package/package.json CHANGED
@@ -10,17 +10,17 @@
10
10
  },
11
11
  "dependencies": {
12
12
  "@xylabs/sdk-js": "^2.6.7",
13
- "@xyo-network/boundwitness": "^2.28.0-rc.7",
14
- "@xyo-network/module": "^2.28.0-rc.7",
15
- "@xyo-network/payload": "^2.28.0-rc.7",
16
- "@xyo-network/promisable": "^2.28.0-rc.7",
13
+ "@xyo-network/boundwitness": "^2.29.0-rc.1",
14
+ "@xyo-network/module": "^2.29.0-rc.1",
15
+ "@xyo-network/payload": "^2.29.0-rc.1",
16
+ "@xyo-network/promisable": "^2.29.0-rc.1",
17
17
  "lodash": "^4.17.21",
18
18
  "lru-cache": "^7.14.0",
19
19
  "tslib": "^2.4.0"
20
20
  },
21
21
  "description": "Primary SDK for using XYO Protocol 2.0",
22
22
  "devDependencies": {
23
- "@xylabs/tsconfig": "^2.5.127"
23
+ "@xylabs/tsconfig": "^2.5.138"
24
24
  },
25
25
  "browser": "dist/esm/index.js",
26
26
  "docs": "dist/docs.json",
@@ -55,6 +55,6 @@
55
55
  },
56
56
  "sideEffects": false,
57
57
  "types": "dist/esm/index.d.ts",
58
- "version": "2.28.0-rc.7",
59
- "stableVersion": "2.28.0-rc.2"
58
+ "version": "2.29.0-rc.1",
59
+ "stableVersion": "2.28.1"
60
60
  }
@@ -26,6 +26,12 @@ export type XyoMemoryArchivistConfig = XyoArchivistConfig<{
26
26
  max?: number
27
27
  }>
28
28
 
29
+ class MemoryArchivistError extends Error {
30
+ constructor(action: string, error: Error['cause'], message?: string) {
31
+ super(`Memory Archivist [${action}] failed${message ? ` (${message})` : ''}`, { cause: error })
32
+ }
33
+ }
34
+
29
35
  export class XyoMemoryArchivist extends XyoAbstractArchivist<XyoMemoryArchivistConfig> {
30
36
  public get max() {
31
37
  return this.config?.max ?? 10000
@@ -50,16 +56,24 @@ export class XyoMemoryArchivist extends XyoAbstractArchivist<XyoMemoryArchivistC
50
56
  }
51
57
 
52
58
  public delete(hashes: string[]): PromisableArray<boolean> {
53
- return hashes.map((hash) => {
54
- return this.cache.delete(hash)
55
- })
59
+ try {
60
+ return hashes.map((hash) => {
61
+ return this.cache.delete(hash)
62
+ })
63
+ } catch (ex) {
64
+ throw new MemoryArchivistError('delete', ex, 'unexpected')
65
+ }
56
66
  }
57
67
 
58
68
  public override clear(): void | Promise<void> {
59
- this.cache.clear()
69
+ try {
70
+ this.cache.clear()
71
+ } catch (ex) {
72
+ throw new MemoryArchivistError('clear', ex, 'unexpected')
73
+ }
60
74
  }
61
75
 
62
- public async getFromParents(hash: string) {
76
+ protected async getFromParents(hash: string) {
63
77
  return compact(
64
78
  await Promise.all(
65
79
  compact(
@@ -73,49 +87,69 @@ export class XyoMemoryArchivist extends XyoAbstractArchivist<XyoMemoryArchivistC
73
87
  }
74
88
 
75
89
  public async get(hashes: string[]): Promise<(XyoPayload | null)[]> {
76
- return await Promise.all(
77
- hashes.map(async (hash) => {
78
- return this.cache.get(hash) ?? (await this.getFromParents(hash)) ?? null
79
- }),
80
- )
90
+ try {
91
+ return await Promise.all(
92
+ hashes.map(async (hash) => {
93
+ return this.cache.get(hash) ?? (await this.getFromParents(hash)) ?? null
94
+ }),
95
+ )
96
+ } catch (ex) {
97
+ throw new MemoryArchivistError('get', ex, 'unexpected')
98
+ }
81
99
  }
82
100
 
83
101
  public insert(payloads: XyoPayload[]): PromisableArray<XyoPayload> {
84
- return payloads.map((payload) => {
85
- const wrapper = new XyoPayloadWrapper(payload)
86
- const payloadWithmeta = { ...payload, _hash: wrapper.hash, _timestamp: Date.now() }
87
- this.cache.set(payloadWithmeta._hash, payloadWithmeta)
88
- return payloadWithmeta
89
- })
102
+ try {
103
+ return payloads.map((payload) => {
104
+ const wrapper = new XyoPayloadWrapper(payload)
105
+ const payloadWithmeta = { ...payload, _hash: wrapper.hash, _timestamp: Date.now() }
106
+ this.cache.set(payloadWithmeta._hash, payloadWithmeta)
107
+ return payloadWithmeta
108
+ })
109
+ } catch (ex) {
110
+ throw new MemoryArchivistError('insert', ex, 'unexpected')
111
+ }
90
112
  }
91
113
 
92
114
  public find<R extends XyoPayload = XyoPayload>(filter: XyoPayloadFindFilter): PromisableArray<R> {
93
- const result: R[] = []
94
- this.cache.forEach((value) => {
95
- if (value.schema === filter.schema) {
96
- result.push(value as R)
97
- }
98
- })
99
- return result
115
+ try {
116
+ const result: R[] = []
117
+ this.cache.forEach((value) => {
118
+ if (value.schema === filter.schema) {
119
+ result.push(value as R)
120
+ }
121
+ })
122
+ return result
123
+ } catch (ex) {
124
+ throw new MemoryArchivistError('find', ex, 'unexpected')
125
+ }
100
126
  }
101
127
 
102
128
  public all(): Promise<XyoPayload[]> | XyoPayload[] {
103
- return this.cache.dump().map((value) => value[1].value)
129
+ try {
130
+ return this.cache.dump().map((value) => value[1].value)
131
+ } catch (ex) {
132
+ throw new MemoryArchivistError('all', ex, 'unexpected')
133
+ }
104
134
  }
105
135
 
106
136
  public async commit(): Promise<XyoPayload[]> {
107
- const account = assertEx(this.account, 'Account is required for commit')
108
- const payloads = assertEx(await this.all(), 'Nothing to commit')
109
- const builder = new XyoBoundWitnessBuilder<XyoBoundWitness, XyoPayload>()
110
- const block = builder.payloads(payloads).witness(account).build()
111
- await Promise.allSettled(
112
- compact(
113
- Object.values(this.parents?.commit ?? [])?.map(
114
- async (parent) => await parent?.query({ payloads: [block, ...payloads], schema: XyoArchivistInsertQueryPayloadSchema }),
137
+ try {
138
+ const account = assertEx(this.account, 'Account is required for commit')
139
+ const payloads = assertEx(await this.all(), 'Nothing to commit')
140
+ const builder = new XyoBoundWitnessBuilder<XyoBoundWitness, XyoPayload>()
141
+ const block = builder.payloads(payloads).witness(account).build()
142
+ await Promise.allSettled(
143
+ compact(
144
+ Object.values(this.parents?.commit ?? [])?.map(
145
+ async (parent) => await parent?.query({ payloads: [block, ...payloads], schema: XyoArchivistInsertQueryPayloadSchema }),
146
+ ),
115
147
  ),
116
- ),
117
- )
118
- await this.clear()
119
- return payloads
148
+ )
149
+ await this.clear()
150
+ return payloads
151
+ } catch (ex) {
152
+ throw new MemoryArchivistError('commit', ex, 'unexpected')
153
+ }
120
154
  }
121
155
  }