@paypal/checkout-components 5.0.253-alpha.1 → 5.0.253

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.
Files changed (42) hide show
  1. package/dist/button.js +1 -1
  2. package/package.json +2 -2
  3. package/src/funding/applepay/config.jsx +2 -1
  4. package/src/funding/applepay/template.jsx +3 -1
  5. package/src/funding/bancontact/config.jsx +2 -1
  6. package/src/funding/blik/config.jsx +2 -1
  7. package/src/funding/boleto/config.jsx +2 -1
  8. package/src/funding/card/amex/config.js +2 -1
  9. package/src/funding/card/config.jsx +9 -10
  10. package/src/funding/card/discover/config.js +2 -1
  11. package/src/funding/card/elo/config.js +2 -1
  12. package/src/funding/card/hiper/config.js +2 -1
  13. package/src/funding/card/jcb/config.js +2 -1
  14. package/src/funding/card/mastercard/config.js +2 -1
  15. package/src/funding/card/visa/config.js +2 -1
  16. package/src/funding/config.js +28 -28
  17. package/src/funding/credit/config.jsx +7 -4
  18. package/src/funding/eps/config.jsx +2 -1
  19. package/src/funding/giropay/config.jsx +2 -1
  20. package/src/funding/ideal/config.jsx +2 -1
  21. package/src/funding/itau/config.jsx +2 -1
  22. package/src/funding/maxima/config.jsx +2 -1
  23. package/src/funding/mercadopago/config.jsx +2 -1
  24. package/src/funding/multibanco/config.jsx +2 -1
  25. package/src/funding/mybank/config.jsx +2 -1
  26. package/src/funding/oxxo/config.jsx +2 -1
  27. package/src/funding/p24/config.jsx +2 -1
  28. package/src/funding/paylater/config.jsx +2 -1
  29. package/src/funding/paypal/template.jsx +12 -13
  30. package/src/funding/payu/config.jsx +2 -1
  31. package/src/funding/satispay/config.jsx +2 -1
  32. package/src/funding/sepa/config.jsx +2 -1
  33. package/src/funding/sofort/config.jsx +2 -1
  34. package/src/funding/trustly/config.jsx +2 -1
  35. package/src/funding/venmo/config.jsx +3 -1
  36. package/src/funding/venmo/template.jsx +3 -2
  37. package/src/funding/verkkopankki/config.jsx +2 -1
  38. package/src/funding/wechatpay/config.jsx +2 -1
  39. package/src/funding/zimpler/config.jsx +2 -1
  40. package/src/lib/getLogoCDNExperiment.js +25 -0
  41. package/src/zoid/buttons/component.jsx +7 -9
  42. package/src/zoid/card-fields/component.jsx +58 -10
@@ -7,6 +7,7 @@ import { Fragment, node } from '@krakenjs/jsx-pragmatic/src';
7
7
  import { BUTTON_LAYOUT } from '../../constants';
8
8
  import { DEFAULT_APM_FUNDING_CONFIG, type FundingSourceConfig, BasicLabel} from '../common';
9
9
  import { Text, Space } from '../../ui/text';
10
+ import { enableLogoCDNExperiment } from '../../lib/getLogoCDNExperiment';
10
11
 
