@ton/appkit 1.0.0-alpha.0 → 1.0.0-alpha.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/.turbo/turbo-build.log +4 -16
- package/CHANGELOG.md +23 -0
- package/README.md +8 -7
- package/dist/cjs/actions/connectors/watch-connector-by-id.d.ts.map +1 -1
- package/dist/cjs/actions/connectors/watch-connector-by-id.js +8 -3
- package/dist/cjs/actions/connectors/watch-connectors.d.ts.map +1 -1
- package/dist/cjs/actions/connectors/watch-connectors.js +8 -3
- package/dist/cjs/actions/providers/register-provider.d.ts +2 -1
- package/dist/cjs/actions/providers/register-provider.d.ts.map +1 -1
- package/dist/cjs/connectors/tonconnect/connectors/ton-connect-connector.d.ts +1 -2
- package/dist/cjs/connectors/tonconnect/connectors/ton-connect-connector.d.ts.map +1 -1
- package/dist/cjs/connectors/tonconnect/connectors/ton-connect-connector.js +14 -16
- package/dist/cjs/core/app-kit/constants/events.d.ts +3 -2
- package/dist/cjs/core/app-kit/constants/events.d.ts.map +1 -1
- package/dist/cjs/core/app-kit/constants/events.js +3 -2
- package/dist/cjs/core/app-kit/index.d.ts +1 -1
- package/dist/cjs/core/app-kit/index.d.ts.map +1 -1
- package/dist/cjs/core/app-kit/services/app-kit.d.ts +2 -1
- package/dist/cjs/core/app-kit/services/app-kit.d.ts.map +1 -1
- package/dist/cjs/core/app-kit/services/app-kit.js +8 -2
- package/dist/cjs/core/app-kit/types/config.d.ts +2 -1
- package/dist/cjs/core/app-kit/types/config.d.ts.map +1 -1
- package/dist/cjs/core/app-kit/types/events.d.ts +11 -6
- package/dist/cjs/core/app-kit/types/events.d.ts.map +1 -1
- package/dist/cjs/swap/index.d.ts +1 -1
- package/dist/cjs/swap/index.d.ts.map +1 -1
- package/dist/cjs/swap/index.js +3 -1
- package/dist/cjs/types/connector.d.ts +0 -5
- package/dist/cjs/types/connector.d.ts.map +1 -1
- package/dist/cjs/types/provider.d.ts +3 -3
- package/dist/cjs/types/provider.d.ts.map +1 -1
- package/dist/cjs/utils/index.d.ts +1 -1
- package/dist/cjs/utils/index.d.ts.map +1 -1
- package/dist/cjs/utils/index.js +1 -1
- package/dist/{esm/utils/promise/cancel-promise.test.d.ts → cjs/utils/promise/with-timeout.d.ts} +2 -2
- package/dist/cjs/utils/promise/with-timeout.d.ts.map +1 -0
- package/dist/cjs/utils/promise/with-timeout.js +13 -0
- package/dist/esm/actions/connectors/watch-connector-by-id.d.ts.map +1 -1
- package/dist/esm/actions/connectors/watch-connector-by-id.js +8 -3
- package/dist/esm/actions/connectors/watch-connectors.d.ts.map +1 -1
- package/dist/esm/actions/connectors/watch-connectors.js +8 -3
- package/dist/esm/actions/providers/register-provider.d.ts +2 -1
- package/dist/esm/actions/providers/register-provider.d.ts.map +1 -1
- package/dist/esm/connectors/tonconnect/connectors/ton-connect-connector.d.ts +1 -2
- package/dist/esm/connectors/tonconnect/connectors/ton-connect-connector.d.ts.map +1 -1
- package/dist/esm/connectors/tonconnect/connectors/ton-connect-connector.js +14 -16
- package/dist/esm/core/app-kit/constants/events.d.ts +3 -2
- package/dist/esm/core/app-kit/constants/events.d.ts.map +1 -1
- package/dist/esm/core/app-kit/constants/events.js +3 -2
- package/dist/esm/core/app-kit/index.d.ts +1 -1
- package/dist/esm/core/app-kit/index.d.ts.map +1 -1
- package/dist/esm/core/app-kit/services/app-kit.d.ts +2 -1
- package/dist/esm/core/app-kit/services/app-kit.d.ts.map +1 -1
- package/dist/esm/core/app-kit/services/app-kit.js +8 -2
- package/dist/esm/core/app-kit/types/config.d.ts +2 -1
- package/dist/esm/core/app-kit/types/config.d.ts.map +1 -1
- package/dist/esm/core/app-kit/types/events.d.ts +11 -6
- package/dist/esm/core/app-kit/types/events.d.ts.map +1 -1
- package/dist/esm/swap/index.d.ts +1 -1
- package/dist/esm/swap/index.d.ts.map +1 -1
- package/dist/esm/swap/index.js +1 -1
- package/dist/esm/types/connector.d.ts +0 -5
- package/dist/esm/types/connector.d.ts.map +1 -1
- package/dist/esm/types/provider.d.ts +3 -3
- package/dist/esm/types/provider.d.ts.map +1 -1
- package/dist/esm/utils/index.d.ts +1 -1
- package/dist/esm/utils/index.d.ts.map +1 -1
- package/dist/esm/utils/index.js +1 -1
- package/dist/{cjs/utils/promise/cancel-promise.test.d.ts → esm/utils/promise/with-timeout.d.ts} +2 -2
- package/dist/esm/utils/promise/with-timeout.d.ts.map +1 -0
- package/dist/{cjs/utils/promise/cancel-promise.d.ts → esm/utils/promise/with-timeout.js} +2 -2
- package/docs/actions.md +7 -6
- package/docs/connectors.md +5 -25
- package/docs/staking.md +7 -6
- package/docs/swap.md +7 -6
- package/package.json +9 -8
- package/src/actions/connectors/watch-connector-by-id.ts +9 -3
- package/src/actions/connectors/watch-connectors.ts +9 -3
- package/src/actions/providers/register-provider.ts +2 -1
- package/src/connectors/tonconnect/connectors/ton-connect-connector.ts +20 -18
- package/src/core/app-kit/constants/events.ts +3 -2
- package/src/core/app-kit/index.ts +3 -2
- package/src/core/app-kit/services/app-kit.ts +11 -4
- package/src/core/app-kit/types/config.ts +2 -1
- package/src/core/app-kit/types/events.ts +12 -6
- package/src/swap/index.ts +1 -1
- package/src/types/connector.ts +0 -7
- package/src/types/provider.ts +3 -3
- package/src/utils/index.ts +1 -1
- package/{dist/esm/utils/promise/cancel-promise.d.ts → src/utils/promise/with-timeout.ts} +3 -2
- package/dist/cjs/utils/promise/cancel-promise.d.ts.map +0 -1
- package/dist/cjs/utils/promise/cancel-promise.js +0 -19
- package/dist/cjs/utils/promise/cancel-promise.test.d.ts.map +0 -1
- package/dist/cjs/utils/promise/cancel-promise.test.js +0 -25
- package/dist/esm/utils/promise/cancel-promise.d.ts.map +0 -1
- package/dist/esm/utils/promise/cancel-promise.js +0 -15
- package/dist/esm/utils/promise/cancel-promise.test.d.ts.map +0 -1
- package/dist/esm/utils/promise/cancel-promise.test.js +0 -23
- package/src/utils/promise/cancel-promise.test.ts +0 -28
- package/src/utils/promise/cancel-promise.ts +0 -16
|
@@ -11,14 +11,13 @@ import type { TonConnectUiCreateOptions } from '@tonconnect/ui';
|
|
|
11
11
|
|
|
12
12
|
import { TonConnectWalletAdapter } from '../adapters/ton-connect-wallet-adapter';
|
|
13
13
|
import { CONNECTOR_EVENTS, NETWORKS_EVENTS } from '../../../core/app-kit';
|
|
14
|
-
import type { Connector
|
|
14
|
+
import type { Connector } from '../../../types/connector';
|
|
15
15
|
import type { WalletInterface } from '../../../types/wallet';
|
|
16
16
|
import { TONCONNECT_DEFAULT_CONNECTOR_ID } from '../constants/id';
|
|
17
17
|
import { createConnector } from '../../../types/connector';
|
|
18
18
|
|
|
19
19
|
export interface TonConnectConnectorConfig {
|
|
20
20
|
id?: string;
|
|
21
|
-
metadata?: ConnectorMetadata;
|
|
22
21
|
tonConnectOptions?: TonConnectUiCreateOptions;
|
|
23
22
|
tonConnectUI?: TonConnectUI;
|
|
24
23
|
}
|
|
@@ -32,10 +31,16 @@ export const createTonConnectConnector = (config: TonConnectConnectorConfig) =>
|
|
|
32
31
|
return createConnector(({ eventEmitter, networkManager }): TonConnectConnector => {
|
|
33
32
|
let originalTonConnectUI: TonConnectUI | null = null;
|
|
34
33
|
let unsubscribeTonConnect: (() => void) | null = null;
|
|
34
|
+
let unsubscribeDefaultNetwork: (() => void) | null = null;
|
|
35
|
+
let destroyed = false;
|
|
35
36
|
|
|
36
37
|
const id = config.id ?? TONCONNECT_DEFAULT_CONNECTOR_ID;
|
|
37
38
|
|
|
38
|
-
|
|
39
|
+
const getTonConnectUI = (): TonConnectUI | null => {
|
|
40
|
+
if (destroyed) {
|
|
41
|
+
return null;
|
|
42
|
+
}
|
|
43
|
+
|
|
39
44
|
if (originalTonConnectUI) {
|
|
40
45
|
return originalTonConnectUI;
|
|
41
46
|
}
|
|
@@ -59,7 +64,7 @@ export const createTonConnectConnector = (config: TonConnectConnectorConfig) =>
|
|
|
59
64
|
}
|
|
60
65
|
|
|
61
66
|
return originalTonConnectUI;
|
|
62
|
-
}
|
|
67
|
+
};
|
|
63
68
|
|
|
64
69
|
function getConnectedWallets(): WalletInterface[] {
|
|
65
70
|
const ui = getTonConnectUI();
|
|
@@ -84,19 +89,17 @@ export const createTonConnectConnector = (config: TonConnectConnectorConfig) =>
|
|
|
84
89
|
return;
|
|
85
90
|
}
|
|
86
91
|
|
|
87
|
-
unsubscribeTonConnect = originalTonConnectUI.onStatusChange((
|
|
88
|
-
|
|
89
|
-
|
|
90
|
-
|
|
91
|
-
|
|
92
|
-
|
|
93
|
-
eventEmitter.emit(CONNECTOR_EVENTS.DISCONNECTED, { connectorId: id }, id);
|
|
94
|
-
}
|
|
92
|
+
unsubscribeTonConnect = originalTonConnectUI.onStatusChange(() => {
|
|
93
|
+
eventEmitter.emit(
|
|
94
|
+
CONNECTOR_EVENTS.WALLETS_UPDATED,
|
|
95
|
+
{ connectorId: id, wallets: getConnectedWallets() },
|
|
96
|
+
id,
|
|
97
|
+
);
|
|
95
98
|
});
|
|
96
99
|
|
|
97
100
|
// Set default network and subscribe to changes
|
|
98
101
|
originalTonConnectUI.setConnectionNetwork(networkManager.getDefaultNetwork()?.chainId);
|
|
99
|
-
eventEmitter.on(NETWORKS_EVENTS.DEFAULT_CHANGED, ({ payload }) => {
|
|
102
|
+
unsubscribeDefaultNetwork = eventEmitter.on(NETWORKS_EVENTS.DEFAULT_CHANGED, ({ payload }) => {
|
|
100
103
|
if (originalTonConnectUI) {
|
|
101
104
|
originalTonConnectUI.setConnectionNetwork(payload.network?.chainId);
|
|
102
105
|
}
|
|
@@ -106,11 +109,6 @@ export const createTonConnectConnector = (config: TonConnectConnectorConfig) =>
|
|
|
106
109
|
return {
|
|
107
110
|
id,
|
|
108
111
|
type: 'tonconnect',
|
|
109
|
-
metadata: {
|
|
110
|
-
name: 'TonConnect',
|
|
111
|
-
iconUrl: 'https://avatars.githubusercontent.com/u/113980577',
|
|
112
|
-
...config.metadata,
|
|
113
|
-
},
|
|
114
112
|
|
|
115
113
|
get tonConnectUI() {
|
|
116
114
|
return getTonConnectUI();
|
|
@@ -135,7 +133,11 @@ export const createTonConnectConnector = (config: TonConnectConnectorConfig) =>
|
|
|
135
133
|
},
|
|
136
134
|
|
|
137
135
|
destroy() {
|
|
136
|
+
destroyed = true;
|
|
138
137
|
unsubscribeTonConnect?.();
|
|
138
|
+
unsubscribeDefaultNetwork?.();
|
|
139
|
+
unsubscribeTonConnect = null;
|
|
140
|
+
unsubscribeDefaultNetwork = null;
|
|
139
141
|
originalTonConnectUI = null;
|
|
140
142
|
},
|
|
141
143
|
};
|
|
@@ -10,8 +10,9 @@
|
|
|
10
10
|
* Connector events
|
|
11
11
|
*/
|
|
12
12
|
export const CONNECTOR_EVENTS = {
|
|
13
|
-
|
|
14
|
-
|
|
13
|
+
ADDED: 'connector:added',
|
|
14
|
+
REMOVED: 'connector:removed',
|
|
15
|
+
WALLETS_UPDATED: 'connector:wallets-updated',
|
|
15
16
|
} as const;
|
|
16
17
|
|
|
17
18
|
/**
|
|
@@ -13,7 +13,8 @@ export type { AppKitConfig } from './types/config';
|
|
|
13
13
|
export type {
|
|
14
14
|
AppKitEmitter,
|
|
15
15
|
AppKitEvents,
|
|
16
|
-
|
|
17
|
-
|
|
16
|
+
ConnectorAddedPayload,
|
|
17
|
+
ConnectorRemovedPayload,
|
|
18
|
+
ConnectorWalletsUpdatedPayload,
|
|
18
19
|
DefaultNetworkChangedPayload,
|
|
19
20
|
} from './types/events';
|
|
@@ -7,7 +7,7 @@
|
|
|
7
7
|
*/
|
|
8
8
|
|
|
9
9
|
import { SwapManager, StreamingManager } from '@ton/walletkit';
|
|
10
|
-
import type { ProviderInput, SwapProviderInterface, StakingProviderInterface } from '@ton/walletkit';
|
|
10
|
+
import type { ProviderInput, SwapProviderInterface, StakingProviderInterface, StreamingProvider } from '@ton/walletkit';
|
|
11
11
|
|
|
12
12
|
import type { AppKitConfig } from '../types/config';
|
|
13
13
|
import { CONNECTOR_EVENTS, WALLETS_EVENTS } from '../constants/events';
|
|
@@ -21,6 +21,7 @@ import { AppKitNetworkManager } from '../../network';
|
|
|
21
21
|
import { Network } from '../../../types/network';
|
|
22
22
|
import type { AppKitCache } from '../../cache';
|
|
23
23
|
import { LruAppKitCache } from '../../cache';
|
|
24
|
+
import type { AppKitProvider } from '../../../types/provider';
|
|
24
25
|
|
|
25
26
|
/**
|
|
26
27
|
* Central hub for wallet management.
|
|
@@ -43,8 +44,7 @@ export class AppKit {
|
|
|
43
44
|
this.cache = config.cache ?? new LruAppKitCache();
|
|
44
45
|
|
|
45
46
|
this.emitter = new EventEmitter<AppKitEvents>();
|
|
46
|
-
this.emitter.on(CONNECTOR_EVENTS.
|
|
47
|
-
this.emitter.on(CONNECTOR_EVENTS.DISCONNECTED, this.updateWalletsFromConnectors.bind(this));
|
|
47
|
+
this.emitter.on(CONNECTOR_EVENTS.WALLETS_UPDATED, this.updateWalletsFromConnectors.bind(this));
|
|
48
48
|
|
|
49
49
|
// Use provided networks config or default to mainnet
|
|
50
50
|
const networks = config.networks ?? {
|
|
@@ -88,6 +88,8 @@ export class AppKit {
|
|
|
88
88
|
}
|
|
89
89
|
|
|
90
90
|
this.connectors.push(connector);
|
|
91
|
+
this.updateWalletsFromConnectors();
|
|
92
|
+
this.emitter.emit(CONNECTOR_EVENTS.ADDED, { connector }, 'appkit');
|
|
91
93
|
|
|
92
94
|
return () => {
|
|
93
95
|
this.removeConnector(connector);
|
|
@@ -104,13 +106,15 @@ export class AppKit {
|
|
|
104
106
|
if (oldConnector) {
|
|
105
107
|
oldConnector.destroy();
|
|
106
108
|
this.connectors.splice(this.connectors.indexOf(oldConnector), 1);
|
|
109
|
+
this.updateWalletsFromConnectors();
|
|
110
|
+
this.emitter.emit(CONNECTOR_EVENTS.REMOVED, { connector: oldConnector }, 'appkit');
|
|
107
111
|
}
|
|
108
112
|
}
|
|
109
113
|
|
|
110
114
|
/**
|
|
111
115
|
* Add a provider
|
|
112
116
|
*/
|
|
113
|
-
registerProvider(input: ProviderInput): void {
|
|
117
|
+
registerProvider(input: ProviderInput<AppKitProvider>): void {
|
|
114
118
|
const provider = typeof input === 'function' ? input(this.createFactoryContext()) : input;
|
|
115
119
|
switch (provider.type) {
|
|
116
120
|
case 'swap':
|
|
@@ -119,6 +123,9 @@ export class AppKit {
|
|
|
119
123
|
case 'staking':
|
|
120
124
|
this.stakingManager.registerProvider(provider as StakingProviderInterface);
|
|
121
125
|
break;
|
|
126
|
+
case 'streaming':
|
|
127
|
+
this.streamingManager.registerProvider(provider as StreamingProvider);
|
|
128
|
+
break;
|
|
122
129
|
default:
|
|
123
130
|
throw new Error('Unknown provider type');
|
|
124
131
|
}
|
|
@@ -11,6 +11,7 @@ import type { NetworkAdapters, ProviderInput } from '@ton/walletkit';
|
|
|
11
11
|
import type { AppKitCache } from '../../cache';
|
|
12
12
|
import type { ConnectorInput } from '../../../types/connector';
|
|
13
13
|
import type { Network } from '../../../types/network';
|
|
14
|
+
import type { AppKitProvider } from '../../../types/provider';
|
|
14
15
|
|
|
15
16
|
/**
|
|
16
17
|
* Configuration for AppKit
|
|
@@ -37,7 +38,7 @@ export interface AppKitConfig {
|
|
|
37
38
|
*/
|
|
38
39
|
defaultNetwork?: Network;
|
|
39
40
|
|
|
40
|
-
providers?: ProviderInput[];
|
|
41
|
+
providers?: ProviderInput<AppKitProvider>[];
|
|
41
42
|
|
|
42
43
|
/**
|
|
43
44
|
* Custom cache implementation.
|
|
@@ -6,19 +6,24 @@
|
|
|
6
6
|
*
|
|
7
7
|
*/
|
|
8
8
|
|
|
9
|
+
import type { Connector } from '../../../types/connector';
|
|
9
10
|
import type { Network } from '../../../types/network';
|
|
10
11
|
import type { CONNECTOR_EVENTS, WALLETS_EVENTS, NETWORKS_EVENTS } from '../constants/events';
|
|
11
12
|
import type { SharedKitEvents } from '../../emitter';
|
|
12
13
|
import type { EventEmitter } from '../../emitter';
|
|
13
14
|
import type { WalletInterface } from '../../../types/wallet';
|
|
14
15
|
|
|
15
|
-
export interface
|
|
16
|
-
|
|
17
|
-
connectorId: string;
|
|
16
|
+
export interface ConnectorAddedPayload {
|
|
17
|
+
connector: Connector;
|
|
18
18
|
}
|
|
19
19
|
|
|
20
|
-
export interface
|
|
20
|
+
export interface ConnectorRemovedPayload {
|
|
21
|
+
connector: Connector;
|
|
22
|
+
}
|
|
23
|
+
|
|
24
|
+
export interface ConnectorWalletsUpdatedPayload {
|
|
21
25
|
connectorId: string;
|
|
26
|
+
wallets: WalletInterface[];
|
|
22
27
|
}
|
|
23
28
|
|
|
24
29
|
export interface DefaultNetworkChangedPayload {
|
|
@@ -27,8 +32,9 @@ export interface DefaultNetworkChangedPayload {
|
|
|
27
32
|
|
|
28
33
|
export type AppKitEvents = {
|
|
29
34
|
// Connector events
|
|
30
|
-
[CONNECTOR_EVENTS.
|
|
31
|
-
[CONNECTOR_EVENTS.
|
|
35
|
+
[CONNECTOR_EVENTS.ADDED]: ConnectorAddedPayload;
|
|
36
|
+
[CONNECTOR_EVENTS.REMOVED]: ConnectorRemovedPayload;
|
|
37
|
+
[CONNECTOR_EVENTS.WALLETS_UPDATED]: ConnectorWalletsUpdatedPayload;
|
|
32
38
|
|
|
33
39
|
// Wallets events
|
|
34
40
|
[WALLETS_EVENTS.UPDATED]: { wallets: WalletInterface[] };
|
package/src/swap/index.ts
CHANGED
package/src/types/connector.ts
CHANGED
|
@@ -21,8 +21,6 @@ export interface Connector {
|
|
|
21
21
|
/** Protocol type (e.g. 'tonconnect') */
|
|
22
22
|
readonly type: string;
|
|
23
23
|
|
|
24
|
-
readonly metadata: ConnectorMetadata;
|
|
25
|
-
|
|
26
24
|
/** Cleanup connector resources */
|
|
27
25
|
destroy(): void;
|
|
28
26
|
|
|
@@ -36,11 +34,6 @@ export interface Connector {
|
|
|
36
34
|
getConnectedWallets(): WalletInterface[];
|
|
37
35
|
}
|
|
38
36
|
|
|
39
|
-
export interface ConnectorMetadata {
|
|
40
|
-
name: string;
|
|
41
|
-
iconUrl?: string;
|
|
42
|
-
}
|
|
43
|
-
|
|
44
37
|
/**
|
|
45
38
|
* Context passed to connector factory functions.
|
|
46
39
|
*/
|
package/src/types/provider.ts
CHANGED
|
@@ -6,9 +6,9 @@
|
|
|
6
6
|
*
|
|
7
7
|
*/
|
|
8
8
|
|
|
9
|
-
import type { SwapProviderInterface, StakingProviderInterface } from '@ton/walletkit';
|
|
9
|
+
import type { SwapProviderInterface, StakingProviderInterface, StreamingProvider } from '@ton/walletkit';
|
|
10
10
|
|
|
11
11
|
/**
|
|
12
|
-
*
|
|
12
|
+
* Available provider types in AppKit.
|
|
13
13
|
*/
|
|
14
|
-
export type
|
|
14
|
+
export type AppKitProvider = SwapProviderInterface | StakingProviderInterface | StreamingProvider;
|
package/src/utils/index.ts
CHANGED
|
@@ -27,7 +27,7 @@ export * from './nft/nft-info';
|
|
|
27
27
|
export * from './object/map-values';
|
|
28
28
|
export * from './predicate/is-number';
|
|
29
29
|
export * from './predicate/is-string';
|
|
30
|
-
export * from './promise/
|
|
30
|
+
export * from './promise/with-timeout';
|
|
31
31
|
export * from './promise/sleep';
|
|
32
32
|
export * from './query/filter-query-options';
|
|
33
33
|
export * from './network/resolve-network';
|
|
@@ -5,5 +5,6 @@
|
|
|
5
5
|
* LICENSE file in the root directory of this source tree.
|
|
6
6
|
*
|
|
7
7
|
*/
|
|
8
|
-
|
|
9
|
-
|
|
8
|
+
|
|
9
|
+
// Re-exported from walletkit so the kit packages share a single source of truth.
|
|
10
|
+
export { withTimeout } from '@ton/walletkit';
|
|
@@ -1 +0,0 @@
|
|
|
1
|
-
{"version":3,"file":"cancel-promise.d.ts","sourceRoot":"","sources":["../../../../src/utils/promise/cancel-promise.ts"],"names":[],"mappings":"AAAA;;;;;;GAMG;AAEH,eAAO,MAAM,aAAa,GAAI,CAAC,EAAE,SAAS,CAAC,EAAE,WAAW,MAAM,KAAG,OAAO,CAAC,CAAC,CAOzE,CAAC"}
|
|
@@ -1,19 +0,0 @@
|
|
|
1
|
-
"use strict";
|
|
2
|
-
/**
|
|
3
|
-
* Copyright (c) TonTech.
|
|
4
|
-
*
|
|
5
|
-
* This source code is licensed under the MIT license found in the
|
|
6
|
-
* LICENSE file in the root directory of this source tree.
|
|
7
|
-
*
|
|
8
|
-
*/
|
|
9
|
-
Object.defineProperty(exports, "__esModule", { value: true });
|
|
10
|
-
exports.cancelPromise = void 0;
|
|
11
|
-
const cancelPromise = (promise, timeoutMs) => {
|
|
12
|
-
return Promise.race([
|
|
13
|
-
promise,
|
|
14
|
-
new Promise((_, reject) => {
|
|
15
|
-
setTimeout(() => reject(new Error(`Execution timed out - ${timeoutMs}ms`)), timeoutMs);
|
|
16
|
-
}),
|
|
17
|
-
]);
|
|
18
|
-
};
|
|
19
|
-
exports.cancelPromise = cancelPromise;
|
|
@@ -1 +0,0 @@
|
|
|
1
|
-
{"version":3,"file":"cancel-promise.test.d.ts","sourceRoot":"","sources":["../../../../src/utils/promise/cancel-promise.test.ts"],"names":[],"mappings":"AAAA;;;;;;GAMG"}
|
|
@@ -1,25 +0,0 @@
|
|
|
1
|
-
"use strict";
|
|
2
|
-
/**
|
|
3
|
-
* Copyright (c) TonTech.
|
|
4
|
-
*
|
|
5
|
-
* This source code is licensed under the MIT license found in the
|
|
6
|
-
* LICENSE file in the root directory of this source tree.
|
|
7
|
-
*
|
|
8
|
-
*/
|
|
9
|
-
Object.defineProperty(exports, "__esModule", { value: true });
|
|
10
|
-
const vitest_1 = require("vitest");
|
|
11
|
-
const cancel_promise_1 = require("./cancel-promise");
|
|
12
|
-
(0, vitest_1.describe)('cancelPromise', () => {
|
|
13
|
-
(0, vitest_1.it)('should resolve if promise resolves before timeout', async () => {
|
|
14
|
-
const promise = new Promise((resolve) => setTimeout(() => resolve('success'), 10));
|
|
15
|
-
await (0, vitest_1.expect)((0, cancel_promise_1.cancelPromise)(promise, 50)).resolves.toBe('success');
|
|
16
|
-
});
|
|
17
|
-
(0, vitest_1.it)('should reject if promise times out', async () => {
|
|
18
|
-
const promise = new Promise((resolve) => setTimeout(() => resolve('success'), 50));
|
|
19
|
-
await (0, vitest_1.expect)((0, cancel_promise_1.cancelPromise)(promise, 10)).rejects.toThrow('Execution timed out - 10ms');
|
|
20
|
-
});
|
|
21
|
-
(0, vitest_1.it)('should propagate rejection from original promise', async () => {
|
|
22
|
-
const promise = new Promise((_, reject) => setTimeout(() => reject(new Error('failure')), 10));
|
|
23
|
-
await (0, vitest_1.expect)((0, cancel_promise_1.cancelPromise)(promise, 50)).rejects.toThrow('failure');
|
|
24
|
-
});
|
|
25
|
-
});
|
|
@@ -1 +0,0 @@
|
|
|
1
|
-
{"version":3,"file":"cancel-promise.d.ts","sourceRoot":"","sources":["../../../../src/utils/promise/cancel-promise.ts"],"names":[],"mappings":"AAAA;;;;;;GAMG;AAEH,eAAO,MAAM,aAAa,GAAI,CAAC,EAAE,SAAS,CAAC,EAAE,WAAW,MAAM,KAAG,OAAO,CAAC,CAAC,CAOzE,CAAC"}
|
|
@@ -1,15 +0,0 @@
|
|
|
1
|
-
/**
|
|
2
|
-
* Copyright (c) TonTech.
|
|
3
|
-
*
|
|
4
|
-
* This source code is licensed under the MIT license found in the
|
|
5
|
-
* LICENSE file in the root directory of this source tree.
|
|
6
|
-
*
|
|
7
|
-
*/
|
|
8
|
-
export const cancelPromise = (promise, timeoutMs) => {
|
|
9
|
-
return Promise.race([
|
|
10
|
-
promise,
|
|
11
|
-
new Promise((_, reject) => {
|
|
12
|
-
setTimeout(() => reject(new Error(`Execution timed out - ${timeoutMs}ms`)), timeoutMs);
|
|
13
|
-
}),
|
|
14
|
-
]);
|
|
15
|
-
};
|
|
@@ -1 +0,0 @@
|
|
|
1
|
-
{"version":3,"file":"cancel-promise.test.d.ts","sourceRoot":"","sources":["../../../../src/utils/promise/cancel-promise.test.ts"],"names":[],"mappings":"AAAA;;;;;;GAMG"}
|
|
@@ -1,23 +0,0 @@
|
|
|
1
|
-
/**
|
|
2
|
-
* Copyright (c) TonTech.
|
|
3
|
-
*
|
|
4
|
-
* This source code is licensed under the MIT license found in the
|
|
5
|
-
* LICENSE file in the root directory of this source tree.
|
|
6
|
-
*
|
|
7
|
-
*/
|
|
8
|
-
import { describe, expect, it } from 'vitest';
|
|
9
|
-
import { cancelPromise } from './cancel-promise';
|
|
10
|
-
describe('cancelPromise', () => {
|
|
11
|
-
it('should resolve if promise resolves before timeout', async () => {
|
|
12
|
-
const promise = new Promise((resolve) => setTimeout(() => resolve('success'), 10));
|
|
13
|
-
await expect(cancelPromise(promise, 50)).resolves.toBe('success');
|
|
14
|
-
});
|
|
15
|
-
it('should reject if promise times out', async () => {
|
|
16
|
-
const promise = new Promise((resolve) => setTimeout(() => resolve('success'), 50));
|
|
17
|
-
await expect(cancelPromise(promise, 10)).rejects.toThrow('Execution timed out - 10ms');
|
|
18
|
-
});
|
|
19
|
-
it('should propagate rejection from original promise', async () => {
|
|
20
|
-
const promise = new Promise((_, reject) => setTimeout(() => reject(new Error('failure')), 10));
|
|
21
|
-
await expect(cancelPromise(promise, 50)).rejects.toThrow('failure');
|
|
22
|
-
});
|
|
23
|
-
});
|
|
@@ -1,28 +0,0 @@
|
|
|
1
|
-
/**
|
|
2
|
-
* Copyright (c) TonTech.
|
|
3
|
-
*
|
|
4
|
-
* This source code is licensed under the MIT license found in the
|
|
5
|
-
* LICENSE file in the root directory of this source tree.
|
|
6
|
-
*
|
|
7
|
-
*/
|
|
8
|
-
|
|
9
|
-
import { describe, expect, it } from 'vitest';
|
|
10
|
-
|
|
11
|
-
import { cancelPromise } from './cancel-promise';
|
|
12
|
-
|
|
13
|
-
describe('cancelPromise', () => {
|
|
14
|
-
it('should resolve if promise resolves before timeout', async () => {
|
|
15
|
-
const promise = new Promise((resolve) => setTimeout(() => resolve('success'), 10));
|
|
16
|
-
await expect(cancelPromise(promise, 50)).resolves.toBe('success');
|
|
17
|
-
});
|
|
18
|
-
|
|
19
|
-
it('should reject if promise times out', async () => {
|
|
20
|
-
const promise = new Promise((resolve) => setTimeout(() => resolve('success'), 50));
|
|
21
|
-
await expect(cancelPromise(promise, 10)).rejects.toThrow('Execution timed out - 10ms');
|
|
22
|
-
});
|
|
23
|
-
|
|
24
|
-
it('should propagate rejection from original promise', async () => {
|
|
25
|
-
const promise = new Promise((_, reject) => setTimeout(() => reject(new Error('failure')), 10));
|
|
26
|
-
await expect(cancelPromise(promise, 50)).rejects.toThrow('failure');
|
|
27
|
-
});
|
|
28
|
-
});
|
|
@@ -1,16 +0,0 @@
|
|
|
1
|
-
/**
|
|
2
|
-
* Copyright (c) TonTech.
|
|
3
|
-
*
|
|
4
|
-
* This source code is licensed under the MIT license found in the
|
|
5
|
-
* LICENSE file in the root directory of this source tree.
|
|
6
|
-
*
|
|
7
|
-
*/
|
|
8
|
-
|
|
9
|
-
export const cancelPromise = <T>(promise: T, timeoutMs: number): Promise<T> => {
|
|
10
|
-
return Promise.race([
|
|
11
|
-
promise,
|
|
12
|
-
new Promise((_, reject) => {
|
|
13
|
-
setTimeout(() => reject(new Error(`Execution timed out - ${timeoutMs}ms`)), timeoutMs);
|
|
14
|
-
}) as T,
|
|
15
|
-
]);
|
|
16
|
-
};
|