@stytch/nextjs 11.0.0 → 13.0.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/CHANGELOG.md +44 -0
- package/README.md +16 -0
- package/b2b/headless/package.json +6 -0
- package/b2b/ui/package.json +6 -0
- package/dist/Stytch.d.ts +172 -0
- package/dist/Stytch.js +214 -0
- package/dist/Stytch.js.map +1 -0
- package/dist/Stytch.spec.d.ts +1 -0
- package/dist/Stytch.spec.js +130 -0
- package/dist/Stytch.spec.js.map +1 -0
- package/dist/StytchContext.d.ts +104 -0
- package/dist/StytchContext.js +180 -0
- package/dist/StytchContext.js.map +1 -0
- package/dist/StytchContext.serverside.spec.d.ts +4 -0
- package/dist/StytchContext.serverside.spec.js +51 -0
- package/dist/StytchContext.serverside.spec.js.map +1 -0
- package/dist/StytchContext.spec.d.ts +1 -0
- package/dist/StytchContext.spec.js +212 -0
- package/dist/StytchContext.spec.js.map +1 -0
- package/dist/StytchSSRProxy.d.ts +2 -0
- package/dist/StytchSSRProxy.js +29 -0
- package/dist/StytchSSRProxy.js.map +1 -0
- package/dist/StytchSSRProxy.spec.d.ts +1 -0
- package/dist/StytchSSRProxy.spec.js +16 -0
- package/dist/StytchSSRProxy.spec.js.map +1 -0
- package/dist/b2b/Stytch.d.ts +104 -0
- package/dist/b2b/Stytch.js +90 -0
- package/dist/b2b/Stytch.js.map +1 -0
- package/dist/b2b/StytchB2BContext.d.ts +104 -0
- package/dist/b2b/StytchB2BContext.js +179 -0
- package/dist/b2b/StytchB2BContext.js.map +1 -0
- package/dist/b2b/StytchB2BContext.spec.d.ts +1 -0
- package/dist/b2b/StytchB2BContext.spec.js +217 -0
- package/dist/b2b/StytchB2BContext.spec.js.map +1 -0
- package/dist/b2b/createStytchB2BHeadlessClient.d.ts +15 -0
- package/dist/b2b/createStytchB2BHeadlessClient.js +26 -0
- package/dist/b2b/createStytchB2BHeadlessClient.js.map +1 -0
- package/dist/b2b/createStytchB2BUIClient.d.ts +16 -0
- package/dist/b2b/createStytchB2BUIClient.js +27 -0
- package/dist/b2b/createStytchB2BUIClient.js.map +1 -0
- package/dist/b2b/index.d.ts +3 -238
- package/dist/b2b/index.esm.d.ts +3 -33
- package/dist/b2b/index.esm.js +1 -78
- package/dist/b2b/index.headless.d.ts +1 -0
- package/dist/b2b/index.headless.esm.d.ts +16 -0
- package/dist/b2b/index.headless.esm.js +4118 -0
- package/dist/b2b/index.headless.js +18 -0
- package/dist/b2b/index.headless.js.map +1 -0
- package/dist/b2b/index.js +14 -329
- package/dist/b2b/index.js.map +1 -0
- package/dist/b2b/index.ui.d.ts +1 -0
- package/dist/b2b/index.ui.esm.d.ts +17 -0
- package/dist/b2b/index.ui.esm.js +62 -0
- package/dist/b2b/index.ui.js +18 -0
- package/dist/b2b/index.ui.js.map +1 -0
- package/dist/createStytchHeadlessClient.d.ts +15 -0
- package/dist/createStytchHeadlessClient.js +26 -0
- package/dist/createStytchHeadlessClient.js.map +1 -0
- package/dist/createStytchUIClient.d.ts +16 -0
- package/dist/createStytchUIClient.js +27 -0
- package/dist/createStytchUIClient.js.map +1 -0
- package/dist/index.d.ts +3 -244
- package/dist/index.esm.d.ts +32 -1
- package/dist/index.esm.js +56 -1
- package/dist/index.headless.d.ts +1 -16
- package/dist/index.headless.js +16 -63
- package/dist/index.headless.js.map +1 -0
- package/dist/index.js +16 -318
- package/dist/index.js.map +1 -0
- package/dist/index.ui.d.ts +1 -17
- package/dist/index.ui.js +16 -64
- package/dist/index.ui.js.map +1 -0
- package/dist/utils/async.d.ts +2 -0
- package/dist/utils/async.js +22 -0
- package/dist/utils/async.js.map +1 -0
- package/dist/utils/errors.d.ts +3 -0
- package/dist/utils/errors.js +28 -0
- package/dist/utils/errors.js.map +1 -0
- package/dist/utils/invariant.d.ts +1 -0
- package/dist/utils/invariant.js +10 -0
- package/dist/utils/invariant.js.map +1 -0
- package/dist/utils/useIsomorphicLayoutEffect.d.ts +3 -0
- package/dist/utils/useIsomorphicLayoutEffect.js +7 -0
- package/dist/utils/useIsomorphicLayoutEffect.js.map +1 -0
- package/package.json +3 -3
package/CHANGELOG.md
CHANGED
|
@@ -1,5 +1,49 @@
|
|
|
1
1
|
# @stytch/nextjs
|
|
2
2
|
|
|
3
|
+
## 13.0.0
|
|
4
|
+
|
|
5
|
+
### Minor Changes
|
|
6
|
+
|
|
7
|
+
- 8cff174: B2C Passkeys Headless Support & UI components
|
|
8
|
+
|
|
9
|
+
### Patch Changes
|
|
10
|
+
|
|
11
|
+
- Updated dependencies [8cff174]
|
|
12
|
+
- @stytch/vanilla-js@3.1.0
|
|
13
|
+
|
|
14
|
+
## 12.0.0
|
|
15
|
+
|
|
16
|
+
### Major Changes
|
|
17
|
+
|
|
18
|
+
- 5dd9d24: Change export of B2B Headless Client to seperate subpackage to improve tree-shaking performance
|
|
19
|
+
|
|
20
|
+
Two public export locations have changed:
|
|
21
|
+
|
|
22
|
+
```javascript
|
|
23
|
+
import { createStytchB2BHeadlessClient } from '@stytch/nextjs/b2b';
|
|
24
|
+
```
|
|
25
|
+
|
|
26
|
+
Is now updated to
|
|
27
|
+
|
|
28
|
+
```javascript
|
|
29
|
+
import { createStytchB2BHeadlessClient } from '@stytch/vanilla-js/b2b/headless';
|
|
30
|
+
```
|
|
31
|
+
|
|
32
|
+
```javascript
|
|
33
|
+
import { createStytchB2BUIClient } from '@stytch/nextjs/b2b';
|
|
34
|
+
```
|
|
35
|
+
|
|
36
|
+
Is now updated to
|
|
37
|
+
|
|
38
|
+
```javascript
|
|
39
|
+
import { createStytchB2BUIClient } from '@stytch/vanilla-js/b2b/ui';
|
|
40
|
+
```
|
|
41
|
+
|
|
42
|
+
### Patch Changes
|
|
43
|
+
|
|
44
|
+
- Updated dependencies [5dd9d24]
|
|
45
|
+
- @stytch/vanilla-js@3.0.0
|
|
46
|
+
|
|
3
47
|
## 11.0.0
|
|
4
48
|
|
|
5
49
|
### Patch Changes
|
package/README.md
CHANGED
|
@@ -9,6 +9,22 @@ With `npm`
|
|
|
9
9
|
|
|
10
10
|
## Documentation
|
|
11
11
|
|
|
12
|
+
This package contains several entrypoints, depending on if you are using the B2B or B2C stytch product.
|
|
13
|
+
|
|
14
|
+
```javascript
|
|
15
|
+
// Stytch B2C Product
|
|
16
|
+
import { StytchProvider } from '@stytch/nextjs';
|
|
17
|
+
import { createStytchUIClient } from '@stytch/nextjs/ui';
|
|
18
|
+
// The headless client does not bundle UI elements, and is a much smaller package
|
|
19
|
+
import { createStytchHeadlessClient } from '@stytch/nextjs/headless';
|
|
20
|
+
|
|
21
|
+
// Stytch B2B Product
|
|
22
|
+
import { StytchB2B } from '@stytch/nextjs/b2b';
|
|
23
|
+
import { createStytchB2BUIClient } from '@stytch/nextjs/b2b/ui';
|
|
24
|
+
// The headless client does not bundle UI elements, and is a much smaller package
|
|
25
|
+
import { createStytchB2BHeadlessClient } from '@stytch/nextjs/b2b/headless';
|
|
26
|
+
```
|
|
27
|
+
|
|
12
28
|
For full documentation please refer to Stytch's javascript SDK documentation on https://stytch.com/docs/sdks.
|
|
13
29
|
|
|
14
30
|
## Example Usage
|
package/dist/Stytch.d.ts
ADDED
|
@@ -0,0 +1,172 @@
|
|
|
1
|
+
import React from 'react';
|
|
2
|
+
import type { Callbacks, StytchLoginConfig, StyleConfig } from '@stytch/vanilla-js';
|
|
3
|
+
export interface StytchProps {
|
|
4
|
+
/**
|
|
5
|
+
* A {@link StytchLoginConfig} object. Add products and product-specific config to this object to change the login methods shown.
|
|
6
|
+
*
|
|
7
|
+
* @example
|
|
8
|
+
* {
|
|
9
|
+
* products: ['crypto', 'otps']
|
|
10
|
+
* }
|
|
11
|
+
*
|
|
12
|
+
* @example
|
|
13
|
+
* {
|
|
14
|
+
* products: ['emailMagicLinks'>]
|
|
15
|
+
* emailMagicLinksOptions: {
|
|
16
|
+
* loginRedirectURL: 'https://example.com/authenticate',
|
|
17
|
+
* signupRedirectURL: 'https://example.com/authenticate',
|
|
18
|
+
* }
|
|
19
|
+
* }
|
|
20
|
+
*
|
|
21
|
+
* @example
|
|
22
|
+
* {
|
|
23
|
+
* products: ['oauth'>]
|
|
24
|
+
* oauthOptions: {
|
|
25
|
+
* providers: [
|
|
26
|
+
* { type: 'google', one_tap: true, position: 'embedded' },
|
|
27
|
+
* { type: 'microsoft' },
|
|
28
|
+
* { type: 'apple' },
|
|
29
|
+
* { type: 'facebook' },
|
|
30
|
+
* ],
|
|
31
|
+
* }
|
|
32
|
+
* }
|
|
33
|
+
*/
|
|
34
|
+
config: StytchLoginConfig;
|
|
35
|
+
/**
|
|
36
|
+
* An optional {@link StyleConfig} to customize the look and feel of the screen.
|
|
37
|
+
*
|
|
38
|
+
* @example
|
|
39
|
+
* {
|
|
40
|
+
* fontFamily: 'Arial, Helvetica, sans-serif',
|
|
41
|
+
* width: '360px',
|
|
42
|
+
* primaryColor: '#19303D',
|
|
43
|
+
* }
|
|
44
|
+
*/
|
|
45
|
+
styles?: StyleConfig;
|
|
46
|
+
/**
|
|
47
|
+
* An optional {@link Callbacks} object.
|
|
48
|
+
*
|
|
49
|
+
* @example
|
|
50
|
+
* {
|
|
51
|
+
* onError: ({message}) => {
|
|
52
|
+
* console.error('Stytch login screen error', message)
|
|
53
|
+
* }
|
|
54
|
+
* }
|
|
55
|
+
*
|
|
56
|
+
* @example
|
|
57
|
+
* {
|
|
58
|
+
* onEvent: ({type, data}) => {
|
|
59
|
+
* if(type === StytchEventType.CryptoWalletAuthenticate) {
|
|
60
|
+
* console.log('Logged in with crypto wallet', data);
|
|
61
|
+
* }
|
|
62
|
+
* }
|
|
63
|
+
* }
|
|
64
|
+
*/
|
|
65
|
+
callbacks?: Callbacks;
|
|
66
|
+
}
|
|
67
|
+
/**
|
|
68
|
+
* The Stytch Login Screen component.
|
|
69
|
+
* This component can only be used with the Stytch UI Client - use {@link createStytchUIClient}
|
|
70
|
+
* in your `_app.jsx` file.
|
|
71
|
+
*
|
|
72
|
+
* See the {@link https://stytch.com/docs/sdks/javascript-sdk online reference}
|
|
73
|
+
* and {@link https://storybook.stytch.com interactive examples} for more.
|
|
74
|
+
*
|
|
75
|
+
* @example
|
|
76
|
+
* <StytchLogin
|
|
77
|
+
* config={{
|
|
78
|
+
* products: ['emailMagicLinks', 'oauth'],
|
|
79
|
+
* emailMagicLinksOptions: {
|
|
80
|
+
* loginRedirectURL: 'https://example.com/authenticate',
|
|
81
|
+
* signupRedirectURL: 'https://example.com/authenticate',
|
|
82
|
+
* },
|
|
83
|
+
* oauthOptions: {
|
|
84
|
+
* providers: [{ type: OAuthProviders.Google }, { type: OAuthProviders.Microsoft }],
|
|
85
|
+
* },
|
|
86
|
+
* }}
|
|
87
|
+
* styles={{
|
|
88
|
+
* fontFamily: '"Helvetica New", Helvetica, sans-serif',
|
|
89
|
+
* primaryColor: '#0577CA',
|
|
90
|
+
* width: '321px',
|
|
91
|
+
* }}
|
|
92
|
+
* callbacks={{
|
|
93
|
+
* onEvent: (event) => console.log(event)
|
|
94
|
+
* }}
|
|
95
|
+
* />
|
|
96
|
+
*
|
|
97
|
+
* @param config - A {@link StytchLoginConfig} object
|
|
98
|
+
* @param styles - An optional {@link StyleConfig} to customize the look and feel of the screen.
|
|
99
|
+
* @param callbacks - An optional {@link Callbacks} object
|
|
100
|
+
*/
|
|
101
|
+
export declare const StytchLogin: ({ config, styles, callbacks }: StytchProps) => React.JSX.Element;
|
|
102
|
+
export interface StytchResetPasswordProps extends StytchProps {
|
|
103
|
+
passwordResetToken: string;
|
|
104
|
+
}
|
|
105
|
+
/**
|
|
106
|
+
* The Stytch Reset Password component.
|
|
107
|
+
* This component can only be used with a {@link StytchUIClient} client constructor
|
|
108
|
+
* passed into the {@link StytchProvider}
|
|
109
|
+
*
|
|
110
|
+
* See the {@link https://stytch.com/docs/sdks/javascript-sdk online reference}
|
|
111
|
+
* and {@link https://storybook.stytch.com interactive examples} for more.
|
|
112
|
+
*
|
|
113
|
+
* @example
|
|
114
|
+
* <StytchPasswordReset
|
|
115
|
+
* config={{
|
|
116
|
+
* products: ['emailMagicLinks', 'oauth'],
|
|
117
|
+
* emailMagicLinksOptions: {
|
|
118
|
+
* loginRedirectURL: 'https://example.com/authenticate',
|
|
119
|
+
* signupRedirectURL: 'https://example.com/authenticate',
|
|
120
|
+
* },
|
|
121
|
+
* oauthOptions: {
|
|
122
|
+
* providers: [{ type: OAuthProviders.Google }, { type: OAuthProviders.Microsoft }],
|
|
123
|
+
* },
|
|
124
|
+
* }}
|
|
125
|
+
* passwordResetToken="PvC5UudZ7TPZbELt95yXAQ-8MeEUCRob8bUQ-g52fIJs"
|
|
126
|
+
* styles={{
|
|
127
|
+
* fontFamily: '"Helvetica New", Helvetica, sans-serif',
|
|
128
|
+
* primaryColor: '#0577CA',
|
|
129
|
+
* width: '321px',
|
|
130
|
+
* }}
|
|
131
|
+
* callbacks={{
|
|
132
|
+
* onEvent: (event) => console.log(event)
|
|
133
|
+
* }}
|
|
134
|
+
* />
|
|
135
|
+
*
|
|
136
|
+
* @param config - A {@link StytchLoginConfig} object
|
|
137
|
+
* @param passwordResetToken - A Stytch password reset token
|
|
138
|
+
* @param styles - An optional {@link StyleConfig} to customize the look and feel of the screen.
|
|
139
|
+
* @param callbacks - An optional {@link Callbacks} object
|
|
140
|
+
*/
|
|
141
|
+
export declare const StytchPasswordReset: ({ config, styles, callbacks, passwordResetToken }: StytchResetPasswordProps) => React.JSX.Element;
|
|
142
|
+
/**
|
|
143
|
+
* The Stytch Passkey Registration component.
|
|
144
|
+
* This component can only be used with a {@link StytchUIClient} client constructor
|
|
145
|
+
* passed into the {@link StytchProvider}
|
|
146
|
+
*
|
|
147
|
+
* See the {@link https://stytch.com/docs/sdks/javascript-sdk online reference}
|
|
148
|
+
* and {@link https://storybook.stytch.com interactive examples} for more.
|
|
149
|
+
*
|
|
150
|
+
* @example
|
|
151
|
+
* const styles = {
|
|
152
|
+
* container: {
|
|
153
|
+
* backgroundColor: '#e11e1e',
|
|
154
|
+
* },
|
|
155
|
+
* colors: {
|
|
156
|
+
* primary: '#ff00f7',
|
|
157
|
+
* secondary: '#5C727D',
|
|
158
|
+
* },
|
|
159
|
+
* }
|
|
160
|
+
*
|
|
161
|
+
* <StytchPasskeyRegistration
|
|
162
|
+
* styles={styles}
|
|
163
|
+
* callbacks={{
|
|
164
|
+
* onEvent: (event) => console.log(event)
|
|
165
|
+
* }}
|
|
166
|
+
* />
|
|
167
|
+
* />
|
|
168
|
+
*
|
|
169
|
+
* @param styles - An optional {@link StyleConfig} to customize the look and feel of the screen.
|
|
170
|
+
* @param callbacks - An optional {@link Callbacks} object
|
|
171
|
+
*/
|
|
172
|
+
export declare const StytchPasskeyRegistration: ({ config, styles, callbacks }: StytchProps) => React.JSX.Element;
|
package/dist/Stytch.js
ADDED
|
@@ -0,0 +1,214 @@
|
|
|
1
|
+
"use strict";
|
|
2
|
+
var __createBinding = (this && this.__createBinding) || (Object.create ? (function(o, m, k, k2) {
|
|
3
|
+
if (k2 === undefined) k2 = k;
|
|
4
|
+
var desc = Object.getOwnPropertyDescriptor(m, k);
|
|
5
|
+
if (!desc || ("get" in desc ? !m.__esModule : desc.writable || desc.configurable)) {
|
|
6
|
+
desc = { enumerable: true, get: function() { return m[k]; } };
|
|
7
|
+
}
|
|
8
|
+
Object.defineProperty(o, k2, desc);
|
|
9
|
+
}) : (function(o, m, k, k2) {
|
|
10
|
+
if (k2 === undefined) k2 = k;
|
|
11
|
+
o[k2] = m[k];
|
|
12
|
+
}));
|
|
13
|
+
var __setModuleDefault = (this && this.__setModuleDefault) || (Object.create ? (function(o, v) {
|
|
14
|
+
Object.defineProperty(o, "default", { enumerable: true, value: v });
|
|
15
|
+
}) : function(o, v) {
|
|
16
|
+
o["default"] = v;
|
|
17
|
+
});
|
|
18
|
+
var __importStar = (this && this.__importStar) || function (mod) {
|
|
19
|
+
if (mod && mod.__esModule) return mod;
|
|
20
|
+
var result = {};
|
|
21
|
+
if (mod != null) for (var k in mod) if (k !== "default" && Object.prototype.hasOwnProperty.call(mod, k)) __createBinding(result, mod, k);
|
|
22
|
+
__setModuleDefault(result, mod);
|
|
23
|
+
return result;
|
|
24
|
+
};
|
|
25
|
+
var __importDefault = (this && this.__importDefault) || function (mod) {
|
|
26
|
+
return (mod && mod.__esModule) ? mod : { "default": mod };
|
|
27
|
+
};
|
|
28
|
+
Object.defineProperty(exports, "__esModule", { value: true });
|
|
29
|
+
exports.StytchPasskeyRegistration = exports.StytchPasswordReset = exports.StytchLogin = void 0;
|
|
30
|
+
const react_1 = __importStar(require("react"));
|
|
31
|
+
const StytchContext_1 = require("./StytchContext");
|
|
32
|
+
const invariant_1 = require("./utils/invariant");
|
|
33
|
+
const errors_1 = require("./utils/errors");
|
|
34
|
+
const useIsomorphicLayoutEffect_1 = __importDefault(require("./utils/useIsomorphicLayoutEffect"));
|
|
35
|
+
/**
|
|
36
|
+
* The Stytch Login Screen component.
|
|
37
|
+
* This component can only be used with the Stytch UI Client - use {@link createStytchUIClient}
|
|
38
|
+
* in your `_app.jsx` file.
|
|
39
|
+
*
|
|
40
|
+
* See the {@link https://stytch.com/docs/sdks/javascript-sdk online reference}
|
|
41
|
+
* and {@link https://storybook.stytch.com interactive examples} for more.
|
|
42
|
+
*
|
|
43
|
+
* @example
|
|
44
|
+
* <StytchLogin
|
|
45
|
+
* config={{
|
|
46
|
+
* products: ['emailMagicLinks', 'oauth'],
|
|
47
|
+
* emailMagicLinksOptions: {
|
|
48
|
+
* loginRedirectURL: 'https://example.com/authenticate',
|
|
49
|
+
* signupRedirectURL: 'https://example.com/authenticate',
|
|
50
|
+
* },
|
|
51
|
+
* oauthOptions: {
|
|
52
|
+
* providers: [{ type: OAuthProviders.Google }, { type: OAuthProviders.Microsoft }],
|
|
53
|
+
* },
|
|
54
|
+
* }}
|
|
55
|
+
* styles={{
|
|
56
|
+
* fontFamily: '"Helvetica New", Helvetica, sans-serif',
|
|
57
|
+
* primaryColor: '#0577CA',
|
|
58
|
+
* width: '321px',
|
|
59
|
+
* }}
|
|
60
|
+
* callbacks={{
|
|
61
|
+
* onEvent: (event) => console.log(event)
|
|
62
|
+
* }}
|
|
63
|
+
* />
|
|
64
|
+
*
|
|
65
|
+
* @param config - A {@link StytchLoginConfig} object
|
|
66
|
+
* @param styles - An optional {@link StyleConfig} to customize the look and feel of the screen.
|
|
67
|
+
* @param callbacks - An optional {@link Callbacks} object
|
|
68
|
+
*/
|
|
69
|
+
const StytchLogin = ({ config, styles, callbacks }) => {
|
|
70
|
+
(0, invariant_1.invariant)((0, StytchContext_1.useIsMounted__INTERNAL)(), (0, errors_1.noProviderError)('<StytchLogin />'));
|
|
71
|
+
const stytchClient = (0, StytchContext_1.useStytch)();
|
|
72
|
+
const containerEl = (0, react_1.useRef)(null);
|
|
73
|
+
(0, useIsomorphicLayoutEffect_1.default)(() => {
|
|
74
|
+
if (!(0, StytchContext_1.isUIClient)(stytchClient)) {
|
|
75
|
+
throw Error(errors_1.noHeadlessClientError);
|
|
76
|
+
}
|
|
77
|
+
if (!containerEl.current) {
|
|
78
|
+
return;
|
|
79
|
+
}
|
|
80
|
+
if (!containerEl.current.id) {
|
|
81
|
+
const randId = Math.floor(Math.random() * 1e6);
|
|
82
|
+
containerEl.current.id = `stytch-magic-link-${randId}`;
|
|
83
|
+
}
|
|
84
|
+
stytchClient.mountLogin({
|
|
85
|
+
config,
|
|
86
|
+
callbacks,
|
|
87
|
+
elementId: `#${containerEl.current.id}`,
|
|
88
|
+
styles,
|
|
89
|
+
});
|
|
90
|
+
}, [stytchClient, config, styles, callbacks]);
|
|
91
|
+
return react_1.default.createElement("div", { ref: containerEl });
|
|
92
|
+
};
|
|
93
|
+
exports.StytchLogin = StytchLogin;
|
|
94
|
+
/**
|
|
95
|
+
* The Stytch Reset Password component.
|
|
96
|
+
* This component can only be used with a {@link StytchUIClient} client constructor
|
|
97
|
+
* passed into the {@link StytchProvider}
|
|
98
|
+
*
|
|
99
|
+
* See the {@link https://stytch.com/docs/sdks/javascript-sdk online reference}
|
|
100
|
+
* and {@link https://storybook.stytch.com interactive examples} for more.
|
|
101
|
+
*
|
|
102
|
+
* @example
|
|
103
|
+
* <StytchPasswordReset
|
|
104
|
+
* config={{
|
|
105
|
+
* products: ['emailMagicLinks', 'oauth'],
|
|
106
|
+
* emailMagicLinksOptions: {
|
|
107
|
+
* loginRedirectURL: 'https://example.com/authenticate',
|
|
108
|
+
* signupRedirectURL: 'https://example.com/authenticate',
|
|
109
|
+
* },
|
|
110
|
+
* oauthOptions: {
|
|
111
|
+
* providers: [{ type: OAuthProviders.Google }, { type: OAuthProviders.Microsoft }],
|
|
112
|
+
* },
|
|
113
|
+
* }}
|
|
114
|
+
* passwordResetToken="PvC5UudZ7TPZbELt95yXAQ-8MeEUCRob8bUQ-g52fIJs"
|
|
115
|
+
* styles={{
|
|
116
|
+
* fontFamily: '"Helvetica New", Helvetica, sans-serif',
|
|
117
|
+
* primaryColor: '#0577CA',
|
|
118
|
+
* width: '321px',
|
|
119
|
+
* }}
|
|
120
|
+
* callbacks={{
|
|
121
|
+
* onEvent: (event) => console.log(event)
|
|
122
|
+
* }}
|
|
123
|
+
* />
|
|
124
|
+
*
|
|
125
|
+
* @param config - A {@link StytchLoginConfig} object
|
|
126
|
+
* @param passwordResetToken - A Stytch password reset token
|
|
127
|
+
* @param styles - An optional {@link StyleConfig} to customize the look and feel of the screen.
|
|
128
|
+
* @param callbacks - An optional {@link Callbacks} object
|
|
129
|
+
*/
|
|
130
|
+
const StytchPasswordReset = ({ config, styles, callbacks, passwordResetToken }) => {
|
|
131
|
+
(0, invariant_1.invariant)((0, StytchContext_1.useIsMounted__INTERNAL)(), (0, errors_1.noProviderError)('<StytchResetPassword />'));
|
|
132
|
+
const stytchClient = (0, StytchContext_1.useStytch)();
|
|
133
|
+
const containerEl = (0, react_1.useRef)(null);
|
|
134
|
+
(0, useIsomorphicLayoutEffect_1.default)(() => {
|
|
135
|
+
if (!(0, StytchContext_1.isUIClient)(stytchClient)) {
|
|
136
|
+
throw Error(errors_1.noHeadlessClientError);
|
|
137
|
+
}
|
|
138
|
+
if (!containerEl.current) {
|
|
139
|
+
return;
|
|
140
|
+
}
|
|
141
|
+
if (!containerEl.current.id) {
|
|
142
|
+
const randId = Math.floor(Math.random() * 1e6);
|
|
143
|
+
containerEl.current.id = `stytch-reset-password-${randId}`;
|
|
144
|
+
}
|
|
145
|
+
if (passwordResetToken) {
|
|
146
|
+
stytchClient.mountResetPassword({
|
|
147
|
+
config,
|
|
148
|
+
callbacks,
|
|
149
|
+
elementId: `#${containerEl.current.id}`,
|
|
150
|
+
styles,
|
|
151
|
+
passwordResetToken,
|
|
152
|
+
});
|
|
153
|
+
}
|
|
154
|
+
}, [stytchClient, config, styles, callbacks, passwordResetToken]);
|
|
155
|
+
return react_1.default.createElement("div", { ref: containerEl });
|
|
156
|
+
};
|
|
157
|
+
exports.StytchPasswordReset = StytchPasswordReset;
|
|
158
|
+
/**
|
|
159
|
+
* The Stytch Passkey Registration component.
|
|
160
|
+
* This component can only be used with a {@link StytchUIClient} client constructor
|
|
161
|
+
* passed into the {@link StytchProvider}
|
|
162
|
+
*
|
|
163
|
+
* See the {@link https://stytch.com/docs/sdks/javascript-sdk online reference}
|
|
164
|
+
* and {@link https://storybook.stytch.com interactive examples} for more.
|
|
165
|
+
*
|
|
166
|
+
* @example
|
|
167
|
+
* const styles = {
|
|
168
|
+
* container: {
|
|
169
|
+
* backgroundColor: '#e11e1e',
|
|
170
|
+
* },
|
|
171
|
+
* colors: {
|
|
172
|
+
* primary: '#ff00f7',
|
|
173
|
+
* secondary: '#5C727D',
|
|
174
|
+
* },
|
|
175
|
+
* }
|
|
176
|
+
*
|
|
177
|
+
* <StytchPasskeyRegistration
|
|
178
|
+
* styles={styles}
|
|
179
|
+
* callbacks={{
|
|
180
|
+
* onEvent: (event) => console.log(event)
|
|
181
|
+
* }}
|
|
182
|
+
* />
|
|
183
|
+
* />
|
|
184
|
+
*
|
|
185
|
+
* @param styles - An optional {@link StyleConfig} to customize the look and feel of the screen.
|
|
186
|
+
* @param callbacks - An optional {@link Callbacks} object
|
|
187
|
+
*/
|
|
188
|
+
const StytchPasskeyRegistration = ({ config, styles, callbacks }) => {
|
|
189
|
+
(0, invariant_1.invariant)((0, StytchContext_1.useIsMounted__INTERNAL)(), (0, errors_1.noProviderError)('<StytchPasskeyRegistration />'));
|
|
190
|
+
const stytchClient = (0, StytchContext_1.useStytch)();
|
|
191
|
+
const containerEl = (0, react_1.useRef)(null);
|
|
192
|
+
const user = (0, StytchContext_1.useStytchUser)();
|
|
193
|
+
(0, useIsomorphicLayoutEffect_1.default)(() => {
|
|
194
|
+
if (!(0, StytchContext_1.isUIClient)(stytchClient)) {
|
|
195
|
+
throw Error(errors_1.noHeadlessClientError);
|
|
196
|
+
}
|
|
197
|
+
if (!containerEl.current) {
|
|
198
|
+
return;
|
|
199
|
+
}
|
|
200
|
+
if (!containerEl.current.id) {
|
|
201
|
+
const randId = Math.floor(Math.random() * 1e6);
|
|
202
|
+
containerEl.current.id = `stytch-passkey-registration-${randId}`;
|
|
203
|
+
}
|
|
204
|
+
stytchClient.mountPasskeyRegistration({
|
|
205
|
+
config,
|
|
206
|
+
callbacks,
|
|
207
|
+
elementId: `#${containerEl.current.id}`,
|
|
208
|
+
styles,
|
|
209
|
+
});
|
|
210
|
+
}, [stytchClient, config, styles, callbacks, user]);
|
|
211
|
+
return react_1.default.createElement("div", { ref: containerEl });
|
|
212
|
+
};
|
|
213
|
+
exports.StytchPasskeyRegistration = StytchPasskeyRegistration;
|
|
214
|
+
//# sourceMappingURL=Stytch.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"Stytch.js","sourceRoot":"","sources":["../src/Stytch.tsx"],"names":[],"mappings":"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"}
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
export {};
|
|
@@ -0,0 +1,130 @@
|
|
|
1
|
+
"use strict";
|
|
2
|
+
var __awaiter = (this && this.__awaiter) || function (thisArg, _arguments, P, generator) {
|
|
3
|
+
function adopt(value) { return value instanceof P ? value : new P(function (resolve) { resolve(value); }); }
|
|
4
|
+
return new (P || (P = Promise))(function (resolve, reject) {
|
|
5
|
+
function fulfilled(value) { try { step(generator.next(value)); } catch (e) { reject(e); } }
|
|
6
|
+
function rejected(value) { try { step(generator["throw"](value)); } catch (e) { reject(e); } }
|
|
7
|
+
function step(result) { result.done ? resolve(result.value) : adopt(result.value).then(fulfilled, rejected); }
|
|
8
|
+
step((generator = generator.apply(thisArg, _arguments || [])).next());
|
|
9
|
+
});
|
|
10
|
+
};
|
|
11
|
+
var __rest = (this && this.__rest) || function (s, e) {
|
|
12
|
+
var t = {};
|
|
13
|
+
for (var p in s) if (Object.prototype.hasOwnProperty.call(s, p) && e.indexOf(p) < 0)
|
|
14
|
+
t[p] = s[p];
|
|
15
|
+
if (s != null && typeof Object.getOwnPropertySymbols === "function")
|
|
16
|
+
for (var i = 0, p = Object.getOwnPropertySymbols(s); i < p.length; i++) {
|
|
17
|
+
if (e.indexOf(p[i]) < 0 && Object.prototype.propertyIsEnumerable.call(s, p[i]))
|
|
18
|
+
t[p[i]] = s[p[i]];
|
|
19
|
+
}
|
|
20
|
+
return t;
|
|
21
|
+
};
|
|
22
|
+
var __importDefault = (this && this.__importDefault) || function (mod) {
|
|
23
|
+
return (mod && mod.__esModule) ? mod : { "default": mod };
|
|
24
|
+
};
|
|
25
|
+
Object.defineProperty(exports, "__esModule", { value: true });
|
|
26
|
+
const react_1 = __importDefault(require("react"));
|
|
27
|
+
const vanilla_js_1 = require("@stytch/vanilla-js");
|
|
28
|
+
const react_2 = require("@testing-library/react");
|
|
29
|
+
const Stytch_1 = require("./Stytch");
|
|
30
|
+
const StytchContext_1 = require("./StytchContext");
|
|
31
|
+
const errors_1 = require("./utils/errors");
|
|
32
|
+
const mockStytchClient = {
|
|
33
|
+
user: { getSync: () => null, onChange: () => () => null },
|
|
34
|
+
session: { getSync: () => null, onChange: () => () => null },
|
|
35
|
+
mountLogin: jest.fn(),
|
|
36
|
+
// eslint-disable-next-line @typescript-eslint/no-explicit-any
|
|
37
|
+
};
|
|
38
|
+
beforeEach(() => {
|
|
39
|
+
jest.resetAllMocks();
|
|
40
|
+
});
|
|
41
|
+
describe('StytchLogin', () => {
|
|
42
|
+
const stytchUIConfig = {
|
|
43
|
+
emailMagicLinksOptions: {
|
|
44
|
+
createUserAsPending: true,
|
|
45
|
+
loginExpirationMinutes: 30,
|
|
46
|
+
loginRedirectURL: 'https://example.com/authenticate',
|
|
47
|
+
signupExpirationMinutes: 30,
|
|
48
|
+
signupRedirectURL: 'https://example.com/authenticate',
|
|
49
|
+
},
|
|
50
|
+
oauthOptions: {
|
|
51
|
+
providers: [{ type: vanilla_js_1.OAuthProviders.Google }, { type: vanilla_js_1.OAuthProviders.Microsoft }, { type: vanilla_js_1.OAuthProviders.Apple }],
|
|
52
|
+
},
|
|
53
|
+
products: [vanilla_js_1.Products.emailMagicLinks, vanilla_js_1.Products.oauth],
|
|
54
|
+
};
|
|
55
|
+
const stytchStyleConfig = {
|
|
56
|
+
fontFamily: '"Helvetica New", Helvetica, sans-serif',
|
|
57
|
+
};
|
|
58
|
+
it('expect error when not inside a StytchProvider', () => __awaiter(void 0, void 0, void 0, function* () {
|
|
59
|
+
expect(() => (0, react_2.render)(react_1.default.createElement(Stytch_1.StytchLogin, { config: stytchUIConfig, styles: stytchStyleConfig }))).toThrow((0, errors_1.noProviderError)('<StytchLogin />'));
|
|
60
|
+
}));
|
|
61
|
+
it('expect error when given a headless client', () => __awaiter(void 0, void 0, void 0, function* () {
|
|
62
|
+
// eslint-disable-next-line @typescript-eslint/no-unused-vars
|
|
63
|
+
const { mountLogin } = mockStytchClient, mockStytchHeadlessClient = __rest(mockStytchClient, ["mountLogin"]);
|
|
64
|
+
expect(() => (0, react_2.render)(react_1.default.createElement(StytchContext_1.StytchProvider, { stytch: mockStytchHeadlessClient },
|
|
65
|
+
react_1.default.createElement(Stytch_1.StytchLogin, { config: stytchUIConfig, styles: stytchStyleConfig })))).toThrow(errors_1.noHeadlessClientError);
|
|
66
|
+
}));
|
|
67
|
+
it('Creates a div and invokes stytchClient#mountLogin', () => __awaiter(void 0, void 0, void 0, function* () {
|
|
68
|
+
jest.spyOn(Math, 'random').mockReturnValueOnce(0.123456);
|
|
69
|
+
const { asFragment } = (0, react_2.render)(react_1.default.createElement(StytchContext_1.StytchProvider, { stytch: mockStytchClient },
|
|
70
|
+
react_1.default.createElement(Stytch_1.StytchLogin, { config: stytchUIConfig, styles: stytchStyleConfig })));
|
|
71
|
+
expect(mockStytchClient.mountLogin).toHaveBeenCalledWith({
|
|
72
|
+
elementId: '#stytch-magic-link-123456',
|
|
73
|
+
config: stytchUIConfig,
|
|
74
|
+
styles: stytchStyleConfig,
|
|
75
|
+
});
|
|
76
|
+
expect(asFragment()).toMatchInlineSnapshot(`
|
|
77
|
+
<DocumentFragment>
|
|
78
|
+
<div
|
|
79
|
+
id="stytch-magic-link-123456"
|
|
80
|
+
/>
|
|
81
|
+
</DocumentFragment>
|
|
82
|
+
`);
|
|
83
|
+
}));
|
|
84
|
+
it('Invokes stytchClient#mountLogin again when properties change', () => __awaiter(void 0, void 0, void 0, function* () {
|
|
85
|
+
jest.spyOn(Math, 'random').mockReturnValueOnce(0.123456);
|
|
86
|
+
const { rerender } = (0, react_2.render)(react_1.default.createElement(StytchContext_1.StytchProvider, { stytch: mockStytchClient },
|
|
87
|
+
react_1.default.createElement(Stytch_1.StytchLogin, { config: stytchUIConfig, styles: stytchStyleConfig })));
|
|
88
|
+
expect(mockStytchClient.mountLogin).toHaveBeenCalledWith({
|
|
89
|
+
elementId: '#stytch-magic-link-123456',
|
|
90
|
+
config: stytchUIConfig,
|
|
91
|
+
styles: stytchStyleConfig,
|
|
92
|
+
});
|
|
93
|
+
const newStyleConfig = Object.assign(Object.assign({}, stytchStyleConfig), { width: '5000px' });
|
|
94
|
+
rerender(react_1.default.createElement(StytchContext_1.StytchProvider, { stytch: mockStytchClient },
|
|
95
|
+
react_1.default.createElement(Stytch_1.StytchLogin, { config: stytchUIConfig, styles: newStyleConfig })));
|
|
96
|
+
expect(mockStytchClient.mountLogin).toHaveBeenCalledWith({
|
|
97
|
+
elementId: '#stytch-magic-link-123456',
|
|
98
|
+
config: stytchUIConfig,
|
|
99
|
+
styles: newStyleConfig,
|
|
100
|
+
});
|
|
101
|
+
rerender(react_1.default.createElement(StytchContext_1.StytchProvider, { stytch: mockStytchClient },
|
|
102
|
+
react_1.default.createElement(Stytch_1.StytchLogin, { config: stytchUIConfig, styles: newStyleConfig })));
|
|
103
|
+
// third rerender should not have done anything
|
|
104
|
+
expect(mockStytchClient.mountLogin).toHaveBeenCalledTimes(2);
|
|
105
|
+
}));
|
|
106
|
+
it('Creates two unique divs when invoked twice on the same page', () => __awaiter(void 0, void 0, void 0, function* () {
|
|
107
|
+
jest.spyOn(Math, 'random').mockReturnValueOnce(0.123456).mockReturnValueOnce(0.789012);
|
|
108
|
+
const { asFragment } = (0, react_2.render)(react_1.default.createElement(StytchContext_1.StytchProvider, { stytch: mockStytchClient },
|
|
109
|
+
react_1.default.createElement(Stytch_1.StytchLogin, { config: stytchUIConfig, styles: stytchStyleConfig }),
|
|
110
|
+
react_1.default.createElement(Stytch_1.StytchLogin, { config: stytchUIConfig, styles: stytchStyleConfig })));
|
|
111
|
+
expect(mockStytchClient.mountLogin).toHaveBeenCalledTimes(2);
|
|
112
|
+
expect(mockStytchClient.mountLogin).toHaveBeenCalledWith(expect.objectContaining({
|
|
113
|
+
elementId: '#stytch-magic-link-123456',
|
|
114
|
+
}));
|
|
115
|
+
expect(mockStytchClient.mountLogin).toHaveBeenCalledWith(expect.objectContaining({
|
|
116
|
+
elementId: '#stytch-magic-link-789012',
|
|
117
|
+
}));
|
|
118
|
+
expect(asFragment()).toMatchInlineSnapshot(`
|
|
119
|
+
<DocumentFragment>
|
|
120
|
+
<div
|
|
121
|
+
id="stytch-magic-link-123456"
|
|
122
|
+
/>
|
|
123
|
+
<div
|
|
124
|
+
id="stytch-magic-link-789012"
|
|
125
|
+
/>
|
|
126
|
+
</DocumentFragment>
|
|
127
|
+
`);
|
|
128
|
+
}));
|
|
129
|
+
});
|
|
130
|
+
//# sourceMappingURL=Stytch.spec.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"Stytch.spec.js","sourceRoot":"","sources":["../src/Stytch.spec.tsx"],"names":[],"mappings":"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"}
|