@xyo-network/xl1-rpc 1.12.6 → 1.12.7
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/neutral/index.mjs +19 -6
- package/dist/neutral/index.mjs.map +1 -1
- package/dist/neutral/provider/datalake/HttpXyoDataLake.d.ts.map +1 -1
- package/dist/neutral/provider/datalake/spec/HttpXyoDataLake.spec.d.ts +2 -0
- package/dist/neutral/provider/datalake/spec/HttpXyoDataLake.spec.d.ts.map +1 -0
- package/dist/neutral/transport/post-message/LegacyPostMessageRpcTransport.d.ts.map +1 -1
- package/dist/neutral/types/schema/AllRpcSchemas.d.ts +1 -1
- package/dist/neutral/types/schema/XyoSignerRpcSchemas.d.ts +2 -2
- package/dist/neutral/types/schema/XyoSignerRpcSchemas.d.ts.map +1 -1
- package/dist/node/index-node.mjs +19 -6
- package/dist/node/index-node.mjs.map +1 -1
- package/dist/node/provider/datalake/HttpXyoDataLake.d.ts.map +1 -1
- package/dist/node/provider/datalake/spec/HttpXyoDataLake.spec.d.ts +2 -0
- package/dist/node/provider/datalake/spec/HttpXyoDataLake.spec.d.ts.map +1 -0
- package/dist/node/transport/post-message/LegacyPostMessageRpcTransport.d.ts.map +1 -1
- package/dist/node/types/schema/AllRpcSchemas.d.ts +1 -1
- package/dist/node/types/schema/XyoSignerRpcSchemas.d.ts +2 -2
- package/dist/node/types/schema/XyoSignerRpcSchemas.d.ts.map +1 -1
- package/package.json +7 -6
- package/src/provider/datalake/HttpXyoDataLake.ts +15 -6
- package/src/provider/datalake/spec/HttpXyoDataLake.spec.ts +161 -0
- package/src/transport/post-message/LegacyPostMessageRpcTransport.ts +3 -0
- package/src/types/schema/XyoSignerRpcSchemas.ts +3 -2
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"HttpXyoDataLake.d.ts","sourceRoot":"","sources":["../../../../src/provider/datalake/HttpXyoDataLake.ts"],"names":[],"mappings":"AAGA,OAAO,KAAK,EAAE,IAAI,EAAE,MAAM,aAAa,CAAA;AACvC,OAAO,KAAK,EAAE,UAAU,EAAE,MAAM,iBAAiB,CAAA;AAEjD,OAAO,EAAgB,KAAK,OAAO,EAAE,MAAM,4BAA4B,CAAA;AACvE,OAAO,EAAE,KAAK,YAAY,EAAiB,MAAM,2BAA2B,CAAA;AAG5E,OAAO,EAAE,mBAAmB,EAAE,MAAM,0BAA0B,CAAA;AAE9D,qBAAa,eAAgB,SAAQ,mBAAmB;IACtD,OAAO,CAAC,SAAS,CAAO;IACxB,OAAO,CAAC,gBAAgB,CAAO;IAC/B,OAAO,CAAC,gBAAgB,CAAW;IACnC,OAAO,CAAC,SAAS,CAAQ;gBAEb,QAAQ,EAAE,MAAM;IAQ5B,IAAI,QAAQ,IAAI,MAAM,CAErB;IAEK,GAAG,CAAC,KAAK,EAAE,YAAY,EAAE,GAAG,OAAO,CAAC,YAAY,EAAE,CAAC;IAsBnD,GAAG,CAAC,MAAM,EAAE,IAAI,EAAE,GAAG,OAAO,CAAC,YAAY,EAAE,CAAC;cAMlC,cAAc,CAAC,IAAI,EAAE,WAAW,GAAG,OAAO,CAAC,WAAW,GAAG,SAAS,CAAC;cAYnE,UAAU,CAAC,IAAI,EAAE,OAAO,GAAG,OAAO,CAAC,OAAO,GAAG,SAAS,CAAC;
|
|
1
|
+
{"version":3,"file":"HttpXyoDataLake.d.ts","sourceRoot":"","sources":["../../../../src/provider/datalake/HttpXyoDataLake.ts"],"names":[],"mappings":"AAGA,OAAO,KAAK,EAAE,IAAI,EAAE,MAAM,aAAa,CAAA;AACvC,OAAO,KAAK,EAAE,UAAU,EAAE,MAAM,iBAAiB,CAAA;AAEjD,OAAO,EAAgB,KAAK,OAAO,EAAE,MAAM,4BAA4B,CAAA;AACvE,OAAO,EAAE,KAAK,YAAY,EAAiB,MAAM,2BAA2B,CAAA;AAG5E,OAAO,EAAE,mBAAmB,EAAE,MAAM,0BAA0B,CAAA;AAE9D,qBAAa,eAAgB,SAAQ,mBAAmB;IACtD,OAAO,CAAC,SAAS,CAAO;IACxB,OAAO,CAAC,gBAAgB,CAAO;IAC/B,OAAO,CAAC,gBAAgB,CAAW;IACnC,OAAO,CAAC,SAAS,CAAQ;gBAEb,QAAQ,EAAE,MAAM;IAQ5B,IAAI,QAAQ,IAAI,MAAM,CAErB;IAEK,GAAG,CAAC,KAAK,EAAE,YAAY,EAAE,GAAG,OAAO,CAAC,YAAY,EAAE,CAAC;IAsBnD,GAAG,CAAC,MAAM,EAAE,IAAI,EAAE,GAAG,OAAO,CAAC,YAAY,EAAE,CAAC;cAMlC,cAAc,CAAC,IAAI,EAAE,WAAW,GAAG,OAAO,CAAC,WAAW,GAAG,SAAS,CAAC;cAYnE,UAAU,CAAC,IAAI,EAAE,OAAO,GAAG,OAAO,CAAC,OAAO,GAAG,SAAS,CAAC;cAevD,QAAQ,CAAC,IAAI,EAAE,IAAI,EAAE,QAAQ,GAAE,MAAgC,GAAG,OAAO,CAAC,YAAY,GAAG,SAAS,CAAC;IAWnH,SAAS,CAAC,MAAM,CAAC,IAAI,EAAE,IAAI,GAAG,UAAU,CAAC,YAAY,GAAG,SAAS,CAAC;CAiBnE"}
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"HttpXyoDataLake.spec.d.ts","sourceRoot":"","sources":["../../../../../src/provider/datalake/spec/HttpXyoDataLake.spec.ts"],"names":[],"mappings":"AAAA,OAAO,yBAAyB,CAAA"}
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"LegacyPostMessageRpcTransport.d.ts","sourceRoot":"","sources":["../../../../src/transport/post-message/LegacyPostMessageRpcTransport.ts"],"names":[],"mappings":"AAQA,OAAO,KAAK,KAAK,CAAC,MAAM,KAAK,CAAA;AAE7B,OAAO,KAAK,EAAE,YAAY,EAAE,uBAAuB,EAAE,MAAM,sBAAsB,CAAA;AAEjF,OAAO,KAAK,EAAE,YAAY,EAAE,MAAM,oBAAoB,CAAA;
|
|
1
|
+
{"version":3,"file":"LegacyPostMessageRpcTransport.d.ts","sourceRoot":"","sources":["../../../../src/transport/post-message/LegacyPostMessageRpcTransport.ts"],"names":[],"mappings":"AAQA,OAAO,KAAK,KAAK,CAAC,MAAM,KAAK,CAAA;AAE7B,OAAO,KAAK,EAAE,YAAY,EAAE,uBAAuB,EAAE,MAAM,sBAAsB,CAAA;AAEjF,OAAO,KAAK,EAAE,YAAY,EAAE,MAAM,oBAAoB,CAAA;AAgBtD,iDAAiD;AACjD,qBAAa,6BAA8B,YAAW,YAAY,CAAC,YAAY,CAAC,uBAAuB,CAAC,CAAC;IACvG,SAAS,CAAC,QAAQ,CAAC,WAAW,CAAC,EAAE,MAAM,CAAA;IACvC,SAAS,CAAC,QAAQ,CAAC,OAAO,EAAE,YAAY,CAAC,uBAAuB,CAAC,CAAA;IACjE,SAAS,CAAC,QAAQ,CAAC,SAAS,CAAC,EAAE,MAAM,CAAA;gBAEzB,kBAAkB,CAAC,EAAE,MAAM,EAAE,SAAS,CAAC,EAAE,MAAM;IAMrD,WAAW,CACf,OAAO,SAAS,MAAM,YAAY,CAAC,uBAAuB,CAAC,EAE3D,MAAM,EAAE,OAAO,EACf,MAAM,CAAC,EAAE,CAAC,CAAC,KAAK,CAAC,YAAY,CAAC,uBAAuB,CAAC,CAAC,OAAO,CAAC,CAAC,QAAQ,CAAC,CAAC,IAAI,CAAC,CAAC,GAC/E,OAAO,CAAC,CAAC,CAAC,MAAM,CAAC,YAAY,CAAC,uBAAuB,CAAC,CAAC,OAAO,CAAC,CAAC,QAAQ,CAAC,CAAC,MAAM,CAAC,CAAC,CAAC;YAKxE,OAAO;CAiEtB;AAED,yHAAyH;AAEzH,eAAO,MAAM,uBAAuB,sCAAgC,CAAA"}
|
|
@@ -2381,7 +2381,7 @@ export declare const AllRpcSchemas: {
|
|
|
2381
2381
|
script: import("zod").ZodOptional<import("zod").ZodOptional<import("zod").ZodArray<import("zod").ZodString>>>;
|
|
2382
2382
|
}, import("zod/v4/core").$strip>, import("zod").ZodArray<import("zod").ZodObject<{
|
|
2383
2383
|
schema: import("zod").ZodString;
|
|
2384
|
-
}, import("zod/v4/core").$catchall<import("zod").ZodAny>>>], null>, import("zod").ZodTransform<import("@xyo-network/xl1-protocol").
|
|
2384
|
+
}, import("zod/v4/core").$catchall<import("zod").ZodAny>>>], null>, import("zod").ZodTransform<import("@xyo-network/xl1-protocol").HydratedTransactionWithStorageMeta<import("@xyo-network/xl1-protocol").TransactionBoundWitness, import("@xyo-network/payload-model").Payload>, [{
|
|
2385
2385
|
schema: "network.xyo.boundwitness";
|
|
2386
2386
|
addresses: import("@xylabs/typeof").Brand<import("@xylabs/typeof").Brand<Lowercase<string>, {
|
|
2387
2387
|
readonly __hex: true;
|
|
@@ -1,5 +1,5 @@
|
|
|
1
1
|
import type { Signed } from '@xyo-network/boundwitness-model';
|
|
2
|
-
import type {
|
|
2
|
+
import type { TransactionBoundWitness } from '@xyo-network/xl1-protocol';
|
|
3
3
|
import * as z from 'zod';
|
|
4
4
|
export declare const XyoSignerRpcSchemas: {
|
|
5
5
|
readonly xyoSigner_address: {
|
|
@@ -776,7 +776,7 @@ export declare const XyoSignerRpcSchemas: {
|
|
|
776
776
|
script: z.ZodOptional<z.ZodOptional<z.ZodArray<z.ZodString>>>;
|
|
777
777
|
}, z.core.$strip>, z.ZodArray<z.ZodObject<{
|
|
778
778
|
schema: z.ZodString;
|
|
779
|
-
}, z.core.$catchall<z.ZodAny>>>], null>, z.ZodTransform<
|
|
779
|
+
}, z.core.$catchall<z.ZodAny>>>], null>, z.ZodTransform<import("@xyo-network/xl1-protocol").HydratedTransactionWithStorageMeta<TransactionBoundWitness, import("@xyo-network/payload-model").Payload>, [{
|
|
780
780
|
schema: "network.xyo.boundwitness";
|
|
781
781
|
addresses: import("@xylabs/typeof").Brand<import("@xylabs/typeof").Brand<Lowercase<string>, {
|
|
782
782
|
readonly __hex: true;
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"XyoSignerRpcSchemas.d.ts","sourceRoot":"","sources":["../../../../src/types/schema/XyoSignerRpcSchemas.ts"],"names":[],"mappings":"AAAA,OAAO,KAAK,EAAE,MAAM,EAAE,MAAM,iCAAiC,CAAA;AAC7D,OAAO,KAAK,EAAE,
|
|
1
|
+
{"version":3,"file":"XyoSignerRpcSchemas.d.ts","sourceRoot":"","sources":["../../../../src/types/schema/XyoSignerRpcSchemas.ts"],"names":[],"mappings":"AAAA,OAAO,KAAK,EAAE,MAAM,EAAE,MAAM,iCAAiC,CAAA;AAC7D,OAAO,KAAK,EAAE,uBAAuB,EAAE,MAAM,2BAA2B,CAAA;AAExE,OAAO,KAAK,CAAC,MAAM,KAAK,CAAA;AAcxB,eAAO,MAAM,mBAAmB;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;CAgDyB,CAAA"}
|
package/package.json
CHANGED
|
@@ -1,7 +1,7 @@
|
|
|
1
1
|
{
|
|
2
2
|
"$schema": "http://json.schemastore.org/package.json",
|
|
3
3
|
"name": "@xyo-network/xl1-rpc",
|
|
4
|
-
"version": "1.12.
|
|
4
|
+
"version": "1.12.7",
|
|
5
5
|
"description": "XYO Layer One API",
|
|
6
6
|
"homepage": "https://xylabs.com",
|
|
7
7
|
"bugs": {
|
|
@@ -75,8 +75,8 @@
|
|
|
75
75
|
"@xyo-network/payload-builder": "~5.0.7",
|
|
76
76
|
"@xyo-network/payload-model": "~5.0.7",
|
|
77
77
|
"@xyo-network/xl1-protocol": "~1.10.15",
|
|
78
|
-
"@xyo-network/xl1-protocol-sdk": "~1.12.
|
|
79
|
-
"@xyo-network/xl1-wrappers": "~1.12.
|
|
78
|
+
"@xyo-network/xl1-protocol-sdk": "~1.12.7",
|
|
79
|
+
"@xyo-network/xl1-wrappers": "~1.12.7",
|
|
80
80
|
"axios": "~1.11.0",
|
|
81
81
|
"uuid": "~11.1.0",
|
|
82
82
|
"zod": "~4.0.17"
|
|
@@ -85,13 +85,14 @@
|
|
|
85
85
|
"@metamask/utils": "~11.4.2",
|
|
86
86
|
"@types/node": "~24.3.0",
|
|
87
87
|
"@xylabs/logger": "~5.0.10",
|
|
88
|
-
"@xylabs/ts-scripts-yarn3": "~7.1.
|
|
89
|
-
"@xylabs/tsconfig": "~7.1.
|
|
88
|
+
"@xylabs/ts-scripts-yarn3": "~7.1.7",
|
|
89
|
+
"@xylabs/tsconfig": "~7.1.7",
|
|
90
90
|
"@xylabs/vitest-extended": "~5.0.10",
|
|
91
91
|
"@xyo-network/account": "~5.0.7",
|
|
92
|
-
"@xyo-network/chain-protocol": "~1.12.
|
|
92
|
+
"@xyo-network/chain-protocol": "~1.12.7",
|
|
93
93
|
"@xyo-network/wallet": "~5.0.7",
|
|
94
94
|
"dotenv": "~17.2.1",
|
|
95
|
+
"eslint": "^9.33.0",
|
|
95
96
|
"typescript": "~5.9.2",
|
|
96
97
|
"vitest": "~3.2.4"
|
|
97
98
|
},
|
|
@@ -73,11 +73,14 @@ export class HttpXyoDataLake extends AbstractXyoDataLake {
|
|
|
73
73
|
if (result.status < 200 || result.status >= 300) {
|
|
74
74
|
throw new Error(`Failed to add items [${result.status}]: ${result.statusText}`)
|
|
75
75
|
}
|
|
76
|
-
if (!
|
|
76
|
+
if (!Array.isArray(result.data) || result.data.length !== 1) {
|
|
77
|
+
throw new Error('Invalid response from server (expected an Array of Payloads)')
|
|
78
|
+
}
|
|
79
|
+
const [response] = result.data
|
|
80
|
+
if (!isAnyPayload(response)) {
|
|
77
81
|
throw new Error('Invalid response from server (expected a Payload)')
|
|
78
82
|
}
|
|
79
|
-
|
|
80
|
-
return result.data
|
|
83
|
+
return response
|
|
81
84
|
}
|
|
82
85
|
|
|
83
86
|
protected async fetchOne(hash: Hash, maxDepth: number = Number.MAX_SAFE_INTEGER): Promise<DataLakeData | undefined> {
|
|
@@ -96,10 +99,16 @@ export class HttpXyoDataLake extends AbstractXyoDataLake {
|
|
|
96
99
|
if (response.status < 200 || response.status >= 300) {
|
|
97
100
|
throw new Error(`Failed to get item [${response.status}]: ${response.statusText}`)
|
|
98
101
|
}
|
|
99
|
-
|
|
100
|
-
|
|
102
|
+
const contentType = response.headers['content-type']
|
|
103
|
+
if (contentType && contentType.includes('application/json')) {
|
|
104
|
+
const parsed = JSON.parse(response.data)
|
|
105
|
+
if (!isAnyPayload(parsed)) {
|
|
106
|
+
throw new Error('Invalid response from server (expected a Payload)')
|
|
107
|
+
}
|
|
108
|
+
return parsed
|
|
109
|
+
} else {
|
|
110
|
+
throw new Error(`Unexpected content type: ${contentType}`)
|
|
101
111
|
}
|
|
102
|
-
return response.data
|
|
103
112
|
})
|
|
104
113
|
}
|
|
105
114
|
}
|
|
@@ -0,0 +1,161 @@
|
|
|
1
|
+
import '@xylabs/vitest-extended'
|
|
2
|
+
|
|
3
|
+
import { PayloadBuilder } from '@xyo-network/payload-builder'
|
|
4
|
+
import type { HashPayload } from '@xyo-network/xl1-protocol'
|
|
5
|
+
import { HashSchema } from '@xyo-network/xl1-protocol'
|
|
6
|
+
import {
|
|
7
|
+
beforeAll, describe, expect, it,
|
|
8
|
+
} from 'vitest'
|
|
9
|
+
|
|
10
|
+
import { HttpXyoDataLake } from '../HttpXyoDataLake.ts'
|
|
11
|
+
|
|
12
|
+
describe.skip('HttpXyoDataLake', () => {
|
|
13
|
+
let sut: HttpXyoDataLake
|
|
14
|
+
const endpoint = 'http://localhost:8083/dataLake'
|
|
15
|
+
// const endpoint = 'https://beta.api.archivist.xyo.network/dataLake'
|
|
16
|
+
const item = new PayloadBuilder({ schema: 'network.xyo.id' }).fields({ salt: `${Date.now()}` }).meta({ $sources: [] }).build()
|
|
17
|
+
|
|
18
|
+
beforeAll(() => {
|
|
19
|
+
sut = new HttpXyoDataLake(endpoint)
|
|
20
|
+
})
|
|
21
|
+
describe('add', () => {
|
|
22
|
+
describe('with single payload', () => {
|
|
23
|
+
it('should add', async () => {
|
|
24
|
+
const result = await sut.add([item])
|
|
25
|
+
expect(result).toBeArrayOfSize(1)
|
|
26
|
+
expect(result[0]).toEqual(expect.objectContaining(item))
|
|
27
|
+
})
|
|
28
|
+
})
|
|
29
|
+
describe('with multiple payloads', () => {
|
|
30
|
+
it('should add all', async () => {
|
|
31
|
+
const item1 = new PayloadBuilder({ schema: 'network.xyo.id' }).fields({ salt: `${Date.now()}-1` }).meta({ $sources: [] }).build()
|
|
32
|
+
const item2 = new PayloadBuilder({ schema: 'network.xyo.id' }).fields({ salt: `${Date.now()}-2` }).meta({ $sources: [] }).build()
|
|
33
|
+
const result = await sut.add([item1, item2])
|
|
34
|
+
expect(result).toBeArrayOfSize(2)
|
|
35
|
+
expect(result[0]).toEqual(expect.objectContaining(item1))
|
|
36
|
+
expect(result[1]).toEqual(expect.objectContaining(item2))
|
|
37
|
+
})
|
|
38
|
+
})
|
|
39
|
+
})
|
|
40
|
+
describe('get', () => {
|
|
41
|
+
describe('with single payload', () => {
|
|
42
|
+
it('should get by data hash', async () => {
|
|
43
|
+
const hash = await PayloadBuilder.dataHash(item)
|
|
44
|
+
const expected = PayloadBuilder.omitMeta(item)
|
|
45
|
+
const result = await sut.get([hash])
|
|
46
|
+
expect(result).toBeArrayOfSize(1)
|
|
47
|
+
expect(result[0]).toEqual(expect.objectContaining(expected))
|
|
48
|
+
})
|
|
49
|
+
it('should get by root hash', async () => {
|
|
50
|
+
const hash = await PayloadBuilder.hash(item)
|
|
51
|
+
const result = await sut.get([hash])
|
|
52
|
+
expect(result).toBeArrayOfSize(1)
|
|
53
|
+
expect(result[0]).toEqual(expect.objectContaining(item))
|
|
54
|
+
})
|
|
55
|
+
})
|
|
56
|
+
describe('with multiple payloads', () => {
|
|
57
|
+
it('should get all by data hash', async () => {
|
|
58
|
+
const item1 = new PayloadBuilder({ schema: 'network.xyo.id' }).fields({ salt: `${Date.now()}-a` }).meta({ $sources: [] }).build()
|
|
59
|
+
const item2 = new PayloadBuilder({ schema: 'network.xyo.id' }).fields({ salt: `${Date.now()}-b` }).meta({ $sources: [] }).build()
|
|
60
|
+
const hash1 = await PayloadBuilder.dataHash(item1)
|
|
61
|
+
const hash2 = await PayloadBuilder.dataHash(item2)
|
|
62
|
+
|
|
63
|
+
await sut.add([item1, item2])
|
|
64
|
+
|
|
65
|
+
const result = await sut.get([hash1, hash2])
|
|
66
|
+
expect(result).toBeArrayOfSize(2)
|
|
67
|
+
expect(result).toEqual(expect.arrayContaining([
|
|
68
|
+
expect.objectContaining(PayloadBuilder.omitMeta(item1)),
|
|
69
|
+
expect.objectContaining(PayloadBuilder.omitMeta(item2)),
|
|
70
|
+
]))
|
|
71
|
+
})
|
|
72
|
+
it('should get all by root hash', async () => {
|
|
73
|
+
const item1 = new PayloadBuilder({ schema: 'network.xyo.id' }).fields({ salt: `${Date.now()}-a` }).meta({ $sources: [] }).build()
|
|
74
|
+
const item2 = new PayloadBuilder({ schema: 'network.xyo.id' }).fields({ salt: `${Date.now()}-b` }).meta({ $sources: [] }).build()
|
|
75
|
+
const hash1 = await PayloadBuilder.hash(item1)
|
|
76
|
+
const hash2 = await PayloadBuilder.hash(item2)
|
|
77
|
+
|
|
78
|
+
await sut.add([item1, item2])
|
|
79
|
+
|
|
80
|
+
const result = await sut.get([hash1, hash2])
|
|
81
|
+
expect(result).toBeArrayOfSize(2)
|
|
82
|
+
expect(result).toEqual(expect.arrayContaining([
|
|
83
|
+
expect.objectContaining(item1),
|
|
84
|
+
expect.objectContaining(item2),
|
|
85
|
+
]))
|
|
86
|
+
})
|
|
87
|
+
})
|
|
88
|
+
})
|
|
89
|
+
describe('fetch', () => {
|
|
90
|
+
describe('with single payload', () => {
|
|
91
|
+
it('should fetch by data hash', async () => {
|
|
92
|
+
const hash = await PayloadBuilder.dataHash(item)
|
|
93
|
+
const hashPayload = new PayloadBuilder<HashPayload>({ schema: HashSchema }).fields({ hash }).build()
|
|
94
|
+
const hashPayloadHash = await PayloadBuilder.hash(hashPayload)
|
|
95
|
+
await sut.add([hashPayload])
|
|
96
|
+
const expected = PayloadBuilder.omitMeta(item)
|
|
97
|
+
const result = await sut.fetch([hashPayloadHash])
|
|
98
|
+
expect(result).toBeArrayOfSize(1)
|
|
99
|
+
expect(result[0]).toEqual(expect.objectContaining(expected))
|
|
100
|
+
})
|
|
101
|
+
it('should fetch by root hash', async () => {
|
|
102
|
+
const hash = await PayloadBuilder.hash(item)
|
|
103
|
+
const hashPayload = new PayloadBuilder<HashPayload>({ schema: HashSchema }).fields({ hash }).build()
|
|
104
|
+
const hashPayloadHash = await PayloadBuilder.hash(hashPayload)
|
|
105
|
+
await sut.add([hashPayload])
|
|
106
|
+
const expected = PayloadBuilder.omitMeta(item)
|
|
107
|
+
const result = await sut.fetch([hashPayloadHash])
|
|
108
|
+
expect(result).toBeArrayOfSize(1)
|
|
109
|
+
expect(result[0]).toEqual(expect.objectContaining(expected))
|
|
110
|
+
})
|
|
111
|
+
})
|
|
112
|
+
describe('with multiple payloads', () => {
|
|
113
|
+
it('should fetch all by root hash', async () => {
|
|
114
|
+
const item1 = new PayloadBuilder({ schema: 'network.xyo.id' }).fields({ salt: `${Date.now()}-x` }).meta({ $sources: [] }).build()
|
|
115
|
+
const item2 = new PayloadBuilder({ schema: 'network.xyo.id' }).fields({ salt: `${Date.now()}-y` }).meta({ $sources: [] }).build()
|
|
116
|
+
await sut.add([item1, item2])
|
|
117
|
+
const hash1 = await PayloadBuilder.hash(item1)
|
|
118
|
+
const hash2 = await PayloadBuilder.hash(item2)
|
|
119
|
+
|
|
120
|
+
const hashPayload1 = new PayloadBuilder<HashPayload>({ schema: HashSchema }).fields({ hash: hash1 }).build()
|
|
121
|
+
const hashPayload2 = new PayloadBuilder<HashPayload>({ schema: HashSchema }).fields({ hash: hash2 }).build()
|
|
122
|
+
await sut.add([hashPayload1, hashPayload2])
|
|
123
|
+
const hph1Hash = await PayloadBuilder.hash(hashPayload1)
|
|
124
|
+
const hph2Hash = await PayloadBuilder.hash(hashPayload2)
|
|
125
|
+
|
|
126
|
+
const result = await sut.fetch([hph1Hash, hph2Hash])
|
|
127
|
+
const expected1 = PayloadBuilder.omitMeta(item1)
|
|
128
|
+
const expected2 = PayloadBuilder.omitMeta(item2)
|
|
129
|
+
|
|
130
|
+
expect(result).toBeArrayOfSize(2)
|
|
131
|
+
expect(result).toEqual(expect.arrayContaining([
|
|
132
|
+
expect.objectContaining(expected1),
|
|
133
|
+
expect.objectContaining(expected2),
|
|
134
|
+
]))
|
|
135
|
+
})
|
|
136
|
+
it('should fetch all by root hash', async () => {
|
|
137
|
+
const item1 = new PayloadBuilder({ schema: 'network.xyo.id' }).fields({ salt: `${Date.now()}-x` }).meta({ $sources: [] }).build()
|
|
138
|
+
const item2 = new PayloadBuilder({ schema: 'network.xyo.id' }).fields({ salt: `${Date.now()}-y` }).meta({ $sources: [] }).build()
|
|
139
|
+
await sut.add([item1, item2])
|
|
140
|
+
const hash1 = await PayloadBuilder.hash(item1)
|
|
141
|
+
const hash2 = await PayloadBuilder.hash(item2)
|
|
142
|
+
|
|
143
|
+
const hashPayload1 = new PayloadBuilder<HashPayload>({ schema: HashSchema }).fields({ hash: hash1 }).build()
|
|
144
|
+
const hashPayload2 = new PayloadBuilder<HashPayload>({ schema: HashSchema }).fields({ hash: hash2 }).build()
|
|
145
|
+
await sut.add([hashPayload1, hashPayload2])
|
|
146
|
+
const hph1Hash = await PayloadBuilder.hash(hashPayload1)
|
|
147
|
+
const hph2Hash = await PayloadBuilder.hash(hashPayload2)
|
|
148
|
+
|
|
149
|
+
const result = await sut.fetch([hph1Hash, hph2Hash])
|
|
150
|
+
const expected1 = PayloadBuilder.omitMeta(item1)
|
|
151
|
+
const expected2 = PayloadBuilder.omitMeta(item2)
|
|
152
|
+
|
|
153
|
+
expect(result).toBeArrayOfSize(2)
|
|
154
|
+
expect(result).toEqual(expect.arrayContaining([
|
|
155
|
+
expect.objectContaining(PayloadBuilder.omitMeta(expected1)),
|
|
156
|
+
expect.objectContaining(PayloadBuilder.omitMeta(expected2)),
|
|
157
|
+
]))
|
|
158
|
+
})
|
|
159
|
+
})
|
|
160
|
+
})
|
|
161
|
+
})
|
|
@@ -11,6 +11,7 @@ import type * as z from 'zod'
|
|
|
11
11
|
import type { RpcSchemaMap, XyoGatewayRpcMethodName } from '../../types/index.ts'
|
|
12
12
|
import { jsonrpc, XyoGatewayRpcSchemas } from '../../types/index.ts'
|
|
13
13
|
import type { RpcTransport } from '../RpcTransport.ts'
|
|
14
|
+
// eslint-disable-next-line sonarjs/deprecation
|
|
14
15
|
import { isRpcError } from './helpers.ts'
|
|
15
16
|
import { resolvedEvent } from './resolveData.ts'
|
|
16
17
|
|
|
@@ -77,6 +78,7 @@ export class LegacyPostMessageRpcTransport implements RpcTransport<RpcSchemaMap<
|
|
|
77
78
|
|
|
78
79
|
if (data.legacyEventData) {
|
|
79
80
|
// Handle legacy event data
|
|
81
|
+
// eslint-disable-next-line sonarjs/deprecation
|
|
80
82
|
if (data.legacyEventData.result.some(isRpcError)) {
|
|
81
83
|
reject(data.legacyEventData.result[0])
|
|
82
84
|
} else {
|
|
@@ -114,4 +116,5 @@ export class LegacyPostMessageRpcTransport implements RpcTransport<RpcSchemaMap<
|
|
|
114
116
|
}
|
|
115
117
|
|
|
116
118
|
/** @deprecated - use LegacyPostMessageRpcTransport but rely on wallet release > 1.17.1 to handle the postMessage flow */
|
|
119
|
+
// eslint-disable-next-line sonarjs/deprecation
|
|
117
120
|
export const PostMessageRpcTransport = LegacyPostMessageRpcTransport
|
|
@@ -1,5 +1,6 @@
|
|
|
1
1
|
import type { Signed } from '@xyo-network/boundwitness-model'
|
|
2
|
-
import type {
|
|
2
|
+
import type { TransactionBoundWitness } from '@xyo-network/xl1-protocol'
|
|
3
|
+
import { asHydratedTransactionWithStorageMeta } from '@xyo-network/xl1-protocol'
|
|
3
4
|
import * as z from 'zod'
|
|
4
5
|
|
|
5
6
|
import type { XyoSignerRpcMethodName } from '../XyoSignerRpc.ts'
|
|
@@ -59,7 +60,7 @@ export const XyoSignerRpcSchemas = {
|
|
|
59
60
|
},
|
|
60
61
|
result: {
|
|
61
62
|
to: SignedHydratedTransactionZod,
|
|
62
|
-
from: SignedHydratedTransactionZod.transform(data => data
|
|
63
|
+
from: SignedHydratedTransactionZod.transform(data => asHydratedTransactionWithStorageMeta(data, { required: true })),
|
|
63
64
|
},
|
|
64
65
|
},
|
|
65
66
|
} as const satisfies RpcSchemaMap<XyoSignerRpcMethodName>
|