@frontegg/nextjs 9.0.4 → 9.0.5-alpha.11464183313

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,13 @@
1
1
  # Change Log
2
2
 
3
+ ## [9.0.5](https://github.com/frontegg/frontegg-nextjs/compare/v9.0.4...v9.0.5) (2024-10-22)
4
+
5
+ - FR-18356 - Fixed validations localization override type
6
+
7
+
8
+ ### NextJS Wrapper 9.0.5:
9
+ - Add Support for NextJS 15
10
+
3
11
  ## [9.0.4](https://github.com/frontegg/frontegg-nextjs/compare/v9.0.3...v9.0.4) (2024-10-22)
4
12
 
5
13
  - FR-18356 - Fixed validations localization override type
package/README.md CHANGED
@@ -29,7 +29,7 @@ and integrate them into their SaaS portals in up to 5 lines of code.
29
29
 
30
30
  To Add Frontegg to your existing Next.JS project, follow below steps:
31
31
 
32
- 1. Use package manager to install Frontegg Next.JS library.
32
+ Use package manager to install Frontegg Next.JS library.
33
33
 
34
34
  ```bash
35
35
  npm install --save @frontegg/nextjs
@@ -41,7 +41,10 @@ To Add Frontegg to your existing Next.JS project, follow below steps:
41
41
  yarn add --save @frontegg/nextjs
42
42
  ```
43
43
 
44
- 2. Wrap the default export with `withFronteggApp` in `./pages/_app.tsx`:
44
+
45
+ **If you're using the App Directory architecture, you can skip the following Pages architecture steps and refer to the [AppDir guide](#nextjs-appdir-architecture) instead.**
46
+
47
+ 1. Wrap the default export with `withFronteggApp` in `./pages/_app.tsx`:
45
48
 
46
49
  ```tsx
47
50
  // ./pages/_app.tsx
@@ -58,7 +61,7 @@ To Add Frontegg to your existing Next.JS project, follow below steps:
58
61
  });
59
62
  ```
60
63
 
61
- 3. Create files for frontegg middleware under `./pages/api/frontegg/[...frontegg-middleware].ts`:
64
+ 2. Create files for frontegg middleware under `./pages/api/frontegg/[...frontegg-middleware].ts`:
62
65
 
63
66
  ```tsx
64
67
  // ./pages/api/frontegg/[...frontegg-middleware].ts
@@ -66,7 +69,7 @@ To Add Frontegg to your existing Next.JS project, follow below steps:
66
69
  export { fronteggMiddleware as default } from '@frontegg/nextjs/middleware';
67
70
  ```
68
71
 
69
- 4. Create placeholder pages for frontegg router under `./pages/[...frontegg-router].tsx`:
72
+ 3. Create placeholder pages for frontegg router under `./pages/[...frontegg-router].tsx`:
70
73
 
71
74
  ```tsx
72
75
  // ./pages/[...frontegg-router].tsx
@@ -238,7 +241,7 @@ export const getServerSideProps: GetServerSideProps = withSSRSession(
238
241
  );
239
242
  ```
240
243
 
241
- ## Next.js 13
244
+ ## Next.js (AppDir architecture)
242
245
  ### wrapping your application
243
246
  ```tsx
244
247
  // ./app/layout.tsx
@@ -256,9 +259,21 @@ export default function RootLayout({ children }: { children: React.ReactNode })
256
259
  }
257
260
  ```
258
261
 
259
- ### routing
262
+ ### Routing
263
+
264
+
260
265
  ```tsx
261
266
  // ./app/[...frontegg-router]/page.tsx
267
+
268
+ /**
269
+ * For Next.js 15+ use the following FronteggAppRouterAsync as default export
270
+ */
271
+ export { FronteggAppRouterAsync as default } from '@frontegg/nextjs/app';
272
+
273
+
274
+ /**
275
+ * For Next.js 14 and below use the following FronteggAppRouter as default export
276
+ */
262
277
  export { FronteggAppRouter as default } from '@frontegg/nextjs/app';
263
278
  ```
264
279
 
