@airwallex/components-sdk
Advanced tools
Comparing version 1.15.0 to 1.16.0
@@ -0,1 +1,9 @@ | ||
# [1.16.0](https://gitlab.awx.im/airwallex-dev-scale/components-sdk/compare/v1.15.0...v1.16.0) (2024-12-19) | ||
### Features | ||
* add init enabledElement option ([239af6a](https://gitlab.awx.im/airwallex-dev-scale/components-sdk/commit/239af6a1df44a3118176458595931f7b7fdbdc2c)) | ||
* address comment ([e98562e](https://gitlab.awx.im/airwallex-dev-scale/components-sdk/commit/e98562e71d290fcfa860f59efb5393814baff687)) | ||
# [1.15.0](https://gitlab.awx.im/airwallex-dev-scale/components-sdk/compare/v1.14.2...v1.15.0) (2024-12-16) | ||
@@ -2,0 +10,0 @@ |
120
lib/index.js
@@ -91,3 +91,3 @@ 'use strict'; | ||
var name = "@airwallex/components-sdk"; | ||
var version = "1.14.2"; | ||
var version = "1.15.0"; | ||
var main = "./lib/index.js"; | ||
@@ -258,3 +258,3 @@ var module$1 = "./lib/index.mjs"; | ||
payouts: '/widgets/payouts/sdk/v1/index.js', | ||
payment: '/assets/elements.bundle.min.js', | ||
payments: '/assets/elements.bundle.min.js', | ||
sca: '/hosted-sca/sdk/v1/index.js', | ||
@@ -264,6 +264,8 @@ taxForm: '/widgets/taxForm/sdk/v1/index.js' | ||
var ELEMENT_TO_SDK = { | ||
// legacy | ||
kyc: 'kyc', | ||
paymentsKyb: 'paymentsKyb', | ||
// rfi elements | ||
kycRfi: 'rfi', | ||
transactionRfi: 'rfi', | ||
kybRfi: 'rfi', | ||
paymentEnablementRfi: 'rfi', | ||
@@ -274,14 +276,10 @@ // payouts elements | ||
// payment elements | ||
hpp: 'payment', | ||
cvc: 'payment', | ||
card: 'payment', | ||
qrcode: 'payment', | ||
expiry: 'payment', | ||
wechat: 'payment', | ||
dropIn: 'payment', | ||
redirect: 'payment', | ||
cardNumber: 'payment', | ||
applePayButton: 'payment', | ||
googlePayButton: 'payment', | ||
fullFeaturedCard: 'payment', | ||
hpp: 'payments', | ||
cvc: 'payments', | ||
card: 'payments', | ||
expiry: 'payments', | ||
dropIn: 'payments', | ||
cardNumber: 'payments', | ||
applePayButton: 'payments', | ||
googlePayButton: 'payments', | ||
// sca elements | ||
@@ -293,5 +291,28 @@ scaSetup: 'sca', | ||
}; | ||
var DOMAIN_FUNCTIONS_NAMESPACES = ['payment', 'sca']; | ||
var ELEMENT_GROUP_TO_ELEMENT = { | ||
payments: [ | ||
'hpp', | ||
'cvc', | ||
'card', | ||
'expiry', | ||
'dropIn', | ||
'cardNumber', | ||
'applePayButton', | ||
'googlePayButton', | ||
], | ||
payouts: ['payoutForm', 'beneficiaryForm'], | ||
onboarding: ['kyc', 'paymentsKyb'], | ||
risk: [ | ||
'scaSetup', | ||
'scaVerify', | ||
'scaManagement', | ||
'transactionRfi', | ||
'kycRfi', | ||
'paymentEnablementRfi', | ||
] | ||
}; | ||
var DOMAIN_FUNCTIONS_NAMESPACES = ['payments', 'sca']; | ||
var timestamp = Date.now(); | ||
var isElementGroup = function (name) { return Object.keys(ELEMENT_GROUP_TO_ELEMENT).includes(name); }; | ||
var sleep = function (delay) { | ||
@@ -301,10 +322,40 @@ if (delay === void 0) { delay = 500; } | ||
}; | ||
var getInternalSDKByElementName = function (elementName) { | ||
var getSDKByElementName = function (elementName) { | ||
return ELEMENT_TO_SDK[elementName]; | ||
}; | ||
var getHost = function (name, env) { | ||
var host = name === 'payment' ? PA_STATIC_HOST : STATIC_HOST; | ||
var host = name === 'payments' ? PA_STATIC_HOST : STATIC_HOST; | ||
return host[env] || host.prod; | ||
}; | ||
/** | ||
* get the elements and sdks that need registry by controller | ||
* @param enabledElements the enabledElements passed in init params | ||
* @returns array of deduplicated elementName pair with sdkName | ||
*/ | ||
var getSDKsByEnabledElements = function (enabledElements) { | ||
// e.g., ['hpp', 'payoutForm', 'kyc', 'kyc'] | ||
var usedElements = enabledElements.reduce(function (elementArr, enabledEle) { | ||
return elementArr.concat(isElementGroup(enabledEle) | ||
? ELEMENT_GROUP_TO_ELEMENT[enabledEle] | ||
: enabledEle); | ||
}, []); | ||
return Array.from(new Set(usedElements)).map(function (elementName) { return ({ | ||
elementName: elementName, | ||
sdkName: getSDKByElementName(elementName) | ||
}); }); | ||
}; | ||
var getFunctionsByEnabledElements = function (enabledElements) { | ||
return Array.from(new Set(getSDKsByEnabledElements(enabledElements) | ||
.map(function (_a) { | ||
var sdkName = _a.sdkName; | ||
return sdkName; | ||
}) | ||
.filter(function (usedSdkName) { | ||
return DOMAIN_FUNCTIONS_NAMESPACES.includes(usedSdkName); | ||
}))); | ||
}; | ||
var getWindowSDKInstanceName = function (name) { | ||
return name === 'payments' ? 'payment' : name; | ||
}; | ||
/** | ||
* get the CDN url of a specific package | ||
@@ -446,2 +497,3 @@ * @param name declare the element name | ||
initPromise = new Promise(function (resolve, reject) { | ||
var _a; | ||
var initOptions = __assign(__assign({}, options), { env: options.env && ENV[options.env] ? options.env : ENV.prod }); | ||
@@ -454,4 +506,7 @@ window.AirwallexComponentsSDK.__env__ = initOptions.env; | ||
}).then(function () { return window._AirwallexSDKs.__controller__.init(initOptions); }); | ||
// For old version backward compatibility | ||
var enabledElements = (_a = options.enabledElements) !== null && _a !== void 0 ? _a : []; | ||
var functionsNamespaces = getFunctionsByEnabledElements(enabledElements); | ||
// load SDK functions scripts | ||
var functionsPromises = DOMAIN_FUNCTIONS_NAMESPACES.map(function (functionsNamespace) { | ||
var functionsPromises = functionsNamespaces.map(function (functionsNamespace) { | ||
return getLoadScriptPromise({ | ||
@@ -465,7 +520,24 @@ env: initOptions.env, | ||
functionsNamespace: functionsNamespace, | ||
instance: window._AirwallexSDKs[functionsNamespace] | ||
instance: window._AirwallexSDKs[getWindowSDKInstanceName(functionsNamespace)] | ||
}); | ||
}); | ||
}); | ||
Promise.all(__spreadArray([controllerPromise], functionsPromises, true)) | ||
// load SDK elements scripts | ||
var enabledSDKs = getSDKsByEnabledElements(enabledElements); | ||
var elementsPromises = enabledSDKs.map(function (_a) { | ||
var sdkNamespace = _a.sdkName, elementName = _a.elementName; | ||
return getLoadScriptPromise({ | ||
scriptName: sdkNamespace, | ||
env: initOptions.env | ||
}) | ||
.then(function () { return controllerPromise; }) | ||
.then(function () { | ||
return window._AirwallexSDKs.__controller__.registerElement({ | ||
sdkName: sdkNamespace, | ||
elementName: elementName, | ||
instance: window._AirwallexSDKs[getWindowSDKInstanceName(sdkNamespace)] | ||
}); | ||
}); | ||
}); | ||
Promise.all(__spreadArray(__spreadArray([controllerPromise], functionsPromises, true), elementsPromises, true)) | ||
.then(function () { | ||
@@ -505,3 +577,3 @@ logInfo('[components-sdk] SDK initialized', { | ||
_a.sent(); | ||
sdkName = getInternalSDKByElementName(elementName) || elementName; | ||
sdkName = getSDKByElementName(elementName); | ||
start = now(); | ||
@@ -520,3 +592,3 @@ _a.label = 2; | ||
elementName: elementName, | ||
instance: window._AirwallexSDKs[sdkName] | ||
instance: window._AirwallexSDKs[getWindowSDKInstanceName(sdkName)] | ||
})]; | ||
@@ -556,3 +628,3 @@ case 4: | ||
*/ | ||
var PREFETCH_SCRIPT_LIST = __spreadArray([SDK_CONTROLLER], DOMAIN_FUNCTIONS_NAMESPACES, true); | ||
var PREFETCH_SCRIPT_LIST = [SDK_CONTROLLER]; | ||
/** | ||
@@ -559,0 +631,0 @@ * Prefetch scripts by preload link, only for production as there's no environment context before SDK init |
{ | ||
"name": "@airwallex/components-sdk", | ||
"version": "1.15.0", | ||
"version": "1.16.0", | ||
"main": "./lib/index.js", | ||
@@ -5,0 +5,0 @@ "module": "./lib/index.mjs", |
@@ -580,2 +580,10 @@ # Airwallex Components SDK | ||
# [1.16.0](https://gitlab.awx.im/airwallex-dev-scale/components-sdk/compare/v1.15.0...v1.16.0) (2024-12-19) | ||
### Features | ||
* add init enabledElement option ([239af6a](https://gitlab.awx.im/airwallex-dev-scale/components-sdk/commit/239af6a1df44a3118176458595931f7b7fdbdc2c)) | ||
* address comment ([e98562e](https://gitlab.awx.im/airwallex-dev-scale/components-sdk/commit/e98562e71d290fcfa860f59efb5393814baff687)) | ||
# [1.15.0](https://gitlab.awx.im/airwallex-dev-scale/components-sdk/compare/v1.14.2...v1.15.0) (2024-12-16) | ||
@@ -582,0 +590,0 @@ |
Sorry, the diff of this file is too big to display
Sorry, the diff of this file is not supported yet
698750
16396
803