@ledgerhq/hw-app-solana 6.27.6 → 7.0.0
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/.turbo/turbo-build.log +4 -5
- package/CHANGELOG.md +18 -0
- package/README.md +21 -1
- package/lib/Solana.d.ts +14 -0
- package/lib/Solana.d.ts.map +1 -1
- package/lib/Solana.js +33 -1
- package/lib/Solana.js.map +1 -1
- package/lib-es/Solana.d.ts +14 -0
- package/lib-es/Solana.d.ts.map +1 -1
- package/lib-es/Solana.js +33 -1
- package/lib-es/Solana.js.map +1 -1
- package/package.json +1 -1
- package/src/Solana.ts +36 -0
- package/tests/Solana.test.ts +19 -0
package/.turbo/turbo-build.log
CHANGED
|
@@ -1,5 +1,4 @@
|
|
|
1
|
-
|
|
2
|
-
@ledgerhq/hw-app-solana
|
|
3
|
-
|
|
4
|
-
|
|
5
|
-
@ledgerhq/hw-app-solana:build:
|
|
1
|
+
|
|
2
|
+
> @ledgerhq/hw-app-solana@7.0.0 build /home/runner/work/ledger-live/ledger-live/libs/ledgerjs/packages/hw-app-solana
|
|
3
|
+
> tsc && tsc -m ES6 --outDir lib-es
|
|
4
|
+
|
package/CHANGELOG.md
CHANGED
|
@@ -1,5 +1,23 @@
|
|
|
1
1
|
# @ledgerhq/hw-app-solana
|
|
2
2
|
|
|
3
|
+
## 7.0.0
|
|
4
|
+
|
|
5
|
+
### Major Changes
|
|
6
|
+
|
|
7
|
+
- [#1433](https://github.com/LedgerHQ/ledger-live/pull/1433) [`1b43ce613f`](https://github.com/LedgerHQ/ledger-live/commit/1b43ce613f599cef9f69e40e7e3cfa8c1033c786) Thanks [@askibin](https://github.com/askibin)! - Add signOffchainMessage
|
|
8
|
+
|
|
9
|
+
## 7.0.0-next.0
|
|
10
|
+
|
|
11
|
+
### Major Changes
|
|
12
|
+
|
|
13
|
+
- [#1433](https://github.com/LedgerHQ/ledger-live/pull/1433) [`1b43ce613f`](https://github.com/LedgerHQ/ledger-live/commit/1b43ce613f599cef9f69e40e7e3cfa8c1033c786) Thanks [@askibin](https://github.com/askibin)! - Add signOffchainMessage
|
|
14
|
+
|
|
15
|
+
## 6.28.0
|
|
16
|
+
|
|
17
|
+
### Major Changes
|
|
18
|
+
|
|
19
|
+
- Add signOffchainMessage
|
|
20
|
+
|
|
3
21
|
## 6.27.6
|
|
4
22
|
|
|
5
23
|
### Patch Changes
|
package/README.md
CHANGED
|
@@ -48,8 +48,11 @@ If ledger returns error `6808` - enable blind signature in settings (not needed
|
|
|
48
48
|
* [signTransaction](#signtransaction)
|
|
49
49
|
* [Parameters](#parameters-2)
|
|
50
50
|
* [Examples](#examples-2)
|
|
51
|
-
* [
|
|
51
|
+
* [signOffchainMessage](#signoffchainmessage)
|
|
52
|
+
* [Parameters](#parameters-3)
|
|
52
53
|
* [Examples](#examples-3)
|
|
54
|
+
* [getAppConfiguration](#getappconfiguration)
|
|
55
|
+
* [Examples](#examples-4)
|
|
53
56
|
|
|
54
57
|
### Solana
|
|
55
58
|
|
|
@@ -104,6 +107,23 @@ solana.signTransaction("44'/501'/0'", txBuffer).then(r => r.signature)
|
|
|
104
107
|
|
|
105
108
|
Returns **[Promise](https://developer.mozilla.org/docs/Web/JavaScript/Reference/Global_Objects/Promise)<{signature: [Buffer](https://nodejs.org/api/buffer.html)}>** an object with the signature field
|
|
106
109
|
|
|
110
|
+
#### signOffchainMessage
|
|
111
|
+
|
|
112
|
+
Sign a Solana off-chain message.
|
|
113
|
+
|
|
114
|
+
##### Parameters
|
|
115
|
+
|
|
116
|
+
* `path` **[string](https://developer.mozilla.org/docs/Web/JavaScript/Reference/Global_Objects/String)** a BIP32 path
|
|
117
|
+
* `msgBuffer` **[Buffer](https://nodejs.org/api/buffer.html)** serialized off-chain message
|
|
118
|
+
|
|
119
|
+
##### Examples
|
|
120
|
+
|
|
121
|
+
```javascript
|
|
122
|
+
solana.signOffchainMessage("44'/501'/0'", msgBuffer).then(r => r.signature)
|
|
123
|
+
```
|
|
124
|
+
|
|
125
|
+
Returns **[Promise](https://developer.mozilla.org/docs/Web/JavaScript/Reference/Global_Objects/Promise)<{signature: [Buffer](https://nodejs.org/api/buffer.html)}>** an object with the signature field
|
|
126
|
+
|
|
107
127
|
#### getAppConfiguration
|
|
108
128
|
|
|
109
129
|
Get application configuration.
|
package/lib/Solana.d.ts
CHANGED
|
@@ -43,6 +43,20 @@ export default class Solana {
|
|
|
43
43
|
signTransaction(path: string, txBuffer: Buffer): Promise<{
|
|
44
44
|
signature: Buffer;
|
|
45
45
|
}>;
|
|
46
|
+
/**
|
|
47
|
+
* Sign a Solana off-chain message.
|
|
48
|
+
*
|
|
49
|
+
* @param path a BIP32 path
|
|
50
|
+
* @param msgBuffer serialized off-chain message
|
|
51
|
+
*
|
|
52
|
+
* @returns an object with the signature field
|
|
53
|
+
*
|
|
54
|
+
* @example
|
|
55
|
+
* solana.signOffchainMessage("44'/501'/0'", msgBuffer).then(r => r.signature)
|
|
56
|
+
*/
|
|
57
|
+
signOffchainMessage(path: string, msgBuffer: Buffer): Promise<{
|
|
58
|
+
signature: Buffer;
|
|
59
|
+
}>;
|
|
46
60
|
/**
|
|
47
61
|
* Get application configuration.
|
|
48
62
|
*
|
package/lib/Solana.d.ts.map
CHANGED
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"Solana.d.ts","sourceRoot":"","sources":["../src/Solana.ts"],"names":[],"mappings":";AAAA,OAAO,SAAS,MAAM,wBAAwB,CAAC;
|
|
1
|
+
{"version":3,"file":"Solana.d.ts","sourceRoot":"","sources":["../src/Solana.ts"],"names":[],"mappings":";AAAA,OAAO,SAAS,MAAM,wBAAwB,CAAC;AA2B/C;;;;;;;;;GASG;AACH,MAAM,CAAC,OAAO,OAAO,MAAM;IACzB,OAAO,CAAC,SAAS,CAAY;gBAG3B,SAAS,EAAE,SAAS,EAGpB,WAAW,GAAE,MAAsC;IAUrD;;;;;;;;;;;;OAYG;IACG,UAAU,CACd,IAAI,EAAE,MAAM,EAGZ,OAAO,GAAE,OAAe,GACvB,OAAO,CAAC;QACT,OAAO,EAAE,MAAM,CAAC;KACjB,CAAC;IAcF;;;;;;;;;;OAUG;IACG,eAAe,CACnB,IAAI,EAAE,MAAM,EACZ,QAAQ,EAAE,MAAM,GACf,OAAO,CAAC;QACT,SAAS,EAAE,MAAM,CAAC;KACnB,CAAC;IAmBF;;;;;;;;;;OAUG;IACG,mBAAmB,CACvB,IAAI,EAAE,MAAM,EACZ,SAAS,EAAE,MAAM,GAChB,OAAO,CAAC;QACT,SAAS,EAAE,MAAM,CAAC;KACnB,CAAC;IAmBF;;;;;;;OAOG;IACG,mBAAmB,IAAI,OAAO,CAAC,SAAS,CAAC;IAU/C,OAAO,CAAC,YAAY;IAWpB,OAAO,CAAC,aAAa;YAUP,YAAY;IAiD1B,OAAO,CAAC,cAAc;CAavB;AAED,aAAK,iBAAiB;IACpB,IAAI,IAAA;IACJ,KAAK,IAAA;CACN;AAED,aAAK,SAAS,GAAG;IACf,mBAAmB,EAAE,OAAO,CAAC;IAC7B,iBAAiB,EAAE,iBAAiB,CAAC;IACrC,OAAO,EAAE,MAAM,CAAC;CACjB,CAAC"}
|
package/lib/Solana.js
CHANGED
|
@@ -77,7 +77,8 @@ var LEDGER_CLA = 0xe0;
|
|
|
77
77
|
var INS = {
|
|
78
78
|
GET_VERSION: 0x04,
|
|
79
79
|
GET_ADDR: 0x05,
|
|
80
|
-
SIGN: 0x06
|
|
80
|
+
SIGN: 0x06,
|
|
81
|
+
SIGN_OFFCHAIN: 0x07
|
|
81
82
|
};
|
|
82
83
|
var EXTRA_STATUS_CODES;
|
|
83
84
|
(function (EXTRA_STATUS_CODES) {
|
|
@@ -167,6 +168,37 @@ var Solana = /** @class */ (function () {
|
|
|
167
168
|
});
|
|
168
169
|
});
|
|
169
170
|
};
|
|
171
|
+
/**
|
|
172
|
+
* Sign a Solana off-chain message.
|
|
173
|
+
*
|
|
174
|
+
* @param path a BIP32 path
|
|
175
|
+
* @param msgBuffer serialized off-chain message
|
|
176
|
+
*
|
|
177
|
+
* @returns an object with the signature field
|
|
178
|
+
*
|
|
179
|
+
* @example
|
|
180
|
+
* solana.signOffchainMessage("44'/501'/0'", msgBuffer).then(r => r.signature)
|
|
181
|
+
*/
|
|
182
|
+
Solana.prototype.signOffchainMessage = function (path, msgBuffer) {
|
|
183
|
+
return __awaiter(this, void 0, void 0, function () {
|
|
184
|
+
var pathBuffer, pathsCountBuffer, payload, signatureBuffer;
|
|
185
|
+
return __generator(this, function (_a) {
|
|
186
|
+
switch (_a.label) {
|
|
187
|
+
case 0:
|
|
188
|
+
pathBuffer = this.pathToBuffer(path);
|
|
189
|
+
pathsCountBuffer = Buffer.alloc(1);
|
|
190
|
+
pathsCountBuffer.writeUInt8(1, 0);
|
|
191
|
+
payload = Buffer.concat([pathsCountBuffer, pathBuffer, msgBuffer]);
|
|
192
|
+
return [4 /*yield*/, this.sendToDevice(INS.SIGN_OFFCHAIN, P1_CONFIRM, payload)];
|
|
193
|
+
case 1:
|
|
194
|
+
signatureBuffer = _a.sent();
|
|
195
|
+
return [2 /*return*/, {
|
|
196
|
+
signature: signatureBuffer
|
|
197
|
+
}];
|
|
198
|
+
}
|
|
199
|
+
});
|
|
200
|
+
});
|
|
201
|
+
};
|
|
170
202
|
/**
|
|
171
203
|
* Get application configuration.
|
|
172
204
|
*
|
package/lib/Solana.js.map
CHANGED
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"Solana.js","sourceRoot":"","sources":["../src/Solana.ts"],"names":[],"mappings":";;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;AAEA,2CAA+C;AAE/C,0DAAiC;AAEjC,IAAM,cAAc,GAAG,IAAI,CAAC;AAC5B,IAAM,UAAU,GAAG,IAAI,CAAC;AAExB,IAAM,SAAS,GAAG,IAAI,CAAC;AACvB,IAAM,OAAO,GAAG,IAAI,CAAC;AAErB,IAAM,WAAW,GAAG,GAAG,CAAC;AAExB,IAAM,UAAU,GAAG,IAAI,CAAC;AAExB,IAAM,GAAG,GAAG;IACV,WAAW,EAAE,IAAI;IACjB,QAAQ,EAAE,IAAI;IACd,IAAI,EAAE,IAAI;
|
|
1
|
+
{"version":3,"file":"Solana.js","sourceRoot":"","sources":["../src/Solana.ts"],"names":[],"mappings":"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"}
|
package/lib-es/Solana.d.ts
CHANGED
|
@@ -43,6 +43,20 @@ export default class Solana {
|
|
|
43
43
|
signTransaction(path: string, txBuffer: Buffer): Promise<{
|
|
44
44
|
signature: Buffer;
|
|
45
45
|
}>;
|
|
46
|
+
/**
|
|
47
|
+
* Sign a Solana off-chain message.
|
|
48
|
+
*
|
|
49
|
+
* @param path a BIP32 path
|
|
50
|
+
* @param msgBuffer serialized off-chain message
|
|
51
|
+
*
|
|
52
|
+
* @returns an object with the signature field
|
|
53
|
+
*
|
|
54
|
+
* @example
|
|
55
|
+
* solana.signOffchainMessage("44'/501'/0'", msgBuffer).then(r => r.signature)
|
|
56
|
+
*/
|
|
57
|
+
signOffchainMessage(path: string, msgBuffer: Buffer): Promise<{
|
|
58
|
+
signature: Buffer;
|
|
59
|
+
}>;
|
|
46
60
|
/**
|
|
47
61
|
* Get application configuration.
|
|
48
62
|
*
|
package/lib-es/Solana.d.ts.map
CHANGED
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"Solana.d.ts","sourceRoot":"","sources":["../src/Solana.ts"],"names":[],"mappings":";AAAA,OAAO,SAAS,MAAM,wBAAwB,CAAC;
|
|
1
|
+
{"version":3,"file":"Solana.d.ts","sourceRoot":"","sources":["../src/Solana.ts"],"names":[],"mappings":";AAAA,OAAO,SAAS,MAAM,wBAAwB,CAAC;AA2B/C;;;;;;;;;GASG;AACH,MAAM,CAAC,OAAO,OAAO,MAAM;IACzB,OAAO,CAAC,SAAS,CAAY;gBAG3B,SAAS,EAAE,SAAS,EAGpB,WAAW,GAAE,MAAsC;IAUrD;;;;;;;;;;;;OAYG;IACG,UAAU,CACd,IAAI,EAAE,MAAM,EAGZ,OAAO,GAAE,OAAe,GACvB,OAAO,CAAC;QACT,OAAO,EAAE,MAAM,CAAC;KACjB,CAAC;IAcF;;;;;;;;;;OAUG;IACG,eAAe,CACnB,IAAI,EAAE,MAAM,EACZ,QAAQ,EAAE,MAAM,GACf,OAAO,CAAC;QACT,SAAS,EAAE,MAAM,CAAC;KACnB,CAAC;IAmBF;;;;;;;;;;OAUG;IACG,mBAAmB,CACvB,IAAI,EAAE,MAAM,EACZ,SAAS,EAAE,MAAM,GAChB,OAAO,CAAC;QACT,SAAS,EAAE,MAAM,CAAC;KACnB,CAAC;IAmBF;;;;;;;OAOG;IACG,mBAAmB,IAAI,OAAO,CAAC,SAAS,CAAC;IAU/C,OAAO,CAAC,YAAY;IAWpB,OAAO,CAAC,aAAa;YAUP,YAAY;IAiD1B,OAAO,CAAC,cAAc;CAavB;AAED,aAAK,iBAAiB;IACpB,IAAI,IAAA;IACJ,KAAK,IAAA;CACN;AAED,aAAK,SAAS,GAAG;IACf,mBAAmB,EAAE,OAAO,CAAC;IAC7B,iBAAiB,EAAE,iBAAiB,CAAC;IACrC,OAAO,EAAE,MAAM,CAAC;CACjB,CAAC"}
|
package/lib-es/Solana.js
CHANGED
|
@@ -72,7 +72,8 @@ var LEDGER_CLA = 0xe0;
|
|
|
72
72
|
var INS = {
|
|
73
73
|
GET_VERSION: 0x04,
|
|
74
74
|
GET_ADDR: 0x05,
|
|
75
|
-
SIGN: 0x06
|
|
75
|
+
SIGN: 0x06,
|
|
76
|
+
SIGN_OFFCHAIN: 0x07
|
|
76
77
|
};
|
|
77
78
|
var EXTRA_STATUS_CODES;
|
|
78
79
|
(function (EXTRA_STATUS_CODES) {
|
|
@@ -162,6 +163,37 @@ var Solana = /** @class */ (function () {
|
|
|
162
163
|
});
|
|
163
164
|
});
|
|
164
165
|
};
|
|
166
|
+
/**
|
|
167
|
+
* Sign a Solana off-chain message.
|
|
168
|
+
*
|
|
169
|
+
* @param path a BIP32 path
|
|
170
|
+
* @param msgBuffer serialized off-chain message
|
|
171
|
+
*
|
|
172
|
+
* @returns an object with the signature field
|
|
173
|
+
*
|
|
174
|
+
* @example
|
|
175
|
+
* solana.signOffchainMessage("44'/501'/0'", msgBuffer).then(r => r.signature)
|
|
176
|
+
*/
|
|
177
|
+
Solana.prototype.signOffchainMessage = function (path, msgBuffer) {
|
|
178
|
+
return __awaiter(this, void 0, void 0, function () {
|
|
179
|
+
var pathBuffer, pathsCountBuffer, payload, signatureBuffer;
|
|
180
|
+
return __generator(this, function (_a) {
|
|
181
|
+
switch (_a.label) {
|
|
182
|
+
case 0:
|
|
183
|
+
pathBuffer = this.pathToBuffer(path);
|
|
184
|
+
pathsCountBuffer = Buffer.alloc(1);
|
|
185
|
+
pathsCountBuffer.writeUInt8(1, 0);
|
|
186
|
+
payload = Buffer.concat([pathsCountBuffer, pathBuffer, msgBuffer]);
|
|
187
|
+
return [4 /*yield*/, this.sendToDevice(INS.SIGN_OFFCHAIN, P1_CONFIRM, payload)];
|
|
188
|
+
case 1:
|
|
189
|
+
signatureBuffer = _a.sent();
|
|
190
|
+
return [2 /*return*/, {
|
|
191
|
+
signature: signatureBuffer
|
|
192
|
+
}];
|
|
193
|
+
}
|
|
194
|
+
});
|
|
195
|
+
});
|
|
196
|
+
};
|
|
165
197
|
/**
|
|
166
198
|
* Get application configuration.
|
|
167
199
|
*
|
package/lib-es/Solana.js.map
CHANGED
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"Solana.js","sourceRoot":"","sources":["../src/Solana.ts"],"names":[],"mappings":";;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;AAEA,OAAO,EAAE,WAAW,EAAE,MAAM,kBAAkB,CAAC;AAE/C,OAAO,OAAO,MAAM,YAAY,CAAC;AAEjC,IAAM,cAAc,GAAG,IAAI,CAAC;AAC5B,IAAM,UAAU,GAAG,IAAI,CAAC;AAExB,IAAM,SAAS,GAAG,IAAI,CAAC;AACvB,IAAM,OAAO,GAAG,IAAI,CAAC;AAErB,IAAM,WAAW,GAAG,GAAG,CAAC;AAExB,IAAM,UAAU,GAAG,IAAI,CAAC;AAExB,IAAM,GAAG,GAAG;IACV,WAAW,EAAE,IAAI;IACjB,QAAQ,EAAE,IAAI;IACd,IAAI,EAAE,IAAI;
|
|
1
|
+
{"version":3,"file":"Solana.js","sourceRoot":"","sources":["../src/Solana.ts"],"names":[],"mappings":"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"}
|
package/package.json
CHANGED
package/src/Solana.ts
CHANGED
|
@@ -18,6 +18,7 @@ const INS = {
|
|
|
18
18
|
GET_VERSION: 0x04,
|
|
19
19
|
GET_ADDR: 0x05,
|
|
20
20
|
SIGN: 0x06,
|
|
21
|
+
SIGN_OFFCHAIN: 0x07,
|
|
21
22
|
};
|
|
22
23
|
|
|
23
24
|
enum EXTRA_STATUS_CODES {
|
|
@@ -120,6 +121,41 @@ export default class Solana {
|
|
|
120
121
|
};
|
|
121
122
|
}
|
|
122
123
|
|
|
124
|
+
/**
|
|
125
|
+
* Sign a Solana off-chain message.
|
|
126
|
+
*
|
|
127
|
+
* @param path a BIP32 path
|
|
128
|
+
* @param msgBuffer serialized off-chain message
|
|
129
|
+
*
|
|
130
|
+
* @returns an object with the signature field
|
|
131
|
+
*
|
|
132
|
+
* @example
|
|
133
|
+
* solana.signOffchainMessage("44'/501'/0'", msgBuffer).then(r => r.signature)
|
|
134
|
+
*/
|
|
135
|
+
async signOffchainMessage(
|
|
136
|
+
path: string,
|
|
137
|
+
msgBuffer: Buffer
|
|
138
|
+
): Promise<{
|
|
139
|
+
signature: Buffer;
|
|
140
|
+
}> {
|
|
141
|
+
const pathBuffer = this.pathToBuffer(path);
|
|
142
|
+
// Ledger app supports only a single derivation path per call ATM
|
|
143
|
+
const pathsCountBuffer = Buffer.alloc(1);
|
|
144
|
+
pathsCountBuffer.writeUInt8(1, 0);
|
|
145
|
+
|
|
146
|
+
const payload = Buffer.concat([pathsCountBuffer, pathBuffer, msgBuffer]);
|
|
147
|
+
|
|
148
|
+
const signatureBuffer = await this.sendToDevice(
|
|
149
|
+
INS.SIGN_OFFCHAIN,
|
|
150
|
+
P1_CONFIRM,
|
|
151
|
+
payload
|
|
152
|
+
);
|
|
153
|
+
|
|
154
|
+
return {
|
|
155
|
+
signature: signatureBuffer,
|
|
156
|
+
};
|
|
157
|
+
}
|
|
158
|
+
|
|
123
159
|
/**
|
|
124
160
|
* Get application configuration.
|
|
125
161
|
*
|
package/tests/Solana.test.ts
CHANGED
|
@@ -67,6 +67,25 @@ test("signTransaction", async () => {
|
|
|
67
67
|
);
|
|
68
68
|
});
|
|
69
69
|
|
|
70
|
+
test("signOffchainMessage", async () => {
|
|
71
|
+
const transport = await openTransportReplayer(
|
|
72
|
+
RecordStore.fromString(`
|
|
73
|
+
=> e00701003a01028000002c800001f5ff736f6c616e61206f6666636861696e00001c004c6f6e67204f66662d436861696e2054657374204d6573736167652e
|
|
74
|
+
<= dd23d8f798aeb0085f97f3aae20e52866bf529e0d880959784ff0e91beaf6f2eb73b7b0ef484801399066b92561f6c523b27f9579e17d0f8106b33edc5f45b079000
|
|
75
|
+
`)
|
|
76
|
+
);
|
|
77
|
+
const solana = new Solana(transport);
|
|
78
|
+
const message = Buffer.from(
|
|
79
|
+
"ff736f6c616e61206f6666636861696e00001c004c6f6e67204f66662d436861696e2054657374204d6573736167652e",
|
|
80
|
+
"hex"
|
|
81
|
+
);
|
|
82
|
+
const { signature } = await solana.signOffchainMessage("44'/501'", message);
|
|
83
|
+
const result = signature.toString("hex");
|
|
84
|
+
expect(result).toEqual(
|
|
85
|
+
"dd23d8f798aeb0085f97f3aae20e52866bf529e0d880959784ff0e91beaf6f2eb73b7b0ef484801399066b92561f6c523b27f9579e17d0f8106b33edc5f45b07"
|
|
86
|
+
);
|
|
87
|
+
});
|
|
88
|
+
|
|
70
89
|
test("chunked payload (payload length > MAX_PAYLOAD)", async () => {
|
|
71
90
|
const transport = await openTransportReplayer(
|
|
72
91
|
RecordStore.fromString(`
|