@frontegg/nextjs 4.0.17 → 5.0.1-alpha.2295828351

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/package.json CHANGED
@@ -1,19 +1,19 @@
1
1
  {
2
2
  "name": "@frontegg/nextjs",
3
- "libName": "FronteggNextJs",
4
- "version": "4.0.17",
5
- "author": "Frontegg LTD",
6
- "types": "index.d.ts",
3
+ "version": "5.0.1-alpha.2295828351",
7
4
  "dependencies": {
8
- "@frontegg/admin-portal": "5.47.0",
9
- "@frontegg/react-hooks": "5.47.0"
5
+ "@frontegg/admin-portal": "5.48.0",
6
+ "@frontegg/react-hooks": "5.48.0",
7
+ "jose": "^4.8.0",
8
+ "iron-session": "^6.1.2",
9
+ "http-proxy": "^1.18.1",
10
+ "cookie": "^0.5.0"
10
11
  },
12
+ "main": "./index.cjs.js",
13
+ "module": "./index.esm.js",
14
+ "typings": "./index.d.ts",
11
15
  "peerDependencies": {
12
- "next": ">10.0.0",
13
- "react": ">16.9.0",
14
- "react-dom": ">16.9.0"
15
- },
16
- "main": "index.js",
17
- "module": "index.esm.js",
18
- "es2015": "index.es.js"
16
+ "react": "18.0.0",
17
+ "next": "12.1.5"
18
+ }
19
19
  }
