@metamask/ramps-controller 12.0.0 → 12.1.0
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 +79 -1
- package/dist/RampsController-method-action-types.cjs +7 -0
- package/dist/RampsController-method-action-types.cjs.map +1 -0
- package/dist/RampsController-method-action-types.d.cts +566 -0
- package/dist/RampsController-method-action-types.d.cts.map +1 -0
- package/dist/RampsController-method-action-types.d.mts +566 -0
- package/dist/RampsController-method-action-types.d.mts.map +1 -0
- package/dist/RampsController-method-action-types.mjs +6 -0
- package/dist/RampsController-method-action-types.mjs.map +1 -0
- package/dist/RampsController.cjs +80 -19
- package/dist/RampsController.cjs.map +1 -1
- package/dist/RampsController.d.cts +16 -23
- package/dist/RampsController.d.cts.map +1 -1
- package/dist/RampsController.d.mts +16 -23
- package/dist/RampsController.d.mts.map +1 -1
- package/dist/RampsController.mjs +80 -19
- package/dist/RampsController.mjs.map +1 -1
- package/dist/RampsService-method-action-types.cjs +1 -1
- package/dist/RampsService-method-action-types.cjs.map +1 -1
- package/dist/RampsService-method-action-types.d.cts +5 -3
- package/dist/RampsService-method-action-types.d.cts.map +1 -1
- package/dist/RampsService-method-action-types.d.mts +5 -3
- package/dist/RampsService-method-action-types.d.mts.map +1 -1
- package/dist/RampsService-method-action-types.mjs +1 -1
- package/dist/RampsService-method-action-types.mjs.map +1 -1
- package/dist/RampsService.cjs +14 -6
- package/dist/RampsService.cjs.map +1 -1
- package/dist/RampsService.d.cts +4 -2
- package/dist/RampsService.d.cts.map +1 -1
- package/dist/RampsService.d.mts +4 -2
- package/dist/RampsService.d.mts.map +1 -1
- package/dist/RampsService.mjs +14 -6
- package/dist/RampsService.mjs.map +1 -1
- package/dist/TransakService-method-action-types.cjs +1 -1
- package/dist/TransakService-method-action-types.cjs.map +1 -1
- package/dist/TransakService-method-action-types.d.cts +1 -1
- package/dist/TransakService-method-action-types.d.mts +1 -1
- package/dist/TransakService-method-action-types.mjs +1 -1
- package/dist/TransakService-method-action-types.mjs.map +1 -1
- package/dist/index.cjs.map +1 -1
- package/dist/index.d.cts +2 -1
- package/dist/index.d.cts.map +1 -1
- package/dist/index.d.mts +2 -1
- package/dist/index.d.mts.map +1 -1
- package/dist/index.mjs.map +1 -1
- package/package.json +3 -3
package/dist/RampsController.cjs
CHANGED
|
@@ -10,7 +10,7 @@ var __classPrivateFieldSet = (this && this.__classPrivateFieldSet) || function (
|
|
|
10
10
|
if (typeof state === "function" ? receiver !== state || !f : !state.has(receiver)) throw new TypeError("Cannot write private member to an object whose class did not declare it");
|
|
11
11
|
return (kind === "a" ? f.call(receiver, value) : f ? f.value = value : state.set(receiver, value)), value;
|
|
12
12
|
};
|
|
13
|
-
var _RampsController_instances, _RampsController_requestCacheTTL, _RampsController_requestCacheMaxSize, _RampsController_pendingRequests, _RampsController_pendingResourceCount, _RampsController_orderPollingMeta, _RampsController_orderPollingTimer, _RampsController_isPolling, _RampsController_initPromise, _RampsController_clearPendingResourceCountForDependentResources, _RampsController_abortDependentRequests,
|
|
13
|
+
var _RampsController_instances, _RampsController_requestCacheTTL, _RampsController_requestCacheMaxSize, _RampsController_pendingRequests, _RampsController_pendingResourceCount, _RampsController_orderPollingMeta, _RampsController_orderPollingTimer, _RampsController_isPolling, _RampsController_initPromise, _RampsController_clearPendingResourceCountForDependentResources, _RampsController_abortDependentRequests, _RampsController_mutateRequests, _RampsController_removeRequestState, _RampsController_cleanupState, _RampsController_fireAndForget, _RampsController_requireRegion, _RampsController_isRegionCurrent, _RampsController_isTokenCurrent, _RampsController_isProviderCurrent, _RampsController_updateResourceField, _RampsController_setResourceLoading, _RampsController_setResourceError, _RampsController_updateRequestState, _RampsController_runInit, _RampsController_refreshOrder, _RampsController_pollPendingOrders, _RampsController_syncTransakAuthOnError;
|
|
14
14
|
Object.defineProperty(exports, "__esModule", { value: true });
|
|
15
15
|
exports.RampsController = exports.normalizeProviderCode = exports.getDefaultRampsControllerState = exports.RAMPS_CONTROLLER_REQUIRED_SERVICE_ACTIONS = exports.controllerName = void 0;
|
|
16
16
|
const base_controller_1 = require("@metamask/base-controller");
|
|
@@ -85,13 +85,13 @@ const rampsControllerMetadata = {
|
|
|
85
85
|
usedInUi: true,
|
|
86
86
|
},
|
|
87
87
|
providers: {
|
|
88
|
-
persist:
|
|
88
|
+
persist: false,
|
|
89
89
|
includeInDebugSnapshot: true,
|
|
90
90
|
includeInStateLogs: true,
|
|
91
91
|
usedInUi: true,
|
|
92
92
|
},
|
|
93
93
|
tokens: {
|
|
94
|
-
persist:
|
|
94
|
+
persist: false,
|
|
95
95
|
includeInDebugSnapshot: true,
|
|
96
96
|
includeInStateLogs: true,
|
|
97
97
|
usedInUi: true,
|
|
@@ -120,6 +120,12 @@ const rampsControllerMetadata = {
|
|
|
120
120
|
includeInStateLogs: true,
|
|
121
121
|
usedInUi: true,
|
|
122
122
|
},
|
|
123
|
+
providerAutoSelected: {
|
|
124
|
+
persist: true,
|
|
125
|
+
includeInDebugSnapshot: true,
|
|
126
|
+
includeInStateLogs: true,
|
|
127
|
+
usedInUi: true,
|
|
128
|
+
},
|
|
123
129
|
};
|
|
124
130
|
/**
|
|
125
131
|
* Creates a default resource state object.
|
|
@@ -163,6 +169,7 @@ function getDefaultRampsControllerState() {
|
|
|
163
169
|
},
|
|
164
170
|
},
|
|
165
171
|
orders: [],
|
|
172
|
+
providerAutoSelected: false,
|
|
166
173
|
};
|
|
167
174
|
}
|
|
168
175
|
exports.getDefaultRampsControllerState = getDefaultRampsControllerState;
|
|
@@ -196,6 +203,7 @@ function resetDependentResources(state, options) {
|
|
|
196
203
|
for (const key of DEPENDENT_RESOURCE_KEYS) {
|
|
197
204
|
resetResource(state, key, defaultState[key]);
|
|
198
205
|
}
|
|
206
|
+
state.providerAutoSelected = false;
|
|
199
207
|
}
|
|
200
208
|
// === HELPER FUNCTIONS ===
|
|
201
209
|
/**
|
|
@@ -270,6 +278,55 @@ const PENDING_ORDER_STATUSES = new Set([
|
|
|
270
278
|
const DEFAULT_POLLING_INTERVAL_MS = 30000;
|
|
271
279
|
const MAX_ERROR_COUNT = 5;
|
|
272
280
|
// === CONTROLLER DEFINITION ===
|
|
281
|
+
const MESSENGER_EXPOSED_METHODS = [
|
|
282
|
+
'executeRequest',
|
|
283
|
+
'abortRequest',
|
|
284
|
+
'getRequestState',
|
|
285
|
+
'setUserRegion',
|
|
286
|
+
'setSelectedProvider',
|
|
287
|
+
'init',
|
|
288
|
+
'getCountries',
|
|
289
|
+
'getTokens',
|
|
290
|
+
'setSelectedToken',
|
|
291
|
+
'getProviders',
|
|
292
|
+
'getPaymentMethods',
|
|
293
|
+
'setSelectedPaymentMethod',
|
|
294
|
+
'getQuotes',
|
|
295
|
+
'addOrder',
|
|
296
|
+
'removeOrder',
|
|
297
|
+
'startOrderPolling',
|
|
298
|
+
'stopOrderPolling',
|
|
299
|
+
'getBuyWidgetData',
|
|
300
|
+
'addPrecreatedOrder',
|
|
301
|
+
'getOrder',
|
|
302
|
+
'getOrderFromCallback',
|
|
303
|
+
'transakSetApiKey',
|
|
304
|
+
'transakSetAccessToken',
|
|
305
|
+
'transakClearAccessToken',
|
|
306
|
+
'transakSetAuthenticated',
|
|
307
|
+
'transakResetState',
|
|
308
|
+
'transakSendUserOtp',
|
|
309
|
+
'transakVerifyUserOtp',
|
|
310
|
+
'transakLogout',
|
|
311
|
+
'transakGetUserDetails',
|
|
312
|
+
'transakGetBuyQuote',
|
|
313
|
+
'transakGetKycRequirement',
|
|
314
|
+
'transakGetAdditionalRequirements',
|
|
315
|
+
'transakCreateOrder',
|
|
316
|
+
'transakGetOrder',
|
|
317
|
+
'transakGetUserLimits',
|
|
318
|
+
'transakRequestOtt',
|
|
319
|
+
'transakGeneratePaymentWidgetUrl',
|
|
320
|
+
'transakSubmitPurposeOfUsageForm',
|
|
321
|
+
'transakPatchUser',
|
|
322
|
+
'transakSubmitSsnDetails',
|
|
323
|
+
'transakConfirmPayment',
|
|
324
|
+
'transakGetTranslation',
|
|
325
|
+
'transakGetIdProofStatus',
|
|
326
|
+
'transakCancelOrder',
|
|
327
|
+
'transakCancelAllActiveOrders',
|
|
328
|
+
'transakGetActiveOrders',
|
|
329
|
+
];
|
|
273
330
|
/**
|
|
274
331
|
* Manages cryptocurrency on/off ramps functionality.
|
|
275
332
|
*/
|
|
@@ -330,7 +387,7 @@ class RampsController extends base_controller_1.BaseController {
|
|
|
330
387
|
_RampsController_initPromise.set(this, null);
|
|
331
388
|
__classPrivateFieldSet(this, _RampsController_requestCacheTTL, requestCacheTTL, "f");
|
|
332
389
|
__classPrivateFieldSet(this, _RampsController_requestCacheMaxSize, requestCacheMaxSize, "f");
|
|
333
|
-
|
|
390
|
+
this.messenger.registerMethodActionHandlers(this, MESSENGER_EXPOSED_METHODS);
|
|
334
391
|
}
|
|
335
392
|
/**
|
|
336
393
|
* Executes a request with caching, deduplication, and at most one in-flight
|
|
@@ -531,12 +588,17 @@ class RampsController extends base_controller_1.BaseController {
|
|
|
531
588
|
* fetches payment methods for that provider.
|
|
532
589
|
*
|
|
533
590
|
* @param providerId - The provider ID (e.g., "/providers/moonpay"), or null to clear.
|
|
591
|
+
* @param options - Optional settings for the selection.
|
|
592
|
+
* @param options.autoSelected - When true, marks the provider as system-guessed
|
|
593
|
+
* (soft selection). The UI will silently auto-switch on token conflict instead
|
|
594
|
+
* of showing the "Token Not Available" modal. Defaults to false.
|
|
534
595
|
* @throws If region is not set, providers are not loaded, or provider is not found.
|
|
535
596
|
*/
|
|
536
|
-
setSelectedProvider(providerId) {
|
|
597
|
+
setSelectedProvider(providerId, options) {
|
|
537
598
|
if (providerId === null) {
|
|
538
599
|
this.update((state) => {
|
|
539
600
|
state.providers.selected = null;
|
|
601
|
+
state.providerAutoSelected = false;
|
|
540
602
|
resetResource(state, 'paymentMethods');
|
|
541
603
|
});
|
|
542
604
|
return;
|
|
@@ -560,6 +622,7 @@ class RampsController extends base_controller_1.BaseController {
|
|
|
560
622
|
const tokenSupportedByProvider = !(assetId && supportedCryptos?.[assetId] === false);
|
|
561
623
|
this.update((state) => {
|
|
562
624
|
state.providers.selected = provider;
|
|
625
|
+
state.providerAutoSelected = options?.autoSelected ?? false;
|
|
563
626
|
resetResource(state, 'paymentMethods');
|
|
564
627
|
});
|
|
565
628
|
if (tokenSupportedByProvider) {
|
|
@@ -1033,23 +1096,25 @@ class RampsController extends base_controller_1.BaseController {
|
|
|
1033
1096
|
*/
|
|
1034
1097
|
async getOrder(providerCode, orderCode, wallet) {
|
|
1035
1098
|
const order = await this.messenger.call('RampsService:getOrder', providerCode, orderCode, wallet);
|
|
1099
|
+
const healedWalletAddress = order.walletAddress || wallet;
|
|
1100
|
+
const healedOrder = {
|
|
1101
|
+
...order,
|
|
1102
|
+
walletAddress: healedWalletAddress,
|
|
1103
|
+
providerOrderId: orderCode,
|
|
1104
|
+
};
|
|
1036
1105
|
this.update((state) => {
|
|
1037
1106
|
const idx = state.orders.findIndex((existing) => existing.providerOrderId === orderCode);
|
|
1038
1107
|
if (idx === -1) {
|
|
1039
|
-
state.orders.push(
|
|
1040
|
-
...order,
|
|
1041
|
-
providerOrderId: orderCode,
|
|
1042
|
-
});
|
|
1108
|
+
state.orders.push(healedOrder);
|
|
1043
1109
|
}
|
|
1044
1110
|
else {
|
|
1045
1111
|
state.orders[idx] = {
|
|
1046
1112
|
...state.orders[idx],
|
|
1047
|
-
...
|
|
1048
|
-
providerOrderId: orderCode,
|
|
1113
|
+
...healedOrder,
|
|
1049
1114
|
};
|
|
1050
1115
|
}
|
|
1051
1116
|
});
|
|
1052
|
-
return
|
|
1117
|
+
return healedOrder;
|
|
1053
1118
|
}
|
|
1054
1119
|
/**
|
|
1055
1120
|
* Extracts an order from a provider callback URL.
|
|
@@ -1063,7 +1128,8 @@ class RampsController extends base_controller_1.BaseController {
|
|
|
1063
1128
|
* @returns The unified order data.
|
|
1064
1129
|
*/
|
|
1065
1130
|
async getOrderFromCallback(providerCode, callbackUrl, wallet) {
|
|
1066
|
-
|
|
1131
|
+
const order = await this.messenger.call('RampsService:getOrderFromCallback', providerCode, callbackUrl, wallet);
|
|
1132
|
+
return order;
|
|
1067
1133
|
}
|
|
1068
1134
|
/**
|
|
1069
1135
|
* Sets the Transak API key used for all Transak API requests.
|
|
@@ -1474,10 +1540,6 @@ _RampsController_requestCacheTTL = new WeakMap(), _RampsController_requestCacheM
|
|
|
1474
1540
|
__classPrivateFieldGet(this, _RampsController_instances, "m", _RampsController_removeRequestState).call(this, cacheKey);
|
|
1475
1541
|
}
|
|
1476
1542
|
}
|
|
1477
|
-
}, _RampsController_registerActionHandlers = function _RampsController_registerActionHandlers() {
|
|
1478
|
-
this.messenger.registerActionHandler('RampsController:getOrder', this.getOrder.bind(this));
|
|
1479
|
-
this.messenger.registerActionHandler('RampsController:getQuotes', this.getQuotes.bind(this));
|
|
1480
|
-
this.messenger.registerActionHandler('RampsController:setSelectedToken', this.setSelectedToken.bind(this));
|
|
1481
1543
|
}, _RampsController_mutateRequests = function _RampsController_mutateRequests(fn) {
|
|
1482
1544
|
this.update((state) => {
|
|
1483
1545
|
const requests = state.requests;
|
|
@@ -1578,10 +1640,9 @@ async function _RampsController_refreshOrder(order) {
|
|
|
1578
1640
|
if (!providerCode || !order.providerOrderId || !order.walletAddress) {
|
|
1579
1641
|
return;
|
|
1580
1642
|
}
|
|
1581
|
-
const providerCodeSegment = normalizeProviderCode(providerCode);
|
|
1582
1643
|
const previousStatus = order.status;
|
|
1583
1644
|
try {
|
|
1584
|
-
const updatedOrder = await this.getOrder(
|
|
1645
|
+
const updatedOrder = await this.getOrder(providerCode, order.providerOrderId, order.walletAddress);
|
|
1585
1646
|
const meta = __classPrivateFieldGet(this, _RampsController_orderPollingMeta, "f").get(order.providerOrderId) ?? {
|
|
1586
1647
|
lastTimeFetched: 0,
|
|
1587
1648
|
errorCount: 0,
|