braintree-web
Version:
A suite of tools for integrating Braintree in the browser
63 lines (54 loc) • 1.64 kB
JavaScript
var BraintreeError = require("./braintree-error");
var assets = require("./assets");
var sharedErrors = require("./errors");
var VERSION = "3.118.2";
function createDeferredClient(options) {
var promise = Promise.resolve();
if (options.client) {
return Promise.resolve(options.client);
}
if (!(window.braintree && window.braintree.client)) {
promise = assets
.loadScript({
src: options.assetsUrl + "/web/" + VERSION + "/js/client.min.js",
})
.catch(function (err) {
return Promise.reject(
new BraintreeError({
type: sharedErrors.CLIENT_SCRIPT_FAILED_TO_LOAD.type,
code: sharedErrors.CLIENT_SCRIPT_FAILED_TO_LOAD.code,
message: sharedErrors.CLIENT_SCRIPT_FAILED_TO_LOAD.message,
details: {
originalError: err,
},
})
);
});
}
return promise.then(function () {
if (window.braintree.client.VERSION !== VERSION) {
return Promise.reject(
new BraintreeError({
type: sharedErrors.INCOMPATIBLE_VERSIONS.type,
code: sharedErrors.INCOMPATIBLE_VERSIONS.code,
message:
"Client (version " +
window.braintree.client.VERSION +
") and " +
options.name +
" (version " +
VERSION +
") components must be from the same SDK version.",
})
);
}
return window.braintree.client.create({
authorization: options.authorization,
debug: options.debug,
});
});
}
module.exports = {
create: createDeferredClient,
};
;