@xyo-network/api 2.33.0-rc.4 → 2.33.0-rc.6

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.
@@ -0,0 +1,6 @@
1
+ export declare class RemoteArchivistError extends Error {
2
+ constructor(action: string, error: Error['cause'], message?: string);
3
+ isRemoteArchivistError: boolean;
4
+ static isRemoteArchivistError(error: unknown): RemoteArchivistError | undefined;
5
+ }
6
+ //# sourceMappingURL=RemoteArchivistError.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"RemoteArchivistError.d.ts","sourceRoot":"","sources":["../../../src/Archivist/RemoteArchivistError.ts"],"names":[],"mappings":"AAAA,qBAAa,oBAAqB,SAAQ,KAAK;gBACjC,MAAM,EAAE,MAAM,EAAE,KAAK,EAAE,KAAK,CAAC,OAAO,CAAC,EAAE,OAAO,CAAC,EAAE,MAAM;IAGnE,sBAAsB,UAAO;IAC7B,MAAM,CAAC,sBAAsB,CAAC,KAAK,EAAE,OAAO,GAAG,oBAAoB,GAAG,SAAS;CAGhF"}
@@ -0,0 +1,10 @@
1
+ export class RemoteArchivistError extends Error {
2
+ constructor(action, error, message) {
3
+ super(`Remote Archivist [${action}] failed${message ? ` (${message})` : ''}`, { cause: error });
4
+ }
5
+ isRemoteArchivistError = true;
6
+ static isRemoteArchivistError(error) {
7
+ return error.isRemoteArchivistError ? error : undefined;
8
+ }
9
+ }
10
+ //# sourceMappingURL=RemoteArchivistError.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"RemoteArchivistError.js","sourceRoot":"","sources":["../../../src/Archivist/RemoteArchivistError.ts"],"names":[],"mappings":"AAAA,MAAM,OAAO,oBAAqB,SAAQ,KAAK;IAC7C,YAAY,MAAc,EAAE,KAAqB,EAAE,OAAgB;QACjE,KAAK,CAAC,qBAAqB,MAAM,WAAW,OAAO,CAAC,CAAC,CAAC,KAAK,OAAO,GAAG,CAAC,CAAC,CAAC,EAAE,EAAE,EAAE,EAAE,KAAK,EAAE,KAAK,EAAE,CAAC,CAAA;IACjG,CAAC;IACD,sBAAsB,GAAG,IAAI,CAAA;IAC7B,MAAM,CAAC,sBAAsB,CAAC,KAAc;QAC1C,OAAQ,KAA8B,CAAC,sBAAsB,CAAC,CAAC,CAAE,KAA8B,CAAC,CAAC,CAAC,SAAS,CAAA;IAC7G,CAAC;CACF"}
@@ -1 +1 @@
1
- {"version":3,"file":"XyoRemoteArchivist.d.ts","sourceRoot":"","sources":["../../../src/Archivist/XyoRemoteArchivist.ts"],"names":[],"mappings":"AACA,OAAO,EAAE,YAAY,EAA+B,oBAAoB,EAAE,MAAM,wBAAwB,CAAA;AACxG,OAAO,EAAE,eAAe,EAAyD,MAAM,2BAA2B,CAAA;AAClH,OAAO,EAAE,UAAU,EAAqB,MAAM,sBAAsB,CAAA;AAEpE,OAAO,EAAE,wBAAwB,EAAE,MAAM,4BAA4B,CAAA;AAQrE,uFAAuF;AACvF,qBAAa,kBAAmB,SAAQ,YAAY,CAAC,wBAAwB,CAAC;IAC5E,IAAW,GAAG,oCAEb;IAEe,OAAO;IAIvB,IAAW,OAAO,uBAEjB;IAEY,GAAG,CAAC,MAAM,EAAE,MAAM,EAAE;;;;;;IAiBpB,MAAM,CAAC,QAAQ,EAAE,UAAU,EAAE,GAAG,OAAO,CAAC,eAAe,CAAC;IAgCxD,IAAI,CAAC,CAAC,SAAS,UAAU,GAAG,UAAU,EAAE,MAAM,EAAE,oBAAoB,GAAG,OAAO,CAAC,CAAC,EAAE,CAAC;CAgBjG"}
1
+ {"version":3,"file":"XyoRemoteArchivist.d.ts","sourceRoot":"","sources":["../../../src/Archivist/XyoRemoteArchivist.ts"],"names":[],"mappings":"AACA,OAAO,EAAE,YAAY,EAA+B,oBAAoB,EAAE,MAAM,wBAAwB,CAAA;AACxG,OAAO,EAAE,eAAe,EAAyD,MAAM,2BAA2B,CAAA;AAClH,OAAO,EAAE,UAAU,EAAqB,MAAM,sBAAsB,CAAA;AAGpE,OAAO,EAAE,wBAAwB,EAAE,MAAM,4BAA4B,CAAA;AA4BrE,uFAAuF;AACvF,qBAAa,kBAAmB,SAAQ,YAAY,CAAC,wBAAwB,CAAC;IAC5E,IAAW,GAAG,oCAEb;IAEe,OAAO;IAIvB,IAAW,OAAO,uBAEjB;IAEY,GAAG,CAAC,MAAM,EAAE,MAAM,EAAE;;;;;;IAgBpB,MAAM,CAAC,QAAQ,EAAE,UAAU,EAAE,GAAG,OAAO,CAAC,eAAe,CAAC;IA+BxD,IAAI,CAAC,CAAC,SAAS,UAAU,GAAG,UAAU,EAAE,MAAM,EAAE,oBAAoB,GAAG,OAAO,CAAC,CAAC,EAAE,CAAC;CAejG"}
@@ -2,11 +2,26 @@ import { assertEx } from '@xylabs/sdk-js';
2
2
  import { XyoArchivist, XyoArchivistFindQuerySchema } from '@xyo-network/archivist';
