@frontegg/nextjs 6.7.20 → 6.7.21-alpha.4441971157

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 +11 -0
  2. package/README.md +19 -37
  3. package/api/index.d.ts +19 -0
  4. package/api/index.js +87 -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 +56 -0
  9. package/api/urls.js.map +1 -0
  10. package/api/utils.d.ts +46 -0
  11. package/api/utils.js +123 -0
  12. package/api/utils.js.map +1 -0
  13. package/app/ClientFronteggProvider.d.ts +3 -0
  14. package/app/ClientFronteggProvider.js +32 -0
  15. package/app/ClientFronteggProvider.js.map +1 -0
  16. package/app/FronteggAppProvider.d.ts +4 -0
  17. package/app/FronteggAppProvider.js +25 -0
  18. package/app/FronteggAppProvider.js.map +1 -0
  19. package/{client → app}/FronteggAppRouter.d.ts +11 -10
  20. package/app/FronteggAppRouter.js +38 -0
  21. package/app/FronteggAppRouter.js.map +1 -0
  22. package/app/helpers.d.ts +5 -0
  23. package/app/helpers.js +43 -0
  24. package/app/helpers.js.map +1 -0
  25. package/app/index.d.ts +4 -0
  26. package/app/index.js +39 -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 +12 -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 +54 -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 +76 -0
  37. package/common/FronteggBaseProvider.js.map +1 -0
  38. package/common/FronteggRouterBase.d.ts +9 -0
  39. package/common/FronteggRouterBase.js +48 -0
  40. package/common/FronteggRouterBase.js.map +1 -0
  41. package/common/helpers.d.ts +3 -9
  42. package/common/helpers.js +32 -0
  43. package/common/helpers.js.map +1 -0
  44. package/common/index.d.ts +4 -6
  45. package/common/index.js +45 -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 +30 -0
  50. package/common/useRequestAuthorizeSSR.js.map +1 -0
  51. package/config/constants.d.ts +57 -0
  52. package/config/constants.js +20 -0
  53. package/config/constants.js.map +1 -0
  54. package/config/helpers.d.ts +28 -0
  55. package/config/helpers.js +97 -0
  56. package/config/helpers.js.map +1 -0
  57. package/config/index.d.ts +24 -0
  58. package/config/index.js +94 -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 +6 -0
  63. package/config/types.js.map +1 -0
  64. package/edge/getSessionOnEdge.d.ts +3 -2
  65. package/edge/getSessionOnEdge.js +16 -0
  66. package/edge/getSessionOnEdge.js.map +1 -0
  67. package/edge/index.d.ts +3 -2
  68. package/edge/index.js +38 -63
  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 +16 -0
  73. package/edge/redirectToLogin.js.map +1 -0
  74. package/edge/shouldBypassMiddleware.d.ts +21 -7
  75. package/edge/shouldBypassMiddleware.js +50 -0
  76. package/edge/shouldBypassMiddleware.js.map +1 -0
  77. package/index.d.ts +7 -11
  78. package/index.js +98 -1392
  79. package/index.js.map +1 -1
  80. package/middleware/FronteggApiMiddleware.d.ts +8 -0
  81. package/middleware/FronteggApiMiddleware.js +34 -0
  82. package/middleware/FronteggApiMiddleware.js.map +1 -0
  83. package/middleware/FronteggProxy.d.ts +4 -0
  84. package/middleware/FronteggProxy.js +31 -0
  85. package/middleware/FronteggProxy.js.map +1 -0
  86. package/middleware/ProxyRequestCallback.d.ts +13 -0
  87. package/middleware/ProxyRequestCallback.js +56 -0
  88. package/middleware/ProxyRequestCallback.js.map +1 -0
  89. package/middleware/ProxyResponseCallback.d.ts +13 -0
  90. package/middleware/ProxyResponseCallback.js +111 -0
  91. package/middleware/ProxyResponseCallback.js.map +1 -0
  92. package/middleware/constants.d.ts +8 -0
  93. package/middleware/constants.js +17 -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 +42 -0
  97. package/middleware/helpers.js.map +1 -0
  98. package/middleware/index.d.ts +23 -0
  99. package/middleware/index.js +13 -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 +29 -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 +84 -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 +13 -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 +32 -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 +46 -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 +19 -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 +40 -0
  126. package/pages/helpers.js.map +1 -0
  127. package/pages/index.d.ts +3 -0
  128. package/pages/index.js +47 -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 +13 -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 +6 -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 +70 -0
  140. package/pages/withFronteggApp/withFronteggApp.js.map +1 -0
  141. package/sdkVersion.d.ts +4 -4
  142. package/sdkVersion.js +11 -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 +6 -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 +23 -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 +32 -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 +15 -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 +64 -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 +239 -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 +161 -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 +6 -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 +51 -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 +37 -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 +37 -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 +15 -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 +15 -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 +28 -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 +56 -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 +28 -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 +67 -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 +108 -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 +61 -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 +80 -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 +94 -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 +31 -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 +28 -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":[],"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;AAAA;EAAA;EAAA;EAAA;EAAA;IAAA;IAAA;MAAA;IAAA;EAAA;AAAA;AACA;AAAA;EAAA;EAAA;EAAA;EAAA;IAAA;IAAA;MAAA;IAAA;EAAA;AAAA;AACA;AAAA;EAAA;EAAA;EAAA;EAAA;IAAA;IAAA;MAAA;IAAA;EAAA;AAAA;AACA;AAAA;EAAA;EAAA;EAAA;EAAA;IAAA;IAAA;MAAA;IAAA;EAAA;AAAA;AAEA;AACA;AAAA;EAAA;EAAA;EAAA;EAAA;IAAA;IAAA;MAAA;IAAA;EAAA;AAAA;AACA;AAAA;EAAA;EAAA;EAAA;EAAA;IAAA;IAAA;MAAA;IAAA;EAAA;AAAA"}