@@ -25,7 +25,7 @@ const FronteggAppProvider = async options => {
25
25
  appEnvConfig = (0, _objectWithoutPropertiesLoose2.default)(_config$appEnvConfig, _excluded);
26
26
  let userData = await (0, _fetchUserData.default)({
27
27
  getSession: _helpers.getAppSession,
28
- getHeaders: _helpers.getAppHeadersPromise
28
+ getHeaders: _helpers.getAppHeaders
29
29
  });
30
30
  const subDomainAppUrl = await (0, _getAppUrlForCustomLoginWithSubdomain.getAppUrlForCustomLoginWithSubdomain)((_options$customLoginO = options.customLoginOptions) == null ? void 0 : _options$customLoginO.subDomainIndex);
31
31
  if (process.env['FRONTEGG_SECURE_JWT_ENABLED'] === 'true' && userData) {
@@ -1 +1 @@
1
- {"version":3,"file":"FronteggAppProvider.js","names":["_react","_interopRequireDefault","require","_ClientFronteggProvider","_helpers","_config","_fetchUserData","_getAppUrlForCustomLoginWithSubdomain","_helpers2","_jsxRuntime","_excluded","FronteggAppProvider","options","_options$customLoginO","_options$secureJwtEna","_config$appEnvConfig","config","appEnvConfig","envAppUrl","_objectWithoutPropertiesLoose2","default","userData","fetchUserData","getSession","getAppSession","getHeaders","getAppHeadersPromise","subDomainAppUrl","getAppUrlForCustomLoginWithSubdomain","customLoginOptions","subDomainIndex","process","env","_userData","removeJwtSignatureFrom","session","providerProps","_extends2","secureJwtEnabled","jsx","ClientFronteggProvider","exports"],"sources":["../../../../packages/nextjs/src/app/FronteggAppProvider.tsx"],"sourcesContent":["import React, { PropsWithChildren } from 'react';\nimport { ClientFronteggProvider } from './ClientFronteggProvider';\nimport { getAppHeadersPromise, getAppSession } from './helpers';\nimport config from '../config';\nimport fetchUserData from '../utils/fetchUserData';\nimport { ClientFronteggProviderProps } from '../types';\nimport { getAppUrlForCustomLoginWithSubdomain } from './getAppUrlForCustomLoginWithSubdomain';\nimport { removeJwtSignatureFrom } from '../middleware/helpers';\n\nexport type FronteggAppProviderProps = PropsWithChildren<\n Omit<ClientFronteggProviderProps, 'contextOptions' | 'envAppUrl' | 'envBaseUrl' | 'envClientId'>\n>;\n\nexport const FronteggAppProvider = async (options: FronteggAppProviderProps) => {\n const { envAppUrl, ...appEnvConfig } = config.appEnvConfig;\n let userData = await fetchUserData({ getSession: getAppSession, getHeaders: getAppHeadersPromise });\n const subDomainAppUrl = await getAppUrlForCustomLoginWithSubdomain(options.customLoginOptions?.subDomainIndex);\n\n if (process.env['FRONTEGG_SECURE_JWT_ENABLED'] === 'true' && userData) {\n userData = removeJwtSignatureFrom(userData);\n userData.session = removeJwtSignatureFrom(userData?.session);\n }\n const providerProps = {\n ...appEnvConfig,\n ...userData,\n ...options,\n envAppUrl: subDomainAppUrl ?? envAppUrl,\n secureJwtEnabled: options.secureJwtEnabled ?? false,\n };\n\n return <ClientFronteggProvider {...providerProps} />;\n};\n"],"mappings":";;;;;;;;;AAAA,IAAAA,MAAA,GAAAC,sBAAA,CAAAC,OAAA;AACA,IAAAC,uBAAA,GAAAD,OAAA;AACA,IAAAE,QAAA,GAAAF,OAAA;AACA,IAAAG,OAAA,GAAAJ,sBAAA,CAAAC,OAAA;AACA,IAAAI,cAAA,GAAAL,sBAAA,CAAAC,OAAA;AAEA,IAAAK,qCAAA,GAAAL,OAAA;AACA,IAAAM,SAAA,GAAAN,OAAA;AAA+D,IAAAO,WAAA,GAAAP,OAAA;AAAA,MAAAQ,SAAA;AAMxD,MAAMC,mBAAmB,GAAG,MAAOC,OAAiC,IAAK;EAAA,IAAAC,qBAAA,EAAAC,qBAAA;EAC9E,MAAAC,oBAAA,GAAuCC,eAAM,CAACC,YAAY;IAApD;MAAEC;IAA2B,CAAC,GAAAH,oBAAA;IAAdE,YAAY,OAAAE,8BAAA,CAAAC,OAAA,EAAAL,oBAAA,EAAAL,SAAA;EAClC,IAAIW,QAAQ,GAAG,MAAM,IAAAC,sBAAa,EAAC;IAAEC,UAAU,EAAEC,sBAAa;IAAEC,UAAU,EAAEC;EAAqB,CAAC,CAAC;EACnG,MAAMC,eAAe,GAAG,MAAM,IAAAC,0EAAoC,GAAAf,qBAAA,GAACD,OAAO,CAACiB,kBAAkB,qBAA1BhB,qBAAA,CAA4BiB,cAAc,CAAC;EAE9G,IAAIC,OAAO,CAACC,GAAG,CAAC,6BAA6B,CAAC,KAAK,MAAM,IAAIX,QAAQ,EAAE;IAAA,IAAAY,SAAA;IACrEZ,QAAQ,GAAG,IAAAa,gCAAsB,EAACb,QAAQ,CAAC;IAC3CA,QAAQ,CAACc,OAAO,GAAG,IAAAD,gCAAsB,GAAAD,SAAA,GAACZ,QAAQ,qBAARY,SAAA,CAAUE,OAAO,CAAC;EAC9D;EACA,MAAMC,aAAa,OAAAC,SAAA,CAAAjB,OAAA,MACdH,YAAY,EACZI,QAAQ,EACRT,OAAO;IACVM,SAAS,EAAES,eAAe,WAAfA,eAAe,GAAIT,SAAS;IACvCoB,gBAAgB,GAAAxB,qBAAA,GAAEF,OAAO,CAAC0B,gBAAgB,YAAAxB,qBAAA,GAAI;EAAK,EACpD;EAED,oBAAO,IAAAL,WAAA,CAAA8B,GAAA,EAACpC,uBAAA,CAAAqC,sBAAsB,MAAAH,SAAA,CAAAjB,OAAA,MAAKgB,aAAa,EAAI;AACtD,CAAC;AAACK,OAAA,CAAA9B,mBAAA,GAAAA,mBAAA"}
1
+ {"version":3,"file":"FronteggAppProvider.js","names":["_react","_interopRequireDefault","require","_ClientFronteggProvider","_helpers","_config","_fetchUserData","_getAppUrlForCustomLoginWithSubdomain","_helpers2","_jsxRuntime","_excluded","FronteggAppProvider","options","_options$customLoginO","_options$secureJwtEna","_config$appEnvConfig","config","appEnvConfig","envAppUrl","_objectWithoutPropertiesLoose2","default","userData","fetchUserData","getSession","getAppSession","getHeaders","getAppHeaders","subDomainAppUrl","getAppUrlForCustomLoginWithSubdomain","customLoginOptions","subDomainIndex","process","env","_userData","removeJwtSignatureFrom","session","providerProps","_extends2","secureJwtEnabled","jsx","ClientFronteggProvider","exports"],"sources":["../../../../packages/nextjs/src/app/FronteggAppProvider.tsx"],"sourcesContent":["import React, { PropsWithChildren } from 'react';\nimport { ClientFronteggProvider } from './ClientFronteggProvider';\nimport { getAppHeaders, getAppSession } from './helpers';\nimport config from '../config';\nimport fetchUserData from '../utils/fetchUserData';\nimport { ClientFronteggProviderProps } from '../types';\nimport { getAppUrlForCustomLoginWithSubdomain } from './getAppUrlForCustomLoginWithSubdomain';\nimport { removeJwtSignatureFrom } from '../middleware/helpers';\n\nexport type FronteggAppProviderProps = PropsWithChildren<\n Omit<ClientFronteggProviderProps, 'contextOptions' | 'envAppUrl' | 'envBaseUrl' | 'envClientId'>\n>;\n\nexport const FronteggAppProvider = async (options: FronteggAppProviderProps) => {\n const { envAppUrl, ...appEnvConfig } = config.appEnvConfig;\n let userData = await fetchUserData({ getSession: getAppSession, getHeaders: getAppHeaders });\n const subDomainAppUrl = await getAppUrlForCustomLoginWithSubdomain(options.customLoginOptions?.subDomainIndex);\n\n if (process.env['FRONTEGG_SECURE_JWT_ENABLED'] === 'true' && userData) {\n userData = removeJwtSignatureFrom(userData);\n userData.session = removeJwtSignatureFrom(userData?.session);\n }\n const providerProps = {\n ...appEnvConfig,\n ...userData,\n ...options,\n envAppUrl: subDomainAppUrl ?? envAppUrl,\n secureJwtEnabled: options.secureJwtEnabled ?? false,\n };\n\n return <ClientFronteggProvider {...providerProps} />;\n};\n"],"mappings":";;;;;;;;;AAAA,IAAAA,MAAA,GAAAC,sBAAA,CAAAC,OAAA;AACA,IAAAC,uBAAA,GAAAD,OAAA;AACA,IAAAE,QAAA,GAAAF,OAAA;AACA,IAAAG,OAAA,GAAAJ,sBAAA,CAAAC,OAAA;AACA,IAAAI,cAAA,GAAAL,sBAAA,CAAAC,OAAA;AAEA,IAAAK,qCAAA,GAAAL,OAAA;AACA,IAAAM,SAAA,GAAAN,OAAA;AAA+D,IAAAO,WAAA,GAAAP,OAAA;AAAA,MAAAQ,SAAA;AAMxD,MAAMC,mBAAmB,GAAG,MAAOC,OAAiC,IAAK;EAAA,IAAAC,qBAAA,EAAAC,qBAAA;EAC9E,MAAAC,oBAAA,GAAuCC,eAAM,CAACC,YAAY;IAApD;MAAEC;IAA2B,CAAC,GAAAH,oBAAA;IAAdE,YAAY,OAAAE,8BAAA,CAAAC,OAAA,EAAAL,oBAAA,EAAAL,SAAA;EAClC,IAAIW,QAAQ,GAAG,MAAM,IAAAC,sBAAa,EAAC;IAAEC,UAAU,EAAEC,sBAAa;IAAEC,UAAU,EAAEC;EAAc,CAAC,CAAC;EAC5F,MAAMC,eAAe,GAAG,MAAM,IAAAC,0EAAoC,GAAAf,qBAAA,GAACD,OAAO,CAACiB,kBAAkB,qBAA1BhB,qBAAA,CAA4BiB,cAAc,CAAC;EAE9G,IAAIC,OAAO,CAACC,GAAG,CAAC,6BAA6B,CAAC,KAAK,MAAM,IAAIX,QAAQ,EAAE;IAAA,IAAAY,SAAA;IACrEZ,QAAQ,GAAG,IAAAa,gCAAsB,EAACb,QAAQ,CAAC;IAC3CA,QAAQ,CAACc,OAAO,GAAG,IAAAD,gCAAsB,GAAAD,SAAA,GAACZ,QAAQ,qBAARY,SAAA,CAAUE,OAAO,CAAC;EAC9D;EACA,MAAMC,aAAa,OAAAC,SAAA,CAAAjB,OAAA,MACdH,YAAY,EACZI,QAAQ,EACRT,OAAO;IACVM,SAAS,EAAES,eAAe,WAAfA,eAAe,GAAIT,SAAS;IACvCoB,gBAAgB,GAAAxB,qBAAA,GAAEF,OAAO,CAAC0B,gBAAgB,YAAAxB,qBAAA,GAAI;EAAK,EACpD;EAED,oBAAO,IAAAL,WAAA,CAAA8B,GAAA,EAACpC,uBAAA,CAAAqC,sBAAsB,MAAAH,SAAA,CAAAjB,OAAA,MAAKgB,aAAa,EAAI;AACtD,CAAC;AAACK,OAAA,CAAA9B,mBAAA,GAAAA,mBAAA"}
@@ -7,4 +7,11 @@ interface FronteggRouterProps {
7
7
  searchParams?: ParsedUrlQuery;
8
8
  }
9
9
  export declare function FronteggAppRouter(props: FronteggRouterProps): JSX.Element | null;
10
+ interface FronteggRouterAsyncProps {
11
+ params: Promise<ParsedUrlQuery & {
12
+ 'frontegg-router'?: string[];
13
+ }>;
14
+ searchParams?: Promise<ParsedUrlQuery>;
15
+ }
16
+ export declare function FronteggAppRouterAsync(props: FronteggRouterAsyncProps): Promise<JSX.Element | null>;
10
17
  export {};
@@ -5,6 +5,7 @@ Object.defineProperty(exports, "__esModule", {
5
5
  value: true
6
6
  });
7
7
  exports.FronteggAppRouter = FronteggAppRouter;
8
+ exports.FronteggAppRouterAsync = FronteggAppRouterAsync;
8
9
  var _navigation = require("next/navigation");
9
10
  var _routing = require("../utils/routing");
10
11
  var _FronteggRouterBase = require("../common/FronteggRouterBase");
@@ -37,4 +38,28 @@ function FronteggAppRouter(props) {
37
38
  isAppDirEnabled: true
38
39
  });
39
40
  }
