paypal-braintree-web-client
Advanced tools
Comparing version 4.0.38 to 4.0.39
{ | ||
"name": "paypal-braintree-web-client", | ||
"version": "4.0.38", | ||
"version": "4.0.39", | ||
"description": "Shared config between PayPal/Braintree.", | ||
@@ -59,2 +59,3 @@ "main": "index.js", | ||
"bowser": "^1.9.4", | ||
"jsx-pragmatic": "^1.0.11", | ||
"paypal-sdk-constants": "^1.0.12", | ||
@@ -65,2 +66,3 @@ "zalgo-promise": "^1.0.22" | ||
"babel-core": "^7.0.0-bridge.0", | ||
"cheerio": "^1.0.0-rc.2", | ||
"esdoc": "^1.0.4", | ||
@@ -67,0 +69,0 @@ "esdoc-flow-type-plugin": "^1.0.1", |
@@ -20,3 +20,5 @@ "use strict"; | ||
const DEFAULT_SDK_META = { | ||
url: '' | ||
url: '', | ||
stageHost: '', | ||
apiStageHost: '' | ||
}; | ||
@@ -23,0 +25,0 @@ exports.DEFAULT_SDK_META = DEFAULT_SDK_META; |
@@ -10,2 +10,4 @@ "use strict"; | ||
var _jsxPragmatic = require("jsx-pragmatic"); | ||
var _constants = require("./constants"); | ||
@@ -17,3 +19,4 @@ | ||
// eslint-disable-next-line import/no-nodejs-modules | ||
function _extends() { _extends = Object.assign || function (target) { for (var i = 1; i < arguments.length; i++) { var source = arguments[i]; for (var key in source) { if (Object.prototype.hasOwnProperty.call(source, key)) { target[key] = source[key]; } } } return target; }; return _extends.apply(this, arguments); } | ||
function validatePaymentsSDKUrl({ | ||
@@ -107,5 +110,21 @@ protocol, | ||
function validateHost(url) { | ||
const { | ||
hostname | ||
} = _url.default.parse(`https://${url}`, true); | ||
if (url !== hostname) { | ||
throw new Error(`Expected only host to be passed, got ${url}`); | ||
} | ||
if (!url.endsWith(_constants.HOST.PAYPAL)) { | ||
throw new Error(`Expected a paypal host`); | ||
} | ||
} | ||
function unpackSDKMeta(sdkMeta) { | ||
const { | ||
url | ||
url, | ||
stageHost, | ||
apiStageHost | ||
} = sdkMeta ? JSON.parse(Buffer.from(sdkMeta, 'base64').toString('utf8')) : _constants.DEFAULT_SDK_META; | ||
@@ -117,2 +136,10 @@ | ||
if (stageHost) { | ||
validateHost(stageHost); | ||
} | ||
if (apiStageHost) { | ||
validateHost(apiStageHost); | ||
} | ||
const getSDKLoader = ({ | ||
@@ -123,29 +150,43 @@ baseURL = _constants.DEFAULT_LEGACY_SDK_BASE_URL, | ||
if (url) { | ||
return `<script nonce="${nonce}" src="${url}"></script>`; | ||
const attrs = {}; | ||
if (stageHost) { | ||
attrs[_paypalSdkConstants.SDK_SETTINGS.STAGE_HOST] = stageHost; | ||
} | ||
if (apiStageHost) { | ||
attrs[_paypalSdkConstants.SDK_SETTINGS.API_STAGE_HOST] = apiStageHost; | ||
} | ||
return (0, _jsxPragmatic.node)("script", _extends({ | ||
nonce: nonce, | ||
src: url | ||
}, attrs)).render((0, _jsxPragmatic.html)()); | ||
} | ||
return ` | ||
<script nonce="${nonce}"> | ||
(function() { | ||
if (!window.name || window.name.indexOf('xcomponent') !== 0) { | ||
return; | ||
} | ||
return (0, _jsxPragmatic.node)("script", { | ||
nonce: nonce, | ||
innerHTML: ` | ||
(function() { | ||
if (!window.name || window.name.indexOf('xcomponent') !== 0) { | ||
return; | ||
} | ||
var version = window.name.split('__')[2].replace(/_/g, '.'); | ||
if (!version.match(/^[0-9a-zA-Z.]+$/)) { | ||
return; | ||
} | ||
var version = window.name.split('__')[2].replace(/_/g, '.'); | ||
if (version === '4' || version === 'latest') { | ||
version = ''; | ||
} | ||
if (!version.match(/^[0-9a-zA-Z.]+$/)) { | ||
return; | ||
} | ||
var url = '${baseURL}/checkout' + (version ? ('.' + version) : '') + '.js'; | ||
if (version === '4' || version === 'latest') { | ||
version = ''; | ||
} | ||
var scriptTag = '<scr' + 'ipt src="${url}" data-paypal-checkout data-no-bridge data-state="ppxo_checkout"></scr' + 'ipt>'; | ||
document.write(scriptTag); | ||
})(); | ||
</script> | ||
`; | ||
var url = '${baseURL}checkout' + (version ? ('.' + version) : '') + '.js'; | ||
var scriptTag = '<scr' + 'ipt src="' + url + '" data-paypal-checkout data-no-bridge data-state="ppxo_checkout"></scr' + 'ipt>'; | ||
document.write(scriptTag); | ||
})(); | ||
` | ||
}).render((0, _jsxPragmatic.html)()); | ||
}; | ||
@@ -152,0 +193,0 @@ |
@@ -5,8 +5,10 @@ /* @flow */ | ||
import { getScriptUrl } from './script'; | ||
import { getScriptUrl, getStageHost, getAPIStageHost } from './script'; | ||
export function getSDKMeta() : string { | ||
return base64encode(JSON.stringify({ | ||
url: getScriptUrl() | ||
url: getScriptUrl(), | ||
stageHost: getStageHost(), | ||
apiStageHost: getAPIStageHost() | ||
})); | ||
} |
52607
26
944
6
9
+ Addedjsx-pragmatic@^1.0.11
+ Addedjsx-pragmatic@1.0.14(transitive)