package/session.d.ts ADDED
@@ -0,0 +1,11 @@
1
+ /// <reference types="node" />
2
+ import { IncomingMessage } from 'http';
3
+ import { FronteggNextJSSession } from './types';
4
+ import { ParsedUrlQuery } from 'querystring';
5
+ import { GetServerSidePropsContext, GetServerSidePropsResult, PreviewData } from 'next';
6
+ export declare function getSession(req: IncomingMessage): Promise<FronteggNextJSSession | undefined>;
7
+ export declare function withSSRSession<P extends {
8
+ [key: string]: any;
9
+ } = {
10
+ [key: string]: any;
11
+ }, Q extends ParsedUrlQuery = ParsedUrlQuery, D extends PreviewData = PreviewData>(handler: (context: GetServerSidePropsContext<Q>, session: FronteggNextJSSession) => GetServerSidePropsResult<P> | Promise<GetServerSidePropsResult<P>>): (context: GetServerSidePropsContext<Q>) => Promise<GetServerSidePropsResult<P>>;
package/types.d.ts ADDED
@@ -0,0 +1,42 @@
1
+ export interface AccountEnvironment {
2
+ id: string;
3
+ createdAt: string;
4
+ environment: 'production' | 'development';
5
+ }
6
+ export interface CustomClaims {
7
+ accountEnvironments: AccountEnvironment[];
8
+ }
9
+ export interface FronteggNextJSSession {
10
+ accessToken: string;
11
+ user: {
12
+ sub: string;
13
+ name: string;
14
+ email: string;
15
+ email_verified: boolean;
16
+ metadata: any;
17
+ roles: string[];
18
+ permissions: string[];
19
+ tenantId: string;
20
+ tenantIds: string[];
21
+ profilePictureUrl: string;
22
+ type: string;
23
+ customClaims: CustomClaims;
24
+ iat: number;
25
+ exp: number;
26
+ aud: string;
27
+ iss: string;
28
+ };
29
+ }
30
+ declare module 'iron-session' {
31
+ interface IronSessionData {
32
+ accessToken: FronteggNextJSSession['accessToken'];
33
+ user: FronteggNextJSSession['user'];
34
+ }
35
+ }
36
+ declare global {
37
+ interface ProcessEnv {
38
+ FRONTEGG_BASE_URL: string;
39
+ PORT?: string;
40
+ PWD: string;
41
+ }
42
+ }
@@ -0,0 +1,9 @@
1
+ import type { AppInitialProps, AppType } from 'next/dist/shared/lib/utils';
2
+ import { AppContextType, AppPropsType, NextComponentType } from 'next/dist/shared/lib/utils';
3
+ import { FronteggNextJSSession } from './types';
4
+ import { FronteggAppOptions } from '@frontegg/types';
5
+ export declare const withFronteggApp: (app: AppType, options?: (Omit<FronteggAppOptions, "contextOptions"> & {
6
+ contextOptions?: import("@frontegg/types/ContextOptions").ContextOptions | undefined;
7
+ }) | undefined) => NextComponentType<AppContextType & {
8
+ session: FronteggNextJSSession | null;
9
+ }, AppInitialProps, AppPropsType>;
package/index.js DELETED
@@ -1,126 +0,0 @@
1
- 'use strict';
2
-
3
- Object.defineProperty(exports, '__esModule', { value: true });
4
-
5
- function _interopDefault (ex) { return (ex && (typeof ex === 'object') && 'default' in ex) ? ex['default'] : ex; }
6
-
7
- var tslib = require('tslib');
8
- var React = require('react');
9
- var React__default = _interopDefault(React);
10
- var adminPortal = require('@frontegg/admin-portal');
11
- var reactHooks = require('@frontegg/react-hooks');
12
- var restApi = require('@frontegg/rest-api');
13
- var router = require('next/router');
14
- var types = require('@frontegg/types');
15
-
16
- var Connector = function (_a) {
17
- var _b;
18
- var router = _a.router, appName = _a.appName, props = tslib.__rest(_a, ["router", "appName"]);
19
- var isSSR = typeof window === 'undefined';
20
- // v6 or v5
21
- var baseName = (_b = props.basename) !== null && _b !== void 0 ? _b : router.basePath;
22
- var onRedirectTo = React.useCallback(function (_path, opts) {
23
- var path = _path;
24
- if (path.startsWith(baseName)) {
25
- path = path.substring(baseName.length);
26
- }
27
- if (opts === null || opts === void 0 ? void 0 : opts.preserveQueryParams) {
28
- path = "" + path + window.location.search;
29
- }
30
- if ((opts === null || opts === void 0 ? void 0 : opts.refresh) && !isSSR) {
31
- // @ts-ignore
32
- window.Cypress ? router.push(path) : (window.location.href = path);
33
- }
34
- else {
35
- (opts === null || opts === void 0 ? void 0 : opts.replace) ? router.replace(path) : router.push(path);
36
- }
37
- }, []);
38
- var app = React.useMemo(function () {
39
- var _a;
40
- try {
41
- return adminPortal.AppHolder.getInstance(appName !== null && appName !== void 0 ? appName : 'default');
42
- }
43
- catch (e) {
44
- return adminPortal.initialize(tslib.__assign(tslib.__assign({}, props), { basename: (_a = props.basename) !== null && _a !== void 0 ? _a : baseName, contextOptions: tslib.__assign({ requestCredentials: 'include' }, props.contextOptions), onRedirectTo: onRedirectTo }), appName !== null && appName !== void 0 ? appName : 'default');
45
- }
46
- }, [onRedirectTo]);
47
- restApi.ContextHolder.setOnRedirectTo(onRedirectTo);
48
- return React__default.createElement(reactHooks.FronteggStoreProvider, tslib.__assign({}, tslib.__assign(tslib.__assign({}, props), { app: app })), props.children);
49
- };
50
- var FronteggProvider = function (props) {
51
- var router$1 = router.useRouter();
52
- return (React__default.createElement(Connector, tslib.__assign({}, props, { router: router$1 }), props.children));
53
- };
54
-
55
- var AuthorizedContent = function (props) {
56
- var _a, _b;
57
- var isAuthorized = true; // Initially
58
- var user = reactHooks.useAuthUserOrNull();
59
- if (!(user === null || user === void 0 ? void 0 : user.superUser)) {
60
- if (props.requiredPermissions) {
61
- if (!(user === null || user === void 0 ? void 0 : user.permissions) || (user === null || user === void 0 ? void 0 : user.permissions.length) === 0) {
62
- isAuthorized = false;
63
- }
64
- var _loop_1 = function (permission) {
65
- if (!((_a = user === null || user === void 0 ? void 0 : user.permissions) === null || _a === void 0 ? void 0 : _a.find(function (_a) {
66
- var key = _a.key;
67
- return key === permission;
68
- }))) {
69
- isAuthorized = false;
70
- }
71
- };
72
- for (var _i = 0, _c = props.requiredPermissions; _i < _c.length; _i++) {
73
- var permission = _c[_i];
74
- _loop_1(permission);
75
- }
76
- }
77
- if (props.requiredRoles) {
78
- if (!(user === null || user === void 0 ? void 0 : user.roles) || (user === null || user === void 0 ? void 0 : user.roles.length) === 0) {
79
- isAuthorized = false;
80
- }
81
- var _loop_2 = function (role) {
82
- if (!((_b = user === null || user === void 0 ? void 0 : user.roles) === null || _b === void 0 ? void 0 : _b.find(function (_a) {
83
- var key = _a.key;
84
- return key === role;
85
- }))) {
86
- isAuthorized = false;
87
- }
88
- };
89
- for (var _d = 0, _e = props.requiredRoles; _d < _e.length; _d++) {
90
- var role = _e[_d];
91
- _loop_2(role);
92
- }
93
- }
94
- }
95
- if (typeof props.render === 'function') {
96
- return React__default.createElement(React__default.Fragment, null, props.render(isAuthorized));
97
- }
98
- return isAuthorized ? React__default.createElement(React__default.Fragment, null, props.children) : null;
99
- };
100
-
101
- Object.keys(reactHooks).forEach(function (k) {
102
- if (k !== 'default') Object.defineProperty(exports, k, {
103
- enumerable: true,
104
- get: function () {
105
- return reactHooks[k];
106
- }
107
- });
108
- });
109
- Object.keys(types).forEach(function (k) {
110
- if (k !== 'default') Object.defineProperty(exports, k, {
111
- enumerable: true,
112
- get: function () {
113
- return types[k];
114
- }
115
- });
116
- });
117
- Object.defineProperty(exports, 'AdminPortal', {
118
- enumerable: true,
119
- get: function () {
120
- return adminPortal.AdminPortal;
121
- }
122
- });
123
- exports.AuthorizedContent = AuthorizedContent;
124
- exports.Connector = Connector;
125
- exports.FronteggProvider = FronteggProvider;
126
- //# sourceMappingURL=index.js.map
package/index.js.map DELETED
@@ -1 +0,0 @@
1
- {"version":3,"file":"index.js","sources":["../src/FronteggProvider.tsx","../src/AuthorizedContent.tsx"],"sourcesContent":["import React, { FC, ReactNode, useCallback, useMemo } from 'react';\nimport { initialize, AppHolder } from '@frontegg/admin-portal';\nimport { FronteggAppOptions } from '@frontegg/types';\nimport { FronteggStoreProvider } from '@frontegg/react-hooks';\nimport { ContextHolder, RedirectOptions } from '@frontegg/rest-api';\nimport { NextRouter, useRouter } from 'next/router';\n\nexport type FronteggProviderProps = FronteggAppOptions & {\n children?: ReactNode;\n};\n\ntype ConnectorProps = FronteggAppOptions & {\n router: NextRouter;\n appName?: string;\n children?: ReactNode;\n};\n\nexport const Connector: FC<ConnectorProps> = ({ router, appName, ...props }) => {\n const isSSR = typeof window === 'undefined';\n\n // v6 or v5\n const baseName = props.basename ?? router.basePath;\n\n const onRedirectTo = useCallback((_path: string, opts?: RedirectOptions) => {\n let path = _path;\n if (path.startsWith(baseName)) {\n path = path.substring(baseName.length);\n }\n if (opts?.preserveQueryParams) {\n path = `${path}${window.location.search}`;\n }\n if (opts?.refresh && !isSSR) {\n // @ts-ignore\n window.Cypress ? router.push(path) : (window.location.href = path);\n } else {\n opts?.replace ? router.replace(path) : router.push(path);\n }\n }, []);\n\n const app = useMemo(() => {\n try {\n return AppHolder.getInstance(appName ?? 'default');\n } catch (e) {\n return initialize(\n {\n ...props,\n basename: props.basename ?? baseName,\n contextOptions: {\n requestCredentials: 'include',\n ...props.contextOptions,\n },\n onRedirectTo,\n },\n appName ?? 'default'\n );\n }\n }, [onRedirectTo]);\n ContextHolder.setOnRedirectTo(onRedirectTo);\n\n return <FronteggStoreProvider {...({ ...props, app } as any)}>{props.children}</FronteggStoreProvider>;\n};\n\nexport const FronteggProvider: FC<FronteggProviderProps> = (props) => {\n const router = useRouter();\n\n return (\n <Connector {...props} router={router}>\n {props.children}\n </Connector>\n );\n};\n","import React, { FC, ReactNode } from 'react';\nimport { useAuthUserOrNull } from '@frontegg/react-hooks';\n\nexport interface AuthorizationProps {\n requiredRoles?: string[];\n requiredPermissions?: string[];\n render?: (isAuthorized: boolean) => React.ReactNode | null;\n children?: ReactNode;\n}\n\nexport const AuthorizedContent: FC<AuthorizationProps> = (props) => {\n let isAuthorized = true; // Initially\n const user = useAuthUserOrNull();\n\n if (!user?.superUser) {\n if (props.requiredPermissions) {\n if (!user?.permissions || user?.permissions.length === 0) {\n isAuthorized = false;\n }\n\n for (const permission of props.requiredPermissions) {\n if (!user?.permissions?.find(({ key }) => key === permission)) {\n isAuthorized = false;\n }\n }\n }\n\n if (props.requiredRoles) {\n if (!user?.roles || user?.roles.length === 0) {\n isAuthorized = false;\n }\n\n for (const role of props.requiredRoles) {\n if (!user?.roles?.find(({ key }) => key === role)) {\n isAuthorized = false;\n }\n }\n }\n }\n\n if (typeof props.render === 'function') {\n return <>{props.render(isAuthorized)}</>;\n }\n\n return isAuthorized ? <>{props.children}</> : null;\n};\n"],"names":["useCallback","useMemo","AppHolder","initialize","ContextHolder","React","FronteggStoreProvider","__assign","router","useRouter","useAuthUserOrNull"],"mappings":"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"}