@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.
- package/dist/cjs/Archivist/RemoteArchivistError.d.ts +6 -0
- package/dist/cjs/Archivist/RemoteArchivistError.d.ts.map +1 -0
- package/dist/cjs/Archivist/RemoteArchivistError.js +14 -0
- package/dist/cjs/Archivist/RemoteArchivistError.js.map +1 -0
- package/dist/cjs/Archivist/XyoRemoteArchivist.d.ts.map +1 -1
- package/dist/cjs/Archivist/XyoRemoteArchivist.js +39 -27
- package/dist/cjs/Archivist/XyoRemoteArchivist.js.map +1 -1
- package/dist/docs.json +879 -879
- package/dist/esm/Archivist/RemoteArchivistError.d.ts +6 -0
- package/dist/esm/Archivist/RemoteArchivistError.d.ts.map +1 -0
- package/dist/esm/Archivist/RemoteArchivistError.js +10 -0
- package/dist/esm/Archivist/RemoteArchivistError.js.map +1 -0
- package/dist/esm/Archivist/XyoRemoteArchivist.d.ts.map +1 -1
- package/dist/esm/Archivist/XyoRemoteArchivist.js +36 -24
- package/dist/esm/Archivist/XyoRemoteArchivist.js.map +1 -1
- package/package.json +7 -7
- package/src/Archivist/RemoteArchivistError.ts +9 -0
- package/src/Archivist/XyoRemoteArchivist.spec.ts +28 -0
- package/src/Archivist/XyoRemoteArchivist.ts +41 -23
|
@@ -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;
|
|
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
|
-
|
|
6
|
-
|
|
7
|
-
|
|
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
|
-
|
|
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
|
|
58
|
-
|
|
59
|
-
|
|
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
|
-
|
|
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
|
-
|
|
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":"AAAA,OAAO,EAAE,QAAQ,EAAE,MAAM,gBAAgB,CAAA;AACzC,OAAO,EAAE,YAAY,EAAE,2BAA2B,EAAwB,MAAM,wBAAwB,CAAA;AACxG,OAAO,EAAmB,qBAAqB,EAAkC,MAAM,2BAA2B,CAAA;AAClH,OAAO,EAAc,iBAAiB,EAAE,MAAM,sBAAsB,CAAA;
|
|
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.
|
|
14
|
-
"@xyo-network/archivist": "^2.33.0-rc.
|
|
15
|
-
"@xyo-network/boundwitness": "^2.33.0-rc.
|
|
16
|
-
"@xyo-network/core": "^2.33.0-rc.
|
|
17
|
-
"@xyo-network/payload": "^2.33.0-rc.
|
|
18
|
-
"@xyo-network/schema-payload-plugin": "^2.33.0-rc.
|
|
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.
|
|
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
|
-
|
|
9
|
-
|
|
10
|
-
|
|
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
|
-
|
|
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
|
|
67
|
-
|
|
68
|
-
|
|
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
|
-
|
|
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
|
-
|
|
90
|
-
throw new RemoteArchivistError('find', ex, 'unexpected')
|
|
108
|
+
return handleError('find', ex)
|
|
91
109
|
}
|
|
92
110
|
}
|
|
93
111
|
}
|