@xyo-network/xl1-rpc 1.12.5 → 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.
@@ -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;cAYvD,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;CAWnE"}
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,2 @@
1
+ import '@xylabs/vitest-extended';
2
+ //# sourceMappingURL=HttpXyoDataLake.spec.d.ts.map
@@ -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;AAetD,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;CAgEtB;AAED,yHAAyH;AACzH,eAAO,MAAM,uBAAuB,sCAAgC,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").SignedHydratedTransaction, [{
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 { SignedHydratedTransaction, TransactionBoundWitness } from '@xyo-network/xl1-protocol';
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<SignedHydratedTransaction, [{
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,yBAAyB,EAAE,uBAAuB,EAAE,MAAM,2BAA2B,CAAA;AACnG,OAAO,KAAK,CAAC,MAAM,KAAK,CAAA;AAcxB,eAAO,MAAM,mBAAmB;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;CAgDyB,CAAA"}
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.5",
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.5",
79
- "@xyo-network/xl1-wrappers": "~1.12.5",
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.3",
89
- "@xylabs/tsconfig": "~7.1.3",
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.5",
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 (!isAnyPayload(result.data)) {
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
- if (!isAnyPayload(response.data)) {
100
- throw new Error('Invalid response from server (expected a Payload)')
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 { SignedHydratedTransaction, TransactionBoundWitness } from '@xyo-network/xl1-protocol'
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 as SignedHydratedTransaction),
63
+ from: SignedHydratedTransactionZod.transform(data => asHydratedTransactionWithStorageMeta(data, { required: true })),
63
64
  },
64
65
  },
65
66
  } as const satisfies RpcSchemaMap<XyoSignerRpcMethodName>