@frontegg/nextjs 6.7.20 → 6.7.21-alpha.4441481917
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 +10 -0
- package/README.md +19 -37
- package/api/index.d.ts +19 -0
- package/api/index.js +78 -0
- package/api/index.js.map +1 -0
- package/api/package.json +6 -0
- package/api/urls.d.ts +33 -0
- package/api/urls.js +46 -0
- package/api/urls.js.map +1 -0
- package/api/utils.d.ts +46 -0
- package/api/utils.js +108 -0
- package/api/utils.js.map +1 -0
- package/app/ClientFronteggProvider.d.ts +3 -0
- package/app/ClientFronteggProvider.js +25 -0
- package/app/ClientFronteggProvider.js.map +1 -0
- package/app/FronteggAppProvider.d.ts +4 -0
- package/app/FronteggAppProvider.js +17 -0
- package/app/FronteggAppProvider.js.map +1 -0
- package/{client → app}/FronteggAppRouter.d.ts +11 -10
- package/app/FronteggAppRouter.js +31 -0
- package/app/FronteggAppRouter.js.map +1 -0
- package/app/helpers.d.ts +5 -0
- package/app/helpers.js +32 -0
- package/app/helpers.js.map +1 -0
- package/app/index.d.ts +4 -0
- package/app/index.js +4 -0
- package/app/index.js.map +1 -0
- package/app/package.json +6 -0
- package/common/{client/AppContext.d.ts → AppContext.d.ts} +4 -4
- package/common/AppContext.js +6 -0
- package/common/AppContext.js.map +1 -0
- package/{AuthorizedContent.d.ts → common/AuthorizedContent.d.ts} +9 -8
- package/common/AuthorizedContent.js +48 -0
- package/common/AuthorizedContent.js.map +1 -0
- package/common/{client/FronteggBaseProvider.d.ts → FronteggBaseProvider.d.ts} +3 -3
- package/common/FronteggBaseProvider.js +67 -0
- package/common/FronteggBaseProvider.js.map +1 -0
- package/common/FronteggRouterBase.d.ts +9 -0
- package/common/FronteggRouterBase.js +42 -0
- package/common/FronteggRouterBase.js.map +1 -0
- package/common/helpers.d.ts +3 -9
- package/common/helpers.js +24 -0
- package/common/helpers.js.map +1 -0
- package/common/index.d.ts +4 -6
- package/common/index.js +5 -10
- package/common/index.js.map +1 -1
- package/common/package.json +6 -0
- package/common/useRequestAuthorizeSSR.d.ts +5 -0
- package/common/useRequestAuthorizeSSR.js +24 -0
- package/common/useRequestAuthorizeSSR.js.map +1 -0
- package/config/constants.d.ts +57 -0
- package/config/constants.js +13 -0
- package/config/constants.js.map +1 -0
- package/config/helpers.d.ts +28 -0
- package/config/helpers.js +87 -0
- package/config/helpers.js.map +1 -0
- package/config/index.d.ts +24 -0
- package/config/index.js +82 -0
- package/config/index.js.map +1 -0
- package/config/package.json +6 -0
- package/config/types.d.ts +18 -0
- package/config/types.js +2 -0
- package/config/types.js.map +1 -0
- package/edge/getSessionOnEdge.d.ts +3 -2
- package/edge/getSessionOnEdge.js +8 -0
- package/edge/getSessionOnEdge.js.map +1 -0
- package/edge/index.d.ts +3 -2
- package/edge/index.js +4 -64
- package/edge/index.js.map +1 -1
- package/edge/package.json +6 -0
- package/edge/redirectToLogin.d.ts +2 -0
- package/edge/redirectToLogin.js +9 -0
- package/edge/redirectToLogin.js.map +1 -0
- package/edge/shouldBypassMiddleware.d.ts +21 -7
- package/edge/shouldBypassMiddleware.js +42 -0
- package/edge/shouldBypassMiddleware.js.map +1 -0
- package/index.d.ts +7 -11
- package/index.js +13 -1401
- package/index.js.map +1 -1
- package/middleware/FronteggApiMiddleware.d.ts +8 -0
- package/middleware/FronteggApiMiddleware.js +28 -0
- package/middleware/FronteggApiMiddleware.js.map +1 -0
- package/middleware/FronteggProxy.d.ts +4 -0
- package/middleware/FronteggProxy.js +24 -0
- package/middleware/FronteggProxy.js.map +1 -0
- package/middleware/ProxyRequestCallback.d.ts +13 -0
- package/middleware/ProxyRequestCallback.js +48 -0
- package/middleware/ProxyRequestCallback.js.map +1 -0
- package/middleware/ProxyResponseCallback.d.ts +13 -0
- package/middleware/ProxyResponseCallback.js +103 -0
- package/middleware/ProxyResponseCallback.js.map +1 -0
- package/middleware/constants.d.ts +8 -0
- package/middleware/constants.js +9 -0
- package/middleware/constants.js.map +1 -0
- package/{common/FronteggProxy.d.ts → middleware/helpers.d.ts} +13 -26
- package/middleware/helpers.js +35 -0
- package/middleware/helpers.js.map +1 -0
- package/middleware/index.d.ts +23 -0
- package/middleware/index.js +24 -0
- package/middleware/index.js.map +1 -0
- package/middleware/package.json +6 -0
- package/no-ssr/ExpireInListener.d.ts +2 -0
- package/no-ssr/ExpireInListener.js +22 -0
- package/no-ssr/ExpireInListener.js.map +1 -0
- package/{FronteggProviderNoSSR.d.ts → no-ssr/FronteggProviderNoSSR.d.ts} +4 -4
- package/no-ssr/FronteggProviderNoSSR.js +76 -0
- package/no-ssr/FronteggProviderNoSSR.js.map +1 -0
- package/no-ssr/index.d.ts +2 -0
- package/no-ssr/index.js +2 -0
- package/no-ssr/index.js.map +1 -0
- package/no-ssr/package.json +6 -0
- package/package.json +6 -7
- package/pages/FronteggPagesProvider/index.d.ts +4 -0
- package/pages/FronteggPagesProvider/index.js +24 -0
- package/pages/FronteggPagesProvider/index.js.map +1 -0
- package/pages/FronteggPagesProvider/package.json +6 -0
- package/{FronteggRouter.d.ts → pages/FronteggRouter/FronteggRouter.d.ts} +6 -5
- package/pages/FronteggRouter/FronteggRouter.js +38 -0
- package/pages/FronteggRouter/FronteggRouter.js.map +1 -0
- package/pages/FronteggRouter/index.d.ts +26 -0
- package/pages/FronteggRouter/index.js +27 -0
- package/pages/FronteggRouter/index.js.map +1 -0
- package/pages/FronteggRouter/package.json +6 -0
- package/{session.d.ts → pages/helpers.d.ts} +10 -10
- package/pages/helpers.js +31 -0
- package/pages/helpers.js.map +1 -0
- package/pages/index.d.ts +3 -0
- package/pages/index.js +4 -0
- package/pages/index.js.map +1 -0
- package/pages/package.json +6 -0
- package/pages/withFronteggApp/index.d.ts +2 -0
- package/pages/withFronteggApp/index.js +2 -0
- package/pages/withFronteggApp/index.js.map +1 -0
- package/pages/withFronteggApp/package.json +6 -0
- package/pages/withFronteggApp/types.d.ts +12 -0
- package/pages/withFronteggApp/types.js +2 -0
- package/pages/withFronteggApp/types.js.map +1 -0
- package/pages/withFronteggApp/withFronteggApp.d.ts +2 -0
- package/pages/withFronteggApp/withFronteggApp.js +62 -0
- package/pages/withFronteggApp/withFronteggApp.js.map +1 -0
- package/sdkVersion.d.ts +4 -4
- package/sdkVersion.js +4 -0
- package/sdkVersion.js.map +1 -0
- package/{common/types.d.ts → types/index.d.ts} +80 -74
- package/types/index.js +2 -0
- package/types/index.js.map +1 -0
- package/types/package.json +6 -0
- package/utils/common/constants.d.ts +12 -0
- package/utils/common/constants.js +14 -0
- package/utils/common/constants.js.map +1 -0
- package/utils/common/index.d.ts +15 -0
- package/utils/common/index.js +26 -0
- package/utils/common/index.js.map +1 -0
- package/utils/common/package.json +6 -0
- package/utils/cookies/constants.d.ts +7 -0
- package/utils/cookies/constants.js +8 -0
- package/utils/cookies/constants.js.map +1 -0
- package/utils/cookies/helpers.d.ts +25 -0
- package/utils/cookies/helpers.js +53 -0
- package/utils/cookies/helpers.js.map +1 -0
- package/utils/cookies/index.d.ts +45 -0
- package/utils/cookies/index.js +232 -0
- package/utils/cookies/index.js.map +1 -0
- package/utils/cookies/package.json +6 -0
- package/utils/cookies/serializer.d.ts +22 -0
- package/utils/cookies/serializer.js +154 -0
- package/utils/cookies/serializer.js.map +1 -0
- package/utils/cookies/types.d.ts +31 -0
- package/utils/cookies/types.js +2 -0
- package/utils/cookies/types.js.map +1 -0
- package/utils/createSession/index.d.ts +2 -0
- package/utils/createSession/index.js +44 -0
- package/utils/createSession/index.js.map +1 -0
- package/utils/createSession/package.json +6 -0
- package/utils/encryption/index.d.ts +3 -0
- package/utils/encryption/index.js +29 -0
- package/utils/encryption/index.js.map +1 -0
- package/utils/encryption/package.json +6 -0
- package/utils/encryption-edge/index.d.ts +3 -0
- package/utils/encryption-edge/index.js +29 -0
- package/utils/encryption-edge/index.js.map +1 -0
- package/utils/encryption-edge/package.json +6 -0
- package/utils/errors/FronteggEnvNotFound.d.ts +3 -0
- package/utils/errors/FronteggEnvNotFound.js +8 -0
- package/utils/errors/FronteggEnvNotFound.js.map +1 -0
- package/utils/errors/InvalidFronteggEnv.d.ts +3 -0
- package/utils/errors/InvalidFronteggEnv.js +8 -0
- package/utils/errors/InvalidFronteggEnv.js.map +1 -0
- package/utils/errors/index.d.ts +2 -0
- package/utils/errors/index.js +3 -0
- package/utils/errors/index.js.map +1 -0
- package/utils/errors/package.json +6 -0
- package/utils/fetchUserData/index.d.ts +7 -0
- package/utils/fetchUserData/index.js +49 -0
- package/utils/fetchUserData/index.js.map +1 -0
- package/utils/fetchUserData/package.json +6 -0
- package/utils/fronteggLogger/constants.d.ts +13 -0
- package/utils/fronteggLogger/constants.js +20 -0
- package/utils/fronteggLogger/constants.js.map +1 -0
- package/utils/fronteggLogger/index.d.ts +17 -0
- package/utils/fronteggLogger/index.js +61 -0
- package/utils/fronteggLogger/index.js.map +1 -0
- package/utils/fronteggLogger/package.json +6 -0
- package/{common/client/createOrGetFronteggApp.d.ts → utils/initializeFronteggApp/index.d.ts} +11 -11
- package/utils/initializeFronteggApp/index.js +100 -0
- package/utils/initializeFronteggApp/index.js.map +1 -0
- package/utils/initializeFronteggApp/package.json +6 -0
- package/utils/jwt/index.d.ts +22 -0
- package/utils/jwt/index.js +53 -0
- package/utils/jwt/index.js.map +1 -0
- package/utils/jwt/package.json +6 -0
- package/utils/refreshAccessToken/helpers.d.ts +16 -0
- package/utils/refreshAccessToken/helpers.js +69 -0
- package/utils/refreshAccessToken/helpers.js.map +1 -0
- package/utils/refreshAccessToken/index.d.ts +9 -0
- package/utils/refreshAccessToken/index.js +88 -0
- package/utils/refreshAccessToken/index.js.map +1 -0
- package/utils/refreshAccessToken/package.json +6 -0
- package/utils/routing/index.d.ts +5 -0
- package/utils/routing/index.js +23 -0
- package/utils/routing/index.js.map +1 -0
- package/utils/routing/package.json +6 -0
- package/utils/useOnRedirectTo/index.d.ts +5 -0
- package/utils/useOnRedirectTo/index.js +21 -0
- package/utils/useOnRedirectTo/index.js.map +1 -0
- package/utils/useOnRedirectTo/package.json +6 -0
- package/CookieManager-e50dc144.js +0 -322
- package/CookieManager-e50dc144.js.map +0 -1
- package/FronteggClientProviderNext13-b3c1e7a0.js +0 -158
- package/FronteggClientProviderNext13-b3c1e7a0.js.map +0 -1
- package/FronteggMiddleware.d.ts +0 -15
- package/FronteggProvider.d.ts +0 -3
- package/api-25516652.js +0 -58
- package/api-25516652.js.map +0 -1
- package/client/FronteggClientProviderNext13.d.ts +0 -3
- package/client/index.d.ts +0 -2
- package/client/index.js +0 -64
- package/client/index.js.map +0 -1
- package/common/CookieManager.d.ts +0 -41
- package/common/FronteggConfig.d.ts +0 -31
- package/common/api.d.ts +0 -3
- package/common/client/ExpireInListener.d.ts +0 -2
- package/common/client/hooks/index.d.ts +0 -1
- package/common/client/hooks/useRequestAuthorizeSSR.d.ts +0 -5
- package/common/client/index.d.ts +0 -4
- package/common/consts.d.ts +0 -6
- package/common/createGetSession.d.ts +0 -7
- package/common/utils.d.ts +0 -1
- package/createGetSession-2e1e4506.js +0 -50
- package/createGetSession-2e1e4506.js.map +0 -1
- package/helpers-dac37998.js +0 -88
- package/helpers-dac37998.js.map +0 -1
- package/refreshToken.d.ts +0 -3
- package/server/FronteggProviderNext13.d.ts +0 -3
- package/server/getSessionNext13.d.ts +0 -4
- package/server/index.d.ts +0 -2
- package/server/index.js +0 -84
- package/server/index.js.map +0 -1
- package/withFronteggApp.d.ts +0 -11
package/index.js.map
CHANGED
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"index.js","
|
|
1
|
+
{"version":3,"file":"index.js","names":["AdminPortal","AppHolder","HostedLogin"],"sources":["../../../packages/nextjs/src/index.ts"],"sourcesContent":["export * from './common';\nexport * from './config';\nexport * from './middleware';\nexport * from './types';\n\nexport { AdminPortal, AppHolder, HostedLogin } from '@frontegg/js';\nexport * from '@frontegg/react-hooks';\nexport * from '@frontegg/types';\n"],"mappings":"AAAA,cAAc,UAAU;AACxB,cAAc,UAAU;AACxB,cAAc,cAAc;AAC5B,cAAc,SAAS;AAEvB,SAASA,WAAW,EAAEC,SAAS,EAAEC,WAAW,QAAQ,cAAc;AAClE,cAAc,uBAAuB;AACrC,cAAc,iBAAiB"}
|
|
@@ -0,0 +1,8 @@
|
|
|
1
|
+
import type { NextApiRequest, NextApiResponse } from 'next';
|
|
2
|
+
/**
|
|
3
|
+
* Next.js HTTP Proxy Middleware
|
|
4
|
+
* @see https://nextjs.org/docs/api-routes/api-middlewares
|
|
5
|
+
* @param {NextApiRequest} req - NextJS api request passed from api routing
|
|
6
|
+
* @param {NextApiResponse} res - NextJS api response passed from api routing
|
|
7
|
+
*/
|
|
8
|
+
export declare function FronteggApiMiddleware(req: NextApiRequest, res: NextApiResponse): Promise<void>;
|
|
@@ -0,0 +1,28 @@
|
|
|
1
|
+
import { FronteggProxy } from './FronteggProxy';
|
|
2
|
+
import { fronteggSSOPathRewrite, fronteggPathRewrite } from './constants';
|
|
3
|
+
import { rewritePath } from './helpers';
|
|
4
|
+
const middlewarePromise = (req, res) => new Promise(resolve => {
|
|
5
|
+
var _req$url;
|
|
6
|
+
const fronteggUrlPath = rewritePath((_req$url = req.url) != null ? _req$url : '/', fronteggPathRewrite);
|
|
7
|
+
const rewriteUrl = rewritePath(fronteggUrlPath != null ? fronteggUrlPath : '/', fronteggSSOPathRewrite);
|
|
8
|
+
req.url = rewriteUrl;
|
|
9
|
+
res.on('close', () => resolve());
|
|
10
|
+
const options = {
|
|
11
|
+
target: process.env['FRONTEGG_BASE_URL']
|
|
12
|
+
};
|
|
13
|
+
if (process.env['FRONTEGG_TEST_URL'] && req.url == '/frontegg/middleware-test') {
|
|
14
|
+
options.target = process.env['FRONTEGG_TEST_URL'];
|
|
15
|
+
}
|
|
16
|
+
FronteggProxy.web(req, res, options);
|
|
17
|
+
});
|
|
18
|
+
|
|
19
|
+
/**
|
|
20
|
+
* Next.js HTTP Proxy Middleware
|
|
21
|
+
* @see https://nextjs.org/docs/api-routes/api-middlewares
|
|
22
|
+
* @param {NextApiRequest} req - NextJS api request passed from api routing
|
|
23
|
+
* @param {NextApiResponse} res - NextJS api response passed from api routing
|
|
24
|
+
*/
|
|
25
|
+
export async function FronteggApiMiddleware(req, res) {
|
|
26
|
+
return await middlewarePromise(req, res);
|
|
27
|
+
}
|
|
28
|
+
//# sourceMappingURL=FronteggApiMiddleware.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"FronteggApiMiddleware.js","names":["FronteggProxy","fronteggSSOPathRewrite","fronteggPathRewrite","rewritePath","middlewarePromise","req","res","Promise","resolve","fronteggUrlPath","url","rewriteUrl","on","options","target","process","env","web","FronteggApiMiddleware"],"sources":["../../../../packages/nextjs/src/middleware/FronteggApiMiddleware.ts"],"sourcesContent":["import type { NextApiRequest, NextApiResponse } from 'next';\nimport { FronteggProxy } from './FronteggProxy';\nimport { fronteggSSOPathRewrite, fronteggPathRewrite } from './constants';\nimport { rewritePath } from './helpers';\n\nconst middlewarePromise = (req: NextApiRequest, res: NextApiResponse) =>\n new Promise<void>((resolve) => {\n const fronteggUrlPath = rewritePath(req.url ?? '/', fronteggPathRewrite);\n const rewriteUrl = rewritePath(fronteggUrlPath ?? '/', fronteggSSOPathRewrite);\n req.url = rewriteUrl;\n res.on('close', () => resolve());\n const options = {\n target: process.env['FRONTEGG_BASE_URL'],\n };\n if (process.env['FRONTEGG_TEST_URL'] && req.url == '/frontegg/middleware-test') {\n options.target = process.env['FRONTEGG_TEST_URL'];\n }\n\n FronteggProxy.web(req, res, options);\n });\n\n/**\n * Next.js HTTP Proxy Middleware\n * @see https://nextjs.org/docs/api-routes/api-middlewares\n * @param {NextApiRequest} req - NextJS api request passed from api routing\n * @param {NextApiResponse} res - NextJS api response passed from api routing\n */\nexport async function FronteggApiMiddleware(req: NextApiRequest, res: NextApiResponse) {\n return await middlewarePromise(req, res);\n}\n"],"mappings":"AACA,SAASA,aAAa,QAAQ,iBAAiB;AAC/C,SAASC,sBAAsB,EAAEC,mBAAmB,QAAQ,aAAa;AACzE,SAASC,WAAW,QAAQ,WAAW;AAEvC,MAAMC,iBAAiB,GAAG,CAACC,GAAmB,EAAEC,GAAoB,KAClE,IAAIC,OAAO,CAAQC,OAAO,IAAK;EAAA;EAC7B,MAAMC,eAAe,GAAGN,WAAW,aAACE,GAAG,CAACK,GAAG,uBAAI,GAAG,EAAER,mBAAmB,CAAC;EACxE,MAAMS,UAAU,GAAGR,WAAW,CAACM,eAAe,WAAfA,eAAe,GAAI,GAAG,EAAER,sBAAsB,CAAC;EAC9EI,GAAG,CAACK,GAAG,GAAGC,UAAU;EACpBL,GAAG,CAACM,EAAE,CAAC,OAAO,EAAE,MAAMJ,OAAO,EAAE,CAAC;EAChC,MAAMK,OAAO,GAAG;IACdC,MAAM,EAAEC,OAAO,CAACC,GAAG,CAAC,mBAAmB;EACzC,CAAC;EACD,IAAID,OAAO,CAACC,GAAG,CAAC,mBAAmB,CAAC,IAAIX,GAAG,CAACK,GAAG,IAAI,2BAA2B,EAAE;IAC9EG,OAAO,CAACC,MAAM,GAAGC,OAAO,CAACC,GAAG,CAAC,mBAAmB,CAAC;EACnD;EAEAhB,aAAa,CAACiB,GAAG,CAACZ,GAAG,EAAEC,GAAG,EAAEO,OAAO,CAAC;AACtC,CAAC,CAAC;;AAEJ;AACA;AACA;AACA;AACA;AACA;AACA,OAAO,eAAeK,qBAAqB,CAACb,GAAmB,EAAEC,GAAoB,EAAE;EACrF,OAAO,MAAMF,iBAAiB,CAACC,GAAG,EAAEC,GAAG,CAAC;AAC1C"}
|
|
@@ -0,0 +1,24 @@
|
|
|
1
|
+
import { createProxyServer } from 'http-proxy';
|
|
2
|
+
import ProxyRequestCallback from './ProxyRequestCallback';
|
|
3
|
+
import ProxyResponseCallback from './ProxyResponseCallback';
|
|
4
|
+
|
|
5
|
+
/**
|
|
6
|
+
* @see https://www.npmjs.com/package/http-proxy
|
|
7
|
+
*/
|
|
8
|
+
export const FronteggProxy = createProxyServer({
|
|
9
|
+
target: process.env['FRONTEGG_BASE_URL'],
|
|
10
|
+
changeOrigin: true,
|
|
11
|
+
selfHandleResponse: true
|
|
12
|
+
});
|
|
13
|
+
|
|
14
|
+
/**
|
|
15
|
+
* Set proxy request callback handler
|
|
16
|
+
*/
|
|
17
|
+
// @ts-ignore
|
|
18
|
+
FronteggProxy.on('proxyReq', ProxyRequestCallback);
|
|
19
|
+
/**
|
|
20
|
+
* Set proxy response callback handler
|
|
21
|
+
*/
|
|
22
|
+
// @ts-ignore
|
|
23
|
+
FronteggProxy.on('proxyRes', ProxyResponseCallback);
|
|
24
|
+
//# sourceMappingURL=FronteggProxy.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"FronteggProxy.js","names":["createProxyServer","ProxyRequestCallback","ProxyResponseCallback","FronteggProxy","target","process","env","changeOrigin","selfHandleResponse","on"],"sources":["../../../../packages/nextjs/src/middleware/FronteggProxy.ts"],"sourcesContent":["import { createProxyServer } from 'http-proxy';\nimport ProxyRequestCallback from './ProxyRequestCallback';\nimport ProxyResponseCallback from './ProxyResponseCallback';\n\n/**\n * @see https://www.npmjs.com/package/http-proxy\n */\nexport const FronteggProxy = createProxyServer({\n target: process.env['FRONTEGG_BASE_URL'],\n changeOrigin: true,\n selfHandleResponse: true,\n});\n\n/**\n * Set proxy request callback handler\n */\n// @ts-ignore\nFronteggProxy.on('proxyReq', ProxyRequestCallback);\n/**\n * Set proxy response callback handler\n */\n// @ts-ignore\nFronteggProxy.on('proxyRes', ProxyResponseCallback);\n"],"mappings":"AAAA,SAASA,iBAAiB,QAAQ,YAAY;AAC9C,OAAOC,oBAAoB,MAAM,wBAAwB;AACzD,OAAOC,qBAAqB,MAAM,yBAAyB;;AAE3D;AACA;AACA;AACA,OAAO,MAAMC,aAAa,GAAGH,iBAAiB,CAAC;EAC7CI,MAAM,EAAEC,OAAO,CAACC,GAAG,CAAC,mBAAmB,CAAC;EACxCC,YAAY,EAAE,IAAI;EAClBC,kBAAkB,EAAE;AACtB,CAAC,CAAC;;AAEF;AACA;AACA;AACA;AACAL,aAAa,CAACM,EAAE,CAAC,UAAU,EAAER,oBAAoB,CAAC;AAClD;AACA;AACA;AACA;AACAE,aAAa,CAACM,EAAE,CAAC,UAAU,EAAEP,qBAAqB,CAAC"}
|
|
@@ -0,0 +1,13 @@
|
|
|
1
|
+
/// <reference types="node" />
|
|
2
|
+
import { ProxyReqCallback } from 'http-proxy';
|
|
3
|
+
import { ClientRequest } from 'http';
|
|
4
|
+
import { NextApiRequest } from 'next';
|
|
5
|
+
/**
|
|
6
|
+
* Proxy request callback fired on before each request to Frontegg services,
|
|
7
|
+
* to transport frontegg cookies.
|
|
8
|
+
*
|
|
9
|
+
* @param {ClientRequest} proxyReq - Proxy request to be sent
|
|
10
|
+
* @param {NextApiRequest} req - Next.js incoming request
|
|
11
|
+
*/
|
|
12
|
+
declare const ProxyRequestCallback: ProxyReqCallback<ClientRequest, NextApiRequest>;
|
|
13
|
+
export default ProxyRequestCallback;
|
|
@@ -0,0 +1,48 @@
|
|
|
1
|
+
import NextJsPkg from 'next/package.json';
|
|
2
|
+
import sdkVersion from '../sdkVersion';
|
|
3
|
+
import config from '../config';
|
|
4
|
+
import CookieManager from '../utils/cookies';
|
|
5
|
+
import fronteggLogger from '../utils/fronteggLogger';
|
|
6
|
+
const logger = fronteggLogger.child({
|
|
7
|
+
tag: 'FronteggApiMiddleware.ProxyRequestCallback'
|
|
8
|
+
});
|
|
9
|
+
/**
|
|
10
|
+
* Proxy request callback fired on before each request to Frontegg services,
|
|
11
|
+
* to transport frontegg cookies.
|
|
12
|
+
*
|
|
13
|
+
* @param {ClientRequest} proxyReq - Proxy request to be sent
|
|
14
|
+
* @param {NextApiRequest} req - Next.js incoming request
|
|
15
|
+
*/
|
|
16
|
+
const ProxyRequestCallback = (proxyReq, req) => {
|
|
17
|
+
try {
|
|
18
|
+
var _req$headers$xFronte, _req$headers$xFronte2;
|
|
19
|
+
logger.info(`${req.url} | Going to proxy request`);
|
|
20
|
+
logger.debug(`${req.url} | parsing request cookies`);
|
|
21
|
+
const allCookies = CookieManager.parseCookieHeader(req);
|
|
22
|
+
logger.debug(`${req.url} | found ${allCookies} cookies`);
|
|
23
|
+
const fronteggCookiesNames = Object.keys(allCookies).filter(cookieName => {
|
|
24
|
+
return cookieName.startsWith('fe_') && !cookieName.startsWith(config.cookieName);
|
|
25
|
+
});
|
|
26
|
+
logger.debug(`${req.url} | proxy FronteggCookies (${fronteggCookiesNames.join(', ')})`);
|
|
27
|
+
fronteggCookiesNames.forEach(cookieName => {
|
|
28
|
+
proxyReq.setHeader(cookieName, allCookies[cookieName]);
|
|
29
|
+
});
|
|
30
|
+
proxyReq.setHeader('x-frontegg-middleware', 'true');
|
|
31
|
+
proxyReq.setHeader('x-frontegg-framework', (_req$headers$xFronte = req.headers['x-frontegg-framework']) != null ? _req$headers$xFronte : `next@${NextJsPkg.version}`);
|
|
32
|
+
proxyReq.setHeader('x-frontegg-sdk', (_req$headers$xFronte2 = req.headers['x-frontegg-sdk']) != null ? _req$headers$xFronte2 : `@frontegg/nextjs@${sdkVersion.version}`);
|
|
33
|
+
logger.debug(`${req.url} | check if request has body`);
|
|
34
|
+
if (req.body) {
|
|
35
|
+
logger.debug(`${req.url} | writing request body to proxyReq`);
|
|
36
|
+
const bodyData = JSON.stringify(req.body);
|
|
37
|
+
// in case if content-type is application/x-www-form-urlencoded -> we need to change to application/json
|
|
38
|
+
proxyReq.setHeader('Content-Type', 'application/json');
|
|
39
|
+
proxyReq.setHeader('Content-Length', Buffer.byteLength(bodyData));
|
|
40
|
+
// stream the content
|
|
41
|
+
proxyReq.write(bodyData);
|
|
42
|
+
}
|
|
43
|
+
} catch (e) {
|
|
44
|
+
logger.error(`${req.url} | Failed to proxy request`, e);
|
|
45
|
+
}
|
|
46
|
+
};
|
|
47
|
+
export default ProxyRequestCallback;
|
|
48
|
+
//# sourceMappingURL=ProxyRequestCallback.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"ProxyRequestCallback.js","names":["NextJsPkg","sdkVersion","config","CookieManager","fronteggLogger","logger","child","tag","ProxyRequestCallback","proxyReq","req","info","url","debug","allCookies","parseCookieHeader","fronteggCookiesNames","Object","keys","filter","cookieName","startsWith","join","forEach","setHeader","headers","version","body","bodyData","JSON","stringify","Buffer","byteLength","write","e","error"],"sources":["../../../../packages/nextjs/src/middleware/ProxyRequestCallback.ts"],"sourcesContent":["import NextJsPkg from 'next/package.json';\nimport { ProxyReqCallback } from 'http-proxy';\nimport { ClientRequest } from 'http';\nimport { NextApiRequest } from 'next';\nimport sdkVersion from '../sdkVersion';\nimport config from '../config';\nimport CookieManager from '../utils/cookies';\nimport fronteggLogger from '../utils/fronteggLogger';\n\nconst logger = fronteggLogger.child({ tag: 'FronteggApiMiddleware.ProxyRequestCallback' });\n/**\n * Proxy request callback fired on before each request to Frontegg services,\n * to transport frontegg cookies.\n *\n * @param {ClientRequest} proxyReq - Proxy request to be sent\n * @param {NextApiRequest} req - Next.js incoming request\n */\nconst ProxyRequestCallback: ProxyReqCallback<ClientRequest, NextApiRequest> = (proxyReq, req) => {\n try {\n logger.info(`${req.url} | Going to proxy request`);\n logger.debug(`${req.url} | parsing request cookies`);\n const allCookies = CookieManager.parseCookieHeader(req);\n logger.debug(`${req.url} | found ${allCookies} cookies`);\n const fronteggCookiesNames = Object.keys(allCookies).filter((cookieName) => {\n return cookieName.startsWith('fe_') && !cookieName.startsWith(config.cookieName);\n });\n\n logger.debug(`${req.url} | proxy FronteggCookies (${fronteggCookiesNames.join(', ')})`);\n fronteggCookiesNames.forEach((cookieName: string) => {\n proxyReq.setHeader(cookieName, allCookies[cookieName]);\n });\n\n proxyReq.setHeader('x-frontegg-middleware', 'true');\n proxyReq.setHeader('x-frontegg-framework', req.headers['x-frontegg-framework'] ?? `next@${NextJsPkg.version}`);\n proxyReq.setHeader('x-frontegg-sdk', req.headers['x-frontegg-sdk'] ?? `@frontegg/nextjs@${sdkVersion.version}`);\n logger.debug(`${req.url} | check if request has body`);\n if (req.body) {\n logger.debug(`${req.url} | writing request body to proxyReq`);\n const bodyData = JSON.stringify(req.body);\n // in case if content-type is application/x-www-form-urlencoded -> we need to change to application/json\n proxyReq.setHeader('Content-Type', 'application/json');\n proxyReq.setHeader('Content-Length', Buffer.byteLength(bodyData));\n // stream the content\n proxyReq.write(bodyData);\n }\n } catch (e) {\n logger.error(`${req.url} | Failed to proxy request`, e);\n }\n};\n\nexport default ProxyRequestCallback;\n"],"mappings":"AAAA,OAAOA,SAAS,MAAM,mBAAmB;AAIzC,OAAOC,UAAU,MAAM,eAAe;AACtC,OAAOC,MAAM,MAAM,WAAW;AAC9B,OAAOC,aAAa,MAAM,kBAAkB;AAC5C,OAAOC,cAAc,MAAM,yBAAyB;AAEpD,MAAMC,MAAM,GAAGD,cAAc,CAACE,KAAK,CAAC;EAAEC,GAAG,EAAE;AAA6C,CAAC,CAAC;AAC1F;AACA;AACA;AACA;AACA;AACA;AACA;AACA,MAAMC,oBAAqE,GAAG,CAACC,QAAQ,EAAEC,GAAG,KAAK;EAC/F,IAAI;IAAA;IACFL,MAAM,CAACM,IAAI,CAAE,GAAED,GAAG,CAACE,GAAI,2BAA0B,CAAC;IAClDP,MAAM,CAACQ,KAAK,CAAE,GAAEH,GAAG,CAACE,GAAI,4BAA2B,CAAC;IACpD,MAAME,UAAU,GAAGX,aAAa,CAACY,iBAAiB,CAACL,GAAG,CAAC;IACvDL,MAAM,CAACQ,KAAK,CAAE,GAAEH,GAAG,CAACE,GAAI,YAAWE,UAAW,UAAS,CAAC;IACxD,MAAME,oBAAoB,GAAGC,MAAM,CAACC,IAAI,CAACJ,UAAU,CAAC,CAACK,MAAM,CAAEC,UAAU,IAAK;MAC1E,OAAOA,UAAU,CAACC,UAAU,CAAC,KAAK,CAAC,IAAI,CAACD,UAAU,CAACC,UAAU,CAACnB,MAAM,CAACkB,UAAU,CAAC;IAClF,CAAC,CAAC;IAEFf,MAAM,CAACQ,KAAK,CAAE,GAAEH,GAAG,CAACE,GAAI,6BAA4BI,oBAAoB,CAACM,IAAI,CAAC,IAAI,CAAE,GAAE,CAAC;IACvFN,oBAAoB,CAACO,OAAO,CAAEH,UAAkB,IAAK;MACnDX,QAAQ,CAACe,SAAS,CAACJ,UAAU,EAAEN,UAAU,CAACM,UAAU,CAAC,CAAC;IACxD,CAAC,CAAC;IAEFX,QAAQ,CAACe,SAAS,CAAC,uBAAuB,EAAE,MAAM,CAAC;IACnDf,QAAQ,CAACe,SAAS,CAAC,sBAAsB,0BAAEd,GAAG,CAACe,OAAO,CAAC,sBAAsB,CAAC,mCAAK,QAAOzB,SAAS,CAAC0B,OAAQ,EAAC,CAAC;IAC9GjB,QAAQ,CAACe,SAAS,CAAC,gBAAgB,2BAAEd,GAAG,CAACe,OAAO,CAAC,gBAAgB,CAAC,oCAAK,oBAAmBxB,UAAU,CAACyB,OAAQ,EAAC,CAAC;IAC/GrB,MAAM,CAACQ,KAAK,CAAE,GAAEH,GAAG,CAACE,GAAI,8BAA6B,CAAC;IACtD,IAAIF,GAAG,CAACiB,IAAI,EAAE;MACZtB,MAAM,CAACQ,KAAK,CAAE,GAAEH,GAAG,CAACE,GAAI,qCAAoC,CAAC;MAC7D,MAAMgB,QAAQ,GAAGC,IAAI,CAACC,SAAS,CAACpB,GAAG,CAACiB,IAAI,CAAC;MACzC;MACAlB,QAAQ,CAACe,SAAS,CAAC,cAAc,EAAE,kBAAkB,CAAC;MACtDf,QAAQ,CAACe,SAAS,CAAC,gBAAgB,EAAEO,MAAM,CAACC,UAAU,CAACJ,QAAQ,CAAC,CAAC;MACjE;MACAnB,QAAQ,CAACwB,KAAK,CAACL,QAAQ,CAAC;IAC1B;EACF,CAAC,CAAC,OAAOM,CAAC,EAAE;IACV7B,MAAM,CAAC8B,KAAK,CAAE,GAAEzB,GAAG,CAACE,GAAI,4BAA2B,EAAEsB,CAAC,CAAC;EACzD;AACF,CAAC;AAED,eAAe1B,oBAAoB"}
|
|
@@ -0,0 +1,13 @@
|
|
|
1
|
+
import { ProxyResCallback } from 'http-proxy';
|
|
2
|
+
import { IncomingMessage } from 'http';
|
|
3
|
+
import { NextApiResponse } from 'next';
|
|
4
|
+
/**
|
|
5
|
+
* Proxy response callback fired on after each response from Frontegg services,
|
|
6
|
+
* to transport frontegg modify cookies and generating encrypted JWT session cookie.
|
|
7
|
+
*
|
|
8
|
+
* @param {IncomingMessage} proxyRes - Proxy response from Frontegg services
|
|
9
|
+
* @param {NextApiRequest} req - Next.js request sent from client-side
|
|
10
|
+
* @param {NextApiResponse} res - Next.js response to send to client-side
|
|
11
|
+
*/
|
|
12
|
+
declare const ProxyResponseCallback: ProxyResCallback<IncomingMessage, NextApiResponse>;
|
|
13
|
+
export default ProxyResponseCallback;
|
|
@@ -0,0 +1,103 @@
|
|
|
1
|
+
import config from '../config';
|
|
2
|
+
import CookieManager from '../utils/cookies';
|
|
3
|
+
import { createSessionFromAccessToken } from '../common';
|
|
4
|
+
import { isFronteggLogoutUrl } from './helpers';
|
|
5
|
+
import fronteggLogger from '../utils/fronteggLogger';
|
|
6
|
+
const logger = fronteggLogger.child({
|
|
7
|
+
tag: 'FronteggApiMiddleware.ProxyResponseCallback'
|
|
8
|
+
});
|
|
9
|
+
/**
|
|
10
|
+
* Proxy response callback fired on after each response from Frontegg services,
|
|
11
|
+
* to transport frontegg modify cookies and generating encrypted JWT session cookie.
|
|
12
|
+
*
|
|
13
|
+
* @param {IncomingMessage} proxyRes - Proxy response from Frontegg services
|
|
14
|
+
* @param {NextApiRequest} req - Next.js request sent from client-side
|
|
15
|
+
* @param {NextApiResponse} res - Next.js response to send to client-side
|
|
16
|
+
*/
|
|
17
|
+
const ProxyResponseCallback = (proxyRes, req, res) => {
|
|
18
|
+
let buffer = new Buffer('');
|
|
19
|
+
let totalLength = 0;
|
|
20
|
+
const isSecured = new URL(config.appUrl).protocol === 'https:';
|
|
21
|
+
proxyRes.on('data', chunk => {
|
|
22
|
+
totalLength += chunk.length;
|
|
23
|
+
buffer = Buffer.concat([buffer, chunk], totalLength);
|
|
24
|
+
});
|
|
25
|
+
proxyRes.on('end', async () => {
|
|
26
|
+
try {
|
|
27
|
+
var _proxyRes$statusCode;
|
|
28
|
+
const url = req.url;
|
|
29
|
+
const statusCode = (_proxyRes$statusCode = proxyRes.statusCode) != null ? _proxyRes$statusCode : 500;
|
|
30
|
+
const isSuccess = statusCode >= 200 && statusCode < 400;
|
|
31
|
+
const bodyStr = buffer.toString('utf-8');
|
|
32
|
+
const isLogout = isFronteggLogoutUrl(url);
|
|
33
|
+
if (isLogout) {
|
|
34
|
+
CookieManager.removeCookies({
|
|
35
|
+
isSecured,
|
|
36
|
+
cookieDomain: config.cookieDomain,
|
|
37
|
+
res,
|
|
38
|
+
req
|
|
39
|
+
});
|
|
40
|
+
if (isSuccess) {
|
|
41
|
+
var _process$env$FRONTEGG;
|
|
42
|
+
res.redirect(`${process.env['FRONTEGG_BASE_URL']}/oauth/logout?post_logout_redirect_uri=${encodeURIComponent((_process$env$FRONTEGG = process.env['FRONTEGG_APP_URL']) != null ? _process$env$FRONTEGG : '')}`);
|
|
43
|
+
} else {
|
|
44
|
+
res.status(statusCode).end(bodyStr);
|
|
45
|
+
}
|
|
46
|
+
return;
|
|
47
|
+
}
|
|
48
|
+
if (isSuccess) {
|
|
49
|
+
var _CookieManager$modify;
|
|
50
|
+
const cookies = (_CookieManager$modify = CookieManager.modifySetCookie(proxyRes.headers['set-cookie'], isSecured)) != null ? _CookieManager$modify : [];
|
|
51
|
+
try {
|
|
52
|
+
if (bodyStr && bodyStr.length > 0) {
|
|
53
|
+
const body = JSON.parse(bodyStr);
|
|
54
|
+
if (body.accessToken || body.access_token) {
|
|
55
|
+
const [session, decodedJwt] = await createSessionFromAccessToken(body);
|
|
56
|
+
if (session) {
|
|
57
|
+
const sessionCookie = CookieManager.create({
|
|
58
|
+
value: session,
|
|
59
|
+
expires: new Date(decodedJwt.exp * 1000),
|
|
60
|
+
secure: isSecured
|
|
61
|
+
});
|
|
62
|
+
cookies.push(...sessionCookie);
|
|
63
|
+
}
|
|
64
|
+
}
|
|
65
|
+
}
|
|
66
|
+
} catch (e) {
|
|
67
|
+
/** ignore api call if:
|
|
68
|
+
* - Does not have accessToken / access_token
|
|
69
|
+
* - Not json response
|
|
70
|
+
*/
|
|
71
|
+
if (statusCode === 302 && url === '/auth/saml/callback') {
|
|
72
|
+
/**
|
|
73
|
+
* Ignore saml postLogin response with redirect
|
|
74
|
+
*/
|
|
75
|
+
} else {
|
|
76
|
+
logger.error('failed to create session', e, {
|
|
77
|
+
url,
|
|
78
|
+
statusCode
|
|
79
|
+
});
|
|
80
|
+
}
|
|
81
|
+
}
|
|
82
|
+
Object.keys(proxyRes.headers).filter(header => header !== 'cookie').forEach(header => {
|
|
83
|
+
res.setHeader(header, `${proxyRes.headers[header]}`);
|
|
84
|
+
});
|
|
85
|
+
res.setHeader('set-cookie', cookies);
|
|
86
|
+
res.status(statusCode).end(bodyStr);
|
|
87
|
+
} else {
|
|
88
|
+
if (statusCode >= 400 && statusCode !== 404) {
|
|
89
|
+
logger.error(`Middleware request failed statusCode: ${statusCode} for url: ${url}`);
|
|
90
|
+
}
|
|
91
|
+
Object.keys(proxyRes.headers).filter(header => header !== 'cookie').forEach(header => {
|
|
92
|
+
res.setHeader(header, `${proxyRes.headers[header]}`);
|
|
93
|
+
});
|
|
94
|
+
res.status(statusCode).end(bodyStr);
|
|
95
|
+
}
|
|
96
|
+
} catch (e) {
|
|
97
|
+
logger.error('proxy failed to send request', e);
|
|
98
|
+
res.status(500).end('Internal Server Error');
|
|
99
|
+
}
|
|
100
|
+
});
|
|
101
|
+
};
|
|
102
|
+
export default ProxyResponseCallback;
|
|
103
|
+
//# sourceMappingURL=ProxyResponseCallback.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"ProxyResponseCallback.js","names":["config","CookieManager","createSessionFromAccessToken","isFronteggLogoutUrl","fronteggLogger","logger","child","tag","ProxyResponseCallback","proxyRes","req","res","buffer","Buffer","totalLength","isSecured","URL","appUrl","protocol","on","chunk","length","concat","url","statusCode","isSuccess","bodyStr","toString","isLogout","removeCookies","cookieDomain","redirect","process","env","encodeURIComponent","status","end","cookies","modifySetCookie","headers","body","JSON","parse","accessToken","access_token","session","decodedJwt","sessionCookie","create","value","expires","Date","exp","secure","push","e","error","Object","keys","filter","header","forEach","setHeader"],"sources":["../../../../packages/nextjs/src/middleware/ProxyResponseCallback.ts"],"sourcesContent":["import { ProxyResCallback } from 'http-proxy';\nimport { IncomingMessage } from 'http';\nimport { NextApiResponse, NextApiRequest } from 'next';\nimport config from '../config';\nimport CookieManager from '../utils/cookies';\nimport { createSessionFromAccessToken } from '../common';\nimport { isFronteggLogoutUrl } from './helpers';\nimport fronteggLogger from '../utils/fronteggLogger';\n\nconst logger = fronteggLogger.child({ tag: 'FronteggApiMiddleware.ProxyResponseCallback' });\n/**\n * Proxy response callback fired on after each response from Frontegg services,\n * to transport frontegg modify cookies and generating encrypted JWT session cookie.\n *\n * @param {IncomingMessage} proxyRes - Proxy response from Frontegg services\n * @param {NextApiRequest} req - Next.js request sent from client-side\n * @param {NextApiResponse} res - Next.js response to send to client-side\n */\nconst ProxyResponseCallback: ProxyResCallback<IncomingMessage, NextApiResponse> = (proxyRes, req, res) => {\n let buffer = new Buffer('');\n let totalLength: number = 0;\n const isSecured = new URL(config.appUrl).protocol === 'https:';\n\n proxyRes.on('data', (chunk: Buffer) => {\n totalLength += chunk.length;\n buffer = Buffer.concat([buffer, chunk], totalLength);\n });\n proxyRes.on('end', async () => {\n try {\n const url = req.url!;\n const statusCode = proxyRes.statusCode ?? 500;\n const isSuccess = statusCode >= 200 && statusCode < 400;\n const bodyStr = buffer.toString('utf-8');\n const isLogout = isFronteggLogoutUrl(url);\n\n if (isLogout) {\n CookieManager.removeCookies({\n isSecured,\n cookieDomain: config.cookieDomain,\n res,\n req,\n });\n if (isSuccess) {\n res.redirect(\n `${process.env['FRONTEGG_BASE_URL']}/oauth/logout?post_logout_redirect_uri=${encodeURIComponent(\n process.env['FRONTEGG_APP_URL'] ?? ''\n )}`\n );\n } else {\n res.status(statusCode).end(bodyStr);\n }\n return;\n }\n\n if (isSuccess) {\n const cookies = CookieManager.modifySetCookie(proxyRes.headers['set-cookie'], isSecured) ?? [];\n\n try {\n if (bodyStr && bodyStr.length > 0) {\n const body = JSON.parse(bodyStr);\n if (body.accessToken || body.access_token) {\n const [session, decodedJwt] = await createSessionFromAccessToken(body);\n if (session) {\n const sessionCookie = CookieManager.create({\n value: session,\n expires: new Date(decodedJwt.exp * 1000),\n secure: isSecured,\n });\n cookies.push(...sessionCookie);\n }\n }\n }\n } catch (e) {\n /** ignore api call if:\n * - Does not have accessToken / access_token\n * - Not json response\n */\n if (statusCode === 302 && url === '/auth/saml/callback') {\n /**\n * Ignore saml postLogin response with redirect\n */\n } else {\n logger.error('failed to create session', e, {\n url,\n statusCode,\n });\n }\n }\n Object.keys(proxyRes.headers)\n .filter((header) => header !== 'cookie')\n .forEach((header) => {\n res.setHeader(header, `${proxyRes.headers[header]}`);\n });\n res.setHeader('set-cookie', cookies);\n res.status(statusCode).end(bodyStr);\n } else {\n if (statusCode >= 400 && statusCode !== 404) {\n logger.error(`Middleware request failed statusCode: ${statusCode} for url: ${url}`);\n }\n Object.keys(proxyRes.headers)\n .filter((header) => header !== 'cookie')\n .forEach((header) => {\n res.setHeader(header, `${proxyRes.headers[header]}`);\n });\n res.status(statusCode).end(bodyStr);\n }\n } catch (e: any) {\n logger.error('proxy failed to send request', e);\n res.status(500).end('Internal Server Error');\n }\n });\n};\n\nexport default ProxyResponseCallback;\n"],"mappings":"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"}
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"constants.js","names":["fronteggPathRewrite","patternStr","replaceStr","fronteggSSOPathRewrite"],"sources":["../../../../packages/nextjs/src/middleware/constants.ts"],"sourcesContent":["export const fronteggPathRewrite = [\n {\n patternStr: '^/api/',\n replaceStr: '/',\n },\n];\nexport const fronteggSSOPathRewrite = [\n {\n patternStr: '/frontegg/saml/callback$',\n replaceStr: '/auth/saml/callback',\n },\n];\n"],"mappings":"AAAA,OAAO,MAAMA,mBAAmB,GAAG,CACjC;EACEC,UAAU,EAAE,QAAQ;EACpBC,UAAU,EAAE;AACd,CAAC,CACF;AACD,OAAO,MAAMC,sBAAsB,GAAG,CACpC;EACEF,UAAU,EAAE,0BAA0B;EACtCC,UAAU,EAAE;AACd,CAAC,CACF"}
|
|
@@ -1,26 +1,13 @@
|
|
|
1
|
-
|
|
2
|
-
|
|
3
|
-
*
|
|
4
|
-
|
|
5
|
-
|
|
6
|
-
|
|
7
|
-
|
|
8
|
-
|
|
9
|
-
|
|
10
|
-
|
|
11
|
-
|
|
12
|
-
|
|
13
|
-
|
|
14
|
-
} | {
|
|
15
|
-
patternStr: string;
|
|
16
|
-
replaceStr: string;
|
|
17
|
-
}[]) => string;
|
|
18
|
-
export declare const fronteggPathRewrite: {
|
|
19
|
-
patternStr: string;
|
|
20
|
-
replaceStr: string;
|
|
21
|
-
}[];
|
|
22
|
-
export declare const fronteggSSOPathRewrite: {
|
|
23
|
-
patternStr: string;
|
|
24
|
-
replaceStr: string;
|
|
25
|
-
}[];
|
|
26
|
-
export declare const isFronteggLogoutUrl: (url: string) => boolean;
|
|
1
|
+
/**
|
|
2
|
+
* If pattern information matching the input url information is found in the `pathRewrite` array,
|
|
3
|
+
* the url value is partially replaced with the `pathRewrite.replaceStr` value.
|
|
4
|
+
* @param url
|
|
5
|
+
* @param pathRewrite
|
|
6
|
+
*/
|
|
7
|
+
export declare const rewritePath: (url: string, pathRewrite: {
|
|
8
|
+
[key: string]: string;
|
|
9
|
+
} | {
|
|
10
|
+
patternStr: string;
|
|
11
|
+
replaceStr: string;
|
|
12
|
+
}[]) => string;
|
|
13
|
+
export declare const isFronteggLogoutUrl: (url: string) => boolean;
|
|
@@ -0,0 +1,35 @@
|
|
|
1
|
+
import { fronteggAuthApiRoutes } from '@frontegg/rest-api';
|
|
2
|
+
|
|
3
|
+
/**
|
|
4
|
+
* If pattern information matching the input url information is found in the `pathRewrite` array,
|
|
5
|
+
* the url value is partially replaced with the `pathRewrite.replaceStr` value.
|
|
6
|
+
* @param url
|
|
7
|
+
* @param pathRewrite
|
|
8
|
+
*/
|
|
9
|
+
export const rewritePath = (url, pathRewrite) => {
|
|
10
|
+
if (Array.isArray(pathRewrite)) {
|
|
11
|
+
for (const item of pathRewrite) {
|
|
12
|
+
const {
|
|
13
|
+
patternStr,
|
|
14
|
+
replaceStr
|
|
15
|
+
} = item;
|
|
16
|
+
const pattern = RegExp(patternStr);
|
|
17
|
+
if (pattern.test(url)) {
|
|
18
|
+
return url.replace(pattern, replaceStr);
|
|
19
|
+
}
|
|
20
|
+
}
|
|
21
|
+
} else {
|
|
22
|
+
for (const patternStr in pathRewrite) {
|
|
23
|
+
const pattern = RegExp(patternStr);
|
|
24
|
+
const path = pathRewrite[patternStr];
|
|
25
|
+
if (pattern.test(url)) {
|
|
26
|
+
return url.replace(pattern, path);
|
|
27
|
+
}
|
|
28
|
+
}
|
|
29
|
+
}
|
|
30
|
+
return url;
|
|
31
|
+
};
|
|
32
|
+
export const isFronteggLogoutUrl = url => {
|
|
33
|
+
return fronteggAuthApiRoutes.filter(path => path.endsWith('/logout')).findIndex(route => url.endsWith(route)) >= 0;
|
|
34
|
+
};
|
|
35
|
+
//# sourceMappingURL=helpers.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"helpers.js","names":["fronteggAuthApiRoutes","rewritePath","url","pathRewrite","Array","isArray","item","patternStr","replaceStr","pattern","RegExp","test","replace","path","isFronteggLogoutUrl","filter","endsWith","findIndex","route"],"sources":["../../../../packages/nextjs/src/middleware/helpers.ts"],"sourcesContent":["import { fronteggAuthApiRoutes } from '@frontegg/rest-api';\n\n/**\n * If pattern information matching the input url information is found in the `pathRewrite` array,\n * the url value is partially replaced with the `pathRewrite.replaceStr` value.\n * @param url\n * @param pathRewrite\n */\nexport const rewritePath = (\n url: string,\n pathRewrite: { [key: string]: string } | { patternStr: string; replaceStr: string }[]\n) => {\n if (Array.isArray(pathRewrite)) {\n for (const item of pathRewrite) {\n const { patternStr, replaceStr } = item;\n const pattern = RegExp(patternStr);\n if (pattern.test(url as string)) {\n return url.replace(pattern, replaceStr);\n }\n }\n } else {\n for (const patternStr in pathRewrite) {\n const pattern = RegExp(patternStr);\n const path = pathRewrite[patternStr];\n if (pattern.test(url as string)) {\n return url.replace(pattern, path);\n }\n }\n }\n return url;\n};\n\nexport const isFronteggLogoutUrl = (url: string) => {\n return (\n fronteggAuthApiRoutes.filter((path) => path.endsWith('/logout')).findIndex((route) => url.endsWith(route)) >= 0\n );\n};\n"],"mappings":"AAAA,SAASA,qBAAqB,QAAQ,oBAAoB;;AAE1D;AACA;AACA;AACA;AACA;AACA;AACA,OAAO,MAAMC,WAAW,GAAG,CACzBC,GAAW,EACXC,WAAqF,KAClF;EACH,IAAIC,KAAK,CAACC,OAAO,CAACF,WAAW,CAAC,EAAE;IAC9B,KAAK,MAAMG,IAAI,IAAIH,WAAW,EAAE;MAC9B,MAAM;QAAEI,UAAU;QAAEC;MAAW,CAAC,GAAGF,IAAI;MACvC,MAAMG,OAAO,GAAGC,MAAM,CAACH,UAAU,CAAC;MAClC,IAAIE,OAAO,CAACE,IAAI,CAACT,GAAG,CAAW,EAAE;QAC/B,OAAOA,GAAG,CAACU,OAAO,CAACH,OAAO,EAAED,UAAU,CAAC;MACzC;IACF;EACF,CAAC,MAAM;IACL,KAAK,MAAMD,UAAU,IAAIJ,WAAW,EAAE;MACpC,MAAMM,OAAO,GAAGC,MAAM,CAACH,UAAU,CAAC;MAClC,MAAMM,IAAI,GAAGV,WAAW,CAACI,UAAU,CAAC;MACpC,IAAIE,OAAO,CAACE,IAAI,CAACT,GAAG,CAAW,EAAE;QAC/B,OAAOA,GAAG,CAACU,OAAO,CAACH,OAAO,EAAEI,IAAI,CAAC;MACnC;IACF;EACF;EACA,OAAOX,GAAG;AACZ,CAAC;AAED,OAAO,MAAMY,mBAAmB,GAAIZ,GAAW,IAAK;EAClD,OACEF,qBAAqB,CAACe,MAAM,CAAEF,IAAI,IAAKA,IAAI,CAACG,QAAQ,CAAC,SAAS,CAAC,CAAC,CAACC,SAAS,CAAEC,KAAK,IAAKhB,GAAG,CAACc,QAAQ,CAACE,KAAK,CAAC,CAAC,IAAI,CAAC;AAEnH,CAAC"}
|
|
@@ -0,0 +1,23 @@
|
|
|
1
|
+
/**
|
|
2
|
+
* {@link FronteggApiMiddleware} is a proxy between the Client-Side to Frontegg gateway.
|
|
3
|
+
* The purpose of this middleware is to handle auth response before arrived to the Client-Side
|
|
4
|
+
* for extracting JWT and fe_* headers to create NextJS session cookie.
|
|
5
|
+
*
|
|
6
|
+
* NextJS session cookies used for getServerSideProps in client-components and ServerComponents.
|
|
7
|
+
*
|
|
8
|
+
* Usage:
|
|
9
|
+
*
|
|
10
|
+
* Create new file under `./pages/api/frontegg/[...frontegg-middleware].ts` and paste the snippet below:
|
|
11
|
+
*
|
|
12
|
+
* ```typescript
|
|
13
|
+
* export { FronteggApiMiddleware as default } from '@frontegg/nextjs/middleware';
|
|
14
|
+
*
|
|
15
|
+
* export const config = {
|
|
16
|
+
* api: {
|
|
17
|
+
* externalResolver: true,
|
|
18
|
+
* responseLimit: true,
|
|
19
|
+
* },
|
|
20
|
+
* };
|
|
21
|
+
* ```
|
|
22
|
+
*/
|
|
23
|
+
export { FronteggApiMiddleware } from './FronteggApiMiddleware';
|
|
@@ -0,0 +1,24 @@
|
|
|
1
|
+
/**
|
|
2
|
+
* {@link FronteggApiMiddleware} is a proxy between the Client-Side to Frontegg gateway.
|
|
3
|
+
* The purpose of this middleware is to handle auth response before arrived to the Client-Side
|
|
4
|
+
* for extracting JWT and fe_* headers to create NextJS session cookie.
|
|
5
|
+
*
|
|
6
|
+
* NextJS session cookies used for getServerSideProps in client-components and ServerComponents.
|
|
7
|
+
*
|
|
8
|
+
* Usage:
|
|
9
|
+
*
|
|
10
|
+
* Create new file under `./pages/api/frontegg/[...frontegg-middleware].ts` and paste the snippet below:
|
|
11
|
+
*
|
|
12
|
+
* ```typescript
|
|
13
|
+
* export { FronteggApiMiddleware as default } from '@frontegg/nextjs/middleware';
|
|
14
|
+
*
|
|
15
|
+
* export const config = {
|
|
16
|
+
* api: {
|
|
17
|
+
* externalResolver: true,
|
|
18
|
+
* responseLimit: true,
|
|
19
|
+
* },
|
|
20
|
+
* };
|
|
21
|
+
* ```
|
|
22
|
+
*/
|
|
23
|
+
export { FronteggApiMiddleware } from './FronteggApiMiddleware';
|
|
24
|
+
//# sourceMappingURL=index.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"index.js","names":["FronteggApiMiddleware"],"sources":["../../../../packages/nextjs/src/middleware/index.ts"],"sourcesContent":["/**\n * {@link FronteggApiMiddleware} is a proxy between the Client-Side to Frontegg gateway.\n * The purpose of this middleware is to handle auth response before arrived to the Client-Side\n * for extracting JWT and fe_* headers to create NextJS session cookie.\n *\n * NextJS session cookies used for getServerSideProps in client-components and ServerComponents.\n *\n * Usage:\n *\n * Create new file under `./pages/api/frontegg/[...frontegg-middleware].ts` and paste the snippet below:\n *\n * ```typescript\n * export { FronteggApiMiddleware as default } from '@frontegg/nextjs/middleware';\n *\n * export const config = {\n * api: {\n * externalResolver: true,\n * responseLimit: true,\n * },\n * };\n * ```\n */\nexport { FronteggApiMiddleware } from './FronteggApiMiddleware';\n"],"mappings":"AAAA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,SAASA,qBAAqB,QAAQ,yBAAyB"}
|
|
@@ -0,0 +1,22 @@
|
|
|
1
|
+
'use client';
|
|
2
|
+
|
|
3
|
+
import _extends from "@babel/runtime/helpers/esm/extends";
|
|
4
|
+
import React, { useEffect } from 'react';
|
|
5
|
+
import { useAuthActions, useAuthUserOrNull } from '@frontegg/react-hooks';
|
|
6
|
+
import { calculateExpiresInFromExp } from '../utils/common';
|
|
7
|
+
import { Fragment as _Fragment } from "react/jsx-runtime";
|
|
8
|
+
import { jsx as _jsx } from "react/jsx-runtime";
|
|
9
|
+
export default function ExpireInListener() {
|
|
10
|
+
const user = useAuthUserOrNull();
|
|
11
|
+
const actions = useAuthActions();
|
|
12
|
+
useEffect(() => {
|
|
13
|
+
if (user && (user == null ? void 0 : user.expiresIn) == null) {
|
|
14
|
+
actions.setUser(_extends({}, user, {
|
|
15
|
+
expiresIn: calculateExpiresInFromExp(user['exp'])
|
|
16
|
+
}));
|
|
17
|
+
}
|
|
18
|
+
}, [actions, user]);
|
|
19
|
+
// eslint-disable-next-line react/jsx-no-useless-fragment
|
|
20
|
+
return /*#__PURE__*/_jsx(_Fragment, {});
|
|
21
|
+
}
|
|
22
|
+
//# sourceMappingURL=ExpireInListener.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"ExpireInListener.js","names":["React","useEffect","useAuthActions","useAuthUserOrNull","calculateExpiresInFromExp","ExpireInListener","user","actions","expiresIn","setUser"],"sources":["../../../../packages/nextjs/src/no-ssr/ExpireInListener.tsx"],"sourcesContent":["'use client';\n\nimport React, { useEffect } from 'react';\nimport { useAuthActions, useAuthUserOrNull } from '@frontegg/react-hooks';\nimport { calculateExpiresInFromExp } from '../utils/common';\n\nexport default function ExpireInListener() {\n const user = useAuthUserOrNull();\n const actions = useAuthActions();\n useEffect(() => {\n if (user && user?.expiresIn == null) {\n actions.setUser({\n ...user,\n expiresIn: calculateExpiresInFromExp((user as any)['exp']),\n });\n }\n }, [actions, user]);\n // eslint-disable-next-line react/jsx-no-useless-fragment\n return <></>;\n}\n"],"mappings":"AAAA,YAAY;;AAAC;AAEb,OAAOA,KAAK,IAAIC,SAAS,QAAQ,OAAO;AACxC,SAASC,cAAc,EAAEC,iBAAiB,QAAQ,uBAAuB;AACzE,SAASC,yBAAyB,QAAQ,iBAAiB;AAAC;AAAA;AAE5D,eAAe,SAASC,gBAAgB,GAAG;EACzC,MAAMC,IAAI,GAAGH,iBAAiB,EAAE;EAChC,MAAMI,OAAO,GAAGL,cAAc,EAAE;EAChCD,SAAS,CAAC,MAAM;IACd,IAAIK,IAAI,IAAI,CAAAA,IAAI,oBAAJA,IAAI,CAAEE,SAAS,KAAI,IAAI,EAAE;MACnCD,OAAO,CAACE,OAAO,cACVH,IAAI;QACPE,SAAS,EAAEJ,yBAAyB,CAAEE,IAAI,CAAS,KAAK,CAAC;MAAC,GAC1D;IACJ;EACF,CAAC,EAAE,CAACC,OAAO,EAAED,IAAI,CAAC,CAAC;EACnB;EACA,oBAAO,mBAAK;AACd"}
|
|
@@ -1,4 +1,4 @@
|
|
|
1
|
-
import { FronteggAppOptions } from '@frontegg/types';
|
|
2
|
-
import { FC, PropsWithChildren } from 'react';
|
|
3
|
-
export type FronteggProviderNoSSRProps = PropsWithChildren<FronteggAppOptions>;
|
|
4
|
-
export declare const FronteggProviderNoSSR: FC<FronteggProviderNoSSRProps>;
|
|
1
|
+
import { FronteggAppOptions } from '@frontegg/types';
|
|
2
|
+
import { FC, PropsWithChildren } from 'react';
|
|
3
|
+
export type FronteggProviderNoSSRProps = PropsWithChildren<FronteggAppOptions>;
|
|
4
|
+
export declare const FronteggProviderNoSSR: FC<FronteggProviderNoSSRProps>;
|
|
@@ -0,0 +1,76 @@
|
|
|
1
|
+
'use client';
|
|
2
|
+
|
|
3
|
+
import _extends from "@babel/runtime/helpers/esm/extends";
|
|
4
|
+
import _objectWithoutPropertiesLoose from "@babel/runtime/helpers/esm/objectWithoutPropertiesLoose";
|
|
5
|
+
var _ExpireInListener;
|
|
6
|
+
const _excluded = ["router", "appName", "hostedLoginBox", "customLoginBox"];
|
|
7
|
+
import { AppHolder, initialize } from '@frontegg/js';
|
|
8
|
+
import { FronteggStoreProvider } from '@frontegg/react-hooks';
|
|
9
|
+
import { ContextHolder } from '@frontegg/rest-api';
|
|
10
|
+
import { useRouter } from 'next/router';
|
|
11
|
+
import React, { useEffect, useMemo } from 'react';
|
|
12
|
+
import AppContext from '../common/AppContext';
|
|
13
|
+
import useOnRedirectTo from '../utils/useOnRedirectTo';
|
|
14
|
+
import ExpireInListener from './ExpireInListener';
|
|
15
|
+
import { jsx as _jsx } from "react/jsx-runtime";
|
|
16
|
+
import { jsxs as _jsxs } from "react/jsx-runtime";
|
|
17
|
+
const Connector = _props => {
|
|
18
|
+
var _props$basename;
|
|
19
|
+
const {
|
|
20
|
+
router,
|
|
21
|
+
appName,
|
|
22
|
+
hostedLoginBox
|
|
23
|
+
} = _props,
|
|
24
|
+
props = _objectWithoutPropertiesLoose(_props, _excluded);
|
|
25
|
+
const baseName = (_props$basename = props.basename) != null ? _props$basename : router.basePath;
|
|
26
|
+
const onRedirectTo = useOnRedirectTo(baseName, router);
|
|
27
|
+
const app = useMemo(() => {
|
|
28
|
+
let createdApp;
|
|
29
|
+
try {
|
|
30
|
+
createdApp = AppHolder.getInstance(appName != null ? appName : 'default');
|
|
31
|
+
} catch (e) {
|
|
32
|
+
var _props$basename2;
|
|
33
|
+
createdApp = initialize(_extends({}, props, {
|
|
34
|
+
hostedLoginBox: hostedLoginBox != null ? hostedLoginBox : false,
|
|
35
|
+
basename: (_props$basename2 = props.basename) != null ? _props$basename2 : baseName,
|
|
36
|
+
authOptions: _extends({}, props.authOptions, {
|
|
37
|
+
onRedirectTo
|
|
38
|
+
}),
|
|
39
|
+
contextOptions: _extends({
|
|
40
|
+
requestCredentials: 'include'
|
|
41
|
+
}, props.contextOptions),
|
|
42
|
+
onRedirectTo
|
|
43
|
+
}), appName != null ? appName : 'default');
|
|
44
|
+
}
|
|
45
|
+
return createdApp;
|
|
46
|
+
}, [appName, props, hostedLoginBox, baseName, onRedirectTo]);
|
|
47
|
+
ContextHolder.setOnRedirectTo(onRedirectTo);
|
|
48
|
+
useEffect(() => {
|
|
49
|
+
app.store.dispatch({
|
|
50
|
+
type: 'auth/requestAuthorize',
|
|
51
|
+
payload: true
|
|
52
|
+
});
|
|
53
|
+
}, [app]);
|
|
54
|
+
return /*#__PURE__*/_jsx(AppContext.Provider, {
|
|
55
|
+
value: app,
|
|
56
|
+
children: /*#__PURE__*/_jsx(FronteggStoreProvider, _extends({}, _extends({}, props, {
|
|
57
|
+
app
|
|
58
|
+
}), {
|
|
59
|
+
children: props.children
|
|
60
|
+
}))
|
|
61
|
+
});
|
|
62
|
+
};
|
|
63
|
+
const FronteggNextJSProvider = props => {
|
|
64
|
+
const router = useRouter();
|
|
65
|
+
return /*#__PURE__*/_jsxs(Connector, _extends({}, props, {
|
|
66
|
+
router: router,
|
|
67
|
+
children: [_ExpireInListener || (_ExpireInListener = /*#__PURE__*/_jsx(ExpireInListener, {})), props.children]
|
|
68
|
+
}));
|
|
69
|
+
};
|
|
70
|
+
export const FronteggProviderNoSSR = props => {
|
|
71
|
+
return /*#__PURE__*/_jsx(FronteggNextJSProvider, _extends({}, props, {
|
|
72
|
+
framework: 'nextjs',
|
|
73
|
+
children: props.children
|
|
74
|
+
}));
|
|
75
|
+
};
|
|
76
|
+
//# sourceMappingURL=FronteggProviderNoSSR.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"FronteggProviderNoSSR.js","names":["AppHolder","initialize","FronteggStoreProvider","ContextHolder","useRouter","React","useEffect","useMemo","AppContext","useOnRedirectTo","ExpireInListener","Connector","_props","router","appName","hostedLoginBox","props","baseName","basename","basePath","onRedirectTo","app","createdApp","getInstance","e","authOptions","contextOptions","requestCredentials","setOnRedirectTo","store","dispatch","type","payload","children","FronteggNextJSProvider","FronteggProviderNoSSR"],"sources":["../../../../packages/nextjs/src/no-ssr/FronteggProviderNoSSR.tsx"],"sourcesContent":["'use client';\n\nimport { AppHolder, initialize } from '@frontegg/js';\nimport { FronteggStoreProvider } from '@frontegg/react-hooks';\nimport { ContextHolder } from '@frontegg/rest-api';\nimport { FronteggAppOptions } from '@frontegg/types';\nimport { NextRouter, useRouter } from 'next/router';\nimport React, { FC, PropsWithChildren, useEffect, useMemo } from 'react';\nimport AppContext from '../common/AppContext';\nimport useOnRedirectTo from '../utils/useOnRedirectTo';\nimport ExpireInListener from './ExpireInListener';\n\nexport type FronteggProviderNoSSRProps = PropsWithChildren<FronteggAppOptions>;\n\ntype ConnectorProps = PropsWithChildren<FronteggAppOptions> & {\n router: NextRouter;\n appName?: string;\n};\n\nconst Connector: FC<ConnectorProps> = (_props) => {\n const { router, appName, hostedLoginBox, customLoginBox, ...props } = _props;\n const baseName = props.basename ?? router.basePath;\n\n const onRedirectTo = useOnRedirectTo(baseName, router);\n\n const app = useMemo(() => {\n let createdApp;\n try {\n createdApp = AppHolder.getInstance(appName ?? 'default');\n } catch (e) {\n createdApp = initialize(\n {\n ...props,\n hostedLoginBox: hostedLoginBox ?? false,\n basename: props.basename ?? baseName,\n authOptions: {\n ...props.authOptions,\n onRedirectTo,\n },\n contextOptions: {\n requestCredentials: 'include',\n ...props.contextOptions,\n },\n onRedirectTo,\n },\n appName ?? 'default'\n );\n }\n return createdApp;\n }, [appName, props, hostedLoginBox, baseName, onRedirectTo]);\n ContextHolder.setOnRedirectTo(onRedirectTo);\n\n useEffect(() => {\n app.store.dispatch({ type: 'auth/requestAuthorize', payload: true });\n }, [app]);\n\n return (\n <AppContext.Provider value={app}>\n <FronteggStoreProvider {...({ ...props, app } as any)}>{props.children}</FronteggStoreProvider>\n </AppContext.Provider>\n );\n};\n\nconst FronteggNextJSProvider: FC<FronteggProviderNoSSRProps> = (props) => {\n const router = useRouter();\n\n return (\n <Connector {...props} router={router}>\n <ExpireInListener />\n {props.children}\n </Connector>\n );\n};\n\nexport const FronteggProviderNoSSR: FC<FronteggProviderNoSSRProps> = (props) => {\n return (\n <FronteggNextJSProvider {...props} framework={'nextjs'}>\n {props.children}\n </FronteggNextJSProvider>\n );\n};\n"],"mappings":"AAAA,YAAY;;AAAC;AAAA;AAAA;AAAA;AAEb,SAASA,SAAS,EAAEC,UAAU,QAAQ,cAAc;AACpD,SAASC,qBAAqB,QAAQ,uBAAuB;AAC7D,SAASC,aAAa,QAAQ,oBAAoB;AAElD,SAAqBC,SAAS,QAAQ,aAAa;AACnD,OAAOC,KAAK,IAA2BC,SAAS,EAAEC,OAAO,QAAQ,OAAO;AACxE,OAAOC,UAAU,MAAM,sBAAsB;AAC7C,OAAOC,eAAe,MAAM,0BAA0B;AACtD,OAAOC,gBAAgB,MAAM,oBAAoB;AAAC;AAAA;AASlD,MAAMC,SAA6B,GAAIC,MAAM,IAAK;EAAA;EAChD,MAAM;MAAEC,MAAM;MAAEC,OAAO;MAAEC;IAAyC,CAAC,GAAGH,MAAM;IAAhBI,KAAK,iCAAKJ,MAAM;EAC5E,MAAMK,QAAQ,sBAAGD,KAAK,CAACE,QAAQ,8BAAIL,MAAM,CAACM,QAAQ;EAElD,MAAMC,YAAY,GAAGX,eAAe,CAACQ,QAAQ,EAAEJ,MAAM,CAAC;EAEtD,MAAMQ,GAAG,GAAGd,OAAO,CAAC,MAAM;IACxB,IAAIe,UAAU;IACd,IAAI;MACFA,UAAU,GAAGtB,SAAS,CAACuB,WAAW,CAACT,OAAO,WAAPA,OAAO,GAAI,SAAS,CAAC;IAC1D,CAAC,CAAC,OAAOU,CAAC,EAAE;MAAA;MACVF,UAAU,GAAGrB,UAAU,cAEhBe,KAAK;QACRD,cAAc,EAAEA,cAAc,WAAdA,cAAc,GAAI,KAAK;QACvCG,QAAQ,sBAAEF,KAAK,CAACE,QAAQ,+BAAID,QAAQ;QACpCQ,WAAW,eACNT,KAAK,CAACS,WAAW;UACpBL;QAAY,EACb;QACDM,cAAc;UACZC,kBAAkB,EAAE;QAAS,GAC1BX,KAAK,CAACU,cAAc,CACxB;QACDN;MAAY,IAEdN,OAAO,WAAPA,OAAO,GAAI,SAAS,CACrB;IACH;IACA,OAAOQ,UAAU;EACnB,CAAC,EAAE,CAACR,OAAO,EAAEE,KAAK,EAAED,cAAc,EAAEE,QAAQ,EAAEG,YAAY,CAAC,CAAC;EAC5DjB,aAAa,CAACyB,eAAe,CAACR,YAAY,CAAC;EAE3Cd,SAAS,CAAC,MAAM;IACde,GAAG,CAACQ,KAAK,CAACC,QAAQ,CAAC;MAAEC,IAAI,EAAE,uBAAuB;MAAEC,OAAO,EAAE;IAAK,CAAC,CAAC;EACtE,CAAC,EAAE,CAACX,GAAG,CAAC,CAAC;EAET,oBACE,KAAC,UAAU,CAAC,QAAQ;IAAC,KAAK,EAAEA,GAAI;IAAA,uBAC9B,KAAC,qBAAqB,4BAAWL,KAAK;MAAEK;IAAG;MAAA,UAAaL,KAAK,CAACiB;IAAQ;EAAyB,EAC3E;AAE1B,CAAC;AAED,MAAMC,sBAAsD,GAAIlB,KAAK,IAAK;EACxE,MAAMH,MAAM,GAAGT,SAAS,EAAE;EAE1B,oBACE,MAAC,SAAS,eAAKY,KAAK;IAAE,MAAM,EAAEH,MAAO;IAAA,kEACnC,KAAC,gBAAgB,KAAG,GACnBG,KAAK,CAACiB,QAAQ;EAAA,GACL;AAEhB,CAAC;AAED,OAAO,MAAME,qBAAqD,GAAInB,KAAK,IAAK;EAC9E,oBACE,KAAC,sBAAsB,eAAKA,KAAK;IAAE,SAAS,EAAE,QAAS;IAAA,UACpDA,KAAK,CAACiB;EAAQ,GACQ;AAE7B,CAAC"}
|
package/no-ssr/index.js
ADDED
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"index.js","names":["FronteggProviderNoSSR"],"sources":["../../../../packages/nextjs/src/no-ssr/index.ts"],"sourcesContent":["export { FronteggProviderNoSSR } from './FronteggProviderNoSSR';\nexport type { FronteggProviderNoSSRProps } from './FronteggProviderNoSSR';\n"],"mappings":"AAAA,SAASA,qBAAqB,QAAQ,yBAAyB"}
|