@xyo-network/api 2.32.1 → 2.33.0-rc.10

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;;;;;;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"}
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,EAAkF,MAAM,2BAA2B,CAAA;AAC3I,OAAO,EAAE,UAAU,EAAqB,MAAM,sBAAsB,CAAA;AAGpE,OAAO,EAAE,wBAAwB,EAAE,MAAM,4BAA4B,CAAA;AAErE,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;;;;;;IAoBpB,MAAM,CAAC,QAAQ,EAAE,UAAU,EAAE,GAAG,OAAO,CAAC,eAAe,CAAC;IA2BxD,IAAI,CAAC,CAAC,SAAS,UAAU,GAAG,UAAU,EAAE,MAAM,EAAE,oBAAoB,GAAG,OAAO,CAAC,CAAC,EAAE,CAAC;CAmBjG"}
@@ -2,11 +2,7 @@ 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';
10
6
  /** @description Archivist Context that connects to a remote archivist using the API */
11
7
  export class XyoRemoteArchivist extends XyoArchivist {
12
8
  get api() {
@@ -21,14 +17,18 @@ export class XyoRemoteArchivist extends XyoArchivist {
21
17
  async get(hashes) {
22
18
  return await Promise.all(hashes.map(async (hash) => {
23
19
  try {
24
- const [payloads, { error }] = await this.api.archive(this.archive).payload.hash(hash).get('tuple');
25
- if (error?.length) {
26
- throw new RemoteArchivistError('get', error);
20
+ const [payloads, response, error] = await this.api.archive(this.archive).payload.hash(hash).get('tuple');
21
+ if (error?.status >= 400) {
22
+ throw new RemoteArchivistError('get', `${error.statusText} [${error.status}]`);
23
+ }
24
+ if (response?.error?.length) {
25
+ throw new RemoteArchivistError('get', response?.error);
27
26
  }
28
27
  return payloads?.pop() ?? null;
29
28
  }
30
29
  catch (ex) {
31
- throw new RemoteArchivistError('get', ex, 'unexpected');
30
+ console.error(ex);
31
+ throw ex;
32
32
  }
33
33
  }));
34
34
  }
@@ -42,25 +42,21 @@ export class XyoRemoteArchivist extends XyoArchivist {
42
42
  return boundwitness.payload_hashes.includes(hash);
43
43
  });
44
44
  });
45
- payloads.forEach((payload) => {
46
- let found = false;
47
- const hash = new XyoPayloadWrapper(payload).hash;
48
- boundwitnesses.forEach((boundwitnesses) => {
49
- if (boundwitnesses.payload_hashes.includes(hash)) {
50
- found = true;
51
- }
52
- });
53
- assertEx(found, 'Payload not in Boundwitness received');
54
- });
55
- const boundwitness = this.bindPayloads(payloads);
56
- const [, { error }] = await this.api.archive(this.archive).block.post([boundwitness, ...boundwitnesses], 'tuple');
57
- if (error?.length) {
58
- throw new RemoteArchivistError('insert', error);
45
+ const [boundwitness] = await this.bindPayloads(payloads);
46
+ const bwWithMeta = { ...boundwitness, _payloads: payloads };
47
+ const bwResult = await this.api.archive(this.archive).block.post([bwWithMeta], 'tuple');
48
+ const [, response, error] = bwResult;
49
+ if (error?.status >= 400) {
50
+ throw new RemoteArchivistError('insert', `${error.statusText} [${error.status}]`);
51
+ }
52
+ if (response?.error?.length) {
53
+ throw new RemoteArchivistError('insert', response?.error);
59
54
  }
60
55
  return boundwitness;
61
56
  }
62
57
  catch (ex) {
63
- throw new RemoteArchivistError('insert', ex, 'unexpected');
58
+ console.error(ex);
59
+ throw ex;
64
60
  }
65
61
  }
66
62
  async find(filter) {
@@ -69,14 +65,18 @@ export class XyoRemoteArchivist extends XyoArchivist {
69
65
  if (payloadError?.length) {
70
66
  throw new RemoteArchivistError('find', payloadError, 'payloads');
71
67
  }
72
- const [blocks = [], { error: blockError }] = await this.api.archive(this.archive).block.find(filter, 'tuple');
73
- if (blockError?.length) {
74
- throw new RemoteArchivistError('find', blockError, 'blocks');
68
+ const [blocks = [], response, error] = await this.api.archive(this.archive).block.find(filter, 'tuple');
69
+ if (error?.status >= 400) {
70
+ throw new RemoteArchivistError('find', `${error.statusText} [${error.status}]`);
71
+ }
72
+ if (response?.error?.length) {
73
+ throw new RemoteArchivistError('find', response?.error);
75
74
  }
76
75
  return payloads.concat(blocks);
77
76
  }
78
77
  catch (ex) {
79
- throw new RemoteArchivistError('find', ex, 'unexpected');
78
+ console.error(ex);
79
+ throw ex;
80
80
  }
81
81
  }
82
82
  }
@@ -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.32.1",
14
- "@xyo-network/archivist": "^2.32.1",
15
- "@xyo-network/boundwitness": "^2.32.1",
16
- "@xyo-network/core": "^2.32.1",
17
- "@xyo-network/payload": "^2.32.1",
18
- "@xyo-network/schema-payload-plugin": "^2.32.1",
13
+ "@xyo-network/account": "^2.33.0-rc.10",
14
+ "@xyo-network/archivist": "^2.33.0-rc.10",
15
+ "@xyo-network/boundwitness": "^2.33.0-rc.10",
16
+ "@xyo-network/core": "^2.33.0-rc.10",
17
+ "@xyo-network/payload": "^2.33.0-rc.10",
18
+ "@xyo-network/schema-payload-plugin": "^2.33.0-rc.10",
19
19
  "axios": "^0.27.2",
