@metamask/ramps-controller 17.0.0 → 17.2.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 +30 -1
- package/dist/RampsController-method-action-types.cjs.map +1 -1
- package/dist/RampsController-method-action-types.d.cts +15 -1
- package/dist/RampsController-method-action-types.d.cts.map +1 -1
- package/dist/RampsController-method-action-types.d.mts +15 -1
- package/dist/RampsController-method-action-types.d.mts.map +1 -1
- package/dist/RampsController-method-action-types.mjs.map +1 -1
- package/dist/RampsController.cjs +74 -38
- package/dist/RampsController.cjs.map +1 -1
- package/dist/RampsController.d.cts +14 -3
- package/dist/RampsController.d.cts.map +1 -1
- package/dist/RampsController.d.mts +14 -3
- package/dist/RampsController.d.mts.map +1 -1
- package/dist/RampsController.mjs +44 -8
- package/dist/RampsController.mjs.map +1 -1
- package/dist/RampsService-method-action-types.cjs.map +1 -1
- package/dist/RampsService-method-action-types.d.cts.map +1 -1
- package/dist/RampsService-method-action-types.d.mts.map +1 -1
- package/dist/RampsService-method-action-types.mjs.map +1 -1
- package/dist/RampsService.cjs.map +1 -1
- package/dist/RampsService.d.cts.map +1 -1
- package/dist/RampsService.d.mts.map +1 -1
- package/dist/RampsService.mjs.map +1 -1
- package/dist/RequestCache.cjs.map +1 -1
- package/dist/RequestCache.d.cts.map +1 -1
- package/dist/RequestCache.d.mts.map +1 -1
- package/dist/RequestCache.mjs.map +1 -1
- package/dist/TransakService-method-action-types.cjs.map +1 -1
- package/dist/TransakService-method-action-types.d.cts +35 -1
- package/dist/TransakService-method-action-types.d.cts.map +1 -1
- package/dist/TransakService-method-action-types.d.mts +35 -1
- package/dist/TransakService-method-action-types.d.mts.map +1 -1
- package/dist/TransakService-method-action-types.mjs.map +1 -1
- package/dist/TransakService.cjs +128 -12
- package/dist/TransakService.cjs.map +1 -1
- package/dist/TransakService.d.cts +41 -3
- package/dist/TransakService.d.cts.map +1 -1
- package/dist/TransakService.d.mts +41 -3
- package/dist/TransakService.d.mts.map +1 -1
- package/dist/TransakService.mjs +123 -10
- package/dist/TransakService.mjs.map +1 -1
- package/dist/featureFlags.cjs +144 -17
- package/dist/featureFlags.cjs.map +1 -1
- package/dist/featureFlags.d.cts +65 -11
- package/dist/featureFlags.d.cts.map +1 -1
- package/dist/featureFlags.d.mts +65 -11
- package/dist/featureFlags.d.mts.map +1 -1
- package/dist/featureFlags.mjs +140 -16
- package/dist/featureFlags.mjs.map +1 -1
- package/dist/index.cjs +52 -49
- package/dist/index.cjs.map +1 -1
- package/dist/index.d.cts +2 -2
- package/dist/index.d.cts.map +1 -1
- package/dist/index.d.mts +2 -2
- package/dist/index.d.mts.map +1 -1
- package/dist/index.mjs +1 -1
- package/dist/index.mjs.map +1 -1
- package/dist/providerAvailability.cjs.map +1 -1
- package/dist/providerAvailability.d.cts.map +1 -1
- package/dist/providerAvailability.d.mts.map +1 -1
- package/dist/providerAvailability.mjs.map +1 -1
- package/dist/quoteClassification.cjs.map +1 -1
- package/dist/quoteClassification.d.cts.map +1 -1
- package/dist/quoteClassification.d.mts.map +1 -1
- package/dist/quoteClassification.mjs.map +1 -1
- package/dist/selectors.cjs +3 -3
- package/dist/selectors.cjs.map +1 -1
- package/dist/selectors.d.cts.map +1 -1
- package/dist/selectors.d.mts.map +1 -1
- package/dist/selectors.mjs.map +1 -1
- package/dist/transakApiErrorUtils.cjs +5 -5
- package/dist/transakApiErrorUtils.cjs.map +1 -1
- package/dist/transakApiErrorUtils.mjs.map +1 -1
- package/package.json +8 -6
package/dist/RampsController.cjs
CHANGED
|
@@ -10,16 +10,16 @@ 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_getDefaultRedirectUrl, _RampsController_pendingRequests, _RampsController_pendingResourceCount, _RampsController_pendingResourceGeneration, _RampsController_orderPollingMeta, _RampsController_orderPollingTimer, _RampsController_isPolling, _RampsController_initPromise, _RampsController_clearPendingResourceCountForDependentResources, _RampsController_abortDependentRequests,
|
|
13
|
+
var _RampsController_instances, _RampsController_requestCacheTTL, _RampsController_requestCacheMaxSize, _RampsController_getDefaultRedirectUrl, _RampsController_pendingRequests, _RampsController_pendingResourceCount, _RampsController_pendingResourceGeneration, _RampsController_orderPollingMeta, _RampsController_orderPollingTimer, _RampsController_isPolling, _RampsController_initPromise, _RampsController_clearPendingResourceCountForDependentResources, _RampsController_abortDependentRequests, _RampsController_resolveAllProvidersFlag, _RampsController_mutateRequests, _RampsController_removeRequestState, _RampsController_cleanupState, _RampsController_requireRegion, _RampsController_isRegionCurrent, _RampsController_isTokenCurrent, _RampsController_isProviderCurrent, _RampsController_updateResourceField, _RampsController_setResourceLoading, _RampsController_setResourceError, _RampsController_updateRequestState, _RampsController_runInit, _RampsController_syncUserRegionFromCountriesCatalog, _RampsController_pickWidenedQuote, _RampsController_getSupportingProvidersForRegion, _RampsController_filterProviderIdsBySupport, _RampsController_resolveProviderIdsForQuote, _RampsController_getPreferredProviderIdsFromOrders, _RampsController_refreshOrder, _RampsController_pollPendingOrders, _RampsController_syncTransakAuthOnError, _RampsController_getNormalizedTransakError;
|
|
14
14
|
Object.defineProperty(exports, "__esModule", { value: true });
|
|
15
15
|
exports.RampsController = exports.getInternalOrderCode = exports.getDefaultRampsControllerState = exports.RAMPS_CONTROLLER_REQUIRED_SERVICE_ACTIONS = exports.controllerName = void 0;
|
|
16
16
|
const base_controller_1 = require("@metamask/base-controller");
|
|
17
17
|
const controller_utils_1 = require("@metamask/controller-utils");
|
|
18
|
-
const
|
|
19
|
-
const
|
|
20
|
-
const
|
|
21
|
-
const
|
|
22
|
-
const
|
|
18
|
+
const featureFlags_js_1 = require("./featureFlags.cjs");
|
|
19
|
+
const providerAvailability_js_1 = require("./providerAvailability.cjs");
|
|
20
|
+
const rampsErrorCodes_js_1 = require("./rampsErrorCodes.cjs");
|
|
21
|
+
const RampsService_js_1 = require("./RampsService.cjs");
|
|
22
|
+
const RequestCache_js_1 = require("./RequestCache.cjs");
|
|
23
23
|
// === GENERAL ===
|
|
24
24
|
/**
|
|
25
25
|
* The name of the {@link RampsController}, used to namespace the
|
|
@@ -57,6 +57,7 @@ exports.RAMPS_CONTROLLER_REQUIRED_SERVICE_ACTIONS = [
|
|
|
57
57
|
'TransakService:getUserLimits',
|
|
58
58
|
'TransakService:requestOtt',
|
|
59
59
|
'TransakService:generatePaymentWidgetUrl',
|
|
60
|
+
'TransakService:createWidgetUrl',
|
|
60
61
|
'TransakService:submitPurposeOfUsageForm',
|
|
61
62
|
'TransakService:patchUser',
|
|
62
63
|
'TransakService:submitSsnDetails',
|
|
@@ -85,7 +86,7 @@ function hasHttpStatus(error) {
|
|
|
85
86
|
function getRampsErrorInfo(error) {
|
|
86
87
|
if (error instanceof controller_utils_1.BrokenCircuitError && hasStringMessage(error)) {
|
|
87
88
|
return {
|
|
88
|
-
errorKey:
|
|
89
|
+
errorKey: rampsErrorCodes_js_1.RAMPS_ERROR_CODES.CIRCUIT_BREAKER_OPEN,
|
|
89
90
|
message: error.message,
|
|
90
91
|
};
|
|
91
92
|
}
|
|
@@ -98,7 +99,7 @@ function getRampsErrorInfo(error) {
|
|
|
98
99
|
}
|
|
99
100
|
if (rawMessage?.includes(CIRCUIT_BREAKER_OPEN_ERROR)) {
|
|
100
101
|
return {
|
|
101
|
-
errorKey:
|
|
102
|
+
errorKey: rampsErrorCodes_js_1.RAMPS_ERROR_CODES.CIRCUIT_BREAKER_OPEN,
|
|
102
103
|
message: rawMessage,
|
|
103
104
|
};
|
|
104
105
|
}
|
|
@@ -354,16 +355,16 @@ function getInternalOrderCode(orderOrId) {
|
|
|
354
355
|
exports.getInternalOrderCode = getInternalOrderCode;
|
|
355
356
|
// === ORDER POLLING CONSTANTS ===
|
|
356
357
|
const TERMINAL_ORDER_STATUSES = new Set([
|
|
357
|
-
|
|
358
|
-
|
|
359
|
-
|
|
360
|
-
|
|
358
|
+
RampsService_js_1.RampsOrderStatus.Completed,
|
|
359
|
+
RampsService_js_1.RampsOrderStatus.Failed,
|
|
360
|
+
RampsService_js_1.RampsOrderStatus.Cancelled,
|
|
361
|
+
RampsService_js_1.RampsOrderStatus.IdExpired,
|
|
361
362
|
]);
|
|
362
363
|
const PENDING_ORDER_STATUSES = new Set([
|
|
363
|
-
|
|
364
|
-
|
|
365
|
-
|
|
366
|
-
|
|
364
|
+
RampsService_js_1.RampsOrderStatus.Pending,
|
|
365
|
+
RampsService_js_1.RampsOrderStatus.Created,
|
|
366
|
+
RampsService_js_1.RampsOrderStatus.Unknown,
|
|
367
|
+
RampsService_js_1.RampsOrderStatus.Precreated,
|
|
367
368
|
]);
|
|
368
369
|
const DEFAULT_POLLING_INTERVAL_MS = 30000;
|
|
369
370
|
const MAX_ERROR_COUNT = 5;
|
|
@@ -407,6 +408,7 @@ const MESSENGER_EXPOSED_METHODS = [
|
|
|
407
408
|
'transakGetUserLimits',
|
|
408
409
|
'transakRequestOtt',
|
|
409
410
|
'transakGeneratePaymentWidgetUrl',
|
|
411
|
+
'transakCreateWidgetUrl',
|
|
410
412
|
'transakSubmitPurposeOfUsageForm',
|
|
411
413
|
'transakPatchUser',
|
|
412
414
|
'transakSubmitSsnDetails',
|
|
@@ -443,7 +445,7 @@ class RampsController extends base_controller_1.BaseController {
|
|
|
443
445
|
* redirect URL used for the widened quote fetch when the caller omits
|
|
444
446
|
* `redirectUrl`. Defaults to a callback returning `undefined`.
|
|
445
447
|
*/
|
|
446
|
-
constructor({ messenger, state = {}, requestCacheTTL =
|
|
448
|
+
constructor({ messenger, state = {}, requestCacheTTL = RequestCache_js_1.DEFAULT_REQUEST_CACHE_TTL, requestCacheMaxSize = RequestCache_js_1.DEFAULT_REQUEST_CACHE_MAX_SIZE, getDefaultRedirectUrl, }) {
|
|
447
449
|
super({
|
|
448
450
|
messenger,
|
|
449
451
|
metadata: rampsControllerMetadata,
|
|
@@ -532,7 +534,7 @@ class RampsController extends base_controller_1.BaseController {
|
|
|
532
534
|
// If cache is not expired, return the cached data
|
|
533
535
|
if (!options?.forceRefresh) {
|
|
534
536
|
const cached = this.state.requests[cacheKey];
|
|
535
|
-
if (cached && !(0,
|
|
537
|
+
if (cached && !(0, RequestCache_js_1.isCacheExpired)(cached, ttl)) {
|
|
536
538
|
return cached.data;
|
|
537
539
|
}
|
|
538
540
|
}
|
|
@@ -545,7 +547,7 @@ class RampsController extends base_controller_1.BaseController {
|
|
|
545
547
|
? (__classPrivateFieldGet(this, _RampsController_pendingResourceGeneration, "f").get(resourceType) ?? 0)
|
|
546
548
|
: undefined;
|
|
547
549
|
// Update state to loading
|
|
548
|
-
__classPrivateFieldGet(this, _RampsController_instances, "m", _RampsController_updateRequestState).call(this, cacheKey, (0,
|
|
550
|
+
__classPrivateFieldGet(this, _RampsController_instances, "m", _RampsController_updateRequestState).call(this, cacheKey, (0, RequestCache_js_1.createLoadingState)());
|
|
549
551
|
// Set resource-level loading state (only on cache miss). Ref-count so concurrent
|
|
550
552
|
// requests for the same resource type (different cache keys) keep isLoading true.
|
|
551
553
|
if (resourceType) {
|
|
@@ -562,7 +564,7 @@ class RampsController extends base_controller_1.BaseController {
|
|
|
562
564
|
if (abortController.signal.aborted) {
|
|
563
565
|
throw new Error('Request was aborted');
|
|
564
566
|
}
|
|
565
|
-
__classPrivateFieldGet(this, _RampsController_instances, "m", _RampsController_updateRequestState).call(this, cacheKey, (0,
|
|
567
|
+
__classPrivateFieldGet(this, _RampsController_instances, "m", _RampsController_updateRequestState).call(this, cacheKey, (0, RequestCache_js_1.createSuccessState)(data, lastFetchedAt));
|
|
566
568
|
if (resourceType) {
|
|
567
569
|
const isCurrent = !options?.isResultCurrent || options.isResultCurrent();
|
|
568
570
|
if (isCurrent) {
|
|
@@ -576,7 +578,7 @@ class RampsController extends base_controller_1.BaseController {
|
|
|
576
578
|
throw error;
|
|
577
579
|
}
|
|
578
580
|
const { errorInfo, normalizedError } = getNormalizedRampsError(error);
|
|
579
|
-
__classPrivateFieldGet(this, _RampsController_instances, "m", _RampsController_updateRequestState).call(this, cacheKey, (0,
|
|
581
|
+
__classPrivateFieldGet(this, _RampsController_instances, "m", _RampsController_updateRequestState).call(this, cacheKey, (0, RequestCache_js_1.createErrorState)(errorInfo.message, lastFetchedAt, errorInfo.errorKey));
|
|
580
582
|
if (resourceType) {
|
|
581
583
|
const isCurrent = !options?.isResultCurrent || options.isResultCurrent();
|
|
582
584
|
if (isCurrent) {
|
|
@@ -762,7 +764,7 @@ class RampsController extends base_controller_1.BaseController {
|
|
|
762
764
|
* @returns An array of countries.
|
|
763
765
|
*/
|
|
764
766
|
async getCountries(options) {
|
|
765
|
-
const cacheKey = (0,
|
|
767
|
+
const cacheKey = (0, RequestCache_js_1.createCacheKey)('getCountries', []);
|
|
766
768
|
const countries = await this.executeRequest(cacheKey, async () => {
|
|
767
769
|
return this.messenger.call('RampsService:getCountries');
|
|
768
770
|
}, { ...options, resourceType: 'countries' });
|
|
@@ -785,7 +787,7 @@ class RampsController extends base_controller_1.BaseController {
|
|
|
785
787
|
async getTokens(region, action = 'buy', options) {
|
|
786
788
|
const regionToUse = region ?? __classPrivateFieldGet(this, _RampsController_instances, "m", _RampsController_requireRegion).call(this);
|
|
787
789
|
const normalizedRegion = regionToUse.toLowerCase().trim();
|
|
788
|
-
const cacheKey = (0,
|
|
790
|
+
const cacheKey = (0, RequestCache_js_1.createCacheKey)('getTokens', [
|
|
789
791
|
normalizedRegion,
|
|
790
792
|
action,
|
|
791
793
|
options?.provider,
|
|
@@ -850,7 +852,7 @@ class RampsController extends base_controller_1.BaseController {
|
|
|
850
852
|
async getProviders(region, options) {
|
|
851
853
|
const regionToUse = region ?? __classPrivateFieldGet(this, _RampsController_instances, "m", _RampsController_requireRegion).call(this);
|
|
852
854
|
const normalizedRegion = regionToUse.toLowerCase().trim();
|
|
853
|
-
const cacheKey = (0,
|
|
855
|
+
const cacheKey = (0, RequestCache_js_1.createCacheKey)('getProviders', [
|
|
854
856
|
normalizedRegion,
|
|
855
857
|
options?.provider,
|
|
856
858
|
options?.crypto,
|
|
@@ -890,7 +892,7 @@ class RampsController extends base_controller_1.BaseController {
|
|
|
890
892
|
const assetIdToUse = options?.assetId ?? this.state.tokens.selected?.assetId ?? '';
|
|
891
893
|
const providerToUse = options?.provider ?? this.state.providers.selected?.id ?? '';
|
|
892
894
|
const normalizedRegion = regionCode.toLowerCase().trim();
|
|
893
|
-
const cacheKey = (0,
|
|
895
|
+
const cacheKey = (0, RequestCache_js_1.createCacheKey)('getPaymentMethods', [
|
|
894
896
|
normalizedRegion,
|
|
895
897
|
assetIdToUse,
|
|
896
898
|
providerToUse,
|
|
@@ -1014,7 +1016,13 @@ class RampsController extends base_controller_1.BaseController {
|
|
|
1014
1016
|
const wantsAutoSelection = !options.providers &&
|
|
1015
1017
|
(options.autoSelectProvider === true ||
|
|
1016
1018
|
options.restrictToKnownOrNativeProviders === true);
|
|
1017
|
-
|
|
1019
|
+
// Single flag read per call: the enabled bit and the allowlist come from
|
|
1020
|
+
// the same `RemoteFeatureFlagController` state snapshot, so a flag edit
|
|
1021
|
+
// during the awaited quote fetch cannot produce a mixed read.
|
|
1022
|
+
const { enabled: allProvidersEnabled, allowlist: providerAllowlist } = wantsAutoSelection
|
|
1023
|
+
? __classPrivateFieldGet(this, _RampsController_instances, "m", _RampsController_resolveAllProvidersFlag).call(this)
|
|
1024
|
+
: { enabled: false, allowlist: undefined };
|
|
1025
|
+
const widenToAllProviders = wantsAutoSelection && allProvidersEnabled;
|
|
1018
1026
|
let providersToUse;
|
|
1019
1027
|
let widenedProviderCatalog = this.state.providers.data;
|
|
1020
1028
|
if (options.providers) {
|
|
@@ -1086,7 +1094,7 @@ class RampsController extends base_controller_1.BaseController {
|
|
|
1086
1094
|
// (flag off) never injects.
|
|
1087
1095
|
const effectiveRedirectUrl = options.redirectUrl ??
|
|
1088
1096
|
(widenToAllProviders ? __classPrivateFieldGet(this, _RampsController_getDefaultRedirectUrl, "f").call(this) : undefined);
|
|
1089
|
-
const cacheKey = (0,
|
|
1097
|
+
const cacheKey = (0, RequestCache_js_1.createCacheKey)('getQuotes', [
|
|
1090
1098
|
normalizedRegion,
|
|
1091
1099
|
normalizedFiat,
|
|
1092
1100
|
normalizedAssetId,
|
|
@@ -1125,6 +1133,7 @@ class RampsController extends base_controller_1.BaseController {
|
|
|
1125
1133
|
amount: options.amount,
|
|
1126
1134
|
fiat: normalizedFiat,
|
|
1127
1135
|
providers: widenedProviderCatalog,
|
|
1136
|
+
allowlist: providerAllowlist,
|
|
1128
1137
|
});
|
|
1129
1138
|
if (!selectedQuote) {
|
|
1130
1139
|
// No quote fits the published provider limits: surface "no quote"
|
|
@@ -1263,7 +1272,7 @@ class RampsController extends base_controller_1.BaseController {
|
|
|
1263
1272
|
logos: { light: '', dark: '', height: 0, width: 0 },
|
|
1264
1273
|
},
|
|
1265
1274
|
walletAddress,
|
|
1266
|
-
status:
|
|
1275
|
+
status: RampsService_js_1.RampsOrderStatus.Precreated,
|
|
1267
1276
|
orderType: 'buy',
|
|
1268
1277
|
createdAt: Date.now(),
|
|
1269
1278
|
isOnlyLink: false,
|
|
@@ -1621,6 +1630,25 @@ class RampsController extends base_controller_1.BaseController {
|
|
|
1621
1630
|
transakGeneratePaymentWidgetUrl(ottToken, quote, walletAddress, extraParams) {
|
|
1622
1631
|
return this.messenger.call('TransakService:generatePaymentWidgetUrl', ottToken, quote, walletAddress, extraParams);
|
|
1623
1632
|
}
|
|
1633
|
+
/**
|
|
1634
|
+
* Creates a Transak payment widget URL via the ramps API proxy, which
|
|
1635
|
+
* injects the partner API key server-side. Replaces the OTT flow
|
|
1636
|
+
* ({@link transakRequestOtt} + {@link transakGeneratePaymentWidgetUrl}).
|
|
1637
|
+
*
|
|
1638
|
+
* @param quote - The buy quote to pre-fill in the widget.
|
|
1639
|
+
* @param walletAddress - The destination wallet address.
|
|
1640
|
+
* @param extraParams - Optional additional widget parameters (e.g. theming).
|
|
1641
|
+
* @returns The single-use widget URL.
|
|
1642
|
+
*/
|
|
1643
|
+
async transakCreateWidgetUrl(quote, walletAddress, extraParams) {
|
|
1644
|
+
try {
|
|
1645
|
+
return await this.messenger.call('TransakService:createWidgetUrl', quote, walletAddress, extraParams);
|
|
1646
|
+
}
|
|
1647
|
+
catch (error) {
|
|
1648
|
+
throw __classPrivateFieldGet(this, _RampsController_instances, "m", _RampsController_getNormalizedTransakError).call(this, error, { syncAuth: true })
|
|
1649
|
+
.normalizedError;
|
|
1650
|
+
}
|
|
1651
|
+
}
|
|
1624
1652
|
/**
|
|
1625
1653
|
* Submits the user's purpose of usage form for KYC compliance.
|
|
1626
1654
|
*
|
|
@@ -1773,13 +1801,16 @@ _RampsController_requestCacheTTL = new WeakMap(), _RampsController_requestCacheM
|
|
|
1773
1801
|
__classPrivateFieldGet(this, _RampsController_instances, "m", _RampsController_removeRequestState).call(this, cacheKey);
|
|
1774
1802
|
}
|
|
1775
1803
|
}
|
|
1776
|
-
},
|
|
1804
|
+
}, _RampsController_resolveAllProvidersFlag = function _RampsController_resolveAllProvidersFlag() {
|
|
1777
1805
|
try {
|
|
1778
1806
|
const remoteFeatureFlagState = this.messenger.call('RemoteFeatureFlagController:getState');
|
|
1779
|
-
return
|
|
1807
|
+
return {
|
|
1808
|
+
enabled: (0, featureFlags_js_1.isHeadlessAllProvidersEnabled)(remoteFeatureFlagState),
|
|
1809
|
+
allowlist: (0, featureFlags_js_1.getHeadlessProviderAllowlist)(remoteFeatureFlagState),
|
|
1810
|
+
};
|
|
1780
1811
|
}
|
|
1781
1812
|
catch {
|
|
1782
|
-
return false;
|
|
1813
|
+
return { enabled: false };
|
|
1783
1814
|
}
|
|
1784
1815
|
}, _RampsController_mutateRequests = function _RampsController_mutateRequests(fn) {
|
|
1785
1816
|
this.update((state) => {
|
|
@@ -1830,8 +1861,8 @@ _RampsController_requestCacheTTL = new WeakMap(), _RampsController_requestCacheM
|
|
|
1830
1861
|
const keys = Object.keys(requests);
|
|
1831
1862
|
for (const key of keys) {
|
|
1832
1863
|
const entry = requests[key];
|
|
1833
|
-
if (entry?.status ===
|
|
1834
|
-
(0,
|
|
1864
|
+
if (entry?.status === RequestCache_js_1.RequestStatus.SUCCESS &&
|
|
1865
|
+
(0, RequestCache_js_1.isCacheExpired)(entry, ttl)) {
|
|
1835
1866
|
delete requests[key];
|
|
1836
1867
|
}
|
|
1837
1868
|
}
|
|
@@ -1892,8 +1923,13 @@ _RampsController_requestCacheTTL = new WeakMap(), _RampsController_requestCacheM
|
|
|
1892
1923
|
this.update((state) => {
|
|
1893
1924
|
state.userRegion = userRegion;
|
|
1894
1925
|
});
|
|
1895
|
-
}, _RampsController_pickWidenedQuote = function _RampsController_pickWidenedQuote(response, { amount, fiat, providers, }) {
|
|
1926
|
+
}, _RampsController_pickWidenedQuote = function _RampsController_pickWidenedQuote(response, { amount, fiat, providers, allowlist, }) {
|
|
1896
1927
|
const providerByCode = new Map(providers.map((provider) => [provider.id, provider]));
|
|
1928
|
+
const allowedProviderIds = allowlist && allowlist.length > 0
|
|
1929
|
+
? new Set(allowlist.map(featureFlags_js_1.normalizeHeadlessProviderId))
|
|
1930
|
+
: undefined;
|
|
1931
|
+
const isAllowedProvider = (quote) => !allowedProviderIds ||
|
|
1932
|
+
allowedProviderIds.has((0, featureFlags_js_1.normalizeHeadlessProviderId)(quote.provider));
|
|
1897
1933
|
const fitsProviderLimits = (quote) => {
|
|
1898
1934
|
const provider = providerByCode.get(quote.provider);
|
|
1899
1935
|
const limit = provider?.limits?.fiat?.[fiat]?.[quote.quote.paymentMethod];
|
|
@@ -1904,7 +1940,7 @@ _RampsController_requestCacheTTL = new WeakMap(), _RampsController_requestCacheM
|
|
|
1904
1940
|
}
|
|
1905
1941
|
return amount >= limit.minAmount && amount <= limit.maxAmount;
|
|
1906
1942
|
};
|
|
1907
|
-
const candidates = response.success.filter(fitsProviderLimits);
|
|
1943
|
+
const candidates = response.success.filter((quote) => isAllowedProvider(quote) && fitsProviderLimits(quote));
|
|
1908
1944
|
if (candidates.length === 0) {
|
|
1909
1945
|
return undefined;
|
|
1910
1946
|
}
|
|
@@ -1952,7 +1988,7 @@ async function _RampsController_getSupportingProvidersForRegion({ assetId, regio
|
|
|
1952
1988
|
// Case-insensitive CAIP-19 matching is shared with headless-buy consumers
|
|
1953
1989
|
// via `getProvidersServingAsset`, so the controller and the UI region gate
|
|
1954
1990
|
// cannot disagree about which providers serve the asset.
|
|
1955
|
-
const supporting = (0,
|
|
1991
|
+
const supporting = (0, providerAvailability_js_1.getProvidersServingAsset)(providers, assetId);
|
|
1956
1992
|
return { supporting, all: providers };
|
|
1957
1993
|
}, _RampsController_filterProviderIdsBySupport =
|
|
1958
1994
|
/**
|
|
@@ -2045,7 +2081,7 @@ async function _RampsController_resolveProviderIdsForQuote({ assetId, region, pr
|
|
|
2045
2081
|
}, _RampsController_getPreferredProviderIdsFromOrders = function _RampsController_getPreferredProviderIdsFromOrders() {
|
|
2046
2082
|
const orderedIds = [];
|
|
2047
2083
|
const completedOrders = this.state.orders
|
|
2048
|
-
.filter((order) => order.status ===
|
|
2084
|
+
.filter((order) => order.status === RampsService_js_1.RampsOrderStatus.Completed && order.provider?.id)
|
|
2049
2085
|
.sort((orderA, orderB) => orderB.createdAt - orderA.createdAt);
|
|
2050
2086
|
for (const order of completedOrders) {
|
|
2051
2087
|
const id = order.provider?.id;
|
|
@@ -2073,7 +2109,7 @@ async function _RampsController_refreshOrder(order) {
|
|
|
2073
2109
|
lastTimeFetched: 0,
|
|
2074
2110
|
errorCount: 0,
|
|
2075
2111
|
};
|
|
2076
|
-
if (updatedOrder.status ===
|
|
2112
|
+
if (updatedOrder.status === RampsService_js_1.RampsOrderStatus.Unknown) {
|
|
2077
2113
|
meta.errorCount = Math.min(meta.errorCount + 1, MAX_ERROR_COUNT);
|
|
2078
2114
|
}
|
|
2079
2115
|
else {
|