@stripe/connect-js 3.3.27-preview-1 → 3.3.27
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/README.md +3 -3
- package/dist/connect.esm.js +39 -78
- package/dist/connect.js +39 -78
- package/dist/pure.esm.js +31 -70
- package/dist/pure.js +31 -70
- package/dist/src/index.d.ts +1 -1
- package/dist/src/pure.d.ts +1 -1
- package/dist/src/shared.d.ts +3 -2
- package/dist/types/config.d.ts +16 -60
- package/package.json +14 -10
- package/src/index.ts +3 -6
- package/src/pure.test.ts +2 -2
- package/src/pure.ts +3 -6
- package/src/shared.ts +51 -57
- package/types/checks.ts +2 -2
- package/types/config.ts +29 -104
- package/types/index.d.ts +1 -1
- package/types/shared.d.ts +11 -18
package/dist/pure.js
CHANGED
|
@@ -9,13 +9,6 @@ const ConnectElementCommonMethodConfig = {
|
|
|
9
9
|
setOnLoaderStart: _listener => {}
|
|
10
10
|
};
|
|
11
11
|
const ConnectElementCustomMethodConfig = {
|
|
12
|
-
payments: {
|
|
13
|
-
setDefaultFilters: _filters => {}
|
|
14
|
-
},
|
|
15
|
-
"payment-details": {
|
|
16
|
-
setPayment: _payment => {},
|
|
17
|
-
setOnClose: _listener => {}
|
|
18
|
-
},
|
|
19
12
|
"account-onboarding": {
|
|
20
13
|
setFullTermsOfServiceUrl: _termOfServiceUrl => {},
|
|
21
14
|
setRecipientTermsOfServiceUrl: _recipientTermsOfServiceUrl => {},
|
|
@@ -32,6 +25,10 @@ const ConnectElementCustomMethodConfig = {
|
|
|
32
25
|
setCollectionOptions: _collectionOptions => {},
|
|
33
26
|
setOnNotificationsChange: _listener => {}
|
|
34
27
|
},
|
|
28
|
+
"instant-payouts-promotion": {
|
|
29
|
+
setOnInstantPayoutsPromotionLoaded: _listener => {},
|
|
30
|
+
setOnInstantPayoutCreated: _listener => {}
|
|
31
|
+
},
|
|
35
32
|
"issuing-card": {
|
|
36
33
|
setDefaultCard: _defaultCard => {},
|
|
37
34
|
setCardSwitching: _cardSwitching => {},
|
|
@@ -49,46 +46,16 @@ const ConnectElementCustomMethodConfig = {
|
|
|
49
46
|
"financial-account-transactions": {
|
|
50
47
|
setFinancialAccount: _financialAccount => {}
|
|
51
48
|
},
|
|
52
|
-
|
|
53
|
-
|
|
54
|
-
},
|
|
55
|
-
"app-install": {
|
|
56
|
-
setApp: _app => {},
|
|
57
|
-
setOnAppInstallStateFetched: _listener => {},
|
|
58
|
-
setOnAppInstallStateChanged: _listener => {}
|
|
59
|
-
},
|
|
60
|
-
"app-viewport": {
|
|
61
|
-
setApp: _app => {},
|
|
62
|
-
setAppData: _appData => {}
|
|
63
|
-
},
|
|
64
|
-
"payment-method-settings": {
|
|
65
|
-
setPaymentMethodConfiguration: _paymentMethodConfiguration => {}
|
|
66
|
-
},
|
|
67
|
-
"capital-financing": {
|
|
68
|
-
setDefaultFinancingOffer: _defaultFinancingOffer => {},
|
|
69
|
-
setShowFinancingSelector: _showFinancingSelector => {},
|
|
70
|
-
setHowCapitalWorksUrl: _howCapitalWorksUrl => {},
|
|
71
|
-
setSupportUrl: _supportUrl => {},
|
|
72
|
-
setOnFinancingsLoaded: _listener => {}
|
|
73
|
-
},
|
|
74
|
-
"capital-financing-application": {
|
|
75
|
-
setOnApplicationSubmitted: _listener => {},
|
|
76
|
-
setPrivacyPolicyUrl: _privacyPolicyUrl => {},
|
|
77
|
-
setHowCapitalWorksUrl: _howCapitalWorksUrl => {}
|
|
49
|
+
payments: {
|
|
50
|
+
setDefaultFilters: _filters => {}
|
|
78
51
|
},
|
|
79
|
-
"
|
|
80
|
-
|
|
81
|
-
|
|
82
|
-
setOnEligibleFinancingOfferLoaded: _listener => {},
|
|
83
|
-
setPrivacyPolicyUrl: _privacyPolicyUrl => {},
|
|
84
|
-
setHowCapitalWorksUrl: _howCapitalWorksUrl => {},
|
|
85
|
-
setEligibilityCriteriaUrl: _eligibilityCriteriaUrl => {}
|
|
52
|
+
"payment-details": {
|
|
53
|
+
setPayment: _payment => {},
|
|
54
|
+
setOnClose: _listener => {}
|
|
86
55
|
},
|
|
87
|
-
"
|
|
88
|
-
|
|
89
|
-
|
|
90
|
-
setIntervalEnd: _intervalEnd => {},
|
|
91
|
-
setIntervalType: _intervalType => {}
|
|
56
|
+
"payment-disputes": {
|
|
57
|
+
setPayment: _payment => {},
|
|
58
|
+
setOnDisputesLoaded: _listener => {}
|
|
92
59
|
},
|
|
93
60
|
"tax-settings": {
|
|
94
61
|
setHideProductTaxCodeSelector: _hidden => {},
|
|
@@ -98,45 +65,34 @@ const ConnectElementCustomMethodConfig = {
|
|
|
98
65
|
"tax-registrations": {
|
|
99
66
|
setOnAfterTaxRegistrationAdded: _listener => {},
|
|
100
67
|
setDisplayCountries: _countries => {}
|
|
101
|
-
},
|
|
102
|
-
"tax-threshold-monitoring": {
|
|
103
|
-
setDisplayCountries: _countries => {}
|
|
104
68
|
}
|
|
105
69
|
};
|
|
106
70
|
|
|
107
71
|
const componentNameMapping = {
|
|
72
|
+
"account-onboarding": "stripe-connect-account-onboarding",
|
|
73
|
+
"disputes-list": "stripe-connect-disputes-list",
|
|
108
74
|
payments: "stripe-connect-payments",
|
|
109
|
-
payouts: "stripe-connect-payouts",
|
|
110
75
|
"payment-details": "stripe-connect-payment-details",
|
|
111
|
-
"
|
|
112
|
-
|
|
76
|
+
"payment-disputes": "stripe-connect-payment-disputes",
|
|
77
|
+
payouts: "stripe-connect-payouts",
|
|
78
|
+
"payouts-list": "stripe-connect-payouts-list",
|
|
79
|
+
balances: "stripe-connect-balances",
|
|
113
80
|
"account-management": "stripe-connect-account-management",
|
|
114
81
|
"notification-banner": "stripe-connect-notification-banner",
|
|
115
|
-
"instant-payouts": "stripe-connect-instant-payouts",
|
|
82
|
+
"instant-payouts-promotion": "stripe-connect-instant-payouts-promotion",
|
|
116
83
|
"issuing-card": "stripe-connect-issuing-card",
|
|
117
84
|
"issuing-cards-list": "stripe-connect-issuing-cards-list",
|
|
118
85
|
"financial-account": "stripe-connect-financial-account",
|
|
119
|
-
recipients: "stripe-connect-recipients",
|
|
120
86
|
"financial-account-transactions": "stripe-connect-financial-account-transactions",
|
|
121
|
-
"capital-financing": "stripe-connect-capital-financing",
|
|
122
|
-
"capital-financing-application": "stripe-connect-capital-financing-application",
|
|
123
|
-
"capital-financing-promotion": "stripe-connect-capital-financing-promotion",
|
|
124
|
-
"capital-overview": "stripe-connect-capital-overview",
|
|
125
87
|
documents: "stripe-connect-documents",
|
|
126
88
|
"tax-registrations": "stripe-connect-tax-registrations",
|
|
127
|
-
"tax-settings": "stripe-connect-tax-settings"
|
|
128
|
-
"tax-threshold-monitoring": "stripe-connect-tax-threshold-monitoring",
|
|
129
|
-
balances: "stripe-connect-balances",
|
|
130
|
-
"payouts-list": "stripe-connect-payouts-list",
|
|
131
|
-
"app-install": "stripe-connect-app-install",
|
|
132
|
-
"app-viewport": "stripe-connect-app-viewport",
|
|
133
|
-
"reporting-chart": "stripe-connect-reporting-chart"
|
|
89
|
+
"tax-settings": "stripe-connect-tax-settings"
|
|
134
90
|
};
|
|
135
91
|
const EXISTING_SCRIPT_MESSAGE = "loadConnect was called but an existing Connect.js script already exists in the document; existing script parameters will be used";
|
|
136
92
|
const V0_URL = "https://connect-js.stripe.com/v0.1/connect.js";
|
|
137
93
|
const V1_URL = "https://connect-js.stripe.com/v1.0/connect.js";
|
|
138
94
|
const findScript = () => {
|
|
139
|
-
return document.querySelectorAll(`script[src="${
|
|
95
|
+
return document.querySelectorAll(`script[src="${V1_URL}"]`)[0] || document.querySelectorAll(`script[src="${V0_URL}"]`)[0] || null;
|
|
140
96
|
};
|
|
141
97
|
const injectScript = () => {
|
|
142
98
|
const script = document.createElement("script");
|
|
@@ -149,6 +105,13 @@ const injectScript = () => {
|
|
|
149
105
|
return script;
|
|
150
106
|
};
|
|
151
107
|
let stripePromise = null;
|
|
108
|
+
const isWindowStripeConnectDefined = stripeConnect => {
|
|
109
|
+
// We only consider `StripeConnect` defined if `init` is a function
|
|
110
|
+
// Why? HTML markup like:
|
|
111
|
+
// <a id="StripeConnect"><a id="StripeConnect" name="init" href="stripe"></a></a> in the <head> of the page
|
|
112
|
+
// can end up "contaminating" the window.StripeConnect object and cause issues in connect.js initialization
|
|
113
|
+
return !!(stripeConnect && typeof stripeConnect === "object" && "init" in stripeConnect && typeof stripeConnect.init === "function");
|
|
114
|
+
};
|
|
152
115
|
const loadScript = () => {
|
|
153
116
|
// Ensure that we only attempt to load Connect.js at most once
|
|
154
117
|
if (stripePromise !== null) {
|
|
@@ -159,10 +122,8 @@ const loadScript = () => {
|
|
|
159
122
|
reject("ConnectJS won't load when rendering code in the server - it can only be loaded on a browser. This error is expected when loading ConnectJS in SSR environments, like NextJS. It will have no impact in the UI, however if you wish to avoid it, you can switch to the `pure` version of the connect.js loader: https://github.com/stripe/connect-js#importing-loadconnect-without-side-effects.");
|
|
160
123
|
return;
|
|
161
124
|
}
|
|
162
|
-
if (window.StripeConnect) {
|
|
125
|
+
if (isWindowStripeConnectDefined(window.StripeConnect)) {
|
|
163
126
|
console.warn(EXISTING_SCRIPT_MESSAGE);
|
|
164
|
-
}
|
|
165
|
-
if (window.StripeConnect) {
|
|
166
127
|
const wrapper = createWrapper(window.StripeConnect);
|
|
167
128
|
resolve(wrapper);
|
|
168
129
|
return;
|
|
@@ -175,7 +136,7 @@ const loadScript = () => {
|
|
|
175
136
|
script = injectScript();
|
|
176
137
|
}
|
|
177
138
|
script.addEventListener("load", () => {
|
|
178
|
-
if (window.StripeConnect) {
|
|
139
|
+
if (isWindowStripeConnectDefined(window.StripeConnect)) {
|
|
179
140
|
const wrapper = createWrapper(window.StripeConnect);
|
|
180
141
|
resolve(wrapper);
|
|
181
142
|
} else {
|
|
@@ -273,7 +234,7 @@ const createWrapper = stripeConnect => {
|
|
|
273
234
|
sdk: true,
|
|
274
235
|
sdkOptions: {
|
|
275
236
|
// This will be replaced by the npm package version when bundling
|
|
276
|
-
sdkVersion: "3.3.27
|
|
237
|
+
sdkVersion: "3.3.27"
|
|
277
238
|
}
|
|
278
239
|
})
|
|
279
240
|
}));
|
package/dist/src/index.d.ts
CHANGED
|
@@ -1,2 +1,2 @@
|
|
|
1
|
-
import { LoadConnectAndInitialize } from "./shared";
|
|
1
|
+
import type { LoadConnectAndInitialize } from "./shared";
|
|
2
2
|
export declare const loadConnectAndInitialize: LoadConnectAndInitialize;
|
package/dist/src/pure.d.ts
CHANGED
|
@@ -1,2 +1,2 @@
|
|
|
1
|
-
import { LoadConnectAndInitialize } from "./shared";
|
|
1
|
+
import type { LoadConnectAndInitialize } from "./shared";
|
|
2
2
|
export declare const loadConnectAndInitialize: LoadConnectAndInitialize;
|
package/dist/src/shared.d.ts
CHANGED
|
@@ -1,6 +1,6 @@
|
|
|
1
|
-
import { IStripeConnectInitParams, StripeConnectInstance, ConnectElementTagName } from "../types";
|
|
1
|
+
import type { IStripeConnectInitParams, StripeConnectInstance, ConnectElementTagName } from "../types";
|
|
2
2
|
export type LoadConnectAndInitialize = (initParams: IStripeConnectInitParams) => StripeConnectInstance;
|
|
3
|
-
|
|
3
|
+
type ConnectElementHTMLName = "stripe-connect-account-onboarding" | "stripe-connect-disputes-list" | "stripe-connect-payments" | "stripe-connect-payment-details" | "stripe-connect-payment-disputes" | "stripe-connect-account-management" | "stripe-connect-notification-banner" | "stripe-connect-instant-payouts-promotion" | "stripe-connect-issuing-card" | "stripe-connect-issuing-cards-list" | "stripe-connect-financial-account" | "stripe-connect-financial-account-transactions" | "stripe-connect-payouts" | "stripe-connect-payouts-list" | "stripe-connect-balances" | "stripe-connect-documents" | "stripe-connect-tax-registrations" | "stripe-connect-tax-settings";
|
|
4
4
|
export declare const componentNameMapping: Record<ConnectElementTagName, ConnectElementHTMLName>;
|
|
5
5
|
type StripeConnectInstanceExtended = StripeConnectInstance & {
|
|
6
6
|
debugInstance: () => Promise<StripeConnectInstance>;
|
|
@@ -9,6 +9,7 @@ interface StripeConnectWrapper {
|
|
|
9
9
|
initialize: (params: IStripeConnectInitParams) => StripeConnectInstance;
|
|
10
10
|
}
|
|
11
11
|
export declare const findScript: () => HTMLScriptElement | null;
|
|
12
|
+
export declare const isWindowStripeConnectDefined: (stripeConnect: unknown) => boolean;
|
|
12
13
|
export declare const loadScript: () => Promise<StripeConnectWrapper>;
|
|
13
14
|
export declare const initStripeConnect: (stripePromise: Promise<StripeConnectWrapper>, initParams: IStripeConnectInitParams) => StripeConnectInstanceExtended;
|
|
14
15
|
export {};
|
package/dist/types/config.d.ts
CHANGED
|
@@ -42,10 +42,6 @@ export type NotificationCount = {
|
|
|
42
42
|
total: number;
|
|
43
43
|
actionRequired: number;
|
|
44
44
|
};
|
|
45
|
-
export type InstallState = {
|
|
46
|
-
appId: string;
|
|
47
|
-
state: "INSTALLED" | "UNINSTALLED";
|
|
48
|
-
};
|
|
49
45
|
export type LoaderStart = {
|
|
50
46
|
elementTagName: string;
|
|
51
47
|
};
|
|
@@ -60,14 +56,6 @@ export type EmbeddedError = {
|
|
|
60
56
|
type: EmbeddedErrorType;
|
|
61
57
|
message?: string;
|
|
62
58
|
};
|
|
63
|
-
export type FinancingProductType = {
|
|
64
|
-
productType: "standard" | "refill" | "none";
|
|
65
|
-
activeFinancingCount: number;
|
|
66
|
-
};
|
|
67
|
-
export type FinancingPromotionLayoutType = "full" | "banner";
|
|
68
|
-
export type IntervalType = "day" | "week" | "month" | "quarter" | "year";
|
|
69
|
-
export type ReportName = "gross_volume" | "net_volume";
|
|
70
|
-
export type RecipientDataSource = "customers";
|
|
71
59
|
export type EmbeddedErrorType =
|
|
72
60
|
/**
|
|
73
61
|
* Failure to connect to Stripe's API.
|
|
@@ -98,13 +86,6 @@ export declare const ConnectElementCommonMethodConfig: {
|
|
|
98
86
|
setOnLoaderStart: (_listener: (({ elementTagName }: LoaderStart) => void) | undefined) => void;
|
|
99
87
|
};
|
|
100
88
|
export declare const ConnectElementCustomMethodConfig: {
|
|
101
|
-
payments: {
|
|
102
|
-
setDefaultFilters: (_filters: PaymentsListDefaultFilters | undefined) => void;
|
|
103
|
-
};
|
|
104
|
-
"payment-details": {
|
|
105
|
-
setPayment: (_payment: string | undefined) => void;
|
|
106
|
-
setOnClose: (_listener: (() => void) | undefined) => void;
|
|
107
|
-
};
|
|
108
89
|
"account-onboarding": {
|
|
109
90
|
setFullTermsOfServiceUrl: (_termOfServiceUrl: string | undefined) => void;
|
|
110
91
|
setRecipientTermsOfServiceUrl: (_recipientTermsOfServiceUrl: string | undefined) => void;
|
|
@@ -121,6 +102,14 @@ export declare const ConnectElementCustomMethodConfig: {
|
|
|
121
102
|
setCollectionOptions: (_collectionOptions: CollectionOptions | undefined) => void;
|
|
122
103
|
setOnNotificationsChange: (_listener: (({ total, actionRequired }: NotificationCount) => void) | undefined) => void;
|
|
123
104
|
};
|
|
105
|
+
"instant-payouts-promotion": {
|
|
106
|
+
setOnInstantPayoutsPromotionLoaded: (_listener: (({ promotionShown }: {
|
|
107
|
+
promotionShown: boolean;
|
|
108
|
+
}) => void) | undefined) => void;
|
|
109
|
+
setOnInstantPayoutCreated: (_listener: (({ payoutId }: {
|
|
110
|
+
payoutId: string;
|
|
111
|
+
}) => void) | undefined) => void;
|
|
112
|
+
};
|
|
124
113
|
"issuing-card": {
|
|
125
114
|
setDefaultCard: (_defaultCard: string | undefined) => void;
|
|
126
115
|
setCardSwitching: (_cardSwitching: boolean | undefined) => void;
|
|
@@ -138,49 +127,19 @@ export declare const ConnectElementCustomMethodConfig: {
|
|
|
138
127
|
"financial-account-transactions": {
|
|
139
128
|
setFinancialAccount: (_financialAccount: string) => void;
|
|
140
129
|
};
|
|
141
|
-
|
|
142
|
-
|
|
143
|
-
};
|
|
144
|
-
"app-install": {
|
|
145
|
-
setApp: (_app: string | undefined) => void;
|
|
146
|
-
setOnAppInstallStateFetched: (_listener: (({ appId, state }: InstallState) => void) | undefined) => void;
|
|
147
|
-
setOnAppInstallStateChanged: (_listener: (({ appId, state }: InstallState) => void) | undefined) => void;
|
|
148
|
-
};
|
|
149
|
-
"app-viewport": {
|
|
150
|
-
setApp: (_app: string | undefined) => void;
|
|
151
|
-
setAppData: (_appData: Record<string, string> | undefined) => void;
|
|
130
|
+
payments: {
|
|
131
|
+
setDefaultFilters: (_filters: PaymentsListDefaultFilters | undefined) => void;
|
|
152
132
|
};
|
|
153
|
-
"payment-
|
|
154
|
-
|
|
133
|
+
"payment-details": {
|
|
134
|
+
setPayment: (_payment: string | undefined) => void;
|
|
135
|
+
setOnClose: (_listener: (() => void) | undefined) => void;
|
|
155
136
|
};
|
|
156
|
-
"
|
|
157
|
-
|
|
158
|
-
|
|
159
|
-
setHowCapitalWorksUrl: (_howCapitalWorksUrl: string | undefined) => void;
|
|
160
|
-
setSupportUrl: (_supportUrl: string | undefined) => void;
|
|
161
|
-
setOnFinancingsLoaded: (_listener: (({ total }: {
|
|
137
|
+
"payment-disputes": {
|
|
138
|
+
setPayment: (_payment: string | undefined) => void;
|
|
139
|
+
setOnDisputesLoaded: (_listener: (({ total }: {
|
|
162
140
|
total: number;
|
|
163
141
|
}) => void) | undefined) => void;
|
|
164
142
|
};
|
|
165
|
-
"capital-financing-application": {
|
|
166
|
-
setOnApplicationSubmitted: (_listener: (() => void) | undefined) => void;
|
|
167
|
-
setPrivacyPolicyUrl: (_privacyPolicyUrl: string | undefined) => void;
|
|
168
|
-
setHowCapitalWorksUrl: (_howCapitalWorksUrl: string | undefined) => void;
|
|
169
|
-
};
|
|
170
|
-
"capital-financing-promotion": {
|
|
171
|
-
setLayout: (_layout: FinancingPromotionLayoutType | undefined) => void;
|
|
172
|
-
setOnApplicationSubmitted: (_listener: (() => void) | undefined) => void;
|
|
173
|
-
setOnEligibleFinancingOfferLoaded: (_listener: (({ productType, activeFinancingCount }: FinancingProductType) => void) | undefined) => void;
|
|
174
|
-
setPrivacyPolicyUrl: (_privacyPolicyUrl: string | undefined) => void;
|
|
175
|
-
setHowCapitalWorksUrl: (_howCapitalWorksUrl: string | undefined) => void;
|
|
176
|
-
setEligibilityCriteriaUrl: (_eligibilityCriteriaUrl: string | undefined) => void;
|
|
177
|
-
};
|
|
178
|
-
"reporting-chart": {
|
|
179
|
-
setReportName: (_reportName: ReportName) => void;
|
|
180
|
-
setIntervalStart: (_intervalStart: Date | undefined) => void;
|
|
181
|
-
setIntervalEnd: (_intervalEnd: Date | undefined) => void;
|
|
182
|
-
setIntervalType: (_intervalType: IntervalType | undefined) => void;
|
|
183
|
-
};
|
|
184
143
|
"tax-settings": {
|
|
185
144
|
setHideProductTaxCodeSelector: (_hidden: boolean | undefined) => void;
|
|
186
145
|
setDisplayHeadOfficeCountries: (_countries: string[] | undefined) => void;
|
|
@@ -194,7 +153,4 @@ export declare const ConnectElementCustomMethodConfig: {
|
|
|
194
153
|
}) => void) | undefined) => void;
|
|
195
154
|
setDisplayCountries: (_countries: string[] | undefined) => void;
|
|
196
155
|
};
|
|
197
|
-
"tax-threshold-monitoring": {
|
|
198
|
-
setDisplayCountries: (_countries: string[] | undefined) => void;
|
|
199
|
-
};
|
|
200
156
|
};
|
package/package.json
CHANGED
|
@@ -1,6 +1,6 @@
|
|
|
1
1
|
{
|
|
2
2
|
"name": "@stripe/connect-js",
|
|
3
|
-
"version": "3.3.27
|
|
3
|
+
"version": "3.3.27",
|
|
4
4
|
"description": "Connect.js loading utility package",
|
|
5
5
|
"main": "dist/connect.js",
|
|
6
6
|
"module": "dist/connect.esm.js",
|
|
@@ -11,6 +11,7 @@
|
|
|
11
11
|
"test:unit": "jest",
|
|
12
12
|
"test:types": "zx ./tests/types/scripts/test.mjs",
|
|
13
13
|
"lint": "eslint '{src,types}/**/*.{ts,js}' && yarn prettier-check",
|
|
14
|
+
"lint-fix": "eslint '{src,types}/**/*.{ts,js}' --fix && yarn prettier-check",
|
|
14
15
|
"typecheck": "tsc --noEmit",
|
|
15
16
|
"build": "yarn clean && rollup -c",
|
|
16
17
|
"validate-change": "yarn run test",
|
|
@@ -45,21 +46,24 @@
|
|
|
45
46
|
"@rollup/plugin-json": "^6.0.0",
|
|
46
47
|
"@rollup/plugin-replace": "^2.3.1",
|
|
47
48
|
"@types/jest": "^24.0.25",
|
|
48
|
-
"@typescript-eslint/eslint-plugin": "^
|
|
49
|
-
"@typescript-eslint/parser": "^
|
|
49
|
+
"@typescript-eslint/eslint-plugin": "^7",
|
|
50
|
+
"@typescript-eslint/parser": "^7",
|
|
51
|
+
"@typescript-eslint/rule-tester": "^7",
|
|
52
|
+
"@typescript-eslint/scope-manager": "^7",
|
|
53
|
+
"@typescript-eslint/utils": "^7",
|
|
50
54
|
"babel-eslint": "^10.0.3",
|
|
51
55
|
"babel-jest": "^24.9.0",
|
|
52
56
|
"conditional-type-checks": "^1.0.5",
|
|
53
|
-
"eslint": "
|
|
54
|
-
"eslint-config-prettier": "^
|
|
55
|
-
"eslint-plugin-import": "^2.
|
|
56
|
-
"eslint-plugin-jest": "^
|
|
57
|
-
"eslint-plugin-prettier": "^
|
|
57
|
+
"eslint": "8.56.0",
|
|
58
|
+
"eslint-config-prettier": "^8.3.0",
|
|
59
|
+
"eslint-plugin-import": "^2.20.1",
|
|
60
|
+
"eslint-plugin-jest": "^26.6.0",
|
|
61
|
+
"eslint-plugin-prettier": "^4.2.1",
|
|
58
62
|
"jest": "^29.5.0",
|
|
59
63
|
"jest-environment-jsdom": "^29.5.0",
|
|
60
|
-
"prettier": "
|
|
64
|
+
"prettier": "2.8.8",
|
|
61
65
|
"rimraf": "^2.6.2",
|
|
62
|
-
"rollup": "^
|
|
66
|
+
"rollup": "^2.79.2",
|
|
63
67
|
"rollup-plugin-babel": "^4.4.0",
|
|
64
68
|
"rollup-plugin-typescript2": "^0.25.3",
|
|
65
69
|
"ts-jest": "^29.1.0",
|
package/src/index.ts
CHANGED
|
@@ -1,9 +1,6 @@
|
|
|
1
|
-
import { IStripeConnectInitParams, StripeConnectInstance } from "../types";
|
|
2
|
-
import {
|
|
3
|
-
|
|
4
|
-
initStripeConnect,
|
|
5
|
-
LoadConnectAndInitialize
|
|
6
|
-
} from "./shared";
|
|
1
|
+
import type { IStripeConnectInitParams, StripeConnectInstance } from "../types";
|
|
2
|
+
import type { LoadConnectAndInitialize } from "./shared";
|
|
3
|
+
import { loadScript, initStripeConnect } from "./shared";
|
|
7
4
|
|
|
8
5
|
// Execute our own script injection after a tick to give users time to do their
|
|
9
6
|
// own script injection.
|
package/src/pure.test.ts
CHANGED
|
@@ -1,6 +1,6 @@
|
|
|
1
1
|
/* eslint-disable @typescript-eslint/no-var-requires */
|
|
2
2
|
|
|
3
|
-
import { IStripeConnectInitParams } from "../types";
|
|
3
|
+
import type { IStripeConnectInitParams } from "../types";
|
|
4
4
|
import { SCRIPT_SELECTOR } from "./utils/jestHelpers";
|
|
5
5
|
|
|
6
6
|
describe("pure module", () => {
|
|
@@ -16,7 +16,7 @@ describe("pure module", () => {
|
|
|
16
16
|
publishableKey: "pk_123",
|
|
17
17
|
fetchClientSecret: async () => {
|
|
18
18
|
return "secret_123";
|
|
19
|
-
}
|
|
19
|
+
},
|
|
20
20
|
};
|
|
21
21
|
loadConnectAndInitialize(mockInitParams);
|
|
22
22
|
|
package/src/pure.ts
CHANGED
|
@@ -1,9 +1,6 @@
|
|
|
1
|
-
import { IStripeConnectInitParams, StripeConnectInstance } from "../types";
|
|
2
|
-
import {
|
|
3
|
-
|
|
4
|
-
initStripeConnect,
|
|
5
|
-
LoadConnectAndInitialize
|
|
6
|
-
} from "./shared";
|
|
1
|
+
import type { IStripeConnectInitParams, StripeConnectInstance } from "../types";
|
|
2
|
+
import type { LoadConnectAndInitialize } from "./shared";
|
|
3
|
+
import { loadScript, initStripeConnect } from "./shared";
|
|
7
4
|
|
|
8
5
|
export const loadConnectAndInitialize: LoadConnectAndInitialize = (
|
|
9
6
|
initParams: IStripeConnectInitParams
|
package/src/shared.ts
CHANGED
|
@@ -1,78 +1,61 @@
|
|
|
1
|
-
import {
|
|
1
|
+
import type {
|
|
2
2
|
IStripeConnectInitParams,
|
|
3
3
|
StripeConnectInstance,
|
|
4
4
|
ConnectElementTagName,
|
|
5
|
-
ConnectHTMLElementRecord
|
|
5
|
+
ConnectHTMLElementRecord,
|
|
6
6
|
} from "../types";
|
|
7
7
|
import {
|
|
8
8
|
ConnectElementCommonMethodConfig,
|
|
9
|
-
ConnectElementCustomMethodConfig
|
|
9
|
+
ConnectElementCustomMethodConfig,
|
|
10
10
|
} from "../types/config";
|
|
11
11
|
|
|
12
12
|
export type LoadConnectAndInitialize = (
|
|
13
13
|
initParams: IStripeConnectInitParams
|
|
14
14
|
) => StripeConnectInstance;
|
|
15
15
|
|
|
16
|
-
|
|
16
|
+
type ConnectElementHTMLName =
|
|
17
|
+
| "stripe-connect-account-onboarding"
|
|
18
|
+
| "stripe-connect-disputes-list"
|
|
17
19
|
| "stripe-connect-payments"
|
|
18
|
-
| "stripe-connect-payouts"
|
|
19
20
|
| "stripe-connect-payment-details"
|
|
20
|
-
| "stripe-connect-
|
|
21
|
-
| "stripe-connect-payment-method-settings"
|
|
21
|
+
| "stripe-connect-payment-disputes"
|
|
22
22
|
| "stripe-connect-account-management"
|
|
23
23
|
| "stripe-connect-notification-banner"
|
|
24
|
-
| "stripe-connect-instant-payouts"
|
|
24
|
+
| "stripe-connect-instant-payouts-promotion"
|
|
25
25
|
| "stripe-connect-issuing-card"
|
|
26
26
|
| "stripe-connect-issuing-cards-list"
|
|
27
27
|
| "stripe-connect-financial-account"
|
|
28
28
|
| "stripe-connect-financial-account-transactions"
|
|
29
|
-
| "stripe-connect-
|
|
30
|
-
| "stripe-connect-
|
|
31
|
-
| "stripe-connect-
|
|
32
|
-
| "stripe-connect-capital-financing-promotion"
|
|
33
|
-
| "stripe-connect-capital-overview"
|
|
29
|
+
| "stripe-connect-payouts"
|
|
30
|
+
| "stripe-connect-payouts-list"
|
|
31
|
+
| "stripe-connect-balances"
|
|
34
32
|
| "stripe-connect-documents"
|
|
35
33
|
| "stripe-connect-tax-registrations"
|
|
36
|
-
| "stripe-connect-tax-settings"
|
|
37
|
-
| "stripe-connect-tax-threshold-monitoring"
|
|
38
|
-
| "stripe-connect-balances"
|
|
39
|
-
| "stripe-connect-payouts-list"
|
|
40
|
-
| "stripe-connect-app-install"
|
|
41
|
-
| "stripe-connect-app-viewport"
|
|
42
|
-
| "stripe-connect-reporting-chart";
|
|
34
|
+
| "stripe-connect-tax-settings";
|
|
43
35
|
|
|
44
36
|
export const componentNameMapping: Record<
|
|
45
37
|
ConnectElementTagName,
|
|
46
38
|
ConnectElementHTMLName
|
|
47
39
|
> = {
|
|
40
|
+
"account-onboarding": "stripe-connect-account-onboarding",
|
|
41
|
+
"disputes-list": "stripe-connect-disputes-list",
|
|
48
42
|
payments: "stripe-connect-payments",
|
|
49
|
-
payouts: "stripe-connect-payouts",
|
|
50
43
|
"payment-details": "stripe-connect-payment-details",
|
|
51
|
-
"
|
|
52
|
-
|
|
44
|
+
"payment-disputes": "stripe-connect-payment-disputes",
|
|
45
|
+
payouts: "stripe-connect-payouts",
|
|
46
|
+
"payouts-list": "stripe-connect-payouts-list",
|
|
47
|
+
balances: "stripe-connect-balances",
|
|
53
48
|
"account-management": "stripe-connect-account-management",
|
|
54
49
|
"notification-banner": "stripe-connect-notification-banner",
|
|
55
|
-
"instant-payouts": "stripe-connect-instant-payouts",
|
|
50
|
+
"instant-payouts-promotion": "stripe-connect-instant-payouts-promotion",
|
|
56
51
|
"issuing-card": "stripe-connect-issuing-card",
|
|
57
52
|
"issuing-cards-list": "stripe-connect-issuing-cards-list",
|
|
58
53
|
"financial-account": "stripe-connect-financial-account",
|
|
59
|
-
recipients: "stripe-connect-recipients",
|
|
60
54
|
"financial-account-transactions":
|
|
61
55
|
"stripe-connect-financial-account-transactions",
|
|
62
|
-
"capital-financing": "stripe-connect-capital-financing",
|
|
63
|
-
"capital-financing-application":
|
|
64
|
-
"stripe-connect-capital-financing-application",
|
|
65
|
-
"capital-financing-promotion": "stripe-connect-capital-financing-promotion",
|
|
66
|
-
"capital-overview": "stripe-connect-capital-overview",
|
|
67
56
|
documents: "stripe-connect-documents",
|
|
68
57
|
"tax-registrations": "stripe-connect-tax-registrations",
|
|
69
58
|
"tax-settings": "stripe-connect-tax-settings",
|
|
70
|
-
"tax-threshold-monitoring": "stripe-connect-tax-threshold-monitoring",
|
|
71
|
-
balances: "stripe-connect-balances",
|
|
72
|
-
"payouts-list": "stripe-connect-payouts-list",
|
|
73
|
-
"app-install": "stripe-connect-app-install",
|
|
74
|
-
"app-viewport": "stripe-connect-app-viewport",
|
|
75
|
-
"reporting-chart": "stripe-connect-reporting-chart"
|
|
76
59
|
};
|
|
77
60
|
|
|
78
61
|
type StripeConnectInstanceExtended = StripeConnectInstance & {
|
|
@@ -91,10 +74,10 @@ const V1_URL = "https://connect-js.stripe.com/v1.0/connect.js";
|
|
|
91
74
|
export const findScript = (): HTMLScriptElement | null => {
|
|
92
75
|
return (
|
|
93
76
|
document.querySelectorAll<HTMLScriptElement>(
|
|
94
|
-
`script[src="${
|
|
77
|
+
`script[src="${V1_URL}"]`
|
|
95
78
|
)[0] ||
|
|
96
79
|
document.querySelectorAll<HTMLScriptElement>(
|
|
97
|
-
`script[src="${
|
|
80
|
+
`script[src="${V0_URL}"]`
|
|
98
81
|
)[0] ||
|
|
99
82
|
null
|
|
100
83
|
);
|
|
@@ -119,6 +102,20 @@ const injectScript = (): HTMLScriptElement => {
|
|
|
119
102
|
|
|
120
103
|
let stripePromise: Promise<StripeConnectWrapper> | null = null;
|
|
121
104
|
|
|
105
|
+
export const isWindowStripeConnectDefined = (stripeConnect: unknown) => {
|
|
106
|
+
// We only consider `StripeConnect` defined if `init` is a function
|
|
107
|
+
// Why? HTML markup like:
|
|
108
|
+
// <a id="StripeConnect"><a id="StripeConnect" name="init" href="stripe"></a></a> in the <head> of the page
|
|
109
|
+
// can end up "contaminating" the window.StripeConnect object and cause issues in connect.js initialization
|
|
110
|
+
return !!(
|
|
111
|
+
stripeConnect &&
|
|
112
|
+
typeof stripeConnect === "object" &&
|
|
113
|
+
"init" in stripeConnect &&
|
|
114
|
+
typeof (stripeConnect as { init: unknown } & Record<string, unknown>)
|
|
115
|
+
.init === "function"
|
|
116
|
+
);
|
|
117
|
+
};
|
|
118
|
+
|
|
122
119
|
export const loadScript = (): Promise<StripeConnectWrapper> => {
|
|
123
120
|
// Ensure that we only attempt to load Connect.js at most once
|
|
124
121
|
if (stripePromise !== null) {
|
|
@@ -133,11 +130,8 @@ export const loadScript = (): Promise<StripeConnectWrapper> => {
|
|
|
133
130
|
return;
|
|
134
131
|
}
|
|
135
132
|
|
|
136
|
-
if ((window as any).StripeConnect) {
|
|
133
|
+
if (isWindowStripeConnectDefined((window as any).StripeConnect)) {
|
|
137
134
|
console.warn(EXISTING_SCRIPT_MESSAGE);
|
|
138
|
-
}
|
|
139
|
-
|
|
140
|
-
if ((window as any).StripeConnect) {
|
|
141
135
|
const wrapper = createWrapper((window as any).StripeConnect);
|
|
142
136
|
resolve(wrapper);
|
|
143
137
|
return;
|
|
@@ -153,7 +147,7 @@ export const loadScript = (): Promise<StripeConnectWrapper> => {
|
|
|
153
147
|
}
|
|
154
148
|
|
|
155
149
|
script.addEventListener("load", () => {
|
|
156
|
-
if ((window as any).StripeConnect) {
|
|
150
|
+
if (isWindowStripeConnectDefined((window as any).StripeConnect)) {
|
|
157
151
|
const wrapper = createWrapper((window as any).StripeConnect);
|
|
158
152
|
resolve(wrapper);
|
|
159
153
|
} else {
|
|
@@ -190,18 +184,18 @@ export const initStripeConnect = (
|
|
|
190
184
|
}
|
|
191
185
|
})();
|
|
192
186
|
const metaOptions = (initParams as any).metaOptions ?? {};
|
|
193
|
-
const stripeConnectInstance = stripePromise.then(wrapper =>
|
|
187
|
+
const stripeConnectInstance = stripePromise.then((wrapper) =>
|
|
194
188
|
wrapper.initialize({
|
|
195
189
|
...initParams,
|
|
196
|
-
metaOptions: { ...metaOptions, eagerClientSecretPromise }
|
|
190
|
+
metaOptions: { ...metaOptions, eagerClientSecretPromise },
|
|
197
191
|
} as any)
|
|
198
192
|
);
|
|
199
193
|
|
|
200
194
|
return {
|
|
201
|
-
create: tagName => {
|
|
195
|
+
create: (tagName) => {
|
|
202
196
|
let htmlName = componentNameMapping[tagName];
|
|
203
197
|
if (!htmlName) {
|
|
204
|
-
htmlName =
|
|
198
|
+
htmlName = tagName as unknown as ConnectElementHTMLName;
|
|
205
199
|
}
|
|
206
200
|
const element = document.createElement(htmlName);
|
|
207
201
|
|
|
@@ -210,14 +204,14 @@ export const initStripeConnect = (
|
|
|
210
204
|
: {};
|
|
211
205
|
const methods = { ...customMethods, ...ConnectElementCommonMethodConfig };
|
|
212
206
|
for (const method in methods) {
|
|
213
|
-
(element as any)[method] = function(value: any) {
|
|
207
|
+
(element as any)[method] = function (value: any) {
|
|
214
208
|
stripeConnectInstance.then(() => {
|
|
215
209
|
this[`${method}InternalOnly`](value);
|
|
216
210
|
});
|
|
217
211
|
};
|
|
218
212
|
}
|
|
219
213
|
|
|
220
|
-
stripeConnectInstance.then(instance => {
|
|
214
|
+
stripeConnectInstance.then((instance) => {
|
|
221
215
|
if (!element.isConnected && !(element as any).setConnector) {
|
|
222
216
|
// If the element is not connected to the DOM and the `setConnector` method is not
|
|
223
217
|
// defined, this indicates the element was created before connect.js was loaded, and has
|
|
@@ -245,8 +239,8 @@ export const initStripeConnect = (
|
|
|
245
239
|
|
|
246
240
|
return element as ConnectHTMLElementRecord[typeof tagName];
|
|
247
241
|
},
|
|
248
|
-
update: updateOptions => {
|
|
249
|
-
stripeConnectInstance.then(instance => {
|
|
242
|
+
update: (updateOptions) => {
|
|
243
|
+
stripeConnectInstance.then((instance) => {
|
|
250
244
|
instance.update(updateOptions);
|
|
251
245
|
});
|
|
252
246
|
},
|
|
@@ -254,10 +248,10 @@ export const initStripeConnect = (
|
|
|
254
248
|
return stripeConnectInstance;
|
|
255
249
|
},
|
|
256
250
|
logout: () => {
|
|
257
|
-
return stripeConnectInstance.then(instance => {
|
|
251
|
+
return stripeConnectInstance.then((instance) => {
|
|
258
252
|
return instance.logout();
|
|
259
253
|
});
|
|
260
|
-
}
|
|
254
|
+
},
|
|
261
255
|
};
|
|
262
256
|
};
|
|
263
257
|
|
|
@@ -274,12 +268,12 @@ const createWrapper = (stripeConnect: any) => {
|
|
|
274
268
|
sdk: true,
|
|
275
269
|
sdkOptions: {
|
|
276
270
|
// This will be replaced by the npm package version when bundling
|
|
277
|
-
sdkVersion: "_NPM_PACKAGE_VERSION_"
|
|
278
|
-
}
|
|
279
|
-
}
|
|
271
|
+
sdkVersion: "_NPM_PACKAGE_VERSION_",
|
|
272
|
+
},
|
|
273
|
+
},
|
|
280
274
|
});
|
|
281
275
|
return stripeConnectInstance;
|
|
282
|
-
}
|
|
276
|
+
},
|
|
283
277
|
};
|
|
284
278
|
return wrapper;
|
|
285
279
|
};
|