@tryfinch/react-connect 3.6.1 → 3.11.0

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
@@ -27,6 +27,7 @@ const App = () => {
27
27
  products: ['company', 'directory'],
28
28
  // Check Finch's [documentation](https://developer.tryfinch.com/docs/reference/96f5be9e0ec1a-providers) for the full list of payroll provider IDs
29
29
  // payrollProvider: '<payroll-provider-id>',
30
+ // For `sandbox`, omit or use 'false' if in production. Use "finch" or "provider" for sandbox testing, depending on test plan. See Finch's [documentation](https://developer.tryfinch.com/implementation-guide/Test/Testing-Plan) for an overview of Finch and Provider sandboxes.
30
31
  // sandbox: false,
31
32
  // manual: false,
32
33
  // zIndex: 999,
package/dist/index.d.ts CHANGED
@@ -1,26 +1,38 @@
1
1
  export type SuccessEvent = {
2
2
  code: string;
3
3
  state?: string;
4
+ idpRedirectUri?: string;
4
5
  };
5
6
  export type ErrorEvent = {
6
7
  errorMessage: string;
7
8
  };
8
9
  export type Sandbox = 'finch' /** This is to enable the new Finch (simulated) Sandbox */ | 'provider' /** This is to enable the new Provider Sandbox */ | boolean /** This is the old sandbox flag retained for backwards compatibility */;
9
- export type ConnectOptions = {
10
- category: string | null;
11
- clientId: string;
12
- manual: boolean;
10
+ type BaseConnectOptions = {
13
11
  state: string | null;
14
12
  onSuccess: (e: SuccessEvent) => void;
15
13
  onError: (e: ErrorEvent) => void;
16
14
  onClose: () => void;
15
+ zIndex: number;
16
+ apiConfig?: {
17
+ connectUrl: string;
18
+ redirectUrl: string;
19
+ };
20
+ };
21
+ type ConnectOptionsWithSessionId = BaseConnectOptions & {
22
+ sessionId: string;
23
+ products?: string[];
24
+ };
25
+ type ConnectOptionsWithClientId = BaseConnectOptions & {
26
+ category: string | null;
27
+ clientId: string;
28
+ manual: boolean;
17
29
  payrollProvider: string | null;
18
30
  products: string[];
31
+ clientName?: string;
19
32
  sandbox: Sandbox;
20
- zIndex: number;
21
- finchDevMode?: boolean;
22
33
  };
23
- type OpenFn = (overrides?: Partial<Pick<ConnectOptions, 'products' | 'state' | 'payrollProvider'>>) => void;
34
+ export type ConnectOptions = ConnectOptionsWithSessionId | ConnectOptionsWithClientId;
35
+ type OpenFn = (overrides?: Partial<ConnectOptions>) => void;
24
36
  export declare const useFinchConnect: (options: Partial<ConnectOptions>) => {
25
37
  open: OpenFn;
26
38
  };
@@ -1 +1 @@
1
- {"version":3,"file":"index.d.ts","sourceRoot":"","sources":["src/index.ts"],"names":[],"mappings":"AAEA,MAAM,MAAM,YAAY,GAAG;IACzB,IAAI,EAAE,MAAM,CAAC;IACb,KAAK,CAAC,EAAE,MAAM,CAAC;CAChB,CAAC;AAEF,MAAM,MAAM,UAAU,GAAG;IACvB,YAAY,EAAE,MAAM,CAAC;CACtB,CAAC;AAEF,MAAM,MAAM,OAAO,GACf,OAAO,CAAC,0DAA0D,GAClE,UAAU,CAAC,iDAAiD,GAC5D,OAAO,CAAC,wEAAwE,CAAC;AAErF,MAAM,MAAM,cAAc,GAAG;IAC3B,QAAQ,EAAE,MAAM,GAAG,IAAI,CAAC;IACxB,QAAQ,EAAE,MAAM,CAAC;IACjB,MAAM,EAAE,OAAO,CAAC;IAChB,KAAK,EAAE,MAAM,GAAG,IAAI,CAAC;IACrB,SAAS,EAAE,CAAC,CAAC,EAAE,YAAY,KAAK,IAAI,CAAC;IACrC,OAAO,EAAE,CAAC,CAAC,EAAE,UAAU,KAAK,IAAI,CAAC;IACjC,OAAO,EAAE,MAAM,IAAI,CAAC;IACpB,eAAe,EAAE,MAAM,GAAG,IAAI,CAAC;IAC/B,QAAQ,EAAE,MAAM,EAAE,CAAC;IACnB,OAAO,EAAE,OAAO,CAAC;IACjB,MAAM,EAAE,MAAM,CAAC;IACf,YAAY,CAAC,EAAE,OAAO,CAAC;CACxB,CAAC;AAEF,KAAK,MAAM,GAAG,CACZ,SAAS,CAAC,EAAE,OAAO,CAAC,IAAI,CAAC,cAAc,EAAE,UAAU,GAAG,OAAO,GAAG,iBAAiB,CAAC,CAAC,KAChF,IAAI,CAAC;AAyFV,eAAO,MAAM,eAAe,YAAa,QAAQ,cAAc,CAAC;UAAW,MAAM;CAsGhF,CAAC"}
1
+ {"version":3,"file":"index.d.ts","sourceRoot":"","sources":["src/index.ts"],"names":[],"mappings":"AAIA,MAAM,MAAM,YAAY,GAAG;IACzB,IAAI,EAAE,MAAM,CAAC;IACb,KAAK,CAAC,EAAE,MAAM,CAAC;IACf,cAAc,CAAC,EAAE,MAAM,CAAC;CACzB,CAAC;AAEF,MAAM,MAAM,UAAU,GAAG;IACvB,YAAY,EAAE,MAAM,CAAC;CACtB,CAAC;AAEF,MAAM,MAAM,OAAO,GACf,OAAO,CAAC,0DAA0D,GAClE,UAAU,CAAC,iDAAiD,GAC5D,OAAO,CAAC,wEAAwE,CAAC;AAErF,KAAK,kBAAkB,GAAG;IACxB,KAAK,EAAE,MAAM,GAAG,IAAI,CAAC;IACrB,SAAS,EAAE,CAAC,CAAC,EAAE,YAAY,KAAK,IAAI,CAAC;IACrC,OAAO,EAAE,CAAC,CAAC,EAAE,UAAU,KAAK,IAAI,CAAC;IACjC,OAAO,EAAE,MAAM,IAAI,CAAC;IACpB,MAAM,EAAE,MAAM,CAAC;IACf,SAAS,CAAC,EAAE;QACV,UAAU,EAAE,MAAM,CAAC;QACnB,WAAW,EAAE,MAAM,CAAC;KACrB,CAAC;CACH,CAAC;AAEF,KAAK,2BAA2B,GAAG,kBAAkB,GAAG;IAEtD,SAAS,EAAE,MAAM,CAAC;IAElB,QAAQ,CAAC,EAAE,MAAM,EAAE,CAAC;CACrB,CAAC;AAEF,KAAK,0BAA0B,GAAG,kBAAkB,GAAG;IACrD,QAAQ,EAAE,MAAM,GAAG,IAAI,CAAC;IACxB,QAAQ,EAAE,MAAM,CAAC;IACjB,MAAM,EAAE,OAAO,CAAC;IAChB,eAAe,EAAE,MAAM,GAAG,IAAI,CAAC;IAC/B,QAAQ,EAAE,MAAM,EAAE,CAAC;IACnB,UAAU,CAAC,EAAE,MAAM,CAAC;IACpB,OAAO,EAAE,OAAO,CAAC;CAClB,CAAC;AAEF,MAAM,MAAM,cAAc,GAAG,2BAA2B,GAAG,0BAA0B,CAAC;AAEtF,KAAK,MAAM,GAAG,CAAC,SAAS,CAAC,EAAE,OAAO,CAAC,cAAc,CAAC,KAAK,IAAI,CAAC;AAyG5D,eAAO,MAAM,eAAe,YAAa,QAAQ,cAAc,CAAC;UAAW,MAAM;CA0GhF,CAAC"}
package/dist/index.es.js CHANGED
@@ -2,55 +2,66 @@ import { useRef, useEffect } from 'react';
2
2
 
3
3
  const BASE_FINCH_CONNECT_URI = 'https://connect.tryfinch.com';
4
4
  const DEFAULT_FINCH_REDIRECT_URI = 'https://tryfinch.com';
5
- const DEV_FINCH_CONNECT_URI = 'http://localhost:3000';
6
- const DEV_DEFAULT_FINCH_REDIRECT_URI = 'http://localhost:4001';
7
5
  const FINCH_CONNECT_IFRAME_ID = 'finch-connect-iframe';
8
6
  const FINCH_AUTH_MESSAGE_NAME = 'finch-auth-message';
9
- const constructAuthUrl = ({ clientId, payrollProvider, category, products, manual, sandbox, state, finchDevMode, }) => {
10
- const canUseFinchDevMode = finchDevMode && window.location.hostname === 'localhost';
11
- const authUrl = new URL(`${canUseFinchDevMode ? DEV_FINCH_CONNECT_URI : BASE_FINCH_CONNECT_URI}/authorize`);
12
- if (clientId)
13
- authUrl.searchParams.append('client_id', clientId);
14
- if (payrollProvider)
15
- authUrl.searchParams.append('payroll_provider', payrollProvider);
16
- if (category)
17
- authUrl.searchParams.append('category', category);
18
- authUrl.searchParams.append('products', (products !== null && products !== void 0 ? products : []).join(' '));
7
+ const constructAuthUrl = (connectOptions) => {
8
+ const { state, apiConfig } = connectOptions;
9
+ const CONNECT_URL = (apiConfig === null || apiConfig === void 0 ? void 0 : apiConfig.connectUrl) || BASE_FINCH_CONNECT_URI;
10
+ const REDIRECT_URL = (apiConfig === null || apiConfig === void 0 ? void 0 : apiConfig.redirectUrl) || DEFAULT_FINCH_REDIRECT_URI;
11
+ const authUrl = new URL(`${CONNECT_URL}/authorize`);
12
+ if ('sessionId' in connectOptions) {
13
+ const { sessionId, products } = connectOptions;
14
+ authUrl.searchParams.append('session', sessionId);
15
+ if (products)
16
+ authUrl.searchParams.append('products', products.join(' '));
17
+ }
18
+ else {
19
+ const { clientId, payrollProvider, category, products, manual, sandbox, clientName, } = connectOptions;
20
+ if (clientId)
21
+ authUrl.searchParams.append('client_id', clientId);
22
+ if (payrollProvider)
23
+ authUrl.searchParams.append('payroll_provider', payrollProvider);
24
+ if (category)
25
+ authUrl.searchParams.append('category', category);
26
+ if (clientName)
27
+ authUrl.searchParams.append('client_name', clientName);
28
+ authUrl.searchParams.append('products', (products !== null && products !== void 0 ? products : []).join(' '));
29
+ if (manual)
30
+ authUrl.searchParams.append('manual', String(manual));
31
+ if (sandbox)
32
+ authUrl.searchParams.append('sandbox', String(sandbox));
33
+ }
19
34
  authUrl.searchParams.append('app_type', 'spa');
20
- authUrl.searchParams.append('redirect_uri', canUseFinchDevMode ? DEV_DEFAULT_FINCH_REDIRECT_URI : DEFAULT_FINCH_REDIRECT_URI);
35
+ authUrl.searchParams.append('redirect_uri', REDIRECT_URL);
21
36
  /** The host URL of the SDK. This is used to store the referrer for postMessage purposes */
22
37
  authUrl.searchParams.append('sdk_host_url', window.location.origin);
23
38
  authUrl.searchParams.append('mode', 'employer');
24
- if (manual)
25
- authUrl.searchParams.append('manual', String(manual));
26
- if (sandbox)
27
- authUrl.searchParams.append('sandbox', String(sandbox));
28
39
  if (state)
29
40
  authUrl.searchParams.append('state', state);
30
41
  // replace with actual SDK version by rollup
31
- authUrl.searchParams.append('sdk_version', 'react-3.6.1');
42
+ authUrl.searchParams.append('sdk_version', 'react-3.11.0');
32
43
  return authUrl.href;
33
44
  };
34
45
  const noop = () => {
35
46
  // intentionally empty
36
47
  };
37
- const DEFAULT_OPTIONS = {
38
- category: null,
39
- manual: false,
48
+ const BASE_DEFAULTS = {
40
49
  onSuccess: noop,
41
50
  onError: noop,
42
51
  onClose: noop,
43
- payrollProvider: null,
44
- products: [],
45
- sandbox: false,
46
52
  state: null,
47
53
  zIndex: 999,
48
- finchDevMode: false,
49
54
  };
55
+ const DEFAULT_OPTIONS_WITH_CLIENT_ID = Object.assign(Object.assign({}, BASE_DEFAULTS), { clientId: '', category: null, manual: false, payrollProvider: null, products: [], clientName: undefined, sandbox: false });
56
+ const DEFAULT_OPTIONS_WITH_SESSION_ID = Object.assign(Object.assign({}, BASE_DEFAULTS), { sessionId: '' });
50
57
  let isUseFinchConnectInitialized = false;
51
58
  const useFinchConnect = (options) => {
52
- if (!options.clientId)
53
- throw new Error('must specify clientId in options for useFinchConnect');
59
+ if (!('sessionId' in options) && !('clientId' in options)) {
60
+ throw new Error('must specify either sessionId or clientId in options for useFinchConnect');
61
+ }
62
+ if ('sessionId' in options && 'clientId' in options) {
63
+ throw new Error('cannot specify both sessionId and clientId in options for useFinchConnect');
64
+ }
54
65
  const isHookMounted = useRef(false);
55
66
  useEffect(() => {
56
67
  if (!isHookMounted.current) {
@@ -63,7 +74,8 @@ const useFinchConnect = (options) => {
63
74
  isHookMounted.current = true;
64
75
  }
65
76
  }, []);
66
- const combinedOptions = Object.assign(Object.assign({ clientId: '' }, DEFAULT_OPTIONS), options);
77
+ const combinedOptions = 'sessionId' in options
78
+ ? Object.assign(Object.assign({}, DEFAULT_OPTIONS_WITH_SESSION_ID), options) : Object.assign(Object.assign({}, DEFAULT_OPTIONS_WITH_CLIENT_ID), options);
67
79
  const open = (overrides) => {
68
80
  const openOptions = Object.assign(Object.assign({}, combinedOptions), overrides);
69
81
  if (!document.getElementById(FINCH_CONNECT_IFRAME_ID)) {
@@ -92,13 +104,13 @@ const useFinchConnect = (options) => {
92
104
  };
93
105
  useEffect(() => {
94
106
  function handleFinchAuth(event) {
95
- const canUseFinchDevMode = combinedOptions.finchDevMode && window.location.hostname === 'localhost';
96
- const CONNECT_URI = canUseFinchDevMode ? DEV_FINCH_CONNECT_URI : BASE_FINCH_CONNECT_URI;
107
+ var _a;
108
+ const CONNECT_URL = ((_a = combinedOptions.apiConfig) === null || _a === void 0 ? void 0 : _a.connectUrl) || BASE_FINCH_CONNECT_URI;
97
109
  if (!event.data)
98
110
  return;
99
111
  if (event.data.name !== FINCH_AUTH_MESSAGE_NAME)
100
112
  return;
101
- if (!event.origin.startsWith(CONNECT_URI))
113
+ if (!event.origin.startsWith(CONNECT_URL))
102
114
  return;
103
115
  close();
104
116
  switch (event.data.kind) {
@@ -112,6 +124,7 @@ const useFinchConnect = (options) => {
112
124
  combinedOptions.onSuccess({
113
125
  code: event.data.code,
114
126
  state: event.data.state,
127
+ idpRedirectUri: event.data.idpRedirectUri,
115
128
  });
116
129
  break;
117
130
  default: {
@@ -1 +1 @@
1
- {"version":3,"file":"index.es.js","sources":["../src/src/index.ts"],"sourcesContent":[null],"names":[],"mappings":"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"}
1
+ {"version":3,"file":"index.es.js","sources":["../src/src/index.ts"],"sourcesContent":[null],"names":[],"mappings":"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"}
package/dist/index.js CHANGED
@@ -6,55 +6,66 @@ var react = require('react');
6
6
 
7
7
  const BASE_FINCH_CONNECT_URI = 'https://connect.tryfinch.com';
8
8
  const DEFAULT_FINCH_REDIRECT_URI = 'https://tryfinch.com';
9
- const DEV_FINCH_CONNECT_URI = 'http://localhost:3000';
10
- const DEV_DEFAULT_FINCH_REDIRECT_URI = 'http://localhost:4001';
11
9
  const FINCH_CONNECT_IFRAME_ID = 'finch-connect-iframe';
12
10
  const FINCH_AUTH_MESSAGE_NAME = 'finch-auth-message';
13
- const constructAuthUrl = ({ clientId, payrollProvider, category, products, manual, sandbox, state, finchDevMode, }) => {
14
- const canUseFinchDevMode = finchDevMode && window.location.hostname === 'localhost';
15
- const authUrl = new URL(`${canUseFinchDevMode ? DEV_FINCH_CONNECT_URI : BASE_FINCH_CONNECT_URI}/authorize`);
16
- if (clientId)
17
- authUrl.searchParams.append('client_id', clientId);
18
- if (payrollProvider)
19
- authUrl.searchParams.append('payroll_provider', payrollProvider);
20
- if (category)
21
- authUrl.searchParams.append('category', category);
22
- authUrl.searchParams.append('products', (products !== null && products !== void 0 ? products : []).join(' '));
11
+ const constructAuthUrl = (connectOptions) => {
12
+ const { state, apiConfig } = connectOptions;
13
+ const CONNECT_URL = (apiConfig === null || apiConfig === void 0 ? void 0 : apiConfig.connectUrl) || BASE_FINCH_CONNECT_URI;
14
+ const REDIRECT_URL = (apiConfig === null || apiConfig === void 0 ? void 0 : apiConfig.redirectUrl) || DEFAULT_FINCH_REDIRECT_URI;
15
+ const authUrl = new URL(`${CONNECT_URL}/authorize`);
16
+ if ('sessionId' in connectOptions) {
17
+ const { sessionId, products } = connectOptions;
18
+ authUrl.searchParams.append('session', sessionId);
19
+ if (products)
20
+ authUrl.searchParams.append('products', products.join(' '));
21
+ }
22
+ else {
23
+ const { clientId, payrollProvider, category, products, manual, sandbox, clientName, } = connectOptions;
24
+ if (clientId)
25
+ authUrl.searchParams.append('client_id', clientId);
26
+ if (payrollProvider)
27
+ authUrl.searchParams.append('payroll_provider', payrollProvider);
28
+ if (category)
29
+ authUrl.searchParams.append('category', category);
30
+ if (clientName)
31
+ authUrl.searchParams.append('client_name', clientName);
32
+ authUrl.searchParams.append('products', (products !== null && products !== void 0 ? products : []).join(' '));
33
+ if (manual)
34
+ authUrl.searchParams.append('manual', String(manual));
35
+ if (sandbox)
36
+ authUrl.searchParams.append('sandbox', String(sandbox));
37
+ }
23
38
  authUrl.searchParams.append('app_type', 'spa');
24
- authUrl.searchParams.append('redirect_uri', canUseFinchDevMode ? DEV_DEFAULT_FINCH_REDIRECT_URI : DEFAULT_FINCH_REDIRECT_URI);
39
+ authUrl.searchParams.append('redirect_uri', REDIRECT_URL);
25
40
  /** The host URL of the SDK. This is used to store the referrer for postMessage purposes */
26
41
  authUrl.searchParams.append('sdk_host_url', window.location.origin);
27
42
  authUrl.searchParams.append('mode', 'employer');
28
- if (manual)
29
- authUrl.searchParams.append('manual', String(manual));
30
- if (sandbox)
31
- authUrl.searchParams.append('sandbox', String(sandbox));
32
43
  if (state)
33
44
  authUrl.searchParams.append('state', state);
34
45
  // replace with actual SDK version by rollup
35
- authUrl.searchParams.append('sdk_version', 'react-3.6.1');
46
+ authUrl.searchParams.append('sdk_version', 'react-3.11.0');
36
47
  return authUrl.href;
37
48
  };
38
49
  const noop = () => {
39
50
  // intentionally empty
40
51
  };
41
- const DEFAULT_OPTIONS = {
42
- category: null,
43
- manual: false,
52
+ const BASE_DEFAULTS = {
44
53
  onSuccess: noop,
45
54
  onError: noop,
46
55
  onClose: noop,
47
- payrollProvider: null,
48
- products: [],
49
- sandbox: false,
50
56
  state: null,
51
57
  zIndex: 999,
52
- finchDevMode: false,
53
58
  };
59
+ const DEFAULT_OPTIONS_WITH_CLIENT_ID = Object.assign(Object.assign({}, BASE_DEFAULTS), { clientId: '', category: null, manual: false, payrollProvider: null, products: [], clientName: undefined, sandbox: false });
60
+ const DEFAULT_OPTIONS_WITH_SESSION_ID = Object.assign(Object.assign({}, BASE_DEFAULTS), { sessionId: '' });
54
61
  let isUseFinchConnectInitialized = false;
55
62
  const useFinchConnect = (options) => {
56
- if (!options.clientId)
57
- throw new Error('must specify clientId in options for useFinchConnect');
63
+ if (!('sessionId' in options) && !('clientId' in options)) {
64
+ throw new Error('must specify either sessionId or clientId in options for useFinchConnect');
65
+ }
66
+ if ('sessionId' in options && 'clientId' in options) {
67
+ throw new Error('cannot specify both sessionId and clientId in options for useFinchConnect');
68
+ }
58
69
  const isHookMounted = react.useRef(false);
59
70
  react.useEffect(() => {
60
71
  if (!isHookMounted.current) {
@@ -67,7 +78,8 @@ const useFinchConnect = (options) => {
67
78
  isHookMounted.current = true;
68
79
  }
69
80
  }, []);
70
- const combinedOptions = Object.assign(Object.assign({ clientId: '' }, DEFAULT_OPTIONS), options);
81
+ const combinedOptions = 'sessionId' in options
82
+ ? Object.assign(Object.assign({}, DEFAULT_OPTIONS_WITH_SESSION_ID), options) : Object.assign(Object.assign({}, DEFAULT_OPTIONS_WITH_CLIENT_ID), options);
71
83
  const open = (overrides) => {
72
84
  const openOptions = Object.assign(Object.assign({}, combinedOptions), overrides);
73
85
  if (!document.getElementById(FINCH_CONNECT_IFRAME_ID)) {
@@ -96,13 +108,13 @@ const useFinchConnect = (options) => {
96
108
  };
97
109
  react.useEffect(() => {
98
110
  function handleFinchAuth(event) {
99
- const canUseFinchDevMode = combinedOptions.finchDevMode && window.location.hostname === 'localhost';
100
- const CONNECT_URI = canUseFinchDevMode ? DEV_FINCH_CONNECT_URI : BASE_FINCH_CONNECT_URI;
111
+ var _a;
112
+ const CONNECT_URL = ((_a = combinedOptions.apiConfig) === null || _a === void 0 ? void 0 : _a.connectUrl) || BASE_FINCH_CONNECT_URI;
101
113
  if (!event.data)
102
114
  return;
103
115
  if (event.data.name !== FINCH_AUTH_MESSAGE_NAME)
104
116
  return;
105
- if (!event.origin.startsWith(CONNECT_URI))
117
+ if (!event.origin.startsWith(CONNECT_URL))
106
118
  return;
107
119
  close();
108
120
  switch (event.data.kind) {
@@ -116,6 +128,7 @@ const useFinchConnect = (options) => {
116
128
  combinedOptions.onSuccess({
117
129
  code: event.data.code,
118
130
  state: event.data.state,
131
+ idpRedirectUri: event.data.idpRedirectUri,
119
132
  });
120
133
  break;
121
134
  default: {
package/dist/index.js.map CHANGED
@@ -1 +1 @@
1
- {"version":3,"file":"index.js","sources":["../src/src/index.ts"],"sourcesContent":[null],"names":["useRef","useEffect"],"mappings":"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"}
1
+ {"version":3,"file":"index.js","sources":["../src/src/index.ts"],"sourcesContent":[null],"names":["useRef","useEffect"],"mappings":"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"}
@@ -14,29 +14,44 @@ const App = () => {
14
14
  const onClose = () => setResult({ kind: 'closed' });
15
15
 
16
16
  const { open } = useFinchConnect({
17
- clientId: '<your-client-id>',
18
- products: ['company', 'directory', 'individual', 'employment'],
19
- // sandbox: false,
20
- // payrollProvider: '<payroll-provider-id>',
17
+ clientId: 'f36f0cf9-5900-4171-b6d9-364008eb61aa',
18
+ products: [
19
+ 'company',
20
+ 'directory',
21
+ 'individual',
22
+ 'employment',
23
+ 'payment',
24
+ 'pay_statement',
25
+ 'benefits',
26
+ ],
27
+ payrollProvider: 'gusto',
28
+ state: '',
21
29
  onSuccess,
22
30
  onError,
23
31
  onClose,
24
32
  });
25
33
 
26
- const submissionHandler: React.FormEventHandler<HTMLFormElement> = (e) => {
34
+ const submissionHandler: React.FormEventHandler<HTMLFormElement> = (e) => {
27
35
  e.preventDefault();
28
36
  open({
29
37
  ...(sendState ? { state: new Date().toISOString() } : undefined),
30
- })
38
+ });
31
39
  };
32
40
 
33
41
  return (
34
42
  <div className="container">
35
- <h2><a href="https://www.npmjs.com/package/@tryfinch/react-connect">@tryfinch/react-connect</a> Example App</h2>
43
+ <h2>
44
+ <a href="https://www.npmjs.com/package/@tryfinch/react-connect">@tryfinch/react-connect</a>{' '}
45
+ Example App
46
+ </h2>
36
47
  <form className="actions" onSubmit={submissionHandler}>
37
48
  <div className="row">
38
49
  <label className="top-label">Include State:</label>
39
- <input type="checkbox" checked={sendState} onChange={() => setSendState(prev => !prev)} />
50
+ <input
51
+ type="checkbox"
52
+ checked={sendState}
53
+ onChange={() => setSendState((prev) => !prev)}
54
+ />
40
55
  </div>
41
56
  <div className="row">
42
57
  <button className="cta" type="submit">
@@ -45,8 +60,10 @@ const App = () => {
45
60
  </div>
46
61
  </form>
47
62
  <div className="results">
48
- { !result && <p>Complete a Finch Connect session and the success event will be displayed here</p> }
49
- { result && <Result result={result} /> }
63
+ {!result && (
64
+ <p>Complete a Finch Connect session and the success event will be displayed here</p>
65
+ )}
66
+ {result && <Result result={result} />}
50
67
  </div>
51
68
  </div>
52
69
  );
package/package.json CHANGED
@@ -1,6 +1,6 @@
1
1
  {
2
2
  "name": "@tryfinch/react-connect",
3
- "version": "3.6.1",
3
+ "version": "3.11.0",
4
4
  "description": "Finch SDK for embedding Finch Connect in API React Single Page Applications (SPA)",
5
5
  "keywords": [
6
6
  "finch",
package/src/index.ts CHANGED
@@ -1,8 +1,11 @@
1
1
  import { useEffect, useRef } from 'react';
2
2
 
3
+ type HasKey<T, K extends PropertyKey> = T extends Record<K, unknown> ? T : never;
4
+
3
5
  export type SuccessEvent = {
4
6
  code: string;
5
7
  state?: string;
8
+ idpRedirectUri?: string;
6
9
  };
7
10
 
8
11
  export type ErrorEvent = {
@@ -14,24 +17,38 @@ export type Sandbox =
14
17
  | 'provider' /** This is to enable the new Provider Sandbox */
15
18
  | boolean /** This is the old sandbox flag retained for backwards compatibility */;
16
19
 
17
- export type ConnectOptions = {
18
- category: string | null;
19
- clientId: string;
20
- manual: boolean;
20
+ type BaseConnectOptions = {
21
21
  state: string | null;
22
22
  onSuccess: (e: SuccessEvent) => void;
23
23
  onError: (e: ErrorEvent) => void;
24
24
  onClose: () => void;
25
+ zIndex: number;
26
+ apiConfig?: {
27
+ connectUrl: string;
28
+ redirectUrl: string;
29
+ };
30
+ };
31
+
32
+ type ConnectOptionsWithSessionId = BaseConnectOptions & {
33
+ // Use this option if you have a Finch Connect sessionID from the IDP redirect flow
34
+ sessionId: string;
35
+ // Allow for overriding products for the session
36
+ products?: string[];
37
+ };
38
+
39
+ type ConnectOptionsWithClientId = BaseConnectOptions & {
40
+ category: string | null;
41
+ clientId: string;
42
+ manual: boolean;
25
43
  payrollProvider: string | null;
26
44
  products: string[];
45
+ clientName?: string;
27
46
  sandbox: Sandbox;
28
- zIndex: number;
29
- finchDevMode?: boolean;
30
47
  };
31
48
 
32
- type OpenFn = (
33
- overrides?: Partial<Pick<ConnectOptions, 'products' | 'state' | 'payrollProvider'>>
34
- ) => void;
49
+ export type ConnectOptions = ConnectOptionsWithSessionId | ConnectOptionsWithClientId;
50
+
51
+ type OpenFn = (overrides?: Partial<ConnectOptions>) => void;
35
52
 
36
53
  const POST_MESSAGE_NAME = 'finch-auth-message' as const;
37
54
 
@@ -43,6 +60,7 @@ type FinchConnectAuthMessage = { name: typeof POST_MESSAGE_NAME } & (
43
60
  kind: 'success';
44
61
  code: string;
45
62
  state?: string;
63
+ idpRedirectUri?: string;
46
64
  }
47
65
  | {
48
66
  kind: 'error';
@@ -58,41 +76,46 @@ interface FinchConnectPostMessage {
58
76
  const BASE_FINCH_CONNECT_URI = 'https://connect.tryfinch.com';
59
77
  const DEFAULT_FINCH_REDIRECT_URI = 'https://tryfinch.com';
60
78
 
61
- const DEV_FINCH_CONNECT_URI = 'http://localhost:3000';
62
- const DEV_DEFAULT_FINCH_REDIRECT_URI = 'http://localhost:4001';
63
-
64
79
  const FINCH_CONNECT_IFRAME_ID = 'finch-connect-iframe';
65
80
  const FINCH_AUTH_MESSAGE_NAME = 'finch-auth-message';
66
81
 
67
- const constructAuthUrl = ({
68
- clientId,
69
- payrollProvider,
70
- category,
71
- products,
72
- manual,
73
- sandbox,
74
- state,
75
- finchDevMode,
76
- }: Partial<ConnectOptions>) => {
77
- const canUseFinchDevMode = finchDevMode && window.location.hostname === 'localhost';
78
-
79
- const authUrl = new URL(
80
- `${canUseFinchDevMode ? DEV_FINCH_CONNECT_URI : BASE_FINCH_CONNECT_URI}/authorize`
81
- );
82
- if (clientId) authUrl.searchParams.append('client_id', clientId);
83
- if (payrollProvider) authUrl.searchParams.append('payroll_provider', payrollProvider);
84
- if (category) authUrl.searchParams.append('category', category);
85
- authUrl.searchParams.append('products', (products ?? []).join(' '));
82
+ const constructAuthUrl = (connectOptions: ConnectOptions) => {
83
+ const { state, apiConfig } = connectOptions;
84
+
85
+ const CONNECT_URL = apiConfig?.connectUrl || BASE_FINCH_CONNECT_URI;
86
+ const REDIRECT_URL = apiConfig?.redirectUrl || DEFAULT_FINCH_REDIRECT_URI;
87
+
88
+ const authUrl = new URL(`${CONNECT_URL}/authorize`);
89
+
90
+ if ('sessionId' in connectOptions) {
91
+ const { sessionId, products } = connectOptions;
92
+ authUrl.searchParams.append('session', sessionId);
93
+ if (products) authUrl.searchParams.append('products', products.join(' '));
94
+ } else {
95
+ const {
96
+ clientId,
97
+ payrollProvider,
98
+ category,
99
+ products,
100
+ manual,
101
+ sandbox,
102
+ clientName,
103
+ } = connectOptions;
104
+
105
+ if (clientId) authUrl.searchParams.append('client_id', clientId);
106
+ if (payrollProvider) authUrl.searchParams.append('payroll_provider', payrollProvider);
107
+ if (category) authUrl.searchParams.append('category', category);
108
+ if (clientName) authUrl.searchParams.append('client_name', clientName);
109
+ authUrl.searchParams.append('products', (products ?? []).join(' '));
110
+ if (manual) authUrl.searchParams.append('manual', String(manual));
111
+ if (sandbox) authUrl.searchParams.append('sandbox', String(sandbox));
112
+ }
113
+
86
114
  authUrl.searchParams.append('app_type', 'spa');
87
- authUrl.searchParams.append(
88
- 'redirect_uri',
89
- canUseFinchDevMode ? DEV_DEFAULT_FINCH_REDIRECT_URI : DEFAULT_FINCH_REDIRECT_URI
90
- );
115
+ authUrl.searchParams.append('redirect_uri', REDIRECT_URL);
91
116
  /** The host URL of the SDK. This is used to store the referrer for postMessage purposes */
92
117
  authUrl.searchParams.append('sdk_host_url', window.location.origin);
93
118
  authUrl.searchParams.append('mode', 'employer');
94
- if (manual) authUrl.searchParams.append('manual', String(manual));
95
- if (sandbox) authUrl.searchParams.append('sandbox', String(sandbox));
96
119
  if (state) authUrl.searchParams.append('state', state);
97
120
  // replace with actual SDK version by rollup
98
121
  authUrl.searchParams.append('sdk_version', 'react-SDK_VERSION');
@@ -104,24 +127,41 @@ const noop = () => {
104
127
  // intentionally empty
105
128
  };
106
129
 
107
- const DEFAULT_OPTIONS: Omit<ConnectOptions, 'clientId'> = {
108
- category: null,
109
- manual: false,
130
+ const BASE_DEFAULTS = {
110
131
  onSuccess: noop,
111
132
  onError: noop,
112
133
  onClose: noop,
134
+ state: null,
135
+ zIndex: 999,
136
+ };
137
+
138
+ const DEFAULT_OPTIONS_WITH_CLIENT_ID: HasKey<ConnectOptions, 'clientId'> = {
139
+ ...BASE_DEFAULTS,
140
+ clientId: '',
141
+ category: null,
142
+ manual: false,
113
143
  payrollProvider: null,
114
144
  products: [],
145
+ clientName: undefined,
115
146
  sandbox: false,
116
- state: null,
117
- zIndex: 999,
118
- finchDevMode: false,
147
+ };
148
+
149
+ const DEFAULT_OPTIONS_WITH_SESSION_ID: HasKey<ConnectOptions, 'sessionId'> = {
150
+ ...BASE_DEFAULTS,
151
+ sessionId: '',
119
152
  };
120
153
 
121
154
  let isUseFinchConnectInitialized = false;
122
155
 
123
156
  export const useFinchConnect = (options: Partial<ConnectOptions>): { open: OpenFn } => {
124
- if (!options.clientId) throw new Error('must specify clientId in options for useFinchConnect');
157
+ if (!('sessionId' in options) && !('clientId' in options)) {
158
+ throw new Error('must specify either sessionId or clientId in options for useFinchConnect');
159
+ }
160
+
161
+ if ('sessionId' in options && 'clientId' in options) {
162
+ throw new Error('cannot specify both sessionId and clientId in options for useFinchConnect');
163
+ }
164
+
125
165
  const isHookMounted = useRef(false);
126
166
 
127
167
  useEffect(() => {
@@ -138,11 +178,10 @@ export const useFinchConnect = (options: Partial<ConnectOptions>): { open: OpenF
138
178
  }
139
179
  }, []);
140
180
 
141
- const combinedOptions: ConnectOptions = {
142
- clientId: '',
143
- ...DEFAULT_OPTIONS,
144
- ...options,
145
- };
181
+ const combinedOptions: ConnectOptions =
182
+ 'sessionId' in options
183
+ ? { ...DEFAULT_OPTIONS_WITH_SESSION_ID, ...options }
184
+ : { ...DEFAULT_OPTIONS_WITH_CLIENT_ID, ...options };
146
185
 
147
186
  const open: OpenFn = (overrides) => {
148
187
  const openOptions: ConnectOptions = {
@@ -177,14 +216,11 @@ export const useFinchConnect = (options: Partial<ConnectOptions>): { open: OpenF
177
216
 
178
217
  useEffect(() => {
179
218
  function handleFinchAuth(event: FinchConnectPostMessage) {
180
- const canUseFinchDevMode =
181
- combinedOptions.finchDevMode && window.location.hostname === 'localhost';
182
-
183
- const CONNECT_URI = canUseFinchDevMode ? DEV_FINCH_CONNECT_URI : BASE_FINCH_CONNECT_URI;
219
+ const CONNECT_URL = combinedOptions.apiConfig?.connectUrl || BASE_FINCH_CONNECT_URI;
184
220
 
185
221
  if (!event.data) return;
186
222
  if (event.data.name !== FINCH_AUTH_MESSAGE_NAME) return;
187
- if (!event.origin.startsWith(CONNECT_URI)) return;
223
+ if (!event.origin.startsWith(CONNECT_URL)) return;
188
224
 
189
225
  close();
190
226
 
@@ -199,6 +235,7 @@ export const useFinchConnect = (options: Partial<ConnectOptions>): { open: OpenF
199
235
  combinedOptions.onSuccess({
200
236
  code: event.data.code,
201
237
  state: event.data.state,
238
+ idpRedirectUri: event.data.idpRedirectUri,
202
239
  });
203
240
  break;
204
241
  default: {