@frontegg/nextjs 6.7.20 → 6.7.21-alpha.4441481917

This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
Files changed (259) hide show
  1. package/CHANGELOG.md +10 -0
  2. package/README.md +19 -37
  3. package/api/index.d.ts +19 -0
  4. package/api/index.js +78 -0
  5. package/api/index.js.map +1 -0
  6. package/api/package.json +6 -0
  7. package/api/urls.d.ts +33 -0
  8. package/api/urls.js +46 -0
  9. package/api/urls.js.map +1 -0
  10. package/api/utils.d.ts +46 -0
  11. package/api/utils.js +108 -0
  12. package/api/utils.js.map +1 -0
  13. package/app/ClientFronteggProvider.d.ts +3 -0
  14. package/app/ClientFronteggProvider.js +25 -0
  15. package/app/ClientFronteggProvider.js.map +1 -0
  16. package/app/FronteggAppProvider.d.ts +4 -0
  17. package/app/FronteggAppProvider.js +17 -0
  18. package/app/FronteggAppProvider.js.map +1 -0
  19. package/{client → app}/FronteggAppRouter.d.ts +11 -10
  20. package/app/FronteggAppRouter.js +31 -0
  21. package/app/FronteggAppRouter.js.map +1 -0
  22. package/app/helpers.d.ts +5 -0
  23. package/app/helpers.js +32 -0
  24. package/app/helpers.js.map +1 -0
  25. package/app/index.d.ts +4 -0
  26. package/app/index.js +4 -0
  27. package/app/index.js.map +1 -0
  28. package/app/package.json +6 -0
  29. package/common/{client/AppContext.d.ts → AppContext.d.ts} +4 -4
  30. package/common/AppContext.js +6 -0
  31. package/common/AppContext.js.map +1 -0
  32. package/{AuthorizedContent.d.ts → common/AuthorizedContent.d.ts} +9 -8
  33. package/common/AuthorizedContent.js +48 -0
  34. package/common/AuthorizedContent.js.map +1 -0
  35. package/common/{client/FronteggBaseProvider.d.ts → FronteggBaseProvider.d.ts} +3 -3
  36. package/common/FronteggBaseProvider.js +67 -0
  37. package/common/FronteggBaseProvider.js.map +1 -0
  38. package/common/FronteggRouterBase.d.ts +9 -0
  39. package/common/FronteggRouterBase.js +42 -0
  40. package/common/FronteggRouterBase.js.map +1 -0
  41. package/common/helpers.d.ts +3 -9
  42. package/common/helpers.js +24 -0
  43. package/common/helpers.js.map +1 -0
  44. package/common/index.d.ts +4 -6
  45. package/common/index.js +5 -10
  46. package/common/index.js.map +1 -1
  47. package/common/package.json +6 -0
  48. package/common/useRequestAuthorizeSSR.d.ts +5 -0
  49. package/common/useRequestAuthorizeSSR.js +24 -0
  50. package/common/useRequestAuthorizeSSR.js.map +1 -0
  51. package/config/constants.d.ts +57 -0
  52. package/config/constants.js +13 -0
  53. package/config/constants.js.map +1 -0
  54. package/config/helpers.d.ts +28 -0
  55. package/config/helpers.js +87 -0
  56. package/config/helpers.js.map +1 -0
  57. package/config/index.d.ts +24 -0
  58. package/config/index.js +82 -0
  59. package/config/index.js.map +1 -0
  60. package/config/package.json +6 -0
  61. package/config/types.d.ts +18 -0
  62. package/config/types.js +2 -0
  63. package/config/types.js.map +1 -0
  64. package/edge/getSessionOnEdge.d.ts +3 -2
  65. package/edge/getSessionOnEdge.js +8 -0
  66. package/edge/getSessionOnEdge.js.map +1 -0
  67. package/edge/index.d.ts +3 -2
  68. package/edge/index.js +4 -64
  69. package/edge/index.js.map +1 -1
  70. package/edge/package.json +6 -0
  71. package/edge/redirectToLogin.d.ts +2 -0
  72. package/edge/redirectToLogin.js +9 -0
  73. package/edge/redirectToLogin.js.map +1 -0
  74. package/edge/shouldBypassMiddleware.d.ts +21 -7
  75. package/edge/shouldBypassMiddleware.js +42 -0
  76. package/edge/shouldBypassMiddleware.js.map +1 -0
  77. package/index.d.ts +7 -11
  78. package/index.js +13 -1401
  79. package/index.js.map +1 -1
  80. package/middleware/FronteggApiMiddleware.d.ts +8 -0
  81. package/middleware/FronteggApiMiddleware.js +28 -0
  82. package/middleware/FronteggApiMiddleware.js.map +1 -0
  83. package/middleware/FronteggProxy.d.ts +4 -0
  84. package/middleware/FronteggProxy.js +24 -0
  85. package/middleware/FronteggProxy.js.map +1 -0
  86. package/middleware/ProxyRequestCallback.d.ts +13 -0
  87. package/middleware/ProxyRequestCallback.js +48 -0
  88. package/middleware/ProxyRequestCallback.js.map +1 -0
  89. package/middleware/ProxyResponseCallback.d.ts +13 -0
  90. package/middleware/ProxyResponseCallback.js +103 -0
  91. package/middleware/ProxyResponseCallback.js.map +1 -0
  92. package/middleware/constants.d.ts +8 -0
  93. package/middleware/constants.js +9 -0
  94. package/middleware/constants.js.map +1 -0
  95. package/{common/FronteggProxy.d.ts → middleware/helpers.d.ts} +13 -26
  96. package/middleware/helpers.js +35 -0
  97. package/middleware/helpers.js.map +1 -0
  98. package/middleware/index.d.ts +23 -0
  99. package/middleware/index.js +24 -0
  100. package/middleware/index.js.map +1 -0
  101. package/middleware/package.json +6 -0
  102. package/no-ssr/ExpireInListener.d.ts +2 -0
  103. package/no-ssr/ExpireInListener.js +22 -0
  104. package/no-ssr/ExpireInListener.js.map +1 -0
  105. package/{FronteggProviderNoSSR.d.ts → no-ssr/FronteggProviderNoSSR.d.ts} +4 -4
  106. package/no-ssr/FronteggProviderNoSSR.js +76 -0
  107. package/no-ssr/FronteggProviderNoSSR.js.map +1 -0
  108. package/no-ssr/index.d.ts +2 -0
  109. package/no-ssr/index.js +2 -0
  110. package/no-ssr/index.js.map +1 -0
  111. package/no-ssr/package.json +6 -0
  112. package/package.json +6 -7
  113. package/pages/FronteggPagesProvider/index.d.ts +4 -0
  114. package/pages/FronteggPagesProvider/index.js +24 -0
  115. package/pages/FronteggPagesProvider/index.js.map +1 -0
  116. package/pages/FronteggPagesProvider/package.json +6 -0
  117. package/{FronteggRouter.d.ts → pages/FronteggRouter/FronteggRouter.d.ts} +6 -5
  118. package/pages/FronteggRouter/FronteggRouter.js +38 -0
  119. package/pages/FronteggRouter/FronteggRouter.js.map +1 -0
  120. package/pages/FronteggRouter/index.d.ts +26 -0
  121. package/pages/FronteggRouter/index.js +27 -0
  122. package/pages/FronteggRouter/index.js.map +1 -0
  123. package/pages/FronteggRouter/package.json +6 -0
  124. package/{session.d.ts → pages/helpers.d.ts} +10 -10
  125. package/pages/helpers.js +31 -0
  126. package/pages/helpers.js.map +1 -0
  127. package/pages/index.d.ts +3 -0
  128. package/pages/index.js +4 -0
  129. package/pages/index.js.map +1 -0
  130. package/pages/package.json +6 -0
  131. package/pages/withFronteggApp/index.d.ts +2 -0
  132. package/pages/withFronteggApp/index.js +2 -0
  133. package/pages/withFronteggApp/index.js.map +1 -0
  134. package/pages/withFronteggApp/package.json +6 -0
  135. package/pages/withFronteggApp/types.d.ts +12 -0
  136. package/pages/withFronteggApp/types.js +2 -0
  137. package/pages/withFronteggApp/types.js.map +1 -0
  138. package/pages/withFronteggApp/withFronteggApp.d.ts +2 -0
  139. package/pages/withFronteggApp/withFronteggApp.js +62 -0
  140. package/pages/withFronteggApp/withFronteggApp.js.map +1 -0
  141. package/sdkVersion.d.ts +4 -4
  142. package/sdkVersion.js +4 -0
  143. package/sdkVersion.js.map +1 -0
  144. package/{common/types.d.ts → types/index.d.ts} +80 -74
  145. package/types/index.js +2 -0
  146. package/types/index.js.map +1 -0
  147. package/types/package.json +6 -0
  148. package/utils/common/constants.d.ts +12 -0
  149. package/utils/common/constants.js +14 -0
  150. package/utils/common/constants.js.map +1 -0
  151. package/utils/common/index.d.ts +15 -0
  152. package/utils/common/index.js +26 -0
  153. package/utils/common/index.js.map +1 -0
  154. package/utils/common/package.json +6 -0
  155. package/utils/cookies/constants.d.ts +7 -0
  156. package/utils/cookies/constants.js +8 -0
  157. package/utils/cookies/constants.js.map +1 -0
  158. package/utils/cookies/helpers.d.ts +25 -0
  159. package/utils/cookies/helpers.js +53 -0
  160. package/utils/cookies/helpers.js.map +1 -0
  161. package/utils/cookies/index.d.ts +45 -0
  162. package/utils/cookies/index.js +232 -0
  163. package/utils/cookies/index.js.map +1 -0
  164. package/utils/cookies/package.json +6 -0
  165. package/utils/cookies/serializer.d.ts +22 -0
  166. package/utils/cookies/serializer.js +154 -0
  167. package/utils/cookies/serializer.js.map +1 -0
  168. package/utils/cookies/types.d.ts +31 -0
  169. package/utils/cookies/types.js +2 -0
  170. package/utils/cookies/types.js.map +1 -0
  171. package/utils/createSession/index.d.ts +2 -0
  172. package/utils/createSession/index.js +44 -0
  173. package/utils/createSession/index.js.map +1 -0
  174. package/utils/createSession/package.json +6 -0
  175. package/utils/encryption/index.d.ts +3 -0
  176. package/utils/encryption/index.js +29 -0
  177. package/utils/encryption/index.js.map +1 -0
  178. package/utils/encryption/package.json +6 -0
  179. package/utils/encryption-edge/index.d.ts +3 -0
  180. package/utils/encryption-edge/index.js +29 -0
  181. package/utils/encryption-edge/index.js.map +1 -0
  182. package/utils/encryption-edge/package.json +6 -0
  183. package/utils/errors/FronteggEnvNotFound.d.ts +3 -0
  184. package/utils/errors/FronteggEnvNotFound.js +8 -0
  185. package/utils/errors/FronteggEnvNotFound.js.map +1 -0
  186. package/utils/errors/InvalidFronteggEnv.d.ts +3 -0
  187. package/utils/errors/InvalidFronteggEnv.js +8 -0
  188. package/utils/errors/InvalidFronteggEnv.js.map +1 -0
  189. package/utils/errors/index.d.ts +2 -0
  190. package/utils/errors/index.js +3 -0
  191. package/utils/errors/index.js.map +1 -0
  192. package/utils/errors/package.json +6 -0
  193. package/utils/fetchUserData/index.d.ts +7 -0
  194. package/utils/fetchUserData/index.js +49 -0
  195. package/utils/fetchUserData/index.js.map +1 -0
  196. package/utils/fetchUserData/package.json +6 -0
  197. package/utils/fronteggLogger/constants.d.ts +13 -0
  198. package/utils/fronteggLogger/constants.js +20 -0
  199. package/utils/fronteggLogger/constants.js.map +1 -0
  200. package/utils/fronteggLogger/index.d.ts +17 -0
  201. package/utils/fronteggLogger/index.js +61 -0
  202. package/utils/fronteggLogger/index.js.map +1 -0
  203. package/utils/fronteggLogger/package.json +6 -0
  204. package/{common/client/createOrGetFronteggApp.d.ts → utils/initializeFronteggApp/index.d.ts} +11 -11
  205. package/utils/initializeFronteggApp/index.js +100 -0
  206. package/utils/initializeFronteggApp/index.js.map +1 -0
  207. package/utils/initializeFronteggApp/package.json +6 -0
  208. package/utils/jwt/index.d.ts +22 -0
  209. package/utils/jwt/index.js +53 -0
  210. package/utils/jwt/index.js.map +1 -0
  211. package/utils/jwt/package.json +6 -0
  212. package/utils/refreshAccessToken/helpers.d.ts +16 -0
  213. package/utils/refreshAccessToken/helpers.js +69 -0
  214. package/utils/refreshAccessToken/helpers.js.map +1 -0
  215. package/utils/refreshAccessToken/index.d.ts +9 -0
  216. package/utils/refreshAccessToken/index.js +88 -0
  217. package/utils/refreshAccessToken/index.js.map +1 -0
  218. package/utils/refreshAccessToken/package.json +6 -0
  219. package/utils/routing/index.d.ts +5 -0
  220. package/utils/routing/index.js +23 -0
  221. package/utils/routing/index.js.map +1 -0
  222. package/utils/routing/package.json +6 -0
  223. package/utils/useOnRedirectTo/index.d.ts +5 -0
  224. package/utils/useOnRedirectTo/index.js +21 -0
  225. package/utils/useOnRedirectTo/index.js.map +1 -0
  226. package/utils/useOnRedirectTo/package.json +6 -0
  227. package/CookieManager-e50dc144.js +0 -322
  228. package/CookieManager-e50dc144.js.map +0 -1
  229. package/FronteggClientProviderNext13-b3c1e7a0.js +0 -158
  230. package/FronteggClientProviderNext13-b3c1e7a0.js.map +0 -1
  231. package/FronteggMiddleware.d.ts +0 -15
  232. package/FronteggProvider.d.ts +0 -3
  233. package/api-25516652.js +0 -58
  234. package/api-25516652.js.map +0 -1
  235. package/client/FronteggClientProviderNext13.d.ts +0 -3
  236. package/client/index.d.ts +0 -2
  237. package/client/index.js +0 -64
  238. package/client/index.js.map +0 -1
  239. package/common/CookieManager.d.ts +0 -41
  240. package/common/FronteggConfig.d.ts +0 -31
  241. package/common/api.d.ts +0 -3
  242. package/common/client/ExpireInListener.d.ts +0 -2
  243. package/common/client/hooks/index.d.ts +0 -1
  244. package/common/client/hooks/useRequestAuthorizeSSR.d.ts +0 -5
  245. package/common/client/index.d.ts +0 -4
  246. package/common/consts.d.ts +0 -6
  247. package/common/createGetSession.d.ts +0 -7
  248. package/common/utils.d.ts +0 -1
  249. package/createGetSession-2e1e4506.js +0 -50
  250. package/createGetSession-2e1e4506.js.map +0 -1
  251. package/helpers-dac37998.js +0 -88
  252. package/helpers-dac37998.js.map +0 -1
  253. package/refreshToken.d.ts +0 -3
  254. package/server/FronteggProviderNext13.d.ts +0 -3
  255. package/server/getSessionNext13.d.ts +0 -4
  256. package/server/index.d.ts +0 -2
  257. package/server/index.js +0 -84
  258. package/server/index.js.map +0 -1
  259. package/withFronteggApp.d.ts +0 -11
