@frontegg/nextjs 6.7.8 → 6.7.9-alpha.3741489660

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.
Files changed (64) hide show
  1. package/CHANGELOG.md +4 -0
  2. package/FronteggBaseProvider-5529ded6.js +119 -0
  3. package/FronteggBaseProvider-5529ded6.js.map +1 -0
  4. package/FronteggClientProviderNext13-65bb4cd0.js +19 -0
  5. package/FronteggClientProviderNext13-65bb4cd0.js.map +1 -0
  6. package/FronteggConfig-7ae86562.js +123 -0
  7. package/FronteggConfig-7ae86562.js.map +1 -0
  8. package/FronteggProvider.d.ts +3 -12
  9. package/FronteggProviderNoSSR.d.ts +2 -4
  10. package/README.md +56 -4
  11. package/api-70f0e81e.js +58 -0
  12. package/api-70f0e81e.js.map +1 -0
  13. package/client/FronteggAppRouter.d.ts +10 -0
  14. package/client/FronteggClientProviderNext13.d.ts +3 -0
  15. package/client/index.d.ts +2 -0
  16. package/client/index.js +63 -0
  17. package/client/index.js.map +1 -0
  18. package/{FronteggConfig.d.ts → common/FronteggConfig.d.ts} +1 -1
  19. package/{api.d.ts → common/api.d.ts} +0 -0
  20. package/{AppContext.d.ts → common/client/AppContext.d.ts} +0 -0
  21. package/common/client/ExpireInListener.d.ts +1 -0
  22. package/common/client/FronteggBaseProvider.d.ts +3 -0
  23. package/common/client/createOrGetFronteggApp.d.ts +11 -0
  24. package/common/client/hooks/index.d.ts +1 -0
  25. package/common/client/hooks/useRequestAuthorizeSSR.d.ts +9 -0
  26. package/common/client/index.d.ts +4 -0
  27. package/{consts.d.ts → common/consts.d.ts} +0 -0
  28. package/common/getMeAndTenants.d.ts +2 -0
  29. package/{helpers.d.ts → common/helpers.d.ts} +7 -9
  30. package/common/index.d.ts +6 -0
  31. package/common/index.js +12 -0
  32. package/common/index.js.map +1 -0
  33. package/common/types.d.ts +74 -0
  34. package/common/utils/createGetSession.d.ts +7 -0
  35. package/common/utils/getCookieFromRequest.d.ts +2 -0
  36. package/common/utils/index.d.ts +3 -0
  37. package/common/utils/parseCookie.d.ts +1 -0
  38. package/consts-873fdf4e.js +9 -0
  39. package/consts-873fdf4e.js.map +1 -0
  40. package/createGetSession-81b1748e.js +50 -0
  41. package/createGetSession-81b1748e.js.map +1 -0
  42. package/edge/getSessionOnEdge.d.ts +2 -0
  43. package/edge/index.d.ts +1 -0
  44. package/edge/index.js +29 -0
  45. package/edge/index.js.map +1 -0
  46. package/getCookieFromRequest-624c37b5.js +28 -0
  47. package/getCookieFromRequest-624c37b5.js.map +1 -0
  48. package/helpers-dbf29bd5.js +189 -0
  49. package/helpers-dbf29bd5.js.map +1 -0
  50. package/index.d.ts +1 -2
  51. package/index.js +599 -0
  52. package/index.js.map +1 -0
  53. package/package.json +16 -10
  54. package/refreshToken.d.ts +3 -0
  55. package/server/FronteggProviderNext13.d.ts +3 -0
  56. package/server/getSessionNext13.d.ts +4 -0
  57. package/server/index.d.ts +2 -0
  58. package/server/index.js +87 -0
  59. package/server/index.js.map +1 -0
  60. package/session.d.ts +4 -8
  61. package/withFronteggApp.d.ts +10 -8
  62. package/index.cjs.js +0 -2747
  63. package/index.esm.js +0 -2691
  64. package/types.d.ts +0 -53
package/CHANGELOG.md CHANGED
@@ -1,5 +1,9 @@
1
1
  # Change Log
2
2
 
3
+ ## [6.7.9](https://github.com/frontegg/frontegg-nextjs/compare/v6.7.8...v6.7.9) (2022-12-20)
4
+
5
+
6
+
3
7
  ## [6.7.8](https://github.com/frontegg/frontegg-nextjs/compare/v6.7.7...v6.7.8) (2022-12-20)
4
8
 
5
9
  - Fixed mfa input on mobile
