@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
@@ -0,0 +1 @@
1
+ {"version":3,"file":"FronteggAppRouter.js","names":["notFound","isAuthRoute","FronteggRouterBase","React","FronteggAppRouter","params","pathArr","searchParams","pathname","join","startsWith","query","Object","keys","Array","isArray"],"sources":["../../../../packages/nextjs/src/app/FronteggAppRouter.tsx"],"sourcesContent":["import { notFound } from 'next/navigation';\nimport { ParsedUrlQuery } from 'querystring';\nimport { isAuthRoute } from '../utils/routing';\nimport { FronteggRouterBase } from '../common/FronteggRouterBase';\nimport React from 'react';\n\ninterface FronteggRouterProps {\n params: ParsedUrlQuery & { 'frontegg-router'?: string[] };\n searchParams?: ParsedUrlQuery;\n}\n\nexport function FronteggAppRouter({ params: { 'frontegg-router': pathArr = [] }, searchParams }: FronteggRouterProps) {\n let pathname = `/${pathArr.join('/')}`;\n if (!pathname || pathname.startsWith('/_next/data')) {\n if (searchParams) {\n const query = searchParams[Object.keys(searchParams)[0]];\n pathname = `/${Array.isArray(query) ? query.join('/') : query}`;\n } else {\n notFound();\n return null;\n }\n }\n\n if (!isAuthRoute(pathname)) {\n notFound();\n return null;\n }\n\n return <FronteggRouterBase pathArr={pathArr} queryParams={searchParams} />;\n}\n"],"mappings":"AAAA,SAASA,QAAQ,QAAQ,iBAAiB;AAE1C,SAASC,WAAW,QAAQ,kBAAkB;AAC9C,SAASC,kBAAkB,QAAQ,8BAA8B;AACjE,OAAOC,KAAK,MAAM,OAAO;AAAC;AAO1B,OAAO,SAASC,iBAAiB,CAAC;EAAEC,MAAM,EAAE;IAAE,iBAAiB,EAAEC,OAAO,GAAG;EAAG,CAAC;EAAEC;AAAkC,CAAC,EAAE;EACpH,IAAIC,QAAQ,GAAI,IAAGF,OAAO,CAACG,IAAI,CAAC,GAAG,CAAE,EAAC;EACtC,IAAI,CAACD,QAAQ,IAAIA,QAAQ,CAACE,UAAU,CAAC,aAAa,CAAC,EAAE;IACnD,IAAIH,YAAY,EAAE;MAChB,MAAMI,KAAK,GAAGJ,YAAY,CAACK,MAAM,CAACC,IAAI,CAACN,YAAY,CAAC,CAAC,CAAC,CAAC,CAAC;MACxDC,QAAQ,GAAI,IAAGM,KAAK,CAACC,OAAO,CAACJ,KAAK,CAAC,GAAGA,KAAK,CAACF,IAAI,CAAC,GAAG,CAAC,GAAGE,KAAM,EAAC;IACjE,CAAC,MAAM;MACLX,QAAQ,EAAE;MACV,OAAO,IAAI;IACb;EACF;EAEA,IAAI,CAACC,WAAW,CAACO,QAAQ,CAAC,EAAE;IAC1BR,QAAQ,EAAE;IACV,OAAO,IAAI;EACb;EAEA,oBAAO,KAAC,kBAAkB;IAAC,OAAO,EAAEM,OAAQ;IAAC,WAAW,EAAEC;EAAa,EAAG;AAC5E"}
@@ -0,0 +1,5 @@
1
+ import { FronteggUserSession, FronteggUserTokens } from '../types';
2
+ export declare const getAppSession: () => Promise<import("../types").FronteggNextJSSession | undefined>;
3
+ export declare const getAppHeaders: () => Promise<Record<string, string>>;
4
+ export declare function getAppUserSession(): Promise<FronteggUserSession | undefined>;
5
+ export declare function getAppUserTokens(): Promise<FronteggUserTokens | undefined>;
package/app/helpers.js ADDED
@@ -0,0 +1,32 @@
1
+ import { cookies, headers } from 'next/headers';
2
+ import CookieManager from '../utils/cookies';
3
+ import createSession from '../utils/createSession';
4
+ import encryption from '../utils/encryption';
5
+ const getCookie = () => {
6
+ const allCookies = cookies().getAll();
7
+ return CookieManager.parseCookieFromArray(allCookies);
8
+ };
9
+ export const getAppSession = () => {
10
+ const cookies = getCookie();
11
+ return createSession(cookies, encryption);
12
+ };
13
+ export const getAppHeaders = async () => {
14
+ const reqHeaders = {};
15
+ headers().forEach((value, key) => reqHeaders[key] = value);
16
+ return reqHeaders;
17
+ };
18
+ export async function getAppUserSession() {
19
+ const session = await getAppSession();
20
+ return session == null ? void 0 : session.user;
21
+ }
22
+ export async function getAppUserTokens() {
23
+ const session = await getAppSession();
24
+ if (!session) {
25
+ return undefined;
26
+ }
27
+ return {
28
+ accessToken: session.accessToken,
29
+ refreshToken: session.refreshToken
30
+ };
31
+ }
32
+ //# sourceMappingURL=helpers.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"helpers.js","names":["cookies","headers","CookieManager","createSession","encryption","getCookie","allCookies","getAll","parseCookieFromArray","getAppSession","getAppHeaders","reqHeaders","forEach","value","key","getAppUserSession","session","user","getAppUserTokens","undefined","accessToken","refreshToken"],"sources":["../../../../packages/nextjs/src/app/helpers.ts"],"sourcesContent":["import { cookies, headers } from 'next/headers';\nimport CookieManager from '../utils/cookies';\nimport createSession from '../utils/createSession';\nimport encryption from '../utils/encryption';\nimport { FronteggUserSession, FronteggUserTokens } from '../types';\n\nconst getCookie = () => {\n const allCookies = cookies().getAll();\n return CookieManager.parseCookieFromArray(allCookies);\n};\n\nexport const getAppSession = () => {\n const cookies = getCookie();\n return createSession(cookies, encryption);\n};\n\nexport const getAppHeaders = async (): Promise<Record<string, string>> => {\n const reqHeaders: Record<string, string> = {};\n headers().forEach((value, key) => (reqHeaders[key] = value));\n return reqHeaders;\n};\n\nexport async function getAppUserSession(): Promise<FronteggUserSession | undefined> {\n const session = await getAppSession();\n return session?.user;\n}\n\nexport async function getAppUserTokens(): Promise<FronteggUserTokens | undefined> {\n const session = await getAppSession();\n if (!session) {\n return undefined;\n }\n return {\n accessToken: session.accessToken,\n refreshToken: session.refreshToken,\n };\n}\n"],"mappings":"AAAA,SAASA,OAAO,EAAEC,OAAO,QAAQ,cAAc;AAC/C,OAAOC,aAAa,MAAM,kBAAkB;AAC5C,OAAOC,aAAa,MAAM,wBAAwB;AAClD,OAAOC,UAAU,MAAM,qBAAqB;AAG5C,MAAMC,SAAS,GAAG,MAAM;EACtB,MAAMC,UAAU,GAAGN,OAAO,EAAE,CAACO,MAAM,EAAE;EACrC,OAAOL,aAAa,CAACM,oBAAoB,CAACF,UAAU,CAAC;AACvD,CAAC;AAED,OAAO,MAAMG,aAAa,GAAG,MAAM;EACjC,MAAMT,OAAO,GAAGK,SAAS,EAAE;EAC3B,OAAOF,aAAa,CAACH,OAAO,EAAEI,UAAU,CAAC;AAC3C,CAAC;AAED,OAAO,MAAMM,aAAa,GAAG,YAA6C;EACxE,MAAMC,UAAkC,GAAG,CAAC,CAAC;EAC7CV,OAAO,EAAE,CAACW,OAAO,CAAC,CAACC,KAAK,EAAEC,GAAG,KAAMH,UAAU,CAACG,GAAG,CAAC,GAAGD,KAAM,CAAC;EAC5D,OAAOF,UAAU;AACnB,CAAC;AAED,OAAO,eAAeI,iBAAiB,GAA6C;EAClF,MAAMC,OAAO,GAAG,MAAMP,aAAa,EAAE;EACrC,OAAOO,OAAO,oBAAPA,OAAO,CAAEC,IAAI;AACtB;AAEA,OAAO,eAAeC,gBAAgB,GAA4C;EAChF,MAAMF,OAAO,GAAG,MAAMP,aAAa,EAAE;EACrC,IAAI,CAACO,OAAO,EAAE;IACZ,OAAOG,SAAS;EAClB;EACA,OAAO;IACLC,WAAW,EAAEJ,OAAO,CAACI,WAAW;IAChCC,YAAY,EAAEL,OAAO,CAACK;EACxB,CAAC;AACH"}
package/app/index.d.ts ADDED
@@ -0,0 +1,4 @@
1
+ export { FronteggAppProvider } from './FronteggAppProvider';
2
+ export type { FronteggAppProviderProps } from './FronteggAppProvider';
3
+ export { FronteggAppRouter } from './FronteggAppRouter';
4
+ export { getAppSession, getAppUserSession, getAppUserTokens } from './helpers';
package/app/index.js ADDED
@@ -0,0 +1,4 @@
1
+ export { FronteggAppProvider } from './FronteggAppProvider';
2
+ export { FronteggAppRouter } from './FronteggAppRouter';
3
+ export { getAppSession, getAppUserSession, getAppUserTokens } from './helpers';
4
+ //# sourceMappingURL=index.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"index.js","names":["FronteggAppProvider","FronteggAppRouter","getAppSession","getAppUserSession","getAppUserTokens"],"sources":["../../../../packages/nextjs/src/app/index.ts"],"sourcesContent":["export { FronteggAppProvider } from './FronteggAppProvider';\nexport type { FronteggAppProviderProps } from './FronteggAppProvider';\nexport { FronteggAppRouter } from './FronteggAppRouter';\n\nexport { getAppSession, getAppUserSession, getAppUserTokens } from './helpers';\n"],"mappings":"AAAA,SAASA,mBAAmB,QAAQ,uBAAuB;AAE3D,SAASC,iBAAiB,QAAQ,qBAAqB;AAEvD,SAASC,aAAa,EAAEC,iBAAiB,EAAEC,gBAAgB,QAAQ,WAAW"}
@@ -0,0 +1,6 @@
1
+ {
2
+ "sideEffects": false,
3
+ "module": "./index.js",
4
+ "main": "./index.js",
5
+ "types": "./index.d.ts"
6
+ }
@@ -1,4 +1,4 @@
1
- /// <reference types="react" />
2
- import type { FronteggApp } from '@frontegg/js';
3
- declare const AppContext: import("react").Context<FronteggApp | null>;
4
- export default AppContext;
1
+ /// <reference types="react" />
2
+ import type { FronteggApp } from '@frontegg/js';
3
+ declare const AppContext: import("react").Context<FronteggApp | null>;
4
+ export default AppContext;
@@ -0,0 +1,6 @@
1
+ 'use client';
2
+
3
+ import { createContext } from 'react';
4
+ const AppContext = /*#__PURE__*/createContext(null);
5
+ export default AppContext;
6
+ //# sourceMappingURL=AppContext.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"AppContext.js","names":["createContext","AppContext"],"sources":["../../../../packages/nextjs/src/common/AppContext.ts"],"sourcesContent":["'use client';\n\nimport { createContext } from 'react';\nimport type { FronteggApp } from '@frontegg/js';\n\nconst AppContext = createContext<FronteggApp | null>(null);\n\nexport default AppContext;\n"],"mappings":"AAAA,YAAY;;AAEZ,SAASA,aAAa,QAAQ,OAAO;AAGrC,MAAMC,UAAU,gBAAGD,aAAa,CAAqB,IAAI,CAAC;AAE1D,eAAeC,UAAU"}
@@ -1,8 +1,9 @@
1
- import React, { FC, ReactNode } from 'react';
2
- export interface AuthorizationProps {
3
- requiredRoles?: string[];
4
- requiredPermissions?: string[];
5
- render?: (isAuthorized: boolean) => React.ReactNode | null;
6
- children?: ReactNode;
7
- }
8
- export declare const AuthorizedContent: FC<AuthorizationProps>;
1
+ import React, { FC, ReactNode } from 'react';
2
+ export interface AuthorizationProps {
3
+ requiredRoles?: string[];
4
+ requiredPermissions?: string[];
5
+ render?: (isAuthorized: boolean) => React.ReactNode | null;
6
+ children?: ReactNode;
7
+ }
8
+ declare const AuthorizedContent: FC<AuthorizationProps>;
9
+ export default AuthorizedContent;
@@ -0,0 +1,48 @@
1
+ 'use client';
2
+
3
+ import React from 'react';
4
+ import { useAuthUserOrNull } from '@frontegg/react-hooks';
5
+ import { Fragment as _Fragment } from "react/jsx-runtime";
6
+ import { jsx as _jsx } from "react/jsx-runtime";
7
+ const AuthorizedContent = props => {
8
+ let isAuthorized = true;
9
+ const user = useAuthUserOrNull();
10
+ if (!(user != null && user.superUser)) {
11
+ if (props.requiredPermissions) {
12
+ if (!(user != null && user.permissions) || (user == null ? void 0 : user.permissions.length) === 0) {
13
+ isAuthorized = false;
14
+ }
15
+ for (const permission of props.requiredPermissions) {
16
+ var _user$permissions;
17
+ if (!(user != null && (_user$permissions = user.permissions) != null && _user$permissions.find(({
18
+ key
19
+ }) => key === permission))) {
20
+ isAuthorized = false;
21
+ }
22
+ }
23
+ }
24
+ if (props.requiredRoles) {
25
+ if (!(user != null && user.roles) || (user == null ? void 0 : user.roles.length) === 0) {
26
+ isAuthorized = false;
27
+ }
28
+ for (const role of props.requiredRoles) {
29
+ var _user$roles;
30
+ if (!(user != null && (_user$roles = user.roles) != null && _user$roles.find(({
31
+ key
32
+ }) => key === role))) {
33
+ isAuthorized = false;
34
+ }
35
+ }
36
+ }
37
+ }
38
+ if (typeof props.render === 'function') {
39
+ return /*#__PURE__*/_jsx(_Fragment, {
40
+ children: props.render(isAuthorized)
41
+ });
42
+ }
43
+ return isAuthorized ? /*#__PURE__*/_jsx(_Fragment, {
44
+ children: props.children
45
+ }) : null;
46
+ };
47
+ export default AuthorizedContent;
48
+ //# sourceMappingURL=AuthorizedContent.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"AuthorizedContent.js","names":["React","useAuthUserOrNull","AuthorizedContent","props","isAuthorized","user","superUser","requiredPermissions","permissions","length","permission","find","key","requiredRoles","roles","role","render","children"],"sources":["../../../../packages/nextjs/src/common/AuthorizedContent.tsx"],"sourcesContent":["'use client';\n\nimport React, { FC, ReactNode } from 'react';\nimport { useAuthUserOrNull } from '@frontegg/react-hooks';\n\nexport interface AuthorizationProps {\n requiredRoles?: string[];\n requiredPermissions?: string[];\n render?: (isAuthorized: boolean) => React.ReactNode | null;\n children?: ReactNode;\n}\n\nconst AuthorizedContent: FC<AuthorizationProps> = (props) => {\n let isAuthorized = true;\n const user = useAuthUserOrNull();\n if (!user?.superUser) {\n if (props.requiredPermissions) {\n if (!user?.permissions || user?.permissions.length === 0) {\n isAuthorized = false;\n }\n\n for (const permission of props.requiredPermissions) {\n if (!user?.permissions?.find(({ key }) => key === permission)) {\n isAuthorized = false;\n }\n }\n }\n\n if (props.requiredRoles) {\n if (!user?.roles || user?.roles.length === 0) {\n isAuthorized = false;\n }\n\n for (const role of props.requiredRoles) {\n if (!user?.roles?.find(({ key }) => key === role)) {\n isAuthorized = false;\n }\n }\n }\n }\n\n if (typeof props.render === 'function') {\n return <>{props.render(isAuthorized)}</>;\n }\n\n return isAuthorized ? <>{props.children}</> : null;\n};\n\nexport default AuthorizedContent;\n"],"mappings":"AAAA,YAAY;;AAEZ,OAAOA,KAAK,MAAyB,OAAO;AAC5C,SAASC,iBAAiB,QAAQ,uBAAuB;AAAC;AAAA;AAS1D,MAAMC,iBAAyC,GAAIC,KAAK,IAAK;EAC3D,IAAIC,YAAY,GAAG,IAAI;EACvB,MAAMC,IAAI,GAAGJ,iBAAiB,EAAE;EAChC,IAAI,EAACI,IAAI,YAAJA,IAAI,CAAEC,SAAS,GAAE;IACpB,IAAIH,KAAK,CAACI,mBAAmB,EAAE;MAC7B,IAAI,EAACF,IAAI,YAAJA,IAAI,CAAEG,WAAW,KAAI,CAAAH,IAAI,oBAAJA,IAAI,CAAEG,WAAW,CAACC,MAAM,MAAK,CAAC,EAAE;QACxDL,YAAY,GAAG,KAAK;MACtB;MAEA,KAAK,MAAMM,UAAU,IAAIP,KAAK,CAACI,mBAAmB,EAAE;QAAA;QAClD,IAAI,EAACF,IAAI,iCAAJA,IAAI,CAAEG,WAAW,aAAjB,kBAAmBG,IAAI,CAAC,CAAC;UAAEC;QAAI,CAAC,KAAKA,GAAG,KAAKF,UAAU,CAAC,GAAE;UAC7DN,YAAY,GAAG,KAAK;QACtB;MACF;IACF;IAEA,IAAID,KAAK,CAACU,aAAa,EAAE;MACvB,IAAI,EAACR,IAAI,YAAJA,IAAI,CAAES,KAAK,KAAI,CAAAT,IAAI,oBAAJA,IAAI,CAAES,KAAK,CAACL,MAAM,MAAK,CAAC,EAAE;QAC5CL,YAAY,GAAG,KAAK;MACtB;MAEA,KAAK,MAAMW,IAAI,IAAIZ,KAAK,CAACU,aAAa,EAAE;QAAA;QACtC,IAAI,EAACR,IAAI,2BAAJA,IAAI,CAAES,KAAK,aAAX,YAAaH,IAAI,CAAC,CAAC;UAAEC;QAAI,CAAC,KAAKA,GAAG,KAAKG,IAAI,CAAC,GAAE;UACjDX,YAAY,GAAG,KAAK;QACtB;MACF;IACF;EACF;EAEA,IAAI,OAAOD,KAAK,CAACa,MAAM,KAAK,UAAU,EAAE;IACtC,oBAAO;MAAA,UAAGb,KAAK,CAACa,MAAM,CAACZ,YAAY;IAAC,EAAI;EAC1C;EAEA,OAAOA,YAAY,gBAAG;IAAA,UAAGD,KAAK,CAACc;EAAQ,EAAI,GAAG,IAAI;AACpD,CAAC;AAED,eAAef,iBAAiB"}
@@ -1,3 +1,3 @@
1
- import { FC } from 'react';
2
- import { FronteggProviderProps } from '../types';
3
- export declare const FronteggBaseProvider: FC<FronteggProviderProps>;
1
+ import { FC } from 'react';
2
+ import type { FronteggProviderProps } from '../types';
3
+ export declare const FronteggBaseProvider: FC<FronteggProviderProps>;
@@ -0,0 +1,67 @@
1
+ 'use client';
2
+
3
+ import _extends from "@babel/runtime/helpers/esm/extends";
4
+ import _objectWithoutPropertiesLoose from "@babel/runtime/helpers/esm/objectWithoutPropertiesLoose";
5
+ const _excluded = ["router", "appName"];
6
+ import React, { useMemo, useRef } from 'react';
7
+ import { FronteggStoreProvider } from '@frontegg/react-hooks';
8
+ import { ContextHolder } from '@frontegg/rest-api';
9
+ import AppContext from './AppContext';
10
+ import initializeFronteggApp from '../utils/initializeFronteggApp';
11
+ import useRequestAuthorizeSSR from './useRequestAuthorizeSSR';
12
+ import useOnRedirectTo from '../utils/useOnRedirectTo';
13
+ import { jsx as _jsx } from "react/jsx-runtime";
14
+ const Connector = _ref => {
15
+ var _props$basename;
16
+ let {
17
+ router,
18
+ appName = 'default'
19
+ } = _ref,
20
+ props = _objectWithoutPropertiesLoose(_ref, _excluded);
21
+ const isSSR = typeof window === 'undefined';
22
+ const {
23
+ user,
24
+ session,
25
+ tenants
26
+ } = props;
27
+ const baseName = (_props$basename = props.basename) != null ? _props$basename : '';
28
+ const ssrStoreHolder = useRef({});
29
+ const storeHolder = isSSR ? ssrStoreHolder.current : undefined;
30
+ const onRedirectTo = useOnRedirectTo(baseName, router);
31
+ const app = useMemo(() => initializeFronteggApp({
32
+ options: _extends({}, props, {
33
+ basename: baseName
34
+ }),
35
+ onRedirectTo,
36
+ appName,
37
+ storeHolder
38
+ }), [props]);
39
+ ContextHolder.setOnRedirectTo(onRedirectTo);
40
+
41
+ // useEffect(() => {
42
+ // if(window.location.pathname == '/account/login') {
43
+ // app.store.dispatch({ type: 'auth/requestAuthorize', payload: true });
44
+ // }
45
+ // }, [app]);
46
+ useRequestAuthorizeSSR({
47
+ app,
48
+ user,
49
+ tenants,
50
+ session
51
+ });
52
+ return /*#__PURE__*/_jsx(AppContext.Provider, {
53
+ value: app,
54
+ children: /*#__PURE__*/_jsx(FronteggStoreProvider, _extends({}, _extends({}, props, {
55
+ app
56
+ }), {
57
+ children: props.children
58
+ }))
59
+ });
60
+ };
61
+ export const FronteggBaseProvider = props => {
62
+ return /*#__PURE__*/_jsx(Connector, _extends({}, props, {
63
+ framework: 'nextjs',
64
+ children: props.children
65
+ }));
66
+ };
67
+ //# sourceMappingURL=FronteggBaseProvider.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"FronteggBaseProvider.js","names":["React","useMemo","useRef","FronteggStoreProvider","ContextHolder","AppContext","initializeFronteggApp","useRequestAuthorizeSSR","useOnRedirectTo","Connector","router","appName","props","isSSR","window","user","session","tenants","baseName","basename","ssrStoreHolder","storeHolder","current","undefined","onRedirectTo","app","options","setOnRedirectTo","children","FronteggBaseProvider"],"sources":["../../../../packages/nextjs/src/common/FronteggBaseProvider.tsx"],"sourcesContent":["'use client';\n\nimport React, { FC, useMemo, useRef } from 'react';\nimport { FronteggStoreProvider } from '@frontegg/react-hooks';\nimport { ContextHolder } from '@frontegg/rest-api';\nimport type { FronteggProviderProps } from '../types';\nimport AppContext from './AppContext';\nimport initializeFronteggApp from '../utils/initializeFronteggApp';\nimport useRequestAuthorizeSSR from './useRequestAuthorizeSSR';\nimport useOnRedirectTo from '../utils/useOnRedirectTo';\n\nconst Connector: FC<FronteggProviderProps> = ({ router, appName = 'default', ...props }) => {\n const isSSR = typeof window === 'undefined';\n const { user, session, tenants } = props;\n const baseName = props.basename ?? '';\n const ssrStoreHolder = useRef({});\n const storeHolder = isSSR ? ssrStoreHolder.current : undefined;\n\n const onRedirectTo = useOnRedirectTo(baseName, router);\n\n const app = useMemo(\n () =>\n initializeFronteggApp({\n options: { ...props, basename: baseName },\n onRedirectTo,\n appName,\n storeHolder,\n }),\n [props]\n );\n ContextHolder.setOnRedirectTo(onRedirectTo);\n\n // useEffect(() => {\n // if(window.location.pathname == '/account/login') {\n // app.store.dispatch({ type: 'auth/requestAuthorize', payload: true });\n // }\n // }, [app]);\n useRequestAuthorizeSSR({ app, user, tenants, session });\n return (\n <AppContext.Provider value={app}>\n <FronteggStoreProvider {...({ ...props, app } as any)}>{props.children}</FronteggStoreProvider>\n </AppContext.Provider>\n );\n};\n\nexport const FronteggBaseProvider: FC<FronteggProviderProps> = (props) => {\n return (\n <Connector {...props} framework={'nextjs'}>\n {props.children}\n </Connector>\n );\n};\n"],"mappings":"AAAA,YAAY;;AAAC;AAAA;AAAA;AAEb,OAAOA,KAAK,IAAQC,OAAO,EAAEC,MAAM,QAAQ,OAAO;AAClD,SAASC,qBAAqB,QAAQ,uBAAuB;AAC7D,SAASC,aAAa,QAAQ,oBAAoB;AAElD,OAAOC,UAAU,MAAM,cAAc;AACrC,OAAOC,qBAAqB,MAAM,gCAAgC;AAClE,OAAOC,sBAAsB,MAAM,0BAA0B;AAC7D,OAAOC,eAAe,MAAM,0BAA0B;AAAC;AAEvD,MAAMC,SAAoC,GAAG,QAA+C;EAAA;EAAA,IAA9C;MAAEC,MAAM;MAAEC,OAAO,GAAG;IAAoB,CAAC;IAAPC,KAAK;EACnF,MAAMC,KAAK,GAAG,OAAOC,MAAM,KAAK,WAAW;EAC3C,MAAM;IAAEC,IAAI;IAAEC,OAAO;IAAEC;EAAQ,CAAC,GAAGL,KAAK;EACxC,MAAMM,QAAQ,sBAAGN,KAAK,CAACO,QAAQ,8BAAI,EAAE;EACrC,MAAMC,cAAc,GAAGlB,MAAM,CAAC,CAAC,CAAC,CAAC;EACjC,MAAMmB,WAAW,GAAGR,KAAK,GAAGO,cAAc,CAACE,OAAO,GAAGC,SAAS;EAE9D,MAAMC,YAAY,GAAGhB,eAAe,CAACU,QAAQ,EAAER,MAAM,CAAC;EAEtD,MAAMe,GAAG,GAAGxB,OAAO,CACjB,MACEK,qBAAqB,CAAC;IACpBoB,OAAO,eAAOd,KAAK;MAAEO,QAAQ,EAAED;IAAQ,EAAE;IACzCM,YAAY;IACZb,OAAO;IACPU;EACF,CAAC,CAAC,EACJ,CAACT,KAAK,CAAC,CACR;EACDR,aAAa,CAACuB,eAAe,CAACH,YAAY,CAAC;;EAE3C;EACA;EACA;EACA;EACA;EACAjB,sBAAsB,CAAC;IAAEkB,GAAG;IAAEV,IAAI;IAAEE,OAAO;IAAED;EAAQ,CAAC,CAAC;EACvD,oBACE,KAAC,UAAU,CAAC,QAAQ;IAAC,KAAK,EAAES,GAAI;IAAA,uBAC9B,KAAC,qBAAqB,4BAAWb,KAAK;MAAEa;IAAG;MAAA,UAAab,KAAK,CAACgB;IAAQ;EAAyB,EAC3E;AAE1B,CAAC;AAED,OAAO,MAAMC,oBAA+C,GAAIjB,KAAK,IAAK;EACxE,oBACE,KAAC,SAAS,eAAKA,KAAK;IAAE,SAAS,EAAE,QAAS;IAAA,UACvCA,KAAK,CAACgB;EAAQ,GACL;AAEhB,CAAC"}
@@ -0,0 +1,9 @@
1
+ /// <reference types="react" />
2
+ /// <reference types="node" />
3
+ import { ParsedUrlQuery } from 'querystring';
4
+ interface FronteggRouterBaseProps {
5
+ queryParams?: ParsedUrlQuery;
6
+ pathArr: string[];
7
+ }
8
+ export declare function FronteggRouterBase(props: FronteggRouterBaseProps): JSX.Element;
9
+ export {};
@@ -0,0 +1,42 @@
1
+ 'use client';
2
+
3
+ import _extends from "@babel/runtime/helpers/esm/extends";
4
+ import config from '../config';
5
+ import { authInitialState } from '@frontegg/redux-store';
6
+ import { useContext, useEffect } from 'react';
7
+ import { useLoginActions, useLoginWithRedirect } from '@frontegg/react-hooks';
8
+ import { FRONTEGG_AFTER_AUTH_REDIRECT_URL } from '../utils/common/constants';
9
+ import AppContext from './AppContext';
10
+ import React from 'react';
11
+ import { Fragment as _Fragment } from "react/jsx-runtime";
12
+ import { jsx as _jsx } from "react/jsx-runtime";
13
+ export function FronteggRouterBase(props) {
14
+ const {
15
+ queryParams = {},
16
+ pathArr
17
+ } = props;
18
+ const app = useContext(AppContext);
19
+ const loginWithRedirect = useLoginWithRedirect();
20
+ const {
21
+ logout
22
+ } = useLoginActions();
23
+ useEffect(() => {
24
+ if (!app) {
25
+ return;
26
+ }
27
+ if (app.options.hostedLoginBox) {
28
+ const routesObj = _extends({}, authInitialState.routes, config.authRoutes);
29
+ const pathname = `/${pathArr.join('/')}`;
30
+ if (pathname === routesObj.loginUrl) {
31
+ if (queryParams.redirectUrl) {
32
+ localStorage.setItem(FRONTEGG_AFTER_AUTH_REDIRECT_URL, `${window.location.origin}${queryParams.redirectUrl}`);
33
+ }
34
+ loginWithRedirect();
35
+ } else if (pathname === routesObj.logoutUrl) {
36
+ logout(() => window.location.href = window.location.origin);
37
+ }
38
+ }
39
+ }, [app, queryParams, pathArr, loginWithRedirect, logout]);
40
+ return /*#__PURE__*/_jsx(_Fragment, {});
41
+ }
42
+ //# sourceMappingURL=FronteggRouterBase.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"FronteggRouterBase.js","names":["config","authInitialState","useContext","useEffect","useLoginActions","useLoginWithRedirect","FRONTEGG_AFTER_AUTH_REDIRECT_URL","AppContext","React","FronteggRouterBase","props","queryParams","pathArr","app","loginWithRedirect","logout","options","hostedLoginBox","routesObj","routes","authRoutes","pathname","join","loginUrl","redirectUrl","localStorage","setItem","window","location","origin","logoutUrl","href"],"sources":["../../../../packages/nextjs/src/common/FronteggRouterBase.tsx"],"sourcesContent":["'use client';\n\nimport config from '../config';\nimport { authInitialState } from '@frontegg/redux-store';\nimport { useContext, useEffect } from 'react';\nimport { useLoginActions, useLoginWithRedirect } from '@frontegg/react-hooks';\nimport { FRONTEGG_AFTER_AUTH_REDIRECT_URL } from '../utils/common/constants';\nimport AppContext from './AppContext';\nimport React from 'react';\nimport { ParsedUrlQuery } from 'querystring';\n\ninterface FronteggRouterBaseProps {\n queryParams?: ParsedUrlQuery;\n pathArr: string[];\n}\n\nexport function FronteggRouterBase(props: FronteggRouterBaseProps) {\n const { queryParams = {}, pathArr } = props;\n const app = useContext(AppContext);\n const loginWithRedirect = useLoginWithRedirect();\n const { logout } = useLoginActions();\n\n useEffect(() => {\n if (!app) {\n return;\n }\n if (app.options.hostedLoginBox) {\n const routesObj = {\n ...authInitialState.routes,\n ...config.authRoutes,\n };\n\n const pathname = `/${pathArr.join('/')}`;\n if (pathname === routesObj.loginUrl) {\n if (queryParams.redirectUrl) {\n localStorage.setItem(FRONTEGG_AFTER_AUTH_REDIRECT_URL, `${window.location.origin}${queryParams.redirectUrl}`);\n }\n loginWithRedirect();\n } else if (pathname === routesObj.logoutUrl) {\n logout(() => (window.location.href = window.location.origin));\n }\n }\n }, [app, queryParams, pathArr, loginWithRedirect, logout]);\n return <></>;\n}\n"],"mappings":"AAAA,YAAY;;AAAC;AAEb,OAAOA,MAAM,MAAM,WAAW;AAC9B,SAASC,gBAAgB,QAAQ,uBAAuB;AACxD,SAASC,UAAU,EAAEC,SAAS,QAAQ,OAAO;AAC7C,SAASC,eAAe,EAAEC,oBAAoB,QAAQ,uBAAuB;AAC7E,SAASC,gCAAgC,QAAQ,2BAA2B;AAC5E,OAAOC,UAAU,MAAM,cAAc;AACrC,OAAOC,KAAK,MAAM,OAAO;AAAC;AAAA;AAQ1B,OAAO,SAASC,kBAAkB,CAACC,KAA8B,EAAE;EACjE,MAAM;IAAEC,WAAW,GAAG,CAAC,CAAC;IAAEC;EAAQ,CAAC,GAAGF,KAAK;EAC3C,MAAMG,GAAG,GAAGX,UAAU,CAACK,UAAU,CAAC;EAClC,MAAMO,iBAAiB,GAAGT,oBAAoB,EAAE;EAChD,MAAM;IAAEU;EAAO,CAAC,GAAGX,eAAe,EAAE;EAEpCD,SAAS,CAAC,MAAM;IACd,IAAI,CAACU,GAAG,EAAE;MACR;IACF;IACA,IAAIA,GAAG,CAACG,OAAO,CAACC,cAAc,EAAE;MAC9B,MAAMC,SAAS,gBACVjB,gBAAgB,CAACkB,MAAM,EACvBnB,MAAM,CAACoB,UAAU,CACrB;MAED,MAAMC,QAAQ,GAAI,IAAGT,OAAO,CAACU,IAAI,CAAC,GAAG,CAAE,EAAC;MACxC,IAAID,QAAQ,KAAKH,SAAS,CAACK,QAAQ,EAAE;QACnC,IAAIZ,WAAW,CAACa,WAAW,EAAE;UAC3BC,YAAY,CAACC,OAAO,CAACpB,gCAAgC,EAAG,GAAEqB,MAAM,CAACC,QAAQ,CAACC,MAAO,GAAElB,WAAW,CAACa,WAAY,EAAC,CAAC;QAC/G;QACAV,iBAAiB,EAAE;MACrB,CAAC,MAAM,IAAIO,QAAQ,KAAKH,SAAS,CAACY,SAAS,EAAE;QAC3Cf,MAAM,CAAC,MAAOY,MAAM,CAACC,QAAQ,CAACG,IAAI,GAAGJ,MAAM,CAACC,QAAQ,CAACC,MAAO,CAAC;MAC/D;IACF;EACF,CAAC,EAAE,CAAChB,GAAG,EAAEF,WAAW,EAAEC,OAAO,EAAEE,iBAAiB,EAAEC,MAAM,CAAC,CAAC;EAC1D,oBAAO,mBAAK;AACd"}
@@ -1,9 +1,3 @@
1
- import { FronteggNextJSSession, FronteggUserTokens, AllUserData } from './types';
2
- export declare function createSessionFromAccessToken(data: any): Promise<[string, any, string] | []>;
3
- export declare function getTokensFromCookie(cookie?: string): Promise<FronteggUserTokens | undefined>;
4
- type UserDataArguments = {
5
- getSession: () => Promise<FronteggNextJSSession | undefined | null>;
6
- reqHeaders: Record<string, string | string[] | undefined>;
7
- };
8
- export declare const getAllUserData: ({ getSession, reqHeaders }: UserDataArguments) => Promise<Partial<AllUserData>>;
9
- export {};
1
+ import type { FronteggUserTokens } from '../types';
2
+ export declare function createSessionFromAccessToken(data: any): Promise<[string, any, string] | []>;
3
+ export declare function getTokensFromCookie(cookie?: string): Promise<FronteggUserTokens | undefined>;
@@ -0,0 +1,24 @@
1
+ import JwtManager from '../utils/jwt';
2
+ import encryptionUtils from '../utils/encryption';
3
+ export async function createSessionFromAccessToken(data) {
4
+ var _data$accessToken, _data$refreshToken;
5
+ const accessToken = (_data$accessToken = data.accessToken) != null ? _data$accessToken : data.access_token;
6
+ const refreshToken = (_data$refreshToken = data.refreshToken) != null ? _data$refreshToken : data.refresh_token;
7
+ const {
8
+ payload: decodedJwt
9
+ } = await JwtManager.verify(accessToken);
10
+ decodedJwt.expiresIn = Math.floor((decodedJwt.exp * 1000 - Date.now()) / 1000);
11
+ const tokens = {
12
+ accessToken,
13
+ refreshToken
14
+ };
15
+ const session = await encryptionUtils.sealTokens(tokens, decodedJwt.exp);
16
+ return [session, decodedJwt, refreshToken];
17
+ }
18
+ export async function getTokensFromCookie(cookie) {
19
+ if (!cookie) {
20
+ return undefined;
21
+ }
22
+ return await encryptionUtils.unsealTokens(cookie);
23
+ }
24
+ //# sourceMappingURL=helpers.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"helpers.js","names":["JwtManager","encryptionUtils","createSessionFromAccessToken","data","accessToken","access_token","refreshToken","refresh_token","payload","decodedJwt","verify","expiresIn","Math","floor","exp","Date","now","tokens","session","sealTokens","getTokensFromCookie","cookie","undefined","unsealTokens"],"sources":["../../../../packages/nextjs/src/common/helpers.ts"],"sourcesContent":["import type { FronteggUserTokens } from '../types';\nimport JwtManager from '../utils/jwt';\nimport encryptionUtils from '../utils/encryption';\n\nexport async function createSessionFromAccessToken(data: any): Promise<[string, any, string] | []> {\n const accessToken = data.accessToken ?? data.access_token;\n const refreshToken = data.refreshToken ?? data.refresh_token;\n const { payload: decodedJwt }: any = await JwtManager.verify(accessToken);\n decodedJwt.expiresIn = Math.floor((decodedJwt.exp * 1000 - Date.now()) / 1000);\n\n const tokens = { accessToken, refreshToken };\n const session = await encryptionUtils.sealTokens(tokens, decodedJwt.exp);\n return [session, decodedJwt, refreshToken];\n}\n\nexport async function getTokensFromCookie(cookie?: string): Promise<FronteggUserTokens | undefined> {\n if (!cookie) {\n return undefined;\n }\n return await encryptionUtils.unsealTokens(cookie);\n}\n"],"mappings":"AACA,OAAOA,UAAU,MAAM,cAAc;AACrC,OAAOC,eAAe,MAAM,qBAAqB;AAEjD,OAAO,eAAeC,4BAA4B,CAACC,IAAS,EAAuC;EAAA;EACjG,MAAMC,WAAW,wBAAGD,IAAI,CAACC,WAAW,gCAAID,IAAI,CAACE,YAAY;EACzD,MAAMC,YAAY,yBAAGH,IAAI,CAACG,YAAY,iCAAIH,IAAI,CAACI,aAAa;EAC5D,MAAM;IAAEC,OAAO,EAAEC;EAAgB,CAAC,GAAG,MAAMT,UAAU,CAACU,MAAM,CAACN,WAAW,CAAC;EACzEK,UAAU,CAACE,SAAS,GAAGC,IAAI,CAACC,KAAK,CAAC,CAACJ,UAAU,CAACK,GAAG,GAAG,IAAI,GAAGC,IAAI,CAACC,GAAG,EAAE,IAAI,IAAI,CAAC;EAE9E,MAAMC,MAAM,GAAG;IAAEb,WAAW;IAAEE;EAAa,CAAC;EAC5C,MAAMY,OAAO,GAAG,MAAMjB,eAAe,CAACkB,UAAU,CAACF,MAAM,EAAER,UAAU,CAACK,GAAG,CAAC;EACxE,OAAO,CAACI,OAAO,EAAET,UAAU,EAAEH,YAAY,CAAC;AAC5C;AAEA,OAAO,eAAec,mBAAmB,CAACC,MAAe,EAA2C;EAClG,IAAI,CAACA,MAAM,EAAE;IACX,OAAOC,SAAS;EAClB;EACA,OAAO,MAAMrB,eAAe,CAACsB,YAAY,CAACF,MAAM,CAAC;AACnD"}
package/common/index.d.ts CHANGED
@@ -1,6 +1,4 @@
1
- export { default as FronteggConfig } from './FronteggConfig';
2
- export * from './types';
3
- export * from './helpers';
4
- export * from './createGetSession';
5
- export * from './consts';
6
- export { default as CookieManager } from './CookieManager';
1
+ export * from './helpers';
2
+ export { default as AppContext } from './AppContext';
3
+ export { FronteggBaseProvider } from './FronteggBaseProvider';
4
+ export { default as AuthorizedContent } from './AuthorizedContent';
package/common/index.js CHANGED
@@ -1,10 +1,5 @@
1
- export { a as COOKIE_MAX_LENGTH, C as CookieManager, F as FronteggConfig, f as fronteggErrors } from '../CookieManager-e50dc144.js';
2
- export { c as createSessionFromAccessToken, a as getAllUserData, g as getTokensFromCookie } from '../helpers-dac37998.js';
3
- export { c as createGetSession } from '../createGetSession-2e1e4506.js';
4
- import 'tslib';
5
- import 'cookie';
6
- import 'jose';
7
- import 'iron-session';
8
- import '../api-25516652.js';
9
- import '@frontegg/rest-api';
10
- //# sourceMappingURL=index.js.map
1
+ export * from './helpers';
2
+ export { default as AppContext } from './AppContext';
3
+ export { FronteggBaseProvider } from './FronteggBaseProvider';
4
+ export { default as AuthorizedContent } from './AuthorizedContent';
5
+ //# sourceMappingURL=index.js.map
@@ -1 +1 @@
1
- {"version":3,"file":"index.js","sources":[],"sourcesContent":[],"names":[],"mappings":""}
1
+ {"version":3,"file":"index.js","names":["default","AppContext","FronteggBaseProvider","AuthorizedContent"],"sources":["../../../../packages/nextjs/src/common/index.ts"],"sourcesContent":["export * from './helpers';\nexport { default as AppContext } from './AppContext';\nexport { FronteggBaseProvider } from './FronteggBaseProvider';\nexport { default as AuthorizedContent } from './AuthorizedContent';\n"],"mappings":"AAAA,cAAc,WAAW;AACzB,SAASA,OAAO,IAAIC,UAAU,QAAQ,cAAc;AACpD,SAASC,oBAAoB,QAAQ,wBAAwB;AAC7D,SAASF,OAAO,IAAIG,iBAAiB,QAAQ,qBAAqB"}
@@ -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,5 @@
1
+ import { FronteggApp } from '@frontegg/js';
2
+ import { AllUserData } from '../types';
3
+ export default function useRequestAuthorizeSSR({ app, user, tenants, session }: {
4
+ app: FronteggApp;
5
+ } & AllUserData): void;
@@ -0,0 +1,24 @@
1
+ 'use client';
2
+
3
+ import _extends from "@babel/runtime/helpers/esm/extends";
4
+ import { useEffect } from 'react';
5
+ export default function useRequestAuthorizeSSR({
6
+ app,
7
+ user,
8
+ tenants,
9
+ session
10
+ }) {
11
+ useEffect(() => {
12
+ app == null ? void 0 : app.store.dispatch({
13
+ type: 'auth/requestAuthorizeSSR',
14
+ payload: {
15
+ accessToken: session == null ? void 0 : session.accessToken,
16
+ user: user ? _extends({}, user, {
17
+ refreshToken: session == null ? void 0 : session.refreshToken
18
+ }) : null,
19
+ tenants
20
+ }
21
+ });
22
+ }, [app]);
23
+ }
24
+ //# sourceMappingURL=useRequestAuthorizeSSR.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"useRequestAuthorizeSSR.js","names":["useEffect","useRequestAuthorizeSSR","app","user","tenants","session","store","dispatch","type","payload","accessToken","refreshToken"],"sources":["../../../../packages/nextjs/src/common/useRequestAuthorizeSSR.ts"],"sourcesContent":["'use client';\n\nimport { useEffect } from 'react';\nimport { FronteggApp } from '@frontegg/js';\nimport { AllUserData } from '../types';\n\nexport default function useRequestAuthorizeSSR({ app, user, tenants, session }: { app: FronteggApp } & AllUserData) {\n useEffect(() => {\n app?.store.dispatch({\n type: 'auth/requestAuthorizeSSR',\n payload: {\n accessToken: session?.accessToken,\n user: user ? { ...user, refreshToken: session?.refreshToken } : null,\n tenants,\n },\n });\n }, [app]);\n}\n"],"mappings":"AAAA,YAAY;;AAAC;AAEb,SAASA,SAAS,QAAQ,OAAO;AAIjC,eAAe,SAASC,sBAAsB,CAAC;EAAEC,GAAG;EAAEC,IAAI;EAAEC,OAAO;EAAEC;AAA4C,CAAC,EAAE;EAClHL,SAAS,CAAC,MAAM;IACdE,GAAG,oBAAHA,GAAG,CAAEI,KAAK,CAACC,QAAQ,CAAC;MAClBC,IAAI,EAAE,0BAA0B;MAChCC,OAAO,EAAE;QACPC,WAAW,EAAEL,OAAO,oBAAPA,OAAO,CAAEK,WAAW;QACjCP,IAAI,EAAEA,IAAI,gBAAQA,IAAI;UAAEQ,YAAY,EAAEN,OAAO,oBAAPA,OAAO,CAAEM;QAAY,KAAK,IAAI;QACpEP;MACF;IACF,CAAC,CAAC;EACJ,CAAC,EAAE,CAACF,GAAG,CAAC,CAAC;AACX"}
@@ -0,0 +1,57 @@
1
+ export declare enum EnvVariables {
2
+ /**
3
+ * The AppUrl is to tell Frontegg your application's app url
4
+ * for generating cookies and proxy http requests
5
+ */
6
+ FRONTEGG_APP_URL = "FRONTEGG_APP_URL",
7
+ /**
8
+ * The Frontegg domain is your unique URL to connect to the Frontegg gateway, get it by visit:
9
+ * - For Dev environment [visit](https://portal.frontegg.com/development/settings/domains)
10
+ * - For Prod environment [visit](https://portal.frontegg.com/production/settings/domains)
11
+ */
12
+ FRONTEGG_BASE_URL = "FRONTEGG_BASE_URL",
13
+ /**
14
+ * The Frontegg test domain used for testing proxy middleware
15
+ * @private for Frontegg
16
+ */
17
+ FRONTEGG_TEST_URL = "FRONTEGG_TEST_URL",
18
+ /**
19
+ * Your Frontegg application's Client ID, get it by visit:
20
+ * - For Dev environment [visit](https://portal.frontegg.com/development/settings/general)
21
+ * - For Prod environment [visit](https://portal.frontegg.com/production/settings/general)
22
+ */
23
+ FRONTEGG_CLIENT_ID = "FRONTEGG_CLIENT_ID",
24
+ /**
25
+ * The stateless session encryption password, used to encrypt
26
+ * JWT before sending it to the client side.
27
+ *
28
+ * For quick password generation use the following command:
29
+ *
30
+ * ```sh
31
+ * node -e "console.log(crypto.randomBytes(32).toString('hex'))"
32
+ * ```
33
+ */
34
+ FRONTEGG_ENCRYPTION_PASSWORD = "FRONTEGG_ENCRYPTION_PASSWORD",
35
+ /**
36
+ * The JWT public key generated by frontegg, to verify JWT before create session,
37
+ * get it by visit: https://[YOUR_FRONTEGG_FOMAIN]/.well-known/jwks.json.
38
+ *
39
+ * Then: Copy and Paste the first key from the response:
40
+ * {keys: [{__KEY__}]}
41
+ */
42
+ FRONTEGG_JWT_PUBLIC_KEY = "FRONTEGG_JWT_PUBLIC_KEY",
43
+ /**
44
+ * The stateless cookie name for storing the encrypted JWT
45
+ * value as session cookies for supporting getServerSideProps and ServerComponents
46
+ */
47
+ FRONTEGG_COOKIE_NAME = "FRONTEGG_COOKIE_NAME",
48
+ /**
49
+ * This Env variable assign automatically when deploying you Next.js application
50
+ * to Vercel deployments service, and will be used to detect to dynamically configure
51
+ * the {@link EnvVariables.FRONTEGG_APP_URL}
52
+ *
53
+ * @see [Vercel Environment Variables](https://vercel.com/docs/concepts/projects/environment-variables#system-environment-variables)
54
+ */
55
+ VERCEL = "VERCEL",
56
+ VERCEL_URL = "VERCEL_URL"
57
+ }
@@ -0,0 +1,13 @@
1
+ export let EnvVariables;
2
+ (function (EnvVariables) {
3
+ EnvVariables["FRONTEGG_APP_URL"] = "FRONTEGG_APP_URL";
4
+ EnvVariables["FRONTEGG_BASE_URL"] = "FRONTEGG_BASE_URL";
5
+ EnvVariables["FRONTEGG_TEST_URL"] = "FRONTEGG_TEST_URL";
6
+ EnvVariables["FRONTEGG_CLIENT_ID"] = "FRONTEGG_CLIENT_ID";
7
+ EnvVariables["FRONTEGG_ENCRYPTION_PASSWORD"] = "FRONTEGG_ENCRYPTION_PASSWORD";
8
+ EnvVariables["FRONTEGG_JWT_PUBLIC_KEY"] = "FRONTEGG_JWT_PUBLIC_KEY";
9
+ EnvVariables["FRONTEGG_COOKIE_NAME"] = "FRONTEGG_COOKIE_NAME";
10
+ EnvVariables["VERCEL"] = "VERCEL";
11
+ EnvVariables["VERCEL_URL"] = "VERCEL_URL";
12
+ })(EnvVariables || (EnvVariables = {}));
13
+ //# sourceMappingURL=constants.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"constants.js","names":["EnvVariables"],"sources":["../../../../packages/nextjs/src/config/constants.ts"],"sourcesContent":["export enum EnvVariables {\n /**\n * The AppUrl is to tell Frontegg your application's app url\n * for generating cookies and proxy http requests\n */\n FRONTEGG_APP_URL = 'FRONTEGG_APP_URL',\n /**\n * The Frontegg domain is your unique URL to connect to the Frontegg gateway, get it by visit:\n * - For Dev environment [visit](https://portal.frontegg.com/development/settings/domains)\n * - For Prod environment [visit](https://portal.frontegg.com/production/settings/domains)\n */\n FRONTEGG_BASE_URL = 'FRONTEGG_BASE_URL',\n /**\n * The Frontegg test domain used for testing proxy middleware\n * @private for Frontegg\n */\n FRONTEGG_TEST_URL = 'FRONTEGG_TEST_URL',\n\n /**\n * Your Frontegg application's Client ID, get it by visit:\n * - For Dev environment [visit](https://portal.frontegg.com/development/settings/general)\n * - For Prod environment [visit](https://portal.frontegg.com/production/settings/general)\n */\n FRONTEGG_CLIENT_ID = 'FRONTEGG_CLIENT_ID',\n\n /**\n * The stateless session encryption password, used to encrypt\n * JWT before sending it to the client side.\n *\n * For quick password generation use the following command:\n *\n * ```sh\n * node -e \"console.log(crypto.randomBytes(32).toString('hex'))\"\n * ```\n */\n FRONTEGG_ENCRYPTION_PASSWORD = 'FRONTEGG_ENCRYPTION_PASSWORD',\n\n /**\n * The JWT public key generated by frontegg, to verify JWT before create session,\n * get it by visit: https://[YOUR_FRONTEGG_FOMAIN]/.well-known/jwks.json.\n *\n * Then: Copy and Paste the first key from the response:\n * {keys: [{__KEY__}]}\n */\n FRONTEGG_JWT_PUBLIC_KEY = 'FRONTEGG_JWT_PUBLIC_KEY',\n\n /**\n * The stateless cookie name for storing the encrypted JWT\n * value as session cookies for supporting getServerSideProps and ServerComponents\n */\n FRONTEGG_COOKIE_NAME = 'FRONTEGG_COOKIE_NAME',\n\n /**\n * This Env variable assign automatically when deploying you Next.js application\n * to Vercel deployments service, and will be used to detect to dynamically configure\n * the {@link EnvVariables.FRONTEGG_APP_URL}\n *\n * @see [Vercel Environment Variables](https://vercel.com/docs/concepts/projects/environment-variables#system-environment-variables)\n */\n VERCEL = 'VERCEL',\n VERCEL_URL = 'VERCEL_URL',\n}\n"],"mappings":"AAAA,WAAYA,YAAY;AA6DvB,WA7DWA,YAAY;EAAZA,YAAY;EAAZA,YAAY;EAAZA,YAAY;EAAZA,YAAY;EAAZA,YAAY;EAAZA,YAAY;EAAZA,YAAY;EAAZA,YAAY;EAAZA,YAAY;AAAA,GAAZA,YAAY,KAAZA,YAAY"}
@@ -0,0 +1,28 @@
1
+ import { PasswordsMap } from './types';
2
+ /**
3
+ * Return environment variable's value.
4
+ * @throws {@link FronteggEnvNotFound} if not exists
5
+ * @param name
6
+ */
7
+ export declare const getEnv: (name: string) => string;
8
+ /**
9
+ * Return environment variable's value with default if not exists
10
+ * @param {string} name - the name from environment variable {@link EnvVariables}
11
+ * @param {optional string} defaultValue - default value if not exists
12
+ */
13
+ export declare const getEnvOrDefault: <T>(name: string, defaultValue: T) => string | T;
14
+ /**
15
+ * extract hostname from appUrl for session cookie creation
16
+ * @param {string} appUrl - The generated appUrl
17
+ */
18
+ export declare const generateCookieDomain: (appUrl: string) => string;
19
+ /**
20
+ * Create passwordMap if from {@link EnvVariables.FRONTEGG_ENCRYPTION_PASSWORD}
21
+ * @param {string} password - encryption password
22
+ */
23
+ export declare function normalizeStringPasswordToMap(password: string | PasswordsMap): PasswordsMap;
24
+ /**
25
+ * Check if the Next.js application running on Vercel Deployment Service
26
+ * and calculate the appUrl based on Vercel Environment variables.
27
+ */
28
+ export declare function generateAppUrl(): string;