@tonconnect/sdk 0.0.21 → 0.0.23
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/lib/errors/dapp/dapp-metadata.error.js +6 -14
- package/lib/errors/index.js +18 -5
- package/lib/errors/protocol/events/connect/user-rejects.error.js +6 -14
- package/lib/errors/protocol/events/index.js +15 -2
- package/lib/errors/protocol/index.js +16 -3
- package/lib/errors/protocol/responses/bad-request.error.js +6 -14
- package/lib/errors/protocol/responses/unknown-app.error.js +6 -14
- package/lib/errors/storage/localstorage-not-found.error.js +6 -14
- package/lib/errors/ton-connect.error.js +5 -13
- package/lib/errors/unknown.error.js +6 -14
- package/lib/errors/wallet/wallet-already-connected.error.js +6 -14
- package/lib/errors/wallet/wallet-not-connected.error.js +6 -14
- package/lib/errors/wallet/wallet-not-injected.error.js +6 -14
- package/lib/errors/wallets-manager/fetch-wallets.error.js +6 -14
- package/lib/index.js +17 -4
- package/lib/models/index.js +16 -3
- package/lib/models/methods/index.js +16 -3
- package/lib/parsers/connect-errors-parser.js +14 -18
- package/lib/parsers/rpc-parser.js +4 -7
- package/lib/parsers/send-transaction-parser.js +19 -26
- package/lib/provider/bridge/bridge-gateway.js +71 -79
- package/lib/provider/bridge/bridge-provider.js +118 -138
- package/lib/provider/injected/injected-provider.js +95 -90
- package/lib/storage/bridge-connection-storage.js +86 -112
- package/lib/storage/default-storage.d.ts +1 -0
- package/lib/storage/default-storage.js +28 -22
- package/lib/storage/http-bridge-gateway-storage.js +28 -32
- package/lib/ton-connect.js +123 -165
- package/lib/utils/options.js +5 -5
- package/lib/utils/web-api.d.ts +3 -0
- package/lib/utils/web-api.js +36 -13
- package/lib/wallets-list-manager.js +59 -73
- package/package.json +4 -2
|
@@ -1,74 +1,61 @@
|
|
|
1
1
|
"use strict";
|
|
2
|
+
var __awaiter = (this && this.__awaiter) || function (thisArg, _arguments, P, generator) {
|
|
3
|
+
function adopt(value) { return value instanceof P ? value : new P(function (resolve) { resolve(value); }); }
|
|
4
|
+
return new (P || (P = Promise))(function (resolve, reject) {
|
|
5
|
+
function fulfilled(value) { try { step(generator.next(value)); } catch (e) { reject(e); } }
|
|
6
|
+
function rejected(value) { try { step(generator["throw"](value)); } catch (e) { reject(e); } }
|
|
7
|
+
function step(result) { result.done ? resolve(result.value) : adopt(result.value).then(fulfilled, rejected); }
|
|
8
|
+
step((generator = generator.apply(thisArg, _arguments || [])).next());
|
|
9
|
+
});
|
|
10
|
+
};
|
|
2
11
|
Object.defineProperty(exports, "__esModule", { value: true });
|
|
3
12
|
exports.WalletsListManager = void 0;
|
|
4
|
-
|
|
5
|
-
|
|
6
|
-
|
|
7
|
-
|
|
8
|
-
|
|
9
|
-
function WalletsListManager() {
|
|
13
|
+
const fetch_wallets_error_1 = require("./errors/wallets-manager/fetch-wallets.error");
|
|
14
|
+
const wallet_info_1 = require("./models/wallet/wallet-info");
|
|
15
|
+
const injected_provider_1 = require("./provider/injected/injected-provider");
|
|
16
|
+
class WalletsListManager {
|
|
17
|
+
constructor() {
|
|
10
18
|
this.walletsListCache = null;
|
|
11
19
|
this.walletsListSource = 'https://raw.githubusercontent.com/ton-connect/wallets-list/main/wallets.json';
|
|
12
20
|
}
|
|
13
|
-
|
|
14
|
-
return
|
|
15
|
-
|
|
16
|
-
|
|
17
|
-
|
|
18
|
-
|
|
19
|
-
|
|
20
|
-
}
|
|
21
|
-
return [2 /*return*/, this.walletsListCache];
|
|
22
|
-
});
|
|
21
|
+
getWallets() {
|
|
22
|
+
return __awaiter(this, void 0, void 0, function* () {
|
|
23
|
+
if (!this.walletsListCache) {
|
|
24
|
+
this.walletsListCache = this.fetchWalletsList();
|
|
25
|
+
this.walletsListCache.catch(() => (this.walletsListCache = null));
|
|
26
|
+
}
|
|
27
|
+
return this.walletsListCache;
|
|
23
28
|
});
|
|
24
|
-
}
|
|
25
|
-
|
|
26
|
-
return
|
|
27
|
-
|
|
28
|
-
|
|
29
|
-
|
|
30
|
-
|
|
31
|
-
|
|
32
|
-
|
|
33
|
-
injectedWallets = walletsList.filter(wallet_info_1.isWalletInfoInjected);
|
|
34
|
-
if (injectedWallets.length !== 1) {
|
|
35
|
-
return [2 /*return*/, null];
|
|
36
|
-
}
|
|
37
|
-
return [2 /*return*/, injectedWallets[0].embedded ? injectedWallets[0] : null];
|
|
38
|
-
}
|
|
39
|
-
});
|
|
29
|
+
}
|
|
30
|
+
getEmbeddedWallet() {
|
|
31
|
+
return __awaiter(this, void 0, void 0, function* () {
|
|
32
|
+
const walletsList = yield this.getWallets();
|
|
33
|
+
const injectedWallets = walletsList.filter(wallet_info_1.isWalletInfoInjected);
|
|
34
|
+
if (injectedWallets.length !== 1) {
|
|
35
|
+
return null;
|
|
36
|
+
}
|
|
37
|
+
return injectedWallets[0].embedded ? injectedWallets[0] : null;
|
|
40
38
|
});
|
|
41
|
-
}
|
|
42
|
-
|
|
43
|
-
return
|
|
44
|
-
|
|
45
|
-
|
|
46
|
-
|
|
47
|
-
|
|
48
|
-
|
|
49
|
-
|
|
50
|
-
return [4 /*yield*/, fetch(this.walletsListSource)];
|
|
51
|
-
case 1:
|
|
52
|
-
walletsResponse = _a.sent();
|
|
53
|
-
return [4 /*yield*/, walletsResponse.json()];
|
|
54
|
-
case 2:
|
|
55
|
-
walletsList = _a.sent();
|
|
56
|
-
if (!Array.isArray(walletsList) ||
|
|
57
|
-
!walletsList.every(function (wallet) { return _this.isCorrectWalletConfigDTO(wallet); })) {
|
|
58
|
-
throw new fetch_wallets_error_1.FetchWalletsError('Wrong wallets list format');
|
|
59
|
-
}
|
|
60
|
-
return [2 /*return*/, this.walletConfigDTOListToWalletConfigList(walletsList)];
|
|
61
|
-
case 3:
|
|
62
|
-
e_1 = _a.sent();
|
|
63
|
-
throw new fetch_wallets_error_1.FetchWalletsError(e_1);
|
|
64
|
-
case 4: return [2 /*return*/];
|
|
39
|
+
}
|
|
40
|
+
fetchWalletsList() {
|
|
41
|
+
return __awaiter(this, void 0, void 0, function* () {
|
|
42
|
+
try {
|
|
43
|
+
const walletsResponse = yield fetch(this.walletsListSource);
|
|
44
|
+
const walletsList = yield walletsResponse.json();
|
|
45
|
+
if (!Array.isArray(walletsList) ||
|
|
46
|
+
!walletsList.every(wallet => this.isCorrectWalletConfigDTO(wallet))) {
|
|
47
|
+
throw new fetch_wallets_error_1.FetchWalletsError('Wrong wallets list format');
|
|
65
48
|
}
|
|
66
|
-
|
|
49
|
+
return this.walletConfigDTOListToWalletConfigList(walletsList);
|
|
50
|
+
}
|
|
51
|
+
catch (e) {
|
|
52
|
+
throw new fetch_wallets_error_1.FetchWalletsError(e);
|
|
53
|
+
}
|
|
67
54
|
});
|
|
68
|
-
}
|
|
69
|
-
|
|
70
|
-
return walletConfigDTO.map(
|
|
71
|
-
|
|
55
|
+
}
|
|
56
|
+
walletConfigDTOListToWalletConfigList(walletConfigDTO) {
|
|
57
|
+
return walletConfigDTO.map(walletConfigDTO => {
|
|
58
|
+
const walletConfig = {
|
|
72
59
|
name: walletConfigDTO.name,
|
|
73
60
|
imageUrl: walletConfigDTO.image,
|
|
74
61
|
aboutUrl: walletConfigDTO.about_url,
|
|
@@ -79,7 +66,7 @@ var WalletsListManager = /** @class */ (function () {
|
|
|
79
66
|
walletConfig.universalLink = walletConfigDTO.universal_url;
|
|
80
67
|
}
|
|
81
68
|
if ('js_bridge_key' in walletConfigDTO) {
|
|
82
|
-
|
|
69
|
+
const jsBridgeKey = walletConfigDTO.js_bridge_key;
|
|
83
70
|
walletConfig.jsBridgeKey = jsBridgeKey;
|
|
84
71
|
walletConfig.injected =
|
|
85
72
|
injected_provider_1.InjectedProvider.isWalletInjected(jsBridgeKey);
|
|
@@ -88,22 +75,21 @@ var WalletsListManager = /** @class */ (function () {
|
|
|
88
75
|
}
|
|
89
76
|
return walletConfig;
|
|
90
77
|
});
|
|
91
|
-
}
|
|
92
|
-
|
|
78
|
+
}
|
|
79
|
+
isCorrectWalletConfigDTO(value) {
|
|
93
80
|
if (!value || !(typeof value === 'object')) {
|
|
94
81
|
return false;
|
|
95
82
|
}
|
|
96
|
-
|
|
97
|
-
|
|
98
|
-
|
|
83
|
+
const containsName = 'name' in value;
|
|
84
|
+
const containsImage = 'image' in value;
|
|
85
|
+
const containsAbout = 'about_url' in value;
|
|
99
86
|
if (!containsName || !containsImage || !containsAbout) {
|
|
100
87
|
return false;
|
|
101
88
|
}
|
|
102
|
-
|
|
103
|
-
|
|
104
|
-
|
|
89
|
+
const containsUniversalUrl = 'universal_url' in value;
|
|
90
|
+
const containsHttpBridge = 'bridge_url' in value;
|
|
91
|
+
const containsJsBridge = 'js_bridge_key' in value;
|
|
105
92
|
return (containsHttpBridge && containsUniversalUrl) || containsJsBridge;
|
|
106
|
-
}
|
|
107
|
-
|
|
108
|
-
}());
|
|
93
|
+
}
|
|
94
|
+
}
|
|
109
95
|
exports.WalletsListManager = WalletsListManager;
|
package/package.json
CHANGED
|
@@ -1,6 +1,6 @@
|
|
|
1
1
|
{
|
|
2
2
|
"name": "@tonconnect/sdk",
|
|
3
|
-
"version": "0.0.
|
|
3
|
+
"version": "0.0.23",
|
|
4
4
|
"scripts": {
|
|
5
5
|
"build": "npx rimraf lib && ttsc",
|
|
6
6
|
"build:production": "npx rimraf lib && ttsc --sourceMap false"
|
|
@@ -26,7 +26,9 @@
|
|
|
26
26
|
"dependencies": {
|
|
27
27
|
"deepmerge": "^4.2.2",
|
|
28
28
|
"tweetnacl": "^1.0.3",
|
|
29
|
-
"
|
|
29
|
+
"eventsource": "^2.0.2",
|
|
30
|
+
"node-fetch": "^2.6.7",
|
|
31
|
+
"@tonconnect/protocol": "^0.0.11"
|
|
30
32
|
},
|
|
31
33
|
"files": [
|
|
32
34
|
"lib"
|