3
3
  import { XyoBoundWitnessSchema } from '@xyo-network/boundwitness';
4
4
  import { XyoPayloadWrapper } from '@xyo-network/payload';
5
- class RemoteArchivistError extends Error {
6
- constructor(action, error, message) {
7
- super(`Remote Archivist [${action}] failed${message ? ` (${message})` : ''}`, { cause: error });
8
- }
9
- }
5
+ import { RemoteArchivistError } from './RemoteArchivistError';
6
+ const dump = (obj) => {
7
+ const cache = [];
8
+ return JSON.stringify(obj, (key, value) => {
9
+ if (typeof value === 'object' && value !== null) {
10
+ // Duplicate reference found, discard key
11
+ if (cache.includes(value)) {
12
+ return '[circular]';
13
+ }
14
+ // Store value in our collection
15
+ cache.push(value);
16
+ }
17
+ return value;
18
+ }, 2);
19
+ };
20
+ const handleError = (tag, ex) => {
21
+ const error = ex;
22
+ console.log(`Error: ${error.message}`);
23
+ throw error;
24
+ };
10
25
  /** @description Archivist Context that connects to a remote archivist using the API */
11
26
  export class XyoRemoteArchivist extends XyoArchivist {
12
27
  get api() {
@@ -28,8 +43,7 @@ export class XyoRemoteArchivist extends XyoArchivist {
28
43
  return payloads?.pop() ?? null;
29
44
  }
30
45
  catch (ex) {
31
- console.error(`Error: ${JSON.stringify(ex, null, 2)}`);
32
- throw new RemoteArchivistError('get', ex, 'unexpected');
46
+ return handleError('get', ex);
33
47
  }
34
48
  }));
35
49
  }
@@ -43,26 +57,25 @@ export class XyoRemoteArchivist extends XyoArchivist {
43
57
  return boundwitness.payload_hashes.includes(hash);
44
58
  });
45
59
  });
46
- payloads.forEach((payload) => {
47
- let found = false;
48
- const hash = new XyoPayloadWrapper(payload).hash;
49
- boundwitnesses.forEach((boundwitnesses) => {
50
- if (boundwitnesses.payload_hashes.includes(hash)) {
51
- found = true;
52
- }
53
- });
54
- assertEx(found, 'Payload not in Boundwitness received');
55
- });
56
60
  const [boundwitness] = await this.bindPayloads(payloads);
57
- const [, { error }] = await this.api.archive(this.archive).block.post([boundwitness, ...boundwitnesses], 'tuple');
58
- if (error?.length) {
59
- throw new RemoteArchivistError('insert', error);
61
+ const payloadResult = await this.api.archive(this.archive).payload.post(payloads, 'tuple');
62
+ console.log(`payloadResult: ${dump(payloadResult)}`);
63
+ const [, { error: payloadError }, apiResult] = payloadResult;
64
+ if (apiResult.status >= 400) {
65
+ throw new RemoteArchivistError('insert', payloadError);
66
+ }
67
+ if (payloadError?.length) {
68
+ throw new RemoteArchivistError('insert', payloadError);
69
+ }
70
+ const bwResult = await this.api.archive(this.archive).block.post([boundwitness], 'tuple');
71
+ const [, { error: bwError }] = bwResult;
72
+ if (bwError?.length) {
73
+ throw new RemoteArchivistError('insert', bwError);
60
74
  }
61
75
  return boundwitness;
62
76
  }
63
77
  catch (ex) {
64
- console.error(`Error: ${JSON.stringify(ex, null, 2)}`);
65
- throw new RemoteArchivistError('insert', ex, 'unexpected');
78
+ return handleError('insert', ex);
66
79
  }