package/index.js CHANGED
@@ -1,1401 +1,13 @@
1
- 'use strict';
2
-
3
- Object.defineProperty(exports, '__esModule', { value: true });
4
-
5
- var tslib = require('tslib');
6
- var router = require('next/router');
7
- var React = require('react');
8
- var reactHooks = require('@frontegg/react-hooks');
9
- var restApi = require('@frontegg/rest-api');
10
- var js = require('@frontegg/js');
11
- var reduxStore = require('@frontegg/redux-store');
12
- var nextjsPkg = require('next/package.json');
13
- var jose = require('jose');
14
- var ironSession = require('iron-session');
15
- var cookie = require('cookie');
16
- var url = require('url');
17
- var httpProxy = require('http-proxy');
18
- var types = require('@frontegg/types');
19
-
20
- function _interopDefaultLegacy (e) { return e && typeof e === 'object' && 'default' in e ? e : { 'default': e }; }
21
-
22
- var React__default = /*#__PURE__*/_interopDefaultLegacy(React);
23
- var nextjsPkg__default = /*#__PURE__*/_interopDefaultLegacy(nextjsPkg);
24
- var cookie__default = /*#__PURE__*/_interopDefaultLegacy(cookie);
25
- var httpProxy__default = /*#__PURE__*/_interopDefaultLegacy(httpProxy);
26
-
27
- var AppContext = React.createContext(null);
28
-
29
- var sdkVersion = { version: '6.7.19' };
30
-
31
- var createOrGetFronteggApp = function (_a) {
32
- var _b, _c, _d, _e, _f, _g, _h, _j;
33
- var options = _a.options, onRedirectTo = _a.onRedirectTo, appName = _a.appName, storeHolder = _a.storeHolder;
34
- var session = options.session, user = options.user, tenants = options.tenants;
35
- var _k = session !== null && session !== void 0 ? session : {}, accessToken = _k.accessToken, refreshToken = _k.refreshToken;
36
- var contextOptions = tslib.__assign(tslib.__assign({ requestCredentials: 'include' }, options.contextOptions), { additionalHeadersResolver: function () { return tslib.__awaiter(void 0, void 0, void 0, function () {
37
- var additionalHeaders, originalAdditionalHeadersResolver, _a, _b, _c;
38
- var _d;
39
- return tslib.__generator(this, function (_e) {
40
- switch (_e.label) {
41
- case 0:
42
- additionalHeaders = [];
43
- originalAdditionalHeadersResolver = (_d = options.contextOptions) === null || _d === void 0 ? void 0 : _d.additionalHeadersResolver;
44
- if (!(typeof originalAdditionalHeadersResolver === 'function')) return [3 /*break*/, 5];
45
- _e.label = 1;
46
- case 1:
47
- _e.trys.push([1, 3, , 4]);
48
- _b = (_a = additionalHeaders.push).apply;
49
- _c = [additionalHeaders];
50
- return [4 /*yield*/, originalAdditionalHeadersResolver()];
51
- case 2:
52
- _b.apply(_a, _c.concat([(_e.sent())]));
53
- return [3 /*break*/, 4];
54
- case 3:
55
- _e.sent();
56
- return [3 /*break*/, 4];
57
- case 4: return [3 /*break*/, 6];
58
- case 5:
59
- if (Array.isArray(originalAdditionalHeadersResolver)) {
60
- additionalHeaders.push.apply(additionalHeaders, originalAdditionalHeadersResolver);
61
- }
62
- _e.label = 6;
63
- case 6:
64
- additionalHeaders.push({
65
- key: 'x-frontegg-framework',
66
- value: "next@".concat(nextjsPkg__default["default"].version),
67
- });
68
- additionalHeaders.push({
69
- key: 'x-frontegg-sdk',
70
- value: "@frontegg/nextjs@".concat(sdkVersion.version),
71
- });
72
- return [2 /*return*/, additionalHeaders];
73
- }
74
- });
75
- }); }, baseUrl: function (path) {
76
- if (path.endsWith('/oauth/logout')) {
77
- return "".concat(options.envAppUrl, "/api");
78
- }
79
- if (restApi.fronteggAuthApiRoutes.indexOf(path) !== -1 || path.endsWith('/postlogin') || path.endsWith('/prelogin')) {
80
- /**
81
- * Exclude social login redirects from nextjs middleware
82
- */
83
- if (RegExp('^/identity/resources/auth/v[0-9]*/user/sso/default/.*/prelogin$').test(path)) {
84
- return options.envBaseUrl;
85
- }
86
- return "".concat(options.envAppUrl, "/api");
87
- }
88
- else {
89
- return options.envBaseUrl;
90
- }
91
- }, clientId: options.envClientId });
92
- var tenantsState = tslib.__assign(tslib.__assign(tslib.__assign({}, reduxStore.tenantsState), { tenants: tenants || [] }), (_b = options.authOptions) === null || _b === void 0 ? void 0 : _b.tenantsState);
93
- var userData = user
94
- ? tslib.__assign(tslib.__assign(tslib.__assign({}, user), { accessToken: accessToken !== null && accessToken !== void 0 ? accessToken : '', refreshToken: refreshToken !== null && refreshToken !== void 0 ? refreshToken : undefined }), (_c = options.authOptions) === null || _c === void 0 ? void 0 : _c.user) : null;
95
- var authOptions = tslib.__assign(tslib.__assign({}, options.authOptions), { onRedirectTo: onRedirectTo, isLoading: false, isAuthenticated: !!options.session, hostedLoginBox: (_d = options.hostedLoginBox) !== null && _d !== void 0 ? _d : false, disableSilentRefresh: (_f = (_e = options.authOptions) === null || _e === void 0 ? void 0 : _e.disableSilentRefresh) !== null && _f !== void 0 ? _f : true, user: userData, tenantsState: tenantsState });
96
- var sharedStore = reduxStore.createFronteggStore({ context: contextOptions }, storeHolder, options.previewMode, authOptions, {
97
- auth: authOptions !== null && authOptions !== void 0 ? authOptions : {},
98
- audits: (_g = options.auditsOptions) !== null && _g !== void 0 ? _g : {},
99
- }, false, options.urlStrategy);
100
- var createdApp;
101
- try {
102
- createdApp = js.AppHolder.getInstance(appName !== null && appName !== void 0 ? appName : 'default');
103
- createdApp.store = sharedStore;
104
- }
105
- catch (e) {
106
- createdApp = js.initialize(tslib.__assign(tslib.__assign({}, options), { store: sharedStore, hostedLoginBox: (_h = options.hostedLoginBox) !== null && _h !== void 0 ? _h : false, customLoginBox: (_j = options.customLoginBox) !== null && _j !== void 0 ? _j : false, basename: options.basename, authOptions: authOptions, contextOptions: contextOptions, onRedirectTo: onRedirectTo }), appName !== null && appName !== void 0 ? appName : 'default');
107
- }
108
- return createdApp;
109
- };
110
-
111
- var useRequestAuthorizeSSR = function (_a) {
112
- var app = _a.app, user = _a.user, tenants = _a.tenants, session = _a.session;
113
- React.useEffect(function () {
114
- app === null || app === void 0 ? void 0 : app.store.dispatch({
115
- type: 'auth/requestAuthorizeSSR',
116
- payload: {
117
- accessToken: session === null || session === void 0 ? void 0 : session.accessToken,
118
- user: user ? tslib.__assign(tslib.__assign({}, user), { refreshToken: session === null || session === void 0 ? void 0 : session.refreshToken }) : null,
119
- tenants: tenants,
120
- },
121
- });
122
- }, [app]);
123
- };
124
-
125
- var Connector$1 = function (_a) {
126
- var _b;
127
- var router = _a.router, _c = _a.appName, appName = _c === void 0 ? 'default' : _c, props = tslib.__rest(_a, ["router", "appName"]);
128
- var isSSR = typeof window === 'undefined';
129
- var user = props.user, session = props.session, tenants = props.tenants;
130
- var baseName = (_b = props.basename) !== null && _b !== void 0 ? _b : '';
131
- var ssrStoreHolder = React.useRef({});
132
- var storeHolder = isSSR ? ssrStoreHolder.current : undefined;
133
- var onRedirectTo = React.useCallback(function (_path, opts) {
134
- var path = _path;
135
- if (path.startsWith(baseName)) {
136
- path = path.substring(baseName.length);
137
- }
138
- if (opts === null || opts === void 0 ? void 0 : opts.preserveQueryParams) {
139
- path = "".concat(path).concat(window.location.search);
140
- }
141
- if ((opts === null || opts === void 0 ? void 0 : opts.refresh) && !isSSR) {
142
- // @ts-ignore
143
- window.Cypress ? router.push(path) : (window.location.href = path);
144
- }
145
- else {
146
- (opts === null || opts === void 0 ? void 0 : opts.replace) ? router.replace(path) : router.push(path);
147
- }
148
- }, []);
149
- var app = React.useMemo(function () {
150
- return createOrGetFronteggApp({
151
- options: tslib.__assign(tslib.__assign({}, props), { basename: baseName }),
152
- onRedirectTo: onRedirectTo,
153
- appName: appName,
154
- storeHolder: storeHolder,
155
- });
156
- }, [props]);
157
- restApi.ContextHolder.setOnRedirectTo(onRedirectTo);
158
- useRequestAuthorizeSSR({ app: app, user: user, tenants: tenants, session: session });
159
- return (React__default["default"].createElement(AppContext.Provider, { value: app },
160
- React__default["default"].createElement(reactHooks.FronteggStoreProvider, tslib.__assign({}, tslib.__assign(tslib.__assign({}, props), { app: app })), props.children)));
161
- };
162
- var FronteggBaseProvider = function (props) {
163
- return (React__default["default"].createElement(Connector$1, tslib.__assign({}, props, { framework: 'nextjs' }), props.children));
164
- };
165
-
166
- var calculateExpiresInFromExp$1 = function (exp) { return Math.floor((exp * 1000 - Date.now()) / 1000); };
167
- var ExpireInListener = function () {
168
- var user = reactHooks.useAuthUserOrNull();
169
- var actions = reactHooks.useAuthActions();
170
- React.useEffect(function () {
171
- if (user && (user === null || user === void 0 ? void 0 : user.expiresIn) == null) {
172
- actions.setUser(tslib.__assign(tslib.__assign({}, user), { expiresIn: calculateExpiresInFromExp$1(user['exp']) }));
173
- }
174
- }, [actions, user]);
175
- // eslint-disable-next-line react/jsx-no-useless-fragment
176
- return React__default["default"].createElement(React__default["default"].Fragment, null);
177
- };
178
-
179
- var FronteggProvider = function (_a) {
180
- var children = _a.children, basename = _a.basename, props = tslib.__rest(_a, ["children", "basename"]);
181
- var router$1 = router.useRouter();
182
- var baseName = basename !== null && basename !== void 0 ? basename : router$1.basePath;
183
- return (React__default["default"].createElement(FronteggBaseProvider, tslib.__assign({ router: router$1, basename: baseName }, props), children));
184
- };
185
-
186
- var Connector = function (_props) {
187
- var _a;
188
- var router = _props.router, appName = _props.appName, hostedLoginBox = _props.hostedLoginBox; _props.customLoginBox; var props = tslib.__rest(_props, ["router", "appName", "hostedLoginBox", "customLoginBox"]);
189
- var isSSR = typeof window === 'undefined';
190
- var baseName = (_a = props.basename) !== null && _a !== void 0 ? _a : router.basePath;
191
- var onRedirectTo = React.useCallback(function (_path, opts) {
192
- var path = _path;
193
- if (path.startsWith(baseName)) {
194
- path = path.substring(baseName.length);
195
- }
196
- if (opts === null || opts === void 0 ? void 0 : opts.preserveQueryParams) {
197
- path = "".concat(path).concat(window.location.search);
198
- }
199
- if ((opts === null || opts === void 0 ? void 0 : opts.refresh) && !isSSR) {
200
- // @ts-ignore
201
- window.Cypress ? router.push(path) : (window.location.href = path);
202
- }
203
- else {
204
- (opts === null || opts === void 0 ? void 0 : opts.replace) ? router.replace(path) : router.push(path);
205
- }
206
- }, []);
207
- var app = React.useMemo(function () {
208
- var _a;
209
- var createdApp;
210
- try {
211
- createdApp = js.AppHolder.getInstance(appName !== null && appName !== void 0 ? appName : 'default');
212
- }
213
- catch (e) {
214
- createdApp = js.initialize(tslib.__assign(tslib.__assign({}, props), { hostedLoginBox: hostedLoginBox !== null && hostedLoginBox !== void 0 ? hostedLoginBox : false, basename: (_a = props.basename) !== null && _a !== void 0 ? _a : baseName, authOptions: tslib.__assign(tslib.__assign({}, props.authOptions), { onRedirectTo: onRedirectTo }), contextOptions: tslib.__assign({ requestCredentials: 'include' }, props.contextOptions), onRedirectTo: onRedirectTo }), appName !== null && appName !== void 0 ? appName : 'default');
215
- }
216
- return createdApp;
217
- }, [appName, props, hostedLoginBox, baseName, onRedirectTo]);
218
- restApi.ContextHolder.setOnRedirectTo(onRedirectTo);
219
- React.useEffect(function () {
220
- app.store.dispatch({ type: 'auth/requestAuthorize', payload: true });
221
- }, [app]);
222
- return (React__default["default"].createElement(AppContext.Provider, { value: app },
223
- React__default["default"].createElement(reactHooks.FronteggStoreProvider, tslib.__assign({}, tslib.__assign(tslib.__assign({}, props), { app: app })), props.children)));
224
- };
225
- var FronteggNextJSProvider = function (props) {
226
- var router$1 = router.useRouter();
227
- return (React__default["default"].createElement(Connector, tslib.__assign({}, props, { router: router$1 }),
228
- React__default["default"].createElement(ExpireInListener, null),
229
- props.children));
230
- };
231
- var FronteggProviderNoSSR = function (props) {
232
- return (React__default["default"].createElement(FronteggNextJSProvider, tslib.__assign({}, props, { framework: 'nextjs' }), props.children));
233
- };
234
-
235
- var AuthorizedContent = function (props) {
236
- var _a, _b;
237
- var isAuthorized = true; // Initially
238
- var user = reactHooks.useAuthUserOrNull();
239
- if (!(user === null || user === void 0 ? void 0 : user.superUser)) {
240
- if (props.requiredPermissions) {
241
- if (!(user === null || user === void 0 ? void 0 : user.permissions) || (user === null || user === void 0 ? void 0 : user.permissions.length) === 0) {
242
- isAuthorized = false;
243
- }
244
- var _loop_1 = function (permission) {
245
- if (!((_a = user === null || user === void 0 ? void 0 : user.permissions) === null || _a === void 0 ? void 0 : _a.find(function (_a) {
246
- var key = _a.key;
247
- return key === permission;
248
- }))) {
249
- isAuthorized = false;
250
- }
251
- };
252
- for (var _i = 0, _c = props.requiredPermissions; _i < _c.length; _i++) {
253
- var permission = _c[_i];
254
- _loop_1(permission);
255
- }
256
- }
257
- if (props.requiredRoles) {
258
- if (!(user === null || user === void 0 ? void 0 : user.roles) || (user === null || user === void 0 ? void 0 : user.roles.length) === 0) {
259
- isAuthorized = false;
260
- }
261
- var _loop_2 = function (role) {
262
- if (!((_b = user === null || user === void 0 ? void 0 : user.roles) === null || _b === void 0 ? void 0 : _b.find(function (_a) {
263
- var key = _a.key;
264
- return key === role;
265
- }))) {
266
- isAuthorized = false;
267
- }
268
- };
269
- for (var _d = 0, _e = props.requiredRoles; _d < _e.length; _d++) {
270
- var role = _e[_d];
271
- _loop_2(role);
272
- }
273
- }
274
- }
275
- if (typeof props.render === 'function') {
276
- return React__default["default"].createElement(React__default["default"].Fragment, null, props.render(isAuthorized));
277
- }
278
- return isAuthorized ? React__default["default"].createElement(React__default["default"].Fragment, null, props.children) : null;
279
- };
280
-
281
- function normalizeStringPasswordToMap(password) {
282
- return typeof password === 'string' ? { 1: password } : password;
283
- }
284
- var FronteggConfig = /** @class */ (function () {
285
- function FronteggConfig() {
286
- var _a, _b, _c;
287
- this.authRoutes = {};
288
- this.fronteggAppOptions = {};
289
- this._clientId = (_a = process.env['FRONTEGG_CLIENT_ID']) !== null && _a !== void 0 ? _a : '';
290
- this._cookieName = (_b = process.env['FRONTEGG_COOKIE_NAME']) !== null && _b !== void 0 ? _b : "fe_next_session";
291
- this._password = (_c = process.env['FRONTEGG_ENCRYPTION_PASSWORD']) !== null && _c !== void 0 ? _c : '';
292
- this._passwordsAsMap = normalizeStringPasswordToMap(this._password);
293
- }
294
- Object.defineProperty(FronteggConfig.prototype, "cookieName", {
295
- get: function () {
296
- return "".concat(this._cookieName, "-").concat(this._clientId.replace(/-/g, ''));
297
- },
298
- enumerable: false,
299
- configurable: true
300
- });
301
- Object.defineProperty(FronteggConfig.prototype, "password", {
302
- get: function () {
303
- return this._password;
304
- },
305
- enumerable: false,
306
- configurable: true
307
- });
308
- Object.defineProperty(FronteggConfig.prototype, "clientId", {
309
- get: function () {
310
- return this._clientId;
311
- },
312
- enumerable: false,
313
- configurable: true
314
- });
315
- Object.defineProperty(FronteggConfig.prototype, "baseUrlHost", {
316
- get: function () {
317
- var _a;
318
- return new URL((_a = process.env['FRONTEGG_BASE_URL']) !== null && _a !== void 0 ? _a : '').hostname;
319
- },
320
- enumerable: false,
321
- configurable: true
322
- });
323
- FronteggConfig.prototype.getEnvAppUrl = function () {
324
- var url = undefined;
325
- if (process.env['FRONTEGG_APP_URL']) {
326
- url = process.env['FRONTEGG_APP_URL'];
327
- }
328
- else if (process.env['VERCEL'] && process.env['VERCEL_URL']) {
329
- url = process.env['VERCEL_URL'];
330
- }
331
- if (url && !url.startsWith('http')) {
332
- var protocol = url.startsWith('localhost') ? 'http://' : 'https://';
333
- url = "".concat(protocol).concat(url);
334
- }
335
- return url;
336
- };
337
- Object.defineProperty(FronteggConfig.prototype, "appUrl", {
338
- get: function () {
339
- var _a;
340
- return (_a = this.getEnvAppUrl()) !== null && _a !== void 0 ? _a : 'http://localhost:3000';
341
- },
342
- enumerable: false,
343
- configurable: true
344
- });
345
- Object.defineProperty(FronteggConfig.prototype, "appEnvConfig", {
346
- get: function () {
347
- return {
348
- envAppUrl: this.getEnvAppUrl(),
349
- envBaseUrl: process.env['FRONTEGG_BASE_URL'],
350
- envClientId: process.env['FRONTEGG_CLIENT_ID'],
351
- };
352
- },
353
- enumerable: false,
354
- configurable: true
355
- });
356
- Object.defineProperty(FronteggConfig.prototype, "cookieDomain", {
357
- get: function () {
358
- var _a;
359
- return new URL((_a = this.getEnvAppUrl()) !== null && _a !== void 0 ? _a : '').hostname.replace(/:(\d)+$/, '');
360
- },
361
- enumerable: false,
362
- configurable: true
363
- });
364
- FronteggConfig.prototype.getJwtPublicKey = function () {
365
- return tslib.__awaiter(this, void 0, void 0, function () {
366
- var response, data, publicKey, _a;
367
- return tslib.__generator(this, function (_b) {
368
- switch (_b.label) {
369
- case 0:
370
- if (!!this._jwtPublicKey) return [3 /*break*/, 4];
371
- return [4 /*yield*/, fetch("".concat(process.env['FRONTEGG_BASE_URL'], "/.well-known/jwks.json"))];
372
- case 1:
373
- response = _b.sent();
374
- return [4 /*yield*/, response.json()];
375
- case 2:
376
- data = _b.sent();
377
- publicKey = data.keys[0];
378
- _a = this;
379
- return [4 /*yield*/, jose.importJWK(publicKey, publicKey.alg)];
380
- case 3:
381
- _a._jwtPublicKey = _b.sent();
382
- _b.label = 4;
383
- case 4: return [2 /*return*/, this._jwtPublicKey];
384
- }
385
- });
386
- });
387
- };
388
- Object.defineProperty(FronteggConfig.prototype, "passwordsAsMap", {
389
- get: function () {
390
- return this._passwordsAsMap;
391
- },
392
- enumerable: false,
393
- configurable: true
394
- });
395
- return FronteggConfig;
396
- }());
397
- var fronteggConfig = new FronteggConfig();
398
-
399
- var BASE_URL = "".concat(process.env['FRONTEGG_BASE_URL'], "/frontegg");
400
- var Get = function (_a) {
401
- var url = _a.url, _b = _a.credentials, credentials = _b === void 0 ? 'include' : _b, headers = _a.headers;
402
- return fetch(url, { method: 'GET', credentials: credentials, headers: headers });
403
- };
404
- var extractHeaders = function (headers) { return ({
405
- 'accept-encoding': headers['accept-encoding'],
406
- 'accept-language': headers['accept-language'],
407
- cookie: headers['cookie'],
408
- accept: headers['accept'],
409
- 'user-agent': headers['user-agent'],
410
- // connection: headers['connection'],
411
- 'cache-control': headers['cache-control'],
412
- Authorization: headers['Authorization'],
413
- }); };
414
- var parseResponse = function (res) { return tslib.__awaiter(void 0, void 0, void 0, function () {
415
- var resText;
416
- return tslib.__generator(this, function (_a) {
417
- switch (_a.label) {
418
- case 0:
419
- if (!res.ok) {
420
- return [2 /*return*/, undefined];
421
- }
422
- return [4 /*yield*/, res.text()];
423
- case 1:
424
- resText = _a.sent();
425
- return [2 /*return*/, JSON.parse(resText)];
426
- }
427
- });
428
- }); };
429
- var getUsers = function (headers) { return tslib.__awaiter(void 0, void 0, void 0, function () {
430
- var res;
431
- return tslib.__generator(this, function (_a) {
432
- switch (_a.label) {
433
- case 0: return [4 /*yield*/, Get({ url: "".concat(BASE_URL).concat(restApi.fronteggUsersUrl), headers: extractHeaders(headers) })];
434
- case 1:
435
- res = _a.sent();
436
- return [2 /*return*/, parseResponse(res)];
437
- }
438
- });
439
- }); };
440
- var getTenants = function (headers) { return tslib.__awaiter(void 0, void 0, void 0, function () {
441
- var res;
442
- return tslib.__generator(this, function (_a) {
443
- switch (_a.label) {
444
- case 0: return [4 /*yield*/, Get({ url: "".concat(BASE_URL).concat(restApi.fronteggTenantsUrl), headers: extractHeaders(headers) })];
445
- case 1:
446
- res = _a.sent();
447
- return [2 /*return*/, parseResponse(res)];
448
- }
449
- });
450
- }); };
451
-
452
- var calculateExpiresInFromExp = function (exp) { return Math.floor((exp * 1000 - Date.now()) / 1000); };
453
- function createSessionFromAccessToken(data) {
454
- var _a, _b;
455
- return tslib.__awaiter(this, void 0, void 0, function () {
456
- var accessToken, refreshToken, publicKey, decodedJwt, stringifySession, session;
457
- return tslib.__generator(this, function (_c) {
458
- switch (_c.label) {
459
- case 0:
460
- accessToken = (_a = data.accessToken) !== null && _a !== void 0 ? _a : data.access_token;
461
- refreshToken = (_b = data.refreshToken) !== null && _b !== void 0 ? _b : data.refresh_token;
462
- return [4 /*yield*/, fronteggConfig.getJwtPublicKey()];
463
- case 1:
464
- publicKey = _c.sent();
465
- return [4 /*yield*/, jose.jwtVerify(accessToken, publicKey)];
466
- case 2:
467
- decodedJwt = (_c.sent()).payload;
468
- decodedJwt.expiresIn = Math.floor((decodedJwt.exp * 1000 - Date.now()) / 1000);
469
- stringifySession = JSON.stringify({ accessToken: accessToken, refreshToken: refreshToken });
470
- return [4 /*yield*/, ironSession.sealData(stringifySession, {
471
- password: fronteggConfig.passwordsAsMap,
472
- ttl: decodedJwt.exp,
473
- })];
474
- case 3:
475
- session = _c.sent();
476
- return [2 /*return*/, [session, decodedJwt, refreshToken]];
477
- }
478
- });
479
- });
480
- }
481
- function getTokensFromCookie(cookie) {
482
- return tslib.__awaiter(this, void 0, void 0, function () {
483
- var stringifyJwt;
484
- return tslib.__generator(this, function (_a) {
485
- switch (_a.label) {
486
- case 0:
487
- if (!cookie) {
488
- return [2 /*return*/, undefined];
489
- }
490
- return [4 /*yield*/, ironSession.unsealData(cookie, {
491
- password: fronteggConfig.passwordsAsMap,
492
- })];
493
- case 1:
494
- stringifyJwt = _a.sent();
495
- return [2 /*return*/, JSON.parse(stringifyJwt)];
496
- }
497
- });
498
- });
499
- }
500
- var getAllUserData = function (_a) {
501
- var getSession = _a.getSession, reqHeaders = _a.reqHeaders;
502
- return tslib.__awaiter(void 0, void 0, void 0, function () {
503
- var session, headers, _b, baseUser, tenants, user, e_1;
504
- return tslib.__generator(this, function (_c) {
505
- switch (_c.label) {
506
- case 0:
507
- _c.trys.push([0, 3, , 4]);
508
- return [4 /*yield*/, getSession()];
509
- case 1:
510
- session = _c.sent();
511
- if (!session)
512
- return [2 /*return*/, {}];
513
- headers = tslib.__assign(tslib.__assign({}, reqHeaders), { Authorization: "Bearer ".concat(session.accessToken) });
514
- return [4 /*yield*/, Promise.all([getUsers(headers), getTenants(headers)])];
515
- case 2:
516
- _b = _c.sent(), baseUser = _b[0], tenants = _b[1];
517
- if (!baseUser || !tenants)
518
- return [2 /*return*/, {}];
519
- user = baseUser && session
520
- ? tslib.__assign(tslib.__assign(tslib.__assign({}, session.user), baseUser), { expiresIn: calculateExpiresInFromExp(session.user.exp) }) : undefined;
521
- return [2 /*return*/, { user: user, session: session, tenants: tenants }];
522
- case 3:
523
- e_1 = _c.sent();
524
- console.error(e_1);
525
- return [2 /*return*/, {}];
526
- case 4: return [2 /*return*/];
527
- }
528
- });
529
- });
530
- };
531
-
532
- var createGetSession = function (_a) {
533
- var getCookie = _a.getCookie, cookieResolver = _a.cookieResolver;
534
- return tslib.__awaiter(void 0, void 0, void 0, function () {
535
- var cookie, tokens, accessToken, refreshToken, publicKey, payload, session, e_1;
536
- return tslib.__generator(this, function (_b) {
537
- switch (_b.label) {
538
- case 0:
539
- _b.trys.push([0, 4, , 5]);
540
- cookie = getCookie();
541
- if (!cookie) {
542
- return [2 /*return*/, undefined];
543
- }
544
- return [4 /*yield*/, cookieResolver(cookie)];
545
- case 1:
546
- tokens = _b.sent();
547
- if (!(tokens === null || tokens === void 0 ? void 0 : tokens.accessToken)) {
548
- return [2 /*return*/, undefined];
549
- }
550
- accessToken = tokens.accessToken, refreshToken = tokens.refreshToken;
551
- return [4 /*yield*/, fronteggConfig.getJwtPublicKey()];
552
- case 2:
553
- publicKey = _b.sent();
554
- return [4 /*yield*/, jose.jwtVerify(accessToken, publicKey)];
555
- case 3:
556
- payload = (_b.sent()).payload;
557
- session = {
558
- accessToken: accessToken,
559
- user: payload,
560
- refreshToken: refreshToken,
561
- };
562
- if (session.user.exp * 1000 < Date.now()) {
563
- return [2 /*return*/, undefined];
564
- }
565
- return [2 /*return*/, session];
566
- case 4:
567
- e_1 = _b.sent();
568
- console.error(e_1);
569
- return [2 /*return*/, undefined];
570
- case 5: return [2 /*return*/];
571
- }
572
- });
573
- });
574
- };
575
-
576
- var envError = function (varName) { return "@frontegg/nextjs: .env.local must contain ".concat(varName); };
577
- var fronteggErrors = {
578
- envAppUrl: envError('FRONTEGG_APP_URL'),
579
- envBaseUrl: envError('FRONTEGG_BASE_URL'),
580
- envClientId: envError('FRONTEGG_CLIENT_ID'),
581
- };
582
- var COOKIE_MAX_LENGTH = 4092;
583
-
584
- function chunkString(str, chunkSize) {
585
- var numChunks = Math.ceil(str.length / chunkSize);
586
- var chunks = [];
587
- for (var i = 0; i < numChunks; i++) {
588
- var start = i * chunkSize;
589
- var end = start + chunkSize;
590
- chunks.push(str.substring(start, end < str.length ? end : str.length));
591
- }
592
- return chunks;
593
- }
594
-
595
- var CookieManager = /** @class */ (function () {
596
- function CookieManager() {
597
- var _this = this;
598
- this.getCookieName = function (cookieNumber, cookieName) {
599
- if (cookieName === void 0) { cookieName = fronteggConfig.cookieName; }
600
- return cookieNumber ? "".concat(cookieName, "-").concat(cookieNumber) : cookieName;
601
- };
602
- this.mapValueChunksToCookies = function (cookieName, valueChunks, options) {
603
- return valueChunks.map(function (chunk, index) { return cookie__default["default"].serialize(_this.getCookieName(index + 1, cookieName), chunk, options) + ';'; });
604
- };
605
- this.getCookieStringFromRequest = function (req) {
606
- return 'credentials' in req ? req.headers.get('cookie') || '' : req.headers.cookie || '';
607
- };
608
- this.createEmptySingleCookie = function (cookieName, isSecured, cookieDomain) {
609
- return _this.createCookie({ cookieName: cookieName, value: '', expires: new Date(), isSecured: isSecured, cookieDomain: cookieDomain });
610
- };
611
- this.createEmptyCookies = function (isSecured, cookieDomain, cookiesToRemove) {
612
- var allEmptyCookies = [];
613
- cookiesToRemove.forEach(function (name) {
614
- allEmptyCookies.push.apply(allEmptyCookies, _this.createEmptySingleCookie(name, isSecured, cookieDomain));
615
- });
616
- // TODO: remove replace in the next major v7
617
- var fixedRefreshToken = _this.createEmptySingleCookie("fe_refresh_".concat(fronteggConfig.clientId), isSecured, cookieDomain);
618
- var refreshTokenCookie = _this.createEmptySingleCookie("fe_refresh_".concat(fronteggConfig.clientId.replace('-', '')), isSecured, cookieDomain);
619
- var solidRefreshTokenCookie = _this.createEmptySingleCookie("fe_refresh_".concat(fronteggConfig.clientId.replace(/-/g, '')), isSecured, cookieDomain);
620
- var refreshTokenCookies = tslib.__spreadArray(tslib.__spreadArray(tslib.__spreadArray([], fixedRefreshToken, true), refreshTokenCookie, true), solidRefreshTokenCookie, true);
621
- allEmptyCookies.push.apply(allEmptyCookies, refreshTokenCookies);
622
- return allEmptyCookies;
623
- };
624
- this.getCookiesToRemove = function (req) {
625
- if (!req) {
626
- return [];
627
- }
628
- try {
629
- var cookieStr = _this.getCookieStringFromRequest(req);
630
- var cookies = cookieStr && cookie__default["default"].parse(cookieStr);
631
- if (!cookies) {
632
- return [];
633
- }
634
- var cookieNumber = 1;
635
- var cookieToRemove = [];
636
- while (cookies[_this.getCookieName(cookieNumber)]) {
637
- cookieToRemove.push(_this.getCookieName(cookieNumber));
638
- cookieNumber++;
639
- }
640
- return cookieToRemove;
641
- }
642
- catch (e) {
643
- console.error(e);
644
- return [];
645
- }
646
- };
647
- this.modifySetCookie = function (setCookieValue, isSecured) {
648
- if (!setCookieValue) {
649
- return setCookieValue;
650
- }
651
- if (setCookieValue.length > 0) {
652
- return setCookieValue.map(function (c) {
653
- var cookie = c.split('; ');
654
- if (!isSecured) {
655
- cookie = cookie.filter(function (property) { return property !== 'Secure' && property !== 'SameSite=None'; });
656
- }
657
- return (cookie
658
- .map(function (property) {
659
- if (property.toLowerCase() === "domain=".concat(fronteggConfig.baseUrlHost)) {
660
- return "Domain=".concat(fronteggConfig.cookieDomain);
661
- }
662
- return property;
663
- })
664
- .join(';') + ';');
665
- });
666
- }
667
- return setCookieValue;
668
- };
669
- }
670
- CookieManager.prototype.rewriteCookieProperty = function (header, config, property) {
671
- var _this = this;
672
- if (Array.isArray(header)) {
673
- return header.map(function (headerElement) {
674
- return _this.rewriteCookieProperty(headerElement, config, property);
675
- });
676
- }
677
- return header.replace(new RegExp('(;\\s*' + property + '=)([^;]+)', 'i'), function (match, prefix, previousValue) {
678
- var newValue;
679
- if (previousValue in config) {
680
- newValue = config[previousValue];
681
- }
682
- else if ('*' in config) {
683
- newValue = config['*'];
684
- }
685
- else {
686
- // no match, return previous value
687
- return match;
688
- }
689
- if (newValue) {
690
- // replace value
691
- return prefix + newValue;
692
- }
693
- else {
694
- // remove value
695
- return '';
696
- }
697
- });
698
- };
699
- CookieManager.prototype.createCookie = function (_a) {
700
- var cookieName = _a.cookieName, value = _a.value, expires = _a.expires, isSecured = _a.isSecured, _b = _a.cookieDomain, cookieDomain = _b === void 0 ? fronteggConfig.cookieDomain : _b, _c = _a.httpOnly, httpOnly = _c === void 0 ? true : _c, _d = _a.path, path = _d === void 0 ? '/' : _d;
701
- var options = {
702
- expires: expires,
703
- httpOnly: httpOnly,
704
- domain: cookieDomain,
705
- path: path,
706
- sameSite: isSecured ? 'none' : undefined,
707
- secure: isSecured,
708
- };
709
- var cookieValue = cookie__default["default"].serialize(cookieName !== null && cookieName !== void 0 ? cookieName : this.getCookieName(1), value, options);
710
- if (cookieValue.length <= COOKIE_MAX_LENGTH) {
711
- return [cookieValue];
712
- }
713
- var valueChunks = this.splitValueToChunks(cookieName, value, options);
714
- return this.mapValueChunksToCookies(cookieName, valueChunks, options);
715
- };
716
- CookieManager.prototype.splitValueToChunks = function (cookieName, value, options) {
717
- var cookieOptionLength = cookie__default["default"].serialize(this.getCookieName(1, cookieName), '', options).length;
718
- var chunkSize = COOKIE_MAX_LENGTH - cookieOptionLength - 1;
719
- return chunkString(value, chunkSize);
720
- };
721
- CookieManager.prototype.getParsedCookieFromRequest = function (req) {
722
- if (!req) {
723
- return undefined;
724
- }
725
- var cookieStr = this.getCookieStringFromRequest(req);
726
- return this.parseCookie(cookieStr);
727
- };
728
- CookieManager.prototype.parseCookie = function (cookieStr) {
729
- var cookies = cookie__default["default"].parse(cookieStr);
730
- var sealFromCookies = '';
731
- var i = 1;
732
- while (cookies[this.getCookieName(i)]) {
733
- sealFromCookies += cookies[this.getCookieName(i)];
734
- i++;
735
- }
736
- return sealFromCookies !== '' ? sealFromCookies : undefined;
737
- };
738
- CookieManager.prototype.parseCookieFromArray = function (cookies) {
739
- var _this = this;
740
- var cookieChunks = cookies.filter(function (c) { return c.name.includes(_this.getCookieName()); });
741
- if (!cookieChunks) {
742
- return undefined;
743
- }
744
- cookieChunks.sort(function (a, b) {
745
- var firstCookieNumber = parseInt(a.name.slice(-1));
746
- var secondCookieNumber = parseInt(b.name.slice(-1));
747
- return firstCookieNumber > secondCookieNumber ? 1 : -1;
748
- });
749
- return cookieChunks.map(function (c) { return c.value; }).join('');
750
- };
751
- CookieManager.prototype.addToCookies = function (newCookies, res) {
752
- var _a;
753
- var existingSetCookie = (_a = res.getHeader('set-cookie')) !== null && _a !== void 0 ? _a : [];
754
- if (typeof existingSetCookie === 'string') {
755
- existingSetCookie = [existingSetCookie];
756
- }
757
- res.setHeader('set-cookie', tslib.__spreadArray(tslib.__spreadArray([], existingSetCookie, true), newCookies, true));
758
- };
759
- CookieManager.prototype.removeCookies = function (_a) {
760
- var _b;
761
- var cookieNames = _a.cookieNames, isSecured = _a.isSecured, cookieDomain = _a.cookieDomain, res = _a.res, req = _a.req;
762
- var cookiesToRemove = this.getCookiesToRemove(req);
763
- var cookieValue = this.createEmptyCookies(isSecured, cookieDomain, cookieNames !== null && cookieNames !== void 0 ? cookieNames : cookiesToRemove);
764
- var existingSetCookie = (_b = res.getHeader('set-cookie')) !== null && _b !== void 0 ? _b : [];
765
- if (typeof existingSetCookie === 'string') {
766
- existingSetCookie = [existingSetCookie];
767
- }
768
- res.setHeader('set-cookie', tslib.__spreadArray(tslib.__spreadArray([], existingSetCookie, true), cookieValue, true));
769
- };
770
- return CookieManager;
771
- }());
772
- var CookieManager$1 = new CookieManager();
773
-
774
- function FronteggRouter() {
775
- var app = React.useContext(AppContext);
776
- var _a = router.useRouter(), query = _a.query, replace = _a.replace;
777
- var loginWithRedirect = reactHooks.useLoginWithRedirect();
778
- var logout = reactHooks.useLoginActions().logout;
779
- React.useEffect(function () {
780
- if (!app) {
781
- return;
782
- }
783
- if (app.options.hostedLoginBox) {
784
- var routesObj = tslib.__assign(tslib.__assign({}, reduxStore.authInitialState.routes), fronteggConfig.authRoutes);
785
- var _a = query, pathArr = _a["frontegg-router"], queryParams = tslib.__rest(_a, ['frontegg-router']);
786
- var pathname = "/".concat(pathArr.join('/'));
787
- if (pathname === routesObj.loginUrl) {
788
- if (queryParams.redirectUrl) {
789
- localStorage.setItem('FRONTEGG_AFTER_AUTH_REDIRECT_URL', "".concat(window.location.origin).concat(queryParams.redirectUrl));
790
- }
791
- loginWithRedirect();
792
- }
793
- else if (pathname === routesObj.logoutUrl) {
794
- var _baseUrl = app.options.contextOptions.baseUrl;
795
- var baseUrl_1 = typeof _baseUrl === 'string' ? _baseUrl : _baseUrl('');
796
- logout(function () {
797
- window.location.href = "".concat(baseUrl_1, "/oauth/logout?post_logout_redirect_uri=").concat(encodeURIComponent(window.location.origin));
798
- });
799
- }
800
- }
801
- }, [app, query, loginWithRedirect, logout, replace]);
802
- return '';
803
- }
804
- function FronteggRouterProps(context) {
805
- var _a;
806
- var routesObj = tslib.__assign(tslib.__assign({}, reduxStore.authInitialState.routes), fronteggConfig.authRoutes);
807
- var routesArr = Object.keys(routesObj).reduce(function (p, key) { return tslib.__spreadArray(tslib.__spreadArray([], p, true), [routesObj[key]], false); }, []);
808
- var pathname = url.parse((_a = context.resolvedUrl) !== null && _a !== void 0 ? _a : context.req.url, true).pathname;
809
- if (!pathname || pathname.startsWith('/_next/data')) {
810
- var query = context.req.query[Object.keys(context.req.query)[0]];
811
- pathname = "/".concat(Array.isArray(query) ? query.join('/') : query);
812
- }
813
- var notFound = routesArr.indexOf(pathname) === -1;
814
- if (fronteggConfig.fronteggAppOptions.hostedLoginBox) {
815
- var notFound_1 = !(routesObj.loginUrl === pathname ||
816
- routesObj.logoutUrl === pathname ||
817
- routesObj.hostedLoginRedirectUrl === pathname);
818
- return { notFound: notFound_1, props: {} };
819
- }
820
- return {
821
- notFound: notFound,
822
- props: {},
823
- };
824
- }
825
-
826
- function getTokensFromCookieOnEdge(cookie) {
827
- return tslib.__awaiter(this, void 0, void 0, function () {
828
- var jwt;
829
- return tslib.__generator(this, function (_a) {
830
- switch (_a.label) {
831
- case 0: return [4 /*yield*/, ironSession.unsealData(cookie, {
832
- password: fronteggConfig.passwordsAsMap,
833
- })];
834
- case 1:
835
- jwt = _a.sent();
836
- return [2 /*return*/, JSON.parse(jwt)];
837
- }
838
- });
839
- });
840
- }
841
- function refreshTokenHostedLogin(ctx, headers) {
842
- return tslib.__awaiter(this, void 0, void 0, function () {
843
- var sealFromCookies, tokens, e_1;
844
- return tslib.__generator(this, function (_a) {
845
- switch (_a.label) {
846
- case 0:
847
- _a.trys.push([0, 3, , 4]);
848
- sealFromCookies = CookieManager$1.getParsedCookieFromRequest(ctx === null || ctx === void 0 ? void 0 : ctx.req);
849
- return [4 /*yield*/, getTokensFromCookie(sealFromCookies)];
850
- case 1:
851
- tokens = _a.sent();
852
- if (!(tokens === null || tokens === void 0 ? void 0 : tokens.refreshToken)) {
853
- return [2 /*return*/, null];
854
- }
855
- return [4 /*yield*/, fetch("".concat(process.env['FRONTEGG_BASE_URL'], "/frontegg/oauth/token"), {
856
- method: 'POST',
857
- credentials: 'include',
858
- body: JSON.stringify({
859
- grant_type: 'refresh_token',
860
- refresh_token: tokens.refreshToken,
861
- }),
862
- headers: {
863
- 'accept-encoding': headers['accept-encoding'],
864
- 'accept-language': headers['accept-language'],
865
- accept: headers['accept'],
866
- 'content-type': 'application/json',
867
- origin: headers['origin'],
868
- 'user-agent': headers['user-agent'],
869
- connection: headers['connection'],
870
- 'cache-control': headers['cache-control'],
871
- 'x-frontegg-framework': "next@".concat(nextjsPkg__default["default"].version),
872
- 'x-frontegg-sdk': "@frontegg/nextjs@".concat(sdkVersion.version),
873
- },
874
- })];
875
- case 2: return [2 /*return*/, _a.sent()];
876
- case 3:
877
- e_1 = _a.sent();
878
- console.error('refreshTokenHostedLogin', e_1);
879
- return [2 /*return*/, null];
880
- case 4: return [2 /*return*/];
881
- }
882
- });
883
- });
884
- }
885
- function refreshTokenEmbedded(ctx, headers, cookies) {
886
- return tslib.__awaiter(this, void 0, void 0, function () {
887
- var refreshTokenKey, cookieKey;
888
- return tslib.__generator(this, function (_a) {
889
- switch (_a.label) {
890
- case 0:
891
- refreshTokenKey = "fe_refresh_".concat(fronteggConfig.clientId).replace(/-/g, '');
892
- cookieKey = Object.keys(cookies).find(function (cookie) {
893
- return cookie.replace(/-/g, '') === refreshTokenKey;
894
- });
895
- if (!cookieKey) {
896
- return [2 /*return*/, null];
897
- }
898
- return [4 /*yield*/, fetch("".concat(process.env['FRONTEGG_BASE_URL'], "/frontegg").concat(restApi.fronteggRefreshTokenUrl), {
899
- method: 'POST',
900
- credentials: 'include',
901
- body: '{}',
902
- headers: {
903
- 'accept-encoding': headers['accept-encoding'],
904
- 'accept-language': headers['accept-language'],
905
- cookie: headers['cookie'],
906
- accept: headers['accept'],
907
- 'user-agent': headers['user-agent'],
908
- connection: headers['connection'],
909
- 'cache-control': headers['cache-control'],
910
- 'x-frontegg-framework': "next@".concat(nextjsPkg__default["default"].version),
911
- 'x-frontegg-sdk': "@frontegg/nextjs@".concat(sdkVersion.version),
912
- },
913
- })];
914
- case 1: return [2 /*return*/, _a.sent()];
915
- }
916
- });
917
- });
918
- }
919
- function refreshToken(ctx) {
920
- var _a, _b, _c, _d, _e, _f;
921
- return tslib.__awaiter(this, void 0, void 0, function () {
922
- var request_1, session_1, isSecured, headers, cookies, response, data, cookieHeader, newSetCookie, _g, session, decodedJwt, refreshToken_1, cookieValue, e_3;
923
- return tslib.__generator(this, function (_h) {
924
- switch (_h.label) {
925
- case 0:
926
- _h.trys.push([0, 11, , 12]);
927
- request_1 = ctx.req;
928
- if (!request_1) {
929
- return [2 /*return*/, null];
930
- }
931
- if (!((_a = request_1.url) === null || _a === void 0 ? void 0 : _a.startsWith('/_next/'))) return [3 /*break*/, 4];
932
- _h.label = 1;
933
- case 1:
934
- _h.trys.push([1, 3, , 4]);
935
- return [4 /*yield*/, createGetSession({
936
- getCookie: function () { return CookieManager$1.getParsedCookieFromRequest(request_1); },
937
- cookieResolver: getTokensFromCookieOnEdge,
938
- })];
939
- case 2:
940
- session_1 = _h.sent();
941
- if (session_1) {
942
- return [2 /*return*/, session_1];
943
- }
944
- return [3 /*break*/, 4];
945
- case 3:
946
- _h.sent();
947
- console.log('no nextjs session, will refresh token');
948
- return [3 /*break*/, 4];
949
- case 4:
950
- isSecured = new URL(fronteggConfig.appUrl).protocol === 'https:';
951
- headers = request_1.headers;
952
- cookies = request_1.cookies;
953
- if (ctx.req.url.startsWith('/oauth/callback')) {
954
- return [2 /*return*/, null];
955
- }
956
- response = void 0;
957
- if (!fronteggConfig.fronteggAppOptions.hostedLoginBox) return [3 /*break*/, 6];
958
- return [4 /*yield*/, refreshTokenHostedLogin(ctx, headers)];
959
- case 5:
960
- response = _h.sent();
961
- return [3 /*break*/, 8];
962
- case 6: return [4 /*yield*/, refreshTokenEmbedded(ctx, headers, cookies)];
963
- case 7:
964
- response = _h.sent();
965
- _h.label = 8;
966
- case 8:
967
- if (response === null || !response.ok) {
968
- CookieManager$1.removeCookies({
969
- isSecured: isSecured,
970
- cookieDomain: fronteggConfig.cookieDomain,
971
- res: ctx.res,
972
- req: ctx.req,
973
- });
974
- return [2 /*return*/, null];
975
- }
976
- return [4 /*yield*/, response.json()];
977
- case 9:
978
- data = _h.sent();
979
- cookieHeader = (_c = (_b = response.headers) === null || _b === void 0 ? void 0 : _b.raw) === null || _c === void 0 ? void 0 : _c.call(_b)['set-cookie'];
980
- newSetCookie = (_d = CookieManager$1.modifySetCookie(cookieHeader, isSecured)) !== null && _d !== void 0 ? _d : [];
981
- return [4 /*yield*/, createSessionFromAccessToken(data)];
982
- case 10:
983
- _g = _h.sent(), session = _g[0], decodedJwt = _g[1], refreshToken_1 = _g[2];
984
- if (!session) {
985
- return [2 /*return*/, null];
986
- }
987
- cookieValue = CookieManager$1.createCookie({
988
- value: session,
989
- expires: new Date(decodedJwt.exp * 1000),
990
- isSecured: isSecured,
991
- });
992
- newSetCookie.push.apply(newSetCookie, cookieValue);
993
- (_e = ctx.res) === null || _e === void 0 ? void 0 : _e.setHeader('set-cookie', newSetCookie);
994
- return [2 /*return*/, {
995
- accessToken: (_f = data.accessToken) !== null && _f !== void 0 ? _f : data.access_token,
996
- user: decodedJwt,
997
- refreshToken: refreshToken_1,
998
- }];
999
- case 11:
1000
- e_3 = _h.sent();
1001
- console.error('Failed to create session e', e_3);
1002
- return [2 /*return*/, null];
1003
- case 12: return [2 /*return*/];
1004
- }
1005
- });
1006
- });
1007
- }
1008
-
1009
- var withFronteggApp = function (app, options) {
1010
- var _a, _b;
1011
- var originalGetInitialProps = app.getInitialProps;
1012
- app.getInitialProps = function (appContext) { return tslib.__awaiter(void 0, void 0, void 0, function () {
1013
- var ctx, Component, _a, user, tenants, session, _b, envAppUrl, envBaseUrl, envClientId, _c, _d, _e, _f, _g, _h, _j, _k;
1014
- var _l, _m;
1015
- var _o;
1016
- return tslib.__generator(this, function (_p) {
1017
- switch (_p.label) {
1018
- case 0:
1019
- ctx = appContext.ctx, Component = appContext.Component;
1020
- if (!ctx.req) return [3 /*break*/, 8];
1021
- return [4 /*yield*/, getAllUserData({
1022
- getSession: function () { return tslib.__awaiter(void 0, void 0, void 0, function () { return tslib.__generator(this, function (_a) {
1023
- switch (_a.label) {
1024
- case 0: return [4 /*yield*/, refreshToken(ctx)];
1025
- case 1: return [2 /*return*/, _a.sent()];
1026
- }
1027
- }); }); },
1028
- reqHeaders: (_o = ctx.req) === null || _o === void 0 ? void 0 : _o.headers,
1029
- })];
1030
- case 1:
1031
- _a = _p.sent(), user = _a.user, tenants = _a.tenants, session = _a.session;
1032
- appContext.session = session;
1033
- appContext.user = user;
1034
- appContext.tenants = tenants;
1035
- _b = fronteggConfig.appEnvConfig, envAppUrl = _b.envAppUrl, envBaseUrl = _b.envBaseUrl, envClientId = _b.envClientId;
1036
- if (!envAppUrl) {
1037
- throw Error(fronteggErrors.envAppUrl);
1038
- }
1039
- if (!envBaseUrl) {
1040
- throw Error(fronteggErrors.envBaseUrl);
1041
- }
1042
- if (!envClientId) {
1043
- throw Error(fronteggErrors.envClientId);
1044
- }
1045
- _l = {};
1046
- _c = [{}];
1047
- if (!originalGetInitialProps) return [3 /*break*/, 3];
1048
- return [4 /*yield*/, originalGetInitialProps(appContext)];
1049
- case 2:
1050
- _d = _p.sent();
1051
- return [3 /*break*/, 4];
1052
- case 3:
1053
- _d = {};
1054
- _p.label = 4;
1055
- case 4:
1056
- _e = [tslib.__assign.apply(void 0, _c.concat([(_d)]))];
1057
- if (!Component.getInitialProps) return [3 /*break*/, 6];
1058
- return [4 /*yield*/, Component.getInitialProps(ctx)];
1059
- case 5:
1060
- _f = _p.sent();
1061
- return [3 /*break*/, 7];
1062
- case 6:
1063
- _f = {};
1064
- _p.label = 7;
1065
- case 7: return [2 /*return*/, (_l.pageProps = tslib.__assign.apply(void 0, [tslib.__assign.apply(void 0, _e.concat([(_f)])), { session: session, user: user, tenants: tenants, envAppUrl: envAppUrl, envBaseUrl: process.env['FRONTEGG_BASE_URL'], envClientId: process.env['FRONTEGG_CLIENT_ID'] }]),
1066
- _l)];
1067
- case 8:
1068
- appContext.session = null;
1069
- _m = {};
1070
- _g = [{}];
1071
- if (!originalGetInitialProps) return [3 /*break*/, 10];
1072
- return [4 /*yield*/, originalGetInitialProps(appContext)];
1073
- case 9:
1074
- _h = _p.sent();
1075
- return [3 /*break*/, 11];
1076
- case 10:
1077
- _h = {};
1078
- _p.label = 11;
1079
- case 11:
1080
- _j = [tslib.__assign.apply(void 0, _g.concat([(_h)]))];
1081
- if (!Component.getInitialProps) return [3 /*break*/, 13];
1082
- return [4 /*yield*/, Component.getInitialProps(ctx)];
1083
- case 12:
1084
- _k = _p.sent();
1085
- return [3 /*break*/, 14];
1086
- case 13:
1087
- _k = {};
1088
- _p.label = 14;
1089
- case 14: return [2 /*return*/, (_m.pageProps = tslib.__assign.apply(void 0, _j.concat([(_k)])),
1090
- _m)];
1091
- }
1092
- });
1093
- }); };
1094
- fronteggConfig.authRoutes = (_b = (_a = options === null || options === void 0 ? void 0 : options.authOptions) === null || _a === void 0 ? void 0 : _a.routes) !== null && _b !== void 0 ? _b : {};
1095
- fronteggConfig.fronteggAppOptions = options !== null && options !== void 0 ? options : {};
1096
- function CustomFronteggApp(appProps) {
1097
- var _a = appProps.pageProps, user = _a.user, tenants = _a.tenants, session = _a.session, envAppUrl = _a.envAppUrl, envBaseUrl = _a.envBaseUrl, envClientId = _a.envClientId;
1098
- return (React__default["default"].createElement(FronteggProvider, tslib.__assign({}, options, { user: user, tenants: tenants, session: session, envAppUrl: envAppUrl, envBaseUrl: envBaseUrl, envClientId: envClientId }), app(appProps)));
1099
- }
1100
- CustomFronteggApp.getInitialProps = app.getInitialProps;
1101
- return CustomFronteggApp;
1102
- };
1103
-
1104
- var getSession = function (req) {
1105
- return createGetSession({
1106
- getCookie: function () { return CookieManager$1.getParsedCookieFromRequest(req); },
1107
- cookieResolver: getTokensFromCookie,
1108
- });
1109
- };
1110
- function withSSRSession(handler) {
1111
- var _this = this;
1112
- return function (context) { return tslib.__awaiter(_this, void 0, void 0, function () {
1113
- var session, loginUrl;
1114
- var _a, _b;
1115
- return tslib.__generator(this, function (_c) {
1116
- switch (_c.label) {
1117
- case 0: return [4 /*yield*/, getSession(context.req)];
1118
- case 1:
1119
- session = _c.sent();
1120
- if (session) {
1121
- return [2 /*return*/, handler(context, session)];
1122
- }
1123
- else {
1124
- loginUrl = (_a = fronteggConfig.authRoutes.loginUrl) !== null && _a !== void 0 ? _a : reduxStore.authInitialState.routes.loginUrl;
1125
- if (!loginUrl.startsWith('/')) {
1126
- loginUrl = "/".concat(loginUrl);
1127
- }
1128
- return [2 /*return*/, {
1129
- redirect: {
1130
- permanent: false,
1131
- destination: "".concat(loginUrl, "?redirectUrl=").concat(encodeURIComponent((_b = context.resolvedUrl) !== null && _b !== void 0 ? _b : context.req.url)),
1132
- },
1133
- props: {},
1134
- }];
1135
- }
1136
- }
1137
- });
1138
- }); };
1139
- }
1140
-
1141
- /**
1142
- * @see https://www.npmjs.com/package/http-proxy
1143
- */
1144
- var FronteggProxy = httpProxy__default["default"].createProxyServer({
1145
- target: process.env['FRONTEGG_BASE_URL'],
1146
- changeOrigin: true,
1147
- selfHandleResponse: true,
1148
- });
1149
- var proxyReqCallback = function (proxyReq, req) {
1150
- var _a, _b, _c;
1151
- try {
1152
- var cookies_1 = cookie__default["default"].parse((_a = req.headers['cookie']) !== null && _a !== void 0 ? _a : '');
1153
- Object.keys(cookies_1)
1154
- .filter(function (cookieName) { return cookieName.startsWith('fe_') && !cookieName.startsWith(fronteggConfig.cookieName); })
1155
- .forEach(function (cookieName) {
1156
- proxyReq.setHeader(cookieName, cookies_1[cookieName]);
1157
- });
1158
- proxyReq.setHeader('x-frontegg-middleware', 'true');
1159
- proxyReq.setHeader('x-frontegg-framework', (_b = req.headers['x-frontegg-framework']) !== null && _b !== void 0 ? _b : "next@".concat(nextjsPkg__default["default"].version));
1160
- proxyReq.setHeader('x-frontegg-sdk', (_c = req.headers['x-frontegg-sdk']) !== null && _c !== void 0 ? _c : "@frontegg/nextjs@".concat(sdkVersion.version));
1161
- if (req.body) {
1162
- var bodyData = JSON.stringify(req.body);
1163
- // in case if content-type is application/x-www-form-urlencoded -> we need to change to application/json
1164
- proxyReq.setHeader('Content-Type', 'application/json');
1165
- proxyReq.setHeader('Content-Length', Buffer.byteLength(bodyData));
1166
- // stream the content
1167
- proxyReq.write(bodyData);
1168
- }
1169
- }
1170
- catch (e) {
1171
- console.error("once('proxyReq'), ERROR", e);
1172
- }
1173
- };
1174
- /**
1175
- * Set proxy request callback handler
1176
- */
1177
- // @ts-ignore
1178
- FronteggProxy.on('proxyReq', proxyReqCallback);
1179
- var proxyResCallback = function (proxyRes, req, res) {
1180
- var buffer = new Buffer('');
1181
- var totalLength = 0;
1182
- var isSecured = new URL(fronteggConfig.appUrl).protocol === 'https:';
1183
- proxyRes.on('data', function (chunk) {
1184
- totalLength += chunk.length;
1185
- buffer = Buffer.concat([buffer, chunk], totalLength);
1186
- });
1187
- proxyRes.on('end', function () { return tslib.__awaiter(void 0, void 0, void 0, function () {
1188
- var url, statusCode, isSuccess, bodyStr, isLogout, cookies, body, _a, session, decodedJwt, sessionCookie, e_1, e_2;
1189
- var _b, _c, _d;
1190
- return tslib.__generator(this, function (_e) {
1191
- switch (_e.label) {
1192
- case 0:
1193
- _e.trys.push([0, 8, , 9]);
1194
- url = req.url;
1195
- statusCode = (_b = proxyRes.statusCode) !== null && _b !== void 0 ? _b : 500;
1196
- isSuccess = statusCode >= 200 && statusCode < 400;
1197
- bodyStr = buffer.toString('utf-8');
1198
- isLogout = isFronteggLogoutUrl(url);
1199
- if (isLogout) {
1200
- CookieManager$1.removeCookies({
1201
- isSecured: isSecured,
1202
- cookieDomain: fronteggConfig.cookieDomain,
1203
- res: res,
1204
- req: req,
1205
- });
1206
- if (isSuccess) {
1207
- res.redirect("".concat(process.env['FRONTEGG_BASE_URL'], "/oauth/logout?post_logout_redirect_uri=").concat(encodeURIComponent((_c = process.env['FRONTEGG_APP_URL']) !== null && _c !== void 0 ? _c : '')));
1208
- }
1209
- else {
1210
- res.status(statusCode).end(bodyStr);
1211
- }
1212
- return [2 /*return*/];
1213
- }
1214
- if (!isSuccess) return [3 /*break*/, 6];
1215
- cookies = (_d = CookieManager$1.modifySetCookie(proxyRes.headers['set-cookie'], isSecured)) !== null && _d !== void 0 ? _d : [];
1216
- _e.label = 1;
1217
- case 1:
1218
- _e.trys.push([1, 4, , 5]);
1219
- if (!(bodyStr && bodyStr.length > 0)) return [3 /*break*/, 3];
1220
- body = JSON.parse(bodyStr);
1221
- if (!(body.accessToken || body.access_token)) return [3 /*break*/, 3];
1222
- return [4 /*yield*/, createSessionFromAccessToken(body)];
1223
- case 2:
1224
- _a = _e.sent(), session = _a[0], decodedJwt = _a[1];
1225
- if (session) {
1226
- sessionCookie = CookieManager$1.createCookie({
1227
- value: session,
1228
- expires: new Date(decodedJwt.exp * 1000),
1229
- isSecured: isSecured,
1230
- });
1231
- cookies.push.apply(cookies, sessionCookie);
1232
- }
1233
- _e.label = 3;
1234
- case 3: return [3 /*break*/, 5];
1235
- case 4:
1236
- e_1 = _e.sent();
1237
- /** ignore api call if:
1238
- * - Does not have accessToken / access_token
1239
- * - Not json response
1240
- */
1241
- console.log('[FronteggMiddleware] failed to create session', e_1, {
1242
- url: url,
1243
- statusCode: statusCode,
1244
- });
1245
- return [3 /*break*/, 5];
1246
- case 5:
1247
- Object.keys(proxyRes.headers)
1248
- .filter(function (header) { return header !== 'cookie'; })
1249
- .forEach(function (header) {
1250
- res.setHeader(header, "".concat(proxyRes.headers[header]));
1251
- });
1252
- res.setHeader('set-cookie', cookies);
1253
- res.status(statusCode).end(bodyStr);
1254
- return [3 /*break*/, 7];
1255
- case 6:
1256
- if (statusCode >= 400 && statusCode !== 404) {
1257
- console.error('[ERROR] FronteggMiddleware', { url: url, statusCode: statusCode });
1258
- }
1259
- Object.keys(proxyRes.headers)
1260
- .filter(function (header) { return header !== 'cookie'; })
1261
- .forEach(function (header) {
1262
- res.setHeader(header, "".concat(proxyRes.headers[header]));
1263
- });
1264
- res.status(statusCode).end(bodyStr);
1265
- _e.label = 7;
1266
- case 7: return [3 /*break*/, 9];
1267
- case 8:
1268
- e_2 = _e.sent();
1269
- console.error('[ERROR] FronteggMiddleware', 'proxy failed to send request', e_2);
1270
- res.status(500).end('Internal Server Error');
1271
- return [3 /*break*/, 9];
1272
- case 9: return [2 /*return*/];
1273
- }
1274
- });
1275
- }); });
1276
- };
1277
- /**
1278
- * Set proxy resonse callback handler
1279
- */
1280
- // @ts-ignore
1281
- FronteggProxy.on('proxyRes', proxyResCallback);
1282
- /**
1283
- * If pattern information matching the input url information is found in the `pathRewrite` array,
1284
- * the url value is partially replaced with the `pathRewrite.replaceStr` value.
1285
- * @param url
1286
- * @param pathRewrite
1287
- */
1288
- var rewritePath = function (url, pathRewrite) {
1289
- if (Array.isArray(pathRewrite)) {
1290
- for (var _i = 0, pathRewrite_1 = pathRewrite; _i < pathRewrite_1.length; _i++) {
1291
- var item = pathRewrite_1[_i];
1292
- var patternStr = item.patternStr, replaceStr = item.replaceStr;
1293
- var pattern = RegExp(patternStr);
1294
- if (pattern.test(url)) {
1295
- return url.replace(pattern, replaceStr);
1296
- }
1297
- }
1298
- }
1299
- else {
1300
- // tslint:disable-next-line:forin
1301
- for (var patternStr in pathRewrite) {
1302
- var pattern = RegExp(patternStr);
1303
- var path = pathRewrite[patternStr];
1304
- if (pattern.test(url)) {
1305
- return url.replace(pattern, path);
1306
- }
1307
- }
1308
- }
1309
- return url;
1310
- };
1311
- var fronteggPathRewrite = [
1312
- {
1313
- patternStr: '^/api/',
1314
- replaceStr: '/',
1315
- },
1316
- ];
1317
- var fronteggSSOPathRewrite = [
1318
- {
1319
- patternStr: '/frontegg/saml/callback$',
1320
- replaceStr: '/auth/saml/callback',
1321
- },
1322
- ];
1323
- var isFronteggLogoutUrl = function (url) {
1324
- return (restApi.fronteggAuthApiRoutes.filter(function (path) { return path.endsWith('/logout'); }).findIndex(function (route) { return url.endsWith(route); }) >= 0);
1325
- };
1326
-
1327
- var config = {
1328
- api: {
1329
- externalResolver: true,
1330
- bodyParser: true,
1331
- responseLimit: false,
1332
- },
1333
- };
1334
- var middlewarePromise = function (req, res) {
1335
- return new Promise(function (resolve) {
1336
- var _a;
1337
- var fronteggUrlPath = rewritePath((_a = req.url) !== null && _a !== void 0 ? _a : '/', fronteggPathRewrite);
1338
- var rewriteUrl = rewritePath(fronteggUrlPath !== null && fronteggUrlPath !== void 0 ? fronteggUrlPath : '/', fronteggSSOPathRewrite);
1339
- req.url = rewriteUrl;
1340
- res.on('close', function () { return resolve(); });
1341
- var options = {
1342
- target: process.env['FRONTEGG_BASE_URL'],
1343
- };
1344
- if (process.env['FRONTEGG_TEST_URL'] && req.url == '/frontegg/middleware-test') {
1345
- options.target = process.env['FRONTEGG_TEST_URL'];
1346
- }
1347
- FronteggProxy.web(req, res, options);
1348
- });
1349
- };
1350
- /**
1351
- * Next.js HTTP Proxy Middleware
1352
- * @see https://nextjs.org/docs/api-routes/api-middlewares
1353
- * @param {NextApiRequest} req
1354
- * @param {NextApiResponse} res
1355
- */
1356
- function fronteggMiddleware(req, res) {
1357
- return tslib.__awaiter(this, void 0, void 0, function () {
1358
- return tslib.__generator(this, function (_a) {
1359
- switch (_a.label) {
1360
- case 0: return [4 /*yield*/, middlewarePromise(req, res)];
1361
- case 1: return [2 /*return*/, _a.sent()];
1362
- }
1363
- });
1364
- });
1365
- }
1366
-
1367
- Object.defineProperty(exports, 'AdminPortal', {
1368
- enumerable: true,
1369
- get: function () { return js.AdminPortal; }
1370
- });
1371
- exports.AuthorizedContent = AuthorizedContent;
1372
- exports.COOKIE_MAX_LENGTH = COOKIE_MAX_LENGTH;
1373
- exports.CookieManager = CookieManager$1;
1374
- exports.FronteggConfig = fronteggConfig;
1375
- exports.FronteggProvider = FronteggProvider;
1376
- exports.FronteggProviderNoSSR = FronteggProviderNoSSR;
1377
- exports.FronteggRouter = FronteggRouter;
1378
- exports.FronteggRouterProps = FronteggRouterProps;
1379
- exports.config = config;
1380
- exports.createGetSession = createGetSession;
1381
- exports.createSessionFromAccessToken = createSessionFromAccessToken;
1382
- exports.fronteggErrors = fronteggErrors;
1383
- exports.fronteggMiddleware = fronteggMiddleware;
1384
- exports.getAllUserData = getAllUserData;
1385
- exports.getSession = getSession;
1386
- exports.getTokensFromCookie = getTokensFromCookie;
1387
- exports.withFronteggApp = withFronteggApp;
1388
- exports.withSSRSession = withSSRSession;
1389
- Object.keys(reactHooks).forEach(function (k) {
1390
- if (k !== 'default' && !exports.hasOwnProperty(k)) Object.defineProperty(exports, k, {
1391
- enumerable: true,
1392
- get: function () { return reactHooks[k]; }
1393
- });
1394
- });
1395
- Object.keys(types).forEach(function (k) {
1396
- if (k !== 'default' && !exports.hasOwnProperty(k)) Object.defineProperty(exports, k, {
1397
- enumerable: true,
1398
- get: function () { return types[k]; }
1399
- });
1400
- });
1401
- //# sourceMappingURL=index.js.map
1
+ /** @license Frontegg v6.7.21-alpha.4441481917
2
+ *
3
+ * This source code is licensed under the MIT license found in the
4
+ * LICENSE file in the root directory of this source tree.
5
+ */
6
+ export * from './common';
7
+ export * from './config';
8
+ export * from './middleware';
9
+ export * from './types';
10
+ export { AdminPortal, AppHolder, HostedLogin } from '@frontegg/js';
11
+ export * from '@frontegg/react-hooks';
12
+ export * from '@frontegg/types';
13
+ //# sourceMappingURL=index.js.map