Skip to content

Commit d663344

Browse files
authored
Add Option parsing for Spec.scValToNative (#1228)
* properly convert `Option` ScVal types to native values * add tests for `ScVal` `Option` deserializing and fmting changes * allow for `null` to be parsed as `scVoid` for `scOption`
1 parent 28e1e1b commit d663344

7 files changed

Lines changed: 80 additions & 51 deletions

File tree

CHANGELOG.md

Lines changed: 4 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -6,6 +6,10 @@ A breaking change will get clearly marked in this log.
66

77
## Unreleased
88

9+
### Added
10+
* `Spec.scValToNative` now supports parsing `Option`s ([#1228](https://github.com/stellar/js-stellar-sdk/pull/1228)).
11+
### Fixed
12+
* `Spec.scValToNative` returns `null` for `void`s or `Option`als instead of the ambiguous `undefined` ([#1228](https://github.com/stellar/js-stellar-sdk/pull/1228)).
913

1014
## [v14.2.0](https://github.com/stellar/js-stellar-sdk/compare/v14.1.1...v14.2.0)
1115

package.json

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -111,7 +111,7 @@
111111
"_build": "yarn build:node:all && yarn build:test && yarn build:browser:all",
112112
"_babel": "babel --extensions '.ts' --out-dir ${OUTPUT_DIR:-lib} src/",
113113
"_nyc": "node node_modules/.bin/nyc --nycrc-path config/.nycrc",
114-
"_prettier": "prettier --config config/prettier.config.js --ignore-path config/.prettierignore --write './src/**/*.ts' './test/**/*.js'"
114+
"_prettier": "prettier --config config/prettier.config.js --ignore-path config/.prettierignore --write './src/**/*.ts' './test/**/*.{js,ts}'"
115115
},
116116
"husky": {
117117
"hooks": {

src/contract/spec.ts

Lines changed: 12 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -640,7 +640,7 @@ export class Spec {
640640
}
641641
if (value === xdr.ScSpecType.scSpecTypeOption().value) {
642642
const opt = ty.option();
643-
if (val === undefined) {
643+
if (val === null || val === undefined) {
644644
return xdr.ScVal.scvVoid();
645645
}
646646
return this.nativeToScVal(val, opt.valueType());
@@ -938,6 +938,16 @@ export class Spec {
938938
scValToNative<T>(scv: xdr.ScVal, typeDef: xdr.ScSpecTypeDef): T {
939939
const t = typeDef.switch();
940940
const value = t.value;
941+
942+
if (value === xdr.ScSpecType.scSpecTypeOption().value) {
943+
switch (scv.switch().value) {
944+
case xdr.ScValType.scvVoid().value:
945+
return null as T;
946+
default:
947+
return this.scValToNative(scv, typeDef.option().valueType());
948+
}
949+
}
950+
941951
if (value === xdr.ScSpecType.scSpecTypeUdt().value) {
942952
return this.scValUdtToNative(scv, typeDef.udt());
943953
}
@@ -947,7 +957,7 @@ export class Spec {
947957
// updated
948958
switch (scv.switch().value) {
949959
case xdr.ScValType.scvVoid().value:
950-
return undefined as T;
960+
return null as T;
951961

952962
// these can be converted to bigints directly
953963
case xdr.ScValType.scvU64().value:

test/e2e/src/test-custom-types.js

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -247,7 +247,7 @@ describe("Custom Types Tests", function () {
247247
expect(response.result).to.equal(1);
248248

249249
response = await this.context.client.option({ option: undefined });
250-
expect(response.result).to.equal(undefined);
250+
expect(response.result).to.equal(null);
251251
// this is the behavior we probably want, but fails
252252
// t.deepEqual(await t.context.client.option(), undefined) // typing and implementation require the object
253253
// t.deepEqual((await t.context.client.option({})).result, undefined) // typing requires argument; implementation would be fine with this

test/unit/spec.json

Lines changed: 38 additions & 36 deletions
Original file line numberDiff line numberDiff line change
@@ -1,37 +1,39 @@
11
[
2-
"AAAAAQAAAC9UaGlzIGlzIGZyb20gdGhlIHJ1c3QgZG9jIGFib3ZlIHRoZSBzdHJ1Y3QgVGVzdAAAAAAAAAAABFRlc3QAAAADAAAAAAAAAAFhAAAAAAAABAAAAAAAAAABYgAAAAAAAAEAAAAAAAAAAWMAAAAAAAAR",
3-
"AAAAAgAAAAAAAAAAAAAAClNpbXBsZUVudW0AAAAAAAMAAAAAAAAAAAAAAAVGaXJzdAAAAAAAAAAAAAAAAAAABlNlY29uZAAAAAAAAAAAAAAAAAAFVGhpcmQAAAA=",
4-
"AAAAAwAAAAAAAAAAAAAACVJveWFsQ2FyZAAAAAAAAAMAAAAAAAAABEphY2sAAAALAAAAAAAAAAVRdWVlbgAAAAAAAAwAAAAAAAAABEtpbmcAAAAN",
5-
"AAAAAQAAAAAAAAAAAAAAC1R1cGxlU3RydWN0AAAAAAIAAAAAAAAAATAAAAAAAAfQAAAABFRlc3QAAAAAAAAAATEAAAAAAAfQAAAAClNpbXBsZUVudW0AAA==",
6-
"AAAAAgAAAAAAAAAAAAAAC0NvbXBsZXhFbnVtAAAAAAUAAAABAAAAAAAAAAZTdHJ1Y3QAAAAAAAEAAAfQAAAABFRlc3QAAAABAAAAAAAAAAVUdXBsZQAAAAAAAAEAAAfQAAAAC1R1cGxlU3RydWN0AAAAAAEAAAAAAAAABEVudW0AAAABAAAH0AAAAApTaW1wbGVFbnVtAAAAAAABAAAAAAAAAAVBc3NldAAAAAAAAAIAAAATAAAACwAAAAAAAAAAAAAABFZvaWQ=",
7-
"AAAABAAAAAAAAAAAAAAABUVycm9yAAAAAAAAAQAAABxQbGVhc2UgcHJvdmlkZSBhbiBvZGQgbnVtYmVyAAAAD051bWJlck11c3RCZU9kZAAAAAAB",
8-
"AAAAAAAAAAAAAAAFaGVsbG8AAAAAAAABAAAAAAAAAAVoZWxsbwAAAAAAABEAAAABAAAAEQ==",
9-
"AAAAAAAAAAAAAAAEd29pZAAAAAAAAAAA",
10-
"AAAAAAAAAAAAAAADdmFsAAAAAAAAAAABAAAAAA==",
11-
"AAAAAAAAAAAAAAAQdTMyX2ZhaWxfb25fZXZlbgAAAAEAAAAAAAAABHUzMl8AAAAEAAAAAQAAA+kAAAAEAAAAAw==",
12-
"AAAAAAAAAAAAAAAEdTMyXwAAAAEAAAAAAAAABHUzMl8AAAAEAAAAAQAAAAQ=",
13-
"AAAAAAAAAAAAAAAEaTMyXwAAAAEAAAAAAAAABGkzMl8AAAAFAAAAAQAAAAU=",
14-
"AAAAAAAAAAAAAAAEaTY0XwAAAAEAAAAAAAAABGk2NF8AAAAHAAAAAQAAAAc=",
15-
"AAAAAAAAACxFeGFtcGxlIGNvbnRyYWN0IG1ldGhvZCB3aGljaCB0YWtlcyBhIHN0cnVjdAAAAApzdHJ1a3RfaGVsAAAAAAABAAAAAAAAAAZzdHJ1a3QAAAAAB9AAAAAEVGVzdAAAAAEAAAPqAAAAEQ==",
16-
"AAAAAAAAAAAAAAAGc3RydWt0AAAAAAABAAAAAAAAAAZzdHJ1a3QAAAAAB9AAAAAEVGVzdAAAAAEAAAfQAAAABFRlc3Q=",
17-
"AAAAAAAAAAAAAAAGc2ltcGxlAAAAAAABAAAAAAAAAAZzaW1wbGUAAAAAB9AAAAAKU2ltcGxlRW51bQAAAAAAAQAAB9AAAAAKU2ltcGxlRW51bQAA",
18-
"AAAAAAAAAAAAAAAHY29tcGxleAAAAAABAAAAAAAAAAdjb21wbGV4AAAAB9AAAAALQ29tcGxleEVudW0AAAAAAQAAB9AAAAALQ29tcGxleEVudW0A",
19-
"AAAAAAAAAAAAAAAIYWRkcmVzc2UAAAABAAAAAAAAAAhhZGRyZXNzZQAAABMAAAABAAAAEw==",
20-
"AAAAAAAAAAAAAAAFYnl0ZXMAAAAAAAABAAAAAAAAAAVieXRlcwAAAAAAAA4AAAABAAAADg==",
21-
"AAAAAAAAAAAAAAAHYnl0ZXNfbgAAAAABAAAAAAAAAAdieXRlc19uAAAAA+4AAAAJAAAAAQAAA+4AAAAJ",
22-
"AAAAAAAAAAAAAAAEY2FyZAAAAAEAAAAAAAAABGNhcmQAAAfQAAAACVJveWFsQ2FyZAAAAAAAAAEAAAfQAAAACVJveWFsQ2FyZAAAAA==",
23-
"AAAAAAAAAAAAAAAHYm9vbGVhbgAAAAABAAAAAAAAAAdib29sZWFuAAAAAAEAAAABAAAAAQ==",
24-
"AAAAAAAAABdOZWdhdGVzIGEgYm9vbGVhbiB2YWx1ZQAAAAADbm90AAAAAAEAAAAAAAAAB2Jvb2xlYW4AAAAAAQAAAAEAAAAB",
25-
"AAAAAAAAAAAAAAAEaTEyOAAAAAEAAAAAAAAABGkxMjgAAAALAAAAAQAAAAs=",
26-
"AAAAAAAAAAAAAAAEdTEyOAAAAAEAAAAAAAAABHUxMjgAAAAKAAAAAQAAAAo=",
27-
"AAAAAAAAAAAAAAAKbXVsdGlfYXJncwAAAAAAAgAAAAAAAAABYQAAAAAAAAQAAAAAAAAAAWIAAAAAAAABAAAAAQAAAAQ=",
28-
"AAAAAAAAAAAAAAADbWFwAAAAAAEAAAAAAAAAA21hcAAAAAPsAAAABAAAAAEAAAABAAAD7AAAAAQAAAAB",
29-
"AAAAAAAAAAAAAAADdmVjAAAAAAEAAAAAAAAAA3ZlYwAAAAPqAAAABAAAAAEAAAPqAAAABA==",
30-
"AAAAAAAAAAAAAAAFdHVwbGUAAAAAAAABAAAAAAAAAAV0dXBsZQAAAAAAA+0AAAACAAAAEQAAAAQAAAABAAAD7QAAAAIAAAARAAAABA==",
31-
"AAAAAAAAAB9FeGFtcGxlIG9mIGFuIG9wdGlvbmFsIGFyZ3VtZW50AAAAAAZvcHRpb24AAAAAAAEAAAAAAAAABm9wdGlvbgAAAAAD6AAAAAQAAAABAAAD6AAAAAQ=",
32-
"AAAAAAAAAAAAAAAEdTI1NgAAAAEAAAAAAAAABHUyNTYAAAAMAAAAAQAAAAw=",
33-
"AAAAAAAAAAAAAAAEaTI1NgAAAAEAAAAAAAAABGkyNTYAAAANAAAAAQAAAA0=",
34-
"AAAAAAAAAAAAAAAGc3RyaW5nAAAAAAABAAAAAAAAAAZzdHJpbmcAAAAAABAAAAABAAAAEA==",
35-
"AAAAAAAAAAAAAAAMdHVwbGVfc3RydWt0AAAAAQAAAAAAAAAMdHVwbGVfc3RydWt0AAAH0AAAAAtUdXBsZVN0cnVjdAAAAAABAAAH0AAAAAtUdXBsZVN0cnVjdAA="
36-
]
37-
2+
"AAAAAQAAAC9UaGlzIGlzIGZyb20gdGhlIHJ1c3QgZG9jIGFib3ZlIHRoZSBzdHJ1Y3QgVGVzdAAAAAAAAAAABFRlc3QAAAADAAAAAAAAAAFhAAAAAAAABAAAAAAAAAABYgAAAAAAAAEAAAAAAAAAAWMAAAAAAAAR",
3+
"AAAAAgAAAAAAAAAAAAAAClNpbXBsZUVudW0AAAAAAAMAAAAAAAAAAAAAAAVGaXJzdAAAAAAAAAAAAAAAAAAABlNlY29uZAAAAAAAAAAAAAAAAAAFVGhpcmQAAAA=",
4+
"AAAAAwAAAAAAAAAAAAAACVJveWFsQ2FyZAAAAAAAAAMAAAAAAAAABEphY2sAAAALAAAAAAAAAAVRdWVlbgAAAAAAAAwAAAAAAAAABEtpbmcAAAAN",
5+
"AAAAAQAAAAAAAAAAAAAAC1R1cGxlU3RydWN0AAAAAAIAAAAAAAAAATAAAAAAAAfQAAAABFRlc3QAAAAAAAAAATEAAAAAAAfQAAAAClNpbXBsZUVudW0AAA==",
6+
"AAAAAgAAAAAAAAAAAAAAC0NvbXBsZXhFbnVtAAAAAAUAAAABAAAAAAAAAAZTdHJ1Y3QAAAAAAAEAAAfQAAAABFRlc3QAAAABAAAAAAAAAAVUdXBsZQAAAAAAAAEAAAfQAAAAC1R1cGxlU3RydWN0AAAAAAEAAAAAAAAABEVudW0AAAABAAAH0AAAAApTaW1wbGVFbnVtAAAAAAABAAAAAAAAAAVBc3NldAAAAAAAAAIAAAATAAAACwAAAAAAAAAAAAAABFZvaWQ=",
7+
"AAAABAAAAAAAAAAAAAAABUVycm9yAAAAAAAAAQAAABxQbGVhc2UgcHJvdmlkZSBhbiBvZGQgbnVtYmVyAAAAD051bWJlck11c3RCZU9kZAAAAAAB",
8+
"AAAAAAAAAAAAAAAFaGVsbG8AAAAAAAABAAAAAAAAAAVoZWxsbwAAAAAAABEAAAABAAAAEQ==",
9+
"AAAAAAAAAAAAAAAEd29pZAAAAAAAAAAA",
10+
"AAAAAAAAAAAAAAADdmFsAAAAAAAAAAABAAAAAA==",
11+
"AAAAAAAAAAAAAAAQdTMyX2ZhaWxfb25fZXZlbgAAAAEAAAAAAAAABHUzMl8AAAAEAAAAAQAAA+kAAAAEAAAAAw==",
12+
"AAAAAAAAAAAAAAAEdTMyXwAAAAEAAAAAAAAABHUzMl8AAAAEAAAAAQAAAAQ=",
13+
"AAAAAAAAAAAAAAAEaTMyXwAAAAEAAAAAAAAABGkzMl8AAAAFAAAAAQAAAAU=",
14+
"AAAAAAAAAAAAAAAEaTY0XwAAAAEAAAAAAAAABGk2NF8AAAAHAAAAAQAAAAc=",
15+
"AAAAAAAAACxFeGFtcGxlIGNvbnRyYWN0IG1ldGhvZCB3aGljaCB0YWtlcyBhIHN0cnVjdAAAAApzdHJ1a3RfaGVsAAAAAAABAAAAAAAAAAZzdHJ1a3QAAAAAB9AAAAAEVGVzdAAAAAEAAAPqAAAAEQ==",
16+
"AAAAAAAAAAAAAAAGc3RydWt0AAAAAAABAAAAAAAAAAZzdHJ1a3QAAAAAB9AAAAAEVGVzdAAAAAEAAAfQAAAABFRlc3Q=",
17+
"AAAAAAAAAAAAAAAGc2ltcGxlAAAAAAABAAAAAAAAAAZzaW1wbGUAAAAAB9AAAAAKU2ltcGxlRW51bQAAAAAAAQAAB9AAAAAKU2ltcGxlRW51bQAA",
18+
"AAAAAAAAAAAAAAAHY29tcGxleAAAAAABAAAAAAAAAAdjb21wbGV4AAAAB9AAAAALQ29tcGxleEVudW0AAAAAAQAAB9AAAAALQ29tcGxleEVudW0A",
19+
"AAAAAAAAAAAAAAAIYWRkcmVzc2UAAAABAAAAAAAAAAhhZGRyZXNzZQAAABMAAAABAAAAEw==",
20+
"AAAAAAAAAAAAAAAFYnl0ZXMAAAAAAAABAAAAAAAAAAVieXRlcwAAAAAAAA4AAAABAAAADg==",
21+
"AAAAAAAAAAAAAAAHYnl0ZXNfbgAAAAABAAAAAAAAAAdieXRlc19uAAAAA+4AAAAJAAAAAQAAA+4AAAAJ",
22+
"AAAAAAAAAAAAAAAEY2FyZAAAAAEAAAAAAAAABGNhcmQAAAfQAAAACVJveWFsQ2FyZAAAAAAAAAEAAAfQAAAACVJveWFsQ2FyZAAAAA==",
23+
"AAAAAAAAAAAAAAAHYm9vbGVhbgAAAAABAAAAAAAAAAdib29sZWFuAAAAAAEAAAABAAAAAQ==",
24+
"AAAAAAAAABdOZWdhdGVzIGEgYm9vbGVhbiB2YWx1ZQAAAAADbm90AAAAAAEAAAAAAAAAB2Jvb2xlYW4AAAAAAQAAAAEAAAAB",
25+
"AAAAAAAAAAAAAAAEaTEyOAAAAAEAAAAAAAAABGkxMjgAAAALAAAAAQAAAAs=",
26+
"AAAAAAAAAAAAAAAEdTEyOAAAAAEAAAAAAAAABHUxMjgAAAAKAAAAAQAAAAo=",
27+
"AAAAAAAAAAAAAAAKbXVsdGlfYXJncwAAAAAAAgAAAAAAAAABYQAAAAAAAAQAAAAAAAAAAWIAAAAAAAABAAAAAQAAAAQ=",
28+
"AAAAAAAAAAAAAAADbWFwAAAAAAEAAAAAAAAAA21hcAAAAAPsAAAABAAAAAEAAAABAAAD7AAAAAQAAAAB",
29+
"AAAAAAAAAAAAAAADdmVjAAAAAAEAAAAAAAAAA3ZlYwAAAAPqAAAABAAAAAEAAAPqAAAABA==",
30+
"AAAAAAAAAAAAAAAFdHVwbGUAAAAAAAABAAAAAAAAAAV0dXBsZQAAAAAAA+0AAAACAAAAEQAAAAQAAAABAAAD7QAAAAIAAAARAAAABA==",
31+
"AAAAAAAAAB9FeGFtcGxlIG9mIGFuIG9wdGlvbmFsIGFyZ3VtZW50AAAAAAZvcHRpb24AAAAAAAEAAAAAAAAABm9wdGlvbgAAAAAD6AAAAAQAAAABAAAD6AAAAAQ=",
32+
"AAAAAAAAADBFeGFtcGxlIG9mIGFuIG9wdGlvbiBhcmcgY29udGFpbmluZyBhIHVkdCBzdHJ1Y3QAAAANb3B0aW9uX3N0cnVjdAAAAAAAAAEAAAAAAAAADW9wdGlvbl9zdHJ1Y3QAAAAAAAPoAAAH0AAAAARUZXN0AAAAAQAAA+gAAAfQAAAABFRlc3Q=",
33+
"AAAAAAAAADBFeGFtcGxlIG9mIGFuIG9wdGlvbiBhcmcgY29udGFpbmluZyBhIHVkdCBzdHJ1Y3QAAAAUb3B0aW9uX29wdGlvbl9zdHJ1Y3QAAAABAAAAAAAAABRvcHRpb25fb3B0aW9uX3N0cnVjdAAAA+gAAAPoAAAH0AAAAARUZXN0AAAAAQAAA+gAAAPoAAAH0AAAAARUZXN0",
34+
"AAAAAAAAADBFeGFtcGxlIG9mIGFuIG9wdGlvbiBhcmcgY29udGFpbmluZyBhIHVkdCBzdHJ1Y3QAAAARb3B0aW9uX3ZlY19zdHJ1Y3QAAAAAAAABAAAAAAAAABFvcHRpb25fdmVjX3N0cnVjdAAAAAAAA+gAAAPqAAAH0AAAAARUZXN0AAAAAQAAA+gAAAPqAAAH0AAAAARUZXN0",
35+
"AAAAAAAAAAAAAAAEdTI1NgAAAAEAAAAAAAAABHUyNTYAAAAMAAAAAQAAAAw=",
36+
"AAAAAAAAAAAAAAAEaTI1NgAAAAEAAAAAAAAABGkyNTYAAAANAAAAAQAAAA0=",
37+
"AAAAAAAAAAAAAAAGc3RyaW5nAAAAAAABAAAAAAAAAAZzdHJpbmcAAAAAABAAAAABAAAAEA==",
38+
"AAAAAAAAAAAAAAAMdHVwbGVfc3RydWt0AAAAAQAAAAAAAAAMdHVwbGVfc3RydWt0AAAH0AAAAAtUdXBsZVN0cnVjdAAAAAABAAAH0AAAAAtUdXBsZVN0cnVjdAA="
39+
]

test/unit/spec/contract_spec.ts

Lines changed: 23 additions & 10 deletions
Original file line numberDiff line numberDiff line change
@@ -32,7 +32,7 @@ describe("Spec constructor", function () {
3232

3333
it("throws if no entries", () => {
3434
expect(() => new contract.Spec([])).to.throw(
35-
/Contract spec must have at least one entry/i
35+
/Contract spec must have at least one entry/i,
3636
);
3737
});
3838
});
@@ -52,7 +52,7 @@ describe("Can round trip custom types", function () {
5252
async function jsonSchema_roundtrip(
5353
spec: contract.Spec,
5454
funcName: string,
55-
num: number = 100
55+
num: number = 100,
5656
) {
5757
let funcSpec = spec.jsonSchema(funcName);
5858

@@ -75,8 +75,12 @@ describe("Can round trip custom types", function () {
7575
JSON.stringify(arg, null, 2),
7676

7777
"\n",
78-
//@ts-ignore
79-
JSON.stringify(funcSpec.definitions![funcName]["properties"], null, 2)
78+
JSON.stringify(
79+
//@ts-ignore
80+
funcSpec.definitions![funcName]["properties"],
81+
null,
82+
2,
83+
),
8084
);
8185
throw e;
8286
}
@@ -223,7 +227,7 @@ describe("Can round trip custom types", function () {
223227

224228
map.set(3, "hahaha");
225229
expect(() => roundtrip("map", [...map.entries()])).to.throw(
226-
/invalid type scSpecTypeBool specified for string value/i
230+
/invalid type scSpecTypeBool specified for string value/i,
227231
);
228232
});
229233

@@ -239,13 +243,22 @@ describe("Can round trip custom types", function () {
239243

240244
it("option", () => {
241245
roundtrip("option", 1);
242-
roundtrip("option", undefined);
246+
roundtrip("option", null);
247+
248+
roundtrip("option_struct", { a: 0, b: true, c: "hello" });
249+
roundtrip("option_struct", null);
250+
251+
roundtrip("option_option_struct", { a: 0, b: true, c: "hello" });
252+
roundtrip("option_option_struct", null);
253+
254+
roundtrip("option_vec_struct", [{ a: 0, b: true, c: "hello" }]);
255+
roundtrip("option_vec_struct", null);
243256
});
244257

245258
it("u256", () => {
246259
roundtrip("u256", 1n);
247260
expect(() => roundtrip("u256", -1n)).to.throw(
248-
/expected a positive value, got: -1/i
261+
/expected a positive value, got: -1/i,
249262
);
250263
});
251264

@@ -343,10 +356,10 @@ export const GIGA_MAP = xdr.ScSpecEntry.scSpecEntryUdtStructV0(
343356
type: xdr.ScSpecTypeDef.scSpecTypeString(),
344357
}),
345358
],
346-
})
359+
}),
347360
);
348361
const GIGA_MAP_TYPE = xdr.ScSpecTypeDef.scSpecTypeUdt(
349-
new xdr.ScSpecTypeUdt({ name: "GigaMap" })
362+
new xdr.ScSpecTypeUdt({ name: "GigaMap" }),
350363
);
351364

352365
let func = xdr.ScSpecEntry.scSpecEntryFunctionV0(
@@ -361,7 +374,7 @@ let func = xdr.ScSpecEntry.scSpecEntryFunctionV0(
361374
}),
362375
],
363376
outputs: [GIGA_MAP_TYPE],
364-
})
377+
}),
365378
);
366379

367380
function replaceBigIntWithStrings(obj: any): any {

test/unit/spec_stream.json

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -1 +1 @@
1-
"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"
1+
"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"

0 commit comments

Comments
 (0)