@@ -0,0 +1,119 @@
1
+ 'use client';
2
+ import { __assign, __rest } from 'tslib';
3
+ import { useAuthUserOrNull, useAuthActions, FronteggStoreProvider } from '@frontegg/react-hooks';
4
+ import { fronteggAuthApiRoutes, ContextHolder } from '@frontegg/rest-api';
5
+ import React, { createContext, useEffect, useRef, useCallback, useMemo } from 'react';
6
+ import { AppHolder, initialize } from '@frontegg/js';
7
+ import { createFronteggStore } from '@frontegg/redux-store';
8
+
9
+ var AppContext = createContext(null);
10
+
11
+ var createOrGetFronteggApp = function (_a) {
12
+ var _b, _c, _d, _e, _f, _g, _h, _j, _k;
13
+ var options = _a.options, onRedirectTo = _a.onRedirectTo, appName = _a.appName, user = _a.user, tenants = _a.tenants, storeHolder = _a.storeHolder;
14
+ var _l = (_b = options.session) !== null && _b !== void 0 ? _b : {}, accessToken = _l.accessToken, refreshToken = _l.refreshToken;
15
+ var contextOptions = __assign(__assign({ requestCredentials: 'include' }, options.contextOptions), { baseUrl: function (path) {
16
+ if (fronteggAuthApiRoutes.indexOf(path) !== -1 ||
17
+ path.endsWith('/postlogin') ||
18
+ path.endsWith('/prelogin') ||
19
+ path === '/oauth/token') {
20
+ return options.envAppUrl + "/api";
21
+ }
22
+ else {
23
+ return options.envBaseUrl;
24
+ }
25
+ }, clientId: options.envClientId });
26
+ var tenantsState = tenants
27
+ ? __assign({ tenantTree: null, subTenants: [], tenants: tenants, loading: false }, (_c = options.authOptions) === null || _c === void 0 ? void 0 : _c.tenantsState) : undefined;
28
+ var userData = user
29
+ ? __assign(__assign(__assign({}, user), { accessToken: accessToken !== null && accessToken !== void 0 ? accessToken : '', refreshToken: refreshToken !== null && refreshToken !== void 0 ? refreshToken : undefined }), (_d = options.authOptions) === null || _d === void 0 ? void 0 : _d.user) : null;
30
+ var authOptions = __assign(__assign({}, options.authOptions), { onRedirectTo: onRedirectTo, isLoading: false, isAuthenticated: !!options.session, hostedLoginBox: (_e = options.hostedLoginBox) !== null && _e !== void 0 ? _e : false, disableSilentRefresh: (_g = (_f = options.authOptions) === null || _f === void 0 ? void 0 : _f.disableSilentRefresh) !== null && _g !== void 0 ? _g : false, user: userData, tenantsState: tenantsState });
31
+ var sharedStore = createFronteggStore({ context: contextOptions }, storeHolder.current, options.previewMode, authOptions, {
32
+ auth: authOptions !== null && authOptions !== void 0 ? authOptions : {},
33
+ audits: (_h = options.auditsOptions) !== null && _h !== void 0 ? _h : {},
34
+ }, false, options.urlStrategy);
35
+ var createdApp;
36
+ try {
37
+ createdApp = AppHolder.getInstance(appName !== null && appName !== void 0 ? appName : 'default');
38
+ createdApp.store = sharedStore;
39
+ }
40
+ catch (e) {
41
+ createdApp = initialize(__assign(__assign({}, options), { store: sharedStore, hostedLoginBox: (_j = options.hostedLoginBox) !== null && _j !== void 0 ? _j : false, customLoginBox: (_k = options.customLoginBox) !== null && _k !== void 0 ? _k : false, basename: options.basename, authOptions: authOptions,
42
+ contextOptions: contextOptions,
43
+ onRedirectTo: onRedirectTo }), appName !== null && appName !== void 0 ? appName : 'default');
44
+ }
45
+ return createdApp;
46
+ };
47
+
48
+ var ExpireInListener = function () {
49
+ var user = useAuthUserOrNull();
50
+ var actions = useAuthActions();
51
+ useEffect(function () {
52
+ if (user && (user === null || user === void 0 ? void 0 : user.expiresIn) == null) {
53
+ actions.setUser(__assign(__assign({}, user), { expiresIn: Math.floor((user['exp'] * 1000 - Date.now()) / 1000) }));
54
+ }
55
+ }, [actions, user]);
56
+ // eslint-disable-next-line react/jsx-no-useless-fragment
57
+ return React.createElement(React.Fragment, null);
58
+ };
59
+
60
+ var useRequestAuthorizeSSR = function (_a) {
61
+ var app = _a.app, accessToken = _a.accessToken, user = _a.user, tenants = _a.tenants, refreshToken = _a.refreshToken;
62
+ useEffect(function () {
63
+ app === null || app === void 0 ? void 0 : app.store.dispatch({
64
+ type: 'auth/requestAuthorizeSSR',
65
+ payload: {
66
+ accessToken: accessToken,
67
+ user: user ? __assign(__assign({}, user), { refreshToken: refreshToken }) : null,
68
+ tenants: tenants,
69
+ },
70
+ });
71
+ }, [app]);
72
+ };
73
+
74
+ var Connector = function (_a) {
75
+ var _b, _c;
76
+ var router = _a.router, _d = _a.appName, appName = _d === void 0 ? 'default' : _d, user = _a.user, tenants = _a.tenants, props = __rest(_a, ["router", "appName", "user", "tenants"]);
77
+ var isSSR = typeof window === 'undefined';
78
+ var _e = (_b = props.session) !== null && _b !== void 0 ? _b : {}, accessToken = _e.accessToken, refreshToken = _e.refreshToken;
79
+ var baseName = (_c = props.basename) !== null && _c !== void 0 ? _c : '';
80
+ var storeHolder = useRef({});
81
+ var onRedirectTo = useCallback(function (_path, opts) {
82
+ var path = _path;
83
+ if (path.startsWith(baseName)) {
84
+ path = path.substring(baseName.length);
85
+ }
86
+ if (opts === null || opts === void 0 ? void 0 : opts.preserveQueryParams) {
87
+ path = "" + path + window.location.search;
88
+ }
89
+ if ((opts === null || opts === void 0 ? void 0 : opts.refresh) && !isSSR) {
90
+ // @ts-ignore
91
+ window.Cypress ? router.push(path) : (window.location.href = path);
92
+ }
93
+ else {
94
+ (opts === null || opts === void 0 ? void 0 : opts.replace) ? router.replace(path) : router.push(path);
95
+ }
96
+ }, []);
97
+ var app = useMemo(function () {
98
+ return createOrGetFronteggApp({
99
+ options: __assign(__assign({}, props), { basename: baseName }),
100
+ user: user,
101
+ tenants: tenants,
102
+ onRedirectTo: onRedirectTo,
103
+ appName: appName,
104
+ storeHolder: storeHolder,
105
+ });
106
+ }, [props]);
107
+ ContextHolder.setOnRedirectTo(onRedirectTo);
108
+ useRequestAuthorizeSSR({ app: app, accessToken: accessToken, user: user, tenants: tenants, refreshToken: refreshToken });
109
+ return (React.createElement(AppContext.Provider, { value: app },
110
+ React.createElement(FronteggStoreProvider, __assign({}, __assign(__assign({}, props), { app: app })), props.children)));
111
+ };
112
+ var FronteggBaseProvider = function (props) {
113
+ return (React.createElement(Connector, __assign({}, props, { framework: 'nextjs' }),
114
+ React.createElement(ExpireInListener, null),
115
+ props.children));
116
+ };
117
+
118
+ export { AppContext as A, ExpireInListener as E, FronteggBaseProvider as F };
119
+ //# sourceMappingURL=FronteggBaseProvider-5529ded6.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"FronteggBaseProvider-5529ded6.js","sources":[],"sourcesContent":[],"names":[],"mappings":""}
@@ -0,0 +1,19 @@
1
+ 'use client';
2
+ import { __rest, __assign } from 'tslib';
3
+ import { F as FronteggBaseProvider } from './FronteggBaseProvider-5529ded6.js';
4
+ import '@frontegg/js';
5
+ import '@frontegg/redux-store';
6
+ import '@frontegg/rest-api';
7
+ import React from 'react';
8
+ import '@frontegg/react-hooks';
9
+ import { useRouter } from 'next/navigation';
10
+
11
+ var FronteggClientProviderNext13 = function (_a) {
12
+ var children = _a.children, basename = _a.basename, props = __rest(_a, ["children", "basename"]);
13
+ var router = useRouter();
14
+ var basePath = process.env.__NEXT_ROUTER_BASEPATH || '';
15
+ return (React.createElement(FronteggBaseProvider, __assign({ router: router, basename: basename !== null && basename !== void 0 ? basename : basePath }, props), children));
16
+ };
17
+
18
+ export { FronteggClientProviderNext13 as F };
19
+ //# sourceMappingURL=FronteggClientProviderNext13-65bb4cd0.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"FronteggClientProviderNext13-65bb4cd0.js","sources":[],"sourcesContent":[],"names":[],"mappings":""}
@@ -0,0 +1,123 @@
1
+ import { __awaiter, __generator } from 'tslib';
2
+ import { importJWK } from 'jose';
3
+
4
+ function normalizeStringPasswordToMap(password) {
5
+ return typeof password === 'string' ? { 1: password } : password;
6
+ }
7
+ var FronteggConfig = /** @class */ (function () {
8
+ function FronteggConfig() {
9
+ var _a, _b, _c;
10
+ this.authRoutes = {};
11
+ this.fronteggAppOptions = {};
12
+ this._clientId = (_a = process.env['FRONTEGG_CLIENT_ID']) !== null && _a !== void 0 ? _a : '';
13
+ this._cookieName = (_b = process.env['FRONTEGG_COOKIE_NAME']) !== null && _b !== void 0 ? _b : "fe_next_session";
14
+ this._password = (_c = process.env['FRONTEGG_ENCRYPTION_PASSWORD']) !== null && _c !== void 0 ? _c : '';
15
+ this._passwordsAsMap = normalizeStringPasswordToMap(this._password);
16
+ }
17
+ Object.defineProperty(FronteggConfig.prototype, "cookieName", {
18
+ get: function () {
19
+ return this._cookieName + "-" + this._clientId.replace(/-/g, '');
20
+ },
21
+ enumerable: false,
22
+ configurable: true
23
+ });
24
+ Object.defineProperty(FronteggConfig.prototype, "password", {
25
+ get: function () {
26
+ return this._password;
27
+ },
28
+ enumerable: false,
29
+ configurable: true
30
+ });
31
+ Object.defineProperty(FronteggConfig.prototype, "clientId", {
32
+ get: function () {
33
+ return this._clientId;
34
+ },
35
+ enumerable: false,
36
+ configurable: true
37
+ });
38
+ Object.defineProperty(FronteggConfig.prototype, "baseUrlHost", {
39
+ get: function () {
40
+ var _a;
41
+ return new URL((_a = process.env['FRONTEGG_BASE_URL']) !== null && _a !== void 0 ? _a : '').hostname;
42
+ },
43
+ enumerable: false,
44
+ configurable: true
45
+ });
46
+ FronteggConfig.prototype.getEnvAppUrl = function () {
47
+ var url = undefined;
48
+ if (process.env['FRONTEGG_APP_URL']) {
49
+ url = process.env['FRONTEGG_APP_URL'];
50
+ }
51
+ else if (process.env['VERCEL'] && process.env['VERCEL_URL']) {
52
+ url = process.env['VERCEL_URL'];
53
+ }
54
+ if (url && !url.startsWith('http')) {
55
+ var protocol = url.startsWith('localhost') ? 'http://' : 'https://';
56
+ url = "" + protocol + url;
57
+ }
58
+ return url;
59
+ };
60
+ Object.defineProperty(FronteggConfig.prototype, "appUrl", {
61
+ get: function () {
62
+ var _a;
63
+ return (_a = this.getEnvAppUrl()) !== null && _a !== void 0 ? _a : 'http://localhost:3000';
64
+ },
65
+ enumerable: false,
66
+ configurable: true
67
+ });
68
+ Object.defineProperty(FronteggConfig.prototype, "appEnvConfig", {
69
+ get: function () {
70
+ return {
71
+ envAppUrl: this.getEnvAppUrl(),
72
+ envBaseUrl: process.env['FRONTEGG_BASE_URL'],
73
+ envClientId: process.env['FRONTEGG_CLIENT_ID'],
74
+ };
75
+ },
76
+ enumerable: false,
77
+ configurable: true
78
+ });
79
+ Object.defineProperty(FronteggConfig.prototype, "cookieDomain", {
80
+ get: function () {
81
+ var _a;
82
+ return new URL((_a = this.getEnvAppUrl()) !== null && _a !== void 0 ? _a : '').hostname.replace(/:(\d)+$/, '');
83
+ },
84
+ enumerable: false,
85
+ configurable: true
86
+ });
87
+ FronteggConfig.prototype.getJwtPublicKey = function () {
88
+ return __awaiter(this, void 0, void 0, function () {
89
+ var response, data, publicKey, _a;
90
+ return __generator(this, function (_b) {
91
+ switch (_b.label) {
92
+ case 0:
93
+ if (!!this._jwtPublicKey) return [3 /*break*/, 4];
94
+ return [4 /*yield*/, fetch(process.env['FRONTEGG_BASE_URL'] + "/.well-known/jwks.json")];
95
+ case 1:
96
+ response = _b.sent();
97
+ return [4 /*yield*/, response.json()];
98
+ case 2:
99
+ data = _b.sent();
100
+ publicKey = data.keys.find(function (key) { return key.kty === 'RSA'; });
101
+ _a = this;
102
+ return [4 /*yield*/, importJWK(publicKey)];
103
+ case 3:
104
+ _a._jwtPublicKey = _b.sent();
105
+ _b.label = 4;
106
+ case 4: return [2 /*return*/, this._jwtPublicKey];
107
+ }
108
+ });
109
+ });
110
+ };
111
+ Object.defineProperty(FronteggConfig.prototype, "passwordsAsMap", {
112
+ get: function () {
113
+ return this._passwordsAsMap;
114
+ },
115
+ enumerable: false,
116
+ configurable: true
117
+ });
118
+ return FronteggConfig;
119
+ }());
120
+ var FronteggConfig$1 = new FronteggConfig();
121
+
122
+ export { FronteggConfig$1 as F };
123
+ //# sourceMappingURL=FronteggConfig-7ae86562.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"FronteggConfig-7ae86562.js","sources":[],"sourcesContent":[],"names":[],"mappings":""}
@@ -1,12 +1,3 @@
1
- import { FC, ReactNode } from 'react';
2
- import { FronteggAppOptions } from '@frontegg/types';
3
- import { MeAndTenants, FronteggNextJSSession } from './types';
4
- export declare type FronteggProviderProps = Omit<FronteggAppOptions, 'contextOptions'> & MeAndTenants & {
5
- children?: ReactNode;
6
- session?: FronteggNextJSSession;
7
- envAppUrl: string;
8
- envBaseUrl: string;
9
- envClientId: string;
10
- contextOptions?: Omit<FronteggAppOptions['contextOptions'], 'baseUrl'>;
11
- };
12
- export declare const FronteggProvider: FC<FronteggProviderProps>;
1
+ import { FC } from 'react';
2
+ import { FronteggProviderProps } from './common';
3
+ export declare const FronteggProvider: FC<Omit<FronteggProviderProps, 'router'>>;
@@ -1,6 +1,4 @@
1
- import { FC, ReactNode } from 'react';
2
1
  import { FronteggAppOptions } from '@frontegg/types';
