@paypal/checkout-components 5.0.409 → 5.0.411
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.
- package/__sdk__.js +6 -0
- package/dist/button.js +1 -1
- package/dist/test/button.js +1 -1
- package/globals.js +1 -0
- package/package.json +1 -1
- package/src/declarations.js +1 -0
- package/src/interface/saved-payment-methods.js +15 -0
- package/src/lib/perceived-latency-instrumentation.js +4 -3
- package/src/three-domain-secure/interface.js +27 -18
- package/src/three-domain-secure/interface.test.js +18 -1
- package/src/ui/buttons/props.js +2 -2
- package/src/ui/buttons/styles/responsive.js +1 -3
- package/src/zoid/buttons/component.jsx +4 -1
- package/src/zoid/saved-payment-methods/component.jsx +797 -0
- package/src/zoid/saved-payment-methods/container.jsx +124 -0
- package/src/zoid/saved-payment-methods/index.js +4 -0
- package/src/zoid/saved-payment-methods/prerender.jsx +45 -0
- package/src/zoid/saved-payment-methods/props.js +116 -0
- package/src/zoid/saved-payment-methods/util.js +115 -0
- package/src/zoid/saved-payment-methods/util.test.js +117 -0
package/globals.js
CHANGED
package/package.json
CHANGED
package/src/declarations.js
CHANGED
|
@@ -0,0 +1,15 @@
|
|
|
1
|
+
/* @flow */
|
|
2
|
+
|
|
3
|
+
import type { LazyExport } from "../types";
|
|
4
|
+
import {
|
|
5
|
+
getSavedPaymentMethodsComponent,
|
|
6
|
+
type SavedPaymentMethodsComponent,
|
|
7
|
+
} from "../zoid/saved-payment-methods";
|
|
8
|
+
|
|
9
|
+
export const SavedPaymentMethods: LazyExport<SavedPaymentMethodsComponent> = {
|
|
10
|
+
__get__: () => getSavedPaymentMethodsComponent(),
|
|
11
|
+
};
|
|
12
|
+
|
|
13
|
+
export function setup() {
|
|
14
|
+
getSavedPaymentMethodsComponent();
|
|
15
|
+
}
|
|
@@ -57,16 +57,17 @@ export const logLatencyInstrumentationPhase = ({
|
|
|
57
57
|
};
|
|
58
58
|
|
|
59
59
|
export const prepareInstrumentationPayload = (
|
|
60
|
-
buttonSessionID: string
|
|
60
|
+
buttonSessionID: string,
|
|
61
|
+
component: "buttons" | "saved-payment-methods"
|
|
61
62
|
): InstrumentationPayload => {
|
|
62
63
|
const timeOrigin = getNavigationTimeOrigin();
|
|
63
64
|
const renderStartTime = getStartTimeFromMark({
|
|
64
65
|
buttonSessionID,
|
|
65
|
-
phase:
|
|
66
|
+
phase: `${component}-first-render`,
|
|
66
67
|
});
|
|
67
68
|
const renderEndTime = getStartTimeFromMark({
|
|
68
69
|
buttonSessionID,
|
|
69
|
-
phase:
|
|
70
|
+
phase: `${component}-first-render-end`,
|
|
70
71
|
});
|
|
71
72
|
return {
|
|
72
73
|
comp: {
|
|
@@ -31,25 +31,34 @@ export function destroy(err?: mixed) {
|
|
|
31
31
|
export const ThreeDomainSecureClient: LazyExport<ThreeDomainSecureComponentInterface> =
|
|
32
32
|
{
|
|
33
33
|
__get__: () => {
|
|
34
|
-
|
|
35
|
-
const
|
|
36
|
-
|
|
37
|
-
|
|
38
|
-
|
|
39
|
-
|
|
40
|
-
|
|
41
|
-
|
|
42
|
-
|
|
43
|
-
|
|
44
|
-
|
|
45
|
-
|
|
46
|
-
|
|
47
|
-
|
|
48
|
-
|
|
49
|
-
|
|
34
|
+
let threeDomainSecureInstance;
|
|
35
|
+
const getThreeDomainSecureInstance = () => {
|
|
36
|
+
if (!threeDomainSecureInstance) {
|
|
37
|
+
const accessToken = getSDKToken() || getUserIDToken();
|
|
38
|
+
threeDomainSecureInstance = new ThreeDomainSecureComponent({
|
|
39
|
+
logger: getLogger(),
|
|
40
|
+
restClient: new RestClient({ accessToken }),
|
|
41
|
+
graphQLClient: new GraphQLClient({
|
|
42
|
+
baseURL:
|
|
43
|
+
getEnv() === "production" ? BRAINTREE_PROD : BRAINTREE_SANDBOX,
|
|
44
|
+
accessToken,
|
|
45
|
+
}),
|
|
46
|
+
// $FlowIssue ZalgoPromise vs Promise
|
|
47
|
+
sdkConfig: {
|
|
48
|
+
authenticationToken: accessToken,
|
|
49
|
+
paypalApiDomain: getPayPalAPIDomain(),
|
|
50
|
+
clientID: getClientID(),
|
|
51
|
+
},
|
|
52
|
+
});
|
|
53
|
+
}
|
|
54
|
+
|
|
55
|
+
return threeDomainSecureInstance;
|
|
56
|
+
};
|
|
57
|
+
|
|
50
58
|
return {
|
|
51
|
-
isEligible: (payload) =>
|
|
52
|
-
|
|
59
|
+
isEligible: (payload) =>
|
|
60
|
+
getThreeDomainSecureInstance().isEligible(payload),
|
|
61
|
+
show: () => getThreeDomainSecureInstance().show(),
|
|
53
62
|
};
|
|
54
63
|
},
|
|
55
64
|
};
|
|
@@ -4,9 +4,10 @@ import {
|
|
|
4
4
|
getLogger,
|
|
5
5
|
getPayPalAPIDomain,
|
|
6
6
|
getSDKToken,
|
|
7
|
+
getUserIDToken,
|
|
7
8
|
getClientID,
|
|
8
9
|
} from "@paypal/sdk-client/src";
|
|
9
|
-
import { describe, expect, vi } from "vitest";
|
|
10
|
+
import { beforeEach, describe, expect, vi } from "vitest";
|
|
10
11
|
import { destroy as zoidDestroy } from "@krakenjs/zoid/src";
|
|
11
12
|
|
|
12
13
|
import { ThreeDomainSecureComponent } from "./component";
|
|
@@ -21,6 +22,10 @@ vi.mock("./api");
|
|
|
21
22
|
vi.mock("./utils");
|
|
22
23
|
|
|
23
24
|
describe("ThreeDomainSecure interface", () => {
|
|
25
|
+
beforeEach(() => {
|
|
26
|
+
vi.clearAllMocks();
|
|
27
|
+
});
|
|
28
|
+
|
|
24
29
|
it("should setup and destroy", () => {
|
|
25
30
|
setup();
|
|
26
31
|
expect(getThreeDS).toHaveBeenCalledTimes(1);
|
|
@@ -34,6 +39,7 @@ describe("ThreeDomainSecure interface", () => {
|
|
|
34
39
|
it("should create and return instance of ThreeDomainSecureClient only on dev environment", async () => {
|
|
35
40
|
vi.mocked(getEnv).mockReturnValue("stage");
|
|
36
41
|
vi.mocked(getSDKToken).mockReturnValue("test-token");
|
|
42
|
+
vi.mocked(getUserIDToken).mockReturnValue(undefined);
|
|
37
43
|
vi.mocked(getPayPalAPIDomain).mockReturnValue("test-domain");
|
|
38
44
|
vi.mocked(getClientID).mockReturnValue("test-client-id");
|
|
39
45
|
|
|
@@ -85,4 +91,15 @@ describe("ThreeDomainSecure interface", () => {
|
|
|
85
91
|
},
|
|
86
92
|
});
|
|
87
93
|
});
|
|
94
|
+
|
|
95
|
+
it("should not throw during __get__ when sdk token is missing", () => {
|
|
96
|
+
vi.mocked(getEnv).mockReturnValue("stage");
|
|
97
|
+
vi.mocked(getSDKToken).mockReturnValue(undefined);
|
|
98
|
+
vi.mocked(getUserIDToken).mockReturnValue(undefined);
|
|
99
|
+
vi.mocked(getPayPalAPIDomain).mockReturnValue("test-domain");
|
|
100
|
+
vi.mocked(getClientID).mockReturnValue("test-client-id");
|
|
101
|
+
|
|
102
|
+
expect(() => ThreeDomainSecureClient.__get__()).not.toThrow();
|
|
103
|
+
expect(ThreeDomainSecureComponent).not.toHaveBeenCalled();
|
|
104
|
+
});
|
|
88
105
|
});
|
package/src/ui/buttons/props.js
CHANGED
|
@@ -513,12 +513,12 @@ export type ButtonExtensions = {|
|
|
|
513
513
|
resume: () => void,
|
|
514
514
|
|};
|
|
515
515
|
|
|
516
|
-
type ShowPayPalAppSwitchOverlay = {|
|
|
516
|
+
export type ShowPayPalAppSwitchOverlay = {|
|
|
517
517
|
focus: () => void,
|
|
518
518
|
close: () => void,
|
|
519
519
|
|};
|
|
520
520
|
|
|
521
|
-
type HidePayPalAppSwitchOverlay = {|
|
|
521
|
+
export type HidePayPalAppSwitchOverlay = {|
|
|
522
522
|
close: () => void,
|
|
523
523
|
|};
|
|
524
524
|
|
|
@@ -497,8 +497,8 @@ const generateRebrandedDisableMaxHeightStyles = (): string => {
|
|
|
497
497
|
.${CLASS.CONTAINER} .${CLASS.BUTTON_ROW} .${CLASS.TEXT},
|
|
498
498
|
.${CLASS.CONTAINER} .${CLASS.BUTTON_ROW} .${CLASS.SPACE} {
|
|
499
499
|
font-size: ${fontSize}px;
|
|
500
|
-
position: relative;
|
|
501
500
|
}
|
|
501
|
+
}
|
|
502
502
|
`;
|
|
503
503
|
})
|
|
504
504
|
.join("\n");
|
|
@@ -572,7 +572,6 @@ const generateRebrandedButtonSizeStyles = ({
|
|
|
572
572
|
BUTTON_NUMBER.MULTIPLE
|
|
573
573
|
} .${CLASS.SPACE} {
|
|
574
574
|
font-size: ${fontSize}px;
|
|
575
|
-
position: relative;
|
|
576
575
|
}
|
|
577
576
|
|
|
578
577
|
.${CLASS.BUTTON_ROW}.${CLASS.NUMBER}-${BUTTON_NUMBER.MULTIPLE} .${
|
|
@@ -681,7 +680,6 @@ const generateRebrandedButtonSizeStyles = ({
|
|
|
681
680
|
.${CLASS.CONTAINER} .${CLASS.BUTTON_ROW} .${CLASS.TEXT},
|
|
682
681
|
.${CLASS.CONTAINER} .${CLASS.BUTTON_ROW} .${CLASS.SPACE} {
|
|
683
682
|
font-size: ${fontSize}px;
|
|
684
|
-
position: relative;
|
|
685
683
|
}
|
|
686
684
|
|
|
687
685
|
.${CLASS.BUTTON_ROW} .${CLASS.BUTTON_REBRAND} .${CLASS.TEXT} {
|
|
@@ -190,7 +190,10 @@ export const getButtonsComponent: () => ButtonsComponent = memoize(() => {
|
|
|
190
190
|
phase: "buttons-first-render-end",
|
|
191
191
|
});
|
|
192
192
|
try {
|
|
193
|
-
const cplPhases = prepareInstrumentationPayload(
|
|
193
|
+
const cplPhases = prepareInstrumentationPayload(
|
|
194
|
+
buttonSessionID,
|
|
195
|
+
"buttons"
|
|
196
|
+
);
|
|
194
197
|
const cplLatencyMetrics = {
|
|
195
198
|
[FPTI_KEY.STATE]: "CPL_LATENCY_METRICS",
|
|
196
199
|
[FPTI_KEY.TRANSITION]: "process_client_metrics",
|