67
80
  }
68
81
  async find(filter) {
@@ -78,8 +91,7 @@ export class XyoRemoteArchivist extends XyoArchivist {
78
91
  return payloads.concat(blocks);
79
92
  }
80
93
  catch (ex) {
81
- console.error(`Error: ${JSON.stringify(ex, null, 2)}`);
82
- throw new RemoteArchivistError('find', ex, 'unexpected');
94
+ return handleError('find', ex);
83
95
  }
84
96
  }
85
97
  }
@@ -1 +1 @@
1
- {"version":3,"file":"XyoRemoteArchivist.js","sourceRoot":"","sources":["../../../src/Archivist/XyoRemoteArchivist.ts"],"names":[],"mappings":"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"}
1
+ {"version":3,"file":"XyoRemoteArchivist.js","sourceRoot":"","sources":["../../../src/Archivist/XyoRemoteArchivist.ts"],"names":[],"mappings":"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"}
package/package.json CHANGED
@@ -10,12 +10,12 @@
10
10
  },
11
11
  "dependencies": {
12
12
  "@xylabs/sdk-js": "^2.6.7",
13
- "@xyo-network/account": "^2.33.0-rc.4",
14
- "@xyo-network/archivist": "^2.33.0-rc.4",
15
- "@xyo-network/boundwitness": "^2.33.0-rc.4",
16
- "@xyo-network/core": "^2.33.0-rc.4",
17
- "@xyo-network/payload": "^2.33.0-rc.4",
18
- "@xyo-network/schema-payload-plugin": "^2.33.0-rc.4",
13
+ "@xyo-network/account": "^2.33.0-rc.6",
14
+ "@xyo-network/archivist": "^2.33.0-rc.6",
15
+ "@xyo-network/boundwitness": "^2.33.0-rc.6",
16
+ "@xyo-network/core": "^2.33.0-rc.6",
17
+ "@xyo-network/payload": "^2.33.0-rc.6",
18
+ "@xyo-network/schema-payload-plugin": "^2.33.0-rc.6",
19
19
  "axios": "^0.27.2",
20
20
  "pako": "^2.0.4",
21
21
  "tslib": "^2.4.0"
@@ -57,6 +57,6 @@
57
57
  },
58
58
  "sideEffects": false,
59
59
  "types": "dist/esm/index.d.ts",
60
- "version": "2.33.0-rc.4",
60
+ "version": "2.33.0-rc.6",
61
61
  "stableVersion": "2.32.1"
62
62
  }
@@ -0,0 +1,9 @@
1
+ export class RemoteArchivistError extends Error {
2
+ constructor(action: string, error: Error['cause'], message?: string) {
3
+ super(`Remote Archivist [${action}] failed${message ? ` (${message})` : ''}`, { cause: error })
4
+ }
5
+ isRemoteArchivistError = true
6
+ static isRemoteArchivistError(error: unknown): RemoteArchivistError | undefined {
7
+ return (error as RemoteArchivistError).isRemoteArchivistError ? (error as RemoteArchivistError) : undefined
8
+ }
9
+ }
@@ -0,0 +1,28 @@
1
+ import { XyoPayloadWrapper } from '@xyo-network/payload'
2
+
3
+ import { XyoApiConfig } from '../models'
4
+ import { XyoArchivistApi } from './Api'
5
+ import { XyoRemoteArchivist } from './XyoRemoteArchivist'
6
+ import { XyoRemoteArchivistConfigSchema } from './XyoRemoteArchivistConfig'
7
+
8
+ const configData: XyoApiConfig = {
9
+ apiDomain: process.env.API_DOMAIN || 'https://beta.api.archivist.xyo.network',
10
+ onError: (error) => console.error(`Error: ${JSON.stringify(error)}`),
11
+ onFailure: (response) => response, //console.error(`Failure: ${response.statusText} [${response.status}] [${JSON.stringify(response.data)}]`),
12
+ onSuccess: (response) => response, //console.log(`Success: ${response.statusText} [${response.status}] [${JSON.stringify(response.data)}]`),
13
+ }
14
+
15
+ test('XyoRemoteArchivist', async () => {
16
+ const api = new XyoArchivistApi(configData)
17
+ const archivist = new XyoRemoteArchivist({ api, schema: XyoRemoteArchivistConfigSchema })
18
+ const payload = {
19
+ salt: `${Math.random() * 10000}`,
20
+ schema: 'network.xyo.id',
21
+ }
22
+ const result = await archivist.insert([payload])
23
+ expect(result.payload_hashes.length).toBe(1)
24
+ const getResult = await archivist.get([new XyoPayloadWrapper(payload).hash])
25
+ console.log(`getResult: ${JSON.stringify(getResult)}`)
26
+ expect(getResult.length).toBe(1)
27
+ expect(getResult[0]?.schema).toBe(payload.schema)
28
+ })
@@ -3,12 +3,33 @@ import { XyoArchivist, XyoArchivistFindQuerySchema, XyoPayloadFindFilter } from
3
3
  import { XyoBoundWitness, XyoBoundWitnessSchema, XyoBoundWitnessWithPartialMeta } from '@xyo-network/boundwitness'
