@frontegg/nextjs 9.2.9 → 9.2.10

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 CHANGED
@@ -1,5 +1,11 @@
1
1
  # Change Log
2
2
 
3
+ ## [9.2.10](https://github.com/frontegg/frontegg-nextjs/compare/v9.2.9...v9.2.10) (2025-10-19)
4
+
5
+
6
+ ### NextJS Wrapper 9.2.10:
7
+ - FR-22407 - Fix bypass rules for will-known routes and getInitialProps for pages architecture
8
+
3
9
  ## [9.2.9](https://github.com/frontegg/frontegg-nextjs/compare/v9.2.8...v9.2.9) (2025-8-7)
4
10
 
5
11
 
package/api/index.d.ts CHANGED
@@ -28,7 +28,7 @@ export declare const getPublicSettings: (headers: Record<string, string>) => Pro
28
28
  declare const _default: {
29
29
  loadPublicKey: () => Promise<any>;
30
30
  refreshTokenEmbedded: (headers: Record<string, string>) => Promise<Response>;
31
- refreshTokenHostedLogin: (headers: Record<string, string>, refresh_token: string, cliendId?: string | undefined, clientSecret?: string | undefined) => Promise<Response>;
31
+ refreshTokenHostedLogin: (headers: Record<string, string>, refreshToken: string, clientId?: string | undefined, clientSecret?: string | undefined) => Promise<Response>;
32
32
  getMe: (headers: Record<string, string>) => Promise<ILoginResponse | undefined>;
33
33
  getTenants: (headers: Record<string, string>) => Promise<GetCurrentUserTenantsResponse | undefined>;
34
34
  getPublicSettings: (headers: Record<string, string>) => Promise<IPublicSettingsResponse | undefined>;
package/api/index.js CHANGED
@@ -37,13 +37,13 @@ const refreshTokenEmbedded = async headers => {
37
37
  * Send HTTP post request for Frontegg services to refresh `hosted login` token
38
38
  * by providing client's fe_ as body with grant_type.
39
39
  */
40
- const refreshTokenHostedLogin = async (headers, refresh_token, cliendId, clientSecret) => {
40
+ const refreshTokenHostedLogin = async (headers, refreshToken, clientId, clientSecret) => {
41
41
  return (0, _utils.Post)({
42
42
  url: `${_config.default.baseUrl}${_urls.CommonUrls.refreshToken.hosted}`,
43
43
  body: JSON.stringify({
44
44
  grant_type: 'refresh_token',
45
- refresh_token,
46
- client_id: cliendId,
45
+ refresh_token: refreshToken,
46
+ client_id: clientId,
47
47
  client_secret: clientSecret
48
48
  }),
49
49
  headers: (0, _utils.buildRequestHeaders)(headers)
@@ -116,7 +116,7 @@ const getTenants = async headers => {
116
116
  exports.getTenants = getTenants;
117
117
  const getMeAuthorization = async headers => {
118
118
  const res = await (0, _utils.Get)({
119
- //TODO: replace this with rest/api route
119
+ // TODO: replace this with rest/api route
120
120
  url: `${_config.default.baseUrl}/frontegg/identity/resources/users/v1/me/authorization`,
121
121
  headers: (0, _utils.buildRequestHeaders)(headers)
122
122
  });
@@ -125,7 +125,7 @@ const getMeAuthorization = async headers => {
125
125
  exports.getMeAuthorization = getMeAuthorization;
126
126
  const getPublicSettings = async headers => {
127
127
  const res = await (0, _utils.Get)({
128
- //TODO: export the route url from rest-api and import from there
128
+ // TODO: export the route url from rest-api and import from there
129
129
  url: `${_config.default.baseUrl}/frontegg/tenants/resources/account-settings/v1/public`,
130
130
  headers: (0, _utils.buildRequestHeaders)(headers)
131
131
  });
package/api/index.js.map CHANGED
@@ -1 +1 @@
1
- {"version":3,"file":"index.js","names":["_config","_interopRequireDefault","require","_utils","_restApi","_urls","loadPublicKey","response","fetch","config","baseUrl","CommonUrls","WellKnown","jwks","cache","data","json","keys","refreshTokenEmbedded","headers","Post","url","refreshToken","embedded","body","credentials","buildRequestHeaders","refreshTokenHostedLogin","refresh_token","cliendId","clientSecret","hosted","JSON","stringify","grant_type","client_id","client_secret","exchangeHostedLoginToken","code","redirect_uri","appUrl","exports","getMe","headersToSend","res","Get","fronteggUsersUrl","parseHttpResponse","getEntitlements","fronteggEntitlementsV2Url","getTenants","fronteggTenantsV3Url","getMeAuthorization","getPublicSettings","_default","default"],"sources":["../../../../packages/nextjs/src/api/index.ts"],"sourcesContent":["import config from '../config';\nimport { buildRequestHeaders, Get, parseHttpResponse, Post } from './utils';\nimport {\n fronteggTenantsV3Url,\n fronteggUsersUrl,\n ILoginResponse,\n GetCurrentUserTenantsResponse,\n IPublicSettingsResponse,\n IGetUserAuthorizationResponse,\n fronteggEntitlementsV2Url,\n} from '@frontegg/rest-api';\n\nimport { UserEntitlementsResponseV2 } from '@frontegg/types';\nimport { CommonUrls } from '../utils/common/urls';\n\n/**\n * Send HTTP GET to frontegg domain public route to download the JWT public key\n */\nconst loadPublicKey = async () => {\n const response = await fetch(`${config.baseUrl}${CommonUrls.WellKnown.jwks}`, {\n cache: 'force-cache',\n });\n const data = await response.json();\n return data.keys[0];\n};\n\n/**\n * Send HTTP post-request for Frontegg services to refresh token\n * by providing client's fe_ cookies\n */\nconst refreshTokenEmbedded = async (headers: Record<string, string>) => {\n return Post({\n url: `${config.baseUrl}${CommonUrls.refreshToken.embedded}`,\n body: '{}',\n credentials: 'include',\n headers: buildRequestHeaders(headers),\n });\n};\n\n/**\n * Send HTTP post request for Frontegg services to refresh `hosted login` token\n * by providing client's fe_ as body with grant_type.\n */\nconst refreshTokenHostedLogin = async (\n headers: Record<string, string>,\n refresh_token: string,\n cliendId?: string,\n clientSecret?: string\n) => {\n return Post({\n url: `${config.baseUrl}${CommonUrls.refreshToken.hosted}`,\n body: JSON.stringify({\n grant_type: 'refresh_token',\n refresh_token,\n client_id: cliendId,\n client_secret: clientSecret,\n }),\n headers: buildRequestHeaders(headers),\n });\n};\n\n/**\n * Send HTTP post request for Frontegg services to exchange `hosted login` callback code\n */\nexport const exchangeHostedLoginToken = async (\n headers: Record<string, string>,\n code: string,\n cliendId: string,\n clientSecret: string\n) => {\n return Post({\n url: `${config.baseUrl}${CommonUrls.refreshToken.hosted}`,\n body: JSON.stringify({\n redirect_uri: `${config.appUrl}/oauth/callback`,\n grant_type: 'authorization_code',\n code,\n client_id: cliendId,\n client_secret: clientSecret,\n // code_verifier\n }),\n headers: buildRequestHeaders(headers),\n });\n};\n\n/**\n *\n * @param headers\n */\nexport const getMe = async (headers: Record<string, string>): Promise<ILoginResponse | undefined> => {\n const headersToSend = buildRequestHeaders(headers);\n const res = await Get({\n url: `${config.baseUrl}/frontegg${fronteggUsersUrl}`,\n headers: headersToSend,\n });\n return parseHttpResponse(res);\n};\n\n/**\n *\n * @param headers\n */\nexport const getEntitlements = async (\n headers: Record<string, string>\n): Promise<UserEntitlementsResponseV2 | undefined> => {\n const headersToSend = buildRequestHeaders(headers);\n const res = await Get({\n url: `${config.baseUrl}${fronteggEntitlementsV2Url}`,\n headers: headersToSend,\n });\n return parseHttpResponse(res);\n};\n\n/**\n *\n * @param headers\n */\nexport const getTenants = async (\n headers: Record<string, string>\n): Promise<GetCurrentUserTenantsResponse | undefined> => {\n const res = await Get({\n url: `${config.baseUrl}/frontegg${fronteggTenantsV3Url}`,\n headers: buildRequestHeaders(headers),\n });\n return parseHttpResponse(res);\n};\n\n/**\n *\n * @param headers\n */\nexport const getMeAuthorization = async (\n headers: Record<string, string>\n): Promise<IGetUserAuthorizationResponse | undefined> => {\n const res = await Get({\n //TODO: replace this with rest/api route\n url: `${config.baseUrl}/frontegg/identity/resources/users/v1/me/authorization`,\n headers: buildRequestHeaders(headers),\n });\n return parseHttpResponse(res);\n};\n\nexport const getPublicSettings = async (\n headers: Record<string, string>\n): Promise<IPublicSettingsResponse | undefined> => {\n const res = await Get({\n //TODO: export the route url from rest-api and import from there\n url: `${config.baseUrl}/frontegg/tenants/resources/account-settings/v1/public`,\n headers: buildRequestHeaders(headers),\n });\n return parseHttpResponse(res);\n};\n\nexport default {\n loadPublicKey,\n refreshTokenEmbedded,\n refreshTokenHostedLogin,\n getMe,\n getTenants,\n getPublicSettings,\n getEntitlements,\n exchangeHostedLoginToken,\n};\n"],"mappings":"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","ignoreList":[]}
1
+ {"version":3,"file":"index.js","names":["_config","_interopRequireDefault","require","_utils","_restApi","_urls","loadPublicKey","response","fetch","config","baseUrl","CommonUrls","WellKnown","jwks","cache","data","json","keys","refreshTokenEmbedded","headers","Post","url","refreshToken","embedded","body","credentials","buildRequestHeaders","refreshTokenHostedLogin","clientId","clientSecret","hosted","JSON","stringify","grant_type","refresh_token","client_id","client_secret","exchangeHostedLoginToken","code","cliendId","redirect_uri","appUrl","exports","getMe","headersToSend","res","Get","fronteggUsersUrl","parseHttpResponse","getEntitlements","fronteggEntitlementsV2Url","getTenants","fronteggTenantsV3Url","getMeAuthorization","getPublicSettings","_default","default"],"sources":["../../../../packages/nextjs/src/api/index.ts"],"sourcesContent":["import config from '../config';\nimport { buildRequestHeaders, Get, parseHttpResponse, Post } from './utils';\nimport {\n fronteggTenantsV3Url,\n fronteggUsersUrl,\n ILoginResponse,\n GetCurrentUserTenantsResponse,\n IPublicSettingsResponse,\n IGetUserAuthorizationResponse,\n fronteggEntitlementsV2Url,\n} from '@frontegg/rest-api';\n\nimport { UserEntitlementsResponseV2 } from '@frontegg/types';\nimport { CommonUrls } from '../utils/common/urls';\n\n/**\n * Send HTTP GET to frontegg domain public route to download the JWT public key\n */\nconst loadPublicKey = async () => {\n const response = await fetch(`${config.baseUrl}${CommonUrls.WellKnown.jwks}`, {\n cache: 'force-cache',\n });\n const data = await response.json();\n return data.keys[0];\n};\n\n/**\n * Send HTTP post-request for Frontegg services to refresh token\n * by providing client's fe_ cookies\n */\nconst refreshTokenEmbedded = async (headers: Record<string, string>) => {\n return Post({\n url: `${config.baseUrl}${CommonUrls.refreshToken.embedded}`,\n body: '{}',\n credentials: 'include',\n headers: buildRequestHeaders(headers),\n });\n};\n\n/**\n * Send HTTP post request for Frontegg services to refresh `hosted login` token\n * by providing client's fe_ as body with grant_type.\n */\nconst refreshTokenHostedLogin = async (\n headers: Record<string, string>,\n refreshToken: string,\n clientId?: string,\n clientSecret?: string\n) => {\n return Post({\n url: `${config.baseUrl}${CommonUrls.refreshToken.hosted}`,\n body: JSON.stringify({\n grant_type: 'refresh_token',\n refresh_token: refreshToken,\n client_id: clientId,\n client_secret: clientSecret,\n }),\n headers: buildRequestHeaders(headers),\n });\n};\n\n/**\n * Send HTTP post request for Frontegg services to exchange `hosted login` callback code\n */\nexport const exchangeHostedLoginToken = async (\n headers: Record<string, string>,\n code: string,\n cliendId: string,\n clientSecret: string\n) => {\n return Post({\n url: `${config.baseUrl}${CommonUrls.refreshToken.hosted}`,\n body: JSON.stringify({\n redirect_uri: `${config.appUrl}/oauth/callback`,\n grant_type: 'authorization_code',\n code,\n client_id: cliendId,\n client_secret: clientSecret,\n // code_verifier\n }),\n headers: buildRequestHeaders(headers),\n });\n};\n\n/**\n *\n * @param headers\n */\nexport const getMe = async (headers: Record<string, string>): Promise<ILoginResponse | undefined> => {\n const headersToSend = buildRequestHeaders(headers);\n const res = await Get({\n url: `${config.baseUrl}/frontegg${fronteggUsersUrl}`,\n headers: headersToSend,\n });\n return parseHttpResponse(res);\n};\n\n/**\n *\n * @param headers\n */\nexport const getEntitlements = async (\n headers: Record<string, string>\n): Promise<UserEntitlementsResponseV2 | undefined> => {\n const headersToSend = buildRequestHeaders(headers);\n const res = await Get({\n url: `${config.baseUrl}${fronteggEntitlementsV2Url}`,\n headers: headersToSend,\n });\n return parseHttpResponse(res);\n};\n\n/**\n *\n * @param headers\n */\nexport const getTenants = async (\n headers: Record<string, string>\n): Promise<GetCurrentUserTenantsResponse | undefined> => {\n const res = await Get({\n url: `${config.baseUrl}/frontegg${fronteggTenantsV3Url}`,\n headers: buildRequestHeaders(headers),\n });\n return parseHttpResponse(res);\n};\n\n/**\n *\n * @param headers\n */\nexport const getMeAuthorization = async (\n headers: Record<string, string>\n): Promise<IGetUserAuthorizationResponse | undefined> => {\n const res = await Get({\n // TODO: replace this with rest/api route\n url: `${config.baseUrl}/frontegg/identity/resources/users/v1/me/authorization`,\n headers: buildRequestHeaders(headers),\n });\n return parseHttpResponse(res);\n};\n\nexport const getPublicSettings = async (\n headers: Record<string, string>\n): Promise<IPublicSettingsResponse | undefined> => {\n const res = await Get({\n // TODO: export the route url from rest-api and import from there\n url: `${config.baseUrl}/frontegg/tenants/resources/account-settings/v1/public`,\n headers: buildRequestHeaders(headers),\n });\n return parseHttpResponse(res);\n};\n\nexport default {\n loadPublicKey,\n refreshTokenEmbedded,\n refreshTokenHostedLogin,\n getMe,\n getTenants,\n getPublicSettings,\n getEntitlements,\n exchangeHostedLoginToken,\n};\n"],"mappings":"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","ignoreList":[]}
@@ -12,6 +12,7 @@ const _excluded = ["authenticatedUrl"];
12
12
  const staticFilesRegex = new RegExp('^/(_next/static).*');
13
13
  const imageOptimizationRegex = new RegExp('^/(_next/image).*');
14
14
  const headerRequestsRegex = new RegExp('^/(favicon.ico).*');
15
+ const willKnownRequestsRegex = new RegExp('^/(.well-known)/.*');
15
16
  const fronteggMiddlewareRegex = new RegExp('^/(api/frontegg).*');
16
17
  /**
17
18
  * Use `shouldByPassMiddleware` in the middleware.ts file
@@ -31,7 +32,8 @@ const shouldByPassMiddleware = (pathname, headers, options) => {
31
32
  const _options = (0, _extends2.default)({
32
33
  bypassStaticFiles: true,
33
34
  bypassImageOptimization: true,
34
- bypassHeaderRequests: true
35
+ bypassHeaderRequests: true,
36
+ bypassWillKnownRoutes: true
35
37
  }, options, {
36
38
  bypassFronteggMiddleware: true,
37
39
  bypassFronteggRoutes: true,
@@ -40,6 +42,7 @@ const shouldByPassMiddleware = (pathname, headers, options) => {
40
42
  const isStaticFiles = staticFilesRegex.test(pathname);
41
43
  const isImageOptimization = imageOptimizationRegex.test(pathname);
42
44
  const isHeaderRequests = headerRequestsRegex.test(pathname);
45
+ const isWillKnownRoutes = willKnownRequestsRegex.test(pathname);
43
46
  const isFronteggMiddleware = fronteggMiddlewareRegex.test(pathname);
44
47
  const authRoutes = (0, _objectWithoutPropertiesLoose2.default)(_routing.defaultFronteggRoutes, _excluded);
45
48
  const isFronteggRoutes = Object.values(authRoutes).find(path => pathname.startsWith(path)) != null;
@@ -47,6 +50,7 @@ const shouldByPassMiddleware = (pathname, headers, options) => {
47
50
  if (isImageOptimization) return _options.bypassImageOptimization;
48
51
  if (isHeaderRequests) return _options.bypassHeaderRequests;
49
52
  if (isFronteggMiddleware) return _options.bypassFronteggMiddleware;
53
+ if (isWillKnownRoutes) return _options.bypassWillKnownRoutes;
50
54
  if (isFronteggRoutes) return _options.bypassFronteggRoutes;
51
55
  const isPrefetchRequest = headers.has('next-router-prefetch') || headers.get('purpose') === 'prefetch';
52
56
  const secFetchModeHeader = headers.get('sec-fetch-mode');
@@ -55,7 +59,7 @@ const shouldByPassMiddleware = (pathname, headers, options) => {
55
59
 
56
60
  // noinspection RedundantIfStatementJS
57
61
  if (isPrefetchRequest && !isBrowserAddressBarPrefetch) {
58
- /** bypass prefetch requests on hovering links that leads to SSG pages **/
62
+ /* bypass prefetch requests on hovering links that leads to SSG pages */
59
63
  return true;
60
64
  }
61
65
  return false;
@@ -1 +1 @@
1
- {"version":3,"file":"shouldBypassMiddleware.js","names":["_routing","require","_excluded","staticFilesRegex","RegExp","imageOptimizationRegex","headerRequestsRegex","fronteggMiddlewareRegex","shouldByPassMiddleware","pathname","headers","options","_options","_extends2","default","bypassStaticFiles","bypassImageOptimization","bypassHeaderRequests","bypassFronteggMiddleware","bypassFronteggRoutes","bypassAuthSamlCallback","isStaticFiles","test","isImageOptimization","isHeaderRequests","isFronteggMiddleware","authRoutes","_objectWithoutPropertiesLoose2","defaultFronteggRoutes","isFronteggRoutes","Object","values","find","path","startsWith","isPrefetchRequest","has","get","secFetchModeHeader","secFetchDestHeader","isBrowserAddressBarPrefetch","exports"],"sources":["../../../../packages/nextjs/src/edge/shouldBypassMiddleware.ts"],"sourcesContent":["import type { NextRequest } from 'next/server';\n\nimport { defaultFronteggRoutes } from '../utils/routing';\n\nconst staticFilesRegex = new RegExp('^/(_next/static).*');\nconst imageOptimizationRegex = new RegExp('^/(_next/image).*');\nconst headerRequestsRegex = new RegExp('^/(favicon.ico).*');\nconst fronteggMiddlewareRegex = new RegExp('^/(api/frontegg).*');\n\ninterface ByPassOptions {\n bypassStaticFiles?: boolean; // default: true\n bypassImageOptimization?: boolean; // default: true\n bypassHeaderRequests?: boolean; // default: true\n}\n\n/**\n * Use `shouldByPassMiddleware` in the middleware.ts file\n * to protect all application's routes.\n * You can override whitelist by passing options parameter\n * NOTE: this will slow down your application due to session check on each\n * static files and image request\n *\n * The default whitelist:\n * - _next/static (static files)\n * - _next/image (image optimization files)\n * - favicon.ico (favicon file)\n * - api/frontegg (API frontegg middleware)\n * - account/[login|logout|saml/callback|...] (frontegg authentication routes)\n */\nexport const shouldByPassMiddleware = (\n pathname: string,\n headers: NextRequest['headers'],\n options?: ByPassOptions\n): boolean => {\n const _options = {\n bypassStaticFiles: true,\n bypassImageOptimization: true,\n bypassHeaderRequests: true,\n ...options,\n bypassFronteggMiddleware: true,\n bypassFronteggRoutes: true,\n bypassAuthSamlCallback: true,\n };\n\n const isStaticFiles = staticFilesRegex.test(pathname);\n const isImageOptimization = imageOptimizationRegex.test(pathname);\n const isHeaderRequests = headerRequestsRegex.test(pathname);\n const isFronteggMiddleware = fronteggMiddlewareRegex.test(pathname);\n\n const { authenticatedUrl, ...authRoutes } = defaultFronteggRoutes;\n const isFronteggRoutes = Object.values(authRoutes).find((path) => pathname.startsWith(path)) != null;\n\n if (isStaticFiles) return _options.bypassStaticFiles;\n if (isImageOptimization) return _options.bypassImageOptimization;\n if (isHeaderRequests) return _options.bypassHeaderRequests;\n if (isFronteggMiddleware) return _options.bypassFronteggMiddleware;\n if (isFronteggRoutes) return _options.bypassFronteggRoutes;\n\n const isPrefetchRequest = headers.has('next-router-prefetch') || headers.get('purpose') === 'prefetch';\n const secFetchModeHeader = headers.get('sec-fetch-mode');\n const secFetchDestHeader = headers.get('sec-fetch-dest');\n\n const isBrowserAddressBarPrefetch =\n isPrefetchRequest && secFetchModeHeader === 'navigate' && secFetchDestHeader === 'document';\n\n // noinspection RedundantIfStatementJS\n if (isPrefetchRequest && !isBrowserAddressBarPrefetch) {\n /** bypass prefetch requests on hovering links that leads to SSG pages **/\n return true;\n }\n\n return false;\n};\n"],"mappings":";;;;;;;;;AAEA,IAAAA,QAAA,GAAAC,OAAA;AAAyD,MAAAC,SAAA;AAEzD,MAAMC,gBAAgB,GAAG,IAAIC,MAAM,CAAC,oBAAoB,CAAC;AACzD,MAAMC,sBAAsB,GAAG,IAAID,MAAM,CAAC,mBAAmB,CAAC;AAC9D,MAAME,mBAAmB,GAAG,IAAIF,MAAM,CAAC,mBAAmB,CAAC;AAC3D,MAAMG,uBAAuB,GAAG,IAAIH,MAAM,CAAC,oBAAoB,CAAC;AAQhE;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACO,MAAMI,sBAAsB,GAAGA,CACpCC,QAAgB,EAChBC,OAA+B,EAC/BC,OAAuB,KACX;EACZ,MAAMC,QAAQ,OAAAC,SAAA,CAAAC,OAAA;IACZC,iBAAiB,EAAE,IAAI;IACvBC,uBAAuB,EAAE,IAAI;IAC7BC,oBAAoB,EAAE;EAAI,GACvBN,OAAO;IACVO,wBAAwB,EAAE,IAAI;IAC9BC,oBAAoB,EAAE,IAAI;IAC1BC,sBAAsB,EAAE;EAAI,EAC7B;EAED,MAAMC,aAAa,GAAGlB,gBAAgB,CAACmB,IAAI,CAACb,QAAQ,CAAC;EACrD,MAAMc,mBAAmB,GAAGlB,sBAAsB,CAACiB,IAAI,CAACb,QAAQ,CAAC;EACjE,MAAMe,gBAAgB,GAAGlB,mBAAmB,CAACgB,IAAI,CAACb,QAAQ,CAAC;EAC3D,MAAMgB,oBAAoB,GAAGlB,uBAAuB,CAACe,IAAI,CAACb,QAAQ,CAAC;EAEnE,MAA6BiB,UAAU,OAAAC,8BAAA,CAAAb,OAAA,EAAKc,8BAAqB,EAAA1B,SAAA;EACjE,MAAM2B,gBAAgB,GAAGC,MAAM,CAACC,MAAM,CAACL,UAAU,CAAC,CAACM,IAAI,CAAEC,IAAI,IAAKxB,QAAQ,CAACyB,UAAU,CAACD,IAAI,CAAC,CAAC,IAAI,IAAI;EAEpG,IAAIZ,aAAa,EAAE,OAAOT,QAAQ,CAACG,iBAAiB;EACpD,IAAIQ,mBAAmB,EAAE,OAAOX,QAAQ,CAACI,uBAAuB;EAChE,IAAIQ,gBAAgB,EAAE,OAAOZ,QAAQ,CAACK,oBAAoB;EAC1D,IAAIQ,oBAAoB,EAAE,OAAOb,QAAQ,CAACM,wBAAwB;EAClE,IAAIW,gBAAgB,EAAE,OAAOjB,QAAQ,CAACO,oBAAoB;EAE1D,MAAMgB,iBAAiB,GAAGzB,OAAO,CAAC0B,GAAG,CAAC,sBAAsB,CAAC,IAAI1B,OAAO,CAAC2B,GAAG,CAAC,SAAS,CAAC,KAAK,UAAU;EACtG,MAAMC,kBAAkB,GAAG5B,OAAO,CAAC2B,GAAG,CAAC,gBAAgB,CAAC;EACxD,MAAME,kBAAkB,GAAG7B,OAAO,CAAC2B,GAAG,CAAC,gBAAgB,CAAC;EAExD,MAAMG,2BAA2B,GAC/BL,iBAAiB,IAAIG,kBAAkB,KAAK,UAAU,IAAIC,kBAAkB,KAAK,UAAU;;EAE7F;EACA,IAAIJ,iBAAiB,IAAI,CAACK,2BAA2B,EAAE;IACrD;IACA,OAAO,IAAI;EACb;EAEA,OAAO,KAAK;AACd,CAAC;AAACC,OAAA,CAAAjC,sBAAA,GAAAA,sBAAA","ignoreList":[]}
1
+ {"version":3,"file":"shouldBypassMiddleware.js","names":["_routing","require","_excluded","staticFilesRegex","RegExp","imageOptimizationRegex","headerRequestsRegex","willKnownRequestsRegex","fronteggMiddlewareRegex","shouldByPassMiddleware","pathname","headers","options","_options","_extends2","default","bypassStaticFiles","bypassImageOptimization","bypassHeaderRequests","bypassWillKnownRoutes","bypassFronteggMiddleware","bypassFronteggRoutes","bypassAuthSamlCallback","isStaticFiles","test","isImageOptimization","isHeaderRequests","isWillKnownRoutes","isFronteggMiddleware","authRoutes","_objectWithoutPropertiesLoose2","defaultFronteggRoutes","isFronteggRoutes","Object","values","find","path","startsWith","isPrefetchRequest","has","get","secFetchModeHeader","secFetchDestHeader","isBrowserAddressBarPrefetch","exports"],"sources":["../../../../packages/nextjs/src/edge/shouldBypassMiddleware.ts"],"sourcesContent":["import type { NextRequest } from 'next/server';\n\nimport { defaultFronteggRoutes } from '../utils/routing';\n\nconst staticFilesRegex = new RegExp('^/(_next/static).*');\nconst imageOptimizationRegex = new RegExp('^/(_next/image).*');\nconst headerRequestsRegex = new RegExp('^/(favicon.ico).*');\nconst willKnownRequestsRegex = new RegExp('^/(.well-known)/.*');\nconst fronteggMiddlewareRegex = new RegExp('^/(api/frontegg).*');\n\ninterface ByPassOptions {\n bypassStaticFiles?: boolean; // default: true\n bypassImageOptimization?: boolean; // default: true\n bypassHeaderRequests?: boolean; // default: true\n}\n\n/**\n * Use `shouldByPassMiddleware` in the middleware.ts file\n * to protect all application's routes.\n * You can override whitelist by passing options parameter\n * NOTE: this will slow down your application due to session check on each\n * static files and image request\n *\n * The default whitelist:\n * - _next/static (static files)\n * - _next/image (image optimization files)\n * - favicon.ico (favicon file)\n * - api/frontegg (API frontegg middleware)\n * - account/[login|logout|saml/callback|...] (frontegg authentication routes)\n */\nexport const shouldByPassMiddleware = (\n pathname: string,\n headers: NextRequest['headers'],\n options?: ByPassOptions\n): boolean => {\n const _options = {\n bypassStaticFiles: true,\n bypassImageOptimization: true,\n bypassHeaderRequests: true,\n bypassWillKnownRoutes: true,\n ...options,\n bypassFronteggMiddleware: true,\n bypassFronteggRoutes: true,\n bypassAuthSamlCallback: true,\n };\n\n const isStaticFiles = staticFilesRegex.test(pathname);\n const isImageOptimization = imageOptimizationRegex.test(pathname);\n const isHeaderRequests = headerRequestsRegex.test(pathname);\n const isWillKnownRoutes = willKnownRequestsRegex.test(pathname);\n const isFronteggMiddleware = fronteggMiddlewareRegex.test(pathname);\n\n const { authenticatedUrl, ...authRoutes } = defaultFronteggRoutes;\n const isFronteggRoutes = Object.values(authRoutes).find((path) => pathname.startsWith(path)) != null;\n\n if (isStaticFiles) return _options.bypassStaticFiles;\n if (isImageOptimization) return _options.bypassImageOptimization;\n if (isHeaderRequests) return _options.bypassHeaderRequests;\n if (isFronteggMiddleware) return _options.bypassFronteggMiddleware;\n if (isWillKnownRoutes) return _options.bypassWillKnownRoutes;\n if (isFronteggRoutes) return _options.bypassFronteggRoutes;\n\n const isPrefetchRequest = headers.has('next-router-prefetch') || headers.get('purpose') === 'prefetch';\n const secFetchModeHeader = headers.get('sec-fetch-mode');\n const secFetchDestHeader = headers.get('sec-fetch-dest');\n\n const isBrowserAddressBarPrefetch =\n isPrefetchRequest && secFetchModeHeader === 'navigate' && secFetchDestHeader === 'document';\n\n // noinspection RedundantIfStatementJS\n if (isPrefetchRequest && !isBrowserAddressBarPrefetch) {\n /* bypass prefetch requests on hovering links that leads to SSG pages */\n return true;\n }\n\n return false;\n};\n"],"mappings":";;;;;;;;;AAEA,IAAAA,QAAA,GAAAC,OAAA;AAAyD,MAAAC,SAAA;AAEzD,MAAMC,gBAAgB,GAAG,IAAIC,MAAM,CAAC,oBAAoB,CAAC;AACzD,MAAMC,sBAAsB,GAAG,IAAID,MAAM,CAAC,mBAAmB,CAAC;AAC9D,MAAME,mBAAmB,GAAG,IAAIF,MAAM,CAAC,mBAAmB,CAAC;AAC3D,MAAMG,sBAAsB,GAAG,IAAIH,MAAM,CAAC,oBAAoB,CAAC;AAC/D,MAAMI,uBAAuB,GAAG,IAAIJ,MAAM,CAAC,oBAAoB,CAAC;AAQhE;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACO,MAAMK,sBAAsB,GAAGA,CACpCC,QAAgB,EAChBC,OAA+B,EAC/BC,OAAuB,KACX;EACZ,MAAMC,QAAQ,OAAAC,SAAA,CAAAC,OAAA;IACZC,iBAAiB,EAAE,IAAI;IACvBC,uBAAuB,EAAE,IAAI;IAC7BC,oBAAoB,EAAE,IAAI;IAC1BC,qBAAqB,EAAE;EAAI,GACxBP,OAAO;IACVQ,wBAAwB,EAAE,IAAI;IAC9BC,oBAAoB,EAAE,IAAI;IAC1BC,sBAAsB,EAAE;EAAI,EAC7B;EAED,MAAMC,aAAa,GAAGpB,gBAAgB,CAACqB,IAAI,CAACd,QAAQ,CAAC;EACrD,MAAMe,mBAAmB,GAAGpB,sBAAsB,CAACmB,IAAI,CAACd,QAAQ,CAAC;EACjE,MAAMgB,gBAAgB,GAAGpB,mBAAmB,CAACkB,IAAI,CAACd,QAAQ,CAAC;EAC3D,MAAMiB,iBAAiB,GAAGpB,sBAAsB,CAACiB,IAAI,CAACd,QAAQ,CAAC;EAC/D,MAAMkB,oBAAoB,GAAGpB,uBAAuB,CAACgB,IAAI,CAACd,QAAQ,CAAC;EAEnE,MAA6BmB,UAAU,OAAAC,8BAAA,CAAAf,OAAA,EAAKgB,8BAAqB,EAAA7B,SAAA;EACjE,MAAM8B,gBAAgB,GAAGC,MAAM,CAACC,MAAM,CAACL,UAAU,CAAC,CAACM,IAAI,CAAEC,IAAI,IAAK1B,QAAQ,CAAC2B,UAAU,CAACD,IAAI,CAAC,CAAC,IAAI,IAAI;EAEpG,IAAIb,aAAa,EAAE,OAAOV,QAAQ,CAACG,iBAAiB;EACpD,IAAIS,mBAAmB,EAAE,OAAOZ,QAAQ,CAACI,uBAAuB;EAChE,IAAIS,gBAAgB,EAAE,OAAOb,QAAQ,CAACK,oBAAoB;EAC1D,IAAIU,oBAAoB,EAAE,OAAOf,QAAQ,CAACO,wBAAwB;EAClE,IAAIO,iBAAiB,EAAE,OAAOd,QAAQ,CAACM,qBAAqB;EAC5D,IAAIa,gBAAgB,EAAE,OAAOnB,QAAQ,CAACQ,oBAAoB;EAE1D,MAAMiB,iBAAiB,GAAG3B,OAAO,CAAC4B,GAAG,CAAC,sBAAsB,CAAC,IAAI5B,OAAO,CAAC6B,GAAG,CAAC,SAAS,CAAC,KAAK,UAAU;EACtG,MAAMC,kBAAkB,GAAG9B,OAAO,CAAC6B,GAAG,CAAC,gBAAgB,CAAC;EACxD,MAAME,kBAAkB,GAAG/B,OAAO,CAAC6B,GAAG,CAAC,gBAAgB,CAAC;EAExD,MAAMG,2BAA2B,GAC/BL,iBAAiB,IAAIG,kBAAkB,KAAK,UAAU,IAAIC,kBAAkB,KAAK,UAAU;;EAE7F;EACA,IAAIJ,iBAAiB,IAAI,CAACK,2BAA2B,EAAE;IACrD;IACA,OAAO,IAAI;EACb;EAEA,OAAO,KAAK;AACd,CAAC;AAACC,OAAA,CAAAnC,sBAAA,GAAAA,sBAAA","ignoreList":[]}
package/index.js CHANGED
@@ -1,4 +1,4 @@
1
- /** @license Frontegg v9.2.9
1
+ /** @license Frontegg v9.2.10
2
2
  *
3
3
  * This source code is licensed under the MIT license found in the
4
4
  * LICENSE file in the root directory of this source tree.
package/package.json CHANGED
@@ -1,7 +1,7 @@
1
1
  {
2
2
  "name": "@frontegg/nextjs",
3
3
  "libName": "FronteggNextJs",
4
- "version": "9.2.9",
4
+ "version": "9.2.10",
5
5
  "author": "Frontegg LTD",
6
6
  "license": "MIT",
7
7
  "repository": {
@@ -27,8 +27,8 @@
27
27
  "lint-json": "eslint -c .eslintrc.json -o ./lint-report.json --format json --no-color ./src/**/*.{ts,tsx}"
28
28
  },
29
29
  "dependencies": {
30
- "@frontegg/js": "7.80.0",
31
- "@frontegg/react-hooks": "7.80.0",
30
+ "@frontegg/js": "7.92.0",
31
+ "@frontegg/react-hooks": "7.92.0",
32
32
  "http-proxy": "^1.18.1",
33
33
  "iron-session": "^6.3.1",
34
34
  "jose": "^4.12.2"
@@ -0,0 +1,15 @@
1
+ import { IncomingHttpHeaders } from 'http';
2
+ interface ByPassOptions {
3
+ bypassNextJsFiles?: boolean;
4
+ bypassWillKnownRoutes?: boolean;
5
+ bypassHeaderRequests?: boolean;
6
+ }
7
+ /**
8
+ * Use `shouldBypassGetInitialProps` in the withFronteggApp.ts file
9
+ * to protect all application's routes.
10
+ * You can override whitelist by passing options parameter
11
+ * NOTE: this will slow down your application due to session check on each
12
+ * static files and image request
13
+ */
14
+ export declare const shouldBypassGetInitialProps: (pathname: string, headers?: IncomingHttpHeaders, options?: ByPassOptions) => boolean;
15
+ export {};
@@ -0,0 +1,58 @@
1
+ "use strict";
2
+
3
+ var _interopRequireDefault = require("@babel/runtime/helpers/interopRequireDefault");
4
+ Object.defineProperty(exports, "__esModule", {
5
+ value: true
6
+ });
7
+ exports.shouldBypassGetInitialProps = void 0;
8
+ var _extends2 = _interopRequireDefault(require("@babel/runtime/helpers/extends"));
9
+ var _fronteggLogger = _interopRequireDefault(require("../../utils/fronteggLogger"));
10
+ const nextJsFilesRegex = new RegExp('^/(_next/).*');
11
+ const headerRequestsRegex = new RegExp('^/(favicon.ico).*');
12
+ const willKnownRequestsRegex = new RegExp('^/(.well-known)/.*');
13
+ /**
14
+ * Use `shouldBypassGetInitialProps` in the withFronteggApp.ts file
15
+ * to protect all application's routes.
16
+ * You can override whitelist by passing options parameter
17
+ * NOTE: this will slow down your application due to session check on each
18
+ * static files and image request
19
+ */
20
+ const shouldBypassGetInitialProps = (pathname, headers, options) => {
21
+ const logger = _fronteggLogger.default.child({
22
+ tag: 'shouldBypassGetInitialProps'
23
+ });
24
+ const _options = (0, _extends2.default)({
25
+ bypassNextJsFiles: true,
26
+ bypassHeaderRequests: true,
27
+ bypassWillKnownRoutes: true
28
+ }, options);
29
+ const isNextJsFiles = nextJsFilesRegex.test(pathname);
30
+ const isHeaderRequests = headerRequestsRegex.test(pathname);
31
+ const isWillKnownRoutes = willKnownRequestsRegex.test(pathname);
32
+ logger.debug(`${pathname}`, {
33
+ options,
34
+ checks: {
35
+ isNextJsFiles,
36
+ isHeaderRequests,
37
+ isWillKnownRoutes
38
+ }
39
+ });
40
+ if (isNextJsFiles) return _options.bypassNextJsFiles;
41
+ if (isHeaderRequests) return _options.bypassHeaderRequests;
42
+ if (isWillKnownRoutes) return _options.bypassWillKnownRoutes;
43
+ if (!headers) {
44
+ return false;
45
+ }
46
+ const isPrefetchRequest = headers['next-router-prefetch'] || headers.purpose === 'prefetch';
47
+ const secFetchModeHeader = headers['sec-fetch-mode'];
48
+ const secFetchDestHeader = headers['sec-fetch-dest'];
49
+ const isBrowserAddressBarPrefetch = isPrefetchRequest && secFetchModeHeader === 'navigate' && secFetchDestHeader === 'document';
50
+
51
+ // noinspection RedundantIfStatementJS
52
+ if (isPrefetchRequest && !isBrowserAddressBarPrefetch) {
53
+ return true;
54
+ }
55
+ return false;
56
+ };
57
+ exports.shouldBypassGetInitialProps = shouldBypassGetInitialProps;
58
+ //# sourceMappingURL=shouldBypassGetInitialProps.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"shouldBypassGetInitialProps.js","names":["_fronteggLogger","_interopRequireDefault","require","nextJsFilesRegex","RegExp","headerRequestsRegex","willKnownRequestsRegex","shouldBypassGetInitialProps","pathname","headers","options","logger","fronteggLogger","child","tag","_options","_extends2","default","bypassNextJsFiles","bypassHeaderRequests","bypassWillKnownRoutes","isNextJsFiles","test","isHeaderRequests","isWillKnownRoutes","debug","checks","isPrefetchRequest","purpose","secFetchModeHeader","secFetchDestHeader","isBrowserAddressBarPrefetch","exports"],"sources":["../../../../../packages/nextjs/src/pages/withFronteggApp/shouldBypassGetInitialProps.ts"],"sourcesContent":["import { IncomingHttpHeaders } from 'http';\nimport fronteggLogger from '../../utils/fronteggLogger';\n\nconst nextJsFilesRegex = new RegExp('^/(_next/).*');\nconst headerRequestsRegex = new RegExp('^/(favicon.ico).*');\nconst willKnownRequestsRegex = new RegExp('^/(.well-known)/.*');\n\ninterface ByPassOptions {\n bypassNextJsFiles?: boolean;\n bypassWillKnownRoutes?: boolean; // default: true\n bypassHeaderRequests?: boolean; // default: true\n}\n\n/**\n * Use `shouldBypassGetInitialProps` in the withFronteggApp.ts file\n * to protect all application's routes.\n * You can override whitelist by passing options parameter\n * NOTE: this will slow down your application due to session check on each\n * static files and image request\n */\nexport const shouldBypassGetInitialProps = (\n pathname: string,\n headers?: IncomingHttpHeaders,\n options?: ByPassOptions\n): boolean => {\n const logger = fronteggLogger.child({ tag: 'shouldBypassGetInitialProps' });\n const _options = {\n bypassNextJsFiles: true,\n bypassHeaderRequests: true,\n bypassWillKnownRoutes: true,\n ...options,\n };\n\n const isNextJsFiles = nextJsFilesRegex.test(pathname);\n const isHeaderRequests = headerRequestsRegex.test(pathname);\n const isWillKnownRoutes = willKnownRequestsRegex.test(pathname);\n\n logger.debug(`${pathname}`, { options, checks: { isNextJsFiles, isHeaderRequests, isWillKnownRoutes } });\n\n if (isNextJsFiles) return _options.bypassNextJsFiles;\n if (isHeaderRequests) return _options.bypassHeaderRequests;\n if (isWillKnownRoutes) return _options.bypassWillKnownRoutes;\n\n if (!headers) {\n return false;\n }\n const isPrefetchRequest = headers['next-router-prefetch'] || headers.purpose === 'prefetch';\n const secFetchModeHeader = headers['sec-fetch-mode'];\n const secFetchDestHeader = headers['sec-fetch-dest'];\n\n const isBrowserAddressBarPrefetch =\n isPrefetchRequest && secFetchModeHeader === 'navigate' && secFetchDestHeader === 'document';\n\n // noinspection RedundantIfStatementJS\n if (isPrefetchRequest && !isBrowserAddressBarPrefetch) {\n return true;\n }\n\n return false;\n};\n"],"mappings":";;;;;;;;AACA,IAAAA,eAAA,GAAAC,sBAAA,CAAAC,OAAA;AAEA,MAAMC,gBAAgB,GAAG,IAAIC,MAAM,CAAC,cAAc,CAAC;AACnD,MAAMC,mBAAmB,GAAG,IAAID,MAAM,CAAC,mBAAmB,CAAC;AAC3D,MAAME,sBAAsB,GAAG,IAAIF,MAAM,CAAC,oBAAoB,CAAC;AAQ/D;AACA;AACA;AACA;AACA;AACA;AACA;AACO,MAAMG,2BAA2B,GAAGA,CACzCC,QAAgB,EAChBC,OAA6B,EAC7BC,OAAuB,KACX;EACZ,MAAMC,MAAM,GAAGC,uBAAc,CAACC,KAAK,CAAC;IAAEC,GAAG,EAAE;EAA8B,CAAC,CAAC;EAC3E,MAAMC,QAAQ,OAAAC,SAAA,CAAAC,OAAA;IACZC,iBAAiB,EAAE,IAAI;IACvBC,oBAAoB,EAAE,IAAI;IAC1BC,qBAAqB,EAAE;EAAI,GACxBV,OAAO,CACX;EAED,MAAMW,aAAa,GAAGlB,gBAAgB,CAACmB,IAAI,CAACd,QAAQ,CAAC;EACrD,MAAMe,gBAAgB,GAAGlB,mBAAmB,CAACiB,IAAI,CAACd,QAAQ,CAAC;EAC3D,MAAMgB,iBAAiB,GAAGlB,sBAAsB,CAACgB,IAAI,CAACd,QAAQ,CAAC;EAE/DG,MAAM,CAACc,KAAK,CAAC,GAAGjB,QAAQ,EAAE,EAAE;IAAEE,OAAO;IAAEgB,MAAM,EAAE;MAAEL,aAAa;MAAEE,gBAAgB;MAAEC;IAAkB;EAAE,CAAC,CAAC;EAExG,IAAIH,aAAa,EAAE,OAAON,QAAQ,CAACG,iBAAiB;EACpD,IAAIK,gBAAgB,EAAE,OAAOR,QAAQ,CAACI,oBAAoB;EAC1D,IAAIK,iBAAiB,EAAE,OAAOT,QAAQ,CAACK,qBAAqB;EAE5D,IAAI,CAACX,OAAO,EAAE;IACZ,OAAO,KAAK;EACd;EACA,MAAMkB,iBAAiB,GAAGlB,OAAO,CAAC,sBAAsB,CAAC,IAAIA,OAAO,CAACmB,OAAO,KAAK,UAAU;EAC3F,MAAMC,kBAAkB,GAAGpB,OAAO,CAAC,gBAAgB,CAAC;EACpD,MAAMqB,kBAAkB,GAAGrB,OAAO,CAAC,gBAAgB,CAAC;EAEpD,MAAMsB,2BAA2B,GAC/BJ,iBAAiB,IAAIE,kBAAkB,KAAK,UAAU,IAAIC,kBAAkB,KAAK,UAAU;;EAE7F;EACA,IAAIH,iBAAiB,IAAI,CAACI,2BAA2B,EAAE;IACrD,OAAO,IAAI;EACb;EAEA,OAAO,KAAK;AACd,CAAC;AAACC,OAAA,CAAAzB,2BAAA,GAAAA,2BAAA","ignoreList":[]}
@@ -12,33 +12,46 @@ var _refreshAccessTokenIfNeeded = _interopRequireWildcard(require("../../utils/r
12
12
  var _fetchUserData = _interopRequireDefault(require("../../utils/fetchUserData"));
13
13
  var _config = _interopRequireDefault(require("../../config"));
14
14
  var _helpers = require("../../middleware/helpers");
15
+ var _shouldBypassGetInitialProps = require("./shouldBypassGetInitialProps");
16
+ var _fronteggLogger = _interopRequireDefault(require("../../utils/fronteggLogger"));
15
17
  var _jsxRuntime = require("react/jsx-runtime");
16
18
  function _getRequireWildcardCache(e) { if ("function" != typeof WeakMap) return null; var r = new WeakMap(), t = new WeakMap(); return (_getRequireWildcardCache = function (e) { return e ? t : r; })(e); }
17
19
  function _interopRequireWildcard(e, r) { if (!r && e && e.__esModule) return e; if (null === e || "object" != typeof e && "function" != typeof e) return { default: e }; var t = _getRequireWildcardCache(r); if (t && t.has(e)) return t.get(e); var n = { __proto__: null }, a = Object.defineProperty && Object.getOwnPropertyDescriptor; for (var u in e) if ("default" !== u && {}.hasOwnProperty.call(e, u)) { var i = a ? Object.getOwnPropertyDescriptor(e, u) : null; i && (i.get || i.set) ? Object.defineProperty(n, u, i) : n[u] = e[u]; } return n.default = e, t && t.set(e, n), n; }
18
20
  const withFronteggApp = (app, options) => {
19
21
  const originalGetInitialProps = app.getInitialProps;
20
22
  app.getInitialProps = async appContext => {
23
+ var _ctx$req$url, _ctx$req, _ctx$req2;
21
24
  const {
22
25
  ctx,
23
26
  router,
24
27
  Component
25
28
  } = appContext;
29
+ const logger = _fronteggLogger.default.child({
30
+ tag: 'withFronteggApp'
31
+ });
26
32
  const isSSG = router.isReady == false && router.isPreview == false;
27
33
  _config.default.checkHostedLoginConfig(options);
28
34
  let appEnvConfig = {};
29
- let appContextSessionData = {
35
+ const appContextSessionData = {
30
36
  session: null,
31
37
  user: null,
32
38
  tenants: null
33
39
  };
40
+ if ((0, _shouldBypassGetInitialProps.shouldBypassGetInitialProps)((_ctx$req$url = (_ctx$req = ctx.req) == null ? void 0 : _ctx$req.url) != null ? _ctx$req$url : '/', (_ctx$req2 = ctx.req) == null ? void 0 : _ctx$req2.headers)) {
41
+ var _ctx$req$url2, _ctx$req3;
42
+ logger.debug('Bypassing get initial props for url: ' + ((_ctx$req$url2 = (_ctx$req3 = ctx.req) == null ? void 0 : _ctx$req3.url) != null ? _ctx$req$url2 : ''));
43
+ return {
44
+ pageProps: (0, _extends2.default)({}, originalGetInitialProps ? await originalGetInitialProps(appContext) : {}, Component.getInitialProps ? await Component.getInitialProps(ctx) : {})
45
+ };
46
+ }
34
47
  let shouldRequestAuthorize = false;
35
48
  if (ctx.req) {
36
49
  appEnvConfig = _config.default.appEnvConfig;
37
50
  if (isSSG) {
38
51
  shouldRequestAuthorize = true;
39
52
  } else {
40
- var _ctx$req;
41
- const url = (_ctx$req = ctx.req) == null ? void 0 : _ctx$req.url;
53
+ var _ctx$req4;
54
+ const url = (_ctx$req4 = ctx.req) == null ? void 0 : _ctx$req4.url;
42
55
  if (url && (0, _refreshAccessTokenIfNeeded.isRuntimeNextRequest)(url)) {
43
56
  let session = await (0, _refreshAccessTokenIfNeeded.default)(ctx);
44
57
  if (process.env['FRONTEGG_SECURE_JWT_ENABLED'] === 'true') {
@@ -51,8 +64,8 @@ const withFronteggApp = (app, options) => {
51
64
  let userData = await (0, _fetchUserData.default)({
52
65
  getSession: async () => await (0, _refreshAccessTokenIfNeeded.default)(ctx),
53
66
  getHeaders: async () => {
54
- var _ctx$req$headers, _ctx$req2;
55
- return (_ctx$req$headers = (_ctx$req2 = ctx.req) == null ? void 0 : _ctx$req2.headers) != null ? _ctx$req$headers : {};
67
+ var _ctx$req$headers, _ctx$req5;
68
+ return (_ctx$req$headers = (_ctx$req5 = ctx.req) == null ? void 0 : _ctx$req5.headers) != null ? _ctx$req$headers : {};
56
69
  }
57
70
  });
58
71
  if (process.env['FRONTEGG_SECURE_JWT_ENABLED'] === 'true' && userData) {
@@ -1 +1 @@
1
- {"version":3,"file":"withFronteggApp.js","names":["_react","_interopRequireDefault","require","_FronteggPagesProvider","_refreshAccessTokenIfNeeded","_interopRequireWildcard","_fetchUserData","_config","_helpers","_jsxRuntime","_getRequireWildcardCache","e","WeakMap","r","t","__esModule","default","has","get","n","__proto__","a","Object","defineProperty","getOwnPropertyDescriptor","u","hasOwnProperty","call","i","set","withFronteggApp","app","options","originalGetInitialProps","getInitialProps","appContext","ctx","router","Component","isSSG","isReady","isPreview","config","checkHostedLoginConfig","appEnvConfig","appContextSessionData","session","user","tenants","shouldRequestAuthorize","req","_ctx$req","url","isRuntimeNextRequest","refreshAccessTokenIfNeeded","process","env","removeJwtSignatureFrom","assign","userData","fetchUserData","getSession","getHeaders","_ctx$req$headers","_ctx$req2","headers","_userData","pageProps","_extends2","CustomFronteggApp","appProps","activeTenant","envAppUrl","envBaseUrl","envClientId","secureJwtEnabled","envAppId","envHostedLoginBox","jsx","hostedLoginBox","__N_SSG","children","exports"],"sources":["../../../../../packages/nextjs/src/pages/withFronteggApp/withFronteggApp.tsx"],"sourcesContent":["import React from 'react';\nimport type { AppContext, AppInitialProps, AppProps } from 'next/app';\nimport type { FronteggCustomAppClass, FronteggCustomApp, WithFronteggAppOptions } from './types';\nimport FronteggProvider from '../FronteggPagesProvider';\nimport refreshAccessTokenIfNeeded, { isRuntimeNextRequest } from '../../utils/refreshAccessTokenIfNeeded';\nimport fetchUserData from '../../utils/fetchUserData';\nimport config from '../../config';\nimport { AllUserData } from '../../types';\nimport { removeJwtSignatureFrom } from '../../middleware/helpers';\n\nexport const withFronteggApp = (app: FronteggCustomAppClass, options?: WithFronteggAppOptions): FronteggCustomApp => {\n const originalGetInitialProps = app.getInitialProps;\n\n app.getInitialProps = async (appContext: AppContext & AllUserData): Promise<AppInitialProps> => {\n const { ctx, router, Component } = appContext;\n\n const isSSG = router.isReady == false && router.isPreview == false;\n\n config.checkHostedLoginConfig(options);\n\n let appEnvConfig = {};\n let appContextSessionData: AllUserData = {\n session: null,\n user: null,\n tenants: null,\n };\n let shouldRequestAuthorize = false;\n\n if (ctx.req) {\n appEnvConfig = config.appEnvConfig;\n\n if (isSSG) {\n shouldRequestAuthorize = true;\n } else {\n const url = ctx.req?.url;\n\n if (url && isRuntimeNextRequest(url)) {\n let session = await refreshAccessTokenIfNeeded(ctx);\n if (process.env['FRONTEGG_SECURE_JWT_ENABLED'] === 'true') {\n session = removeJwtSignatureFrom(session);\n }\n Object.assign(appContextSessionData, { session });\n } else {\n let userData = await fetchUserData({\n getSession: async () => await refreshAccessTokenIfNeeded(ctx),\n getHeaders: async () => ctx.req?.headers ?? {},\n });\n if (process.env['FRONTEGG_SECURE_JWT_ENABLED'] === 'true' && userData) {\n userData = removeJwtSignatureFrom(userData);\n userData.session = removeJwtSignatureFrom(userData?.session);\n }\n shouldRequestAuthorize = true;\n Object.assign(appContextSessionData, userData);\n }\n }\n }\n\n Object.assign(appContext, appContextSessionData);\n\n return {\n pageProps: {\n ...(originalGetInitialProps ? await originalGetInitialProps(appContext) : {}),\n ...(Component.getInitialProps ? await Component.getInitialProps(ctx) : {}),\n ...(appContextSessionData.session == null ? {} : appContextSessionData),\n ...appEnvConfig,\n shouldRequestAuthorize,\n },\n };\n };\n\n function CustomFronteggApp(appProps: AppProps) {\n const {\n user,\n tenants,\n activeTenant,\n session,\n envAppUrl,\n envBaseUrl,\n envClientId,\n secureJwtEnabled,\n envAppId,\n envHostedLoginBox,\n shouldRequestAuthorize,\n } = appProps.pageProps;\n\n return (\n <FronteggProvider\n {...options}\n hostedLoginBox={envHostedLoginBox}\n {...{\n user,\n tenants,\n activeTenant,\n session,\n envAppUrl,\n envBaseUrl,\n envHostedLoginBox,\n secureJwtEnabled,\n shouldRequestAuthorize,\n isSSG: appProps.__N_SSG,\n envClientId,\n envAppId,\n }}\n >\n {app(appProps) as any}\n </FronteggProvider>\n );\n }\n\n CustomFronteggApp.getInitialProps = app.getInitialProps;\n\n return CustomFronteggApp as FronteggCustomApp;\n};\n"],"mappings":"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","ignoreList":[]}
1
+ {"version":3,"file":"withFronteggApp.js","names":["_react","_interopRequireDefault","require","_FronteggPagesProvider","_refreshAccessTokenIfNeeded","_interopRequireWildcard","_fetchUserData","_config","_helpers","_shouldBypassGetInitialProps","_fronteggLogger","_jsxRuntime","_getRequireWildcardCache","e","WeakMap","r","t","__esModule","default","has","get","n","__proto__","a","Object","defineProperty","getOwnPropertyDescriptor","u","hasOwnProperty","call","i","set","withFronteggApp","app","options","originalGetInitialProps","getInitialProps","appContext","_ctx$req$url","_ctx$req","_ctx$req2","ctx","router","Component","logger","fronteggLogger","child","tag","isSSG","isReady","isPreview","config","checkHostedLoginConfig","appEnvConfig","appContextSessionData","session","user","tenants","shouldBypassGetInitialProps","req","url","headers","_ctx$req$url2","_ctx$req3","debug","pageProps","_extends2","shouldRequestAuthorize","_ctx$req4","isRuntimeNextRequest","refreshAccessTokenIfNeeded","process","env","removeJwtSignatureFrom","assign","userData","fetchUserData","getSession","getHeaders","_ctx$req$headers","_ctx$req5","_userData","CustomFronteggApp","appProps","activeTenant","envAppUrl","envBaseUrl","envClientId","secureJwtEnabled","envAppId","envHostedLoginBox","jsx","hostedLoginBox","__N_SSG","children","exports"],"sources":["../../../../../packages/nextjs/src/pages/withFronteggApp/withFronteggApp.tsx"],"sourcesContent":["import React from 'react';\nimport type { AppContext, AppInitialProps, AppProps } from 'next/app';\nimport type { FronteggCustomAppClass, FronteggCustomApp, WithFronteggAppOptions } from './types';\nimport FronteggProvider from '../FronteggPagesProvider';\nimport refreshAccessTokenIfNeeded, { isRuntimeNextRequest } from '../../utils/refreshAccessTokenIfNeeded';\nimport fetchUserData from '../../utils/fetchUserData';\nimport config from '../../config';\nimport { AllUserData } from '../../types';\nimport { removeJwtSignatureFrom } from '../../middleware/helpers';\nimport { shouldBypassGetInitialProps } from './shouldBypassGetInitialProps';\nimport fronteggLogger from '../../utils/fronteggLogger';\n\nexport const withFronteggApp = (app: FronteggCustomAppClass, options?: WithFronteggAppOptions): FronteggCustomApp => {\n const originalGetInitialProps = app.getInitialProps;\n\n app.getInitialProps = async (appContext: AppContext & AllUserData): Promise<AppInitialProps> => {\n const { ctx, router, Component } = appContext;\n const logger = fronteggLogger.child({ tag: 'withFronteggApp' });\n const isSSG = router.isReady == false && router.isPreview == false;\n config.checkHostedLoginConfig(options);\n\n let appEnvConfig = {};\n const appContextSessionData: AllUserData = {\n session: null,\n user: null,\n tenants: null,\n };\n if (shouldBypassGetInitialProps(ctx.req?.url ?? '/', ctx.req?.headers)) {\n logger.debug('Bypassing get initial props for url: ' + (ctx.req?.url ?? ''));\n return {\n pageProps: {\n ...(originalGetInitialProps ? await originalGetInitialProps(appContext) : {}),\n ...(Component.getInitialProps ? await Component.getInitialProps(ctx) : {}),\n },\n };\n }\n\n let shouldRequestAuthorize = false;\n\n if (ctx.req) {\n appEnvConfig = config.appEnvConfig;\n\n if (isSSG) {\n shouldRequestAuthorize = true;\n } else {\n const url = ctx.req?.url;\n\n if (url && isRuntimeNextRequest(url)) {\n let session = await refreshAccessTokenIfNeeded(ctx);\n if (process.env['FRONTEGG_SECURE_JWT_ENABLED'] === 'true') {\n session = removeJwtSignatureFrom(session);\n }\n Object.assign(appContextSessionData, { session });\n } else {\n let userData = await fetchUserData({\n getSession: async () => await refreshAccessTokenIfNeeded(ctx),\n getHeaders: async () => ctx.req?.headers ?? {},\n });\n if (process.env['FRONTEGG_SECURE_JWT_ENABLED'] === 'true' && userData) {\n userData = removeJwtSignatureFrom(userData);\n userData.session = removeJwtSignatureFrom(userData?.session);\n }\n shouldRequestAuthorize = true;\n Object.assign(appContextSessionData, userData);\n }\n }\n }\n\n Object.assign(appContext, appContextSessionData);\n\n return {\n pageProps: {\n ...(originalGetInitialProps ? await originalGetInitialProps(appContext) : {}),\n ...(Component.getInitialProps ? await Component.getInitialProps(ctx) : {}),\n ...(appContextSessionData.session == null ? {} : appContextSessionData),\n ...appEnvConfig,\n shouldRequestAuthorize,\n },\n };\n };\n\n function CustomFronteggApp(appProps: AppProps) {\n const {\n user,\n tenants,\n activeTenant,\n session,\n envAppUrl,\n envBaseUrl,\n envClientId,\n secureJwtEnabled,\n envAppId,\n envHostedLoginBox,\n shouldRequestAuthorize,\n } = appProps.pageProps;\n\n return (\n <FronteggProvider\n {...options}\n hostedLoginBox={envHostedLoginBox}\n {...{\n user,\n tenants,\n activeTenant,\n session,\n envAppUrl,\n envBaseUrl,\n envHostedLoginBox,\n secureJwtEnabled,\n shouldRequestAuthorize,\n isSSG: appProps.__N_SSG,\n envClientId,\n envAppId,\n }}\n >\n {app(appProps) as any}\n </FronteggProvider>\n );\n }\n\n CustomFronteggApp.getInitialProps = app.getInitialProps;\n\n return CustomFronteggApp as FronteggCustomApp;\n};\n"],"mappings":"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","ignoreList":[]}
package/sdkVersion.js CHANGED
@@ -5,6 +5,6 @@ Object.defineProperty(exports, "__esModule", {
5
5
  });
6
6
  exports.default = void 0;
7
7
  var _default = exports.default = {
8
- version: '9.2.9'
8
+ version: '9.2.10'
9
9
  };
10
10
  //# sourceMappingURL=sdkVersion.js.map
package/sdkVersion.js.map CHANGED
@@ -1 +1 @@
1
- {"version":3,"file":"sdkVersion.js","names":["version"],"sources":["../../../packages/nextjs/src/sdkVersion.ts"],"sourcesContent":["export default { version: '9.2.9' };\n"],"mappings":";;;;;;iCAAe;EAAEA,OAAO,EAAE;AAAQ,CAAC","ignoreList":[]}
1
+ {"version":3,"file":"sdkVersion.js","names":["version"],"sources":["../../../packages/nextjs/src/sdkVersion.ts"],"sourcesContent":["export default { version: '9.2.10' };\n"],"mappings":";;;;;;iCAAe;EAAEA,OAAO,EAAE;AAAS,CAAC","ignoreList":[]}