3
- export declare type FronteggProviderNoSSRProps = FronteggAppOptions & {
4
- children?: ReactNode;
5
- };
2
+ import { FC, PropsWithChildren } from 'react';
3
+ export declare type FronteggProviderNoSSRProps = PropsWithChildren<FronteggAppOptions>;
6
4
  export declare const FronteggProviderNoSSR: FC<FronteggProviderNoSSRProps>;
package/README.md CHANGED
@@ -228,6 +228,57 @@ export const getServerSideProps: GetServerSideProps = withSSRSession(
228
228
  );
229
229
  ```
230
230
 
231
+ ## Next.js 13
232
+ ### wrapping your application
233
+ ```ts
234
+ // app/layout.tsx
235
+ import { FronteggAppProvider } from '@frontegg/nextjs/server';
236
+
237
+ export default function RootLayout({ children }: { children: React.ReactNode }) {
238
+ return (
239
+ <FronteggAppProvider hostedLoginBox>
240
+ <html>
241
+ <head></head>
242
+ <body>{children}</body>
243
+ </html>
244
+ </FronteggAppProvider>
245
+ );
246
+ }
247
+ ```
248
+
249
+ ### routing
250
+ ```ts
251
+ // app/[...frontegg-router]/page.tsx
252
+ export { FronteggAppRouter as default } from '@frontegg/nextjs/client';
253
+ ```
254
+
255
+ ### server component
256
+ ```ts
257
+ // app/ServerComponent.tsx
258
+ import { getUserSession } from '@frontegg/nextjs/server';
259
+
260
+ export const ServerComponent = async () => {
261
+ const userSession = await getUserSession();
262
+ return (
263
+ <div>
264
+ user session server side: {JSON.stringify(userSession)}
265
+ </div>
266
+ );
267
+ };
268
+ ```
269
+
270
+ ### client component
271
+ ```ts
272
+ // app/ClientComponent.tsx
273
+ 'use client';
274
+ import { useAuthUserOrNull } from '@frontegg/nextjs';
275
+
276
+ export const ClientComponent = () => {
277
+ const user = useAuthUserOrNull();
278
+ return <div>user session client side: {JSON.stringify(user)}</div>;
279
+ };
280
+ ```
281
+
231
282
  ## Next.js middlewares usage
232
283
 
233
284
  To prevent access unauthenticated user to all routes, use [Next.js middlewares](https://nextjs.org/docs/advanced-features/middleware).
@@ -238,16 +289,17 @@ To prevent access unauthenticated user to all routes, use [Next.js middlewares](
238
289
  // /middleware.ts
239
290
  import { NextResponse } from "next/server";
240
291
  import type { NextRequest } from "next/server";
241
- import { getSession } from '@frontegg/nextjs';
292
+ import { getSession } from '@frontegg/nextjs/edge';
242
293
 
243
294
  export const middleware = async (request: NextRequest) => {
244
295
  const session = await getSession(request);
296
+ const isAuthRoute = [...your auth routes]
245
297
 
246
298
  console.log("middleware session", session);
247
-
248
- if(!session){
299
+
300
+ if(!session && isAuthRoute){
249
301
  // redirect unauthenticated user to /account/login page
250
- return NextResponse.redirect(new URL('/account/login', req.url))
302
+ return NextResponse.redirect(new URL('/account/login', request))
251
303
  }
252
304
 
253
305
  return NextResponse.next();
@@ -0,0 +1,58 @@
1
+ import { __awaiter, __generator } from 'tslib';
2
+ import { fronteggUsersUrl, fronteggTenantsUrl } from '@frontegg/rest-api';
3
+
4
+ var BASE_URL = process.env['FRONTEGG_BASE_URL'] + "/frontegg";
5
+ var Get = function (_a) {
6
+ var url = _a.url, _b = _a.credentials, credentials = _b === void 0 ? 'include' : _b, headers = _a.headers;
7
+ return fetch(url, { method: 'GET', credentials: credentials, headers: headers });
8
+ };
9
+ var extractHeaders = function (headers) { return ({
10
+ 'accept-encoding': headers['accept-encoding'],
11
+ 'accept-language': headers['accept-language'],
12
+ cookie: headers['cookie'],
13
+ accept: headers['accept'],
14
+ 'user-agent': headers['user-agent'],
15
+ // connection: headers['connection'],
16
+ 'cache-control': headers['cache-control'],
17
+ Authorization: headers['Authorization'],
18
+ }); };
19
+ var parseResponse = function (res) { return __awaiter(void 0, void 0, void 0, function () {
20
+ var resText;
21
+ return __generator(this, function (_a) {
22
+ switch (_a.label) {
23
+ case 0:
24
+ if (!res.ok) {
25
+ return [2 /*return*/, undefined];
26
+ }
27
+ return [4 /*yield*/, res.text()];
28
+ case 1:
29
+ resText = _a.sent();
30
+ return [2 /*return*/, JSON.parse(resText)];
31
+ }
32
+ });
33
+ }); };
34
+ var getUsers = function (headers) { return __awaiter(void 0, void 0, void 0, function () {
35
+ var res;
36
+ return __generator(this, function (_a) {
37
+ switch (_a.label) {
38
+ case 0: return [4 /*yield*/, Get({ url: "" + BASE_URL + fronteggUsersUrl, headers: extractHeaders(headers) })];
39
+ case 1:
40
+ res = _a.sent();
41
+ return [2 /*return*/, parseResponse(res)];
42
+ }
43
+ });
44
+ }); };
45
+ var getTenants = function (headers) { return __awaiter(void 0, void 0, void 0, function () {
46
+ var res;
47
+ return __generator(this, function (_a) {
48
+ switch (_a.label) {
49
+ case 0: return [4 /*yield*/, Get({ url: "" + BASE_URL + fronteggTenantsUrl, headers: extractHeaders(headers) })];
50
+ case 1:
51
+ res = _a.sent();
52
+ return [2 /*return*/, parseResponse(res)];
53
+ }
54
+ });
55
+ }); };
56
+
57
+ export { getTenants as a, getUsers as g };
58
+ //# sourceMappingURL=api-70f0e81e.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"api-70f0e81e.js","sources":[],"sourcesContent":[],"names":[],"mappings":""}
@@ -0,0 +1,10 @@
1
+ /// <reference types="node" />
2
+ import { ParsedUrlQuery } from 'querystring';
3
+ declare type FronteggRouterProps = {
4
+ params: ParsedUrlQuery & {
5
+ 'frontegg-router'?: string[];
6
+ };
7
+ searchParams: ParsedUrlQuery;
8
+ };
9
+ export declare function FronteggAppRouter({ params: { 'frontegg-router': pathArr }, searchParams }: FronteggRouterProps): string;
10
+ export {};
@@ -0,0 +1,3 @@
1
+ import { FronteggProviderProps } from '../common';
2
+ import { FC } from 'react';
3
+ export declare const FronteggClientProviderNext13: FC<Omit<FronteggProviderProps, 'router'>>;
@@ -0,0 +1,2 @@
1
+ export * from './FronteggAppRouter';
2
+ export * from './FronteggClientProviderNext13';
@@ -0,0 +1,63 @@
1
+ 'use client';
2
+ import { __assign, __spreadArrays } from 'tslib';
3
+ import { F as FronteggConfig } from '../FronteggConfig-7ae86562.js';
4
+ import '../api-70f0e81e.js';
5
+ import 'cookie';
6
+ import 'iron-session';
7
+ import 'jose';
8
+ import { useLoginWithRedirect, useLoginActions } from '@frontegg/react-hooks';
9
+ import '@frontegg/rest-api';
10
+ import { useContext, useEffect } from 'react';
11
+ import { A as AppContext } from '../FronteggBaseProvider-5529ded6.js';
12
+ import '@frontegg/js';
13
+ import { authInitialState } from '@frontegg/redux-store';
14
+ import { useRouter, notFound } from 'next/navigation';
15
+ export { F as FronteggClientProviderNext13 } from '../FronteggClientProviderNext13-65bb4cd0.js';
16
+
17
+ function FronteggAppRouter(_a) {
18
+ var _b = _a.params["frontegg-router"], pathArr = _b === void 0 ? [] : _b, searchParams = _a.searchParams;
19
+ var routesObj = __assign(__assign({}, authInitialState.routes), FronteggConfig.authRoutes);
20
+ var routesArr = Object.keys(routesObj).reduce(function (p, key) { return __spreadArrays(p, [routesObj[key]]); }, []);
21
+ var app = useContext(AppContext);
22
+ var replace = useRouter().replace;
23
+ var loginWithRedirect = useLoginWithRedirect();
24
+ var logout = useLoginActions().logout;
25
+ var pathname = "/" + pathArr.join('/');
26
+ if (!pathname || pathname.startsWith('/_next/data')) {
27
+ var query = searchParams[Object.keys(searchParams)[0]];
28
+ pathname = "/" + (Array.isArray(query) ? query.join('/') : query);
29
+ }
30
+ if (routesArr.indexOf(pathname) === -1) {
31
+ notFound();
32
+ }
33
+ if (FronteggConfig.fronteggAppOptions.hostedLoginBox &&
34
+ routesObj.loginUrl !== pathname &&
35
+ routesObj.logoutUrl !== pathname &&
36
+ routesObj.hostedLoginRedirectUrl !== pathname) {
37
+ notFound();
38
+ }
39
+ useEffect(function () {
40
+ if (!app) {
41
+ return;
42
+ }
43
+ if (app.options.hostedLoginBox) {
44
+ if (pathname === routesObj.loginUrl) {
45
+ if (searchParams.redirectUrl) {
46
+ localStorage.setItem('FRONTEGG_AFTER_AUTH_REDIRECT_URL', "" + window.location.origin + searchParams.redirectUrl);
47
+ }
48
+ loginWithRedirect();
49
+ }
50
+ else if (pathname === routesObj.logoutUrl) {
51
+ var _baseUrl = app.options.contextOptions.baseUrl;
52
+ var baseUrl_1 = typeof _baseUrl === 'string' ? _baseUrl : _baseUrl('');
53
+ logout(function () {
54
+ window.location.href = baseUrl_1 + "/oauth/logout?post_logout_redirect_uri=" + encodeURIComponent(window.location.origin);
55
+ });
56
+ }
57
+ }
58
+ }, [app, searchParams, loginWithRedirect, logout, replace]);
59
+ return '';
60
+ }
61
+
62
+ export { FronteggAppRouter };
63
+ //# sourceMappingURL=index.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"index.js","sources":[],"sourcesContent":[],"names":[],"mappings":""}
@@ -1,7 +1,7 @@
1
+ import { AppEnvConfig } from './types';
1
2
  import { KeyLike } from 'jose';
2
3
  import { AuthPageRoutes } from '@frontegg/redux-store';
3
4
  import { FronteggAppOptions } from '@frontegg/types';
4
- import { AppEnvConfig } from './types';
5
5
  export declare type PasswordsMap = {
6
6
  [id: string]: string;
7
7
  };
File without changes
@@ -0,0 +1 @@
1
+ export declare const ExpireInListener: () => JSX.Element;
@@ -0,0 +1,3 @@
1
+ import { FC } from 'react';
2
+ import { FronteggProviderProps } from '../types';
3
+ export declare const FronteggBaseProvider: FC<FronteggProviderProps>;
@@ -0,0 +1,11 @@
1
+ import { FronteggApp } from '@frontegg/js';
2
+ import { AuthState } from '@frontegg/redux-store';
3
+ import { FronteggProviderOptions, MeAndTenantsResponse } from '../types';
4
+ declare type CreateOrGetFronteggAppParams = {
5
+ options: FronteggProviderOptions;
6
+ onRedirectTo: AuthState['onRedirectTo'];
7
+ appName?: string;
8
+ storeHolder: any;
9
+ } & MeAndTenantsResponse;
10
+ export declare const createOrGetFronteggApp: ({ options, onRedirectTo, appName, user, tenants, storeHolder, }: CreateOrGetFronteggAppParams) => FronteggApp;
11
+ export {};
@@ -0,0 +1 @@
1
+ export * from './useRequestAuthorizeSSR';
@@ -0,0 +1,9 @@
1
+ import { FronteggApp } from '@frontegg/js';
2
+ import { MeAndTenantsResponse } from '../../types';
3
+ declare type useRequestAuthorizeSSR = {
4
+ app: FronteggApp;
5
+ accessToken?: string;
6
+ refreshToken?: string;
7
+ } & MeAndTenantsResponse;
8
+ export declare const useRequestAuthorizeSSR: ({ app, accessToken, user, tenants, refreshToken }: useRequestAuthorizeSSR) => void;
9
+ export {};
@@ -0,0 +1,4 @@
1
+ export * from './FronteggBaseProvider';
2
+ export { default as AppContext } from './AppContext';
3
+ export * from './createOrGetFronteggApp';
4
+ export * from './ExpireInListener';
File without changes
@@ -0,0 +1,2 @@
1
+ import { MeAndTenantsResponse } from './types';
2
+ export declare function getMeAndTenants(reqHeaders?: Record<string, string | string[] | null | undefined>, accessToken?: string): Promise<MeAndTenantsResponse>;
@@ -1,9 +1,9 @@
1
1
  /// <reference types="node" />
2
- import { ServerResponse } from 'http';
3
2
  import { CookieSerializeOptions } from 'cookie';
4
- import { NextPageContext } from 'next/dist/shared/lib/utils';
5
- import { FronteggNextJSSession, MeAndTenants } from './types';
6
- export declare function refreshToken(ctx: NextPageContext): Promise<FronteggNextJSSession | null>;
3
+ import { ServerResponse } from 'http';
4
+ import { RequestCookie } from 'next/dist/server/web/spec-extension/cookies';
5
+ import { FronteggUserTokens } from './types';
6
+ export declare function rewriteCookieProperty(header: string | string[], config: any, property: string): string | string[];
7
7
  declare type CreateCookieArguments = {
8
8
  cookieName?: string;
9
9
  session: string;
@@ -13,13 +13,11 @@ declare type CreateCookieArguments = {
13
13
  httpOnly?: CookieSerializeOptions['httpOnly'];
14
14
  path?: CookieSerializeOptions['path'];
15
15
  };
16
- export declare function createCookie({ cookieName, session, expires, isSecured, cookieDomain, httpOnly, path }: CreateCookieArguments): string[];
17
- export declare function parseCookie(cookieStr: string): string | undefined;
16
+ export declare function createCookie({ cookieName, session, expires, isSecured, cookieDomain, httpOnly, path, }: CreateCookieArguments): string[];
17
+ export declare function parseCookieFromArray(cookies: RequestCookie[]): string | undefined;
18
18
  export declare function addToCookies(newCookies: string[], res: ServerResponse): void;
19
19
  export declare function removeCookies(cookieName: string, isSecured: boolean, cookieDomain: string, res: ServerResponse): void;
20
- export declare function compress(input: string): Promise<string>;
21
- export declare function uncompress(input: string): Promise<string>;
22
20
  export declare function createSessionFromAccessToken(output: string): Promise<[string, any, string] | []>;
23
21
  export declare const modifySetCookieIfUnsecure: (setCookieValue: string[] | undefined, isSecured: boolean) => string[] | undefined;
24
- export declare function meAndTenants(ctx: NextPageContext, accessToken?: string): Promise<MeAndTenants>;
22
+ export declare function getTokensFromCookie(cookie?: string): Promise<FronteggUserTokens | undefined>;
25
23
  export {};
@@ -0,0 +1,6 @@
1
+ export { default as FronteggConfig } from './FronteggConfig';
2
+ export * from './types';
3
+ export * from './getMeAndTenants';
4
+ export * from './helpers';
5
+ export * from './utils';
6
+ export * from './consts';