Skip to content

Commit 52495b8

Browse files
authored
Allow BigInt input for Start Workflow (#2673)
* Fix bigInt test * Remove dup test
1 parent bfb6777 commit 52495b8

File tree

2 files changed

+45
-10
lines changed

2 files changed

+45
-10
lines changed

Diff for: src/lib/utilities/encode-payload.test.ts

+42-6
Original file line numberDiff line numberDiff line change
@@ -1,6 +1,8 @@
11
import { describe, expect, it } from 'vitest';
22

3-
import { getSinglePayload } from './encode-payload';
3+
import { stringifyWithBigInt } from '$lib/utilities/parse-with-big-int';
4+
5+
import { encodePayloads, getSinglePayload } from './encode-payload';
46

57
describe('getSinglePayload', () => {
68
it('should return single payload from single payload', () => {
@@ -10,8 +12,8 @@ describe('getSinglePayload', () => {
1012
data: 'eyJ0aXRsZSI6ImhlbGxvIn0=',
1113
},
1214
];
13-
const singlePayload = getSinglePayload(JSON.stringify(payload));
14-
expect(singlePayload).toEqual(JSON.stringify(payload[0]));
15+
const singlePayload = getSinglePayload(stringifyWithBigInt(payload));
16+
expect(singlePayload).toEqual(stringifyWithBigInt(payload[0]));
1517
});
1618
it('should return single payload from multiple payloads', () => {
1719
const payload = [
@@ -21,8 +23,8 @@ describe('getSinglePayload', () => {
2123
},
2224
{ metadata: { encoding: 'json/plain' }, data: 'cccccasdf' },
2325
];
24-
const singlePayload = getSinglePayload(JSON.stringify(payload));
25-
expect(singlePayload).toEqual(JSON.stringify(payload[0]));
26+
const singlePayload = getSinglePayload(stringifyWithBigInt(payload));
27+
expect(singlePayload).toEqual(stringifyWithBigInt(payload[0]));
2628
});
2729
it('should return empty string from no payload', () => {
2830
const singlePayload = getSinglePayload('');
@@ -33,7 +35,41 @@ describe('getSinglePayload', () => {
3335
metadata: { encoding: 'json/plain' },
3436
data: 'eyJ0aXRsZSI6ImhlbGxvIn0=',
3537
};
36-
const singlePayload = getSinglePayload(JSON.stringify(payload));
38+
const singlePayload = getSinglePayload(stringifyWithBigInt(payload));
3739
expect(singlePayload).toEqual('');
3840
});
3941
});
42+
43+
describe('encodePayloads', () => {
44+
it('should encode single simple string payload', async () => {
45+
const payload = await encodePayloads({
46+
input: stringifyWithBigInt('cats'),
47+
encoding: 'json/plain',
48+
});
49+
const expectedEncodedPayload = [
50+
{
51+
data: 'ImNhdHMi',
52+
metadata: {
53+
encoding: 'anNvbi9wbGFpbg==',
54+
},
55+
},
56+
];
57+
expect(payload).toEqual(expectedEncodedPayload);
58+
});
59+
it('should encode bigInt string payload', async () => {
60+
const input = { foo: 1234213412398883n };
61+
const payload = await encodePayloads({
62+
input: stringifyWithBigInt(input),
63+
encoding: 'json/plain',
64+
});
65+
const expectedEncodedPayload = [
66+
{
67+
data: 'eyJmb28iOjEyMzQyMTM0MTIzOTg4ODN9',
68+
metadata: {
69+
encoding: 'anNvbi9wbGFpbg==',
70+
},
71+
},
72+
];
73+
expect(payload).toEqual(expectedEncodedPayload);
74+
});
75+
});

Diff for: src/lib/utilities/encode-payload.ts

+3-4
Original file line numberDiff line numberDiff line change
@@ -32,14 +32,14 @@ export const setBase64Payload = (
3232
encoding: btoa(encoding),
3333
messageType: btoa(messageType),
3434
},
35-
data: btoa(JSON.stringify(payload)),
35+
data: btoa(stringifyWithBigInt(payload)),
3636
};
3737
}
3838
return {
3939
metadata: {
4040
encoding: btoa(encoding),
4141
},
42-
data: btoa(JSON.stringify(payload)),
42+
data: btoa(stringifyWithBigInt(payload)),
4343
};
4444
};
4545

@@ -59,7 +59,7 @@ export const encodePayloads = async ({
5959
let payloads = null;
6060

6161
if (input) {
62-
const parsedInput = JSON.parse(input);
62+
const parsedInput = parseWithBigInt(input);
6363
payloads = [setBase64Payload(parsedInput, encoding, messageType)];
6464
const endpoint = get(dataEncoder).endpoint;
6565
if (endpoint && encodeWithCodec) {
@@ -69,6 +69,5 @@ export const encodePayloads = async ({
6969
payloads = awaitData?.payloads ?? null;
7070
}
7171
}
72-
7372
return payloads;
7473
};

0 commit comments

Comments
 (0)