41
+ async function FronteggAppRouterAsync(props) {
42
+ const params = await props.params;
43
+ const searchParams = await props.searchParams;
44
+ const pathArr = params['frontegg-router'] || [];
45
+ let pathname = `/${pathArr.join('/')}`;
46
+ if (!pathname || pathname.startsWith('/_next/data')) {
47
+ if (searchParams) {
48
+ const query = searchParams[Object.keys(searchParams)[0]];
49
+ pathname = `/${Array.isArray(query) ? query.join('/') : query}`;
50
+ } else {
51
+ (0, _navigation.notFound)();
52
+ return null;
53
+ }
54
+ }
55
+ if (!(0, _routing.isAuthRoute)(pathname)) {
56
+ (0, _navigation.notFound)();
57
+ return null;
58
+ }
59
+ return /*#__PURE__*/(0, _jsxRuntime.jsx)(_FronteggRouterBase.FronteggRouterBase, {
60
+ pathArr: pathArr,
61
+ queryParams: searchParams,
62
+ isAppDirEnabled: true
63
+ });
64
+ }
40
65
  //# sourceMappingURL=FronteggAppRouter.js.map
@@ -1 +1 @@
1
- {"version":3,"file":"FronteggAppRouter.js","names":["_navigation","require","_routing","_FronteggRouterBase","_react","_interopRequireDefault","_jsxRuntime","FronteggAppRouter","props","params","pathArr","searchParams","pathname","join","startsWith","query","Object","keys","Array","isArray","notFound","isAuthRoute","jsx","FronteggRouterBase","queryParams","isAppDirEnabled"],"sources":["../../../../packages/nextjs/src/app/FronteggAppRouter.tsx"],"sourcesContent":["import { notFound } from 'next/navigation';\nimport { ParsedUrlQuery } from 'querystring';\nimport { isAuthRoute } from '../utils/routing';\nimport { FronteggRouterBase } from '../common/FronteggRouterBase';\nimport React from 'react';\n\ninterface FronteggRouterProps {\n params: ParsedUrlQuery & { 'frontegg-router'?: string[] };\n searchParams?: ParsedUrlQuery;\n}\n\nexport function FronteggAppRouter(props: FronteggRouterProps) {\n const {\n params: { 'frontegg-router': pathArr = [] },\n searchParams,\n } = props;\n\n let pathname = `/${pathArr.join('/')}`;\n if (!pathname || pathname.startsWith('/_next/data')) {\n if (searchParams) {\n const query = searchParams[Object.keys(searchParams)[0]];\n pathname = `/${Array.isArray(query) ? query.join('/') : query}`;\n } else {\n notFound();\n return null;\n }\n }\n\n if (!isAuthRoute(pathname)) {\n notFound();\n return null;\n }\n\n return <FronteggRouterBase pathArr={pathArr} queryParams={searchParams} isAppDirEnabled />;\n}\n"],"mappings":";;;;;;;AAAA,IAAAA,WAAA,GAAAC,OAAA;AAEA,IAAAC,QAAA,GAAAD,OAAA;AACA,IAAAE,mBAAA,GAAAF,OAAA;AACA,IAAAG,MAAA,GAAAC,sBAAA,CAAAJ,OAAA;AAA0B,IAAAK,WAAA,GAAAL,OAAA;AAOnB,SAASM,iBAAiBA,CAACC,KAA0B,EAAE;EAC5D,MAAM;IACJC,MAAM,EAAE;MAAE,iBAAiB,EAAEC,OAAO,GAAG;IAAG,CAAC;IAC3CC;EACF,CAAC,GAAGH,KAAK;EAET,IAAII,QAAQ,GAAI,IAAGF,OAAO,CAACG,IAAI,CAAC,GAAG,CAAE,EAAC;EACtC,IAAI,CAACD,QAAQ,IAAIA,QAAQ,CAACE,UAAU,CAAC,aAAa,CAAC,EAAE;IACnD,IAAIH,YAAY,EAAE;MAChB,MAAMI,KAAK,GAAGJ,YAAY,CAACK,MAAM,CAACC,IAAI,CAACN,YAAY,CAAC,CAAC,CAAC,CAAC,CAAC;MACxDC,QAAQ,GAAI,IAAGM,KAAK,CAACC,OAAO,CAACJ,KAAK,CAAC,GAAGA,KAAK,CAACF,IAAI,CAAC,GAAG,CAAC,GAAGE,KAAM,EAAC;IACjE,CAAC,MAAM;MACL,IAAAK,oBAAQ,GAAE;MACV,OAAO,IAAI;IACb;EACF;EAEA,IAAI,CAAC,IAAAC,oBAAW,EAACT,QAAQ,CAAC,EAAE;IAC1B,IAAAQ,oBAAQ,GAAE;IACV,OAAO,IAAI;EACb;EAEA,oBAAO,IAAAd,WAAA,CAAAgB,GAAA,EAACnB,mBAAA,CAAAoB,kBAAkB;IAACb,OAAO,EAAEA,OAAQ;IAACc,WAAW,EAAEb,YAAa;IAACc,eAAe;EAAA,EAAG;AAC5F"}
1
+ {"version":3,"file":"FronteggAppRouter.js","names":["_navigation","require","_routing","_FronteggRouterBase","_react","_interopRequireDefault","_jsxRuntime","FronteggAppRouter","props","params","pathArr","searchParams","pathname","join","startsWith","query","Object","keys","Array","isArray","notFound","isAuthRoute","jsx","FronteggRouterBase","queryParams","isAppDirEnabled","FronteggAppRouterAsync"],"sources":["../../../../packages/nextjs/src/app/FronteggAppRouter.tsx"],"sourcesContent":["import { notFound } from 'next/navigation';\nimport { ParsedUrlQuery } from 'querystring';\nimport { isAuthRoute } from '../utils/routing';\nimport { FronteggRouterBase } from '../common/FronteggRouterBase';\nimport React from 'react';\n\ninterface FronteggRouterProps {\n params: ParsedUrlQuery & { 'frontegg-router'?: string[] };\n searchParams?: ParsedUrlQuery;\n}\n\nexport function FronteggAppRouter(props: FronteggRouterProps) {\n const {\n params: { 'frontegg-router': pathArr = [] },\n searchParams,\n } = props;\n\n let pathname = `/${pathArr.join('/')}`;\n if (!pathname || pathname.startsWith('/_next/data')) {\n if (searchParams) {\n const query = searchParams[Object.keys(searchParams)[0]];\n pathname = `/${Array.isArray(query) ? query.join('/') : query}`;\n } else {\n notFound();\n return null;\n }\n }\n\n if (!isAuthRoute(pathname)) {\n notFound();\n return null;\n }\n\n return <FronteggRouterBase pathArr={pathArr} queryParams={searchParams} isAppDirEnabled />;\n}\n\ninterface FronteggRouterAsyncProps {\n params: Promise<ParsedUrlQuery & { 'frontegg-router'?: string[] }>;\n searchParams?: Promise<ParsedUrlQuery>;\n}\nexport async function FronteggAppRouterAsync(props: FronteggRouterAsyncProps) {\n const params = await props.params;\n const searchParams = await props.searchParams;\n\n const pathArr = params['frontegg-router'] || [];\n\n let pathname = `/${pathArr.join('/')}`;\n if (!pathname || pathname.startsWith('/_next/data')) {\n if (searchParams) {\n const query = searchParams[Object.keys(searchParams)[0]];\n pathname = `/${Array.isArray(query) ? query.join('/') : query}`;\n } else {\n notFound();\n return null;\n }\n }\n\n if (!isAuthRoute(pathname)) {\n notFound();\n return null;\n }\n\n return <FronteggRouterBase pathArr={pathArr} queryParams={searchParams} isAppDirEnabled />;\n}\n"],"mappings":";;;;;;;;AAAA,IAAAA,WAAA,GAAAC,OAAA;AAEA,IAAAC,QAAA,GAAAD,OAAA;AACA,IAAAE,mBAAA,GAAAF,OAAA;AACA,IAAAG,MAAA,GAAAC,sBAAA,CAAAJ,OAAA;AAA0B,IAAAK,WAAA,GAAAL,OAAA;AAOnB,SAASM,iBAAiBA,CAACC,KAA0B,EAAE;EAC5D,MAAM;IACJC,MAAM,EAAE;MAAE,iBAAiB,EAAEC,OAAO,GAAG;IAAG,CAAC;IAC3CC;EACF,CAAC,GAAGH,KAAK;EAET,IAAII,QAAQ,GAAI,IAAGF,OAAO,CAACG,IAAI,CAAC,GAAG,CAAE,EAAC;EACtC,IAAI,CAACD,QAAQ,IAAIA,QAAQ,CAACE,UAAU,CAAC,aAAa,CAAC,EAAE;IACnD,IAAIH,YAAY,EAAE;MAChB,MAAMI,KAAK,GAAGJ,YAAY,CAACK,MAAM,CAACC,IAAI,CAACN,YAAY,CAAC,CAAC,CAAC,CAAC,CAAC;MACxDC,QAAQ,GAAI,IAAGM,KAAK,CAACC,OAAO,CAACJ,KAAK,CAAC,GAAGA,KAAK,CAACF,IAAI,CAAC,GAAG,CAAC,GAAGE,KAAM,EAAC;IACjE,CAAC,MAAM;MACL,IAAAK,oBAAQ,GAAE;MACV,OAAO,IAAI;IACb;EACF;EAEA,IAAI,CAAC,IAAAC,oBAAW,EAACT,QAAQ,CAAC,EAAE;IAC1B,IAAAQ,oBAAQ,GAAE;IACV,OAAO,IAAI;EACb;EAEA,oBAAO,IAAAd,WAAA,CAAAgB,GAAA,EAACnB,mBAAA,CAAAoB,kBAAkB;IAACb,OAAO,EAAEA,OAAQ;IAACc,WAAW,EAAEb,YAAa;IAACc,eAAe;EAAA,EAAG;AAC5F;AAMO,eAAeC,sBAAsBA,CAAClB,KAA+B,EAAE;EAC5E,MAAMC,MAAM,GAAG,MAAMD,KAAK,CAACC,MAAM;EACjC,MAAME,YAAY,GAAG,MAAMH,KAAK,CAACG,YAAY;EAE7C,MAAMD,OAAO,GAAGD,MAAM,CAAC,iBAAiB,CAAC,IAAI,EAAE;EAE/C,IAAIG,QAAQ,GAAI,IAAGF,OAAO,CAACG,IAAI,CAAC,GAAG,CAAE,EAAC;EACtC,IAAI,CAACD,QAAQ,IAAIA,QAAQ,CAACE,UAAU,CAAC,aAAa,CAAC,EAAE;IACnD,IAAIH,YAAY,EAAE;MAChB,MAAMI,KAAK,GAAGJ,YAAY,CAACK,MAAM,CAACC,IAAI,CAACN,YAAY,CAAC,CAAC,CAAC,CAAC,CAAC;MACxDC,QAAQ,GAAI,IAAGM,KAAK,CAACC,OAAO,CAACJ,KAAK,CAAC,GAAGA,KAAK,CAACF,IAAI,CAAC,GAAG,CAAC,GAAGE,KAAM,EAAC;IACjE,CAAC,MAAM;MACL,IAAAK,oBAAQ,GAAE;MACV,OAAO,IAAI;IACb;EACF;EAEA,IAAI,CAAC,IAAAC,oBAAW,EAACT,QAAQ,CAAC,EAAE;IAC1B,IAAAQ,oBAAQ,GAAE;IACV,OAAO,IAAI;EACb;EAEA,oBAAO,IAAAd,WAAA,CAAAgB,GAAA,EAACnB,mBAAA,CAAAoB,kBAAkB;IAACb,OAAO,EAAEA,OAAQ;IAACc,WAAW,EAAEb,YAAa;IAACc,eAAe;EAAA,EAAG;AAC5F"}
@@ -38,7 +38,7 @@ const getAppUrlForCustomLoginWithSubdomain = async subDomainIndex => {
38
38
  if (subDomainIndex === undefined) {
39
39
  return undefined;
40
40
  }
41
- const headers = (0, _helpers.getAppHeaders)();
41
+ const headers = await (0, _helpers.getAppHeaders)();
42
42
  const alias = getTenantAliasFromHeaders(headers, subDomainIndex);
43
43
  if (!alias) {
44
44
  resetGlobalCustomLoginAppUrl();
@@ -1 +1 @@
1
- {"version":3,"file":"getAppUrlForCustomLoginWithSubdomain.js","names":["_api","require","_utils","_helpers","getTenantAliasFromHeaders","headers","subDomainIndex","_headers$host","_headers$host$split","_headers$host$split$s","host","split","slice","exports","resetGlobalCustomLoginAppUrl","global","customLoginAppUrl","undefined","getAppUrlForCustomLoginWithSubdomain","getAppHeaders","alias","requestHeaders","_extends2","default","CUSTOM_LOGIN_HEADER","res","getPublicSettings","catch","subDomainAppUrl","applicationUrl"],"sources":["../../../../packages/nextjs/src/app/getAppUrlForCustomLoginWithSubdomain.ts"],"sourcesContent":["import { getPublicSettings } from '../api';\nimport { CUSTOM_LOGIN_HEADER } from '../api/utils';\nimport { getAppHeaders } from './helpers';\n\n/**\n * get the tenant alias from the request headers with the host and subdomain index\n * @param headers - the request headers\n * @param subDomainIndex - the subdomain index to specify the tenant sub-domain\n * @returns the alias for custom login with subdomain or undefined if not exist\n */\nexport const getTenantAliasFromHeaders = (headers: Record<string, string>, subDomainIndex: number) => {\n return headers?.host?.split('.')?.slice(0, -2)?.[subDomainIndex];\n};\n\n/**\n * set the global.customLoginAppUrl to undefined in order to allow switching from tenant to vendor app\n */\nexport const resetGlobalCustomLoginAppUrl = () => {\n global.customLoginAppUrl = undefined;\n};\n\n/**\n * get the app url for custom login with subdomain and set it to the global customLoginAppUrl\n * @param subDomainIndex - the index of the subdomain in the host\n * @returns Promise of string or undefined, the app url for custom login with subdomain or undefined if the sub-domain index/app url/alias is not exist\n * @sideEffect - set the global.customLoginAppUrl to the app url for custom login with subdomain */\n\nexport const getAppUrlForCustomLoginWithSubdomain = async (subDomainIndex?: number): Promise<string | undefined> => {\n if (subDomainIndex === undefined) {\n return undefined;\n }\n\n const headers = getAppHeaders();\n const alias = getTenantAliasFromHeaders(headers, subDomainIndex);\n if (!alias) {\n resetGlobalCustomLoginAppUrl();\n return undefined;\n }\n const requestHeaders = { ...headers, [CUSTOM_LOGIN_HEADER]: alias };\n const res = await getPublicSettings(requestHeaders).catch(() => undefined);\n const subDomainAppUrl = res?.applicationUrl;\n if (!subDomainAppUrl) {\n resetGlobalCustomLoginAppUrl();\n return undefined;\n }\n global.customLoginAppUrl = subDomainAppUrl;\n return subDomainAppUrl;\n};\n"],"mappings":";;;;;;;;AAAA,IAAAA,IAAA,GAAAC,OAAA;AACA,IAAAC,MAAA,GAAAD,OAAA;AACA,IAAAE,QAAA,GAAAF,OAAA;AAEA;AACA;AACA;AACA;AACA;AACA;AACO,MAAMG,yBAAyB,GAAGA,CAACC,OAA+B,EAAEC,cAAsB,KAAK;EAAA,IAAAC,aAAA,EAAAC,mBAAA,EAAAC,qBAAA;EACpG,OAAOJ,OAAO,qBAAAE,aAAA,GAAPF,OAAO,CAAEK,IAAI,sBAAAF,mBAAA,GAAbD,aAAA,CAAeI,KAAK,CAAC,GAAG,CAAC,sBAAAF,qBAAA,GAAzBD,mBAAA,CAA2BI,KAAK,CAAC,CAAC,EAAE,CAAC,CAAC,CAAC,qBAAvCH,qBAAA,CAA0CH,cAAc,CAAC;AAClE,CAAC;;AAED;AACA;AACA;AAFAO,OAAA,CAAAT,yBAAA,GAAAA,yBAAA;AAGO,MAAMU,4BAA4B,GAAGA,CAAA,KAAM;EAChDC,MAAM,CAACC,iBAAiB,GAAGC,SAAS;AACtC,CAAC;;AAED;AACA;AACA;AACA;AACA;AAJAJ,OAAA,CAAAC,4BAAA,GAAAA,4BAAA;AAMO,MAAMI,oCAAoC,GAAG,MAAOZ,cAAuB,IAAkC;EAClH,IAAIA,cAAc,KAAKW,SAAS,EAAE;IAChC,OAAOA,SAAS;EAClB;EAEA,MAAMZ,OAAO,GAAG,IAAAc,sBAAa,GAAE;EAC/B,MAAMC,KAAK,GAAGhB,yBAAyB,CAACC,OAAO,EAAEC,cAAc,CAAC;EAChE,IAAI,CAACc,KAAK,EAAE;IACVN,4BAA4B,EAAE;IAC9B,OAAOG,SAAS;EAClB;EACA,MAAMI,cAAc,OAAAC,SAAA,CAAAC,OAAA,MAAQlB,OAAO;IAAE,CAACmB,0BAAmB,GAAGJ;EAAK,EAAE;EACnE,MAAMK,GAAG,GAAG,MAAM,IAAAC,sBAAiB,EAACL,cAAc,CAAC,CAACM,KAAK,CAAC,MAAMV,SAAS,CAAC;EAC1E,MAAMW,eAAe,GAAGH,GAAG,oBAAHA,GAAG,CAAEI,cAAc;EAC3C,IAAI,CAACD,eAAe,EAAE;IACpBd,4BAA4B,EAAE;IAC9B,OAAOG,SAAS;EAClB;EACAF,MAAM,CAACC,iBAAiB,GAAGY,eAAe;EAC1C,OAAOA,eAAe;AACxB,CAAC;AAACf,OAAA,CAAAK,oCAAA,GAAAA,oCAAA"}
1
+ {"version":3,"file":"getAppUrlForCustomLoginWithSubdomain.js","names":["_api","require","_utils","_helpers","getTenantAliasFromHeaders","headers","subDomainIndex","_headers$host","_headers$host$split","_headers$host$split$s","host","split","slice","exports","resetGlobalCustomLoginAppUrl","global","customLoginAppUrl","undefined","getAppUrlForCustomLoginWithSubdomain","getAppHeaders","alias","requestHeaders","_extends2","default","CUSTOM_LOGIN_HEADER","res","getPublicSettings","catch","subDomainAppUrl","applicationUrl"],"sources":["../../../../packages/nextjs/src/app/getAppUrlForCustomLoginWithSubdomain.ts"],"sourcesContent":["import { getPublicSettings } from '../api';\nimport { CUSTOM_LOGIN_HEADER } from '../api/utils';\nimport { getAppHeaders } from './helpers';\n\n/**\n * get the tenant alias from the request headers with the host and subdomain index\n * @param headers - the request headers\n * @param subDomainIndex - the subdomain index to specify the tenant sub-domain\n * @returns the alias for custom login with subdomain or undefined if not exist\n */\nexport const getTenantAliasFromHeaders = (headers: Record<string, string>, subDomainIndex: number) => {\n return headers?.host?.split('.')?.slice(0, -2)?.[subDomainIndex];\n};\n\n/**\n * set the global.customLoginAppUrl to undefined in order to allow switching from tenant to vendor app\n */\nexport const resetGlobalCustomLoginAppUrl = () => {\n global.customLoginAppUrl = undefined;\n};\n\n/**\n * get the app url for custom login with subdomain and set it to the global customLoginAppUrl\n * @param subDomainIndex - the index of the subdomain in the host\n * @returns Promise of string or undefined, the app url for custom login with subdomain or undefined if the sub-domain index/app url/alias is not exist\n * @sideEffect - set the global.customLoginAppUrl to the app url for custom login with subdomain */\n\nexport const getAppUrlForCustomLoginWithSubdomain = async (subDomainIndex?: number): Promise<string | undefined> => {\n if (subDomainIndex === undefined) {\n return undefined;\n }\n\n const headers = await getAppHeaders();\n const alias = getTenantAliasFromHeaders(headers, subDomainIndex);\n if (!alias) {\n resetGlobalCustomLoginAppUrl();\n return undefined;\n }\n const requestHeaders = { ...headers, [CUSTOM_LOGIN_HEADER]: alias };\n const res = await getPublicSettings(requestHeaders).catch(() => undefined);\n const subDomainAppUrl = res?.applicationUrl;\n if (!subDomainAppUrl) {\n resetGlobalCustomLoginAppUrl();\n return undefined;\n }\n global.customLoginAppUrl = subDomainAppUrl;\n return subDomainAppUrl;\n};\n"],"mappings":";;;;;;;;AAAA,IAAAA,IAAA,GAAAC,OAAA;AACA,IAAAC,MAAA,GAAAD,OAAA;AACA,IAAAE,QAAA,GAAAF,OAAA;AAEA;AACA;AACA;AACA;AACA;AACA;AACO,MAAMG,yBAAyB,GAAGA,CAACC,OAA+B,EAAEC,cAAsB,KAAK;EAAA,IAAAC,aAAA,EAAAC,mBAAA,EAAAC,qBAAA;EACpG,OAAOJ,OAAO,qBAAAE,aAAA,GAAPF,OAAO,CAAEK,IAAI,sBAAAF,mBAAA,GAAbD,aAAA,CAAeI,KAAK,CAAC,GAAG,CAAC,sBAAAF,qBAAA,GAAzBD,mBAAA,CAA2BI,KAAK,CAAC,CAAC,EAAE,CAAC,CAAC,CAAC,qBAAvCH,qBAAA,CAA0CH,cAAc,CAAC;AAClE,CAAC;;AAED;AACA;AACA;AAFAO,OAAA,CAAAT,yBAAA,GAAAA,yBAAA;AAGO,MAAMU,4BAA4B,GAAGA,CAAA,KAAM;EAChDC,MAAM,CAACC,iBAAiB,GAAGC,SAAS;AACtC,CAAC;;AAED;AACA;AACA;AACA;AACA;AAJAJ,OAAA,CAAAC,4BAAA,GAAAA,4BAAA;AAMO,MAAMI,oCAAoC,GAAG,MAAOZ,cAAuB,IAAkC;EAClH,IAAIA,cAAc,KAAKW,SAAS,EAAE;IAChC,OAAOA,SAAS;EAClB;EAEA,MAAMZ,OAAO,GAAG,MAAM,IAAAc,sBAAa,GAAE;EACrC,MAAMC,KAAK,GAAGhB,yBAAyB,CAACC,OAAO,EAAEC,cAAc,CAAC;EAChE,IAAI,CAACc,KAAK,EAAE;IACVN,4BAA4B,EAAE;IAC9B,OAAOG,SAAS;EAClB;EACA,MAAMI,cAAc,OAAAC,SAAA,CAAAC,OAAA,MAAQlB,OAAO;IAAE,CAACmB,0BAAmB,GAAGJ;EAAK,EAAE;EACnE,MAAMK,GAAG,GAAG,MAAM,IAAAC,sBAAiB,EAACL,cAAc,CAAC,CAACM,KAAK,CAAC,MAAMV,SAAS,CAAC;EAC1E,MAAMW,eAAe,GAAGH,GAAG,oBAAHA,GAAG,CAAEI,cAAc;EAC3C,IAAI,CAACD,eAAe,EAAE;IACpBd,4BAA4B,EAAE;IAC9B,OAAOG,SAAS;EAClB;EACAF,MAAM,CAACC,iBAAiB,GAAGY,eAAe;EAC1C,OAAOA,eAAe;AACxB,CAAC;AAACf,OAAA,CAAAK,oCAAA,GAAAA,oCAAA"}
package/app/helpers.d.ts CHANGED
@@ -1,6 +1,12 @@
1
1
  import { FronteggUserSession, FronteggUserTokens } from '../types';
2
+ /**
3
+ * Support for Next.js 15 breaking changes, where props.params is now a promise-based function
4
+ * for more info: https://nextjs.org/docs/messages/sync-dynamic-apis
5
+ * @param obj
6
+ * @param key
7
+ */
8
+ export declare function handleOptionalPromiseObject(obj: any, key: string): Promise<any>;
2
9
  export declare const getAppSession: () => Promise<import("../types").FronteggNextJSSession | undefined>;
3
- export declare const getAppHeaders: () => Record<string, string>;
4
- export declare const getAppHeadersPromise: () => Promise<Record<string, string>>;
10
+ export declare const getAppHeaders: () => Promise<Record<string, string>>;
5
11
  export declare function getAppUserSession(): Promise<FronteggUserSession | undefined>;
6
12
  export declare function getAppUserTokens(): Promise<FronteggUserTokens | undefined>;
package/app/helpers.js CHANGED
@@ -4,32 +4,77 @@ var _interopRequireDefault = require("@babel/runtime/helpers/interopRequireDefau
4
4
  Object.defineProperty(exports, "__esModule", {
5
5
  value: true
6
6
  });
7
- exports.getAppSession = exports.getAppHeadersPromise = exports.getAppHeaders = void 0;
7
+ exports.getAppSession = exports.getAppHeaders = void 0;
8
8
  exports.getAppUserSession = getAppUserSession;
9
9
  exports.getAppUserTokens = getAppUserTokens;
10
+ exports.handleOptionalPromiseObject = handleOptionalPromiseObject;
10
11
  var _headers = require("next/headers");
11
12
  var _cookies = _interopRequireDefault(require("../utils/cookies"));
12
13
  var _createSession = _interopRequireDefault(require("../utils/createSession"));
13
14
  var _encryption = _interopRequireDefault(require("../utils/encryption"));
14
- const getCookie = () => {
15
- const allCookies = (0, _headers.cookies)().getAll();
15
+ /**
16
+ * Support for Next.js 15 breaking changes, where props.params is now a promise-based function
17
+ * for more info: https://nextjs.org/docs/messages/sync-dynamic-apis
18
+ * @param obj
19
+ * @param key
20
+ */
21
+ async function handleOptionalPromiseObject(obj, key) {
22
+ let value;
23
+ if (typeof obj[key] === 'function') {
24
+ var _obj$key;
25
+ // In case props.params is now a promise-based function
26
+ value = await (obj == null ? void 0 : (_obj$key = obj[key]) == null ? void 0 : _obj$key.call(obj));
27
+ } else {
28
+ // If props.params is still an object
29
+ value = obj == null ? void 0 : obj[key];
30
+ }
31
+ return value;
32
+ }
33
+
34
+ /**
35
+ * Support for Next.js 15 breaking changes, where cookies() are now promise-based functions
36
+ * for more info: https://nextjs.org/docs/messages/sync-dynamic-apis
37
+ * @param func
38
+ */
39
+ async function getRequestCookies() {
40
+ let value = (0, _headers.cookies)();
41
+
42
+ // noinspection SuspiciousTypeOfGuard
43
+ if (value instanceof Promise) {
44
+ return await value;
45
+ }
46
+ return value;
47
+ }
48
+
49
+ /**
50
+ * Support for Next.js 15 breaking changes, where cookies() are now promise-based functions
51
+ * for more info: https://nextjs.org/docs/messages/sync-dynamic-apis
52
+ * @param func
53
+ */
54
+ async function getRequestHeaders() {
55
+ let value = (0, _headers.headers)();
56
+
57
+ // noinspection SuspiciousTypeOfGuard
58
+ if (value instanceof Promise) {
59
+ return await value;
60
+ }
61
+ return value;
62
+ }
63
+ const getCookie = async () => {
64
+ const allCookies = (await getRequestCookies()).getAll();
16
65
  return _cookies.default.parseCookieFromArray(allCookies);
17
66
  };
18
- const getAppSession = () => {
19
- const cookies = getCookie();
67
+ const getAppSession = async () => {
68
+ const cookies = await getCookie();
20
69
  return (0, _createSession.default)(cookies, _encryption.default);
21
70
  };
22
71
  exports.getAppSession = getAppSession;
23
- const getAppHeaders = () => {
72
+ const getAppHeaders = async () => {
24
73
  const reqHeaders = {};
25
- (0, _headers.headers)().forEach((value, key) => reqHeaders[key] = value);
74
+ (await getRequestHeaders()).forEach((value, key) => reqHeaders[key] = value);
26
75
  return reqHeaders;
27
76
  };
28
77
  exports.getAppHeaders = getAppHeaders;
29
- const getAppHeadersPromise = async () => {
30
- return getAppHeaders();
31
- };
32
- exports.getAppHeadersPromise = getAppHeadersPromise;
33
78
  async function getAppUserSession() {
34
79
  const session = await getAppSession();
35
80
  return session == null ? void 0 : session.user;
@@ -1 +1 @@
1
- {"version":3,"file":"helpers.js","names":["_headers","require","_cookies","_interopRequireDefault","_createSession","_encryption","getCookie","allCookies","cookies","getAll","CookieManager","parseCookieFromArray","getAppSession","createSession","encryption","exports","getAppHeaders","reqHeaders","headers","forEach","value","key","getAppHeadersPromise","getAppUserSession","session","user","getAppUserTokens","undefined","accessToken","refreshToken"],"sources":["../../../../packages/nextjs/src/app/helpers.ts"],"sourcesContent":["import { cookies, headers } from 'next/headers';\nimport CookieManager from '../utils/cookies';\nimport createSession from '../utils/createSession';\nimport encryption from '../utils/encryption';\nimport { FronteggUserSession, FronteggUserTokens } from '../types';\n\nconst getCookie = () => {\n const allCookies = cookies().getAll();\n return CookieManager.parseCookieFromArray(allCookies);\n};\n\nexport const getAppSession = () => {\n const cookies = getCookie();\n return createSession(cookies, encryption);\n};\n\nexport const getAppHeaders = (): Record<string, string> => {\n const reqHeaders: Record<string, string> = {};\n headers().forEach((value, key) => (reqHeaders[key] = value));\n return reqHeaders;\n};\n\nexport const getAppHeadersPromise = async (): Promise<Record<string, string>> => {\n return getAppHeaders();\n};\n\nexport async function getAppUserSession(): Promise<FronteggUserSession | undefined> {\n const session = await getAppSession();\n return session?.user;\n}\n\nexport async function getAppUserTokens(): Promise<FronteggUserTokens | undefined> {\n const session = await getAppSession();\n if (!session) {\n return undefined;\n }\n return {\n accessToken: session.accessToken,\n refreshToken: session.refreshToken,\n };\n}\n"],"mappings":";;;;;;;;;AAAA,IAAAA,QAAA,GAAAC,OAAA;AACA,IAAAC,QAAA,GAAAC,sBAAA,CAAAF,OAAA;AACA,IAAAG,cAAA,GAAAD,sBAAA,CAAAF,OAAA;AACA,IAAAI,WAAA,GAAAF,sBAAA,CAAAF,OAAA;AAGA,MAAMK,SAAS,GAAGA,CAAA,KAAM;EACtB,MAAMC,UAAU,GAAG,IAAAC,gBAAO,GAAE,CAACC,MAAM,EAAE;EACrC,OAAOC,gBAAa,CAACC,oBAAoB,CAACJ,UAAU,CAAC;AACvD,CAAC;AAEM,MAAMK,aAAa,GAAGA,CAAA,KAAM;EACjC,MAAMJ,OAAO,GAAGF,SAAS,EAAE;EAC3B,OAAO,IAAAO,sBAAa,EAACL,OAAO,EAAEM,mBAAU,CAAC;AAC3C,CAAC;AAACC,OAAA,CAAAH,aAAA,GAAAA,aAAA;AAEK,MAAMI,aAAa,GAAGA,CAAA,KAA8B;EACzD,MAAMC,UAAkC,GAAG,CAAC,CAAC;EAC7C,IAAAC,gBAAO,GAAE,CAACC,OAAO,CAAC,CAACC,KAAK,EAAEC,GAAG,KAAMJ,UAAU,CAACI,GAAG,CAAC,GAAGD,KAAM,CAAC;EAC5D,OAAOH,UAAU;AACnB,CAAC;AAACF,OAAA,CAAAC,aAAA,GAAAA,aAAA;AAEK,MAAMM,oBAAoB,GAAG,MAAAA,CAAA,KAA6C;EAC/E,OAAON,aAAa,EAAE;AACxB,CAAC;AAACD,OAAA,CAAAO,oBAAA,GAAAA,oBAAA;AAEK,eAAeC,iBAAiBA,CAAA,EAA6C;EAClF,MAAMC,OAAO,GAAG,MAAMZ,aAAa,EAAE;EACrC,OAAOY,OAAO,oBAAPA,OAAO,CAAEC,IAAI;AACtB;AAEO,eAAeC,gBAAgBA,CAAA,EAA4C;EAChF,MAAMF,OAAO,GAAG,MAAMZ,aAAa,EAAE;EACrC,IAAI,CAACY,OAAO,EAAE;IACZ,OAAOG,SAAS;EAClB;EACA,OAAO;IACLC,WAAW,EAAEJ,OAAO,CAACI,WAAW;IAChCC,YAAY,EAAEL,OAAO,CAACK;EACxB,CAAC;AACH"}
1
+ {"version":3,"file":"helpers.js","names":["_headers","require","_cookies","_interopRequireDefault","_createSession","_encryption","handleOptionalPromiseObject","obj","key","value","_obj$key","call","getRequestCookies","cookies","Promise","getRequestHeaders","headers","getCookie","allCookies","getAll","CookieManager","parseCookieFromArray","getAppSession","createSession","encryption","exports","getAppHeaders","reqHeaders","forEach","getAppUserSession","session","user","getAppUserTokens","undefined","accessToken","refreshToken"],"sources":["../../../../packages/nextjs/src/app/helpers.ts"],"sourcesContent":["import { cookies, headers } from 'next/headers';\nimport CookieManager from '../utils/cookies';\nimport createSession from '../utils/createSession';\nimport encryption from '../utils/encryption';\nimport { FronteggUserSession, FronteggUserTokens } from '../types';\n\n/**\n * Support for Next.js 15 breaking changes, where props.params is now a promise-based function\n * for more info: https://nextjs.org/docs/messages/sync-dynamic-apis\n * @param obj\n * @param key\n */\nexport async function handleOptionalPromiseObject(obj: any, key: string) {\n let value;\n\n if (typeof obj[key] === 'function') {\n // In case props.params is now a promise-based function\n value = await obj?.[key]?.();\n } else {\n // If props.params is still an object\n value = obj?.[key];\n }\n\n return value;\n}\n\n/**\n * Support for Next.js 15 breaking changes, where cookies() are now promise-based functions\n * for more info: https://nextjs.org/docs/messages/sync-dynamic-apis\n * @param func\n */\nasync function getRequestCookies() {\n let value = cookies();\n\n // noinspection SuspiciousTypeOfGuard\n if (value instanceof Promise) {\n return await value;\n }\n return value;\n}\n\n/**\n * Support for Next.js 15 breaking changes, where cookies() are now promise-based functions\n * for more info: https://nextjs.org/docs/messages/sync-dynamic-apis\n * @param func\n */\nasync function getRequestHeaders() {\n let value = headers();\n\n // noinspection SuspiciousTypeOfGuard\n if (value instanceof Promise) {\n return await value;\n }\n return value;\n}\n\nconst getCookie = async () => {\n const allCookies = (await getRequestCookies()).getAll();\n return CookieManager.parseCookieFromArray(allCookies);\n};\n\nexport const getAppSession = async () => {\n const cookies = await getCookie();\n return createSession(cookies, encryption);\n};\n\nexport const getAppHeaders = async (): Promise<Record<string, string>> => {\n const reqHeaders: Record<string, string> = {};\n (await getRequestHeaders()).forEach((value: string, key: string) => (reqHeaders[key] = value));\n return reqHeaders;\n};\n\nexport async function getAppUserSession(): Promise<FronteggUserSession | undefined> {\n const session = await getAppSession();\n return session?.user;\n}\n\nexport async function getAppUserTokens(): Promise<FronteggUserTokens | undefined> {\n const session = await getAppSession();\n if (!session) {\n return undefined;\n }\n return {\n accessToken: session.accessToken,\n refreshToken: session.refreshToken,\n };\n}\n"],"mappings":";;;;;;;;;;AAAA,IAAAA,QAAA,GAAAC,OAAA;AACA,IAAAC,QAAA,GAAAC,sBAAA,CAAAF,OAAA;AACA,IAAAG,cAAA,GAAAD,sBAAA,CAAAF,OAAA;AACA,IAAAI,WAAA,GAAAF,sBAAA,CAAAF,OAAA;AAGA;AACA;AACA;AACA;AACA;AACA;AACO,eAAeK,2BAA2BA,CAACC,GAAQ,EAAEC,GAAW,EAAE;EACvE,IAAIC,KAAK;EAET,IAAI,OAAOF,GAAG,CAACC,GAAG,CAAC,KAAK,UAAU,EAAE;IAAA,IAAAE,QAAA;IAClC;IACAD,KAAK,GAAG,OAAMF,GAAG,qBAAAG,QAAA,GAAHH,GAAG,CAAGC,GAAG,CAAC,qBAAVE,QAAA,CAAAC,IAAA,CAAAJ,GAAG,CAAW;EAC9B,CAAC,MAAM;IACL;IACAE,KAAK,GAAGF,GAAG,oBAAHA,GAAG,CAAGC,GAAG,CAAC;EACpB;EAEA,OAAOC,KAAK;AACd;;AAEA;AACA;AACA;AACA;AACA;AACA,eAAeG,iBAAiBA,CAAA,EAAG;EACjC,IAAIH,KAAK,GAAG,IAAAI,gBAAO,GAAE;;EAErB;EACA,IAAIJ,KAAK,YAAYK,OAAO,EAAE;IAC5B,OAAO,MAAML,KAAK;EACpB;EACA,OAAOA,KAAK;AACd;;AAEA;AACA;AACA;AACA;AACA;AACA,eAAeM,iBAAiBA,CAAA,EAAG;EACjC,IAAIN,KAAK,GAAG,IAAAO,gBAAO,GAAE;;EAErB;EACA,IAAIP,KAAK,YAAYK,OAAO,EAAE;IAC5B,OAAO,MAAML,KAAK;EACpB;EACA,OAAOA,KAAK;AACd;AAEA,MAAMQ,SAAS,GAAG,MAAAA,CAAA,KAAY;EAC5B,MAAMC,UAAU,GAAG,CAAC,MAAMN,iBAAiB,EAAE,EAAEO,MAAM,EAAE;EACvD,OAAOC,gBAAa,CAACC,oBAAoB,CAACH,UAAU,CAAC;AACvD,CAAC;AAEM,MAAMI,aAAa,GAAG,MAAAA,CAAA,KAAY;EACvC,MAAMT,OAAO,GAAG,MAAMI,SAAS,EAAE;EACjC,OAAO,IAAAM,sBAAa,EAACV,OAAO,EAAEW,mBAAU,CAAC;AAC3C,CAAC;AAACC,OAAA,CAAAH,aAAA,GAAAA,aAAA;AAEK,MAAMI,aAAa,GAAG,MAAAA,CAAA,KAA6C;EACxE,MAAMC,UAAkC,GAAG,CAAC,CAAC;EAC7C,CAAC,MAAMZ,iBAAiB,EAAE,EAAEa,OAAO,CAAC,CAACnB,KAAa,EAAED,GAAW,KAAMmB,UAAU,CAACnB,GAAG,CAAC,GAAGC,KAAM,CAAC;EAC9F,OAAOkB,UAAU;AACnB,CAAC;AAACF,OAAA,CAAAC,aAAA,GAAAA,aAAA;AAEK,eAAeG,iBAAiBA,CAAA,EAA6C;EAClF,MAAMC,OAAO,GAAG,MAAMR,aAAa,EAAE;EACrC,OAAOQ,OAAO,oBAAPA,OAAO,CAAEC,IAAI;AACtB;AAEO,eAAeC,gBAAgBA,CAAA,EAA4C;EAChF,MAAMF,OAAO,GAAG,MAAMR,aAAa,EAAE;EACrC,IAAI,CAACQ,OAAO,EAAE;IACZ,OAAOG,SAAS;EAClB;EACA,OAAO;IACLC,WAAW,EAAEJ,OAAO,CAACI,WAAW;IAChCC,YAAY,EAAEL,OAAO,CAACK;EACxB,CAAC;AACH"}
package/index.js CHANGED
@@ -1,4 +1,4 @@
1
- /** @license Frontegg v9.0.4
1
+ /** @license Frontegg v9.0.5-alpha.11464183313
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.0.4",
4
+ "version": "9.0.5-alpha.11464183313",
5
5
  "author": "Frontegg LTD",
6
6
  "license": "MIT",
7
7
  "repository": {
package/sdkVersion.js CHANGED
@@ -5,7 +5,7 @@ Object.defineProperty(exports, "__esModule", {
5
5
  });
6
6
  exports.default = void 0;
7
7
  var _default = {
8
- version: '9.0.4'
8
+ version: '9.0.5-alpha.11464183313'
9
9
  };
10
10
  exports.default = _default;
11
11
  //# sourceMappingURL=sdkVersion.js.map
package/sdkVersion.js.map CHANGED
@@ -1 +1 @@
1
- {"version":3,"file":"sdkVersion.js","names":["version","exports","default","_default"],"sources":["../../../packages/nextjs/src/sdkVersion.ts"],"sourcesContent":["export default { version: '9.0.4' };\n"],"mappings":";;;;;;eAAe;EAAEA,OAAO,EAAE;AAAQ,CAAC;AAAAC,OAAA,CAAAC,OAAA,GAAAC,QAAA"}
1
+ {"version":3,"file":"sdkVersion.js","names":["version","exports","default","_default"],"sources":["../../../packages/nextjs/src/sdkVersion.ts"],"sourcesContent":["export default { version: '9.0.5-alpha.11464183313' };\n"],"mappings":";;;;;;eAAe;EAAEA,OAAO,EAAE;AAA0B,CAAC;AAAAC,OAAA,CAAAC,OAAA,GAAAC,QAAA"}