@metamask-previews/assets-controller 0.2.0-preview-c3cd77f → 0.2.0-preview-d01b2f93d
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/CHANGELOG.md +4 -0
- package/dist/AssetsController-method-action-types.cjs +7 -0
- package/dist/AssetsController-method-action-types.cjs.map +1 -0
- package/dist/AssetsController-method-action-types.d.cts +78 -0
- package/dist/AssetsController-method-action-types.d.cts.map +1 -0
- package/dist/AssetsController-method-action-types.d.mts +78 -0
- package/dist/AssetsController-method-action-types.d.mts.map +1 -0
- package/dist/AssetsController-method-action-types.mjs +6 -0
- package/dist/AssetsController-method-action-types.mjs.map +1 -0
- package/dist/AssetsController.cjs +161 -116
- package/dist/AssetsController.cjs.map +1 -1
- package/dist/AssetsController.d.cts +23 -80
- package/dist/AssetsController.d.cts.map +1 -1
- package/dist/AssetsController.d.mts +23 -80
- package/dist/AssetsController.d.mts.map +1 -1
- package/dist/AssetsController.mjs +161 -116
- package/dist/AssetsController.mjs.map +1 -1
- package/dist/data-sources/AbstractDataSource.cjs.map +1 -1
- package/dist/data-sources/AbstractDataSource.d.cts +10 -1
- package/dist/data-sources/AbstractDataSource.d.cts.map +1 -1
- package/dist/data-sources/AbstractDataSource.d.mts +10 -1
- package/dist/data-sources/AbstractDataSource.d.mts.map +1 -1
- package/dist/data-sources/AbstractDataSource.mjs.map +1 -1
- package/dist/data-sources/AccountsApiDataSource.cjs +23 -99
- package/dist/data-sources/AccountsApiDataSource.cjs.map +1 -1
- package/dist/data-sources/AccountsApiDataSource.d.cts +5 -67
- package/dist/data-sources/AccountsApiDataSource.d.cts.map +1 -1
- package/dist/data-sources/AccountsApiDataSource.d.mts +5 -67
- package/dist/data-sources/AccountsApiDataSource.d.mts.map +1 -1
- package/dist/data-sources/AccountsApiDataSource.mjs +22 -97
- package/dist/data-sources/AccountsApiDataSource.mjs.map +1 -1
- package/dist/data-sources/BackendWebsocketDataSource.cjs +135 -45
- package/dist/data-sources/BackendWebsocketDataSource.cjs.map +1 -1
- package/dist/data-sources/BackendWebsocketDataSource.d.cts +19 -66
- package/dist/data-sources/BackendWebsocketDataSource.d.cts.map +1 -1
- package/dist/data-sources/BackendWebsocketDataSource.d.mts +19 -66
- package/dist/data-sources/BackendWebsocketDataSource.d.mts.map +1 -1
- package/dist/data-sources/BackendWebsocketDataSource.mjs +135 -45
- package/dist/data-sources/BackendWebsocketDataSource.mjs.map +1 -1
- package/dist/data-sources/PriceDataSource.cjs +22 -44
- package/dist/data-sources/PriceDataSource.cjs.map +1 -1
- package/dist/data-sources/PriceDataSource.d.cts +6 -89
- package/dist/data-sources/PriceDataSource.d.cts.map +1 -1
- package/dist/data-sources/PriceDataSource.d.mts +6 -89
- package/dist/data-sources/PriceDataSource.d.mts.map +1 -1
- package/dist/data-sources/PriceDataSource.mjs +22 -44
- package/dist/data-sources/PriceDataSource.mjs.map +1 -1
- package/dist/data-sources/RpcDataSource.cjs +57 -98
- package/dist/data-sources/RpcDataSource.cjs.map +1 -1
- package/dist/data-sources/RpcDataSource.d.cts +16 -55
- package/dist/data-sources/RpcDataSource.d.cts.map +1 -1
- package/dist/data-sources/RpcDataSource.d.mts +16 -55
- package/dist/data-sources/RpcDataSource.d.mts.map +1 -1
- package/dist/data-sources/RpcDataSource.mjs +57 -98
- package/dist/data-sources/RpcDataSource.mjs.map +1 -1
- package/dist/data-sources/SnapDataSource.cjs +30 -30
- package/dist/data-sources/SnapDataSource.cjs.map +1 -1
- package/dist/data-sources/SnapDataSource.d.cts +7 -44
- package/dist/data-sources/SnapDataSource.d.cts.map +1 -1
- package/dist/data-sources/SnapDataSource.d.mts +7 -44
- package/dist/data-sources/SnapDataSource.d.mts.map +1 -1
- package/dist/data-sources/SnapDataSource.mjs +30 -30
- package/dist/data-sources/SnapDataSource.mjs.map +1 -1
- package/dist/data-sources/TokenDataSource.cjs +3 -16
- package/dist/data-sources/TokenDataSource.cjs.map +1 -1
- package/dist/data-sources/TokenDataSource.d.cts +2 -25
- package/dist/data-sources/TokenDataSource.d.cts.map +1 -1
- package/dist/data-sources/TokenDataSource.d.mts +2 -25
- package/dist/data-sources/TokenDataSource.d.mts.map +1 -1
- package/dist/data-sources/TokenDataSource.mjs +3 -16
- package/dist/data-sources/TokenDataSource.mjs.map +1 -1
- package/dist/data-sources/index.cjs +1 -6
- package/dist/data-sources/index.cjs.map +1 -1
- package/dist/data-sources/index.d.cts +6 -7
- package/dist/data-sources/index.d.cts.map +1 -1
- package/dist/data-sources/index.d.mts +6 -7
- package/dist/data-sources/index.d.mts.map +1 -1
- package/dist/data-sources/index.mjs +1 -3
- package/dist/data-sources/index.mjs.map +1 -1
- package/dist/index.cjs +1 -6
- package/dist/index.cjs.map +1 -1
- package/dist/index.d.cts +9 -11
- package/dist/index.d.cts.map +1 -1
- package/dist/index.d.mts +9 -11
- package/dist/index.d.mts.map +1 -1
- package/dist/index.mjs +1 -3
- package/dist/index.mjs.map +1 -1
- package/dist/middlewares/DetectionMiddleware.cjs +4 -27
- package/dist/middlewares/DetectionMiddleware.cjs.map +1 -1
- package/dist/middlewares/DetectionMiddleware.d.cts +3 -26
- package/dist/middlewares/DetectionMiddleware.d.cts.map +1 -1
- package/dist/middlewares/DetectionMiddleware.d.mts +3 -26
- package/dist/middlewares/DetectionMiddleware.d.mts.map +1 -1
- package/dist/middlewares/DetectionMiddleware.mjs +4 -27
- package/dist/middlewares/DetectionMiddleware.mjs.map +1 -1
- package/dist/middlewares/index.cjs.map +1 -1
- package/dist/middlewares/index.d.cts +1 -1
- package/dist/middlewares/index.d.cts.map +1 -1
- package/dist/middlewares/index.d.mts +1 -1
- package/dist/middlewares/index.d.mts.map +1 -1
- package/dist/middlewares/index.mjs.map +1 -1
- package/dist/types.cjs.map +1 -1
- package/dist/types.d.cts +52 -3
- package/dist/types.d.cts.map +1 -1
- package/dist/types.d.mts +52 -3
- package/dist/types.d.mts.map +1 -1
- package/dist/types.mjs.map +1 -1
- package/package.json +1 -1
- package/dist/data-sources/initDataSources.cjs +0 -215
- package/dist/data-sources/initDataSources.cjs.map +0 -1
- package/dist/data-sources/initDataSources.d.cts +0 -140
- package/dist/data-sources/initDataSources.d.cts.map +0 -1
- package/dist/data-sources/initDataSources.d.mts +0 -140
- package/dist/data-sources/initDataSources.d.mts.map +0 -1
- package/dist/data-sources/initDataSources.mjs +0 -210
- package/dist/data-sources/initDataSources.mjs.map +0 -1
|
@@ -1,215 +0,0 @@
|
|
|
1
|
-
"use strict";
|
|
2
|
-
Object.defineProperty(exports, "__esModule", { value: true });
|
|
3
|
-
exports.initDataSources = exports.initMessengers = void 0;
|
|
4
|
-
const messenger_1 = require("@metamask/messenger");
|
|
5
|
-
const AccountsApiDataSource_1 = require("./AccountsApiDataSource.cjs");
|
|
6
|
-
const BackendWebsocketDataSource_1 = require("./BackendWebsocketDataSource.cjs");
|
|
7
|
-
const PriceDataSource_1 = require("./PriceDataSource.cjs");
|
|
8
|
-
const RpcDataSource_1 = require("./RpcDataSource.cjs");
|
|
9
|
-
const SnapDataSource_1 = require("./SnapDataSource.cjs");
|
|
10
|
-
const TokenDataSource_1 = require("./TokenDataSource.cjs");
|
|
11
|
-
const middlewares_1 = require("../middlewares/index.cjs");
|
|
12
|
-
// ============================================================================
|
|
13
|
-
// MESSENGER INITIALIZATION
|
|
14
|
-
// ============================================================================
|
|
15
|
-
/**
|
|
16
|
-
* Initialize all messengers for data sources.
|
|
17
|
-
*
|
|
18
|
-
* This function creates child messengers for each data source from the root
|
|
19
|
-
* controller messenger, with proper action/event delegation.
|
|
20
|
-
*
|
|
21
|
-
* @example
|
|
22
|
-
* ```typescript
|
|
23
|
-
* import { initMessengers } from '@metamask/assets-controllers';
|
|
24
|
-
*
|
|
25
|
-
* const messengers = initMessengers({ messenger });
|
|
26
|
-
* ```
|
|
27
|
-
*
|
|
28
|
-
* @param options - Configuration options
|
|
29
|
-
* @returns Object containing all messengers, or null if disabled
|
|
30
|
-
*/
|
|
31
|
-
function initMessengers(options) {
|
|
32
|
-
const { messenger, isEnabled = () => true } = options;
|
|
33
|
-
if (!isEnabled()) {
|
|
34
|
-
return null;
|
|
35
|
-
}
|
|
36
|
-
// eslint-disable-next-line @typescript-eslint/no-explicit-any
|
|
37
|
-
const rootMessenger = messenger;
|
|
38
|
-
// RPC Data Source messenger
|
|
39
|
-
const rpcMessenger = new messenger_1.Messenger({
|
|
40
|
-
namespace: 'RpcDataSource',
|
|
41
|
-
parent: rootMessenger,
|
|
42
|
-
});
|
|
43
|
-
rootMessenger.delegate({
|
|
44
|
-
actions: [
|
|
45
|
-
'NetworkController:getState',
|
|
46
|
-
'NetworkController:getNetworkClientById',
|
|
47
|
-
'AssetsController:activeChainsUpdate',
|
|
48
|
-
'AssetsController:assetsUpdate',
|
|
49
|
-
'AssetsController:getState',
|
|
50
|
-
'TokenListController:getState',
|
|
51
|
-
'NetworkEnablementController:getState',
|
|
52
|
-
],
|
|
53
|
-
events: ['NetworkController:stateChange'],
|
|
54
|
-
messenger: rpcMessenger,
|
|
55
|
-
});
|
|
56
|
-
// Backend Websocket Data Source messenger
|
|
57
|
-
const backendWebsocketMessenger = new messenger_1.Messenger({
|
|
58
|
-
namespace: 'BackendWebsocketDataSource',
|
|
59
|
-
parent: rootMessenger,
|
|
60
|
-
});
|
|
61
|
-
rootMessenger.delegate({
|
|
62
|
-
actions: [
|
|
63
|
-
'BackendWebSocketService:subscribe',
|
|
64
|
-
'BackendWebSocketService:unsubscribe',
|
|
65
|
-
'BackendWebSocketService:getState',
|
|
66
|
-
'BackendWebSocketService:getConnectionInfo',
|
|
67
|
-
'BackendWebSocketService:findSubscriptionsByChannelPrefix',
|
|
68
|
-
'AssetsController:activeChainsUpdate',
|
|
69
|
-
'AssetsController:assetsUpdate',
|
|
70
|
-
],
|
|
71
|
-
events: [
|
|
72
|
-
'BackendWebSocketService:stateChange',
|
|
73
|
-
'BackendWebSocketService:connectionStateChanged',
|
|
74
|
-
'AccountsApiDataSource:activeChainsUpdated',
|
|
75
|
-
],
|
|
76
|
-
messenger: backendWebsocketMessenger,
|
|
77
|
-
});
|
|
78
|
-
// Accounts API Data Source messenger
|
|
79
|
-
// Note: AccountsApiDataSource uses ApiPlatformClient directly, so no BackendApiClient actions needed
|
|
80
|
-
const accountsApiMessenger = new messenger_1.Messenger({
|
|
81
|
-
namespace: 'AccountsApiDataSource',
|
|
82
|
-
parent: rootMessenger,
|
|
83
|
-
});
|
|
84
|
-
rootMessenger.delegate({
|
|
85
|
-
actions: [
|
|
86
|
-
'AssetsController:activeChainsUpdate',
|
|
87
|
-
'AssetsController:assetsUpdate',
|
|
88
|
-
],
|
|
89
|
-
messenger: accountsApiMessenger,
|
|
90
|
-
});
|
|
91
|
-
// Snap Data Source messenger
|
|
92
|
-
const snapMessenger = new messenger_1.Messenger({
|
|
93
|
-
namespace: 'SnapDataSource',
|
|
94
|
-
parent: rootMessenger,
|
|
95
|
-
});
|
|
96
|
-
rootMessenger.delegate({
|
|
97
|
-
actions: [
|
|
98
|
-
'AssetsController:activeChainsUpdate',
|
|
99
|
-
'AssetsController:assetsUpdate',
|
|
100
|
-
// SnapController actions for direct snap communication
|
|
101
|
-
'SnapController:getRunnableSnaps',
|
|
102
|
-
'SnapController:handleRequest',
|
|
103
|
-
// PermissionController action for dynamic snap discovery
|
|
104
|
-
'PermissionController:getPermissions',
|
|
105
|
-
],
|
|
106
|
-
events: [
|
|
107
|
-
// Snap keyring balance updates - snaps emit this when balances change
|
|
108
|
-
'AccountsController:accountBalancesUpdated',
|
|
109
|
-
// Permission changes for runtime snap discovery
|
|
110
|
-
'PermissionController:stateChange',
|
|
111
|
-
],
|
|
112
|
-
messenger: snapMessenger,
|
|
113
|
-
});
|
|
114
|
-
// Token Data Source messenger
|
|
115
|
-
// Note: TokenDataSource uses ApiPlatformClient directly, so no BackendApiClient actions needed
|
|
116
|
-
const tokenMessenger = new messenger_1.Messenger({
|
|
117
|
-
namespace: 'TokenDataSource',
|
|
118
|
-
parent: rootMessenger,
|
|
119
|
-
});
|
|
120
|
-
// Price Data Source messenger
|
|
121
|
-
// Note: PriceDataSource uses ApiPlatformClient directly, so no BackendApiClient actions needed
|
|
122
|
-
const priceMessenger = new messenger_1.Messenger({
|
|
123
|
-
namespace: 'PriceDataSource',
|
|
124
|
-
parent: rootMessenger,
|
|
125
|
-
});
|
|
126
|
-
rootMessenger.delegate({
|
|
127
|
-
actions: ['AssetsController:getState', 'AssetsController:assetsUpdate'],
|
|
128
|
-
messenger: priceMessenger,
|
|
129
|
-
});
|
|
130
|
-
// Detection Middleware messenger
|
|
131
|
-
const detectionMessenger = new messenger_1.Messenger({
|
|
132
|
-
namespace: 'DetectionMiddleware',
|
|
133
|
-
parent: rootMessenger,
|
|
134
|
-
});
|
|
135
|
-
return {
|
|
136
|
-
rpcMessenger: rpcMessenger,
|
|
137
|
-
backendWebsocketMessenger: backendWebsocketMessenger,
|
|
138
|
-
accountsApiMessenger: accountsApiMessenger,
|
|
139
|
-
snapMessenger: snapMessenger,
|
|
140
|
-
tokenMessenger: tokenMessenger,
|
|
141
|
-
priceMessenger: priceMessenger,
|
|
142
|
-
detectionMessenger: detectionMessenger,
|
|
143
|
-
};
|
|
144
|
-
}
|
|
145
|
-
exports.initMessengers = initMessengers;
|
|
146
|
-
// ============================================================================
|
|
147
|
-
// DATA SOURCE INITIALIZATION
|
|
148
|
-
// ============================================================================
|
|
149
|
-
/**
|
|
150
|
-
* Initialize all data sources and middlewares.
|
|
151
|
-
*
|
|
152
|
-
* This function creates and initializes all data sources, registering their
|
|
153
|
-
* action handlers with the messenger.
|
|
154
|
-
*
|
|
155
|
-
* @example
|
|
156
|
-
* ```typescript
|
|
157
|
-
* import { initMessengers, initDataSources } from '@metamask/assets-controllers';
|
|
158
|
-
*
|
|
159
|
-
* // Initialize messengers first
|
|
160
|
-
* const messengers = initMessengers({ controllerMessenger });
|
|
161
|
-
*
|
|
162
|
-
* // Then initialize data sources
|
|
163
|
-
* const dataSources = initDataSources({
|
|
164
|
-
* messengers,
|
|
165
|
-
* queryApiClient,
|
|
166
|
-
* });
|
|
167
|
-
* ```
|
|
168
|
-
*
|
|
169
|
-
* @param options - Configuration options
|
|
170
|
-
* @returns Object containing all data source instances, or null if disabled
|
|
171
|
-
*/
|
|
172
|
-
function initDataSources(options) {
|
|
173
|
-
const { messengers, queryApiClient, rpcDataSourceConfig, isEnabled = () => true, } = options;
|
|
174
|
-
if (!isEnabled()) {
|
|
175
|
-
return null;
|
|
176
|
-
}
|
|
177
|
-
// Initialize primary data sources (provide balance data)
|
|
178
|
-
const rpcDataSource = new RpcDataSource_1.RpcDataSource({
|
|
179
|
-
messenger: messengers.rpcMessenger,
|
|
180
|
-
...rpcDataSourceConfig,
|
|
181
|
-
});
|
|
182
|
-
const backendWebsocketDataSource = new BackendWebsocketDataSource_1.BackendWebsocketDataSource({
|
|
183
|
-
messenger: messengers.backendWebsocketMessenger,
|
|
184
|
-
});
|
|
185
|
-
const accountsApiDataSource = new AccountsApiDataSource_1.AccountsApiDataSource({
|
|
186
|
-
messenger: messengers.accountsApiMessenger,
|
|
187
|
-
queryApiClient,
|
|
188
|
-
});
|
|
189
|
-
const snapDataSource = new SnapDataSource_1.SnapDataSource({
|
|
190
|
-
messenger: messengers.snapMessenger,
|
|
191
|
-
});
|
|
192
|
-
// Initialize middleware data sources (enrich responses)
|
|
193
|
-
const tokenDataSource = new TokenDataSource_1.TokenDataSource({
|
|
194
|
-
messenger: messengers.tokenMessenger,
|
|
195
|
-
queryApiClient,
|
|
196
|
-
});
|
|
197
|
-
const priceDataSource = new PriceDataSource_1.PriceDataSource({
|
|
198
|
-
messenger: messengers.priceMessenger,
|
|
199
|
-
queryApiClient,
|
|
200
|
-
});
|
|
201
|
-
const detectionMiddleware = new middlewares_1.DetectionMiddleware({
|
|
202
|
-
messenger: messengers.detectionMessenger,
|
|
203
|
-
});
|
|
204
|
-
return {
|
|
205
|
-
rpcDataSource,
|
|
206
|
-
backendWebsocketDataSource,
|
|
207
|
-
accountsApiDataSource,
|
|
208
|
-
snapDataSource,
|
|
209
|
-
tokenDataSource,
|
|
210
|
-
priceDataSource,
|
|
211
|
-
detectionMiddleware,
|
|
212
|
-
};
|
|
213
|
-
}
|
|
214
|
-
exports.initDataSources = initDataSources;
|
|
215
|
-
//# sourceMappingURL=initDataSources.cjs.map
|
|
@@ -1 +0,0 @@
|
|
|
1
|
-
{"version":3,"file":"initDataSources.cjs","sourceRoot":"","sources":["../../src/data-sources/initDataSources.ts"],"names":[],"mappings":"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","sourcesContent":["import type { ApiPlatformClient } from '@metamask/core-backend';\nimport { Messenger } from '@metamask/messenger';\nimport type { ActionConstraint, EventConstraint } from '@metamask/messenger';\n\nimport { AccountsApiDataSource } from './AccountsApiDataSource';\nimport type {\n AccountsApiDataSourceActions,\n AccountsApiDataSourceAllowedActions,\n AccountsApiDataSourceEvents,\n AccountsApiDataSourceMessenger,\n} from './AccountsApiDataSource';\nimport { BackendWebsocketDataSource } from './BackendWebsocketDataSource';\nimport type {\n BackendWebsocketDataSourceActions,\n BackendWebsocketDataSourceAllowedActions,\n BackendWebsocketDataSourceAllowedEvents,\n BackendWebsocketDataSourceEvents,\n BackendWebsocketDataSourceMessenger,\n} from './BackendWebsocketDataSource';\nimport { PriceDataSource } from './PriceDataSource';\nimport type {\n PriceDataSourceActions,\n PriceDataSourceAllowedActions,\n PriceDataSourceEvents,\n PriceDataSourceMessenger,\n} from './PriceDataSource';\nimport { RpcDataSource } from './RpcDataSource';\nimport type {\n RpcDataSourceActions,\n RpcDataSourceAllowedActions,\n RpcDataSourceAllowedEvents,\n RpcDataSourceEvents,\n RpcDataSourceMessenger,\n} from './RpcDataSource';\nimport { SnapDataSource } from './SnapDataSource';\nimport type {\n SnapDataSourceActions,\n SnapDataSourceEvents,\n SnapDataSourceMessenger,\n} from './SnapDataSource';\nimport { TokenDataSource } from './TokenDataSource';\nimport type {\n TokenDataSourceActions,\n TokenDataSourceMessenger,\n} from './TokenDataSource';\nimport type {\n DetectionMiddlewareActions,\n DetectionMiddlewareMessenger,\n} from '../middlewares';\nimport { DetectionMiddleware } from '../middlewares';\n\n// ============================================================================\n// ACTION & EVENT TYPES\n// ============================================================================\n\n/**\n * All actions from data sources.\n */\nexport type DataSourceActions =\n | RpcDataSourceActions\n | BackendWebsocketDataSourceActions\n | AccountsApiDataSourceActions\n | SnapDataSourceActions\n | TokenDataSourceActions\n | PriceDataSourceActions\n | DetectionMiddlewareActions;\n\n/**\n * All events from data sources.\n */\nexport type DataSourceEvents =\n | RpcDataSourceEvents\n | BackendWebsocketDataSourceEvents\n | AccountsApiDataSourceEvents\n | SnapDataSourceEvents\n | PriceDataSourceEvents;\n\n/**\n * All external actions that data sources need.\n * Note: TokenDataSource, AccountsApiDataSource, and PriceDataSource now use ApiPlatformClient\n * directly, so they don't need BackendApiClient actions delegated.\n */\nexport type DataSourceAllowedActions =\n | RpcDataSourceAllowedActions\n | BackendWebsocketDataSourceAllowedActions\n | AccountsApiDataSourceAllowedActions\n | PriceDataSourceAllowedActions;\n\n/**\n * All external events that data sources need.\n */\nexport type DataSourceAllowedEvents =\n | RpcDataSourceAllowedEvents\n | BackendWebsocketDataSourceAllowedEvents;\n\n/**\n * Root messenger type for all data sources.\n */\nexport type RootMessenger<\n AllowedActions extends ActionConstraint,\n AllowedEvents extends EventConstraint,\n> = Messenger<string, AllowedActions, AllowedEvents>;\n\n// ============================================================================\n// MESSENGER TYPES\n// ============================================================================\n\n/**\n * All messengers for data sources.\n */\nexport type DataSourceMessengers = {\n rpcMessenger: RpcDataSourceMessenger;\n backendWebsocketMessenger: BackendWebsocketDataSourceMessenger;\n accountsApiMessenger: AccountsApiDataSourceMessenger;\n snapMessenger: SnapDataSourceMessenger;\n tokenMessenger: TokenDataSourceMessenger;\n priceMessenger: PriceDataSourceMessenger;\n detectionMessenger: DetectionMiddlewareMessenger;\n};\n\n/**\n * Options for initializing messengers.\n */\nexport type InitMessengersOptions<\n AllowedActions extends ActionConstraint,\n AllowedEvents extends EventConstraint,\n> = {\n /** The root controller messenger */\n messenger: RootMessenger<AllowedActions, AllowedEvents>;\n /** Function to determine if initialization should proceed. Defaults to true. */\n isEnabled?: () => boolean;\n};\n\n// ============================================================================\n// CONTROLLER TYPES\n// ============================================================================\n\n/**\n * All data source instances.\n */\nexport type DataSources = {\n rpcDataSource: RpcDataSource;\n backendWebsocketDataSource: BackendWebsocketDataSource;\n accountsApiDataSource: AccountsApiDataSource;\n snapDataSource: SnapDataSource;\n tokenDataSource: TokenDataSource;\n priceDataSource: PriceDataSource;\n detectionMiddleware: DetectionMiddleware;\n};\n\n/**\n * Configuration options for RpcDataSource.\n */\nexport type RpcDataSourceConfig = {\n /** Balance polling interval in ms (default: 30s) */\n balanceInterval?: number;\n /** Token detection polling interval in ms (default: 180s / 3 min) */\n detectionInterval?: number;\n /** Whether token detection is enabled (default: false) */\n tokenDetectionEnabled?: boolean;\n /** Request timeout in ms (default: 10s) */\n timeout?: number;\n};\n\n/**\n * Options for initializing data sources.\n */\nexport type InitDataSourcesOptions = {\n /** Messengers for each data source */\n messengers: DataSourceMessengers;\n\n /** ApiPlatformClient for cached API calls */\n queryApiClient: ApiPlatformClient;\n\n /** Optional configuration for RpcDataSource */\n rpcDataSourceConfig?: RpcDataSourceConfig;\n\n /** Function to determine if initialization should proceed. Defaults to true. */\n isEnabled?: () => boolean;\n};\n\n// ============================================================================\n// MESSENGER INITIALIZATION\n// ============================================================================\n\n/**\n * Initialize all messengers for data sources.\n *\n * This function creates child messengers for each data source from the root\n * controller messenger, with proper action/event delegation.\n *\n * @example\n * ```typescript\n * import { initMessengers } from '@metamask/assets-controllers';\n *\n * const messengers = initMessengers({ messenger });\n * ```\n *\n * @param options - Configuration options\n * @returns Object containing all messengers, or null if disabled\n */\nexport function initMessengers<\n AllowedActions extends ActionConstraint,\n AllowedEvents extends EventConstraint,\n>(\n options: InitMessengersOptions<AllowedActions, AllowedEvents>,\n): DataSourceMessengers | null {\n const { messenger, isEnabled = (): boolean => true } = options;\n\n if (!isEnabled()) {\n return null;\n }\n\n // eslint-disable-next-line @typescript-eslint/no-explicit-any\n const rootMessenger = messenger as any;\n\n // RPC Data Source messenger\n const rpcMessenger = new Messenger({\n namespace: 'RpcDataSource',\n parent: rootMessenger,\n });\n rootMessenger.delegate({\n actions: [\n 'NetworkController:getState',\n 'NetworkController:getNetworkClientById',\n 'AssetsController:activeChainsUpdate',\n 'AssetsController:assetsUpdate',\n 'AssetsController:getState',\n 'TokenListController:getState',\n 'NetworkEnablementController:getState',\n ],\n events: ['NetworkController:stateChange'],\n messenger: rpcMessenger,\n });\n\n // Backend Websocket Data Source messenger\n const backendWebsocketMessenger = new Messenger({\n namespace: 'BackendWebsocketDataSource',\n parent: rootMessenger,\n });\n rootMessenger.delegate({\n actions: [\n 'BackendWebSocketService:subscribe',\n 'BackendWebSocketService:unsubscribe',\n 'BackendWebSocketService:getState',\n 'BackendWebSocketService:getConnectionInfo',\n 'BackendWebSocketService:findSubscriptionsByChannelPrefix',\n 'AssetsController:activeChainsUpdate',\n 'AssetsController:assetsUpdate',\n ],\n events: [\n 'BackendWebSocketService:stateChange',\n 'BackendWebSocketService:connectionStateChanged',\n 'AccountsApiDataSource:activeChainsUpdated',\n ],\n messenger: backendWebsocketMessenger,\n });\n\n // Accounts API Data Source messenger\n // Note: AccountsApiDataSource uses ApiPlatformClient directly, so no BackendApiClient actions needed\n const accountsApiMessenger = new Messenger({\n namespace: 'AccountsApiDataSource',\n parent: rootMessenger,\n });\n rootMessenger.delegate({\n actions: [\n 'AssetsController:activeChainsUpdate',\n 'AssetsController:assetsUpdate',\n ],\n messenger: accountsApiMessenger,\n });\n\n // Snap Data Source messenger\n const snapMessenger = new Messenger({\n namespace: 'SnapDataSource',\n parent: rootMessenger,\n });\n rootMessenger.delegate({\n actions: [\n 'AssetsController:activeChainsUpdate',\n 'AssetsController:assetsUpdate',\n // SnapController actions for direct snap communication\n 'SnapController:getRunnableSnaps',\n 'SnapController:handleRequest',\n // PermissionController action for dynamic snap discovery\n 'PermissionController:getPermissions',\n ],\n events: [\n // Snap keyring balance updates - snaps emit this when balances change\n 'AccountsController:accountBalancesUpdated',\n // Permission changes for runtime snap discovery\n 'PermissionController:stateChange',\n ],\n messenger: snapMessenger,\n });\n\n // Token Data Source messenger\n // Note: TokenDataSource uses ApiPlatformClient directly, so no BackendApiClient actions needed\n const tokenMessenger = new Messenger({\n namespace: 'TokenDataSource',\n parent: rootMessenger,\n });\n\n // Price Data Source messenger\n // Note: PriceDataSource uses ApiPlatformClient directly, so no BackendApiClient actions needed\n const priceMessenger = new Messenger({\n namespace: 'PriceDataSource',\n parent: rootMessenger,\n });\n rootMessenger.delegate({\n actions: ['AssetsController:getState', 'AssetsController:assetsUpdate'],\n messenger: priceMessenger,\n });\n\n // Detection Middleware messenger\n const detectionMessenger = new Messenger({\n namespace: 'DetectionMiddleware',\n parent: rootMessenger,\n });\n\n return {\n rpcMessenger: rpcMessenger as RpcDataSourceMessenger,\n backendWebsocketMessenger:\n backendWebsocketMessenger as BackendWebsocketDataSourceMessenger,\n accountsApiMessenger:\n accountsApiMessenger as AccountsApiDataSourceMessenger,\n snapMessenger: snapMessenger as SnapDataSourceMessenger,\n tokenMessenger: tokenMessenger as TokenDataSourceMessenger,\n priceMessenger: priceMessenger as PriceDataSourceMessenger,\n detectionMessenger: detectionMessenger as DetectionMiddlewareMessenger,\n };\n}\n\n// ============================================================================\n// DATA SOURCE INITIALIZATION\n// ============================================================================\n\n/**\n * Initialize all data sources and middlewares.\n *\n * This function creates and initializes all data sources, registering their\n * action handlers with the messenger.\n *\n * @example\n * ```typescript\n * import { initMessengers, initDataSources } from '@metamask/assets-controllers';\n *\n * // Initialize messengers first\n * const messengers = initMessengers({ controllerMessenger });\n *\n * // Then initialize data sources\n * const dataSources = initDataSources({\n * messengers,\n * queryApiClient,\n * });\n * ```\n *\n * @param options - Configuration options\n * @returns Object containing all data source instances, or null if disabled\n */\nexport function initDataSources(\n options: InitDataSourcesOptions,\n): DataSources | null {\n const {\n messengers,\n queryApiClient,\n rpcDataSourceConfig,\n isEnabled = (): boolean => true,\n } = options;\n\n if (!isEnabled()) {\n return null;\n }\n\n // Initialize primary data sources (provide balance data)\n const rpcDataSource = new RpcDataSource({\n messenger: messengers.rpcMessenger,\n ...rpcDataSourceConfig,\n });\n\n const backendWebsocketDataSource = new BackendWebsocketDataSource({\n messenger: messengers.backendWebsocketMessenger,\n });\n\n const accountsApiDataSource = new AccountsApiDataSource({\n messenger: messengers.accountsApiMessenger,\n queryApiClient,\n });\n\n const snapDataSource = new SnapDataSource({\n messenger: messengers.snapMessenger,\n });\n\n // Initialize middleware data sources (enrich responses)\n const tokenDataSource = new TokenDataSource({\n messenger: messengers.tokenMessenger,\n queryApiClient,\n });\n\n const priceDataSource = new PriceDataSource({\n messenger: messengers.priceMessenger,\n queryApiClient,\n });\n\n const detectionMiddleware = new DetectionMiddleware({\n messenger: messengers.detectionMessenger,\n });\n\n return {\n rpcDataSource,\n backendWebsocketDataSource,\n accountsApiDataSource,\n snapDataSource,\n tokenDataSource,\n priceDataSource,\n detectionMiddleware,\n };\n}\n"]}
|
|
@@ -1,140 +0,0 @@
|
|
|
1
|
-
import type { ApiPlatformClient } from "@metamask/core-backend";
|
|
2
|
-
import { Messenger } from "@metamask/messenger";
|
|
3
|
-
import type { ActionConstraint, EventConstraint } from "@metamask/messenger";
|
|
4
|
-
import { AccountsApiDataSource } from "./AccountsApiDataSource.cjs";
|
|
5
|
-
import type { AccountsApiDataSourceActions, AccountsApiDataSourceAllowedActions, AccountsApiDataSourceEvents, AccountsApiDataSourceMessenger } from "./AccountsApiDataSource.cjs";
|
|
6
|
-
import { BackendWebsocketDataSource } from "./BackendWebsocketDataSource.cjs";
|
|
7
|
-
import type { BackendWebsocketDataSourceActions, BackendWebsocketDataSourceAllowedActions, BackendWebsocketDataSourceAllowedEvents, BackendWebsocketDataSourceEvents, BackendWebsocketDataSourceMessenger } from "./BackendWebsocketDataSource.cjs";
|
|
8
|
-
import { PriceDataSource } from "./PriceDataSource.cjs";
|
|
9
|
-
import type { PriceDataSourceActions, PriceDataSourceAllowedActions, PriceDataSourceEvents, PriceDataSourceMessenger } from "./PriceDataSource.cjs";
|
|
10
|
-
import { RpcDataSource } from "./RpcDataSource.cjs";
|
|
11
|
-
import type { RpcDataSourceActions, RpcDataSourceAllowedActions, RpcDataSourceAllowedEvents, RpcDataSourceEvents, RpcDataSourceMessenger } from "./RpcDataSource.cjs";
|
|
12
|
-
import { SnapDataSource } from "./SnapDataSource.cjs";
|
|
13
|
-
import type { SnapDataSourceActions, SnapDataSourceEvents, SnapDataSourceMessenger } from "./SnapDataSource.cjs";
|
|
14
|
-
import { TokenDataSource } from "./TokenDataSource.cjs";
|
|
15
|
-
import type { TokenDataSourceActions, TokenDataSourceMessenger } from "./TokenDataSource.cjs";
|
|
16
|
-
import type { DetectionMiddlewareActions, DetectionMiddlewareMessenger } from "../middlewares/index.cjs";
|
|
17
|
-
import { DetectionMiddleware } from "../middlewares/index.cjs";
|
|
18
|
-
/**
|
|
19
|
-
* All actions from data sources.
|
|
20
|
-
*/
|
|
21
|
-
export type DataSourceActions = RpcDataSourceActions | BackendWebsocketDataSourceActions | AccountsApiDataSourceActions | SnapDataSourceActions | TokenDataSourceActions | PriceDataSourceActions | DetectionMiddlewareActions;
|
|
22
|
-
/**
|
|
23
|
-
* All events from data sources.
|
|
24
|
-
*/
|
|
25
|
-
export type DataSourceEvents = RpcDataSourceEvents | BackendWebsocketDataSourceEvents | AccountsApiDataSourceEvents | SnapDataSourceEvents | PriceDataSourceEvents;
|
|
26
|
-
/**
|
|
27
|
-
* All external actions that data sources need.
|
|
28
|
-
* Note: TokenDataSource, AccountsApiDataSource, and PriceDataSource now use ApiPlatformClient
|
|
29
|
-
* directly, so they don't need BackendApiClient actions delegated.
|
|
30
|
-
*/
|
|
31
|
-
export type DataSourceAllowedActions = RpcDataSourceAllowedActions | BackendWebsocketDataSourceAllowedActions | AccountsApiDataSourceAllowedActions | PriceDataSourceAllowedActions;
|
|
32
|
-
/**
|
|
33
|
-
* All external events that data sources need.
|
|
34
|
-
*/
|
|
35
|
-
export type DataSourceAllowedEvents = RpcDataSourceAllowedEvents | BackendWebsocketDataSourceAllowedEvents;
|
|
36
|
-
/**
|
|
37
|
-
* Root messenger type for all data sources.
|
|
38
|
-
*/
|
|
39
|
-
export type RootMessenger<AllowedActions extends ActionConstraint, AllowedEvents extends EventConstraint> = Messenger<string, AllowedActions, AllowedEvents>;
|
|
40
|
-
/**
|
|
41
|
-
* All messengers for data sources.
|
|
42
|
-
*/
|
|
43
|
-
export type DataSourceMessengers = {
|
|
44
|
-
rpcMessenger: RpcDataSourceMessenger;
|
|
45
|
-
backendWebsocketMessenger: BackendWebsocketDataSourceMessenger;
|
|
46
|
-
accountsApiMessenger: AccountsApiDataSourceMessenger;
|
|
47
|
-
snapMessenger: SnapDataSourceMessenger;
|
|
48
|
-
tokenMessenger: TokenDataSourceMessenger;
|
|
49
|
-
priceMessenger: PriceDataSourceMessenger;
|
|
50
|
-
detectionMessenger: DetectionMiddlewareMessenger;
|
|
51
|
-
};
|
|
52
|
-
/**
|
|
53
|
-
* Options for initializing messengers.
|
|
54
|
-
*/
|
|
55
|
-
export type InitMessengersOptions<AllowedActions extends ActionConstraint, AllowedEvents extends EventConstraint> = {
|
|
56
|
-
/** The root controller messenger */
|
|
57
|
-
messenger: RootMessenger<AllowedActions, AllowedEvents>;
|
|
58
|
-
/** Function to determine if initialization should proceed. Defaults to true. */
|
|
59
|
-
isEnabled?: () => boolean;
|
|
60
|
-
};
|
|
61
|
-
/**
|
|
62
|
-
* All data source instances.
|
|
63
|
-
*/
|
|
64
|
-
export type DataSources = {
|
|
65
|
-
rpcDataSource: RpcDataSource;
|
|
66
|
-
backendWebsocketDataSource: BackendWebsocketDataSource;
|
|
67
|
-
accountsApiDataSource: AccountsApiDataSource;
|
|
68
|
-
snapDataSource: SnapDataSource;
|
|
69
|
-
tokenDataSource: TokenDataSource;
|
|
70
|
-
priceDataSource: PriceDataSource;
|
|
71
|
-
detectionMiddleware: DetectionMiddleware;
|
|
72
|
-
};
|
|
73
|
-
/**
|
|
74
|
-
* Configuration options for RpcDataSource.
|
|
75
|
-
*/
|
|
76
|
-
export type RpcDataSourceConfig = {
|
|
77
|
-
/** Balance polling interval in ms (default: 30s) */
|
|
78
|
-
balanceInterval?: number;
|
|
79
|
-
/** Token detection polling interval in ms (default: 180s / 3 min) */
|
|
80
|
-
detectionInterval?: number;
|
|
81
|
-
/** Whether token detection is enabled (default: false) */
|
|
82
|
-
tokenDetectionEnabled?: boolean;
|
|
83
|
-
/** Request timeout in ms (default: 10s) */
|
|
84
|
-
timeout?: number;
|
|
85
|
-
};
|
|
86
|
-
/**
|
|
87
|
-
* Options for initializing data sources.
|
|
88
|
-
*/
|
|
89
|
-
export type InitDataSourcesOptions = {
|
|
90
|
-
/** Messengers for each data source */
|
|
91
|
-
messengers: DataSourceMessengers;
|
|
92
|
-
/** ApiPlatformClient for cached API calls */
|
|
93
|
-
queryApiClient: ApiPlatformClient;
|
|
94
|
-
/** Optional configuration for RpcDataSource */
|
|
95
|
-
rpcDataSourceConfig?: RpcDataSourceConfig;
|
|
96
|
-
/** Function to determine if initialization should proceed. Defaults to true. */
|
|
97
|
-
isEnabled?: () => boolean;
|
|
98
|
-
};
|
|
99
|
-
/**
|
|
100
|
-
* Initialize all messengers for data sources.
|
|
101
|
-
*
|
|
102
|
-
* This function creates child messengers for each data source from the root
|
|
103
|
-
* controller messenger, with proper action/event delegation.
|
|
104
|
-
*
|
|
105
|
-
* @example
|
|
106
|
-
* ```typescript
|
|
107
|
-
* import { initMessengers } from '@metamask/assets-controllers';
|
|
108
|
-
*
|
|
109
|
-
* const messengers = initMessengers({ messenger });
|
|
110
|
-
* ```
|
|
111
|
-
*
|
|
112
|
-
* @param options - Configuration options
|
|
113
|
-
* @returns Object containing all messengers, or null if disabled
|
|
114
|
-
*/
|
|
115
|
-
export declare function initMessengers<AllowedActions extends ActionConstraint, AllowedEvents extends EventConstraint>(options: InitMessengersOptions<AllowedActions, AllowedEvents>): DataSourceMessengers | null;
|
|
116
|
-
/**
|
|
117
|
-
* Initialize all data sources and middlewares.
|
|
118
|
-
*
|
|
119
|
-
* This function creates and initializes all data sources, registering their
|
|
120
|
-
* action handlers with the messenger.
|
|
121
|
-
*
|
|
122
|
-
* @example
|
|
123
|
-
* ```typescript
|
|
124
|
-
* import { initMessengers, initDataSources } from '@metamask/assets-controllers';
|
|
125
|
-
*
|
|
126
|
-
* // Initialize messengers first
|
|
127
|
-
* const messengers = initMessengers({ controllerMessenger });
|
|
128
|
-
*
|
|
129
|
-
* // Then initialize data sources
|
|
130
|
-
* const dataSources = initDataSources({
|
|
131
|
-
* messengers,
|
|
132
|
-
* queryApiClient,
|
|
133
|
-
* });
|
|
134
|
-
* ```
|
|
135
|
-
*
|
|
136
|
-
* @param options - Configuration options
|
|
137
|
-
* @returns Object containing all data source instances, or null if disabled
|
|
138
|
-
*/
|
|
139
|
-
export declare function initDataSources(options: InitDataSourcesOptions): DataSources | null;
|
|
140
|
-
//# sourceMappingURL=initDataSources.d.cts.map
|
|
@@ -1 +0,0 @@
|
|
|
1
|
-
{"version":3,"file":"initDataSources.d.cts","sourceRoot":"","sources":["../../src/data-sources/initDataSources.ts"],"names":[],"mappings":"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"}
|
|
@@ -1,140 +0,0 @@
|
|
|
1
|
-
import type { ApiPlatformClient } from "@metamask/core-backend";
|
|
2
|
-
import { Messenger } from "@metamask/messenger";
|
|
3
|
-
import type { ActionConstraint, EventConstraint } from "@metamask/messenger";
|
|
4
|
-
import { AccountsApiDataSource } from "./AccountsApiDataSource.mjs";
|
|
5
|
-
import type { AccountsApiDataSourceActions, AccountsApiDataSourceAllowedActions, AccountsApiDataSourceEvents, AccountsApiDataSourceMessenger } from "./AccountsApiDataSource.mjs";
|
|
6
|
-
import { BackendWebsocketDataSource } from "./BackendWebsocketDataSource.mjs";
|
|
7
|
-
import type { BackendWebsocketDataSourceActions, BackendWebsocketDataSourceAllowedActions, BackendWebsocketDataSourceAllowedEvents, BackendWebsocketDataSourceEvents, BackendWebsocketDataSourceMessenger } from "./BackendWebsocketDataSource.mjs";
|
|
8
|
-
import { PriceDataSource } from "./PriceDataSource.mjs";
|
|
9
|
-
import type { PriceDataSourceActions, PriceDataSourceAllowedActions, PriceDataSourceEvents, PriceDataSourceMessenger } from "./PriceDataSource.mjs";
|
|
10
|
-
import { RpcDataSource } from "./RpcDataSource.mjs";
|
|
11
|
-
import type { RpcDataSourceActions, RpcDataSourceAllowedActions, RpcDataSourceAllowedEvents, RpcDataSourceEvents, RpcDataSourceMessenger } from "./RpcDataSource.mjs";
|
|
12
|
-
import { SnapDataSource } from "./SnapDataSource.mjs";
|
|
13
|
-
import type { SnapDataSourceActions, SnapDataSourceEvents, SnapDataSourceMessenger } from "./SnapDataSource.mjs";
|
|
14
|
-
import { TokenDataSource } from "./TokenDataSource.mjs";
|
|
15
|
-
import type { TokenDataSourceActions, TokenDataSourceMessenger } from "./TokenDataSource.mjs";
|
|
16
|
-
import type { DetectionMiddlewareActions, DetectionMiddlewareMessenger } from "../middlewares/index.mjs";
|
|
17
|
-
import { DetectionMiddleware } from "../middlewares/index.mjs";
|
|
18
|
-
/**
|
|
19
|
-
* All actions from data sources.
|
|
20
|
-
*/
|
|
21
|
-
export type DataSourceActions = RpcDataSourceActions | BackendWebsocketDataSourceActions | AccountsApiDataSourceActions | SnapDataSourceActions | TokenDataSourceActions | PriceDataSourceActions | DetectionMiddlewareActions;
|
|
22
|
-
/**
|
|
23
|
-
* All events from data sources.
|
|
24
|
-
*/
|
|
25
|
-
export type DataSourceEvents = RpcDataSourceEvents | BackendWebsocketDataSourceEvents | AccountsApiDataSourceEvents | SnapDataSourceEvents | PriceDataSourceEvents;
|
|
26
|
-
/**
|
|
27
|
-
* All external actions that data sources need.
|
|
28
|
-
* Note: TokenDataSource, AccountsApiDataSource, and PriceDataSource now use ApiPlatformClient
|
|
29
|
-
* directly, so they don't need BackendApiClient actions delegated.
|
|
30
|
-
*/
|
|
31
|
-
export type DataSourceAllowedActions = RpcDataSourceAllowedActions | BackendWebsocketDataSourceAllowedActions | AccountsApiDataSourceAllowedActions | PriceDataSourceAllowedActions;
|
|
32
|
-
/**
|
|
33
|
-
* All external events that data sources need.
|
|
34
|
-
*/
|
|
35
|
-
export type DataSourceAllowedEvents = RpcDataSourceAllowedEvents | BackendWebsocketDataSourceAllowedEvents;
|
|
36
|
-
/**
|
|
37
|
-
* Root messenger type for all data sources.
|
|
38
|
-
*/
|
|
39
|
-
export type RootMessenger<AllowedActions extends ActionConstraint, AllowedEvents extends EventConstraint> = Messenger<string, AllowedActions, AllowedEvents>;
|
|
40
|
-
/**
|
|
41
|
-
* All messengers for data sources.
|
|
42
|
-
*/
|
|
43
|
-
export type DataSourceMessengers = {
|
|
44
|
-
rpcMessenger: RpcDataSourceMessenger;
|
|
45
|
-
backendWebsocketMessenger: BackendWebsocketDataSourceMessenger;
|
|
46
|
-
accountsApiMessenger: AccountsApiDataSourceMessenger;
|
|
47
|
-
snapMessenger: SnapDataSourceMessenger;
|
|
48
|
-
tokenMessenger: TokenDataSourceMessenger;
|
|
49
|
-
priceMessenger: PriceDataSourceMessenger;
|
|
50
|
-
detectionMessenger: DetectionMiddlewareMessenger;
|
|
51
|
-
};
|
|
52
|
-
/**
|
|
53
|
-
* Options for initializing messengers.
|
|
54
|
-
*/
|
|
55
|
-
export type InitMessengersOptions<AllowedActions extends ActionConstraint, AllowedEvents extends EventConstraint> = {
|
|
56
|
-
/** The root controller messenger */
|
|
57
|
-
messenger: RootMessenger<AllowedActions, AllowedEvents>;
|
|
58
|
-
/** Function to determine if initialization should proceed. Defaults to true. */
|
|
59
|
-
isEnabled?: () => boolean;
|
|
60
|
-
};
|
|
61
|
-
/**
|
|
62
|
-
* All data source instances.
|
|
63
|
-
*/
|
|
64
|
-
export type DataSources = {
|
|
65
|
-
rpcDataSource: RpcDataSource;
|
|
66
|
-
backendWebsocketDataSource: BackendWebsocketDataSource;
|
|
67
|
-
accountsApiDataSource: AccountsApiDataSource;
|
|
68
|
-
snapDataSource: SnapDataSource;
|
|
69
|
-
tokenDataSource: TokenDataSource;
|
|
70
|
-
priceDataSource: PriceDataSource;
|
|
71
|
-
detectionMiddleware: DetectionMiddleware;
|
|
72
|
-
};
|
|
73
|
-
/**
|
|
74
|
-
* Configuration options for RpcDataSource.
|
|
75
|
-
*/
|
|
76
|
-
export type RpcDataSourceConfig = {
|
|
77
|
-
/** Balance polling interval in ms (default: 30s) */
|
|
78
|
-
balanceInterval?: number;
|
|
79
|
-
/** Token detection polling interval in ms (default: 180s / 3 min) */
|
|
80
|
-
detectionInterval?: number;
|
|
81
|
-
/** Whether token detection is enabled (default: false) */
|
|
82
|
-
tokenDetectionEnabled?: boolean;
|
|
83
|
-
/** Request timeout in ms (default: 10s) */
|
|
84
|
-
timeout?: number;
|
|
85
|
-
};
|
|
86
|
-
/**
|
|
87
|
-
* Options for initializing data sources.
|
|
88
|
-
*/
|
|
89
|
-
export type InitDataSourcesOptions = {
|
|
90
|
-
/** Messengers for each data source */
|
|
91
|
-
messengers: DataSourceMessengers;
|
|
92
|
-
/** ApiPlatformClient for cached API calls */
|
|
93
|
-
queryApiClient: ApiPlatformClient;
|
|
94
|
-
/** Optional configuration for RpcDataSource */
|
|
95
|
-
rpcDataSourceConfig?: RpcDataSourceConfig;
|
|
96
|
-
/** Function to determine if initialization should proceed. Defaults to true. */
|
|
97
|
-
isEnabled?: () => boolean;
|
|
98
|
-
};
|
|
99
|
-
/**
|
|
100
|
-
* Initialize all messengers for data sources.
|
|
101
|
-
*
|
|
102
|
-
* This function creates child messengers for each data source from the root
|
|
103
|
-
* controller messenger, with proper action/event delegation.
|
|
104
|
-
*
|
|
105
|
-
* @example
|
|
106
|
-
* ```typescript
|
|
107
|
-
* import { initMessengers } from '@metamask/assets-controllers';
|
|
108
|
-
*
|
|
109
|
-
* const messengers = initMessengers({ messenger });
|
|
110
|
-
* ```
|
|
111
|
-
*
|
|
112
|
-
* @param options - Configuration options
|
|
113
|
-
* @returns Object containing all messengers, or null if disabled
|
|
114
|
-
*/
|
|
115
|
-
export declare function initMessengers<AllowedActions extends ActionConstraint, AllowedEvents extends EventConstraint>(options: InitMessengersOptions<AllowedActions, AllowedEvents>): DataSourceMessengers | null;
|
|
116
|
-
/**
|
|
117
|
-
* Initialize all data sources and middlewares.
|
|
118
|
-
*
|
|
119
|
-
* This function creates and initializes all data sources, registering their
|
|
120
|
-
* action handlers with the messenger.
|
|
121
|
-
*
|
|
122
|
-
* @example
|
|
123
|
-
* ```typescript
|
|
124
|
-
* import { initMessengers, initDataSources } from '@metamask/assets-controllers';
|
|
125
|
-
*
|
|
126
|
-
* // Initialize messengers first
|
|
127
|
-
* const messengers = initMessengers({ controllerMessenger });
|
|
128
|
-
*
|
|
129
|
-
* // Then initialize data sources
|
|
130
|
-
* const dataSources = initDataSources({
|
|
131
|
-
* messengers,
|
|
132
|
-
* queryApiClient,
|
|
133
|
-
* });
|
|
134
|
-
* ```
|
|
135
|
-
*
|
|
136
|
-
* @param options - Configuration options
|
|
137
|
-
* @returns Object containing all data source instances, or null if disabled
|
|
138
|
-
*/
|
|
139
|
-
export declare function initDataSources(options: InitDataSourcesOptions): DataSources | null;
|
|
140
|
-
//# sourceMappingURL=initDataSources.d.mts.map
|
|
@@ -1 +0,0 @@
|
|
|
1
|
-
{"version":3,"file":"initDataSources.d.mts","sourceRoot":"","sources":["../../src/data-sources/initDataSources.ts"],"names":[],"mappings":"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"}
|