Home Reference Source

src/meta.js

/* @flow */

import { SDK_SETTINGS } from '@paypal/sdk-constants/src';
import { base64encode, ATTRIBUTES } from '@krakenjs/belter/src';

import { getScriptUrl, getSDKAttributes } from './script';

const ALLOWED_ATTRS = [
    SDK_SETTINGS.AMOUNT,
    SDK_SETTINGS.MERCHANT_ID,
    SDK_SETTINGS.PARTNER_ATTRIBUTION_ID,
    SDK_SETTINGS.POPUPS_DISABLED,
    SDK_SETTINGS.ENABLE_3DS,
    SDK_SETTINGS.SDK_INTEGRATION_SOURCE,
    SDK_SETTINGS.CLIENT_METADATA_ID,
    ATTRIBUTES.UID,
    SDK_SETTINGS.CSP_NONCE
];

export function getSDKMeta() : string {
    const url = getScriptUrl();

    const scriptAttrs = getSDKAttributes();
    const attrs = {};
    for (const attr of Object.keys(scriptAttrs)) {
        if (ALLOWED_ATTRS.indexOf(attr) !== -1) {
            attrs[attr] = scriptAttrs[attr];
        }
    }
    
    return base64encode(JSON.stringify({ url, attrs })).replace(/\=+$/, ''); // eslint-disable-line no-useless-escape
}