@stripe/connect-js 3.3.28-preview-1 → 3.3.28

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 CHANGED
@@ -36,7 +36,7 @@ const fetchClientSecret = async () => {
36
36
 
37
37
  const instance = loadConnectAndInitialize({
38
38
  publishableKey: "{{pk test123}}",
39
- fetchClientSecret: fetchClientSecret
39
+ fetchClientSecret: fetchClientSecret,
40
40
  });
41
41
  ```
42
42
 
@@ -47,7 +47,7 @@ test this code through your Connect account.
47
47
  If you have deployed a
48
48
  [Content Security Policy](https://developer.mozilla.org/en-US/docs/Web/Security/CSP),
49
49
  make sure to
50
- [include Connect.js in your directives](https://stripe.com/docs/security/guide#content-security-policy).
50
+ [include Connect.js in your directives](https://stripe.com/docs/connect/get-started-connect-embedded-components?platform=web#csp-and-http-header-requirements).
51
51
 
52
52
  ### Import as a side effect
53
53
 
@@ -71,6 +71,6 @@ import { loadConnectAndInitialize } from "@stripe/connect-js/pure";
71
71
  // Connect.js will not be loaded until `loadConnect` is called
72
72
  const instance = loadConnectAndInitialize({
73
73
  publishableKey: "{{pk test123}}",
74
- fetchClientSecret: fetchClientSecret
74
+ fetchClientSecret: fetchClientSecret,
75
75
  });
76
76
  ```
@@ -5,13 +5,6 @@ const ConnectElementCommonMethodConfig = {
5
5
  setOnLoaderStart: _listener => {}
6
6
  };
7
7
  const ConnectElementCustomMethodConfig = {
8
- payments: {
9
- setDefaultFilters: _filters => {}
10
- },
11
- "payment-details": {
12
- setPayment: _payment => {},
13
- setOnClose: _listener => {}
14
- },
15
8
  "account-onboarding": {
16
9
  setFullTermsOfServiceUrl: _termOfServiceUrl => {},
17
10
  setRecipientTermsOfServiceUrl: _recipientTermsOfServiceUrl => {},
@@ -28,6 +21,10 @@ const ConnectElementCustomMethodConfig = {
28
21
  setCollectionOptions: _collectionOptions => {},
29
22
  setOnNotificationsChange: _listener => {}
30
23
  },
24
+ "instant-payouts-promotion": {
25
+ setOnInstantPayoutsPromotionLoaded: _listener => {},
26
+ setOnInstantPayoutCreated: _listener => {}
27
+ },
31
28
  "issuing-card": {
32
29
  setDefaultCard: _defaultCard => {},
33
30
  setCardSwitching: _cardSwitching => {},
@@ -45,46 +42,16 @@ const ConnectElementCustomMethodConfig = {
45
42
  "financial-account-transactions": {
46
43
  setFinancialAccount: _financialAccount => {}
47
44
  },
48
- recipients: {
49
- setDataSource: _dataSource => {}
50
- },
51
- "app-install": {
52
- setApp: _app => {},
53
- setOnAppInstallStateFetched: _listener => {},
54
- setOnAppInstallStateChanged: _listener => {}
55
- },
56
- "app-viewport": {
57
- setApp: _app => {},
58
- setAppData: _appData => {}
59
- },
60
- "payment-method-settings": {
61
- setPaymentMethodConfiguration: _paymentMethodConfiguration => {}
62
- },
63
- "capital-financing": {
64
- setDefaultFinancingOffer: _defaultFinancingOffer => {},
65
- setShowFinancingSelector: _showFinancingSelector => {},
66
- setHowCapitalWorksUrl: _howCapitalWorksUrl => {},
67
- setSupportUrl: _supportUrl => {},
68
- setOnFinancingsLoaded: _listener => {}
69
- },
70
- "capital-financing-application": {
71
- setOnApplicationSubmitted: _listener => {},
72
- setPrivacyPolicyUrl: _privacyPolicyUrl => {},
73
- setHowCapitalWorksUrl: _howCapitalWorksUrl => {}
45
+ payments: {
46
+ setDefaultFilters: _filters => {}
74
47
  },
75
- "capital-financing-promotion": {
76
- setLayout: _layout => {},
77
- setOnApplicationSubmitted: _listener => {},
78
- setOnEligibleFinancingOfferLoaded: _listener => {},
79
- setPrivacyPolicyUrl: _privacyPolicyUrl => {},
80
- setHowCapitalWorksUrl: _howCapitalWorksUrl => {},
81
- setEligibilityCriteriaUrl: _eligibilityCriteriaUrl => {}
48
+ "payment-details": {
49
+ setPayment: _payment => {},
50
+ setOnClose: _listener => {}
82
51
  },
83
- "reporting-chart": {
84
- setReportName: _reportName => {},
85
- setIntervalStart: _intervalStart => {},
86
- setIntervalEnd: _intervalEnd => {},
87
- setIntervalType: _intervalType => {}
52
+ "payment-disputes": {
53
+ setPayment: _payment => {},
54
+ setOnDisputesLoaded: _listener => {}
88
55
  },
89
56
  "tax-settings": {
90
57
  setHideProductTaxCodeSelector: _hidden => {},
@@ -95,51 +62,38 @@ const ConnectElementCustomMethodConfig = {
95
62
  setOnAfterTaxRegistrationAdded: _listener => {},
96
63
  setDisplayCountries: _countries => {}
97
64
  },
98
- "tax-threshold-monitoring": {
99
- setDisplayCountries: _countries => {}
100
- },
101
- "product-tax-code-selector": {
102
- setOnTaxCodeSelect: _listener => {},
103
- setHideDescription: _hideDescription => {},
104
- setDisabled: _disabled => {},
105
- setInitialTaxCode: _initialTaxCode => {}
65
+ "payout-details": {
66
+ setPayout: _payout => {},
67
+ setOnClose: _listener => {}
106
68
  }
107
69
  };
108
70
 
109
71
  const componentNameMapping = {
72
+ "account-onboarding": "stripe-connect-account-onboarding",
73
+ "disputes-list": "stripe-connect-disputes-list",
110
74
  payments: "stripe-connect-payments",
111
- payouts: "stripe-connect-payouts",
112
75
  "payment-details": "stripe-connect-payment-details",
113
- "account-onboarding": "stripe-connect-account-onboarding",
114
- "payment-method-settings": "stripe-connect-payment-method-settings",
76
+ "payment-disputes": "stripe-connect-payment-disputes",
77
+ payouts: "stripe-connect-payouts",
78
+ "payouts-list": "stripe-connect-payouts-list",
79
+ "payout-details": "stripe-connect-payout-details",
80
+ balances: "stripe-connect-balances",
115
81
  "account-management": "stripe-connect-account-management",
116
82
  "notification-banner": "stripe-connect-notification-banner",
117
- "instant-payouts": "stripe-connect-instant-payouts",
83
+ "instant-payouts-promotion": "stripe-connect-instant-payouts-promotion",
118
84
  "issuing-card": "stripe-connect-issuing-card",
119
85
  "issuing-cards-list": "stripe-connect-issuing-cards-list",
120
86
  "financial-account": "stripe-connect-financial-account",
121
- recipients: "stripe-connect-recipients",
122
87
  "financial-account-transactions": "stripe-connect-financial-account-transactions",
123
- "capital-financing": "stripe-connect-capital-financing",
124
- "capital-financing-application": "stripe-connect-capital-financing-application",
125
- "capital-financing-promotion": "stripe-connect-capital-financing-promotion",
126
- "capital-overview": "stripe-connect-capital-overview",
127
88
  documents: "stripe-connect-documents",
128
- "product-tax-code-selector": "stripe-connect-product-tax-code-selector",
129
89
  "tax-registrations": "stripe-connect-tax-registrations",
130
- "tax-settings": "stripe-connect-tax-settings",
131
- "tax-threshold-monitoring": "stripe-connect-tax-threshold-monitoring",
132
- balances: "stripe-connect-balances",
133
- "payouts-list": "stripe-connect-payouts-list",
134
- "app-install": "stripe-connect-app-install",
135
- "app-viewport": "stripe-connect-app-viewport",
136
- "reporting-chart": "stripe-connect-reporting-chart"
90
+ "tax-settings": "stripe-connect-tax-settings"
137
91
  };
138
92
  const EXISTING_SCRIPT_MESSAGE = "loadConnect was called but an existing Connect.js script already exists in the document; existing script parameters will be used";
139
93
  const V0_URL = "https://connect-js.stripe.com/v0.1/connect.js";
140
94
  const V1_URL = "https://connect-js.stripe.com/v1.0/connect.js";
141
95
  const findScript = () => {
142
- return document.querySelectorAll(`script[src="${V0_URL}"]`)[0] || document.querySelectorAll(`script[src="${V1_URL}"]`)[0] || null;
96
+ return document.querySelectorAll(`script[src="${V1_URL}"]`)[0] || document.querySelectorAll(`script[src="${V0_URL}"]`)[0] || null;
143
97
  };
144
98
  const injectScript = () => {
145
99
  const script = document.createElement("script");
@@ -151,21 +105,26 @@ const injectScript = () => {
151
105
  document.head.appendChild(script);
152
106
  return script;
153
107
  };
154
- let stripePromise = null;
108
+ let stripePromise$1 = null;
109
+ const isWindowStripeConnectDefined = stripeConnect => {
110
+ // We only consider `StripeConnect` defined if `init` is a function
111
+ // Why? HTML markup like:
112
+ // <a id="StripeConnect"><a id="StripeConnect" name="init" href="stripe"></a></a> in the <head> of the page
113
+ // can end up "contaminating" the window.StripeConnect object and cause issues in connect.js initialization
114
+ return !!(stripeConnect && typeof stripeConnect === "object" && "init" in stripeConnect && typeof stripeConnect.init === "function");
115
+ };
155
116
  const loadScript = () => {
156
117
  // Ensure that we only attempt to load Connect.js at most once
157
- if (stripePromise !== null) {
158
- return stripePromise;
118
+ if (stripePromise$1 !== null) {
119
+ return stripePromise$1;
159
120
  }
160
- stripePromise = new Promise((resolve, reject) => {
121
+ stripePromise$1 = new Promise((resolve, reject) => {
161
122
  if (typeof window === "undefined") {
162
123
  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.");
163
124
  return;
164
125
  }
165
- if (window.StripeConnect) {
126
+ if (isWindowStripeConnectDefined(window.StripeConnect)) {
166
127
  console.warn(EXISTING_SCRIPT_MESSAGE);
167
- }
168
- if (window.StripeConnect) {
169
128
  const wrapper = createWrapper(window.StripeConnect);
170
129
  resolve(wrapper);
171
130
  return;
@@ -178,7 +137,7 @@ const loadScript = () => {
178
137
  script = injectScript();
179
138
  }
180
139
  script.addEventListener("load", () => {
181
- if (window.StripeConnect) {
140
+ if (isWindowStripeConnectDefined(window.StripeConnect)) {
182
141
  const wrapper = createWrapper(window.StripeConnect);
183
142
  resolve(wrapper);
184
143
  } else {
@@ -192,7 +151,7 @@ const loadScript = () => {
192
151
  reject(error);
193
152
  }
194
153
  });
195
- return stripePromise;
154
+ return stripePromise$1;
196
155
  };
197
156
  const hasCustomMethod = tagName => {
198
157
  return tagName in ConnectElementCustomMethodConfig;
@@ -276,7 +235,7 @@ const createWrapper = stripeConnect => {
276
235
  sdk: true,
277
236
  sdkOptions: {
278
237
  // This will be replaced by the npm package version when bundling
279
- sdkVersion: "3.3.28-preview-1"
238
+ sdkVersion: "3.3.28"
280
239
  }
281
240
  })
282
241
  }));
@@ -288,16 +247,16 @@ const createWrapper = stripeConnect => {
288
247
 
289
248
  // Execute our own script injection after a tick to give users time to do their
290
249
  // own script injection.
291
- const stripePromise$1 = Promise.resolve().then(() => loadScript());
250
+ const stripePromise = Promise.resolve().then(() => loadScript());
292
251
  let loadCalled = false;
293
- stripePromise$1.catch(err => {
252
+ stripePromise.catch(err => {
294
253
  if (!loadCalled) {
295
254
  console.warn(err);
296
255
  }
297
256
  });
298
257
  const loadConnectAndInitialize = initParams => {
299
258
  loadCalled = true;
300
- return initStripeConnect(stripePromise$1, initParams);
259
+ return initStripeConnect(stripePromise, initParams);
301
260
  };
302
261
 
303
262
  export { loadConnectAndInitialize };
package/dist/connect.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
- recipients: {
53
- setDataSource: _dataSource => {}
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
- "capital-financing-promotion": {
80
- setLayout: _layout => {},
81
- setOnApplicationSubmitted: _listener => {},
82
- setOnEligibleFinancingOfferLoaded: _listener => {},
83
- setPrivacyPolicyUrl: _privacyPolicyUrl => {},
84
- setHowCapitalWorksUrl: _howCapitalWorksUrl => {},
85
- setEligibilityCriteriaUrl: _eligibilityCriteriaUrl => {}
52
+ "payment-details": {
53
+ setPayment: _payment => {},
54
+ setOnClose: _listener => {}
86
55
  },
87
- "reporting-chart": {
88
- setReportName: _reportName => {},
89
- setIntervalStart: _intervalStart => {},
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 => {},
@@ -99,51 +66,38 @@ const ConnectElementCustomMethodConfig = {
99
66
  setOnAfterTaxRegistrationAdded: _listener => {},
100
67
  setDisplayCountries: _countries => {}
101
68
  },
102
- "tax-threshold-monitoring": {
103
- setDisplayCountries: _countries => {}
104
- },
105
- "product-tax-code-selector": {
106
- setOnTaxCodeSelect: _listener => {},
107
- setHideDescription: _hideDescription => {},
108
- setDisabled: _disabled => {},
109
- setInitialTaxCode: _initialTaxCode => {}
69
+ "payout-details": {
70
+ setPayout: _payout => {},
71
+ setOnClose: _listener => {}
110
72
  }
111
73
  };
112
74
 
113
75
  const componentNameMapping = {
76
+ "account-onboarding": "stripe-connect-account-onboarding",
77
+ "disputes-list": "stripe-connect-disputes-list",
114
78
  payments: "stripe-connect-payments",
115
- payouts: "stripe-connect-payouts",
116
79
  "payment-details": "stripe-connect-payment-details",
117
- "account-onboarding": "stripe-connect-account-onboarding",
118
- "payment-method-settings": "stripe-connect-payment-method-settings",
80
+ "payment-disputes": "stripe-connect-payment-disputes",
81
+ payouts: "stripe-connect-payouts",
82
+ "payouts-list": "stripe-connect-payouts-list",
83
+ "payout-details": "stripe-connect-payout-details",
84
+ balances: "stripe-connect-balances",
119
85
  "account-management": "stripe-connect-account-management",
120
86
  "notification-banner": "stripe-connect-notification-banner",
121
- "instant-payouts": "stripe-connect-instant-payouts",
87
+ "instant-payouts-promotion": "stripe-connect-instant-payouts-promotion",
122
88
  "issuing-card": "stripe-connect-issuing-card",
123
89
  "issuing-cards-list": "stripe-connect-issuing-cards-list",
124
90
  "financial-account": "stripe-connect-financial-account",
125
- recipients: "stripe-connect-recipients",
126
91
  "financial-account-transactions": "stripe-connect-financial-account-transactions",
127
- "capital-financing": "stripe-connect-capital-financing",
128
- "capital-financing-application": "stripe-connect-capital-financing-application",
129
- "capital-financing-promotion": "stripe-connect-capital-financing-promotion",
130
- "capital-overview": "stripe-connect-capital-overview",
131
92
  documents: "stripe-connect-documents",
132
- "product-tax-code-selector": "stripe-connect-product-tax-code-selector",
133
93
  "tax-registrations": "stripe-connect-tax-registrations",
134
- "tax-settings": "stripe-connect-tax-settings",
135
- "tax-threshold-monitoring": "stripe-connect-tax-threshold-monitoring",
136
- balances: "stripe-connect-balances",
137
- "payouts-list": "stripe-connect-payouts-list",
138
- "app-install": "stripe-connect-app-install",
139
- "app-viewport": "stripe-connect-app-viewport",
140
- "reporting-chart": "stripe-connect-reporting-chart"
94
+ "tax-settings": "stripe-connect-tax-settings"
141
95
  };
142
96
  const EXISTING_SCRIPT_MESSAGE = "loadConnect was called but an existing Connect.js script already exists in the document; existing script parameters will be used";
143
97
  const V0_URL = "https://connect-js.stripe.com/v0.1/connect.js";
144
98
  const V1_URL = "https://connect-js.stripe.com/v1.0/connect.js";
145
99
  const findScript = () => {
146
- return document.querySelectorAll(`script[src="${V0_URL}"]`)[0] || document.querySelectorAll(`script[src="${V1_URL}"]`)[0] || null;
100
+ return document.querySelectorAll(`script[src="${V1_URL}"]`)[0] || document.querySelectorAll(`script[src="${V0_URL}"]`)[0] || null;
147
101
  };
148
102
  const injectScript = () => {
149
103
  const script = document.createElement("script");
@@ -155,21 +109,26 @@ const injectScript = () => {
155
109
  document.head.appendChild(script);
156
110
  return script;
157
111
  };
158
- let stripePromise = null;
112
+ let stripePromise$1 = null;
113
+ const isWindowStripeConnectDefined = stripeConnect => {
114
+ // We only consider `StripeConnect` defined if `init` is a function
115
+ // Why? HTML markup like:
116
+ // <a id="StripeConnect"><a id="StripeConnect" name="init" href="stripe"></a></a> in the <head> of the page
117
+ // can end up "contaminating" the window.StripeConnect object and cause issues in connect.js initialization
118
+ return !!(stripeConnect && typeof stripeConnect === "object" && "init" in stripeConnect && typeof stripeConnect.init === "function");
119
+ };
159
120
  const loadScript = () => {
160
121
  // Ensure that we only attempt to load Connect.js at most once
161
- if (stripePromise !== null) {
162
- return stripePromise;
122
+ if (stripePromise$1 !== null) {
123
+ return stripePromise$1;
163
124
  }
164
- stripePromise = new Promise((resolve, reject) => {
125
+ stripePromise$1 = new Promise((resolve, reject) => {
165
126
  if (typeof window === "undefined") {
166
127
  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.");
167
128
  return;
168
129
  }
169
- if (window.StripeConnect) {
130
+ if (isWindowStripeConnectDefined(window.StripeConnect)) {
170
131
  console.warn(EXISTING_SCRIPT_MESSAGE);
171
- }
172
- if (window.StripeConnect) {
173
132
  const wrapper = createWrapper(window.StripeConnect);
174
133
  resolve(wrapper);
175
134
  return;
@@ -182,7 +141,7 @@ const loadScript = () => {
182
141
  script = injectScript();
183
142
  }
184
143
  script.addEventListener("load", () => {
185
- if (window.StripeConnect) {
144
+ if (isWindowStripeConnectDefined(window.StripeConnect)) {
186
145
  const wrapper = createWrapper(window.StripeConnect);
187
146
  resolve(wrapper);
188
147
  } else {
@@ -196,7 +155,7 @@ const loadScript = () => {
196
155
  reject(error);
197
156
  }
198
157
  });
199
- return stripePromise;
158
+ return stripePromise$1;
200
159
  };
201
160
  const hasCustomMethod = tagName => {
202
161
  return tagName in ConnectElementCustomMethodConfig;
@@ -280,7 +239,7 @@ const createWrapper = stripeConnect => {
280
239
  sdk: true,
281
240
  sdkOptions: {
282
241
  // This will be replaced by the npm package version when bundling
283
- sdkVersion: "3.3.28-preview-1"
242
+ sdkVersion: "3.3.28"
284
243
  }
285
244
  })
286
245
  }));
@@ -292,16 +251,16 @@ const createWrapper = stripeConnect => {
292
251
 
293
252
  // Execute our own script injection after a tick to give users time to do their
294
253
  // own script injection.
295
- const stripePromise$1 = Promise.resolve().then(() => loadScript());
254
+ const stripePromise = Promise.resolve().then(() => loadScript());
296
255
  let loadCalled = false;
297
- stripePromise$1.catch(err => {
256
+ stripePromise.catch(err => {
298
257
  if (!loadCalled) {
299
258
  console.warn(err);
300
259
  }
301
260
  });
302
261
  const loadConnectAndInitialize = initParams => {
303
262
  loadCalled = true;
304
- return initStripeConnect(stripePromise$1, initParams);
263
+ return initStripeConnect(stripePromise, initParams);
305
264
  };
306
265
 
307
266
  exports.loadConnectAndInitialize = loadConnectAndInitialize;
package/dist/pure.esm.js CHANGED
@@ -5,13 +5,6 @@ const ConnectElementCommonMethodConfig = {
5
5
  setOnLoaderStart: _listener => {}
6
6
  };
7
7
  const ConnectElementCustomMethodConfig = {
8
- payments: {
9
- setDefaultFilters: _filters => {}
10
- },
11
- "payment-details": {
12
- setPayment: _payment => {},
13
- setOnClose: _listener => {}
14
- },
15
8
  "account-onboarding": {
16
9
  setFullTermsOfServiceUrl: _termOfServiceUrl => {},
17
10
  setRecipientTermsOfServiceUrl: _recipientTermsOfServiceUrl => {},
@@ -28,6 +21,10 @@ const ConnectElementCustomMethodConfig = {
28
21
  setCollectionOptions: _collectionOptions => {},
29
22
  setOnNotificationsChange: _listener => {}
30
23
  },
24
+ "instant-payouts-promotion": {
25
+ setOnInstantPayoutsPromotionLoaded: _listener => {},
26
+ setOnInstantPayoutCreated: _listener => {}
27
+ },
31
28
  "issuing-card": {
32
29
  setDefaultCard: _defaultCard => {},
33
30
  setCardSwitching: _cardSwitching => {},
@@ -45,46 +42,16 @@ const ConnectElementCustomMethodConfig = {
45
42
  "financial-account-transactions": {
46
43
  setFinancialAccount: _financialAccount => {}
47
44
  },
48
- recipients: {
49
- setDataSource: _dataSource => {}
50
- },
51
- "app-install": {
52
- setApp: _app => {},
53
- setOnAppInstallStateFetched: _listener => {},
54
- setOnAppInstallStateChanged: _listener => {}
55
- },
56
- "app-viewport": {
57
- setApp: _app => {},
58
- setAppData: _appData => {}
59
- },
60
- "payment-method-settings": {
61
- setPaymentMethodConfiguration: _paymentMethodConfiguration => {}
62
- },
63
- "capital-financing": {
64
- setDefaultFinancingOffer: _defaultFinancingOffer => {},
65
- setShowFinancingSelector: _showFinancingSelector => {},
66
- setHowCapitalWorksUrl: _howCapitalWorksUrl => {},
67
- setSupportUrl: _supportUrl => {},
68
- setOnFinancingsLoaded: _listener => {}
69
- },
70
- "capital-financing-application": {
71
- setOnApplicationSubmitted: _listener => {},
72
- setPrivacyPolicyUrl: _privacyPolicyUrl => {},
73
- setHowCapitalWorksUrl: _howCapitalWorksUrl => {}
45
+ payments: {
46
+ setDefaultFilters: _filters => {}
74
47
  },
75
- "capital-financing-promotion": {
76
- setLayout: _layout => {},
77
- setOnApplicationSubmitted: _listener => {},
78
- setOnEligibleFinancingOfferLoaded: _listener => {},
79
- setPrivacyPolicyUrl: _privacyPolicyUrl => {},
80
- setHowCapitalWorksUrl: _howCapitalWorksUrl => {},
81
- setEligibilityCriteriaUrl: _eligibilityCriteriaUrl => {}
48
+ "payment-details": {
49
+ setPayment: _payment => {},
50
+ setOnClose: _listener => {}
82
51
  },
83
- "reporting-chart": {
84
- setReportName: _reportName => {},
85
- setIntervalStart: _intervalStart => {},
86
- setIntervalEnd: _intervalEnd => {},
87
- setIntervalType: _intervalType => {}
52
+ "payment-disputes": {
53
+ setPayment: _payment => {},
54
+ setOnDisputesLoaded: _listener => {}
88
55
  },
89
56
  "tax-settings": {
90
57
  setHideProductTaxCodeSelector: _hidden => {},
@@ -95,51 +62,38 @@ const ConnectElementCustomMethodConfig = {
95
62
  setOnAfterTaxRegistrationAdded: _listener => {},
96
63
  setDisplayCountries: _countries => {}
97
64
  },
98
- "tax-threshold-monitoring": {
99
- setDisplayCountries: _countries => {}
100
- },
101
- "product-tax-code-selector": {
102
- setOnTaxCodeSelect: _listener => {},
103
- setHideDescription: _hideDescription => {},
104
- setDisabled: _disabled => {},
105
- setInitialTaxCode: _initialTaxCode => {}
65
+ "payout-details": {
66
+ setPayout: _payout => {},
67
+ setOnClose: _listener => {}
106
68
  }
107
69
  };
108
70
 
109
71
  const componentNameMapping = {
72
+ "account-onboarding": "stripe-connect-account-onboarding",
73
+ "disputes-list": "stripe-connect-disputes-list",
110
74
  payments: "stripe-connect-payments",
111
- payouts: "stripe-connect-payouts",
112
75
  "payment-details": "stripe-connect-payment-details",
113
- "account-onboarding": "stripe-connect-account-onboarding",
114
- "payment-method-settings": "stripe-connect-payment-method-settings",
76
+ "payment-disputes": "stripe-connect-payment-disputes",
77
+ payouts: "stripe-connect-payouts",
78
+ "payouts-list": "stripe-connect-payouts-list",
79
+ "payout-details": "stripe-connect-payout-details",
80
+ balances: "stripe-connect-balances",
115
81
  "account-management": "stripe-connect-account-management",
116
82
  "notification-banner": "stripe-connect-notification-banner",
117
- "instant-payouts": "stripe-connect-instant-payouts",
83
+ "instant-payouts-promotion": "stripe-connect-instant-payouts-promotion",
118
84
  "issuing-card": "stripe-connect-issuing-card",
119
85
  "issuing-cards-list": "stripe-connect-issuing-cards-list",
120
86
  "financial-account": "stripe-connect-financial-account",
121
- recipients: "stripe-connect-recipients",
122
87
  "financial-account-transactions": "stripe-connect-financial-account-transactions",
123
- "capital-financing": "stripe-connect-capital-financing",
124
- "capital-financing-application": "stripe-connect-capital-financing-application",
125
- "capital-financing-promotion": "stripe-connect-capital-financing-promotion",
126
- "capital-overview": "stripe-connect-capital-overview",
127
88
  documents: "stripe-connect-documents",
128
- "product-tax-code-selector": "stripe-connect-product-tax-code-selector",
129
89
  "tax-registrations": "stripe-connect-tax-registrations",
130
- "tax-settings": "stripe-connect-tax-settings",
131
- "tax-threshold-monitoring": "stripe-connect-tax-threshold-monitoring",
132
- balances: "stripe-connect-balances",
133
- "payouts-list": "stripe-connect-payouts-list",
134
- "app-install": "stripe-connect-app-install",
135
- "app-viewport": "stripe-connect-app-viewport",
136
- "reporting-chart": "stripe-connect-reporting-chart"
90
+ "tax-settings": "stripe-connect-tax-settings"
137
91
  };
138
92
  const EXISTING_SCRIPT_MESSAGE = "loadConnect was called but an existing Connect.js script already exists in the document; existing script parameters will be used";
139
93
  const V0_URL = "https://connect-js.stripe.com/v0.1/connect.js";
140
94
  const V1_URL = "https://connect-js.stripe.com/v1.0/connect.js";
141
95
  const findScript = () => {
142
- return document.querySelectorAll(`script[src="${V0_URL}"]`)[0] || document.querySelectorAll(`script[src="${V1_URL}"]`)[0] || null;
96
+ return document.querySelectorAll(`script[src="${V1_URL}"]`)[0] || document.querySelectorAll(`script[src="${V0_URL}"]`)[0] || null;
143
97
  };
144
98
  const injectScript = () => {
145
99
  const script = document.createElement("script");
@@ -152,6 +106,13 @@ const injectScript = () => {
152
106
  return script;
153
107
  };
154
108
  let stripePromise = null;
109
+ const isWindowStripeConnectDefined = stripeConnect => {
110
+ // We only consider `StripeConnect` defined if `init` is a function
111
+ // Why? HTML markup like:
112
+ // <a id="StripeConnect"><a id="StripeConnect" name="init" href="stripe"></a></a> in the <head> of the page
113
+ // can end up "contaminating" the window.StripeConnect object and cause issues in connect.js initialization
114
+ return !!(stripeConnect && typeof stripeConnect === "object" && "init" in stripeConnect && typeof stripeConnect.init === "function");
115
+ };
155
116
  const loadScript = () => {
156
117
  // Ensure that we only attempt to load Connect.js at most once
157
118
  if (stripePromise !== null) {
@@ -162,10 +123,8 @@ const loadScript = () => {
162
123
  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.");
163
124
  return;
164
125
  }
165
- if (window.StripeConnect) {
126
+ if (isWindowStripeConnectDefined(window.StripeConnect)) {
166
127
  console.warn(EXISTING_SCRIPT_MESSAGE);
167
- }
168
- if (window.StripeConnect) {
169
128
  const wrapper = createWrapper(window.StripeConnect);
170
129
  resolve(wrapper);
171
130
  return;
@@ -178,7 +137,7 @@ const loadScript = () => {
178
137
  script = injectScript();
179
138
  }
180
139
  script.addEventListener("load", () => {
181
- if (window.StripeConnect) {
140
+ if (isWindowStripeConnectDefined(window.StripeConnect)) {
182
141
  const wrapper = createWrapper(window.StripeConnect);
183
142
  resolve(wrapper);
184
143
  } else {
@@ -276,7 +235,7 @@ const createWrapper = stripeConnect => {
276
235
  sdk: true,
277
236
  sdkOptions: {
278
237
  // This will be replaced by the npm package version when bundling
279
- sdkVersion: "3.3.28-preview-1"
238
+ sdkVersion: "3.3.28"
280
239
  }
281
240
  })
282
241
  }));