@solana/transactions 2.0.0-experimental.211879d → 2.0.0-experimental.228d375
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/LICENSE +1 -1
- package/dist/index.browser.cjs +187 -107
- package/dist/index.browser.cjs.map +1 -1
- package/dist/index.browser.js +184 -109
- package/dist/index.browser.js.map +1 -1
- package/dist/index.development.js +661 -155
- package/dist/index.development.js.map +1 -1
- package/dist/index.native.js +184 -109
- package/dist/index.native.js.map +1 -1
- package/dist/index.node.cjs +189 -107
- package/dist/index.node.cjs.map +1 -1
- package/dist/index.node.js +184 -109
- package/dist/index.node.js.map +1 -1
- package/dist/index.production.min.js +16 -11
- package/dist/types/accounts.d.ts +2 -2
- package/dist/types/blockhash.d.ts +1 -1
- package/dist/types/compile-address-table-lookups.d.ts +1 -1
- package/dist/types/compile-instructions.d.ts +1 -1
- package/dist/types/compile-static-accounts.d.ts +1 -1
- package/dist/types/durable-nonce.d.ts +5 -4
- package/dist/types/fee-payer.d.ts +3 -2
- package/dist/types/index.d.ts +1 -0
- package/dist/types/serializers/header.d.ts +4 -2
- package/dist/types/serializers/index.d.ts +2 -0
- package/dist/types/serializers/transaction-version.d.ts +4 -4
- package/dist/types/signatures.d.ts +12 -3
- package/dist/types/types.d.ts +7 -0
- package/dist/types/wire-transaction.d.ts +1 -1
- package/package.json +21 -18
- package/dist/types/accounts.d.ts.map +0 -1
- package/dist/types/blockhash.d.ts.map +0 -1
- package/dist/types/compile-address-table-lookups.d.ts.map +0 -1
- package/dist/types/compile-header.d.ts.map +0 -1
- package/dist/types/compile-instructions.d.ts.map +0 -1
- package/dist/types/compile-lifetime-token.d.ts.map +0 -1
- package/dist/types/compile-static-accounts.d.ts.map +0 -1
- package/dist/types/compile-transaction.d.ts.map +0 -1
- package/dist/types/create-transaction.d.ts.map +0 -1
- package/dist/types/durable-nonce.d.ts.map +0 -1
- package/dist/types/fee-payer.d.ts.map +0 -1
- package/dist/types/index.d.ts.map +0 -1
- package/dist/types/instructions.d.ts.map +0 -1
- package/dist/types/message.d.ts.map +0 -1
- package/dist/types/serializers/address-table-lookup.d.ts.map +0 -1
- package/dist/types/serializers/header.d.ts.map +0 -1
- package/dist/types/serializers/instruction.d.ts.map +0 -1
- package/dist/types/serializers/message.d.ts.map +0 -1
- package/dist/types/serializers/transaction-version.d.ts.map +0 -1
- package/dist/types/serializers/transaction.d.ts.map +0 -1
- package/dist/types/serializers/unimplemented.d.ts.map +0 -1
- package/dist/types/signatures.d.ts.map +0 -1
- package/dist/types/types.d.ts.map +0 -1
- package/dist/types/unsigned-transaction.d.ts.map +0 -1
- package/dist/types/wire-transaction.d.ts.map +0 -1
|
@@ -9,7 +9,7 @@ this.globalThis.solanaWeb3 = (function (exports) {
|
|
|
9
9
|
return value;
|
|
10
10
|
};
|
|
11
11
|
|
|
12
|
-
// ../../node_modules/.pnpm/@metaplex-foundation+umi-serializers-core@0.8.
|
|
12
|
+
// ../../node_modules/.pnpm/@metaplex-foundation+umi-serializers-core@0.8.9/node_modules/@metaplex-foundation/umi-serializers-core/dist/esm/bytes.mjs
|
|
13
13
|
var mergeBytes = (bytesArr) => {
|
|
14
14
|
const totalLength = bytesArr.reduce((total, arr) => total + arr.length, 0);
|
|
15
15
|
const result = new Uint8Array(totalLength);
|
|
@@ -29,7 +29,7 @@ this.globalThis.solanaWeb3 = (function (exports) {
|
|
|
29
29
|
};
|
|
30
30
|
var fixBytes = (bytes2, length) => padBytes(bytes2.slice(0, length), length);
|
|
31
31
|
|
|
32
|
-
// ../../node_modules/.pnpm/@metaplex-foundation+umi-serializers-core@0.8.
|
|
32
|
+
// ../../node_modules/.pnpm/@metaplex-foundation+umi-serializers-core@0.8.9/node_modules/@metaplex-foundation/umi-serializers-core/dist/esm/errors.mjs
|
|
33
33
|
var DeserializingEmptyBufferError = class extends Error {
|
|
34
34
|
constructor(serializer) {
|
|
35
35
|
super(`Serializer [${serializer}] cannot deserialize empty buffers.`);
|
|
@@ -50,7 +50,7 @@ this.globalThis.solanaWeb3 = (function (exports) {
|
|
|
50
50
|
}
|
|
51
51
|
};
|
|
52
52
|
|
|
53
|
-
// ../../node_modules/.pnpm/@metaplex-foundation+umi-serializers-core@0.8.
|
|
53
|
+
// ../../node_modules/.pnpm/@metaplex-foundation+umi-serializers-core@0.8.9/node_modules/@metaplex-foundation/umi-serializers-core/dist/esm/fixSerializer.mjs
|
|
54
54
|
function fixSerializer(serializer, fixedBytes, description) {
|
|
55
55
|
return {
|
|
56
56
|
description: description ?? `fixed(${fixedBytes}, ${serializer.description})`,
|
|
@@ -71,7 +71,7 @@ this.globalThis.solanaWeb3 = (function (exports) {
|
|
|
71
71
|
};
|
|
72
72
|
}
|
|
73
73
|
|
|
74
|
-
// ../../node_modules/.pnpm/@metaplex-foundation+umi-serializers-core@0.8.
|
|
74
|
+
// ../../node_modules/.pnpm/@metaplex-foundation+umi-serializers-core@0.8.9/node_modules/@metaplex-foundation/umi-serializers-core/dist/esm/mapSerializer.mjs
|
|
75
75
|
function mapSerializer(serializer, unmap, map) {
|
|
76
76
|
return {
|
|
77
77
|
description: serializer.description,
|
|
@@ -85,7 +85,7 @@ this.globalThis.solanaWeb3 = (function (exports) {
|
|
|
85
85
|
};
|
|
86
86
|
}
|
|
87
87
|
|
|
88
|
-
// ../../node_modules/.pnpm/@metaplex-foundation+umi-serializers-encodings@0.8.
|
|
88
|
+
// ../../node_modules/.pnpm/@metaplex-foundation+umi-serializers-encodings@0.8.9/node_modules/@metaplex-foundation/umi-serializers-encodings/dist/esm/errors.mjs
|
|
89
89
|
var InvalidBaseStringError = class extends Error {
|
|
90
90
|
constructor(value, base, cause) {
|
|
91
91
|
const message = `Expected a string of base ${base}, got [${value}].`;
|
|
@@ -95,7 +95,7 @@ this.globalThis.solanaWeb3 = (function (exports) {
|
|
|
95
95
|
}
|
|
96
96
|
};
|
|
97
97
|
|
|
98
|
-
// ../../node_modules/.pnpm/@metaplex-foundation+umi-serializers-encodings@0.8.
|
|
98
|
+
// ../../node_modules/.pnpm/@metaplex-foundation+umi-serializers-encodings@0.8.9/node_modules/@metaplex-foundation/umi-serializers-encodings/dist/esm/baseX.mjs
|
|
99
99
|
var baseX = (alphabet) => {
|
|
100
100
|
const base = alphabet.length;
|
|
101
101
|
const baseBigInt = BigInt(base);
|
|
@@ -149,16 +149,16 @@ this.globalThis.solanaWeb3 = (function (exports) {
|
|
|
149
149
|
};
|
|
150
150
|
};
|
|
151
151
|
|
|
152
|
-
// ../../node_modules/.pnpm/@metaplex-foundation+umi-serializers-encodings@0.8.
|
|
152
|
+
// ../../node_modules/.pnpm/@metaplex-foundation+umi-serializers-encodings@0.8.9/node_modules/@metaplex-foundation/umi-serializers-encodings/dist/esm/base58.mjs
|
|
153
153
|
var base58 = baseX("123456789ABCDEFGHJKLMNPQRSTUVWXYZabcdefghijkmnopqrstuvwxyz");
|
|
154
154
|
|
|
155
|
-
// ../../node_modules/.pnpm/@metaplex-foundation+umi-serializers-encodings@0.8.
|
|
155
|
+
// ../../node_modules/.pnpm/@metaplex-foundation+umi-serializers-encodings@0.8.9/node_modules/@metaplex-foundation/umi-serializers-encodings/dist/esm/nullCharacters.mjs
|
|
156
156
|
var removeNullCharacters = (value) => (
|
|
157
157
|
// eslint-disable-next-line no-control-regex
|
|
158
158
|
value.replace(/\u0000/g, "")
|
|
159
159
|
);
|
|
160
160
|
|
|
161
|
-
// ../../node_modules/.pnpm/@metaplex-foundation+umi-serializers-encodings@0.8.
|
|
161
|
+
// ../../node_modules/.pnpm/@metaplex-foundation+umi-serializers-encodings@0.8.9/node_modules/@metaplex-foundation/umi-serializers-encodings/dist/esm/utf8.mjs
|
|
162
162
|
var utf8 = {
|
|
163
163
|
description: "utf8",
|
|
164
164
|
fixedSize: null,
|
|
@@ -172,14 +172,14 @@ this.globalThis.solanaWeb3 = (function (exports) {
|
|
|
172
172
|
}
|
|
173
173
|
};
|
|
174
174
|
|
|
175
|
-
// ../../node_modules/.pnpm/@metaplex-foundation+umi-serializers-numbers@0.8.
|
|
175
|
+
// ../../node_modules/.pnpm/@metaplex-foundation+umi-serializers-numbers@0.8.9/node_modules/@metaplex-foundation/umi-serializers-numbers/dist/esm/common.mjs
|
|
176
176
|
var Endian;
|
|
177
177
|
(function(Endian2) {
|
|
178
178
|
Endian2["Little"] = "le";
|
|
179
179
|
Endian2["Big"] = "be";
|
|
180
180
|
})(Endian || (Endian = {}));
|
|
181
181
|
|
|
182
|
-
// ../../node_modules/.pnpm/@metaplex-foundation+umi-serializers-numbers@0.8.
|
|
182
|
+
// ../../node_modules/.pnpm/@metaplex-foundation+umi-serializers-numbers@0.8.9/node_modules/@metaplex-foundation/umi-serializers-numbers/dist/esm/errors.mjs
|
|
183
183
|
var NumberOutOfRangeError = class extends RangeError {
|
|
184
184
|
constructor(serializer, min, max, actual) {
|
|
185
185
|
super(`Serializer [${serializer}] expected number to be between ${min} and ${max}, got ${actual}.`);
|
|
@@ -187,7 +187,7 @@ this.globalThis.solanaWeb3 = (function (exports) {
|
|
|
187
187
|
}
|
|
188
188
|
};
|
|
189
189
|
|
|
190
|
-
// ../../node_modules/.pnpm/@metaplex-foundation+umi-serializers-numbers@0.8.
|
|
190
|
+
// ../../node_modules/.pnpm/@metaplex-foundation+umi-serializers-numbers@0.8.9/node_modules/@metaplex-foundation/umi-serializers-numbers/dist/esm/utils.mjs
|
|
191
191
|
function numberFactory(input) {
|
|
192
192
|
let littleEndian;
|
|
193
193
|
let defaultDescription = input.name;
|
|
@@ -231,7 +231,7 @@ this.globalThis.solanaWeb3 = (function (exports) {
|
|
|
231
231
|
}
|
|
232
232
|
};
|
|
233
233
|
|
|
234
|
-
// ../../node_modules/.pnpm/@metaplex-foundation+umi-serializers-numbers@0.8.
|
|
234
|
+
// ../../node_modules/.pnpm/@metaplex-foundation+umi-serializers-numbers@0.8.9/node_modules/@metaplex-foundation/umi-serializers-numbers/dist/esm/u8.mjs
|
|
235
235
|
var u8 = (options = {}) => numberFactory({
|
|
236
236
|
name: "u8",
|
|
237
237
|
size: 1,
|
|
@@ -241,7 +241,7 @@ this.globalThis.solanaWeb3 = (function (exports) {
|
|
|
241
241
|
options
|
|
242
242
|
});
|
|
243
243
|
|
|
244
|
-
// ../../node_modules/.pnpm/@metaplex-foundation+umi-serializers-numbers@0.8.
|
|
244
|
+
// ../../node_modules/.pnpm/@metaplex-foundation+umi-serializers-numbers@0.8.9/node_modules/@metaplex-foundation/umi-serializers-numbers/dist/esm/u32.mjs
|
|
245
245
|
var u32 = (options = {}) => numberFactory({
|
|
246
246
|
name: "u32",
|
|
247
247
|
size: 4,
|
|
@@ -251,7 +251,7 @@ this.globalThis.solanaWeb3 = (function (exports) {
|
|
|
251
251
|
options
|
|
252
252
|
});
|
|
253
253
|
|
|
254
|
-
// ../../node_modules/.pnpm/@metaplex-foundation+umi-serializers-numbers@0.8.
|
|
254
|
+
// ../../node_modules/.pnpm/@metaplex-foundation+umi-serializers-numbers@0.8.9/node_modules/@metaplex-foundation/umi-serializers-numbers/dist/esm/shortU16.mjs
|
|
255
255
|
var shortU16 = (options = {}) => ({
|
|
256
256
|
description: options.description ?? "shortU16",
|
|
257
257
|
fixedSize: null,
|
|
@@ -288,7 +288,7 @@ this.globalThis.solanaWeb3 = (function (exports) {
|
|
|
288
288
|
}
|
|
289
289
|
});
|
|
290
290
|
|
|
291
|
-
// ../../node_modules/.pnpm/@metaplex-foundation+umi-serializers@0.8.
|
|
291
|
+
// ../../node_modules/.pnpm/@metaplex-foundation+umi-serializers@0.8.9/node_modules/@metaplex-foundation/umi-serializers/dist/esm/errors.mjs
|
|
292
292
|
var InvalidNumberOfItemsError = class extends Error {
|
|
293
293
|
constructor(serializer, expected, actual) {
|
|
294
294
|
super(`Expected [${serializer}] to have ${expected} items, got ${actual}.`);
|
|
@@ -308,12 +308,12 @@ this.globalThis.solanaWeb3 = (function (exports) {
|
|
|
308
308
|
}
|
|
309
309
|
};
|
|
310
310
|
|
|
311
|
-
// ../../node_modules/.pnpm/@metaplex-foundation+umi-serializers@0.8.
|
|
311
|
+
// ../../node_modules/.pnpm/@metaplex-foundation+umi-serializers@0.8.9/node_modules/@metaplex-foundation/umi-serializers/dist/esm/sumSerializerSizes.mjs
|
|
312
312
|
function sumSerializerSizes(sizes) {
|
|
313
313
|
return sizes.reduce((all, size) => all === null || size === null ? null : all + size, 0);
|
|
314
314
|
}
|
|
315
315
|
|
|
316
|
-
// ../../node_modules/.pnpm/@metaplex-foundation+umi-serializers@0.8.
|
|
316
|
+
// ../../node_modules/.pnpm/@metaplex-foundation+umi-serializers@0.8.9/node_modules/@metaplex-foundation/umi-serializers/dist/esm/utils.mjs
|
|
317
317
|
function getResolvedSize(size, childrenSizes, bytes2, offset) {
|
|
318
318
|
if (typeof size === "number") {
|
|
319
319
|
return [size, offset];
|
|
@@ -349,7 +349,7 @@ this.globalThis.solanaWeb3 = (function (exports) {
|
|
|
349
349
|
return typeof size === "object" ? size.serialize(realSize) : new Uint8Array();
|
|
350
350
|
}
|
|
351
351
|
|
|
352
|
-
// ../../node_modules/.pnpm/@metaplex-foundation+umi-serializers@0.8.
|
|
352
|
+
// ../../node_modules/.pnpm/@metaplex-foundation+umi-serializers@0.8.9/node_modules/@metaplex-foundation/umi-serializers/dist/esm/array.mjs
|
|
353
353
|
function array(item, options = {}) {
|
|
354
354
|
const size = options.size ?? u32();
|
|
355
355
|
if (size === "remainder" && item.fixedSize === null) {
|
|
@@ -382,7 +382,7 @@ this.globalThis.solanaWeb3 = (function (exports) {
|
|
|
382
382
|
};
|
|
383
383
|
}
|
|
384
384
|
|
|
385
|
-
// ../../node_modules/.pnpm/@metaplex-foundation+umi-serializers@0.8.
|
|
385
|
+
// ../../node_modules/.pnpm/@metaplex-foundation+umi-serializers@0.8.9/node_modules/@metaplex-foundation/umi-serializers/dist/esm/bytes.mjs
|
|
386
386
|
function bytes(options = {}) {
|
|
387
387
|
const size = options.size ?? "variable";
|
|
388
388
|
const description = options.description ?? `bytes(${getSizeDescription(size)})`;
|
|
@@ -429,7 +429,7 @@ this.globalThis.solanaWeb3 = (function (exports) {
|
|
|
429
429
|
};
|
|
430
430
|
}
|
|
431
431
|
|
|
432
|
-
// ../../node_modules/.pnpm/@metaplex-foundation+umi-serializers@0.8.
|
|
432
|
+
// ../../node_modules/.pnpm/@metaplex-foundation+umi-serializers@0.8.9/node_modules/@metaplex-foundation/umi-serializers/dist/esm/string.mjs
|
|
433
433
|
function string(options = {}) {
|
|
434
434
|
const size = options.size ?? u32();
|
|
435
435
|
const encoding = options.encoding ?? utf8;
|
|
@@ -470,7 +470,7 @@ this.globalThis.solanaWeb3 = (function (exports) {
|
|
|
470
470
|
};
|
|
471
471
|
}
|
|
472
472
|
|
|
473
|
-
// ../../node_modules/.pnpm/@metaplex-foundation+umi-serializers@0.8.
|
|
473
|
+
// ../../node_modules/.pnpm/@metaplex-foundation+umi-serializers@0.8.9/node_modules/@metaplex-foundation/umi-serializers/dist/esm/struct.mjs
|
|
474
474
|
function struct(fields, options = {}) {
|
|
475
475
|
const fieldDescriptions = fields.map(([name, serializer]) => `${String(name)}: ${serializer.description}`).join(", ");
|
|
476
476
|
return {
|
|
@@ -522,9 +522,9 @@ this.globalThis.solanaWeb3 = (function (exports) {
|
|
|
522
522
|
if (numBytes !== 32) {
|
|
523
523
|
throw new Error(`Expected input string to decode to a byte array of length 32. Actual length: ${numBytes}`);
|
|
524
524
|
}
|
|
525
|
-
} catch (
|
|
525
|
+
} catch (e2) {
|
|
526
526
|
throw new Error(`\`${putativeBlockhash}\` is not a blockhash`, {
|
|
527
|
-
cause:
|
|
527
|
+
cause: e2
|
|
528
528
|
});
|
|
529
529
|
}
|
|
530
530
|
}
|
|
@@ -664,23 +664,339 @@ this.globalThis.solanaWeb3 = (function (exports) {
|
|
|
664
664
|
Object.freeze(out);
|
|
665
665
|
return out;
|
|
666
666
|
}
|
|
667
|
-
|
|
668
|
-
|
|
669
|
-
|
|
670
|
-
|
|
671
|
-
|
|
667
|
+
|
|
668
|
+
// ../codecs-core/dist/index.browser.js
|
|
669
|
+
function assertByteArrayIsNotEmptyForCodec(codecDescription, bytes2, offset = 0) {
|
|
670
|
+
if (bytes2.length - offset <= 0) {
|
|
671
|
+
throw new Error(`Codec [${codecDescription}] cannot decode empty byte arrays.`);
|
|
672
|
+
}
|
|
673
|
+
}
|
|
674
|
+
function assertByteArrayHasEnoughBytesForCodec(codecDescription, expected, bytes2, offset = 0) {
|
|
675
|
+
const bytesLength = bytes2.length - offset;
|
|
676
|
+
if (bytesLength < expected) {
|
|
677
|
+
throw new Error(`Codec [${codecDescription}] expected ${expected} bytes, got ${bytesLength}.`);
|
|
678
|
+
}
|
|
679
|
+
}
|
|
680
|
+
var mergeBytes2 = (byteArrays) => {
|
|
681
|
+
const nonEmptyByteArrays = byteArrays.filter((arr) => arr.length);
|
|
682
|
+
if (nonEmptyByteArrays.length === 0) {
|
|
683
|
+
return byteArrays.length ? byteArrays[0] : new Uint8Array();
|
|
684
|
+
}
|
|
685
|
+
if (nonEmptyByteArrays.length === 1) {
|
|
686
|
+
return nonEmptyByteArrays[0];
|
|
687
|
+
}
|
|
688
|
+
const totalLength = nonEmptyByteArrays.reduce((total, arr) => total + arr.length, 0);
|
|
689
|
+
const result = new Uint8Array(totalLength);
|
|
690
|
+
let offset = 0;
|
|
691
|
+
nonEmptyByteArrays.forEach((arr) => {
|
|
692
|
+
result.set(arr, offset);
|
|
693
|
+
offset += arr.length;
|
|
672
694
|
});
|
|
695
|
+
return result;
|
|
696
|
+
};
|
|
697
|
+
var padBytes2 = (bytes2, length) => {
|
|
698
|
+
if (bytes2.length >= length)
|
|
699
|
+
return bytes2;
|
|
700
|
+
const paddedBytes = new Uint8Array(length).fill(0);
|
|
701
|
+
paddedBytes.set(bytes2);
|
|
702
|
+
return paddedBytes;
|
|
703
|
+
};
|
|
704
|
+
var fixBytes2 = (bytes2, length) => padBytes2(bytes2.length <= length ? bytes2 : bytes2.slice(0, length), length);
|
|
705
|
+
function combineCodec(encoder, decoder, description) {
|
|
706
|
+
if (encoder.fixedSize !== decoder.fixedSize) {
|
|
707
|
+
throw new Error(
|
|
708
|
+
`Encoder and decoder must have the same fixed size, got [${encoder.fixedSize}] and [${decoder.fixedSize}].`
|
|
709
|
+
);
|
|
710
|
+
}
|
|
711
|
+
if (encoder.maxSize !== decoder.maxSize) {
|
|
712
|
+
throw new Error(
|
|
713
|
+
`Encoder and decoder must have the same max size, got [${encoder.maxSize}] and [${decoder.maxSize}].`
|
|
714
|
+
);
|
|
715
|
+
}
|
|
716
|
+
if (description === void 0 && encoder.description !== decoder.description) {
|
|
717
|
+
throw new Error(
|
|
718
|
+
`Encoder and decoder must have the same description, got [${encoder.description}] and [${decoder.description}]. Pass a custom description as a third argument if you want to override the description and bypass this error.`
|
|
719
|
+
);
|
|
720
|
+
}
|
|
721
|
+
return {
|
|
722
|
+
decode: decoder.decode,
|
|
723
|
+
description: description ?? encoder.description,
|
|
724
|
+
encode: encoder.encode,
|
|
725
|
+
fixedSize: encoder.fixedSize,
|
|
726
|
+
maxSize: encoder.maxSize
|
|
727
|
+
};
|
|
673
728
|
}
|
|
674
|
-
function
|
|
675
|
-
return
|
|
676
|
-
|
|
677
|
-
|
|
678
|
-
|
|
679
|
-
|
|
680
|
-
|
|
681
|
-
|
|
682
|
-
|
|
729
|
+
function fixCodecHelper(data, fixedBytes, description) {
|
|
730
|
+
return {
|
|
731
|
+
description: description ?? `fixed(${fixedBytes}, ${data.description})`,
|
|
732
|
+
fixedSize: fixedBytes,
|
|
733
|
+
maxSize: fixedBytes
|
|
734
|
+
};
|
|
735
|
+
}
|
|
736
|
+
function fixEncoder(encoder, fixedBytes, description) {
|
|
737
|
+
return {
|
|
738
|
+
...fixCodecHelper(encoder, fixedBytes, description),
|
|
739
|
+
encode: (value) => fixBytes2(encoder.encode(value), fixedBytes)
|
|
740
|
+
};
|
|
741
|
+
}
|
|
742
|
+
function fixDecoder(decoder, fixedBytes, description) {
|
|
743
|
+
return {
|
|
744
|
+
...fixCodecHelper(decoder, fixedBytes, description),
|
|
745
|
+
decode: (bytes2, offset = 0) => {
|
|
746
|
+
assertByteArrayHasEnoughBytesForCodec("fixCodec", fixedBytes, bytes2, offset);
|
|
747
|
+
if (offset > 0 || bytes2.length > fixedBytes) {
|
|
748
|
+
bytes2 = bytes2.slice(offset, offset + fixedBytes);
|
|
749
|
+
}
|
|
750
|
+
if (decoder.fixedSize !== null) {
|
|
751
|
+
bytes2 = fixBytes2(bytes2, decoder.fixedSize);
|
|
752
|
+
}
|
|
753
|
+
const [value] = decoder.decode(bytes2, 0);
|
|
754
|
+
return [value, offset + fixedBytes];
|
|
755
|
+
}
|
|
756
|
+
};
|
|
757
|
+
}
|
|
758
|
+
function mapEncoder(encoder, unmap) {
|
|
759
|
+
return {
|
|
760
|
+
description: encoder.description,
|
|
761
|
+
encode: (value) => encoder.encode(unmap(value)),
|
|
762
|
+
fixedSize: encoder.fixedSize,
|
|
763
|
+
maxSize: encoder.maxSize
|
|
764
|
+
};
|
|
765
|
+
}
|
|
766
|
+
|
|
767
|
+
// ../codecs-numbers/dist/index.browser.js
|
|
768
|
+
function assertNumberIsBetweenForCodec(codecDescription, min, max, value) {
|
|
769
|
+
if (value < min || value > max) {
|
|
770
|
+
throw new Error(
|
|
771
|
+
`Codec [${codecDescription}] expected number to be in the range [${min}, ${max}], got ${value}.`
|
|
772
|
+
);
|
|
773
|
+
}
|
|
774
|
+
}
|
|
775
|
+
function sharedNumberFactory(input) {
|
|
776
|
+
let littleEndian;
|
|
777
|
+
let defaultDescription = input.name;
|
|
778
|
+
if (input.size > 1) {
|
|
779
|
+
littleEndian = !("endian" in input.options) || input.options.endian === 0;
|
|
780
|
+
defaultDescription += littleEndian ? "(le)" : "(be)";
|
|
781
|
+
}
|
|
782
|
+
return {
|
|
783
|
+
description: input.options.description ?? defaultDescription,
|
|
784
|
+
fixedSize: input.size,
|
|
785
|
+
littleEndian,
|
|
786
|
+
maxSize: input.size
|
|
787
|
+
};
|
|
788
|
+
}
|
|
789
|
+
function numberEncoderFactory(input) {
|
|
790
|
+
const codecData = sharedNumberFactory(input);
|
|
791
|
+
return {
|
|
792
|
+
description: codecData.description,
|
|
793
|
+
encode(value) {
|
|
794
|
+
if (input.range) {
|
|
795
|
+
assertNumberIsBetweenForCodec(input.name, input.range[0], input.range[1], value);
|
|
796
|
+
}
|
|
797
|
+
const arrayBuffer = new ArrayBuffer(input.size);
|
|
798
|
+
input.set(new DataView(arrayBuffer), value, codecData.littleEndian);
|
|
799
|
+
return new Uint8Array(arrayBuffer);
|
|
800
|
+
},
|
|
801
|
+
fixedSize: codecData.fixedSize,
|
|
802
|
+
maxSize: codecData.maxSize
|
|
803
|
+
};
|
|
804
|
+
}
|
|
805
|
+
function numberDecoderFactory(input) {
|
|
806
|
+
const codecData = sharedNumberFactory(input);
|
|
807
|
+
return {
|
|
808
|
+
decode(bytes2, offset = 0) {
|
|
809
|
+
assertByteArrayIsNotEmptyForCodec(codecData.description, bytes2, offset);
|
|
810
|
+
assertByteArrayHasEnoughBytesForCodec(codecData.description, input.size, bytes2, offset);
|
|
811
|
+
const view = new DataView(toArrayBuffer2(bytes2, offset, input.size));
|
|
812
|
+
return [input.get(view, codecData.littleEndian), offset + input.size];
|
|
813
|
+
},
|
|
814
|
+
description: codecData.description,
|
|
815
|
+
fixedSize: codecData.fixedSize,
|
|
816
|
+
maxSize: codecData.maxSize
|
|
817
|
+
};
|
|
818
|
+
}
|
|
819
|
+
function toArrayBuffer2(bytes2, offset, length) {
|
|
820
|
+
const bytesOffset = bytes2.byteOffset + (offset ?? 0);
|
|
821
|
+
const bytesLength = length ?? bytes2.byteLength;
|
|
822
|
+
return bytes2.buffer.slice(bytesOffset, bytesOffset + bytesLength);
|
|
823
|
+
}
|
|
824
|
+
var getU32Encoder = (options = {}) => numberEncoderFactory({
|
|
825
|
+
name: "u32",
|
|
826
|
+
options,
|
|
827
|
+
range: [0, Number("0xffffffff")],
|
|
828
|
+
set: (view, value, le) => view.setUint32(0, value, le),
|
|
829
|
+
size: 4
|
|
830
|
+
});
|
|
831
|
+
var getU32Decoder = (options = {}) => numberDecoderFactory({
|
|
832
|
+
get: (view, le) => view.getUint32(0, le),
|
|
833
|
+
name: "u32",
|
|
834
|
+
options,
|
|
835
|
+
size: 4
|
|
836
|
+
});
|
|
837
|
+
var getU8Encoder = (options = {}) => numberEncoderFactory({
|
|
838
|
+
name: "u8",
|
|
839
|
+
options,
|
|
840
|
+
range: [0, Number("0xff")],
|
|
841
|
+
set: (view, value) => view.setUint8(0, value),
|
|
842
|
+
size: 1
|
|
843
|
+
});
|
|
844
|
+
var getU8Decoder = (options = {}) => numberDecoderFactory({
|
|
845
|
+
get: (view) => view.getUint8(0),
|
|
846
|
+
name: "u8",
|
|
847
|
+
options,
|
|
848
|
+
size: 1
|
|
849
|
+
});
|
|
850
|
+
var getU8Codec = (options = {}) => combineCodec(getU8Encoder(options), getU8Decoder(options));
|
|
851
|
+
|
|
852
|
+
// ../codecs-strings/dist/index.browser.js
|
|
853
|
+
function assertValidBaseString(alphabet4, testValue, givenValue = testValue) {
|
|
854
|
+
if (!testValue.match(new RegExp(`^[${alphabet4}]*$`))) {
|
|
855
|
+
throw new Error(`Expected a string of base ${alphabet4.length}, got [${givenValue}].`);
|
|
856
|
+
}
|
|
857
|
+
}
|
|
858
|
+
var getBaseXEncoder = (alphabet4) => {
|
|
859
|
+
const base = alphabet4.length;
|
|
860
|
+
const baseBigInt = BigInt(base);
|
|
861
|
+
return {
|
|
862
|
+
description: `base${base}`,
|
|
863
|
+
encode(value) {
|
|
864
|
+
assertValidBaseString(alphabet4, value);
|
|
865
|
+
if (value === "")
|
|
866
|
+
return new Uint8Array();
|
|
867
|
+
const chars = [...value];
|
|
868
|
+
let trailIndex = chars.findIndex((c) => c !== alphabet4[0]);
|
|
869
|
+
trailIndex = trailIndex === -1 ? chars.length : trailIndex;
|
|
870
|
+
const leadingZeroes = Array(trailIndex).fill(0);
|
|
871
|
+
if (trailIndex === chars.length)
|
|
872
|
+
return Uint8Array.from(leadingZeroes);
|
|
873
|
+
const tailChars = chars.slice(trailIndex);
|
|
874
|
+
let base10Number = 0n;
|
|
875
|
+
let baseXPower = 1n;
|
|
876
|
+
for (let i = tailChars.length - 1; i >= 0; i -= 1) {
|
|
877
|
+
base10Number += baseXPower * BigInt(alphabet4.indexOf(tailChars[i]));
|
|
878
|
+
baseXPower *= baseBigInt;
|
|
879
|
+
}
|
|
880
|
+
const tailBytes = [];
|
|
881
|
+
while (base10Number > 0n) {
|
|
882
|
+
tailBytes.unshift(Number(base10Number % 256n));
|
|
883
|
+
base10Number /= 256n;
|
|
884
|
+
}
|
|
885
|
+
return Uint8Array.from(leadingZeroes.concat(tailBytes));
|
|
886
|
+
},
|
|
887
|
+
fixedSize: null,
|
|
888
|
+
maxSize: null
|
|
889
|
+
};
|
|
890
|
+
};
|
|
891
|
+
var getBaseXDecoder = (alphabet4) => {
|
|
892
|
+
const base = alphabet4.length;
|
|
893
|
+
const baseBigInt = BigInt(base);
|
|
894
|
+
return {
|
|
895
|
+
decode(rawBytes, offset = 0) {
|
|
896
|
+
const bytes2 = offset === 0 ? rawBytes : rawBytes.slice(offset);
|
|
897
|
+
if (bytes2.length === 0)
|
|
898
|
+
return ["", 0];
|
|
899
|
+
let trailIndex = bytes2.findIndex((n) => n !== 0);
|
|
900
|
+
trailIndex = trailIndex === -1 ? bytes2.length : trailIndex;
|
|
901
|
+
const leadingZeroes = alphabet4[0].repeat(trailIndex);
|
|
902
|
+
if (trailIndex === bytes2.length)
|
|
903
|
+
return [leadingZeroes, rawBytes.length];
|
|
904
|
+
let base10Number = bytes2.slice(trailIndex).reduce((sum, byte) => sum * 256n + BigInt(byte), 0n);
|
|
905
|
+
const tailChars = [];
|
|
906
|
+
while (base10Number > 0n) {
|
|
907
|
+
tailChars.unshift(alphabet4[Number(base10Number % baseBigInt)]);
|
|
908
|
+
base10Number /= baseBigInt;
|
|
909
|
+
}
|
|
910
|
+
return [leadingZeroes + tailChars.join(""), rawBytes.length];
|
|
911
|
+
},
|
|
912
|
+
description: `base${base}`,
|
|
913
|
+
fixedSize: null,
|
|
914
|
+
maxSize: null
|
|
915
|
+
};
|
|
916
|
+
};
|
|
917
|
+
var alphabet2 = "123456789ABCDEFGHJKLMNPQRSTUVWXYZabcdefghijkmnopqrstuvwxyz";
|
|
918
|
+
var getBase58Encoder = () => getBaseXEncoder(alphabet2);
|
|
919
|
+
var getBase58Decoder = () => getBaseXDecoder(alphabet2);
|
|
920
|
+
var removeNullCharacters2 = (value) => (
|
|
921
|
+
// eslint-disable-next-line no-control-regex
|
|
922
|
+
value.replace(/\u0000/g, "")
|
|
923
|
+
);
|
|
924
|
+
var e = globalThis.TextDecoder;
|
|
925
|
+
var o = globalThis.TextEncoder;
|
|
926
|
+
var getUtf8Encoder = () => {
|
|
927
|
+
let textEncoder;
|
|
928
|
+
return {
|
|
929
|
+
description: "utf8",
|
|
930
|
+
encode: (value) => new Uint8Array((textEncoder || (textEncoder = new o())).encode(value)),
|
|
931
|
+
fixedSize: null,
|
|
932
|
+
maxSize: null
|
|
933
|
+
};
|
|
934
|
+
};
|
|
935
|
+
var getUtf8Decoder = () => {
|
|
936
|
+
let textDecoder;
|
|
937
|
+
return {
|
|
938
|
+
decode(bytes2, offset = 0) {
|
|
939
|
+
const value = (textDecoder || (textDecoder = new e())).decode(bytes2.slice(offset));
|
|
940
|
+
return [removeNullCharacters2(value), bytes2.length];
|
|
941
|
+
},
|
|
942
|
+
description: "utf8",
|
|
943
|
+
fixedSize: null,
|
|
944
|
+
maxSize: null
|
|
945
|
+
};
|
|
946
|
+
};
|
|
947
|
+
var getStringEncoder = (options = {}) => {
|
|
948
|
+
const size = options.size ?? getU32Encoder();
|
|
949
|
+
const encoding = options.encoding ?? getUtf8Encoder();
|
|
950
|
+
const description = options.description ?? `string(${encoding.description}; ${getSizeDescription2(size)})`;
|
|
951
|
+
if (size === "variable") {
|
|
952
|
+
return { ...encoding, description };
|
|
953
|
+
}
|
|
954
|
+
if (typeof size === "number") {
|
|
955
|
+
return fixEncoder(encoding, size, description);
|
|
956
|
+
}
|
|
957
|
+
return {
|
|
958
|
+
description,
|
|
959
|
+
encode: (value) => {
|
|
960
|
+
const contentBytes = encoding.encode(value);
|
|
961
|
+
const lengthBytes = size.encode(contentBytes.length);
|
|
962
|
+
return mergeBytes2([lengthBytes, contentBytes]);
|
|
963
|
+
},
|
|
964
|
+
fixedSize: null,
|
|
965
|
+
maxSize: null
|
|
966
|
+
};
|
|
967
|
+
};
|
|
968
|
+
var getStringDecoder = (options = {}) => {
|
|
969
|
+
const size = options.size ?? getU32Decoder();
|
|
970
|
+
const encoding = options.encoding ?? getUtf8Decoder();
|
|
971
|
+
const description = options.description ?? `string(${encoding.description}; ${getSizeDescription2(size)})`;
|
|
972
|
+
if (size === "variable") {
|
|
973
|
+
return { ...encoding, description };
|
|
974
|
+
}
|
|
975
|
+
if (typeof size === "number") {
|
|
976
|
+
return fixDecoder(encoding, size, description);
|
|
977
|
+
}
|
|
978
|
+
return {
|
|
979
|
+
decode: (bytes2, offset = 0) => {
|
|
980
|
+
assertByteArrayIsNotEmptyForCodec("string", bytes2, offset);
|
|
981
|
+
const [lengthBigInt, lengthOffset] = size.decode(bytes2, offset);
|
|
982
|
+
const length = Number(lengthBigInt);
|
|
983
|
+
offset = lengthOffset;
|
|
984
|
+
const contentBytes = bytes2.slice(offset, offset + length);
|
|
985
|
+
assertByteArrayHasEnoughBytesForCodec("string", length, contentBytes);
|
|
986
|
+
const [value, contentOffset] = encoding.decode(contentBytes);
|
|
987
|
+
offset += contentOffset;
|
|
988
|
+
return [value, offset];
|
|
989
|
+
},
|
|
990
|
+
description,
|
|
991
|
+
fixedSize: null,
|
|
992
|
+
maxSize: null
|
|
993
|
+
};
|
|
994
|
+
};
|
|
995
|
+
function getSizeDescription2(size) {
|
|
996
|
+
return typeof size === "object" ? size.description : `${size}`;
|
|
683
997
|
}
|
|
998
|
+
|
|
999
|
+
// ../assertions/dist/index.browser.js
|
|
684
1000
|
function assertIsSecureContext() {
|
|
685
1001
|
if (!globalThis.isSecureContext) {
|
|
686
1002
|
throw new Error(
|
|
@@ -700,24 +1016,88 @@ this.globalThis.solanaWeb3 = (function (exports) {
|
|
|
700
1016
|
throw new Error("No signing implementation could be found");
|
|
701
1017
|
}
|
|
702
1018
|
}
|
|
703
|
-
|
|
1019
|
+
|
|
1020
|
+
// ../addresses/dist/index.browser.js
|
|
1021
|
+
var memoizedBase58Encoder;
|
|
1022
|
+
var memoizedBase58Decoder;
|
|
1023
|
+
function getMemoizedBase58Encoder() {
|
|
1024
|
+
if (!memoizedBase58Encoder)
|
|
1025
|
+
memoizedBase58Encoder = getBase58Encoder();
|
|
1026
|
+
return memoizedBase58Encoder;
|
|
1027
|
+
}
|
|
1028
|
+
function getMemoizedBase58Decoder() {
|
|
1029
|
+
if (!memoizedBase58Decoder)
|
|
1030
|
+
memoizedBase58Decoder = getBase58Decoder();
|
|
1031
|
+
return memoizedBase58Decoder;
|
|
1032
|
+
}
|
|
1033
|
+
function assertIsAddress(putativeBase58EncodedAddress) {
|
|
1034
|
+
try {
|
|
1035
|
+
if (
|
|
1036
|
+
// Lowest address (32 bytes of zeroes)
|
|
1037
|
+
putativeBase58EncodedAddress.length < 32 || // Highest address (32 bytes of 255)
|
|
1038
|
+
putativeBase58EncodedAddress.length > 44
|
|
1039
|
+
) {
|
|
1040
|
+
throw new Error("Expected input string to decode to a byte array of length 32.");
|
|
1041
|
+
}
|
|
1042
|
+
const base58Encoder = getMemoizedBase58Encoder();
|
|
1043
|
+
const bytes2 = base58Encoder.encode(putativeBase58EncodedAddress);
|
|
1044
|
+
const numBytes = bytes2.byteLength;
|
|
1045
|
+
if (numBytes !== 32) {
|
|
1046
|
+
throw new Error(`Expected input string to decode to a byte array of length 32. Actual length: ${numBytes}`);
|
|
1047
|
+
}
|
|
1048
|
+
} catch (e2) {
|
|
1049
|
+
throw new Error(`\`${putativeBase58EncodedAddress}\` is not a base-58 encoded address`, {
|
|
1050
|
+
cause: e2
|
|
1051
|
+
});
|
|
1052
|
+
}
|
|
1053
|
+
}
|
|
1054
|
+
function address(putativeBase58EncodedAddress) {
|
|
1055
|
+
assertIsAddress(putativeBase58EncodedAddress);
|
|
1056
|
+
return putativeBase58EncodedAddress;
|
|
1057
|
+
}
|
|
1058
|
+
function getAddressEncoder(config) {
|
|
1059
|
+
return mapEncoder(
|
|
1060
|
+
getStringEncoder({
|
|
1061
|
+
description: config?.description ?? "Base58EncodedAddress",
|
|
1062
|
+
encoding: getMemoizedBase58Encoder(),
|
|
1063
|
+
size: 32
|
|
1064
|
+
}),
|
|
1065
|
+
(putativeAddress) => address(putativeAddress)
|
|
1066
|
+
);
|
|
1067
|
+
}
|
|
1068
|
+
function getAddressDecoder(config) {
|
|
1069
|
+
return getStringDecoder({
|
|
1070
|
+
description: config?.description ?? "Base58EncodedAddress",
|
|
1071
|
+
encoding: getMemoizedBase58Decoder(),
|
|
1072
|
+
size: 32
|
|
1073
|
+
});
|
|
1074
|
+
}
|
|
1075
|
+
function getAddressCodec(config) {
|
|
1076
|
+
return combineCodec(getAddressEncoder(config), getAddressDecoder(config));
|
|
1077
|
+
}
|
|
1078
|
+
function getAddressComparator() {
|
|
1079
|
+
return new Intl.Collator("en", {
|
|
1080
|
+
caseFirst: "lower",
|
|
1081
|
+
ignorePunctuation: false,
|
|
1082
|
+
localeMatcher: "best fit",
|
|
1083
|
+
numeric: false,
|
|
1084
|
+
sensitivity: "variant",
|
|
1085
|
+
usage: "sort"
|
|
1086
|
+
}).compare;
|
|
1087
|
+
}
|
|
1088
|
+
async function getAddressFromPublicKey(publicKey) {
|
|
704
1089
|
await assertKeyExporterIsAvailable();
|
|
705
1090
|
if (publicKey.type !== "public" || publicKey.algorithm.name !== "Ed25519") {
|
|
706
1091
|
throw new Error("The `CryptoKey` must be an `Ed25519` public key");
|
|
707
1092
|
}
|
|
708
1093
|
const publicKeyBytes = await crypto.subtle.exportKey("raw", publicKey);
|
|
709
|
-
const [base58EncodedAddress] =
|
|
1094
|
+
const [base58EncodedAddress] = getAddressDecoder().decode(new Uint8Array(publicKeyBytes));
|
|
710
1095
|
return base58EncodedAddress;
|
|
711
1096
|
}
|
|
712
|
-
async function signBytes(key, data) {
|
|
713
|
-
await assertSigningCapabilityIsAvailable();
|
|
714
|
-
const signedData = await crypto.subtle.sign("Ed25519", key, data);
|
|
715
|
-
return new Uint8Array(signedData);
|
|
716
|
-
}
|
|
717
1097
|
|
|
718
1098
|
// src/accounts.ts
|
|
719
|
-
function upsert(addressMap,
|
|
720
|
-
addressMap[
|
|
1099
|
+
function upsert(addressMap, address2, update) {
|
|
1100
|
+
addressMap[address2] = update(addressMap[address2] ?? { role: AccountRole.READONLY });
|
|
721
1101
|
}
|
|
722
1102
|
var TYPE = Symbol("AddressMapTypeProperty");
|
|
723
1103
|
function getAddressMapFromInstructions(feePayer, instructions) {
|
|
@@ -768,7 +1148,7 @@ this.globalThis.solanaWeb3 = (function (exports) {
|
|
|
768
1148
|
const shouldReplaceEntry = (
|
|
769
1149
|
// Consider using the new LOOKUP_TABLE if its address is different...
|
|
770
1150
|
entry.lookupTableAddress !== accountMeta.lookupTableAddress && // ...and sorts before the existing one.
|
|
771
|
-
(addressComparator || (addressComparator =
|
|
1151
|
+
(addressComparator || (addressComparator = getAddressComparator()))(
|
|
772
1152
|
accountMeta.lookupTableAddress,
|
|
773
1153
|
entry.lookupTableAddress
|
|
774
1154
|
) < 0
|
|
@@ -874,14 +1254,14 @@ this.globalThis.solanaWeb3 = (function (exports) {
|
|
|
874
1254
|
if (leftIsWritable !== isWritableRole(rightEntry.role)) {
|
|
875
1255
|
return leftIsWritable ? -1 : 1;
|
|
876
1256
|
}
|
|
877
|
-
addressComparator || (addressComparator =
|
|
1257
|
+
addressComparator || (addressComparator = getAddressComparator());
|
|
878
1258
|
if (leftEntry[TYPE] === 1 /* LOOKUP_TABLE */ && rightEntry[TYPE] === 1 /* LOOKUP_TABLE */ && leftEntry.lookupTableAddress !== rightEntry.lookupTableAddress) {
|
|
879
1259
|
return addressComparator(leftEntry.lookupTableAddress, rightEntry.lookupTableAddress);
|
|
880
1260
|
} else {
|
|
881
1261
|
return addressComparator(leftAddress, rightAddress);
|
|
882
1262
|
}
|
|
883
|
-
}).map(([
|
|
884
|
-
address,
|
|
1263
|
+
}).map(([address2, addressMeta]) => ({
|
|
1264
|
+
address: address2,
|
|
885
1265
|
...addressMeta
|
|
886
1266
|
}));
|
|
887
1267
|
return orderedAccounts;
|
|
@@ -905,7 +1285,7 @@ this.globalThis.solanaWeb3 = (function (exports) {
|
|
|
905
1285
|
entry.readableIndices.push(account.addressIndex);
|
|
906
1286
|
}
|
|
907
1287
|
}
|
|
908
|
-
return Object.keys(index).sort(
|
|
1288
|
+
return Object.keys(index).sort(getAddressComparator()).map((lookupTableAddress) => ({
|
|
909
1289
|
lookupTableAddress,
|
|
910
1290
|
...index[lookupTableAddress]
|
|
911
1291
|
}));
|
|
@@ -950,7 +1330,7 @@ this.globalThis.solanaWeb3 = (function (exports) {
|
|
|
950
1330
|
return instructions.map(({ accounts, data, programAddress }) => {
|
|
951
1331
|
return {
|
|
952
1332
|
programAddressIndex: accountIndex[programAddress],
|
|
953
|
-
...accounts ? { accountIndices: accounts.map(({ address }) => accountIndex[
|
|
1333
|
+
...accounts ? { accountIndices: accounts.map(({ address: address2 }) => accountIndex[address2]) } : null,
|
|
954
1334
|
...data ? { data } : null
|
|
955
1335
|
};
|
|
956
1336
|
});
|
|
@@ -968,7 +1348,7 @@ this.globalThis.solanaWeb3 = (function (exports) {
|
|
|
968
1348
|
function getCompiledStaticAccounts(orderedAccounts) {
|
|
969
1349
|
const firstLookupTableAccountIndex = orderedAccounts.findIndex((account) => "lookupTableAddress" in account);
|
|
970
1350
|
const orderedStaticAccounts = firstLookupTableAccountIndex === -1 ? orderedAccounts : orderedAccounts.slice(0, firstLookupTableAccountIndex);
|
|
971
|
-
return orderedStaticAccounts.map(({ address }) =>
|
|
1351
|
+
return orderedStaticAccounts.map(({ address: address2 }) => address2);
|
|
972
1352
|
}
|
|
973
1353
|
|
|
974
1354
|
// src/message.ts
|
|
@@ -985,13 +1365,41 @@ this.globalThis.solanaWeb3 = (function (exports) {
|
|
|
985
1365
|
};
|
|
986
1366
|
}
|
|
987
1367
|
|
|
1368
|
+
// src/compile-transaction.ts
|
|
1369
|
+
function getCompiledTransaction(transaction) {
|
|
1370
|
+
const compiledMessage = compileMessage(transaction);
|
|
1371
|
+
let signatures;
|
|
1372
|
+
if ("signatures" in transaction) {
|
|
1373
|
+
signatures = [];
|
|
1374
|
+
for (let ii = 0; ii < compiledMessage.header.numSignerAccounts; ii++) {
|
|
1375
|
+
signatures[ii] = transaction.signatures[compiledMessage.staticAccounts[ii]] ?? new Uint8Array(Array(64).fill(0));
|
|
1376
|
+
}
|
|
1377
|
+
} else {
|
|
1378
|
+
signatures = Array(compiledMessage.header.numSignerAccounts).fill(new Uint8Array(Array(64).fill(0)));
|
|
1379
|
+
}
|
|
1380
|
+
return {
|
|
1381
|
+
compiledMessage,
|
|
1382
|
+
signatures
|
|
1383
|
+
};
|
|
1384
|
+
}
|
|
1385
|
+
|
|
988
1386
|
// src/serializers/address-table-lookup.ts
|
|
1387
|
+
function addressSerializerCompat(compat) {
|
|
1388
|
+
const codec = getAddressCodec();
|
|
1389
|
+
return {
|
|
1390
|
+
description: compat?.description ?? codec.description,
|
|
1391
|
+
deserialize: codec.decode,
|
|
1392
|
+
fixedSize: codec.fixedSize,
|
|
1393
|
+
maxSize: codec.maxSize,
|
|
1394
|
+
serialize: codec.encode
|
|
1395
|
+
};
|
|
1396
|
+
}
|
|
989
1397
|
function getAddressTableLookupCodec() {
|
|
990
1398
|
return struct(
|
|
991
1399
|
[
|
|
992
1400
|
[
|
|
993
1401
|
"lookupTableAddress",
|
|
994
|
-
|
|
1402
|
+
addressSerializerCompat(
|
|
995
1403
|
{
|
|
996
1404
|
description: "The address of the address lookup table account from which instruction addresses should be looked up"
|
|
997
1405
|
}
|
|
@@ -1022,38 +1430,73 @@ this.globalThis.solanaWeb3 = (function (exports) {
|
|
|
1022
1430
|
);
|
|
1023
1431
|
}
|
|
1024
1432
|
|
|
1433
|
+
// ../codecs-data-structures/dist/index.browser.js
|
|
1434
|
+
function sumCodecSizes(sizes) {
|
|
1435
|
+
return sizes.reduce((all, size) => all === null || size === null ? null : all + size, 0);
|
|
1436
|
+
}
|
|
1437
|
+
function structCodecHelper(fields, description) {
|
|
1438
|
+
const fieldDescriptions = fields.map(([name, codec]) => `${String(name)}: ${codec.description}`).join(", ");
|
|
1439
|
+
return {
|
|
1440
|
+
description: description ?? `struct(${fieldDescriptions})`,
|
|
1441
|
+
fixedSize: sumCodecSizes(fields.map(([, field]) => field.fixedSize)),
|
|
1442
|
+
maxSize: sumCodecSizes(fields.map(([, field]) => field.maxSize))
|
|
1443
|
+
};
|
|
1444
|
+
}
|
|
1445
|
+
function getStructEncoder(fields, options = {}) {
|
|
1446
|
+
return {
|
|
1447
|
+
...structCodecHelper(fields, options.description),
|
|
1448
|
+
encode: (struct2) => {
|
|
1449
|
+
const fieldBytes = fields.map(([key, codec]) => codec.encode(struct2[key]));
|
|
1450
|
+
return mergeBytes2(fieldBytes);
|
|
1451
|
+
}
|
|
1452
|
+
};
|
|
1453
|
+
}
|
|
1454
|
+
function getStructDecoder(fields, options = {}) {
|
|
1455
|
+
return {
|
|
1456
|
+
...structCodecHelper(fields, options.description),
|
|
1457
|
+
decode: (bytes2, offset = 0) => {
|
|
1458
|
+
const struct2 = {};
|
|
1459
|
+
fields.forEach(([key, codec]) => {
|
|
1460
|
+
const [value, newOffset] = codec.decode(bytes2, offset);
|
|
1461
|
+
offset = newOffset;
|
|
1462
|
+
struct2[key] = value;
|
|
1463
|
+
});
|
|
1464
|
+
return [struct2, offset];
|
|
1465
|
+
}
|
|
1466
|
+
};
|
|
1467
|
+
}
|
|
1468
|
+
function getStructCodec(fields, options = {}) {
|
|
1469
|
+
return combineCodec(getStructEncoder(fields, options), getStructDecoder(fields, options));
|
|
1470
|
+
}
|
|
1471
|
+
|
|
1025
1472
|
// src/serializers/header.ts
|
|
1473
|
+
var memoizedU8Codec;
|
|
1474
|
+
function getMemoizedU8Codec() {
|
|
1475
|
+
if (!memoizedU8Codec)
|
|
1476
|
+
memoizedU8Codec = getU8Codec();
|
|
1477
|
+
return memoizedU8Codec;
|
|
1478
|
+
}
|
|
1479
|
+
function getMemoizedU8CodecDescription(description) {
|
|
1480
|
+
const codec = getMemoizedU8Codec();
|
|
1481
|
+
return {
|
|
1482
|
+
...codec,
|
|
1483
|
+
description: description ?? codec.description
|
|
1484
|
+
};
|
|
1485
|
+
}
|
|
1486
|
+
var numSignerAccountsDescription = "The expected number of addresses in the static address list belonging to accounts that are required to sign this transaction" ;
|
|
1487
|
+
var numReadonlySignerAccountsDescription = "The expected number of addresses in the static address list belonging to accounts that are required to sign this transaction, but may not be writable" ;
|
|
1488
|
+
var numReadonlyNonSignerAccountsDescription = "The expected number of addresses in the static address list belonging to accounts that are neither signers, nor writable" ;
|
|
1489
|
+
var messageHeaderDescription = "The transaction message header containing counts of the signer, readonly-signer, and readonly-nonsigner account addresses" ;
|
|
1026
1490
|
function getMessageHeaderCodec() {
|
|
1027
|
-
return
|
|
1491
|
+
return getStructCodec(
|
|
1028
1492
|
[
|
|
1029
|
-
[
|
|
1030
|
-
|
|
1031
|
-
|
|
1032
|
-
{
|
|
1033
|
-
description: "The expected number of addresses in the static address list belonging to accounts that are required to sign this transaction"
|
|
1034
|
-
}
|
|
1035
|
-
)
|
|
1036
|
-
],
|
|
1037
|
-
[
|
|
1038
|
-
"numReadonlySignerAccounts",
|
|
1039
|
-
u8(
|
|
1040
|
-
{
|
|
1041
|
-
description: "The expected number of addresses in the static address list belonging to accounts that are required to sign this transaction, but may not be writable"
|
|
1042
|
-
}
|
|
1043
|
-
)
|
|
1044
|
-
],
|
|
1045
|
-
[
|
|
1046
|
-
"numReadonlyNonSignerAccounts",
|
|
1047
|
-
u8(
|
|
1048
|
-
{
|
|
1049
|
-
description: "The expected number of addresses in the static address list belonging to accounts that are neither signers, nor writable"
|
|
1050
|
-
}
|
|
1051
|
-
)
|
|
1052
|
-
]
|
|
1493
|
+
["numSignerAccounts", getMemoizedU8CodecDescription(numSignerAccountsDescription)],
|
|
1494
|
+
["numReadonlySignerAccounts", getMemoizedU8CodecDescription(numReadonlySignerAccountsDescription)],
|
|
1495
|
+
["numReadonlyNonSignerAccounts", getMemoizedU8CodecDescription(numReadonlyNonSignerAccountsDescription)]
|
|
1053
1496
|
],
|
|
1054
1497
|
{
|
|
1055
|
-
description:
|
|
1056
|
-
}
|
|
1498
|
+
description: messageHeaderDescription
|
|
1499
|
+
}
|
|
1057
1500
|
);
|
|
1058
1501
|
}
|
|
1059
1502
|
|
|
@@ -1070,7 +1513,7 @@ this.globalThis.solanaWeb3 = (function (exports) {
|
|
|
1070
1513
|
)
|
|
1071
1514
|
],
|
|
1072
1515
|
[
|
|
1073
|
-
"
|
|
1516
|
+
"accountIndices",
|
|
1074
1517
|
array(
|
|
1075
1518
|
u8({
|
|
1076
1519
|
description: "The index of an account, according to the well-ordered accounts list for this transaction"
|
|
@@ -1090,42 +1533,29 @@ this.globalThis.solanaWeb3 = (function (exports) {
|
|
|
1090
1533
|
]
|
|
1091
1534
|
]),
|
|
1092
1535
|
(value) => {
|
|
1093
|
-
if (value.
|
|
1536
|
+
if (value.accountIndices !== void 0 && value.data !== void 0) {
|
|
1094
1537
|
return value;
|
|
1095
1538
|
}
|
|
1096
1539
|
return {
|
|
1097
1540
|
...value,
|
|
1098
|
-
|
|
1541
|
+
accountIndices: value.accountIndices ?? [],
|
|
1099
1542
|
data: value.data ?? new Uint8Array(0)
|
|
1100
1543
|
};
|
|
1101
1544
|
},
|
|
1102
1545
|
(value) => {
|
|
1103
|
-
if (value.
|
|
1546
|
+
if (value.accountIndices.length && value.data.byteLength) {
|
|
1104
1547
|
return value;
|
|
1105
1548
|
}
|
|
1106
|
-
const {
|
|
1549
|
+
const { accountIndices, data, ...rest } = value;
|
|
1107
1550
|
return {
|
|
1108
1551
|
...rest,
|
|
1109
|
-
...
|
|
1552
|
+
...accountIndices.length ? { accountIndices } : null,
|
|
1110
1553
|
...data.byteLength ? { data } : null
|
|
1111
1554
|
};
|
|
1112
1555
|
}
|
|
1113
1556
|
);
|
|
1114
1557
|
}
|
|
1115
1558
|
|
|
1116
|
-
// src/serializers/unimplemented.ts
|
|
1117
|
-
function getError(type, name) {
|
|
1118
|
-
const functionSuffix = name + type[0].toUpperCase() + type.slice(1);
|
|
1119
|
-
return new Error(
|
|
1120
|
-
`No ${type} exists for ${name}. Use \`get${functionSuffix}()\` if you need a ${type}, and \`get${name}Codec()\` if you need to both encode and decode ${name}`
|
|
1121
|
-
);
|
|
1122
|
-
}
|
|
1123
|
-
function getUnimplementedDecoder(name) {
|
|
1124
|
-
return () => {
|
|
1125
|
-
throw getError("decoder", name);
|
|
1126
|
-
};
|
|
1127
|
-
}
|
|
1128
|
-
|
|
1129
1559
|
// src/serializers/transaction-version.ts
|
|
1130
1560
|
var VERSION_FLAG_MASK = 128;
|
|
1131
1561
|
var BASE_CONFIG = {
|
|
@@ -1133,7 +1563,7 @@ this.globalThis.solanaWeb3 = (function (exports) {
|
|
|
1133
1563
|
fixedSize: null,
|
|
1134
1564
|
maxSize: 1
|
|
1135
1565
|
};
|
|
1136
|
-
function
|
|
1566
|
+
function decode(bytes2, offset = 0) {
|
|
1137
1567
|
const firstByte = bytes2[offset];
|
|
1138
1568
|
if ((firstByte & VERSION_FLAG_MASK) === 0) {
|
|
1139
1569
|
return ["legacy", offset];
|
|
@@ -1142,7 +1572,7 @@ this.globalThis.solanaWeb3 = (function (exports) {
|
|
|
1142
1572
|
return [version, offset + 1];
|
|
1143
1573
|
}
|
|
1144
1574
|
}
|
|
1145
|
-
function
|
|
1575
|
+
function encode(value) {
|
|
1146
1576
|
if (value === "legacy") {
|
|
1147
1577
|
return new Uint8Array();
|
|
1148
1578
|
}
|
|
@@ -1151,11 +1581,32 @@ this.globalThis.solanaWeb3 = (function (exports) {
|
|
|
1151
1581
|
}
|
|
1152
1582
|
return new Uint8Array([value | VERSION_FLAG_MASK]);
|
|
1153
1583
|
}
|
|
1154
|
-
function
|
|
1584
|
+
function getTransactionVersionDecoder() {
|
|
1155
1585
|
return {
|
|
1156
1586
|
...BASE_CONFIG,
|
|
1157
|
-
|
|
1158
|
-
|
|
1587
|
+
decode
|
|
1588
|
+
};
|
|
1589
|
+
}
|
|
1590
|
+
function getTransactionVersionEncoder() {
|
|
1591
|
+
return {
|
|
1592
|
+
...BASE_CONFIG,
|
|
1593
|
+
encode
|
|
1594
|
+
};
|
|
1595
|
+
}
|
|
1596
|
+
function getTransactionVersionCodec() {
|
|
1597
|
+
return combineCodec(getTransactionVersionEncoder(), getTransactionVersionDecoder());
|
|
1598
|
+
}
|
|
1599
|
+
|
|
1600
|
+
// src/serializers/unimplemented.ts
|
|
1601
|
+
function getError(type, name) {
|
|
1602
|
+
const functionSuffix = name + type[0].toUpperCase() + type.slice(1);
|
|
1603
|
+
return new Error(
|
|
1604
|
+
`No ${type} exists for ${name}. Use \`get${functionSuffix}()\` if you need a ${type}, and \`get${name}Codec()\` if you need to both encode and decode ${name}`
|
|
1605
|
+
);
|
|
1606
|
+
}
|
|
1607
|
+
function getUnimplementedDecoder(name) {
|
|
1608
|
+
return () => {
|
|
1609
|
+
throw getError("decoder", name);
|
|
1159
1610
|
};
|
|
1160
1611
|
}
|
|
1161
1612
|
|
|
@@ -1165,7 +1616,7 @@ this.globalThis.solanaWeb3 = (function (exports) {
|
|
|
1165
1616
|
fixedSize: null,
|
|
1166
1617
|
maxSize: null
|
|
1167
1618
|
};
|
|
1168
|
-
function
|
|
1619
|
+
function serialize(compiledMessage) {
|
|
1169
1620
|
if (compiledMessage.version === "legacy") {
|
|
1170
1621
|
return struct(getPreludeStructSerializerTuple()).serialize(compiledMessage);
|
|
1171
1622
|
} else {
|
|
@@ -1186,13 +1637,22 @@ this.globalThis.solanaWeb3 = (function (exports) {
|
|
|
1186
1637
|
).serialize(compiledMessage);
|
|
1187
1638
|
}
|
|
1188
1639
|
}
|
|
1640
|
+
function toSerializer(codec) {
|
|
1641
|
+
return {
|
|
1642
|
+
description: codec.description,
|
|
1643
|
+
deserialize: codec.decode,
|
|
1644
|
+
fixedSize: codec.fixedSize,
|
|
1645
|
+
maxSize: codec.maxSize,
|
|
1646
|
+
serialize: codec.encode
|
|
1647
|
+
};
|
|
1648
|
+
}
|
|
1189
1649
|
function getPreludeStructSerializerTuple() {
|
|
1190
1650
|
return [
|
|
1191
|
-
["version", getTransactionVersionCodec()],
|
|
1192
|
-
["header", getMessageHeaderCodec()],
|
|
1651
|
+
["version", toSerializer(getTransactionVersionCodec())],
|
|
1652
|
+
["header", toSerializer(getMessageHeaderCodec())],
|
|
1193
1653
|
[
|
|
1194
1654
|
"staticAccounts",
|
|
1195
|
-
array(
|
|
1655
|
+
array(toSerializer(getAddressCodec()), {
|
|
1196
1656
|
description: "A compact-array of static account addresses belonging to this transaction" ,
|
|
1197
1657
|
size: shortU16()
|
|
1198
1658
|
})
|
|
@@ -1224,49 +1684,7 @@ this.globalThis.solanaWeb3 = (function (exports) {
|
|
|
1224
1684
|
return {
|
|
1225
1685
|
...BASE_CONFIG2,
|
|
1226
1686
|
deserialize: getUnimplementedDecoder("CompiledMessage"),
|
|
1227
|
-
serialize
|
|
1228
|
-
};
|
|
1229
|
-
}
|
|
1230
|
-
|
|
1231
|
-
// src/signatures.ts
|
|
1232
|
-
async function getCompiledMessageSignature(message, secretKey) {
|
|
1233
|
-
const wireMessageBytes = getCompiledMessageEncoder().serialize(message);
|
|
1234
|
-
const signature = await signBytes(secretKey, wireMessageBytes);
|
|
1235
|
-
return signature;
|
|
1236
|
-
}
|
|
1237
|
-
async function signTransaction(keyPair, transaction) {
|
|
1238
|
-
const compiledMessage = compileMessage(transaction);
|
|
1239
|
-
const [signerPublicKey, signature] = await Promise.all([
|
|
1240
|
-
getBase58EncodedAddressFromPublicKey(keyPair.publicKey),
|
|
1241
|
-
getCompiledMessageSignature(compiledMessage, keyPair.privateKey)
|
|
1242
|
-
]);
|
|
1243
|
-
const nextSignatures = {
|
|
1244
|
-
..."signatures" in transaction ? transaction.signatures : null,
|
|
1245
|
-
...{ [signerPublicKey]: signature }
|
|
1246
|
-
};
|
|
1247
|
-
const out = {
|
|
1248
|
-
...transaction,
|
|
1249
|
-
signatures: nextSignatures
|
|
1250
|
-
};
|
|
1251
|
-
Object.freeze(out);
|
|
1252
|
-
return out;
|
|
1253
|
-
}
|
|
1254
|
-
|
|
1255
|
-
// src/compile-transaction.ts
|
|
1256
|
-
function getCompiledTransaction(transaction) {
|
|
1257
|
-
const compiledMessage = compileMessage(transaction);
|
|
1258
|
-
let signatures;
|
|
1259
|
-
if ("signatures" in transaction) {
|
|
1260
|
-
signatures = [];
|
|
1261
|
-
for (let ii = 0; ii < compiledMessage.header.numSignerAccounts; ii++) {
|
|
1262
|
-
signatures[ii] = transaction.signatures[compiledMessage.staticAccounts[ii]] ?? new Uint8Array(Array(64).fill(0));
|
|
1263
|
-
}
|
|
1264
|
-
} else {
|
|
1265
|
-
signatures = Array(compiledMessage.header.numSignerAccounts).fill(new Uint8Array(Array(64).fill(0)));
|
|
1266
|
-
}
|
|
1267
|
-
return {
|
|
1268
|
-
compiledMessage,
|
|
1269
|
-
signatures
|
|
1687
|
+
serialize
|
|
1270
1688
|
};
|
|
1271
1689
|
}
|
|
1272
1690
|
|
|
@@ -1276,7 +1694,7 @@ this.globalThis.solanaWeb3 = (function (exports) {
|
|
|
1276
1694
|
fixedSize: null,
|
|
1277
1695
|
maxSize: null
|
|
1278
1696
|
};
|
|
1279
|
-
function
|
|
1697
|
+
function serialize2(transaction) {
|
|
1280
1698
|
const compiledTransaction = getCompiledTransaction(transaction);
|
|
1281
1699
|
return struct([
|
|
1282
1700
|
[
|
|
@@ -1293,10 +1711,93 @@ this.globalThis.solanaWeb3 = (function (exports) {
|
|
|
1293
1711
|
return {
|
|
1294
1712
|
...BASE_CONFIG3,
|
|
1295
1713
|
deserialize: getUnimplementedDecoder("CompiledMessage"),
|
|
1296
|
-
serialize:
|
|
1714
|
+
serialize: serialize2
|
|
1297
1715
|
};
|
|
1298
1716
|
}
|
|
1299
1717
|
|
|
1718
|
+
// ../keys/dist/index.browser.js
|
|
1719
|
+
async function signBytes(key, data) {
|
|
1720
|
+
await assertSigningCapabilityIsAvailable();
|
|
1721
|
+
const signedData = await crypto.subtle.sign("Ed25519", key, data);
|
|
1722
|
+
return new Uint8Array(signedData);
|
|
1723
|
+
}
|
|
1724
|
+
|
|
1725
|
+
// src/signatures.ts
|
|
1726
|
+
function assertIsTransactionSignature(putativeTransactionSignature) {
|
|
1727
|
+
try {
|
|
1728
|
+
if (
|
|
1729
|
+
// Lowest value (64 bytes of zeroes)
|
|
1730
|
+
putativeTransactionSignature.length < 64 || // Highest value (64 bytes of 255)
|
|
1731
|
+
putativeTransactionSignature.length > 88
|
|
1732
|
+
) {
|
|
1733
|
+
throw new Error("Expected input string to decode to a byte array of length 64.");
|
|
1734
|
+
}
|
|
1735
|
+
const bytes2 = base58.serialize(putativeTransactionSignature);
|
|
1736
|
+
const numBytes = bytes2.byteLength;
|
|
1737
|
+
if (numBytes !== 64) {
|
|
1738
|
+
throw new Error(`Expected input string to decode to a byte array of length 64. Actual length: ${numBytes}`);
|
|
1739
|
+
}
|
|
1740
|
+
} catch (e2) {
|
|
1741
|
+
throw new Error(`\`${putativeTransactionSignature}\` is not a transaction signature`, {
|
|
1742
|
+
cause: e2
|
|
1743
|
+
});
|
|
1744
|
+
}
|
|
1745
|
+
}
|
|
1746
|
+
function isTransactionSignature(putativeTransactionSignature) {
|
|
1747
|
+
if (
|
|
1748
|
+
// Lowest value (64 bytes of zeroes)
|
|
1749
|
+
putativeTransactionSignature.length < 64 || // Highest value (64 bytes of 255)
|
|
1750
|
+
putativeTransactionSignature.length > 88
|
|
1751
|
+
) {
|
|
1752
|
+
return false;
|
|
1753
|
+
}
|
|
1754
|
+
const bytes2 = base58.serialize(putativeTransactionSignature);
|
|
1755
|
+
const numBytes = bytes2.byteLength;
|
|
1756
|
+
if (numBytes !== 64) {
|
|
1757
|
+
return false;
|
|
1758
|
+
}
|
|
1759
|
+
return true;
|
|
1760
|
+
}
|
|
1761
|
+
async function getCompiledMessageSignature(message, secretKey) {
|
|
1762
|
+
const wireMessageBytes = getCompiledMessageEncoder().serialize(message);
|
|
1763
|
+
const signature = await signBytes(secretKey, wireMessageBytes);
|
|
1764
|
+
return signature;
|
|
1765
|
+
}
|
|
1766
|
+
function getSignatureFromTransaction(transaction) {
|
|
1767
|
+
const signature = transaction.signatures[transaction.feePayer];
|
|
1768
|
+
if (!signature) {
|
|
1769
|
+
throw new Error(
|
|
1770
|
+
"Could not determine this transaction's signature. Make sure that the transaction has been signed by its fee payer."
|
|
1771
|
+
);
|
|
1772
|
+
}
|
|
1773
|
+
return signature;
|
|
1774
|
+
}
|
|
1775
|
+
async function signTransaction(keyPairs, transaction) {
|
|
1776
|
+
const compiledMessage = compileMessage(transaction);
|
|
1777
|
+
const nextSignatures = "signatures" in transaction ? { ...transaction.signatures } : {};
|
|
1778
|
+
const publicKeySignaturePairs = await Promise.all(
|
|
1779
|
+
keyPairs.map(
|
|
1780
|
+
(keyPair) => Promise.all([
|
|
1781
|
+
getAddressFromPublicKey(keyPair.publicKey),
|
|
1782
|
+
getCompiledMessageSignature(compiledMessage, keyPair.privateKey)
|
|
1783
|
+
])
|
|
1784
|
+
)
|
|
1785
|
+
);
|
|
1786
|
+
for (const [signerPublicKey, signature] of publicKeySignaturePairs) {
|
|
1787
|
+
nextSignatures[signerPublicKey] = signature;
|
|
1788
|
+
}
|
|
1789
|
+
const out = {
|
|
1790
|
+
...transaction,
|
|
1791
|
+
signatures: nextSignatures
|
|
1792
|
+
};
|
|
1793
|
+
Object.freeze(out);
|
|
1794
|
+
return out;
|
|
1795
|
+
}
|
|
1796
|
+
function transactionSignature(putativeTransactionSignature) {
|
|
1797
|
+
assertIsTransactionSignature(putativeTransactionSignature);
|
|
1798
|
+
return putativeTransactionSignature;
|
|
1799
|
+
}
|
|
1800
|
+
|
|
1300
1801
|
// src/wire-transaction.ts
|
|
1301
1802
|
function getBase64EncodedWireTransaction(transaction) {
|
|
1302
1803
|
const wireTransactionBytes = getTransactionEncoder().serialize(transaction);
|
|
@@ -1308,13 +1809,18 @@ this.globalThis.solanaWeb3 = (function (exports) {
|
|
|
1308
1809
|
exports.appendTransactionInstruction = appendTransactionInstruction;
|
|
1309
1810
|
exports.assertIsBlockhash = assertIsBlockhash;
|
|
1310
1811
|
exports.assertIsDurableNonceTransaction = assertIsDurableNonceTransaction;
|
|
1812
|
+
exports.assertIsTransactionSignature = assertIsTransactionSignature;
|
|
1311
1813
|
exports.createTransaction = createTransaction;
|
|
1312
1814
|
exports.getBase64EncodedWireTransaction = getBase64EncodedWireTransaction;
|
|
1815
|
+
exports.getSignatureFromTransaction = getSignatureFromTransaction;
|
|
1816
|
+
exports.getTransactionEncoder = getTransactionEncoder;
|
|
1817
|
+
exports.isTransactionSignature = isTransactionSignature;
|
|
1313
1818
|
exports.prependTransactionInstruction = prependTransactionInstruction;
|
|
1314
1819
|
exports.setTransactionFeePayer = setTransactionFeePayer;
|
|
1315
1820
|
exports.setTransactionLifetimeUsingBlockhash = setTransactionLifetimeUsingBlockhash;
|
|
1316
1821
|
exports.setTransactionLifetimeUsingDurableNonce = setTransactionLifetimeUsingDurableNonce;
|
|
1317
1822
|
exports.signTransaction = signTransaction;
|
|
1823
|
+
exports.transactionSignature = transactionSignature;
|
|
1318
1824
|
|
|
1319
1825
|
return exports;
|
|
1320
1826
|
|