20
20
  "pako": "^2.0.4",
21
21
  "tslib": "^2.4.0"
@@ -57,5 +57,6 @@
57
57
  },
58
58
  "sideEffects": false,
59
59
  "types": "dist/esm/index.d.ts",
60
- "version": "2.32.1"
60
+ "version": "2.33.0-rc.10",
61
+ "stableVersion": "2.32.1"
61
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
+ })
@@ -1,16 +1,11 @@
1
1
  import { assertEx } from '@xylabs/sdk-js'
2
2
  import { XyoArchivist, XyoArchivistFindQuerySchema, XyoPayloadFindFilter } from '@xyo-network/archivist'
3
- import { XyoBoundWitness, XyoBoundWitnessSchema, XyoBoundWitnessWithPartialMeta } from '@xyo-network/boundwitness'
3
+ import { XyoBoundWitness, XyoBoundWitnessSchema, XyoBoundWitnessWithMeta, 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
- }
12
- }
13
-
14
9
  /** @description Archivist Context that connects to a remote archivist using the API */
15
10
  export class XyoRemoteArchivist extends XyoArchivist<XyoRemoteArchivistConfig> {
16
11
  public get api() {
@@ -29,13 +24,17 @@ export class XyoRemoteArchivist extends XyoArchivist<XyoRemoteArchivistConfig> {
29
24
  return await Promise.all(
30
25
  hashes.map(async (hash) => {
31
26
  try {
32
- const [payloads, { error }] = await this.api.archive(this.archive).payload.hash(hash).get('tuple')
33
- if (error?.length) {
34
- throw new RemoteArchivistError('get', error)
27
+ const [payloads, response, error] = await this.api.archive(this.archive).payload.hash(hash).get('tuple')
28
+ if (error?.status >= 400) {
29
+ throw new RemoteArchivistError('get', `${error.statusText} [${error.status}]`)
30
+ }
31
+ if (response?.error?.length) {
32
+ throw new RemoteArchivistError('get', response?.error)
35
33
  }
36
34
  return payloads?.pop() ?? null
37
35
  } catch (ex) {
38
- throw new RemoteArchivistError('get', ex, 'unexpected')
36
+ console.error(ex)
37
+ throw ex
39
38
  }
40
39
  }),
41
40
  )
@@ -51,24 +50,20 @@ export class XyoRemoteArchivist extends XyoArchivist<XyoRemoteArchivistConfig> {
51
50
  return boundwitness.payload_hashes.includes(hash)
52
51
  })
53
52
  })
54
- payloads.forEach((payload) => {
55
- let found = false
56
- const hash = new XyoPayloadWrapper(payload).hash
57
- boundwitnesses.forEach((boundwitnesses) => {
58
- if (boundwitnesses.payload_hashes.includes(hash)) {
59
- found = true
60
- }
61
- })
62
- assertEx(found, 'Payload not in Boundwitness received')
63
- })
64
- const boundwitness = this.bindPayloads(payloads)
65
- const [, { error }] = await this.api.archive(this.archive).block.post([boundwitness, ...boundwitnesses], 'tuple')
66
- if (error?.length) {
67
- throw new RemoteArchivistError('insert', error)
53
+ const [boundwitness] = await this.bindPayloads(payloads)
54
+ const bwWithMeta: Partial<XyoBoundWitnessWithMeta> & XyoBoundWitness = { ...boundwitness, _payloads: payloads }
55
+ const bwResult = await this.api.archive(this.archive).block.post([bwWithMeta], 'tuple')
56
+ const [, response, error] = bwResult
57
+ if (error?.status >= 400) {
58
+ throw new RemoteArchivistError('insert', `${error.statusText} [${error.status}]`)
59
+ }
60
+ if (response?.error?.length) {
61
+ throw new RemoteArchivistError('insert', response?.error)
68
62
  }
69
63
  return boundwitness
70
64
  } catch (ex) {
71
- throw new RemoteArchivistError('insert', ex, 'unexpected')
65
+ console.error(ex)
66
+ throw ex
72
67
  }
73
68
  }
74
69
 
@@ -78,13 +73,17 @@ export class XyoRemoteArchivist extends XyoArchivist<XyoRemoteArchivistConfig> {
78
73
  if (payloadError?.length) {
79
74
  throw new RemoteArchivistError('find', payloadError, 'payloads')
80
75
  }
81
- const [blocks = [], { error: blockError }] = await this.api.archive(this.archive).block.find(filter, 'tuple')
82
- if (blockError?.length) {
83
- throw new RemoteArchivistError('find', blockError, 'blocks')
76
+ const [blocks = [], response, error] = await this.api.archive(this.archive).block.find(filter, 'tuple')
77
+ if (error?.status >= 400) {
78
+ throw new RemoteArchivistError('find', `${error.statusText} [${error.status}]`)
79
+ }
80
+ if (response?.error?.length) {
81
+ throw new RemoteArchivistError('find', response?.error)
84
82
  }
85
83
  return payloads.concat(blocks) as R[]
86
84
  } catch (ex) {
87
- throw new RemoteArchivistError('find', ex, 'unexpected')
85
+ console.error(ex)
86
+ throw ex
88
87
  }
89
88
  }
90
89
  }