@phantom/parsers 1.0.0-beta.1 → 1.0.0-beta.2
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/dist/index.d.ts +9 -1
- package/dist/index.js +36 -0
- package/dist/index.mjs +35 -0
- package/package.json +5 -5
package/dist/index.d.ts
CHANGED
|
@@ -24,6 +24,14 @@ declare function parseSignMessageResponse(base64Response: string, networkId: Net
|
|
|
24
24
|
* Parse a transaction response from base64 rawTransaction to extract hash
|
|
25
25
|
*/
|
|
26
26
|
declare function parseTransactionResponse(base64RawTransaction: string, networkId: NetworkId, hash?: string): ParsedTransactionResult;
|
|
27
|
+
/**
|
|
28
|
+
* Parse Solana transaction signature from a signed transaction
|
|
29
|
+
* This function extracts the signature from a base64url encoded signed transaction
|
|
30
|
+
*/
|
|
31
|
+
declare function parseSolanaTransactionSignature(base64RawTransaction: string): {
|
|
32
|
+
signature: string;
|
|
33
|
+
fallback: boolean;
|
|
34
|
+
};
|
|
27
35
|
|
|
28
36
|
interface ParsedTransaction {
|
|
29
37
|
base64url: string;
|
|
@@ -43,4 +51,4 @@ declare function parseMessage(message: string): ParsedMessage;
|
|
|
43
51
|
declare function parseTransactionToBase64Url(transaction: any, networkId: NetworkId): Promise<ParsedTransaction>;
|
|
44
52
|
declare function parseSolanaKitTransactionToSolanaWeb3js(transaction: Transaction): any;
|
|
45
53
|
|
|
46
|
-
export { ParsedMessage, ParsedSignatureResult, ParsedTransaction, ParsedTransactionResult, parseMessage, parseSignMessageResponse, parseSolanaKitTransactionToSolanaWeb3js, parseTransactionResponse, parseTransactionToBase64Url };
|
|
54
|
+
export { ParsedMessage, ParsedSignatureResult, ParsedTransaction, ParsedTransactionResult, parseMessage, parseSignMessageResponse, parseSolanaKitTransactionToSolanaWeb3js, parseSolanaTransactionSignature, parseTransactionResponse, parseTransactionToBase64Url };
|
package/dist/index.js
CHANGED
|
@@ -33,6 +33,7 @@ __export(src_exports, {
|
|
|
33
33
|
parseMessage: () => parseMessage,
|
|
34
34
|
parseSignMessageResponse: () => parseSignMessageResponse,
|
|
35
35
|
parseSolanaKitTransactionToSolanaWeb3js: () => parseSolanaKitTransactionToSolanaWeb3js,
|
|
36
|
+
parseSolanaTransactionSignature: () => parseSolanaTransactionSignature,
|
|
36
37
|
parseTransactionResponse: () => parseTransactionResponse,
|
|
37
38
|
parseTransactionToBase64Url: () => parseTransactionToBase64Url
|
|
38
39
|
});
|
|
@@ -46,6 +47,7 @@ var import_constants = require("@phantom/constants");
|
|
|
46
47
|
var import_base64url = require("@phantom/base64url");
|
|
47
48
|
var import_buffer = require("buffer");
|
|
48
49
|
var import_bs58 = __toESM(require("bs58"));
|
|
50
|
+
var import_web3 = require("@solana/web3.js");
|
|
49
51
|
function parseSignMessageResponse(base64Response, networkId) {
|
|
50
52
|
const networkPrefix = networkId.split(":")[0].toLowerCase();
|
|
51
53
|
switch (networkPrefix) {
|
|
@@ -141,6 +143,39 @@ function parseBitcoinSignatureResponse(base64Response) {
|
|
|
141
143
|
};
|
|
142
144
|
}
|
|
143
145
|
}
|
|
146
|
+
function parseSolanaTransactionSignature(base64RawTransaction) {
|
|
147
|
+
try {
|
|
148
|
+
const transactionBytes = import_buffer.Buffer.from(base64RawTransaction, "base64url");
|
|
149
|
+
const transaction = import_web3.Transaction.from(transactionBytes);
|
|
150
|
+
let signature = null;
|
|
151
|
+
if (transaction.signature) {
|
|
152
|
+
signature = import_bs58.default.encode(transaction.signature);
|
|
153
|
+
} else if (transaction.signatures && transaction.signatures.length > 0 && transaction.signatures[0].signature) {
|
|
154
|
+
signature = import_bs58.default.encode(transaction.signatures[0].signature);
|
|
155
|
+
}
|
|
156
|
+
if (signature) {
|
|
157
|
+
return {
|
|
158
|
+
signature,
|
|
159
|
+
fallback: false
|
|
160
|
+
};
|
|
161
|
+
}
|
|
162
|
+
} catch (error) {
|
|
163
|
+
}
|
|
164
|
+
try {
|
|
165
|
+
const transactionBytes = import_buffer.Buffer.from(base64RawTransaction, "base64url");
|
|
166
|
+
const signatureBytes = transactionBytes.slice(0, 64);
|
|
167
|
+
const signature = import_bs58.default.encode(signatureBytes);
|
|
168
|
+
return {
|
|
169
|
+
signature,
|
|
170
|
+
fallback: true
|
|
171
|
+
};
|
|
172
|
+
} catch (error) {
|
|
173
|
+
return {
|
|
174
|
+
signature: base64RawTransaction,
|
|
175
|
+
fallback: true
|
|
176
|
+
};
|
|
177
|
+
}
|
|
178
|
+
}
|
|
144
179
|
|
|
145
180
|
// src/index.ts
|
|
146
181
|
function parseMessage(message) {
|
|
@@ -300,6 +335,7 @@ function parseSolanaKitTransactionToSolanaWeb3js(transaction) {
|
|
|
300
335
|
parseMessage,
|
|
301
336
|
parseSignMessageResponse,
|
|
302
337
|
parseSolanaKitTransactionToSolanaWeb3js,
|
|
338
|
+
parseSolanaTransactionSignature,
|
|
303
339
|
parseTransactionResponse,
|
|
304
340
|
parseTransactionToBase64Url
|
|
305
341
|
});
|
package/dist/index.mjs
CHANGED
|
@@ -8,6 +8,7 @@ import { getExplorerUrl } from "@phantom/constants";
|
|
|
8
8
|
import { base64urlDecode } from "@phantom/base64url";
|
|
9
9
|
import { Buffer } from "buffer";
|
|
10
10
|
import bs58 from "bs58";
|
|
11
|
+
import { Transaction } from "@solana/web3.js";
|
|
11
12
|
function parseSignMessageResponse(base64Response, networkId) {
|
|
12
13
|
const networkPrefix = networkId.split(":")[0].toLowerCase();
|
|
13
14
|
switch (networkPrefix) {
|
|
@@ -103,6 +104,39 @@ function parseBitcoinSignatureResponse(base64Response) {
|
|
|
103
104
|
};
|
|
104
105
|
}
|
|
105
106
|
}
|
|
107
|
+
function parseSolanaTransactionSignature(base64RawTransaction) {
|
|
108
|
+
try {
|
|
109
|
+
const transactionBytes = Buffer.from(base64RawTransaction, "base64url");
|
|
110
|
+
const transaction = Transaction.from(transactionBytes);
|
|
111
|
+
let signature = null;
|
|
112
|
+
if (transaction.signature) {
|
|
113
|
+
signature = bs58.encode(transaction.signature);
|
|
114
|
+
} else if (transaction.signatures && transaction.signatures.length > 0 && transaction.signatures[0].signature) {
|
|
115
|
+
signature = bs58.encode(transaction.signatures[0].signature);
|
|
116
|
+
}
|
|
117
|
+
if (signature) {
|
|
118
|
+
return {
|
|
119
|
+
signature,
|
|
120
|
+
fallback: false
|
|
121
|
+
};
|
|
122
|
+
}
|
|
123
|
+
} catch (error) {
|
|
124
|
+
}
|
|
125
|
+
try {
|
|
126
|
+
const transactionBytes = Buffer.from(base64RawTransaction, "base64url");
|
|
127
|
+
const signatureBytes = transactionBytes.slice(0, 64);
|
|
128
|
+
const signature = bs58.encode(signatureBytes);
|
|
129
|
+
return {
|
|
130
|
+
signature,
|
|
131
|
+
fallback: true
|
|
132
|
+
};
|
|
133
|
+
} catch (error) {
|
|
134
|
+
return {
|
|
135
|
+
signature: base64RawTransaction,
|
|
136
|
+
fallback: true
|
|
137
|
+
};
|
|
138
|
+
}
|
|
139
|
+
}
|
|
106
140
|
|
|
107
141
|
// src/index.ts
|
|
108
142
|
function parseMessage(message) {
|
|
@@ -261,6 +295,7 @@ export {
|
|
|
261
295
|
parseMessage,
|
|
262
296
|
parseSignMessageResponse,
|
|
263
297
|
parseSolanaKitTransactionToSolanaWeb3js,
|
|
298
|
+
parseSolanaTransactionSignature,
|
|
264
299
|
parseTransactionResponse,
|
|
265
300
|
parseTransactionToBase64Url
|
|
266
301
|
};
|
package/package.json
CHANGED
|
@@ -1,6 +1,6 @@
|
|
|
1
1
|
{
|
|
2
2
|
"name": "@phantom/parsers",
|
|
3
|
-
"version": "1.0.0-beta.
|
|
3
|
+
"version": "1.0.0-beta.2",
|
|
4
4
|
"description": "Transaction and message parsers for Phantom Wallet SDK",
|
|
5
5
|
"main": "dist/index.js",
|
|
6
6
|
"module": "dist/index.mjs",
|
|
@@ -29,21 +29,21 @@
|
|
|
29
29
|
"prettier": "prettier --write \"src/**/*.{ts}\""
|
|
30
30
|
},
|
|
31
31
|
"dependencies": {
|
|
32
|
-
"@phantom/base64url": "^1.0.0-beta.
|
|
33
|
-
"@phantom/constants": "^1.0.0-beta.
|
|
34
|
-
"@solana/kit": "^2.1.1",
|
|
32
|
+
"@phantom/base64url": "^1.0.0-beta.2",
|
|
33
|
+
"@phantom/constants": "^1.0.0-beta.2",
|
|
35
34
|
"@solana/transactions": "^2.0.0",
|
|
35
|
+
"@solana/web3.js": "^1.95.0",
|
|
36
36
|
"bs58": "^6.0.0",
|
|
37
37
|
"buffer": "^6.0.3"
|
|
38
38
|
},
|
|
39
39
|
"optionalDependencies": {
|
|
40
40
|
"@mysten/sui.js": "^0.50.0",
|
|
41
|
-
"@solana/web3.js": "^1.95.0",
|
|
42
41
|
"bitcoinjs-lib": "^6.1.0",
|
|
43
42
|
"ethers": "^6.0.0",
|
|
44
43
|
"viem": "^2.0.0"
|
|
45
44
|
},
|
|
46
45
|
"devDependencies": {
|
|
46
|
+
"@solana/kit": "^2.1.1",
|
|
47
47
|
"@types/jest": "^29.5.12",
|
|
48
48
|
"@types/node": "^20.11.0",
|
|
49
49
|
"dotenv": "^16.4.5",
|