@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/CHANGELOG.md CHANGED
@@ -1,5 +1,16 @@
1
1
  # Change Log
2
2
 
3
+ ## [6.7.21](https://github.com/frontegg/frontegg-nextjs/compare/v6.7.20...v6.7.21) (2023-3-16)
4
+
5
+
6
+ ### NextJS Wrapper 6.7.21:
7
+ - FR-10654 - Use CJS build instead of ESM
8
+ - FR-10654 - Prevent overriding default package.json file in dist folder
9
+ - FR-10654 - Add missing alpha version in pre-release script
10
+ - FR-10654 - Update nvmrc load and fix deprecated set-output
11
+ - FR-10654 - Fix build script
12
+ - FR-10654 - Add update-sdk-version script and fix prettier command
13
+
3
14
  ## [6.7.20](https://github.com/frontegg/frontegg-nextjs/compare/v6.7.19...v6.7.20) (2023-3-16)
4
15
 
5
16
  - Fixed use permission regex issue to accept a wild card
package/README.md CHANGED
@@ -10,7 +10,7 @@ and integrate them into their SaaS portals in up to 5 lines of code.
10
10
  - [Add to existing project](#add-to-existing-project)
11
11
  - [Using Vercel platform with custom domain](#using-vercel-platform-with-custom-domain)
12
12
  - [Getting Started](#getting-started)
13
- - [Create Frontegg worksapce](#create-frontegg-worksapce)
13
+ - [Create Frontegg workspace](#create-frontegg-workspace)
14
14
  - [Setup environment](#setup-environment)
15
15
  - [Documentation](#documentation)
16
16
  - [API Reference](#api-reference)
@@ -22,27 +22,9 @@ and integrate them into their SaaS portals in up to 5 lines of code.
22
22
 
23
23
  ## Installation
24
24
 
25
- ### Create new NextJS project
25
+ ### Add Frontegg to Next.JS project
26
26
 
27
- To start a new Create Next App project with TypeScript, you can run:
28
-
29
- ```bash
30
- npx create-next-app --example "https://github.com/frontegg/frontegg-nextjs" --example-path "apps/example" my-nextjs-app-name
31
- ```
32
-
33
- or
34
-
35
- ```bash
36
- yarn create next-app --example "https://github.com/frontegg/frontegg-nextjs" --example-path "apps/example" my-nextjs-app-name
37
- ```
38
-
39
- > If you've previously installed `create-react-app` globally via `npm install -g create-next-app`, we recommend you uninstall the package using `npm uninstall -g create-next-app` or `yarn global remove create-next-app` to ensure that `npx` always uses the latest version.
40
- >
41
- > Global installations of `create-next-app` are no longer supported.
42
-
43
- ### Add to existing project
44
-
45
- To Add Frontegg to your existing Nextjs project, follow below steps:
27
+ To Add Frontegg to your existing Next.JS project, follow below steps:
46
28
 
47
29
  1. Use package manager to install Frontegg Next.JS library.
48
30
 
@@ -61,15 +43,15 @@ To Add Frontegg to your existing Nextjs project, follow below steps:
61
43
  ```tsx
62
44
  // ./pages/_app.tsx
63
45
 
64
- import { withFronteggApp } from '@frontegg/nextjs';
46
+ import { withFronteggApp } from "@frontegg/nextjs";
65
47
 
66
48
  function CustomApp({ Component, pageProps }: AppProps) {
67
49
  return <Component {...pageProps} />;
68
50
  }
69
51
 
70
- export default withFronteggApp(CustomApp, {
52
+ export default withFronteggApp(CustomApp, {
71
53
  hostedLoginBox: true
72
- });
54
+ });
73
55
  ```
74
56
 
75
57
  3. Create files for frontegg middleware under `./pages/api/frontegg/[...frontegg-middleware].ts`:
@@ -93,16 +75,16 @@ To Add Frontegg to your existing Nextjs project, follow below steps:
93
75
 
94
76
  ### Using Vercel platform with custom domain
95
77
 
96
- 1. Visit `https://vercel.com/[ACCOUNT_ID]/[PROJECT_ID]/settings/environment-variables`
97
- 2. Add `FRONTEGG_APP_URL` environment variable for each Vercel Environment
98
- ![vercel-settings-pages](https://github.com/frontegg/frontegg-nextjs/blob/master/vercel-environment.png)
99
-
78
+ 1. Visit `https://vercel.com/[ACCOUNT_ID]/[PROJECT_ID]/settings/environment-variables`
79
+ 2. Add `FRONTEGG_APP_URL` environment variable for each Vercel Environment
80
+ ![vercel-settings-pages](https://github.com/frontegg/frontegg-nextjs/blob/master/assets/vercel-environment.png)
81
+
100
82
 
101
83
  ## Getting Started
102
84
 
103
- ### Create Frontegg worksapce
85
+ ### Create Frontegg workspace
104
86
 
105
- Navigate to [Frontegg Portal Settgins](https://portal.frontegg.com/development/settings), If you don't have application
87
+ Navigate to [Frontegg Portal Settings](https://portal.frontegg.com/development/settings), If you don't have application
106
88
  follow integration steps after signing up.
107
89
 
108
90
  Next, configure the "Allowed Origins" in your application under "Domain" tab of the "Settings" page :
@@ -114,7 +96,7 @@ Copy ClientID, Frontegg Domain from "Settings" page, You'll need these values in
114
96
 
115
97
  ### Setup environment
116
98
 
117
- To setup your Next.js application to communicate with Frontegg, you have to create a new file named `.env.local` under
99
+ To set up your Next.js application to communicate with Frontegg, you have to create a new file named `.env.local` under
118
100
  your root project directory, this file will be used to store environment variables that will be used, configuration
119
101
  options:
120
102
 
@@ -230,7 +212,7 @@ export const getServerSideProps: GetServerSideProps = withSSRSession(
230
212
 
231
213
  ## Next.js 13
232
214
  ### wrapping your application
233
- ```ts
215
+ ```tsx
234
216
  // ./app/layout.tsx
235
217
  import { FronteggAppProvider } from '@frontegg/nextjs/server';
236
218
 
@@ -247,14 +229,14 @@ export default function RootLayout({ children }: { children: React.ReactNode })
247
229
  ```
248
230
 
249
231
  ### routing
250
- ```ts
232
+ ```tsx
251
233
  // ./app/[...frontegg-router]/page.tsx
252
234
  export { FronteggAppRouter as default } from '@frontegg/nextjs/client';
253
235
  ```
254
236
 
255
237
  ### server component
256
- notice that this session is not part of the state and therefore wont trigger ui changes when it changes
257
- ```ts
238
+ notice that this session is not part of the state and therefore won't trigger ui changes when it changes
239
+ ```tsx
258
240
  // ./app/ServerComponent.tsx
259
241
  import { getSession } from "@frontegg/nextjs/server";
260
242
 
@@ -267,7 +249,7 @@ export const ServerComponent = async () => {
267
249
  ```
268
250
 
269
251
  ### client component
270
- ```ts
252
+ ```tsx
271
253
  // ./app/ClientComponent.tsx
272
254
  "use client";
273
255
  import { useAuth, useLoginWithRedirect } from "@frontegg/nextjs";
@@ -311,7 +293,7 @@ export const ClientComponent = ({ baseUrl }: { baseUrl?: string }) => {
311
293
  ```
312
294
 
313
295
  ### Page
314
- ```ts
296
+ ```tsx
315
297
  // ./app/page.tsx
316
298
  import { ClientComponent } from "./client";
317
299
  import { ServerComponent } from "./server";
package/api/index.d.ts ADDED
@@ -0,0 +1,19 @@
1
+ import { ILoginResponse, ITenantsResponse } from '@frontegg/rest-api';
2
+ /**
3
+ *
4
+ * @param headers
5
+ */
6
+ export declare const getUsers: (headers: Record<string, string>) => Promise<ILoginResponse | undefined>;
7
+ /**
8
+ *
9
+ * @param headers
10
+ */
11
+ export declare const getTenants: (headers: Record<string, string>) => Promise<ITenantsResponse[] | undefined>;
12
+ declare const _default: {
13
+ loadPublicKey: () => Promise<any>;
14
+ refreshTokenEmbedded: (headers: Record<string, string>) => Promise<Response>;
15
+ refreshTokenHostedLogin: (headers: Record<string, string>, refresh_token: string) => Promise<Response>;
16
+ getUsers: (headers: Record<string, string>) => Promise<ILoginResponse | undefined>;
17
+ getTenants: (headers: Record<string, string>) => Promise<ITenantsResponse[] | undefined>;
18
+ };
19
+ export default _default;
package/api/index.js ADDED
@@ -0,0 +1,87 @@
1
+ "use strict";
2
+
3
+ var _interopRequireDefault = require("@babel/runtime/helpers/interopRequireDefault");
4
+ Object.defineProperty(exports, "__esModule", {
5
+ value: true
6
+ });
7
+ exports.getUsers = exports.getTenants = exports.default = void 0;
8
+ var _config = _interopRequireDefault(require("../config"));
9
+ var _urls = require("./urls");
10
+ var _utils = require("./utils");
11
+ var _restApi = require("@frontegg/rest-api");
12
+ /**
13
+ * Send HTTP GET to frontegg domain public route to download the JWT public key
14
+ */
15
+ const loadPublicKey = async () => {
16
+ const response = await fetch(`${_config.default.baseUrl}${_urls.ApiUrls.WellKnown.jwks}`, {
17
+ cache: 'force-cache'
18
+ });
19
+ const data = await response.json();
20
+ return data.keys[0];
21
+ };
22
+
23
+ /**
24
+ * Send HTTP post request for Frontegg services to refresh token
25
+ * by providing client's fe_ cookies
26
+ */
27
+ const refreshTokenEmbedded = async headers => {
28
+ return (0, _utils.Post)({
29
+ url: `${_config.default.baseUrl}${_urls.ApiUrls.refreshToken.embedded}`,
30
+ body: '{}',
31
+ credentials: 'include',
32
+ headers: (0, _utils.buildRequestHeaders)(headers)
33
+ });
34
+ };
35
+
36
+ /**
37
+ * Send HTTP post request for Frontegg services to refresh `hosted login` token
38
+ * by providing client's fe_ as body with grant_type.
39
+ */
40
+ const refreshTokenHostedLogin = async (headers, refresh_token) => {
41
+ return (0, _utils.Post)({
42
+ url: `${_config.default.baseUrl}${_urls.ApiUrls.refreshToken.hosted}`,
43
+ body: JSON.stringify({
44
+ grant_type: 'refresh_token',
45
+ refresh_token
46
+ }),
47
+ headers: (0, _utils.buildRequestHeaders)(headers, {
48
+ cookie: headers['cookie']
49
+ })
50
+ });
51
+ };
52
+
53
+ /**
54
+ *
55
+ * @param headers
56
+ */
57
+ const getUsers = async headers => {
58
+ const headersToSend = (0, _utils.buildRequestHeaders)(headers);
59
+ const res = await (0, _utils.Get)({
60
+ url: `${_config.default.baseUrl}/frontegg${_restApi.fronteggUsersUrl}`,
61
+ headers: headersToSend
62
+ });
63
+ return (0, _utils.parseHttpResponse)(res);
64
+ };
65
+
66
+ /**
67
+ *
68
+ * @param headers
69
+ */
70
+ exports.getUsers = getUsers;
71
+ const getTenants = async headers => {
72
+ const res = await (0, _utils.Get)({
73
+ url: `${_config.default.baseUrl}/frontegg${_restApi.fronteggTenantsUrl}`,
74
+ headers: (0, _utils.buildRequestHeaders)(headers)
75
+ });
76
+ return (0, _utils.parseHttpResponse)(res);
77
+ };
78
+ exports.getTenants = getTenants;
79
+ var _default = {
80
+ loadPublicKey,
81
+ refreshTokenEmbedded,
82
+ refreshTokenHostedLogin,
83
+ getUsers,
84
+ getTenants
85
+ };
86
+ exports.default = _default;
87
+ //# sourceMappingURL=index.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"index.js","names":["loadPublicKey","response","fetch","config","baseUrl","ApiUrls","WellKnown","jwks","cache","data","json","keys","refreshTokenEmbedded","headers","Post","url","refreshToken","embedded","body","credentials","buildRequestHeaders","refreshTokenHostedLogin","refresh_token","hosted","JSON","stringify","grant_type","cookie","getUsers","headersToSend","res","Get","fronteggUsersUrl","parseHttpResponse","getTenants","fronteggTenantsUrl"],"sources":["../../../../packages/nextjs/src/api/index.ts"],"sourcesContent":["import config from '../config';\nimport { ApiUrls } from './urls';\nimport { buildRequestHeaders, Get, parseHttpResponse, Post } from './utils';\nimport { fronteggTenantsUrl, fronteggUsersUrl, ILoginResponse, ITenantsResponse } from '@frontegg/rest-api';\n\n/**\n * Send HTTP GET to frontegg domain public route to download the JWT public key\n */\nconst loadPublicKey = async () => {\n const response = await fetch(`${config.baseUrl}${ApiUrls.WellKnown.jwks}`, {\n cache: 'force-cache',\n });\n const data = await response.json();\n return data.keys[0];\n};\n\n/**\n * Send HTTP post request for Frontegg services to refresh token\n * by providing client's fe_ cookies\n */\nconst refreshTokenEmbedded = async (headers: Record<string, string>) => {\n return Post({\n url: `${config.baseUrl}${ApiUrls.refreshToken.embedded}`,\n body: '{}',\n credentials: 'include',\n headers: buildRequestHeaders(headers),\n });\n};\n\n/**\n * Send HTTP post request for Frontegg services to refresh `hosted login` token\n * by providing client's fe_ as body with grant_type.\n */\nconst refreshTokenHostedLogin = async (headers: Record<string, string>, refresh_token: string) => {\n return Post({\n url: `${config.baseUrl}${ApiUrls.refreshToken.hosted}`,\n body: JSON.stringify({\n grant_type: 'refresh_token',\n refresh_token,\n }),\n headers: buildRequestHeaders(headers, { cookie: headers['cookie'] }),\n });\n};\n\n/**\n *\n * @param headers\n */\nexport const getUsers = async (headers: Record<string, string>): Promise<ILoginResponse | undefined> => {\n const headersToSend = buildRequestHeaders(headers);\n const res = await Get({\n url: `${config.baseUrl}/frontegg${fronteggUsersUrl}`,\n headers: headersToSend,\n });\n return parseHttpResponse(res);\n};\n\n/**\n *\n * @param headers\n */\nexport const getTenants = async (headers: Record<string, string>): Promise<ITenantsResponse[] | undefined> => {\n const res = await Get({\n url: `${config.baseUrl}/frontegg${fronteggTenantsUrl}`,\n headers: buildRequestHeaders(headers),\n });\n return parseHttpResponse(res);\n};\n\nexport default {\n loadPublicKey,\n refreshTokenEmbedded,\n refreshTokenHostedLogin,\n getUsers,\n getTenants,\n};\n"],"mappings":";;;;;;;AAAA;AACA;AACA;AACA;AAEA;AACA;AACA;AACA,MAAMA,aAAa,GAAG,YAAY;EAChC,MAAMC,QAAQ,GAAG,MAAMC,KAAK,CAAE,GAAEC,eAAM,CAACC,OAAQ,GAAEC,aAAO,CAACC,SAAS,CAACC,IAAK,EAAC,EAAE;IACzEC,KAAK,EAAE;EACT,CAAC,CAAC;EACF,MAAMC,IAAI,GAAG,MAAMR,QAAQ,CAACS,IAAI,EAAE;EAClC,OAAOD,IAAI,CAACE,IAAI,CAAC,CAAC,CAAC;AACrB,CAAC;;AAED;AACA;AACA;AACA;AACA,MAAMC,oBAAoB,GAAG,MAAOC,OAA+B,IAAK;EACtE,OAAO,IAAAC,WAAI,EAAC;IACVC,GAAG,EAAG,GAAEZ,eAAM,CAACC,OAAQ,GAAEC,aAAO,CAACW,YAAY,CAACC,QAAS,EAAC;IACxDC,IAAI,EAAE,IAAI;IACVC,WAAW,EAAE,SAAS;IACtBN,OAAO,EAAE,IAAAO,0BAAmB,EAACP,OAAO;EACtC,CAAC,CAAC;AACJ,CAAC;;AAED;AACA;AACA;AACA;AACA,MAAMQ,uBAAuB,GAAG,OAAOR,OAA+B,EAAES,aAAqB,KAAK;EAChG,OAAO,IAAAR,WAAI,EAAC;IACVC,GAAG,EAAG,GAAEZ,eAAM,CAACC,OAAQ,GAAEC,aAAO,CAACW,YAAY,CAACO,MAAO,EAAC;IACtDL,IAAI,EAAEM,IAAI,CAACC,SAAS,CAAC;MACnBC,UAAU,EAAE,eAAe;MAC3BJ;IACF,CAAC,CAAC;IACFT,OAAO,EAAE,IAAAO,0BAAmB,EAACP,OAAO,EAAE;MAAEc,MAAM,EAAEd,OAAO,CAAC,QAAQ;IAAE,CAAC;EACrE,CAAC,CAAC;AACJ,CAAC;;AAED;AACA;AACA;AACA;AACO,MAAMe,QAAQ,GAAG,MAAOf,OAA+B,IAA0C;EACtG,MAAMgB,aAAa,GAAG,IAAAT,0BAAmB,EAACP,OAAO,CAAC;EAClD,MAAMiB,GAAG,GAAG,MAAM,IAAAC,UAAG,EAAC;IACpBhB,GAAG,EAAG,GAAEZ,eAAM,CAACC,OAAQ,YAAW4B,yBAAiB,EAAC;IACpDnB,OAAO,EAAEgB;EACX,CAAC,CAAC;EACF,OAAO,IAAAI,wBAAiB,EAACH,GAAG,CAAC;AAC/B,CAAC;;AAED;AACA;AACA;AACA;AAHA;AAIO,MAAMI,UAAU,GAAG,MAAOrB,OAA+B,IAA8C;EAC5G,MAAMiB,GAAG,GAAG,MAAM,IAAAC,UAAG,EAAC;IACpBhB,GAAG,EAAG,GAAEZ,eAAM,CAACC,OAAQ,YAAW+B,2BAAmB,EAAC;IACtDtB,OAAO,EAAE,IAAAO,0BAAmB,EAACP,OAAO;EACtC,CAAC,CAAC;EACF,OAAO,IAAAoB,wBAAiB,EAACH,GAAG,CAAC;AAC/B,CAAC;AAAC;AAAA,eAEa;EACb9B,aAAa;EACbY,oBAAoB;EACpBS,uBAAuB;EACvBO,QAAQ;EACRM;AACF,CAAC;AAAA"}
@@ -0,0 +1,6 @@
1
+ {
2
+ "sideEffects": false,
3
+ "module": "./index.js",
4
+ "main": "./index.js",
5
+ "types": "./index.d.ts"
6
+ }
package/api/urls.d.ts ADDED
@@ -0,0 +1,33 @@
1
+ export declare const ApiUrls: {
2
+ WellKnown: {
3
+ jwks: string;
4
+ };
5
+ refreshToken: {
6
+ embedded: string;
7
+ hosted: string;
8
+ };
9
+ };
10
+ interface BuildRouteResult {
11
+ asPath: string;
12
+ asUrl: URL;
13
+ }
14
+ /**
15
+ * Builds a login route with a redirect URL encoded as a query parameter.
16
+ *
17
+ * @param {string} redirectUrl - The URL to redirect to after successful login.
18
+ * @returns {BuildRouteResult} An object containing the generated login route and URL.
19
+ *
20
+ * @throws {TypeError} If redirectUrl is not a string.
21
+ */
22
+ export declare function buildLoginRoute(redirectUrl: string): BuildRouteResult;
23
+ /**
24
+ * Builds a HostedLogin's logout route with a redirect URL encoded as a query parameter.
25
+ *
26
+ * @param {string} redirectUrl - The URL to redirect to after successful login.
27
+ * @param {string} baseUrl - The frontegg domain url
28
+ * @returns {BuildRouteResult} An object containing the generated login route and URL.
29
+ *
30
+ * @throws {TypeError} If redirectUrl is not a string.
31
+ */
32
+ export declare function buildLogoutRoute(redirectUrl: string, baseUrl: string): BuildRouteResult;
33
+ export {};
package/api/urls.js ADDED
@@ -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.ApiUrls = void 0;
8
+ exports.buildLoginRoute = buildLoginRoute;
9
+ exports.buildLogoutRoute = buildLogoutRoute;
10
+ var _restApi = require("@frontegg/rest-api");
11
+ var _config = _interopRequireDefault(require("../config"));
12
+ const ApiUrls = {
13
+ WellKnown: {
14
+ jwks: `/.well-known/jwks.json`
15
+ },
16
+ refreshToken: {
17
+ embedded: `/frontegg${_restApi.fronteggRefreshTokenUrl}`,
18
+ hosted: `/frontegg/oauth/token`
19
+ }
20
+ };
21
+ exports.ApiUrls = ApiUrls;
22
+ /**
23
+ * Builds a login route with a redirect URL encoded as a query parameter.
24
+ *
25
+ * @param {string} redirectUrl - The URL to redirect to after successful login.
26
+ * @returns {BuildRouteResult} An object containing the generated login route and URL.
27
+ *
28
+ * @throws {TypeError} If redirectUrl is not a string.
29
+ */
30
+ function buildLoginRoute(redirectUrl) {
31
+ const asPath = `${_config.default.appUrl}/account/login?redirectUrl=${encodeURIComponent(redirectUrl)}`;
32
+ const asUrl = new URL(asPath);
33
+ return {
34
+ asPath,
35
+ asUrl
36
+ };
37
+ }
38
+
39
+ /**
40
+ * Builds a HostedLogin's logout route with a redirect URL encoded as a query parameter.
41
+ *
42
+ * @param {string} redirectUrl - The URL to redirect to after successful login.
43
+ * @param {string} baseUrl - The frontegg domain url
44
+ * @returns {BuildRouteResult} An object containing the generated login route and URL.
45
+ *
46
+ * @throws {TypeError} If redirectUrl is not a string.
47
+ */
48
+ function buildLogoutRoute(redirectUrl, baseUrl) {
49
+ const asPath = `${baseUrl}/oauth/logout?post_logout_redirect_uri=${encodeURIComponent(redirectUrl)}`;
50
+ const asUrl = new URL(asPath, baseUrl);
51
+ return {
52
+ asPath,
53
+ asUrl
54
+ };
55
+ }
56
+ //# sourceMappingURL=urls.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"urls.js","names":["ApiUrls","WellKnown","jwks","refreshToken","embedded","fronteggRefreshTokenUrl","hosted","buildLoginRoute","redirectUrl","asPath","config","appUrl","encodeURIComponent","asUrl","URL","buildLogoutRoute","baseUrl"],"sources":["../../../../packages/nextjs/src/api/urls.ts"],"sourcesContent":["import { fronteggAuthApiRoutes, fronteggRefreshTokenUrl } from '@frontegg/rest-api';\nimport config from '../config';\n\nexport const ApiUrls = {\n WellKnown: {\n jwks: `/.well-known/jwks.json`,\n },\n refreshToken: {\n embedded: `/frontegg${fronteggRefreshTokenUrl}`,\n hosted: `/frontegg/oauth/token`,\n },\n};\n\ninterface BuildRouteResult {\n asPath: string;\n asUrl: URL;\n}\n\n/**\n * Builds a login route with a redirect URL encoded as a query parameter.\n *\n * @param {string} redirectUrl - The URL to redirect to after successful login.\n * @returns {BuildRouteResult} An object containing the generated login route and URL.\n *\n * @throws {TypeError} If redirectUrl is not a string.\n */\nexport function buildLoginRoute(redirectUrl: string): BuildRouteResult {\n const asPath = `${config.appUrl}/account/login?redirectUrl=${encodeURIComponent(redirectUrl)}`;\n const asUrl = new URL(asPath);\n return {\n asPath,\n asUrl,\n };\n}\n\n/**\n * Builds a HostedLogin's logout route with a redirect URL encoded as a query parameter.\n *\n * @param {string} redirectUrl - The URL to redirect to after successful login.\n * @param {string} baseUrl - The frontegg domain url\n * @returns {BuildRouteResult} An object containing the generated login route and URL.\n *\n * @throws {TypeError} If redirectUrl is not a string.\n */\nexport function buildLogoutRoute(redirectUrl: string, baseUrl: string): BuildRouteResult {\n const asPath = `${baseUrl}/oauth/logout?post_logout_redirect_uri=${encodeURIComponent(redirectUrl)}`;\n const asUrl = new URL(asPath, baseUrl);\n return {\n asPath,\n asUrl,\n };\n}\n"],"mappings":";;;;;;;;;AAAA;AACA;AAEO,MAAMA,OAAO,GAAG;EACrBC,SAAS,EAAE;IACTC,IAAI,EAAG;EACT,CAAC;EACDC,YAAY,EAAE;IACZC,QAAQ,EAAG,YAAWC,gCAAwB,EAAC;IAC/CC,MAAM,EAAG;EACX;AACF,CAAC;AAAC;AAOF;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACO,SAASC,eAAe,CAACC,WAAmB,EAAoB;EACrE,MAAMC,MAAM,GAAI,GAAEC,eAAM,CAACC,MAAO,8BAA6BC,kBAAkB,CAACJ,WAAW,CAAE,EAAC;EAC9F,MAAMK,KAAK,GAAG,IAAIC,GAAG,CAACL,MAAM,CAAC;EAC7B,OAAO;IACLA,MAAM;IACNI;EACF,CAAC;AACH;;AAEA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACO,SAASE,gBAAgB,CAACP,WAAmB,EAAEQ,OAAe,EAAoB;EACvF,MAAMP,MAAM,GAAI,GAAEO,OAAQ,0CAAyCJ,kBAAkB,CAACJ,WAAW,CAAE,EAAC;EACpG,MAAMK,KAAK,GAAG,IAAIC,GAAG,CAACL,MAAM,EAAEO,OAAO,CAAC;EACtC,OAAO;IACLP,MAAM;IACNI;EACF,CAAC;AACH"}
package/api/utils.d.ts ADDED
@@ -0,0 +1,46 @@
1
+ interface GetRequestOptions {
2
+ url: string;
3
+ credentials?: RequestCredentials;
4
+ headers?: HeadersInit;
5
+ }
6
+ export declare const Get: ({ url, credentials, headers }: GetRequestOptions) => Promise<Response>;
7
+ interface PostRequestOptions extends GetRequestOptions {
8
+ body: string;
9
+ }
10
+ export declare const Post: ({ url, credentials, headers, body }: PostRequestOptions) => Promise<Response>;
11
+ /**
12
+ * NodeJS 18 start using undici as http request handler,
13
+ * undici http request does not accept invalid headers
14
+ * for more details see:
15
+ * https://github.com/nodejs/undici/blob/2b260c997ad4efe4ed2064b264b4b546a59e7a67/lib/core/request.js#L282
16
+ * @param headers
17
+ */
18
+ export declare function removeInvalidHeaders(headers: Record<string, string>): {
19
+ [x: string]: string;
20
+ };
21
+ /**
22
+ * Build fetch request headers, remove invalid http headers
23
+ * @param headers - Incoming request headers
24
+ * @param additionalHeaders - Specify additional headers
25
+ */
26
+ export declare function buildRequestHeaders(headers: Record<string, any>, additionalHeaders?: Record<string, string>): Record<string, string>;
27
+ /**
28
+ * Return parsed json response if http status code = 200
29
+ * @param res
30
+ */
31
+ export declare const parseHttpResponse: <T>(res: Response) => Promise<T | undefined>;
32
+ /**
33
+ * Checks if the given path is a frontegg authentication API route, ends with '/postlogin', or ends with '/prelogin'.
34
+ *
35
+ * @param {string} path - The path to check for authentication API routes.
36
+ * @returns {boolean} Returns true if the path is a frontegg authentication API route or ends with '/postlogin' or '/prelogin'; otherwise, returns false.
37
+ */
38
+ export declare function isAuthPath(path: string): boolean;
39
+ /**
40
+ * Checks if the given path matches the pattern for a social login prelogin route.
41
+ *
42
+ * @param {string} path - The path to check for a social login prelogin route pattern.
43
+ * @returns {boolean} Returns true if the path matches the social login prelogin route pattern; otherwise, returns false.
44
+ */
45
+ export declare function isSocialLoginPath(path: string): boolean;
46
+ export {};
package/api/utils.js ADDED
@@ -0,0 +1,123 @@
1
+ "use strict";
2
+
3
+ var _interopRequireDefault = require("@babel/runtime/helpers/interopRequireDefault");
4
+ Object.defineProperty(exports, "__esModule", {
5
+ value: true
6
+ });
7
+ exports.Post = exports.Get = void 0;
8
+ exports.buildRequestHeaders = buildRequestHeaders;
9
+ exports.isAuthPath = isAuthPath;
10
+ exports.isSocialLoginPath = isSocialLoginPath;
11
+ exports.parseHttpResponse = void 0;
12
+ exports.removeInvalidHeaders = removeInvalidHeaders;
13
+ var _extends2 = _interopRequireDefault(require("@babel/runtime/helpers/extends"));
14
+ var _config = _interopRequireDefault(require("../config"));
15
+ var _sdkVersion = _interopRequireDefault(require("../sdkVersion"));
16
+ var _package = _interopRequireDefault(require("next/package.json"));
17
+ var _restApi = require("@frontegg/rest-api");
18
+ var _constants = require("../utils/common/constants");
19
+ const Get = ({
20
+ url,
21
+ credentials = 'include',
22
+ headers
23
+ }) => fetch(url, {
24
+ method: 'GET',
25
+ credentials,
26
+ headers
27
+ });
28
+ exports.Get = Get;
29
+ const Post = ({
30
+ url,
31
+ credentials = 'include',
32
+ headers,
33
+ body
34
+ }) => fetch(url, {
35
+ method: 'POST',
36
+ credentials,
37
+ headers,
38
+ body
39
+ });
40
+
41
+ /**
42
+ * NodeJS 18 start using undici as http request handler,
43
+ * undici http request does not accept invalid headers
44
+ * for more details see:
45
+ * https://github.com/nodejs/undici/blob/2b260c997ad4efe4ed2064b264b4b546a59e7a67/lib/core/request.js#L282
46
+ * @param headers
47
+ */
48
+ exports.Post = Post;
49
+ function removeInvalidHeaders(headers) {
50
+ const newHeaders = (0, _extends2.default)({}, headers);
51
+ Object.keys(newHeaders).forEach(key => {
52
+ const val = headers[key];
53
+ if (val && typeof val === 'object' && !Array.isArray(val)) {
54
+ delete newHeaders[key];
55
+ } else if (_constants.headerCharRegex.exec(val) !== null) {
56
+ delete newHeaders[key];
57
+ } else if (val === undefined || val === null) {
58
+ delete newHeaders[key];
59
+ } else if (key.length === 10 && key === 'connection') {
60
+ delete newHeaders[key];
61
+ }
62
+ });
63
+ return newHeaders;
64
+ }
65
+
66
+ /**
67
+ * Build fetch request headers, remove invalid http headers
68
+ * @param headers - Incoming request headers
69
+ * @param additionalHeaders - Specify additional headers
70
+ */
71
+ function buildRequestHeaders(headers, additionalHeaders = {}) {
72
+ let cookie = headers['cookie'];
73
+ if (cookie != null && typeof cookie === 'string') {
74
+ cookie = cookie.replace(/fe_session-[^=]*=[^;]*$/, '').replace(/fe_session-[^=]*=[^;]*;/, '');
75
+ }
76
+ const preparedHeaders = {
77
+ authorization: headers['authorization'],
78
+ 'accept-encoding': headers['accept-encoding'],
79
+ 'accept-language': headers['accept-language'],
80
+ accept: headers['accept'],
81
+ 'content-type': 'application/json',
82
+ origin: _config.default.baseUrl,
83
+ cookie,
84
+ 'user-agent': headers['user-agent'],
85
+ 'cache-control': headers['cache-control'],
86
+ 'x-frontegg-framework': `next@${_package.default.version}`,
87
+ 'x-frontegg-sdk': `@frontegg/nextjs@${_sdkVersion.default.version}`
88
+ };
89
+ return removeInvalidHeaders((0, _extends2.default)({}, preparedHeaders, additionalHeaders));
90
+ }
91
+
92
+ /**
93
+ * Return parsed json response if http status code = 200
94
+ * @param res
95
+ */
96
+ const parseHttpResponse = async res => {
97
+ if (!res.ok) {
98
+ return undefined;
99
+ }
100
+ return await res.json();
101
+ };
102
+
103
+ /**
104
+ * Checks if the given path is a frontegg authentication API route, ends with '/postlogin', or ends with '/prelogin'.
105
+ *
106
+ * @param {string} path - The path to check for authentication API routes.
107
+ * @returns {boolean} Returns true if the path is a frontegg authentication API route or ends with '/postlogin' or '/prelogin'; otherwise, returns false.
108
+ */
109
+ exports.parseHttpResponse = parseHttpResponse;
110
+ function isAuthPath(path) {
111
+ return _restApi.fronteggAuthApiRoutes.indexOf(path) !== -1 || path.endsWith('/postlogin') || path.endsWith('/prelogin');
112
+ }
113
+
114
+ /**
115
+ * Checks if the given path matches the pattern for a social login prelogin route.
116
+ *
117
+ * @param {string} path - The path to check for a social login prelogin route pattern.
118
+ * @returns {boolean} Returns true if the path matches the social login prelogin route pattern; otherwise, returns false.
119
+ */
120
+ function isSocialLoginPath(path) {
121
+ return RegExp('^/identity/resources/auth/v[0-9]*/user/sso/default/.*/prelogin$').test(path);
122
+ }
123
+ //# sourceMappingURL=utils.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"utils.js","names":["Get","url","credentials","headers","fetch","method","Post","body","removeInvalidHeaders","newHeaders","Object","keys","forEach","key","val","Array","isArray","headerCharRegex","exec","undefined","length","buildRequestHeaders","additionalHeaders","cookie","replace","preparedHeaders","authorization","accept","origin","config","baseUrl","nextjsPkg","version","sdkVersion","parseHttpResponse","res","ok","json","isAuthPath","path","fronteggAuthApiRoutes","indexOf","endsWith","isSocialLoginPath","RegExp","test"],"sources":["../../../../packages/nextjs/src/api/utils.ts"],"sourcesContent":["import config from '../config';\nimport sdkVersion from '../sdkVersion';\nimport nextjsPkg from 'next/package.json';\nimport { fronteggAuthApiRoutes } from '@frontegg/rest-api';\nimport { headerCharRegex } from '../utils/common/constants';\n\ninterface GetRequestOptions {\n url: string;\n credentials?: RequestCredentials;\n headers?: HeadersInit;\n}\n\nexport const Get = ({ url, credentials = 'include', headers }: GetRequestOptions) =>\n fetch(url, { method: 'GET', credentials, headers });\n\ninterface PostRequestOptions extends GetRequestOptions {\n body: string;\n}\n\nexport const Post = ({ url, credentials = 'include', headers, body }: PostRequestOptions) =>\n fetch(url, { method: 'POST', credentials, headers, body });\n\n/**\n * NodeJS 18 start using undici as http request handler,\n * undici http request does not accept invalid headers\n * for more details see:\n * https://github.com/nodejs/undici/blob/2b260c997ad4efe4ed2064b264b4b546a59e7a67/lib/core/request.js#L282\n * @param headers\n */\nexport function removeInvalidHeaders(headers: Record<string, string>) {\n const newHeaders = { ...headers };\n Object.keys(newHeaders).forEach((key: string) => {\n const val: any = headers[key];\n if (val && typeof val === 'object' && !Array.isArray(val)) {\n delete newHeaders[key];\n } else if (headerCharRegex.exec(val) !== null) {\n delete newHeaders[key];\n } else if (val === undefined || val === null) {\n delete newHeaders[key];\n } else if (key.length === 10 && key === 'connection') {\n delete newHeaders[key];\n }\n });\n return newHeaders;\n}\n\n/**\n * Build fetch request headers, remove invalid http headers\n * @param headers - Incoming request headers\n * @param additionalHeaders - Specify additional headers\n */\nexport function buildRequestHeaders(\n headers: Record<string, any>,\n additionalHeaders: Record<string, string> = {}\n): Record<string, string> {\n let cookie = headers['cookie'];\n if (cookie != null && typeof cookie === 'string') {\n cookie = cookie.replace(/fe_session-[^=]*=[^;]*$/, '').replace(/fe_session-[^=]*=[^;]*;/, '');\n }\n const preparedHeaders: Record<string, string> = {\n authorization: headers['authorization'],\n 'accept-encoding': headers['accept-encoding'],\n 'accept-language': headers['accept-language'],\n accept: headers['accept'],\n 'content-type': 'application/json',\n origin: config.baseUrl,\n cookie,\n 'user-agent': headers['user-agent'],\n 'cache-control': headers['cache-control'],\n 'x-frontegg-framework': `next@${nextjsPkg.version}`,\n 'x-frontegg-sdk': `@frontegg/nextjs@${sdkVersion.version}`,\n };\n\n return removeInvalidHeaders({\n ...preparedHeaders,\n ...additionalHeaders,\n });\n}\n\n/**\n * Return parsed json response if http status code = 200\n * @param res\n */\nexport const parseHttpResponse = async <T>(res: Response): Promise<T | undefined> => {\n if (!res.ok) {\n return undefined;\n }\n return await res.json();\n};\n\n/**\n * Checks if the given path is a frontegg authentication API route, ends with '/postlogin', or ends with '/prelogin'.\n *\n * @param {string} path - The path to check for authentication API routes.\n * @returns {boolean} Returns true if the path is a frontegg authentication API route or ends with '/postlogin' or '/prelogin'; otherwise, returns false.\n */\nexport function isAuthPath(path: string): boolean {\n return fronteggAuthApiRoutes.indexOf(path) !== -1 || path.endsWith('/postlogin') || path.endsWith('/prelogin');\n}\n\n/**\n * Checks if the given path matches the pattern for a social login prelogin route.\n *\n * @param {string} path - The path to check for a social login prelogin route pattern.\n * @returns {boolean} Returns true if the path matches the social login prelogin route pattern; otherwise, returns false.\n */\nexport function isSocialLoginPath(path: string): boolean {\n return RegExp('^/identity/resources/auth/v[0-9]*/user/sso/default/.*/prelogin$').test(path);\n}\n"],"mappings":"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"}
@@ -0,0 +1,3 @@
1
+ import type { FronteggProviderProps } from '../types';
2
+ import { FC } from 'react';
3
+ export declare const ClientFronteggProvider: FC<Omit<FronteggProviderProps, 'router'>>;
@@ -0,0 +1,32 @@
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.ClientFronteggProvider = void 0;
9
+ var _extends2 = _interopRequireDefault(require("@babel/runtime/helpers/extends"));
10
+ var _objectWithoutPropertiesLoose2 = _interopRequireDefault(require("@babel/runtime/helpers/objectWithoutPropertiesLoose"));
11
+ var _common = require("../common");
12
+ var _navigation = require("next/navigation");
13
+ var _react = _interopRequireDefault(require("react"));
14
+ var _jsxRuntime = require("react/jsx-runtime");
15
+ const _excluded = ["children", "basename"];
16
+ const ClientFronteggProvider = _ref => {
17
+ let {
18
+ children,
19
+ basename
20
+ } = _ref,
21
+ props = (0, _objectWithoutPropertiesLoose2.default)(_ref, _excluded);
22
+ const router = (0, _navigation.useRouter)();
23
+ const basePath = process.env.__NEXT_ROUTER_BASEPATH || '';
24
+ return /*#__PURE__*/(0, _jsxRuntime.jsx)(_common.FronteggBaseProvider, (0, _extends2.default)({
25
+ router: router,
26
+ basename: basename != null ? basename : basePath
27
+ }, props, {
28
+ children: children
29
+ }));
30
+ };
31
+ exports.ClientFronteggProvider = ClientFronteggProvider;
32
+ //# sourceMappingURL=ClientFronteggProvider.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"ClientFronteggProvider.js","names":["ClientFronteggProvider","children","basename","props","router","useRouter","basePath","process","env","__NEXT_ROUTER_BASEPATH"],"sources":["../../../../packages/nextjs/src/app/ClientFronteggProvider.tsx"],"sourcesContent":["'use client';\n\nimport type { FronteggProviderProps } from '../types';\nimport { FronteggBaseProvider } from '../common';\nimport { useRouter } from 'next/navigation';\nimport React, { FC } from 'react';\n\nexport const ClientFronteggProvider: FC<Omit<FronteggProviderProps, 'router'>> = ({ children, basename, ...props }) => {\n const router = useRouter();\n const basePath = process.env.__NEXT_ROUTER_BASEPATH || '';\n\n return (\n <FronteggBaseProvider router={router} basename={basename ?? basePath} {...props}>\n {children}\n </FronteggBaseProvider>\n );\n};\n"],"mappings":";AAAA,YAAY;;AAAC;AAAA;EAAA;AAAA;AAAA;AAAA;AAAA;AAGb;AACA;AACA;AAAkC;AAAA;AAE3B,MAAMA,sBAAiE,GAAG,QAAsC;EAAA,IAArC;MAAEC,QAAQ;MAAEC;IAAmB,CAAC;IAAPC,KAAK;EAC9G,MAAMC,MAAM,GAAG,IAAAC,qBAAS,GAAE;EAC1B,MAAMC,QAAQ,GAAGC,OAAO,CAACC,GAAG,CAACC,sBAAsB,IAAI,EAAE;EAEzD,oBACE,qBAAC,4BAAoB;IAAC,MAAM,EAAEL,MAAO;IAAC,QAAQ,EAAEF,QAAQ,WAARA,QAAQ,GAAII;EAAS,GAAKH,KAAK;IAAA,UAC5EF;EAAQ,GACY;AAE3B,CAAC;AAAC"}
@@ -0,0 +1,4 @@
1
+ import { PropsWithChildren } from 'react';
2
+ import { FronteggAppOptions } from '@frontegg/types';
3
+ export type FronteggAppProviderProps = PropsWithChildren<Omit<FronteggAppOptions, 'contextOptions'>>;
4
+ export declare const FronteggAppProvider: (options: FronteggAppProviderProps) => Promise<JSX.Element>;
@@ -0,0 +1,25 @@
1
+ "use strict";
2
+
3
+ var _interopRequireDefault = require("@babel/runtime/helpers/interopRequireDefault");
4
+ Object.defineProperty(exports, "__esModule", {
5
+ value: true
6
+ });
7
+ exports.FronteggAppProvider = void 0;
8
+ var _extends2 = _interopRequireDefault(require("@babel/runtime/helpers/extends"));
9
+ var _react = _interopRequireDefault(require("react"));
10
+ var _ClientFronteggProvider = require("./ClientFronteggProvider");
11
+ var _helpers = require("./helpers");
12
+ var _config = _interopRequireDefault(require("../config"));
13
+ var _fetchUserData = _interopRequireDefault(require("../utils/fetchUserData"));
14
+ var _jsxRuntime = require("react/jsx-runtime");
15
+ const FronteggAppProvider = async options => {
16
+ const appEnvConfig = _config.default.appEnvConfig;
17
+ const userData = await (0, _fetchUserData.default)({
18
+ getSession: _helpers.getAppSession,
19
+ getHeaders: _helpers.getAppHeaders
20
+ });
21
+ const providerProps = (0, _extends2.default)({}, appEnvConfig, userData, options);
22
+ return /*#__PURE__*/(0, _jsxRuntime.jsx)(_ClientFronteggProvider.ClientFronteggProvider, (0, _extends2.default)({}, providerProps));
23
+ };
24
+ exports.FronteggAppProvider = FronteggAppProvider;
25
+ //# sourceMappingURL=FronteggAppProvider.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"FronteggAppProvider.js","names":["FronteggAppProvider","options","appEnvConfig","config","userData","fetchUserData","getSession","getAppSession","getHeaders","getAppHeaders","providerProps"],"sources":["../../../../packages/nextjs/src/app/FronteggAppProvider.tsx"],"sourcesContent":["import React, { PropsWithChildren } from 'react';\nimport { ClientFronteggProvider } from './ClientFronteggProvider';\nimport { FronteggAppOptions } from '@frontegg/types';\nimport { getAppHeaders, getAppSession } from './helpers';\nimport config from '../config';\nimport fetchUserData from '../utils/fetchUserData';\n\nexport type FronteggAppProviderProps = PropsWithChildren<Omit<FronteggAppOptions, 'contextOptions'>>;\n\nexport const FronteggAppProvider = async (options: FronteggAppProviderProps) => {\n const appEnvConfig = config.appEnvConfig;\n const userData = await fetchUserData({ getSession: getAppSession, getHeaders: getAppHeaders });\n\n const providerProps = {\n ...appEnvConfig,\n ...userData,\n ...options,\n };\n\n return <ClientFronteggProvider {...providerProps} />;\n};\n"],"mappings":";;;;;;;;AAAA;AACA;AAEA;AACA;AACA;AAAmD;AAI5C,MAAMA,mBAAmB,GAAG,MAAOC,OAAiC,IAAK;EAC9E,MAAMC,YAAY,GAAGC,eAAM,CAACD,YAAY;EACxC,MAAME,QAAQ,GAAG,MAAM,IAAAC,sBAAa,EAAC;IAAEC,UAAU,EAAEC,sBAAa;IAAEC,UAAU,EAAEC;EAAc,CAAC,CAAC;EAE9F,MAAMC,aAAa,8BACdR,YAAY,EACZE,QAAQ,EACRH,OAAO,CACX;EAED,oBAAO,qBAAC,8CAAsB,6BAAKS,aAAa,EAAI;AACtD,CAAC;AAAC"}