4
4
  import { XyoPayload, XyoPayloadWrapper } from '@xyo-network/payload'
5
5
 
6
+ import { RemoteArchivistError } from './RemoteArchivistError'
6
7
  import { XyoRemoteArchivistConfig } from './XyoRemoteArchivistConfig'
7
8
 
8
- class RemoteArchivistError extends Error {
9
- constructor(action: string, error: Error['cause'], message?: string) {
10
- super(`Remote Archivist [${action}] failed${message ? ` (${message})` : ''}`, { cause: error })
11
- }
9
+ const dump = (obj: unknown) => {
10
+ const cache: unknown[] = []
11
+ return JSON.stringify(
12
+ obj,
13
+ (key, value) => {
14
+ if (typeof value === 'object' && value !== null) {
15
+ // Duplicate reference found, discard key
16
+ if (cache.includes(value)) {
17
+ return '[circular]'
18
+ }
19
+
20
+ // Store value in our collection
21
+ cache.push(value)
22
+ }
23
+ return value
24
+ },
25
+ 2,
26
+ )
27
+ }
28
+
29
+ const handleError = (tag: string, ex: unknown) => {
30
+ const error = ex as Error
31
+ console.log(`Error: ${error.message}`)
32
+ throw error
12
33
  }
13
34
 
14
35
  /** @description Archivist Context that connects to a remote archivist using the API */
@@ -35,8 +56,7 @@ export class XyoRemoteArchivist extends XyoArchivist<XyoRemoteArchivistConfig> {
35
56
  }
36
57
  return payloads?.pop() ?? null
37
58
  } catch (ex) {
38
- console.error(`Error: ${JSON.stringify(ex, null, 2)}`)
39
- throw new RemoteArchivistError('get', ex, 'unexpected')
59
+ return handleError('get', ex)
40
60
  }
41
61
  }),
42
62
  )
@@ -52,25 +72,24 @@ export class XyoRemoteArchivist extends XyoArchivist<XyoRemoteArchivistConfig> {
52
72
  return boundwitness.payload_hashes.includes(hash)
53
73
  })
54
74
  })
55
- payloads.forEach((payload) => {
56
- let found = false
57
- const hash = new XyoPayloadWrapper(payload).hash
58
- boundwitnesses.forEach((boundwitnesses) => {
59
- if (boundwitnesses.payload_hashes.includes(hash)) {
60
- found = true
61
- }
62
- })
63
- assertEx(found, 'Payload not in Boundwitness received')
64
- })
65
75
  const [boundwitness] = await this.bindPayloads(payloads)
66
- const [, { error }] = await this.api.archive(this.archive).block.post([boundwitness, ...boundwitnesses], 'tuple')
67
- if (error?.length) {
68
- throw new RemoteArchivistError('insert', error)
76
+ const payloadResult = await this.api.archive(this.archive).payload.post(payloads, 'tuple')
77
+ console.log(`payloadResult: ${dump(payloadResult)}`)
78
+ const [, { error: payloadError }, apiResult] = payloadResult
79
+ if (apiResult.status >= 400) {
80
+ throw new RemoteArchivistError('insert', payloadError)
81
+ }
82
+ if (payloadError?.length) {
83
+ throw new RemoteArchivistError('insert', payloadError)
84
+ }
85
+ const bwResult = await this.api.archive(this.archive).block.post([boundwitness], 'tuple')
86
+ const [, { error: bwError }] = bwResult
87
+ if (bwError?.length) {
88
+ throw new RemoteArchivistError('insert', bwError)
69
89
  }
70
90
  return boundwitness
71
91
  } catch (ex) {
72
- console.error(`Error: ${JSON.stringify(ex, null, 2)}`)
73
- throw new RemoteArchivistError('insert', ex, 'unexpected')
92
+ return handleError('insert', ex)
74
93
  }
75
94
  }
76
95
 
@@ -86,8 +105,7 @@ export class XyoRemoteArchivist extends XyoArchivist<XyoRemoteArchivistConfig> {
86
105
  }
87
106
  return payloads.concat(blocks) as R[]
88
107
  } catch (ex) {
89
- console.error(`Error: ${JSON.stringify(ex, null, 2)}`)
90
- throw new RemoteArchivistError('find', ex, 'unexpected')
108
+ return handleError('find', ex)
91
109
  }
92
110
  }
93
111
  }