11
12
  export function getPayuConfig() : FundingSourceConfig {
12
13
  return {
@@ -20,7 +21,7 @@ export function getPayuConfig() : FundingSourceConfig {
20
21
 
21
22
  shippingChange: false,
22
23
 
23
- Logo: ({ logoColor, optional }) => PayuLogo({ logoColor, optional }),
24
+ Logo: ({ logoColor, optional }) => enableLogoCDNExperiment(PayuLogo, { logoColor, optional }),
24
25
 
25
26
  Label: ({ logo, ...opts }) => {
26
27
  if (__WEB__) {
@@ -7,6 +7,7 @@ import { Fragment, node } from '@krakenjs/jsx-pragmatic/src';
7
7
  import { BUTTON_LAYOUT } from '../../constants';
8
8
  import { DEFAULT_APM_FUNDING_CONFIG, type FundingSourceConfig, BasicLabel } from '../common';
9
9
  import { Text, Space } from '../../ui/text';
10
+ import { enableLogoCDNExperiment } from '../../lib/getLogoCDNExperiment';
10
11
 
11
12
  export function getSatispayConfig() : FundingSourceConfig {
12
13
  return {
@@ -20,7 +21,7 @@ export function getSatispayConfig() : FundingSourceConfig {
20
21
  BUTTON_LAYOUT.VERTICAL
21
22
  ],
22
23
 
23
- Logo: ({ logoColor, optional }) => SatispayLogo({ logoColor, optional }),
24
+ Logo: ({ logoColor, optional }) => enableLogoCDNExperiment(SatispayLogo, { logoColor, optional }),
24
25
 
25
26
  Label: ({ logo, ...opts }) => {
26
27
  if (__WEB__) {
@@ -4,6 +4,7 @@
4
4
  import { SepaLogo } from '@paypal/sdk-logos/src';
5
5
 
6
6
  import { BUTTON_LAYOUT } from '../../constants';
7
+ import { enableLogoCDNExperiment } from '../../lib/getLogoCDNExperiment';
7
8
  import { DEFAULT_FUNDING_CONFIG, type FundingSourceConfig } from '../common';
8
9
 
9
10
  export function getSepaConfig() : FundingSourceConfig {
@@ -14,6 +15,6 @@ export function getSepaConfig() : FundingSourceConfig {
14
15
  BUTTON_LAYOUT.VERTICAL
15
16
  ],
16
17
 
17
- Logo: ({ logoColor, optional }) => SepaLogo({ logoColor, optional })
18
+ Logo: ({ logoColor, optional }) => enableLogoCDNExperiment(SepaLogo, { logoColor, optional })
18
19
  };
19
20
  }
@@ -7,6 +7,7 @@ import { Fragment, node } from '@krakenjs/jsx-pragmatic/src';
7
7
  import { BUTTON_LAYOUT } from '../../constants';
8
8
  import { DEFAULT_APM_FUNDING_CONFIG, type FundingSourceConfig, BasicLabel } from '../common';
9
9
  import { Text, Space } from '../../ui/text';
10
+ import { enableLogoCDNExperiment } from '../../lib/getLogoCDNExperiment';
10
11
 
11
12
  export function getSofortConfig() : FundingSourceConfig {
12
13
  return {
@@ -18,7 +19,7 @@ export function getSofortConfig() : FundingSourceConfig {
18
19
  BUTTON_LAYOUT.VERTICAL
19
20
  ],
20
21
 
21
- Logo: ({ logoColor, optional }) => SofortLogo({ logoColor, optional }),
22
+ Logo: ({ logoColor, optional }) => enableLogoCDNExperiment(SofortLogo, { logoColor, optional }),
22
23
 
23
24
  Label: ({ logo, ...opts }) => {
24
25
  if (__WEB__) {
@@ -7,6 +7,7 @@ import { Fragment, node } from '@krakenjs/jsx-pragmatic/src';
7
7
  import { BUTTON_LAYOUT } from '../../constants';
8
8
  import { DEFAULT_APM_FUNDING_CONFIG, type FundingSourceConfig, BasicLabel } from '../common';
9
9
  import { Text, Space } from '../../ui/text';
10
+ import { enableLogoCDNExperiment } from '../../lib/getLogoCDNExperiment';
10
11
 
11
12
  export function getTrustlyConfig() : FundingSourceConfig {
12
13
  return {
@@ -20,7 +21,7 @@ export function getTrustlyConfig() : FundingSourceConfig {
20
21
  BUTTON_LAYOUT.VERTICAL
21
22
  ],
22
23
 
23
- Logo: ({ logoColor, optional }) => TrustlyLogo({ logoColor, optional }),
24
+ Logo: ({ logoColor, optional }) => enableLogoCDNExperiment(TrustlyLogo, { logoColor, optional }),
24
25
 
25
26
  Label: ({ logo, ...opts }) => {
26
27
  if (__WEB__) {
@@ -6,9 +6,11 @@ import { PLATFORM } from '@paypal/sdk-constants/src';
6
6
 
7
7
  import { BUTTON_COLOR, BUTTON_LAYOUT } from '../../constants';
8
8
  import { DEFAULT_FUNDING_CONFIG, type FundingSourceConfig } from '../common';
9
+ import { enableLogoCDNExperiment } from '../../lib/getLogoCDNExperiment';
9
10
 
10
11
  import { WalletLabel, Label, AppLabel } from './template';
11
12
 
13
+
12
14
  export function getVenmoConfig() : FundingSourceConfig {
13
15
  return {
14
16
  ...DEFAULT_FUNDING_CONFIG,
@@ -39,7 +41,7 @@ export function getVenmoConfig() : FundingSourceConfig {
39
41
  return {};
40
42
  },
41
43
 
42
- Logo: ({ logoColor, optional }) => VenmoLogo({ logoColor, optional }),
44
+ Logo: ({ logoColor, optional }) => enableLogoCDNExperiment(VenmoLogo, { logoColor, optional }),
43
45
 
44
46
  Label: ({ ...props }) => {
45
47
  if (props.experiment && props.experiment.enableVenmoAppLabel) {
@@ -9,6 +9,7 @@ import {
9
9
  BasicLabel
10
10
  } from '../common';
11
11
  import { Text, Space } from '../../ui/text';
12
+ import { enableLogoCDNExperiment } from '../../lib/getLogoCDNExperiment';
12
13
 
13
14
  import css from './style.scoped.scss';
14
15
 
@@ -17,7 +18,7 @@ export function AppLabel(opts : LabelOptions) : ChildType {
17
18
 
18
19
  const AppLogo : ChildType = (
19
20
  <Style css={ css }>
20
- <VenmoLogo logoColor={ logoColor } />
21
+ {enableLogoCDNExperiment(VenmoLogo, { logoColor })}
21
22
  <Text className={ [ 'app-label' ] }>
22
23
  App
23
24
  </Text>
@@ -38,7 +39,7 @@ export function Label(opts : LabelOptions) : ChildType {
38
39
  export function WalletLabel({ ...props } : WalletLabelOptions) : ChildType {
39
40
  const { instrument, logoColor } = props;
40
41
  let label;
41
- const logo = <VenmoLogo logoColor={ logoColor } />;
42
+ const logo = enableLogoCDNExperiment(VenmoLogo, { logoColor });
42
43
 
43
44
  if (instrument && instrument.label) {
44
45
  label = instrument.label;
@@ -7,6 +7,7 @@ import { Fragment, node } from '@krakenjs/jsx-pragmatic/src';
7
7
  import { BUTTON_LAYOUT } from '../../constants';
8
8
  import { DEFAULT_APM_FUNDING_CONFIG, type FundingSourceConfig, BasicLabel } from '../common';
9
9
  import { Text, Space } from '../../ui/text';
10
+ import { enableLogoCDNExperiment } from '../../lib/getLogoCDNExperiment';
10
11
 
11
12
  export function getVerkkopankkiConfig() : FundingSourceConfig {
12
13
  return {
@@ -20,7 +21,7 @@ export function getVerkkopankkiConfig() : FundingSourceConfig {
20
21
 
21
22
  shippingChange: false,
22
23
 
23
- Logo: ({ logoColor, optional }) => VerkkopankkiLogo({ logoColor, optional }),
24
+ Logo: ({ logoColor, optional }) => enableLogoCDNExperiment(VerkkopankkiLogo, { logoColor, optional }),
24
25
 
25
26
  Label: ({ logo, ...opts }) => {
26
27
  if (__WEB__) {
@@ -7,6 +7,7 @@ import { Fragment, node } from '@krakenjs/jsx-pragmatic/src';
7
7
  import { BUTTON_LAYOUT } from '../../constants';
8
8
  import { DEFAULT_APM_FUNDING_CONFIG, type FundingSourceConfig, BasicLabel } from '../common';
9
9
  import { Text, Space } from '../../ui/text';
10
+ import { enableLogoCDNExperiment } from '../../lib/getLogoCDNExperiment';
10
11
 
11
12
  export function getWechatpayConfig() : FundingSourceConfig {
12
13
  return {
@@ -18,7 +19,7 @@ export function getWechatpayConfig() : FundingSourceConfig {
18
19
  BUTTON_LAYOUT.VERTICAL
19
20
  ],
20
21
 
21
- Logo: ({ logoColor, optional }) => WechatpayLogo({ logoColor, optional }),
22
+ Logo: ({ logoColor, optional }) => enableLogoCDNExperiment(WechatpayLogo, { logoColor, optional }),
22
23
 
23
24
  Label: ({ logo, ...opts }) => {
24
25
  if (__WEB__) {
@@ -4,6 +4,7 @@
4
4
  import { ZimplerLogo } from '@paypal/sdk-logos/src';
5
5
 
6
6
  import { BUTTON_LAYOUT } from '../../constants';
7
+ import { enableLogoCDNExperiment } from '../../lib/getLogoCDNExperiment';
7
8
  import { DEFAULT_FUNDING_CONFIG, type FundingSourceConfig } from '../common';
8
9
 
9
10
  export function getZimplerConfig() : FundingSourceConfig {
@@ -16,6 +17,6 @@ export function getZimplerConfig() : FundingSourceConfig {
16
17
  BUTTON_LAYOUT.VERTICAL
17
18
  ],
18
19
 
19
- Logo: ({ logoColor, optional }) => ZimplerLogo({ logoColor, optional })
20
+ Logo: ({ logoColor, optional }) => enableLogoCDNExperiment(ZimplerLogo, { logoColor, optional })
20
21
  };
21
22
  }
@@ -0,0 +1,25 @@
1
+ /* @flow */
2
+
3
+ import { createExperiment } from "@paypal/sdk-client/src";
4
+ import type { Experiment } from "@krakenjs/belter/src";
5
+ import type { ChildType } from "@krakenjs/jsx-pragmatic/src";
6
+
7
+ export function getLogoCDNExperiment(): Experiment {
8
+ return createExperiment("enable_logo_cdn_experiment", 5);
9
+ }
10
+
11
+ export function enableLogoCDNExperiment<T>(
12
+ logo: (T) => ChildType,
13
+ logoOptions: T
14
+ ): ChildType {
15
+ // enable logo CDN experiment for first render only
16
+ if (__WEB__) {
17
+ const logoCDNExperiment = getLogoCDNExperiment();
18
+ const loadFromCDN = logoCDNExperiment.isEnabled();
19
+
20
+ return logo({ ...logoOptions, loadFromCDN });
21
+ }
22
+
23
+ // continue using inline svg for second render
24
+ return logo(logoOptions);
25
+ }
@@ -25,6 +25,7 @@ import { normalizeButtonStyle, type ButtonProps } from '../../ui/buttons/props';
25
25
  import { isFundingEligible } from '../../funding';
26
26
  import { EXPERIENCE } from '../../constants';
27
27
  import { type InlineXOEligibilityType } from '../../types';
28
+ import { getLogoCDNExperiment } from '../../lib/getLogoCDNExperiment';
28
29
 
29
30
  import { containerTemplate } from './container';
30
31
  import { PrerenderedButtons } from './prerender';
@@ -325,6 +326,12 @@ export const getButtonsComponent : () => ButtonsComponent = memoize(() => {
325
326
  venmoExperiment.logStart({ [ FPTI_KEY.BUTTON_SESSION_UID ]: props.buttonSessionID });
326
327
  }
327
328
 
329
+ const logoCDNExperiment = getLogoCDNExperiment();
330
+
331
+ if (logoCDNExperiment) {
332
+ logoCDNExperiment.logStart({ [ FPTI_KEY.BUTTON_SESSION_UID ]: props.buttonSessionID });
333
+ }
334
+
328
335
  return value(...args);
329
336
  };
330
337
  }
@@ -686,15 +693,6 @@ export const getButtonsComponent : () => ButtonsComponent = memoize(() => {
686
693
  vault
687
694
  } });
688
695
 
689
- const logger = getLogger();
690
-
691
- logger
692
- .info('isInlineXOEligible props', { props: JSON.stringify(props) })
693
- .info('isInlineXOEligible eligible', { eligible: String(eligible) })
694
- .track({
695
- [ FPTI_KEY.TRANSITION ]: `inline_xo_eligibility_${ String(eligible) }`
696
- }).flush();
697
-
698
696
  return eligible ? EXPERIENCE.INLINE : '';
699
697
  }
700
698
  },
@@ -8,7 +8,7 @@ import { create, type ZoidComponent } from '@krakenjs/zoid/src';
8
8
  import type { CrossDomainWindowType } from '@krakenjs/cross-domain-utils/src';
9
9
  import { memoize, uniqueID } from '@krakenjs/belter/src';
10
10
  import { getLocale, getEnv, getSDKMeta, getDisableCard, getPayPalDomain, getClientID, getDebug, getCurrency, getIntent,
11
- getCommit, getVault, getUserIDToken } from '@paypal/sdk-client/src';
11
+ getCommit, getVault, getCorrelationID, getPartnerAttributionID, getMerchantID, getUserIDToken } from '@paypal/sdk-client/src';
12
12
  import { getRefinedFundingEligibility } from '@paypal/funding-components/src';
13
13
  import { CARD, CURRENCY, INTENT, type FundingEligibilityType } from '@paypal/sdk-constants/src';
14
14
 
@@ -58,7 +58,15 @@ type CardFieldsProps = {|
58
58
  onApprove : ({| returnUrl : string |}, {| redirect : (?CrossDomainWindowType, ?string) => ZalgoPromise<void> |}) => ?ZalgoPromise<void>,
59
59
  onComplete : ({| returnUrl : string |}, {| redirect : (?CrossDomainWindowType, ?string) => ZalgoPromise<void> |}) => ?ZalgoPromise<void>,
60
60
  onCancel ? : ({| cancelUrl : string |}, {| redirect : (? CrossDomainWindowType, ? string) => ZalgoPromise<void> |}) => ?ZalgoPromise<void>,
61
- action: Object
61
+ action: Object,
62
+ sdkCorrelationID: string,
63
+ hcfSessionID: string,
64
+ partnerAttributionID: string,
65
+ merchantID: $ReadOnlyArray<string>,
66
+ save: {|
67
+ createVaultSetupToken: () => ZalgoPromise<string>,
68
+ onApprove: ({|vaultSetupToken: string|}) => ?ZalgoPromise<void>
69
+ |}
62
70
  |};
63
71
 
64
72
  type CardFieldProps = {|
@@ -151,13 +159,13 @@ export const getCardFieldsComponent : () => CardFieldsComponent = memoize(() : C
151
159
  },
152
160
 
153
161
  props: {
154
- action: {
162
+ save: {
155
163
  type: 'object',
156
164
  value: ({props}) => {
157
- if (props.action) {
158
- return props.action
165
+ if (props.save) {
166
+ return props.save
159
167
  } else {
160
- return props.parent.props.action
168
+ return props.parent.props.save
161
169
  }
162
170
  }
163
171
  },
@@ -329,7 +337,27 @@ export const getCardFieldsComponent : () => CardFieldsComponent = memoize(() : C
329
337
  required: false,
330
338
  value: ({ props }) => props.parent.props.branded
331
339
  },
332
-
340
+ sdkCorrelationID: {
341
+ type: 'string',
342
+ required: false,
343
+ value: ({ props }) => props.parent.props.sdkCorrelationID,
344
+ queryParam: true
345
+ },
346
+ hcfSessionID : {
347
+ type: 'string',
348
+ required: false,
349
+ value: ({ props }) => props.parent.props.hcfSessionID
350
+ },
351
+ partnerAttributionID: {
352
+ type: 'string',
353
+ required: false,
354
+ value: ({ props }) => props.parent.props.partnerAttributionID
355
+ },
356
+ merchantID: {
357
+ type: 'array',
358
+ queryParam: true,
359
+ value: ({ props }) => props.parent.props.merchantID
360
+ },
333
361
  userIDToken: {
334
362
  type: 'string',
335
363
  default: getUserIDToken,
@@ -418,7 +446,7 @@ export const getCardFieldsComponent : () => CardFieldsComponent = memoize(() : C
418
446
  },
419
447
 
420
448
  props: {
421
- action: {
449
+ save: {
422
450
  type: 'object',
423
451
  },
424
452
 
@@ -437,7 +465,7 @@ export const getCardFieldsComponent : () => CardFieldsComponent = memoize(() : C
437
465
  sessionID: {
438
466
  type: 'string',
439
467
  required: false,
440
- default: getSessionID,
468
+ value: getSessionID,
441
469
  queryParam: true
442
470
  },
443
471
 
@@ -564,7 +592,27 @@ export const getCardFieldsComponent : () => CardFieldsComponent = memoize(() : C
564
592
  queryParam: true,
565
593
  required: false
566
594
  },
567
-
595
+ sdkCorrelationID: {
596
+ type: 'string',
597
+ required: false,
598
+ value: getCorrelationID,
599
+ queryParam: true
600
+ },
601
+ hcfSessionID : {
602
+ type: 'string',
603
+ required: false,
604
+ value: uniqueID
605
+ },
606
+ partnerAttributionID: {
607
+ type: 'string',
608
+ required: false,
609
+ value: getPartnerAttributionID
610
+ },
611
+ merchantID: {
612
+ type: 'array',
613
+ queryParam: true,
614
+ value: getMerchantID
615
+ },
568
616
  userIDToken: {
569
617
  type: 'string',
570
618
  default: getUserIDToken,