@frontegg/nextjs 6.7.20 → 6.7.21-alpha.4441481917

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