@@ -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,34 @@
1
+ "use strict";
2
+
3
+ Object.defineProperty(exports, "__esModule", {
4
+ value: true
5
+ });
6
+ exports.FronteggApiMiddleware = FronteggApiMiddleware;
7
+ var _FronteggProxy = require("./FronteggProxy");
8
+ var _constants = require("./constants");
9
+ var _helpers = require("./helpers");
10
+ const middlewarePromise = (req, res) => new Promise(resolve => {
11
+ var _req$url;
12
+ const fronteggUrlPath = (0, _helpers.rewritePath)((_req$url = req.url) != null ? _req$url : '/', _constants.fronteggPathRewrite);
13
+ const rewriteUrl = (0, _helpers.rewritePath)(fronteggUrlPath != null ? fronteggUrlPath : '/', _constants.fronteggSSOPathRewrite);
14
+ req.url = rewriteUrl;
15
+ res.on('close', () => resolve());
16
+ const options = {
17
+ target: process.env['FRONTEGG_BASE_URL']
18
+ };
19
+ if (process.env['FRONTEGG_TEST_URL'] && req.url == '/frontegg/middleware-test') {
20
+ options.target = process.env['FRONTEGG_TEST_URL'];
21
+ }
22
+ _FronteggProxy.FronteggProxy.web(req, res, options);
23
+ });
24
+
25
+ /**
26
+ * Next.js HTTP Proxy Middleware
27
+ * @see https://nextjs.org/docs/api-routes/api-middlewares
28
+ * @param {NextApiRequest} req - NextJS api request passed from api routing
29
+ * @param {NextApiResponse} res - NextJS api response passed from api routing
30
+ */
31
+ async function FronteggApiMiddleware(req, res) {
32
+ return await middlewarePromise(req, res);
33
+ }
34
+ //# sourceMappingURL=FronteggApiMiddleware.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"FronteggApiMiddleware.js","names":["middlewarePromise","req","res","Promise","resolve","fronteggUrlPath","rewritePath","url","fronteggPathRewrite","rewriteUrl","fronteggSSOPathRewrite","on","options","target","process","env","FronteggProxy","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;AACA;AACA;AAEA,MAAMA,iBAAiB,GAAG,CAACC,GAAmB,EAAEC,GAAoB,KAClE,IAAIC,OAAO,CAAQC,OAAO,IAAK;EAAA;EAC7B,MAAMC,eAAe,GAAG,IAAAC,oBAAW,cAACL,GAAG,CAACM,GAAG,uBAAI,GAAG,EAAEC,8BAAmB,CAAC;EACxE,MAAMC,UAAU,GAAG,IAAAH,oBAAW,EAACD,eAAe,WAAfA,eAAe,GAAI,GAAG,EAAEK,iCAAsB,CAAC;EAC9ET,GAAG,CAACM,GAAG,GAAGE,UAAU;EACpBP,GAAG,CAACS,EAAE,CAAC,OAAO,EAAE,MAAMP,OAAO,EAAE,CAAC;EAChC,MAAMQ,OAAO,GAAG;IACdC,MAAM,EAAEC,OAAO,CAACC,GAAG,CAAC,mBAAmB;EACzC,CAAC;EACD,IAAID,OAAO,CAACC,GAAG,CAAC,mBAAmB,CAAC,IAAId,GAAG,CAACM,GAAG,IAAI,2BAA2B,EAAE;IAC9EK,OAAO,CAACC,MAAM,GAAGC,OAAO,CAACC,GAAG,CAAC,mBAAmB,CAAC;EACnD;EAEAC,4BAAa,CAACC,GAAG,CAAChB,GAAG,EAAEC,GAAG,EAAEU,OAAO,CAAC;AACtC,CAAC,CAAC;;AAEJ;AACA;AACA;AACA;AACA;AACA;AACO,eAAeM,qBAAqB,CAACjB,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,31 @@
1
+ "use strict";
2
+
3
+ var _interopRequireDefault = require("@babel/runtime/helpers/interopRequireDefault");
4
+ Object.defineProperty(exports, "__esModule", {
5
+ value: true
6
+ });
7
+ exports.FronteggProxy = void 0;
8
+ var _httpProxy = require("http-proxy");
9
+ var _ProxyRequestCallback = _interopRequireDefault(require("./ProxyRequestCallback"));
10
+ var _ProxyResponseCallback = _interopRequireDefault(require("./ProxyResponseCallback"));
11
+ /**
12
+ * @see https://www.npmjs.com/package/http-proxy
13
+ */
14
+ const FronteggProxy = (0, _httpProxy.createProxyServer)({
15
+ target: process.env['FRONTEGG_BASE_URL'],
16
+ changeOrigin: true,
17
+ selfHandleResponse: true
18
+ });
19
+
20
+ /**
21
+ * Set proxy request callback handler
22
+ */
23
+ // @ts-ignore
24
+ exports.FronteggProxy = FronteggProxy;
25
+ FronteggProxy.on('proxyReq', _ProxyRequestCallback.default);
26
+ /**
27
+ * Set proxy response callback handler
28
+ */
29
+ // @ts-ignore
30
+ FronteggProxy.on('proxyRes', _ProxyResponseCallback.default);
31
+ //# sourceMappingURL=FronteggProxy.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"FronteggProxy.js","names":["FronteggProxy","createProxyServer","target","process","env","changeOrigin","selfHandleResponse","on","ProxyRequestCallback","ProxyResponseCallback"],"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;AACA;AACA;AAEA;AACA;AACA;AACO,MAAMA,aAAa,GAAG,IAAAC,4BAAiB,EAAC;EAC7CC,MAAM,EAAEC,OAAO,CAACC,GAAG,CAAC,mBAAmB,CAAC;EACxCC,YAAY,EAAE,IAAI;EAClBC,kBAAkB,EAAE;AACtB,CAAC,CAAC;;AAEF;AACA;AACA;AACA;AAAA;AACAN,aAAa,CAACO,EAAE,CAAC,UAAU,EAAEC,6BAAoB,CAAC;AAClD;AACA;AACA;AACA;AACAR,aAAa,CAACO,EAAE,CAAC,UAAU,EAAEE,8BAAqB,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,56 @@
1
+ "use strict";
2
+
3
+ var _interopRequireDefault = require("@babel/runtime/helpers/interopRequireDefault");
4
+ Object.defineProperty(exports, "__esModule", {
5
+ value: true
6
+ });
7
+ exports.default = void 0;
8
+ var _package = _interopRequireDefault(require("next/package.json"));
9
+ var _sdkVersion = _interopRequireDefault(require("../sdkVersion"));
10
+ var _config = _interopRequireDefault(require("../config"));
11
+ var _cookies = _interopRequireDefault(require("../utils/cookies"));
12
+ var _fronteggLogger = _interopRequireDefault(require("../utils/fronteggLogger"));
13
+ const logger = _fronteggLogger.default.child({
14
+ tag: 'FronteggApiMiddleware.ProxyRequestCallback'
15
+ });
16
+ /**
17
+ * Proxy request callback fired on before each request to Frontegg services,
18
+ * to transport frontegg cookies.
19
+ *
20
+ * @param {ClientRequest} proxyReq - Proxy request to be sent
21
+ * @param {NextApiRequest} req - Next.js incoming request
22
+ */
23
+ const ProxyRequestCallback = (proxyReq, req) => {
24
+ try {
25
+ var _req$headers$xFronte, _req$headers$xFronte2;
26
+ logger.info(`${req.url} | Going to proxy request`);
27
+ logger.debug(`${req.url} | parsing request cookies`);
28
+ const allCookies = _cookies.default.parseCookieHeader(req);
29
+ logger.debug(`${req.url} | found ${allCookies} cookies`);
30
+ const fronteggCookiesNames = Object.keys(allCookies).filter(cookieName => {
31
+ return cookieName.startsWith('fe_') && !cookieName.startsWith(_config.default.cookieName);
32
+ });
33
+ logger.debug(`${req.url} | proxy FronteggCookies (${fronteggCookiesNames.join(', ')})`);
34
+ fronteggCookiesNames.forEach(cookieName => {
35
+ proxyReq.setHeader(cookieName, allCookies[cookieName]);
36
+ });
37
+ proxyReq.setHeader('x-frontegg-middleware', 'true');
38
+ proxyReq.setHeader('x-frontegg-framework', (_req$headers$xFronte = req.headers['x-frontegg-framework']) != null ? _req$headers$xFronte : `next@${_package.default.version}`);
39
+ proxyReq.setHeader('x-frontegg-sdk', (_req$headers$xFronte2 = req.headers['x-frontegg-sdk']) != null ? _req$headers$xFronte2 : `@frontegg/nextjs@${_sdkVersion.default.version}`);
40
+ logger.debug(`${req.url} | check if request has body`);
41
+ if (req.body) {
42
+ logger.debug(`${req.url} | writing request body to proxyReq`);
43
+ const bodyData = JSON.stringify(req.body);
44
+ // in case if content-type is application/x-www-form-urlencoded -> we need to change to application/json
45
+ proxyReq.setHeader('Content-Type', 'application/json');
46
+ proxyReq.setHeader('Content-Length', Buffer.byteLength(bodyData));
47
+ // stream the content
48
+ proxyReq.write(bodyData);
49
+ }
50
+ } catch (e) {
51
+ logger.error(`${req.url} | Failed to proxy request`, e);
52
+ }
53
+ };
54
+ var _default = ProxyRequestCallback;
55
+ exports.default = _default;
56
+ //# sourceMappingURL=ProxyRequestCallback.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"ProxyRequestCallback.js","names":["logger","fronteggLogger","child","tag","ProxyRequestCallback","proxyReq","req","info","url","debug","allCookies","CookieManager","parseCookieHeader","fronteggCookiesNames","Object","keys","filter","cookieName","startsWith","config","join","forEach","setHeader","headers","NextJsPkg","version","sdkVersion","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;AAIA;AACA;AACA;AACA;AAEA,MAAMA,MAAM,GAAGC,uBAAc,CAACC,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;IACFN,MAAM,CAACO,IAAI,CAAE,GAAED,GAAG,CAACE,GAAI,2BAA0B,CAAC;IAClDR,MAAM,CAACS,KAAK,CAAE,GAAEH,GAAG,CAACE,GAAI,4BAA2B,CAAC;IACpD,MAAME,UAAU,GAAGC,gBAAa,CAACC,iBAAiB,CAACN,GAAG,CAAC;IACvDN,MAAM,CAACS,KAAK,CAAE,GAAEH,GAAG,CAACE,GAAI,YAAWE,UAAW,UAAS,CAAC;IACxD,MAAMG,oBAAoB,GAAGC,MAAM,CAACC,IAAI,CAACL,UAAU,CAAC,CAACM,MAAM,CAAEC,UAAU,IAAK;MAC1E,OAAOA,UAAU,CAACC,UAAU,CAAC,KAAK,CAAC,IAAI,CAACD,UAAU,CAACC,UAAU,CAACC,eAAM,CAACF,UAAU,CAAC;IAClF,CAAC,CAAC;IAEFjB,MAAM,CAACS,KAAK,CAAE,GAAEH,GAAG,CAACE,GAAI,6BAA4BK,oBAAoB,CAACO,IAAI,CAAC,IAAI,CAAE,GAAE,CAAC;IACvFP,oBAAoB,CAACQ,OAAO,CAAEJ,UAAkB,IAAK;MACnDZ,QAAQ,CAACiB,SAAS,CAACL,UAAU,EAAEP,UAAU,CAACO,UAAU,CAAC,CAAC;IACxD,CAAC,CAAC;IAEFZ,QAAQ,CAACiB,SAAS,CAAC,uBAAuB,EAAE,MAAM,CAAC;IACnDjB,QAAQ,CAACiB,SAAS,CAAC,sBAAsB,0BAAEhB,GAAG,CAACiB,OAAO,CAAC,sBAAsB,CAAC,mCAAK,QAAOC,gBAAS,CAACC,OAAQ,EAAC,CAAC;IAC9GpB,QAAQ,CAACiB,SAAS,CAAC,gBAAgB,2BAAEhB,GAAG,CAACiB,OAAO,CAAC,gBAAgB,CAAC,oCAAK,oBAAmBG,mBAAU,CAACD,OAAQ,EAAC,CAAC;IAC/GzB,MAAM,CAACS,KAAK,CAAE,GAAEH,GAAG,CAACE,GAAI,8BAA6B,CAAC;IACtD,IAAIF,GAAG,CAACqB,IAAI,EAAE;MACZ3B,MAAM,CAACS,KAAK,CAAE,GAAEH,GAAG,CAACE,GAAI,qCAAoC,CAAC;MAC7D,MAAMoB,QAAQ,GAAGC,IAAI,CAACC,SAAS,CAACxB,GAAG,CAACqB,IAAI,CAAC;MACzC;MACAtB,QAAQ,CAACiB,SAAS,CAAC,cAAc,EAAE,kBAAkB,CAAC;MACtDjB,QAAQ,CAACiB,SAAS,CAAC,gBAAgB,EAAES,MAAM,CAACC,UAAU,CAACJ,QAAQ,CAAC,CAAC;MACjE;MACAvB,QAAQ,CAAC4B,KAAK,CAACL,QAAQ,CAAC;IAC1B;EACF,CAAC,CAAC,OAAOM,CAAC,EAAE;IACVlC,MAAM,CAACmC,KAAK,CAAE,GAAE7B,GAAG,CAACE,GAAI,4BAA2B,EAAE0B,CAAC,CAAC;EACzD;AACF,CAAC;AAAC,eAEa9B,oBAAoB;AAAA"}
@@ -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,111 @@
1
+ "use strict";
2
+
3
+ var _interopRequireDefault = require("@babel/runtime/helpers/interopRequireDefault");
4
+ Object.defineProperty(exports, "__esModule", {
5
+ value: true
6
+ });
7
+ exports.default = void 0;
8
+ var _config = _interopRequireDefault(require("../config"));
9
+ var _cookies = _interopRequireDefault(require("../utils/cookies"));
10
+ var _common = require("../common");
11
+ var _helpers = require("./helpers");
12
+ var _fronteggLogger = _interopRequireDefault(require("../utils/fronteggLogger"));
13
+ const logger = _fronteggLogger.default.child({
14
+ tag: 'FronteggApiMiddleware.ProxyResponseCallback'
15
+ });
16
+ /**
17
+ * Proxy response callback fired on after each response from Frontegg services,
18
+ * to transport frontegg modify cookies and generating encrypted JWT session cookie.
19
+ *
20
+ * @param {IncomingMessage} proxyRes - Proxy response from Frontegg services
21
+ * @param {NextApiRequest} req - Next.js request sent from client-side
22
+ * @param {NextApiResponse} res - Next.js response to send to client-side
23
+ */
24
+ const ProxyResponseCallback = (proxyRes, req, res) => {
25
+ let buffer = new Buffer('');
26
+ let totalLength = 0;
27
+ const isSecured = new URL(_config.default.appUrl).protocol === 'https:';
28
+ proxyRes.on('data', chunk => {
29
+ totalLength += chunk.length;
30
+ buffer = Buffer.concat([buffer, chunk], totalLength);
31
+ });
32
+ proxyRes.on('end', async () => {
33
+ try {
34
+ var _proxyRes$statusCode;
35
+ const url = req.url;
36
+ const statusCode = (_proxyRes$statusCode = proxyRes.statusCode) != null ? _proxyRes$statusCode : 500;
37
+ const isSuccess = statusCode >= 200 && statusCode < 400;
38
+ const bodyStr = buffer.toString('utf-8');
39
+ const isLogout = (0, _helpers.isFronteggLogoutUrl)(url);
40
+ if (isLogout) {
41
+ _cookies.default.removeCookies({
42
+ isSecured,
43
+ cookieDomain: _config.default.cookieDomain,
44
+ res,
45
+ req
46
+ });
47
+ if (isSuccess) {
48
+ var _process$env$FRONTEGG;
49
+ 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 : '')}`);
50
+ } else {
51
+ res.status(statusCode).end(bodyStr);
52
+ }
53
+ return;
54
+ }
55
+ if (isSuccess) {
56
+ var _CookieManager$modify;
57
+ const cookies = (_CookieManager$modify = _cookies.default.modifySetCookie(proxyRes.headers['set-cookie'], isSecured)) != null ? _CookieManager$modify : [];
58
+ try {
59
+ if (bodyStr && bodyStr.length > 0) {
60
+ const body = JSON.parse(bodyStr);
61
+ if (body.accessToken || body.access_token) {
62
+ const [session, decodedJwt] = await (0, _common.createSessionFromAccessToken)(body);
63
+ if (session) {
64
+ const sessionCookie = _cookies.default.create({
65
+ value: session,
66
+ expires: new Date(decodedJwt.exp * 1000),
67
+ secure: isSecured
68
+ });
69
+ cookies.push(...sessionCookie);
70
+ }
71
+ }
72
+ }
73
+ } catch (e) {
74
+ /** ignore api call if:
75
+ * - Does not have accessToken / access_token
76
+ * - Not json response
77
+ */
78
+ if (statusCode === 302 && url === '/auth/saml/callback') {
79
+ /**
80
+ * Ignore saml postLogin response with redirect
81
+ */
82
+ } else {
83
+ logger.error('failed to create session', e, {
84
+ url,
85
+ statusCode
86
+ });
87
+ }
88
+ }
89
+ Object.keys(proxyRes.headers).filter(header => header !== 'cookie').forEach(header => {
90
+ res.setHeader(header, `${proxyRes.headers[header]}`);
91
+ });
92
+ res.setHeader('set-cookie', cookies);
93
+ res.status(statusCode).end(bodyStr);
94
+ } else {
95
+ if (statusCode >= 400 && statusCode !== 404) {
96
+ logger.error(`Middleware request failed statusCode: ${statusCode} for url: ${url}`);
97
+ }
98
+ Object.keys(proxyRes.headers).filter(header => header !== 'cookie').forEach(header => {
99
+ res.setHeader(header, `${proxyRes.headers[header]}`);
100
+ });
101
+ res.status(statusCode).end(bodyStr);
102
+ }
103
+ } catch (e) {
104
+ logger.error('proxy failed to send request', e);
105
+ res.status(500).end('Internal Server Error');
106
+ }
107
+ });
108
+ };
109
+ var _default = ProxyResponseCallback;
110
+ exports.default = _default;
111
+ //# sourceMappingURL=ProxyResponseCallback.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"ProxyResponseCallback.js","names":["logger","fronteggLogger","child","tag","ProxyResponseCallback","proxyRes","req","res","buffer","Buffer","totalLength","isSecured","URL","config","appUrl","protocol","on","chunk","length","concat","url","statusCode","isSuccess","bodyStr","toString","isLogout","isFronteggLogoutUrl","CookieManager","removeCookies","cookieDomain","redirect","process","env","encodeURIComponent","status","end","cookies","modifySetCookie","headers","body","JSON","parse","accessToken","access_token","session","decodedJwt","createSessionFromAccessToken","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,17 @@
1
+ "use strict";
2
+
3
+ Object.defineProperty(exports, "__esModule", {
4
+ value: true
5
+ });
6
+ exports.fronteggSSOPathRewrite = exports.fronteggPathRewrite = void 0;
7
+ const fronteggPathRewrite = [{
8
+ patternStr: '^/api/',
9
+ replaceStr: '/'
10
+ }];
11
+ exports.fronteggPathRewrite = fronteggPathRewrite;
12
+ const fronteggSSOPathRewrite = [{
13
+ patternStr: '/frontegg/saml/callback$',
14
+ replaceStr: '/auth/saml/callback'
15
+ }];
16
+ exports.fronteggSSOPathRewrite = fronteggSSOPathRewrite;
17
+ //# 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":";;;;;;AAAO,MAAMA,mBAAmB,GAAG,CACjC;EACEC,UAAU,EAAE,QAAQ;EACpBC,UAAU,EAAE;AACd,CAAC,CACF;AAAC;AACK,MAAMC,sBAAsB,GAAG,CACpC;EACEF,UAAU,EAAE,0BAA0B;EACtCC,UAAU,EAAE;AACd,CAAC,CACF;AAAC"}
@@ -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,42 @@
1
+ "use strict";
2
+
3
+ Object.defineProperty(exports, "__esModule", {
4
+ value: true
5
+ });
6
+ exports.rewritePath = exports.isFronteggLogoutUrl = void 0;
7
+ var _restApi = require("@frontegg/rest-api");
8
+ /**
9
+ * If pattern information matching the input url information is found in the `pathRewrite` array,
10
+ * the url value is partially replaced with the `pathRewrite.replaceStr` value.
11
+ * @param url
12
+ * @param pathRewrite
13
+ */
14
+ const rewritePath = (url, pathRewrite) => {
15
+ if (Array.isArray(pathRewrite)) {
16
+ for (const item of pathRewrite) {
17
+ const {
18
+ patternStr,
19
+ replaceStr
20
+ } = item;
21
+ const pattern = RegExp(patternStr);
22
+ if (pattern.test(url)) {
23
+ return url.replace(pattern, replaceStr);
24
+ }
25
+ }
26
+ } else {
27
+ for (const patternStr in pathRewrite) {
28
+ const pattern = RegExp(patternStr);
29
+ const path = pathRewrite[patternStr];
30
+ if (pattern.test(url)) {
31
+ return url.replace(pattern, path);
32
+ }
33
+ }
34
+ }
35
+ return url;
36
+ };
37
+ exports.rewritePath = rewritePath;
38
+ const isFronteggLogoutUrl = url => {
39
+ return _restApi.fronteggAuthApiRoutes.filter(path => path.endsWith('/logout')).findIndex(route => url.endsWith(route)) >= 0;
40
+ };
41
+ exports.isFronteggLogoutUrl = isFronteggLogoutUrl;
42
+ //# sourceMappingURL=helpers.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"helpers.js","names":["rewritePath","url","pathRewrite","Array","isArray","item","patternStr","replaceStr","pattern","RegExp","test","replace","path","isFronteggLogoutUrl","fronteggAuthApiRoutes","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;AAEA;AACA;AACA;AACA;AACA;AACA;AACO,MAAMA,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;AAAC;AAEK,MAAMY,mBAAmB,GAAIZ,GAAW,IAAK;EAClD,OACEa,8BAAqB,CAACC,MAAM,CAAEH,IAAI,IAAKA,IAAI,CAACI,QAAQ,CAAC,SAAS,CAAC,CAAC,CAACC,SAAS,CAAEC,KAAK,IAAKjB,GAAG,CAACe,QAAQ,CAACE,KAAK,CAAC,CAAC,IAAI,CAAC;AAEnH,CAAC;AAAC"}
@@ -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,13 @@
1
+ "use strict";
2
+
3
+ Object.defineProperty(exports, "__esModule", {
4
+ value: true
5
+ });
6
+ Object.defineProperty(exports, "FronteggApiMiddleware", {
7
+ enumerable: true,
8
+ get: function () {
9
+ return _FronteggApiMiddleware.FronteggApiMiddleware;
10
+ }
11
+ });
12
+ var _FronteggApiMiddleware = require("./FronteggApiMiddleware");
13
+ //# sourceMappingURL=index.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"index.js","names":[],"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":";;;;;;;;;;;AAsBA"}
@@ -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,29 @@
1
+ "use strict";
2
+ 'use client';
3
+
4
+ var _interopRequireDefault = require("@babel/runtime/helpers/interopRequireDefault");
5
+ Object.defineProperty(exports, "__esModule", {
6
+ value: true
7
+ });
8
+ exports.default = ExpireInListener;
9
+ var _extends2 = _interopRequireDefault(require("@babel/runtime/helpers/extends"));
10
+ var _react = _interopRequireWildcard(require("react"));
11
+ var _reactHooks = require("@frontegg/react-hooks");
12
+ var _common = require("../utils/common");
13
+ var _jsxRuntime = require("react/jsx-runtime");
14
+ function _getRequireWildcardCache(nodeInterop) { if (typeof WeakMap !== "function") return null; var cacheBabelInterop = new WeakMap(); var cacheNodeInterop = new WeakMap(); return (_getRequireWildcardCache = function (nodeInterop) { return nodeInterop ? cacheNodeInterop : cacheBabelInterop; })(nodeInterop); }
15
+ function _interopRequireWildcard(obj, nodeInterop) { if (!nodeInterop && obj && obj.__esModule) { return obj; } if (obj === null || typeof obj !== "object" && typeof obj !== "function") { return { default: obj }; } var cache = _getRequireWildcardCache(nodeInterop); if (cache && cache.has(obj)) { return cache.get(obj); } var newObj = {}; var hasPropertyDescriptor = Object.defineProperty && Object.getOwnPropertyDescriptor; for (var key in obj) { if (key !== "default" && Object.prototype.hasOwnProperty.call(obj, key)) { var desc = hasPropertyDescriptor ? Object.getOwnPropertyDescriptor(obj, key) : null; if (desc && (desc.get || desc.set)) { Object.defineProperty(newObj, key, desc); } else { newObj[key] = obj[key]; } } } newObj.default = obj; if (cache) { cache.set(obj, newObj); } return newObj; }
16
+ function ExpireInListener() {
17
+ const user = (0, _reactHooks.useAuthUserOrNull)();
18
+ const actions = (0, _reactHooks.useAuthActions)();
19
+ (0, _react.useEffect)(() => {
20
+ if (user && (user == null ? void 0 : user.expiresIn) == null) {
21
+ actions.setUser((0, _extends2.default)({}, user, {
22
+ expiresIn: (0, _common.calculateExpiresInFromExp)(user['exp'])
23
+ }));
24
+ }
25
+ }, [actions, user]);
26
+ // eslint-disable-next-line react/jsx-no-useless-fragment
27
+ return /*#__PURE__*/(0, _jsxRuntime.jsx)(_jsxRuntime.Fragment, {});
28
+ }
29
+ //# sourceMappingURL=ExpireInListener.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"ExpireInListener.js","names":["ExpireInListener","user","useAuthUserOrNull","actions","useAuthActions","useEffect","expiresIn","setUser","calculateExpiresInFromExp"],"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;AAAA;EAAA;AAAA;AAAA;AAAA;AAEb;AACA;AACA;AAA4D;AAAA;AAAA;AAE7C,SAASA,gBAAgB,GAAG;EACzC,MAAMC,IAAI,GAAG,IAAAC,6BAAiB,GAAE;EAChC,MAAMC,OAAO,GAAG,IAAAC,0BAAc,GAAE;EAChC,IAAAC,gBAAS,EAAC,MAAM;IACd,IAAIJ,IAAI,IAAI,CAAAA,IAAI,oBAAJA,IAAI,CAAEK,SAAS,KAAI,IAAI,EAAE;MACnCH,OAAO,CAACI,OAAO,4BACVN,IAAI;QACPK,SAAS,EAAE,IAAAE,iCAAyB,EAAEP,IAAI,CAAS,KAAK,CAAC;MAAC,GAC1D;IACJ;EACF,CAAC,EAAE,CAACE,OAAO,EAAEF,IAAI,CAAC,CAAC;EACnB;EACA,oBAAO,8CAAK;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>;