@stripe/connect-js 3.3.23-preview-1 → 3.3.23
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 +29 -75
- package/dist/connect.js +29 -75
- package/dist/pure.esm.js +21 -67
- package/dist/pure.js +21 -67
- 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 +5 -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 +44 -55
- package/types/checks.ts +2 -2
- package/types/config.ts +17 -105
- package/types/index.d.ts +1 -1
- package/types/shared.d.ts +8 -17
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 => {},
|
|
@@ -49,46 +42,12 @@ const ConnectElementCustomMethodConfig = {
|
|
|
49
42
|
"financial-account-transactions": {
|
|
50
43
|
setFinancialAccount: _financialAccount => {}
|
|
51
44
|
},
|
|
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 => {}
|
|
78
|
-
},
|
|
79
|
-
"capital-financing-promotion": {
|
|
80
|
-
setLayout: _layout => {},
|
|
81
|
-
setOnApplicationSubmitted: _listener => {},
|
|
82
|
-
setOnEligibleFinancingOfferLoaded: _listener => {},
|
|
83
|
-
setPrivacyPolicyUrl: _privacyPolicyUrl => {},
|
|
84
|
-
setHowCapitalWorksUrl: _howCapitalWorksUrl => {},
|
|
85
|
-
setEligibilityCriteriaUrl: _eligibilityCriteriaUrl => {}
|
|
45
|
+
payments: {
|
|
46
|
+
setDefaultFilters: _filters => {}
|
|
86
47
|
},
|
|
87
|
-
"
|
|
88
|
-
|
|
89
|
-
|
|
90
|
-
setIntervalEnd: _intervalEnd => {},
|
|
91
|
-
setIntervalType: _intervalType => {}
|
|
48
|
+
"payment-details": {
|
|
49
|
+
setPayment: _payment => {},
|
|
50
|
+
setOnClose: _listener => {}
|
|
92
51
|
},
|
|
93
52
|
"tax-settings": {
|
|
94
53
|
setHideProductTaxCodeSelector: _hidden => {},
|
|
@@ -102,37 +61,27 @@ const ConnectElementCustomMethodConfig = {
|
|
|
102
61
|
};
|
|
103
62
|
|
|
104
63
|
const componentNameMapping = {
|
|
64
|
+
"account-onboarding": "stripe-connect-account-onboarding",
|
|
105
65
|
payments: "stripe-connect-payments",
|
|
106
|
-
payouts: "stripe-connect-payouts",
|
|
107
66
|
"payment-details": "stripe-connect-payment-details",
|
|
108
|
-
|
|
109
|
-
"
|
|
67
|
+
payouts: "stripe-connect-payouts",
|
|
68
|
+
"payouts-list": "stripe-connect-payouts-list",
|
|
69
|
+
balances: "stripe-connect-balances",
|
|
110
70
|
"account-management": "stripe-connect-account-management",
|
|
111
71
|
"notification-banner": "stripe-connect-notification-banner",
|
|
112
|
-
"instant-payouts": "stripe-connect-instant-payouts",
|
|
113
72
|
"issuing-card": "stripe-connect-issuing-card",
|
|
114
73
|
"issuing-cards-list": "stripe-connect-issuing-cards-list",
|
|
115
74
|
"financial-account": "stripe-connect-financial-account",
|
|
116
|
-
recipients: "stripe-connect-recipients",
|
|
117
75
|
"financial-account-transactions": "stripe-connect-financial-account-transactions",
|
|
118
|
-
"capital-financing": "stripe-connect-capital-financing",
|
|
119
|
-
"capital-financing-application": "stripe-connect-capital-financing-application",
|
|
120
|
-
"capital-financing-promotion": "stripe-connect-capital-financing-promotion",
|
|
121
|
-
"capital-overview": "stripe-connect-capital-overview",
|
|
122
76
|
documents: "stripe-connect-documents",
|
|
123
77
|
"tax-registrations": "stripe-connect-tax-registrations",
|
|
124
|
-
"tax-settings": "stripe-connect-tax-settings"
|
|
125
|
-
balances: "stripe-connect-balances",
|
|
126
|
-
"payouts-list": "stripe-connect-payouts-list",
|
|
127
|
-
"app-install": "stripe-connect-app-install",
|
|
128
|
-
"app-viewport": "stripe-connect-app-viewport",
|
|
129
|
-
"reporting-chart": "stripe-connect-reporting-chart"
|
|
78
|
+
"tax-settings": "stripe-connect-tax-settings"
|
|
130
79
|
};
|
|
131
80
|
const EXISTING_SCRIPT_MESSAGE = "loadConnect was called but an existing Connect.js script already exists in the document; existing script parameters will be used";
|
|
132
81
|
const V0_URL = "https://connect-js.stripe.com/v0.1/connect.js";
|
|
133
82
|
const V1_URL = "https://connect-js.stripe.com/v1.0/connect.js";
|
|
134
83
|
const findScript = () => {
|
|
135
|
-
return document.querySelectorAll(`script[src="${
|
|
84
|
+
return document.querySelectorAll(`script[src="${V1_URL}"]`)[0] || document.querySelectorAll(`script[src="${V0_URL}"]`)[0] || null;
|
|
136
85
|
};
|
|
137
86
|
const injectScript = () => {
|
|
138
87
|
const script = document.createElement("script");
|
|
@@ -145,6 +94,13 @@ const injectScript = () => {
|
|
|
145
94
|
return script;
|
|
146
95
|
};
|
|
147
96
|
let stripePromise = null;
|
|
97
|
+
const isWindowStripeConnectDefined = stripeConnect => {
|
|
98
|
+
// We only consider `StripeConnect` defined if `init` is a function
|
|
99
|
+
// Why? HTML markup like:
|
|
100
|
+
// <a id="StripeConnect"><a id="StripeConnect" name="init" href="stripe"></a></a> in the <head> of the page
|
|
101
|
+
// can end up "contaminating" the window.StripeConnect object and cause issues in connect.js initialization
|
|
102
|
+
return !!(stripeConnect && typeof stripeConnect === "object" && "init" in stripeConnect && typeof stripeConnect.init === "function");
|
|
103
|
+
};
|
|
148
104
|
const loadScript = () => {
|
|
149
105
|
// Ensure that we only attempt to load Connect.js at most once
|
|
150
106
|
if (stripePromise !== null) {
|
|
@@ -155,10 +111,8 @@ const loadScript = () => {
|
|
|
155
111
|
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.");
|
|
156
112
|
return;
|
|
157
113
|
}
|
|
158
|
-
if (window.StripeConnect) {
|
|
114
|
+
if (isWindowStripeConnectDefined(window.StripeConnect)) {
|
|
159
115
|
console.warn(EXISTING_SCRIPT_MESSAGE);
|
|
160
|
-
}
|
|
161
|
-
if (window.StripeConnect) {
|
|
162
116
|
const wrapper = createWrapper(window.StripeConnect);
|
|
163
117
|
resolve(wrapper);
|
|
164
118
|
return;
|
|
@@ -171,7 +125,7 @@ const loadScript = () => {
|
|
|
171
125
|
script = injectScript();
|
|
172
126
|
}
|
|
173
127
|
script.addEventListener("load", () => {
|
|
174
|
-
if (window.StripeConnect) {
|
|
128
|
+
if (isWindowStripeConnectDefined(window.StripeConnect)) {
|
|
175
129
|
const wrapper = createWrapper(window.StripeConnect);
|
|
176
130
|
resolve(wrapper);
|
|
177
131
|
} else {
|
|
@@ -269,7 +223,7 @@ const createWrapper = stripeConnect => {
|
|
|
269
223
|
sdk: true,
|
|
270
224
|
sdkOptions: {
|
|
271
225
|
// This will be replaced by the npm package version when bundling
|
|
272
|
-
sdkVersion: "3.3.23
|
|
226
|
+
sdkVersion: "3.3.23"
|
|
273
227
|
}
|
|
274
228
|
})
|
|
275
229
|
}));
|
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-payments" | "stripe-connect-payment-details" | "stripe-connect-account-management" | "stripe-connect-notification-banner" | "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;
|
|
@@ -138,48 +119,12 @@ export declare const ConnectElementCustomMethodConfig: {
|
|
|
138
119
|
"financial-account-transactions": {
|
|
139
120
|
setFinancialAccount: (_financialAccount: string) => void;
|
|
140
121
|
};
|
|
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;
|
|
152
|
-
};
|
|
153
|
-
"payment-method-settings": {
|
|
154
|
-
setPaymentMethodConfiguration: (_paymentMethodConfiguration: string | undefined) => void;
|
|
155
|
-
};
|
|
156
|
-
"capital-financing": {
|
|
157
|
-
setDefaultFinancingOffer: (_defaultFinancingOffer: string | undefined) => void;
|
|
158
|
-
setShowFinancingSelector: (_showFinancingSelector: boolean | undefined) => void;
|
|
159
|
-
setHowCapitalWorksUrl: (_howCapitalWorksUrl: string | undefined) => void;
|
|
160
|
-
setSupportUrl: (_supportUrl: string | undefined) => void;
|
|
161
|
-
setOnFinancingsLoaded: (_listener: (({ total }: {
|
|
162
|
-
total: number;
|
|
163
|
-
}) => void) | undefined) => void;
|
|
164
|
-
};
|
|
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;
|
|
122
|
+
payments: {
|
|
123
|
+
setDefaultFilters: (_filters: PaymentsListDefaultFilters | undefined) => void;
|
|
177
124
|
};
|
|
178
|
-
"
|
|
179
|
-
|
|
180
|
-
|
|
181
|
-
setIntervalEnd: (_intervalEnd: Date | undefined) => void;
|
|
182
|
-
setIntervalType: (_intervalType: IntervalType | undefined) => void;
|
|
125
|
+
"payment-details": {
|
|
126
|
+
setPayment: (_payment: string | undefined) => void;
|
|
127
|
+
setOnClose: (_listener: (() => void) | undefined) => void;
|
|
183
128
|
};
|
|
184
129
|
"tax-settings": {
|
|
185
130
|
setHideProductTaxCodeSelector: (_hidden: boolean | undefined) => void;
|
package/package.json
CHANGED
|
@@ -1,6 +1,6 @@
|
|
|
1
1
|
{
|
|
2
2
|
"name": "@stripe/connect-js",
|
|
3
|
-
"version": "3.3.23
|
|
3
|
+
"version": "3.3.23",
|
|
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,76 +1,55 @@
|
|
|
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"
|
|
17
18
|
| "stripe-connect-payments"
|
|
18
|
-
| "stripe-connect-payouts"
|
|
19
19
|
| "stripe-connect-payment-details"
|
|
20
|
-
| "stripe-connect-account-onboarding"
|
|
21
|
-
| "stripe-connect-payment-method-settings"
|
|
22
20
|
| "stripe-connect-account-management"
|
|
23
21
|
| "stripe-connect-notification-banner"
|
|
24
|
-
| "stripe-connect-instant-payouts"
|
|
25
22
|
| "stripe-connect-issuing-card"
|
|
26
23
|
| "stripe-connect-issuing-cards-list"
|
|
27
24
|
| "stripe-connect-financial-account"
|
|
28
25
|
| "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"
|
|
26
|
+
| "stripe-connect-payouts"
|
|
27
|
+
| "stripe-connect-payouts-list"
|
|
28
|
+
| "stripe-connect-balances"
|
|
34
29
|
| "stripe-connect-documents"
|
|
35
30
|
| "stripe-connect-tax-registrations"
|
|
36
|
-
| "stripe-connect-tax-settings"
|
|
37
|
-
| "stripe-connect-balances"
|
|
38
|
-
| "stripe-connect-payouts-list"
|
|
39
|
-
| "stripe-connect-app-install"
|
|
40
|
-
| "stripe-connect-app-viewport"
|
|
41
|
-
| "stripe-connect-reporting-chart";
|
|
31
|
+
| "stripe-connect-tax-settings";
|
|
42
32
|
|
|
43
33
|
export const componentNameMapping: Record<
|
|
44
34
|
ConnectElementTagName,
|
|
45
35
|
ConnectElementHTMLName
|
|
46
36
|
> = {
|
|
37
|
+
"account-onboarding": "stripe-connect-account-onboarding",
|
|
47
38
|
payments: "stripe-connect-payments",
|
|
48
|
-
payouts: "stripe-connect-payouts",
|
|
49
39
|
"payment-details": "stripe-connect-payment-details",
|
|
50
|
-
|
|
51
|
-
"
|
|
40
|
+
payouts: "stripe-connect-payouts",
|
|
41
|
+
"payouts-list": "stripe-connect-payouts-list",
|
|
42
|
+
balances: "stripe-connect-balances",
|
|
52
43
|
"account-management": "stripe-connect-account-management",
|
|
53
44
|
"notification-banner": "stripe-connect-notification-banner",
|
|
54
|
-
"instant-payouts": "stripe-connect-instant-payouts",
|
|
55
45
|
"issuing-card": "stripe-connect-issuing-card",
|
|
56
46
|
"issuing-cards-list": "stripe-connect-issuing-cards-list",
|
|
57
47
|
"financial-account": "stripe-connect-financial-account",
|
|
58
|
-
recipients: "stripe-connect-recipients",
|
|
59
48
|
"financial-account-transactions":
|
|
60
49
|
"stripe-connect-financial-account-transactions",
|
|
61
|
-
"capital-financing": "stripe-connect-capital-financing",
|
|
62
|
-
"capital-financing-application":
|
|
63
|
-
"stripe-connect-capital-financing-application",
|
|
64
|
-
"capital-financing-promotion": "stripe-connect-capital-financing-promotion",
|
|
65
|
-
"capital-overview": "stripe-connect-capital-overview",
|
|
66
50
|
documents: "stripe-connect-documents",
|
|
67
51
|
"tax-registrations": "stripe-connect-tax-registrations",
|
|
68
52
|
"tax-settings": "stripe-connect-tax-settings",
|
|
69
|
-
balances: "stripe-connect-balances",
|
|
70
|
-
"payouts-list": "stripe-connect-payouts-list",
|
|
71
|
-
"app-install": "stripe-connect-app-install",
|
|
72
|
-
"app-viewport": "stripe-connect-app-viewport",
|
|
73
|
-
"reporting-chart": "stripe-connect-reporting-chart"
|
|
74
53
|
};
|
|
75
54
|
|
|
76
55
|
type StripeConnectInstanceExtended = StripeConnectInstance & {
|
|
@@ -89,10 +68,10 @@ const V1_URL = "https://connect-js.stripe.com/v1.0/connect.js";
|
|
|
89
68
|
export const findScript = (): HTMLScriptElement | null => {
|
|
90
69
|
return (
|
|
91
70
|
document.querySelectorAll<HTMLScriptElement>(
|
|
92
|
-
`script[src="${
|
|
71
|
+
`script[src="${V1_URL}"]`
|
|
93
72
|
)[0] ||
|
|
94
73
|
document.querySelectorAll<HTMLScriptElement>(
|
|
95
|
-
`script[src="${
|
|
74
|
+
`script[src="${V0_URL}"]`
|
|
96
75
|
)[0] ||
|
|
97
76
|
null
|
|
98
77
|
);
|
|
@@ -117,6 +96,19 @@ const injectScript = (): HTMLScriptElement => {
|
|
|
117
96
|
|
|
118
97
|
let stripePromise: Promise<StripeConnectWrapper> | null = null;
|
|
119
98
|
|
|
99
|
+
export const isWindowStripeConnectDefined = (stripeConnect: unknown) => {
|
|
100
|
+
// We only consider `StripeConnect` defined if `init` is a function
|
|
101
|
+
// Why? HTML markup like:
|
|
102
|
+
// <a id="StripeConnect"><a id="StripeConnect" name="init" href="stripe"></a></a> in the <head> of the page
|
|
103
|
+
// can end up "contaminating" the window.StripeConnect object and cause issues in connect.js initialization
|
|
104
|
+
return !!(
|
|
105
|
+
stripeConnect &&
|
|
106
|
+
typeof stripeConnect === "object" &&
|
|
107
|
+
"init" in stripeConnect &&
|
|
108
|
+
typeof stripeConnect.init === "function"
|
|
109
|
+
);
|
|
110
|
+
};
|
|
111
|
+
|
|
120
112
|
export const loadScript = (): Promise<StripeConnectWrapper> => {
|
|
121
113
|
// Ensure that we only attempt to load Connect.js at most once
|
|
122
114
|
if (stripePromise !== null) {
|
|
@@ -131,11 +123,8 @@ export const loadScript = (): Promise<StripeConnectWrapper> => {
|
|
|
131
123
|
return;
|
|
132
124
|
}
|
|
133
125
|
|
|
134
|
-
if ((window as any).StripeConnect) {
|
|
126
|
+
if (isWindowStripeConnectDefined((window as any).StripeConnect)) {
|
|
135
127
|
console.warn(EXISTING_SCRIPT_MESSAGE);
|
|
136
|
-
}
|
|
137
|
-
|
|
138
|
-
if ((window as any).StripeConnect) {
|
|
139
128
|
const wrapper = createWrapper((window as any).StripeConnect);
|
|
140
129
|
resolve(wrapper);
|
|
141
130
|
return;
|
|
@@ -151,7 +140,7 @@ export const loadScript = (): Promise<StripeConnectWrapper> => {
|
|
|
151
140
|
}
|
|
152
141
|
|
|
153
142
|
script.addEventListener("load", () => {
|
|
154
|
-
if ((window as any).StripeConnect) {
|
|
143
|
+
if (isWindowStripeConnectDefined((window as any).StripeConnect)) {
|
|
155
144
|
const wrapper = createWrapper((window as any).StripeConnect);
|
|
156
145
|
resolve(wrapper);
|
|
157
146
|
} else {
|
|
@@ -188,18 +177,18 @@ export const initStripeConnect = (
|
|
|
188
177
|
}
|
|
189
178
|
})();
|
|
190
179
|
const metaOptions = (initParams as any).metaOptions ?? {};
|
|
191
|
-
const stripeConnectInstance = stripePromise.then(wrapper =>
|
|
180
|
+
const stripeConnectInstance = stripePromise.then((wrapper) =>
|
|
192
181
|
wrapper.initialize({
|
|
193
182
|
...initParams,
|
|
194
|
-
metaOptions: { ...metaOptions, eagerClientSecretPromise }
|
|
183
|
+
metaOptions: { ...metaOptions, eagerClientSecretPromise },
|
|
195
184
|
} as any)
|
|
196
185
|
);
|
|
197
186
|
|
|
198
187
|
return {
|
|
199
|
-
create: tagName => {
|
|
188
|
+
create: (tagName) => {
|
|
200
189
|
let htmlName = componentNameMapping[tagName];
|
|
201
190
|
if (!htmlName) {
|
|
202
|
-
htmlName =
|
|
191
|
+
htmlName = tagName as unknown as ConnectElementHTMLName;
|
|
203
192
|
}
|
|
204
193
|
const element = document.createElement(htmlName);
|
|
205
194
|
|
|
@@ -208,14 +197,14 @@ export const initStripeConnect = (
|
|
|
208
197
|
: {};
|
|
209
198
|
const methods = { ...customMethods, ...ConnectElementCommonMethodConfig };
|
|
210
199
|
for (const method in methods) {
|
|
211
|
-
(element as any)[method] = function(value: any) {
|
|
200
|
+
(element as any)[method] = function (value: any) {
|
|
212
201
|
stripeConnectInstance.then(() => {
|
|
213
202
|
this[`${method}InternalOnly`](value);
|
|
214
203
|
});
|
|
215
204
|
};
|
|
216
205
|
}
|
|
217
206
|
|
|
218
|
-
stripeConnectInstance.then(instance => {
|
|
207
|
+
stripeConnectInstance.then((instance) => {
|
|
219
208
|
if (!element.isConnected && !(element as any).setConnector) {
|
|
220
209
|
// If the element is not connected to the DOM and the `setConnector` method is not
|
|
221
210
|
// defined, this indicates the element was created before connect.js was loaded, and has
|
|
@@ -243,8 +232,8 @@ export const initStripeConnect = (
|
|
|
243
232
|
|
|
244
233
|
return element as ConnectHTMLElementRecord[typeof tagName];
|
|
245
234
|
},
|
|
246
|
-
update: updateOptions => {
|
|
247
|
-
stripeConnectInstance.then(instance => {
|
|
235
|
+
update: (updateOptions) => {
|
|
236
|
+
stripeConnectInstance.then((instance) => {
|
|
248
237
|
instance.update(updateOptions);
|
|
249
238
|
});
|
|
250
239
|
},
|
|
@@ -252,10 +241,10 @@ export const initStripeConnect = (
|
|
|
252
241
|
return stripeConnectInstance;
|
|
253
242
|
},
|
|
254
243
|
logout: () => {
|
|
255
|
-
return stripeConnectInstance.then(instance => {
|
|
244
|
+
return stripeConnectInstance.then((instance) => {
|
|
256
245
|
return instance.logout();
|
|
257
246
|
});
|
|
258
|
-
}
|
|
247
|
+
},
|
|
259
248
|
};
|
|
260
249
|
};
|
|
261
250
|
|
|
@@ -272,12 +261,12 @@ const createWrapper = (stripeConnect: any) => {
|
|
|
272
261
|
sdk: true,
|
|
273
262
|
sdkOptions: {
|
|
274
263
|
// This will be replaced by the npm package version when bundling
|
|
275
|
-
sdkVersion: "_NPM_PACKAGE_VERSION_"
|
|
276
|
-
}
|
|
277
|
-
}
|
|
264
|
+
sdkVersion: "_NPM_PACKAGE_VERSION_",
|
|
265
|
+
},
|
|
266
|
+
},
|
|
278
267
|
});
|
|
279
268
|
return stripeConnectInstance;
|
|
280
|
-
}
|
|
269
|
+
},
|
|
281
270
|
};
|
|
282
271
|
return wrapper;
|
|
283
272
|
};
|
package/types/checks.ts
CHANGED
|
@@ -1,5 +1,5 @@
|
|
|
1
|
-
import { ConnectElementCustomMethodConfig } from "./config";
|
|
2
|
-
import { ConnectElementTagName } from "./shared.d";
|
|
1
|
+
import type { ConnectElementCustomMethodConfig } from "./config";
|
|
2
|
+
import type { ConnectElementTagName } from "./shared.d";
|
|
3
3
|
|
|
4
4
|
// ensure that keys of ConnectElementCustomMethodConfig are from ConnectElementTagName
|
|
5
5
|
export type HasType<T, Q extends T> = Q;
|