@frontegg/nextjs 6.7.20 → 6.7.21-alpha.4441481917

This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
Files changed (259) hide show
  1. package/CHANGELOG.md +10 -0
  2. package/README.md +19 -37
  3. package/api/index.d.ts +19 -0
  4. package/api/index.js +78 -0
  5. package/api/index.js.map +1 -0
  6. package/api/package.json +6 -0
  7. package/api/urls.d.ts +33 -0
  8. package/api/urls.js +46 -0
  9. package/api/urls.js.map +1 -0
  10. package/api/utils.d.ts +46 -0
  11. package/api/utils.js +108 -0
  12. package/api/utils.js.map +1 -0
  13. package/app/ClientFronteggProvider.d.ts +3 -0
  14. package/app/ClientFronteggProvider.js +25 -0
  15. package/app/ClientFronteggProvider.js.map +1 -0
  16. package/app/FronteggAppProvider.d.ts +4 -0
  17. package/app/FronteggAppProvider.js +17 -0
  18. package/app/FronteggAppProvider.js.map +1 -0
  19. package/{client → app}/FronteggAppRouter.d.ts +11 -10
  20. package/app/FronteggAppRouter.js +31 -0
  21. package/app/FronteggAppRouter.js.map +1 -0
  22. package/app/helpers.d.ts +5 -0
  23. package/app/helpers.js +32 -0
  24. package/app/helpers.js.map +1 -0
  25. package/app/index.d.ts +4 -0
  26. package/app/index.js +4 -0
  27. package/app/index.js.map +1 -0
  28. package/app/package.json +6 -0
  29. package/common/{client/AppContext.d.ts → AppContext.d.ts} +4 -4
  30. package/common/AppContext.js +6 -0
  31. package/common/AppContext.js.map +1 -0
  32. package/{AuthorizedContent.d.ts → common/AuthorizedContent.d.ts} +9 -8
  33. package/common/AuthorizedContent.js +48 -0
  34. package/common/AuthorizedContent.js.map +1 -0
  35. package/common/{client/FronteggBaseProvider.d.ts → FronteggBaseProvider.d.ts} +3 -3
  36. package/common/FronteggBaseProvider.js +67 -0
  37. package/common/FronteggBaseProvider.js.map +1 -0
  38. package/common/FronteggRouterBase.d.ts +9 -0
  39. package/common/FronteggRouterBase.js +42 -0
  40. package/common/FronteggRouterBase.js.map +1 -0
  41. package/common/helpers.d.ts +3 -9
  42. package/common/helpers.js +24 -0
  43. package/common/helpers.js.map +1 -0
  44. package/common/index.d.ts +4 -6
  45. package/common/index.js +5 -10
  46. package/common/index.js.map +1 -1
  47. package/common/package.json +6 -0
  48. package/common/useRequestAuthorizeSSR.d.ts +5 -0
  49. package/common/useRequestAuthorizeSSR.js +24 -0
  50. package/common/useRequestAuthorizeSSR.js.map +1 -0
  51. package/config/constants.d.ts +57 -0
  52. package/config/constants.js +13 -0
  53. package/config/constants.js.map +1 -0
  54. package/config/helpers.d.ts +28 -0
  55. package/config/helpers.js +87 -0
  56. package/config/helpers.js.map +1 -0
  57. package/config/index.d.ts +24 -0
  58. package/config/index.js +82 -0
  59. package/config/index.js.map +1 -0
  60. package/config/package.json +6 -0
  61. package/config/types.d.ts +18 -0
  62. package/config/types.js +2 -0
  63. package/config/types.js.map +1 -0
  64. package/edge/getSessionOnEdge.d.ts +3 -2
  65. package/edge/getSessionOnEdge.js +8 -0
  66. package/edge/getSessionOnEdge.js.map +1 -0
  67. package/edge/index.d.ts +3 -2
  68. package/edge/index.js +4 -64
  69. package/edge/index.js.map +1 -1
  70. package/edge/package.json +6 -0
  71. package/edge/redirectToLogin.d.ts +2 -0
  72. package/edge/redirectToLogin.js +9 -0
  73. package/edge/redirectToLogin.js.map +1 -0
  74. package/edge/shouldBypassMiddleware.d.ts +21 -7
  75. package/edge/shouldBypassMiddleware.js +42 -0
  76. package/edge/shouldBypassMiddleware.js.map +1 -0
  77. package/index.d.ts +7 -11
  78. package/index.js +13 -1401
  79. package/index.js.map +1 -1
  80. package/middleware/FronteggApiMiddleware.d.ts +8 -0
  81. package/middleware/FronteggApiMiddleware.js +28 -0
  82. package/middleware/FronteggApiMiddleware.js.map +1 -0
  83. package/middleware/FronteggProxy.d.ts +4 -0
  84. package/middleware/FronteggProxy.js +24 -0
  85. package/middleware/FronteggProxy.js.map +1 -0
  86. package/middleware/ProxyRequestCallback.d.ts +13 -0
  87. package/middleware/ProxyRequestCallback.js +48 -0
  88. package/middleware/ProxyRequestCallback.js.map +1 -0
  89. package/middleware/ProxyResponseCallback.d.ts +13 -0
  90. package/middleware/ProxyResponseCallback.js +103 -0
  91. package/middleware/ProxyResponseCallback.js.map +1 -0
  92. package/middleware/constants.d.ts +8 -0
  93. package/middleware/constants.js +9 -0
  94. package/middleware/constants.js.map +1 -0
  95. package/{common/FronteggProxy.d.ts → middleware/helpers.d.ts} +13 -26
  96. package/middleware/helpers.js +35 -0
  97. package/middleware/helpers.js.map +1 -0
  98. package/middleware/index.d.ts +23 -0
  99. package/middleware/index.js +24 -0
  100. package/middleware/index.js.map +1 -0
  101. package/middleware/package.json +6 -0
  102. package/no-ssr/ExpireInListener.d.ts +2 -0
  103. package/no-ssr/ExpireInListener.js +22 -0
  104. package/no-ssr/ExpireInListener.js.map +1 -0
  105. package/{FronteggProviderNoSSR.d.ts → no-ssr/FronteggProviderNoSSR.d.ts} +4 -4
  106. package/no-ssr/FronteggProviderNoSSR.js +76 -0
  107. package/no-ssr/FronteggProviderNoSSR.js.map +1 -0
  108. package/no-ssr/index.d.ts +2 -0
  109. package/no-ssr/index.js +2 -0
  110. package/no-ssr/index.js.map +1 -0
  111. package/no-ssr/package.json +6 -0
  112. package/package.json +6 -7
  113. package/pages/FronteggPagesProvider/index.d.ts +4 -0
  114. package/pages/FronteggPagesProvider/index.js +24 -0
  115. package/pages/FronteggPagesProvider/index.js.map +1 -0
  116. package/pages/FronteggPagesProvider/package.json +6 -0
  117. package/{FronteggRouter.d.ts → pages/FronteggRouter/FronteggRouter.d.ts} +6 -5
  118. package/pages/FronteggRouter/FronteggRouter.js +38 -0
  119. package/pages/FronteggRouter/FronteggRouter.js.map +1 -0
  120. package/pages/FronteggRouter/index.d.ts +26 -0
  121. package/pages/FronteggRouter/index.js +27 -0
  122. package/pages/FronteggRouter/index.js.map +1 -0
  123. package/pages/FronteggRouter/package.json +6 -0
  124. package/{session.d.ts → pages/helpers.d.ts} +10 -10
  125. package/pages/helpers.js +31 -0
  126. package/pages/helpers.js.map +1 -0
  127. package/pages/index.d.ts +3 -0
  128. package/pages/index.js +4 -0
  129. package/pages/index.js.map +1 -0
  130. package/pages/package.json +6 -0
  131. package/pages/withFronteggApp/index.d.ts +2 -0
  132. package/pages/withFronteggApp/index.js +2 -0
  133. package/pages/withFronteggApp/index.js.map +1 -0
  134. package/pages/withFronteggApp/package.json +6 -0
  135. package/pages/withFronteggApp/types.d.ts +12 -0
  136. package/pages/withFronteggApp/types.js +2 -0
  137. package/pages/withFronteggApp/types.js.map +1 -0
  138. package/pages/withFronteggApp/withFronteggApp.d.ts +2 -0
  139. package/pages/withFronteggApp/withFronteggApp.js +62 -0
  140. package/pages/withFronteggApp/withFronteggApp.js.map +1 -0
  141. package/sdkVersion.d.ts +4 -4
  142. package/sdkVersion.js +4 -0
  143. package/sdkVersion.js.map +1 -0
  144. package/{common/types.d.ts → types/index.d.ts} +80 -74
  145. package/types/index.js +2 -0
  146. package/types/index.js.map +1 -0
  147. package/types/package.json +6 -0
  148. package/utils/common/constants.d.ts +12 -0
  149. package/utils/common/constants.js +14 -0
  150. package/utils/common/constants.js.map +1 -0
  151. package/utils/common/index.d.ts +15 -0
  152. package/utils/common/index.js +26 -0
  153. package/utils/common/index.js.map +1 -0
  154. package/utils/common/package.json +6 -0
  155. package/utils/cookies/constants.d.ts +7 -0
  156. package/utils/cookies/constants.js +8 -0
  157. package/utils/cookies/constants.js.map +1 -0
  158. package/utils/cookies/helpers.d.ts +25 -0
  159. package/utils/cookies/helpers.js +53 -0
  160. package/utils/cookies/helpers.js.map +1 -0
  161. package/utils/cookies/index.d.ts +45 -0
  162. package/utils/cookies/index.js +232 -0
  163. package/utils/cookies/index.js.map +1 -0
  164. package/utils/cookies/package.json +6 -0
  165. package/utils/cookies/serializer.d.ts +22 -0
  166. package/utils/cookies/serializer.js +154 -0
  167. package/utils/cookies/serializer.js.map +1 -0
  168. package/utils/cookies/types.d.ts +31 -0
  169. package/utils/cookies/types.js +2 -0
  170. package/utils/cookies/types.js.map +1 -0
  171. package/utils/createSession/index.d.ts +2 -0
  172. package/utils/createSession/index.js +44 -0
  173. package/utils/createSession/index.js.map +1 -0
  174. package/utils/createSession/package.json +6 -0
  175. package/utils/encryption/index.d.ts +3 -0
  176. package/utils/encryption/index.js +29 -0
  177. package/utils/encryption/index.js.map +1 -0
  178. package/utils/encryption/package.json +6 -0
  179. package/utils/encryption-edge/index.d.ts +3 -0
  180. package/utils/encryption-edge/index.js +29 -0
  181. package/utils/encryption-edge/index.js.map +1 -0
  182. package/utils/encryption-edge/package.json +6 -0
  183. package/utils/errors/FronteggEnvNotFound.d.ts +3 -0
  184. package/utils/errors/FronteggEnvNotFound.js +8 -0
  185. package/utils/errors/FronteggEnvNotFound.js.map +1 -0
  186. package/utils/errors/InvalidFronteggEnv.d.ts +3 -0
  187. package/utils/errors/InvalidFronteggEnv.js +8 -0
  188. package/utils/errors/InvalidFronteggEnv.js.map +1 -0
  189. package/utils/errors/index.d.ts +2 -0
  190. package/utils/errors/index.js +3 -0
  191. package/utils/errors/index.js.map +1 -0
  192. package/utils/errors/package.json +6 -0
  193. package/utils/fetchUserData/index.d.ts +7 -0
  194. package/utils/fetchUserData/index.js +49 -0
  195. package/utils/fetchUserData/index.js.map +1 -0
  196. package/utils/fetchUserData/package.json +6 -0
  197. package/utils/fronteggLogger/constants.d.ts +13 -0
  198. package/utils/fronteggLogger/constants.js +20 -0
  199. package/utils/fronteggLogger/constants.js.map +1 -0
  200. package/utils/fronteggLogger/index.d.ts +17 -0
  201. package/utils/fronteggLogger/index.js +61 -0
  202. package/utils/fronteggLogger/index.js.map +1 -0
  203. package/utils/fronteggLogger/package.json +6 -0
  204. package/{common/client/createOrGetFronteggApp.d.ts → utils/initializeFronteggApp/index.d.ts} +11 -11
  205. package/utils/initializeFronteggApp/index.js +100 -0
  206. package/utils/initializeFronteggApp/index.js.map +1 -0
  207. package/utils/initializeFronteggApp/package.json +6 -0
  208. package/utils/jwt/index.d.ts +22 -0
  209. package/utils/jwt/index.js +53 -0
  210. package/utils/jwt/index.js.map +1 -0
  211. package/utils/jwt/package.json +6 -0
  212. package/utils/refreshAccessToken/helpers.d.ts +16 -0
  213. package/utils/refreshAccessToken/helpers.js +69 -0
  214. package/utils/refreshAccessToken/helpers.js.map +1 -0
  215. package/utils/refreshAccessToken/index.d.ts +9 -0
  216. package/utils/refreshAccessToken/index.js +88 -0
  217. package/utils/refreshAccessToken/index.js.map +1 -0
  218. package/utils/refreshAccessToken/package.json +6 -0
  219. package/utils/routing/index.d.ts +5 -0
  220. package/utils/routing/index.js +23 -0
  221. package/utils/routing/index.js.map +1 -0
  222. package/utils/routing/package.json +6 -0
  223. package/utils/useOnRedirectTo/index.d.ts +5 -0
  224. package/utils/useOnRedirectTo/index.js +21 -0
  225. package/utils/useOnRedirectTo/index.js.map +1 -0
  226. package/utils/useOnRedirectTo/package.json +6 -0
  227. package/CookieManager-e50dc144.js +0 -322
  228. package/CookieManager-e50dc144.js.map +0 -1
  229. package/FronteggClientProviderNext13-b3c1e7a0.js +0 -158
  230. package/FronteggClientProviderNext13-b3c1e7a0.js.map +0 -1
  231. package/FronteggMiddleware.d.ts +0 -15
  232. package/FronteggProvider.d.ts +0 -3
  233. package/api-25516652.js +0 -58
  234. package/api-25516652.js.map +0 -1
  235. package/client/FronteggClientProviderNext13.d.ts +0 -3
  236. package/client/index.d.ts +0 -2
  237. package/client/index.js +0 -64
  238. package/client/index.js.map +0 -1
  239. package/common/CookieManager.d.ts +0 -41
  240. package/common/FronteggConfig.d.ts +0 -31
  241. package/common/api.d.ts +0 -3
  242. package/common/client/ExpireInListener.d.ts +0 -2
  243. package/common/client/hooks/index.d.ts +0 -1
  244. package/common/client/hooks/useRequestAuthorizeSSR.d.ts +0 -5
  245. package/common/client/index.d.ts +0 -4
  246. package/common/consts.d.ts +0 -6
  247. package/common/createGetSession.d.ts +0 -7
  248. package/common/utils.d.ts +0 -1
  249. package/createGetSession-2e1e4506.js +0 -50
  250. package/createGetSession-2e1e4506.js.map +0 -1
  251. package/helpers-dac37998.js +0 -88
  252. package/helpers-dac37998.js.map +0 -1
  253. package/refreshToken.d.ts +0 -3
  254. package/server/FronteggProviderNext13.d.ts +0 -3
  255. package/server/getSessionNext13.d.ts +0 -4
  256. package/server/index.d.ts +0 -2
  257. package/server/index.js +0 -84
  258. package/server/index.js.map +0 -1
  259. package/withFronteggApp.d.ts +0 -11
@@ -0,0 +1,154 @@
1
+ import { cookieContentRegExp } from '../common/constants';
2
+ /**
3
+ * Determine if value is a Date.
4
+ *
5
+ * @param {*} val
6
+ * @private
7
+ */
8
+
9
+ function isDate(val) {
10
+ return Object.prototype.toString.call(val) === '[object Date]' || val instanceof Date;
11
+ }
12
+
13
+ /**
14
+ * Parse an HTTP Cookie header string and returning an object of all cookie
15
+ * name-value pairs.
16
+ *
17
+ * @param str the string representing a `Cookie` header value
18
+ */
19
+ function parse(str) {
20
+ if (typeof str !== 'string') {
21
+ throw new TypeError('argument str must be a string');
22
+ }
23
+ const obj = {};
24
+ let index = 0;
25
+ while (index < str.length) {
26
+ const eqIdx = str.indexOf('=', index);
27
+
28
+ // no more cookie pairs
29
+ if (eqIdx === -1) {
30
+ break;
31
+ }
32
+ let endIdx = str.indexOf(';', index);
33
+ if (endIdx === -1) {
34
+ endIdx = str.length;
35
+ } else if (endIdx < eqIdx) {
36
+ // backtrack on prior semicolon
37
+ index = str.lastIndexOf(';', eqIdx - 1) + 1;
38
+ continue;
39
+ }
40
+ const key = str.slice(index, eqIdx).trim();
41
+
42
+ // only assign once
43
+ if (undefined === obj[key]) {
44
+ let val = str.slice(eqIdx + 1, endIdx).trim();
45
+
46
+ // quoted values
47
+ if (val.charCodeAt(0) === 0x22) {
48
+ val = val.slice(1, -1);
49
+ }
50
+ try {
51
+ obj[key] = val.indexOf('%') !== -1 ? decodeURIComponent(val) : val;
52
+ } catch (e) {
53
+ obj[key] = val;
54
+ }
55
+ }
56
+ index = endIdx + 1;
57
+ }
58
+ return obj;
59
+ }
60
+
61
+ /**
62
+ * Serialize a cookie name-value pair into a `Set-Cookie` header string.
63
+ *
64
+ * @param name the name for the cookie
65
+ * @param val value to set the cookie to
66
+ * @param [options] object containing serialization options
67
+ * @throws {TypeError} when `maxAge` options is invalid
68
+ */
69
+ function serialize(name, val, options) {
70
+ const opt = options || {};
71
+ if (!cookieContentRegExp.test(name)) {
72
+ throw new TypeError('argument name is invalid: ' + name);
73
+ }
74
+ const value = encodeURIComponent(val);
75
+ if (value && !cookieContentRegExp.test(value)) {
76
+ throw new TypeError('argument val is invalid');
77
+ }
78
+ let str = name + '=' + value;
79
+ if (null != opt.maxAge) {
80
+ // noinspection PointlessArithmeticExpressionJS
81
+ const maxAge = opt.maxAge - 0;
82
+ if (isNaN(maxAge) || !isFinite(maxAge)) {
83
+ throw new TypeError('option maxAge is invalid');
84
+ }
85
+ str += '; Max-Age=' + Math.floor(maxAge);
86
+ }
87
+ if (opt.domain) {
88
+ if (!cookieContentRegExp.test(opt.domain)) {
89
+ throw new TypeError('option domain is invalid');
90
+ }
91
+ str += '; Domain=' + opt.domain;
92
+ }
93
+ if (opt.path) {
94
+ if (!cookieContentRegExp.test(opt.path)) {
95
+ throw new TypeError('option path is invalid');
96
+ }
97
+ str += '; Path=' + opt.path;
98
+ }
99
+ if (opt.expires) {
100
+ const expires = opt.expires;
101
+ if (!isDate(expires) || isNaN(expires.valueOf())) {
102
+ throw new TypeError('option expires is invalid');
103
+ }
104
+ str += '; Expires=' + expires.toUTCString();
105
+ }
106
+ if (opt.httpOnly) {
107
+ str += '; HttpOnly';
108
+ }
109
+ if (opt.secure) {
110
+ str += '; Secure';
111
+ }
112
+ if (opt.priority) {
113
+ // noinspection SuspiciousTypeOfGuard
114
+ const priority = typeof opt.priority === 'string' ? opt.priority.toLowerCase() : opt.priority;
115
+ switch (priority) {
116
+ case 'low':
117
+ str += '; Priority=Low';
118
+ break;
119
+ case 'medium':
120
+ str += '; Priority=Medium';
121
+ break;
122
+ case 'high':
123
+ str += '; Priority=High';
124
+ break;
125
+ default:
126
+ throw new TypeError('option priority is invalid');
127
+ }
128
+ }
129
+ if (opt.sameSite) {
130
+ const sameSite = typeof opt.sameSite === 'string' ? opt.sameSite.toLowerCase() : opt.sameSite;
131
+ switch (sameSite) {
132
+ case true:
133
+ str += '; SameSite=Strict';
134
+ break;
135
+ case 'lax':
136
+ str += '; SameSite=Lax';
137
+ break;
138
+ case 'strict':
139
+ str += '; SameSite=Strict';
140
+ break;
141
+ case 'none':
142
+ str += '; SameSite=None';
143
+ break;
144
+ default:
145
+ throw new TypeError('option sameSite is invalid');
146
+ }
147
+ }
148
+ return str;
149
+ }
150
+ export default {
151
+ serialize,
152
+ parse
153
+ };
154
+ //# sourceMappingURL=serializer.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"serializer.js","names":["cookieContentRegExp","isDate","val","Object","prototype","toString","call","Date","parse","str","TypeError","obj","index","length","eqIdx","indexOf","endIdx","lastIndexOf","key","slice","trim","undefined","charCodeAt","decodeURIComponent","e","serialize","name","options","opt","test","value","encodeURIComponent","maxAge","isNaN","isFinite","Math","floor","domain","path","expires","valueOf","toUTCString","httpOnly","secure","priority","toLowerCase","sameSite"],"sources":["../../../../../packages/nextjs/src/utils/cookies/serializer.ts"],"sourcesContent":["import { cookieContentRegExp } from '../common/constants';\nimport { CookieSerializeOptions } from './types';\n\n/**\n * Determine if value is a Date.\n *\n * @param {*} val\n * @private\n */\n\nfunction isDate(val: any) {\n return Object.prototype.toString.call(val) === '[object Date]' || val instanceof Date;\n}\n\n/**\n * Parse an HTTP Cookie header string and returning an object of all cookie\n * name-value pairs.\n *\n * @param str the string representing a `Cookie` header value\n */\nfunction parse(str: any): Record<string, string> {\n if (typeof str !== 'string') {\n throw new TypeError('argument str must be a string');\n }\n\n const obj: Record<string, string> = {};\n\n let index = 0;\n while (index < str.length) {\n const eqIdx = str.indexOf('=', index);\n\n // no more cookie pairs\n if (eqIdx === -1) {\n break;\n }\n\n let endIdx = str.indexOf(';', index);\n\n if (endIdx === -1) {\n endIdx = str.length;\n } else if (endIdx < eqIdx) {\n // backtrack on prior semicolon\n index = str.lastIndexOf(';', eqIdx - 1) + 1;\n continue;\n }\n\n const key = str.slice(index, eqIdx).trim();\n\n // only assign once\n if (undefined === obj[key]) {\n let val = str.slice(eqIdx + 1, endIdx).trim();\n\n // quoted values\n if (val.charCodeAt(0) === 0x22) {\n val = val.slice(1, -1);\n }\n\n try {\n obj[key] = val.indexOf('%') !== -1 ? decodeURIComponent(val) : val;\n } catch (e) {\n obj[key] = val;\n }\n }\n\n index = endIdx + 1;\n }\n\n return obj;\n}\n\n/**\n * Serialize a cookie name-value pair into a `Set-Cookie` header string.\n *\n * @param name the name for the cookie\n * @param val value to set the cookie to\n * @param [options] object containing serialization options\n * @throws {TypeError} when `maxAge` options is invalid\n */\nfunction serialize(name: string, val: string, options?: CookieSerializeOptions): string {\n const opt = options || {};\n\n if (!cookieContentRegExp.test(name)) {\n throw new TypeError('argument name is invalid: ' + name);\n }\n\n const value = encodeURIComponent(val);\n\n if (value && !cookieContentRegExp.test(value)) {\n throw new TypeError('argument val is invalid');\n }\n\n let str = name + '=' + value;\n\n if (null != opt.maxAge) {\n // noinspection PointlessArithmeticExpressionJS\n const maxAge = opt.maxAge - 0;\n\n if (isNaN(maxAge) || !isFinite(maxAge)) {\n throw new TypeError('option maxAge is invalid');\n }\n\n str += '; Max-Age=' + Math.floor(maxAge);\n }\n\n if (opt.domain) {\n if (!cookieContentRegExp.test(opt.domain)) {\n throw new TypeError('option domain is invalid');\n }\n\n str += '; Domain=' + opt.domain;\n }\n\n if (opt.path) {\n if (!cookieContentRegExp.test(opt.path)) {\n throw new TypeError('option path is invalid');\n }\n\n str += '; Path=' + opt.path;\n }\n\n if (opt.expires) {\n const expires = opt.expires;\n\n if (!isDate(expires) || isNaN(expires.valueOf())) {\n throw new TypeError('option expires is invalid');\n }\n\n str += '; Expires=' + expires.toUTCString();\n }\n\n if (opt.httpOnly) {\n str += '; HttpOnly';\n }\n\n if (opt.secure) {\n str += '; Secure';\n }\n\n if (opt.priority) {\n // noinspection SuspiciousTypeOfGuard\n const priority = typeof opt.priority === 'string' ? opt.priority.toLowerCase() : opt.priority;\n\n switch (priority) {\n case 'low':\n str += '; Priority=Low';\n break;\n case 'medium':\n str += '; Priority=Medium';\n break;\n case 'high':\n str += '; Priority=High';\n break;\n default:\n throw new TypeError('option priority is invalid');\n }\n }\n\n if (opt.sameSite) {\n const sameSite = typeof opt.sameSite === 'string' ? opt.sameSite.toLowerCase() : opt.sameSite;\n\n switch (sameSite) {\n case true:\n str += '; SameSite=Strict';\n break;\n case 'lax':\n str += '; SameSite=Lax';\n break;\n case 'strict':\n str += '; SameSite=Strict';\n break;\n case 'none':\n str += '; SameSite=None';\n break;\n default:\n throw new TypeError('option sameSite is invalid');\n }\n }\n\n return str;\n}\n\nexport default {\n serialize,\n parse,\n};\n"],"mappings":"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"}
@@ -0,0 +1,31 @@
1
+ /// <reference types="node" />
2
+ import { IncomingMessage, ServerResponse } from 'http';
3
+ export type RequestType = IncomingMessage | Request;
4
+ export type ResponseType = ServerResponse;
5
+ export interface CreateCookieOptions extends Pick<CookieSerializeOptions, 'domain' | 'httpOnly' | 'path'> {
6
+ cookieName?: string;
7
+ value: string;
8
+ secure: boolean;
9
+ expires: Date;
10
+ silent?: boolean;
11
+ }
12
+ export interface RemoveCookiesOptions {
13
+ cookieNames?: string[];
14
+ isSecured: boolean;
15
+ cookieDomain: string;
16
+ res: ResponseType;
17
+ req?: RequestType;
18
+ }
19
+ /**
20
+ * Cookie serialization options
21
+ */
22
+ export interface CookieSerializeOptions {
23
+ domain?: string | undefined;
24
+ expires?: Date | undefined;
25
+ httpOnly?: boolean | undefined;
26
+ maxAge?: number | undefined;
27
+ path?: string | undefined;
28
+ priority?: 'low' | 'medium' | 'high' | undefined;
29
+ sameSite?: true | false | 'lax' | 'strict' | 'none' | undefined;
30
+ secure?: boolean | undefined;
31
+ }
@@ -0,0 +1,2 @@
1
+ export {};
2
+ //# sourceMappingURL=types.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"types.js","names":[],"sources":["../../../../../packages/nextjs/src/utils/cookies/types.ts"],"sourcesContent":["import { IncomingMessage, ServerResponse } from 'http';\n\nexport type RequestType = IncomingMessage | Request;\nexport type ResponseType = ServerResponse;\n\nexport interface CreateCookieOptions extends Pick<CookieSerializeOptions, 'domain' | 'httpOnly' | 'path'> {\n cookieName?: string;\n value: string;\n secure: boolean;\n expires: Date;\n silent?: boolean;\n}\n\nexport interface RemoveCookiesOptions {\n cookieNames?: string[];\n isSecured: boolean;\n cookieDomain: string;\n res: ResponseType;\n req?: RequestType;\n}\n\n/**\n * Cookie serialization options\n */\nexport interface CookieSerializeOptions {\n domain?: string | undefined;\n expires?: Date | undefined;\n httpOnly?: boolean | undefined;\n maxAge?: number | undefined;\n path?: string | undefined;\n priority?: 'low' | 'medium' | 'high' | undefined;\n sameSite?: true | false | 'lax' | 'strict' | 'none' | undefined;\n secure?: boolean | undefined;\n}\n"],"mappings":""}
@@ -0,0 +1,2 @@
1
+ import type { EncryptionUtils, FronteggNextJSSession } from '../../types';
2
+ export default function createSession(cookie: string | undefined, encryption: EncryptionUtils): Promise<FronteggNextJSSession | undefined>;
@@ -0,0 +1,44 @@
1
+ import JwtManager from '../jwt';
2
+ import fronteggLogger from '../fronteggLogger';
3
+ export default async function createSession(cookie, encryption) {
4
+ const logger = fronteggLogger.child({
5
+ tag: 'SessionCreator.createSession'
6
+ });
7
+ logger.info('Creating new session');
8
+ try {
9
+ if (!cookie) {
10
+ logger.info('no cookies');
11
+ return undefined;
12
+ }
13
+ logger.debug('decrypting Session cookie');
14
+ const tokens = await encryption.unsealTokens(cookie);
15
+ if (!(tokens != null && tokens.accessToken)) {
16
+ logger.info('no accessToken in session');
17
+ return undefined;
18
+ }
19
+ const {
20
+ accessToken,
21
+ refreshToken
22
+ } = tokens;
23
+ logger.debug('Going to verify accessToken');
24
+ const {
25
+ payload
26
+ } = await JwtManager.verify(accessToken);
27
+ logger.debug('Access token verified successfully');
28
+ const session = {
29
+ accessToken,
30
+ user: payload,
31
+ refreshToken
32
+ };
33
+ logger.debug('Check if access token will expire soon');
34
+ if (session.user.exp * 1000 < Date.now()) {
35
+ return undefined;
36
+ }
37
+ logger.info('Successfully create session object');
38
+ return session;
39
+ } catch (e) {
40
+ logger.error('Failed to create session', e);
41
+ return undefined;
42
+ }
43
+ }
44
+ //# sourceMappingURL=index.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"index.js","names":["JwtManager","fronteggLogger","createSession","cookie","encryption","logger","child","tag","info","undefined","debug","tokens","unsealTokens","accessToken","refreshToken","payload","verify","session","user","exp","Date","now","e","error"],"sources":["../../../../../packages/nextjs/src/utils/createSession/index.ts"],"sourcesContent":["import JwtManager from '../jwt';\nimport type { EncryptionUtils, FronteggNextJSSession } from '../../types';\nimport fronteggLogger from '../fronteggLogger';\n\nexport default async function createSession(\n cookie: string | undefined,\n encryption: EncryptionUtils\n): Promise<FronteggNextJSSession | undefined> {\n const logger = fronteggLogger.child({ tag: 'SessionCreator.createSession' });\n logger.info('Creating new session');\n try {\n if (!cookie) {\n logger.info('no cookies');\n return undefined;\n }\n\n logger.debug('decrypting Session cookie');\n const tokens = await encryption.unsealTokens(cookie);\n if (!tokens?.accessToken) {\n logger.info('no accessToken in session');\n return undefined;\n }\n const { accessToken, refreshToken } = tokens;\n\n logger.debug('Going to verify accessToken');\n const { payload }: any = await JwtManager.verify(accessToken);\n\n logger.debug('Access token verified successfully');\n const session: FronteggNextJSSession = {\n accessToken,\n user: payload,\n refreshToken,\n };\n\n logger.debug('Check if access token will expire soon');\n if (session.user.exp * 1000 < Date.now()) {\n return undefined;\n }\n\n logger.info('Successfully create session object');\n return session;\n } catch (e) {\n logger.error('Failed to create session', e);\n return undefined;\n }\n}\n"],"mappings":"AAAA,OAAOA,UAAU,MAAM,QAAQ;AAE/B,OAAOC,cAAc,MAAM,mBAAmB;AAE9C,eAAe,eAAeC,aAAa,CACzCC,MAA0B,EAC1BC,UAA2B,EACiB;EAC5C,MAAMC,MAAM,GAAGJ,cAAc,CAACK,KAAK,CAAC;IAAEC,GAAG,EAAE;EAA+B,CAAC,CAAC;EAC5EF,MAAM,CAACG,IAAI,CAAC,sBAAsB,CAAC;EACnC,IAAI;IACF,IAAI,CAACL,MAAM,EAAE;MACXE,MAAM,CAACG,IAAI,CAAC,YAAY,CAAC;MACzB,OAAOC,SAAS;IAClB;IAEAJ,MAAM,CAACK,KAAK,CAAC,2BAA2B,CAAC;IACzC,MAAMC,MAAM,GAAG,MAAMP,UAAU,CAACQ,YAAY,CAACT,MAAM,CAAC;IACpD,IAAI,EAACQ,MAAM,YAANA,MAAM,CAAEE,WAAW,GAAE;MACxBR,MAAM,CAACG,IAAI,CAAC,2BAA2B,CAAC;MACxC,OAAOC,SAAS;IAClB;IACA,MAAM;MAAEI,WAAW;MAAEC;IAAa,CAAC,GAAGH,MAAM;IAE5CN,MAAM,CAACK,KAAK,CAAC,6BAA6B,CAAC;IAC3C,MAAM;MAAEK;IAAa,CAAC,GAAG,MAAMf,UAAU,CAACgB,MAAM,CAACH,WAAW,CAAC;IAE7DR,MAAM,CAACK,KAAK,CAAC,oCAAoC,CAAC;IAClD,MAAMO,OAA8B,GAAG;MACrCJ,WAAW;MACXK,IAAI,EAAEH,OAAO;MACbD;IACF,CAAC;IAEDT,MAAM,CAACK,KAAK,CAAC,wCAAwC,CAAC;IACtD,IAAIO,OAAO,CAACC,IAAI,CAACC,GAAG,GAAG,IAAI,GAAGC,IAAI,CAACC,GAAG,EAAE,EAAE;MACxC,OAAOZ,SAAS;IAClB;IAEAJ,MAAM,CAACG,IAAI,CAAC,oCAAoC,CAAC;IACjD,OAAOS,OAAO;EAChB,CAAC,CAAC,OAAOK,CAAC,EAAE;IACVjB,MAAM,CAACkB,KAAK,CAAC,0BAA0B,EAAED,CAAC,CAAC;IAC3C,OAAOb,SAAS;EAClB;AACF"}
@@ -0,0 +1,6 @@
1
+ {
2
+ "sideEffects": false,
3
+ "module": "./index.js",
4
+ "main": "./index.js",
5
+ "types": "./index.d.ts"
6
+ }
@@ -0,0 +1,3 @@
1
+ import type { EncryptionUtils } from '../../types';
2
+ declare const encryptionUtils: EncryptionUtils;
3
+ export default encryptionUtils;
@@ -0,0 +1,29 @@
1
+ // noinspection DuplicatedCode
2
+ // duplicated code for standard iron-session and iron-session/edge
3
+
4
+ import { unsealData, sealData } from 'iron-session';
5
+ import config from '../../config';
6
+ /**
7
+ * IMPORTANT NOTE:
8
+ * This utils can be used only in server/client runtime, for edge runtime use the ./utils/encryption-edge
9
+ **/
10
+
11
+ const unsealTokens = async data => {
12
+ const jwtData = await unsealData(data, {
13
+ password: config.password
14
+ });
15
+ return JSON.parse(jwtData);
16
+ };
17
+ const sealTokens = async (tokens, ttl) => {
18
+ const dataToSeal = JSON.stringify(tokens);
19
+ return sealData(dataToSeal, {
20
+ password: config.password,
21
+ ttl
22
+ });
23
+ };
24
+ const encryptionUtils = {
25
+ unsealTokens,
26
+ sealTokens
27
+ };
28
+ export default encryptionUtils;
29
+ //# sourceMappingURL=index.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"index.js","names":["unsealData","sealData","config","unsealTokens","data","jwtData","password","JSON","parse","sealTokens","tokens","ttl","dataToSeal","stringify","encryptionUtils"],"sources":["../../../../../packages/nextjs/src/utils/encryption/index.ts"],"sourcesContent":["// noinspection DuplicatedCode\n// duplicated code for standard iron-session and iron-session/edge\n\nimport { unsealData, sealData } from 'iron-session';\nimport config from '../../config';\nimport type { EncryptionUtils, FronteggUserTokens } from '../../types';\n\n/**\n * IMPORTANT NOTE:\n * This utils can be used only in server/client runtime, for edge runtime use the ./utils/encryption-edge\n **/\n\nconst unsealTokens = async (data: string): Promise<FronteggUserTokens | undefined> => {\n const jwtData: string = await unsealData(data, {\n password: config.password,\n });\n return JSON.parse(jwtData);\n};\n\nconst sealTokens = async (tokens: FronteggUserTokens, ttl: number): Promise<string> => {\n const dataToSeal = JSON.stringify(tokens);\n return sealData(dataToSeal, {\n password: config.password,\n ttl,\n });\n};\n\nconst encryptionUtils: EncryptionUtils = {\n unsealTokens,\n sealTokens,\n};\n\nexport default encryptionUtils;\n"],"mappings":"AAAA;AACA;;AAEA,SAASA,UAAU,EAAEC,QAAQ,QAAQ,cAAc;AACnD,OAAOC,MAAM,MAAM,cAAc;AAGjC;AACA;AACA;AACA;;AAEA,MAAMC,YAAY,GAAG,MAAOC,IAAY,IAA8C;EACpF,MAAMC,OAAe,GAAG,MAAML,UAAU,CAACI,IAAI,EAAE;IAC7CE,QAAQ,EAAEJ,MAAM,CAACI;EACnB,CAAC,CAAC;EACF,OAAOC,IAAI,CAACC,KAAK,CAACH,OAAO,CAAC;AAC5B,CAAC;AAED,MAAMI,UAAU,GAAG,OAAOC,MAA0B,EAAEC,GAAW,KAAsB;EACrF,MAAMC,UAAU,GAAGL,IAAI,CAACM,SAAS,CAACH,MAAM,CAAC;EACzC,OAAOT,QAAQ,CAACW,UAAU,EAAE;IAC1BN,QAAQ,EAAEJ,MAAM,CAACI,QAAQ;IACzBK;EACF,CAAC,CAAC;AACJ,CAAC;AAED,MAAMG,eAAgC,GAAG;EACvCX,YAAY;EACZM;AACF,CAAC;AAED,eAAeK,eAAe"}
@@ -0,0 +1,6 @@
1
+ {
2
+ "sideEffects": false,
3
+ "module": "./index.js",
4
+ "main": "./index.js",
5
+ "types": "./index.d.ts"
6
+ }
@@ -0,0 +1,3 @@
1
+ import type { EncryptionUtils } from '../../types';
2
+ declare const encryptionUtils: EncryptionUtils;
3
+ export default encryptionUtils;
@@ -0,0 +1,29 @@
1
+ // noinspection DuplicatedCode
2
+ // duplicated code for standard iron-session and iron-session/edge
3
+
4
+ import config from '../../config';
5
+ import { unsealData, sealData } from 'iron-session/edge';
6
+ /**
7
+ * IMPORTANT NOTE:
8
+ * This utils can be used only in edge runtime, for server/client runtime use the ./utils/encryption
9
+ **/
10
+
11
+ const unsealTokens = async cookie => {
12
+ const jwtData = await unsealData(cookie, {
13
+ password: config.password
14
+ });
15
+ return JSON.parse(jwtData);
16
+ };
17
+ const sealTokens = async (tokens, ttl) => {
18
+ const dataToSeal = JSON.stringify(tokens);
19
+ return sealData(dataToSeal, {
20
+ password: config.password,
21
+ ttl
22
+ });
23
+ };
24
+ const encryptionUtils = {
25
+ unsealTokens,
26
+ sealTokens
27
+ };
28
+ export default encryptionUtils;
29
+ //# sourceMappingURL=index.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"index.js","names":["config","unsealData","sealData","unsealTokens","cookie","jwtData","password","JSON","parse","sealTokens","tokens","ttl","dataToSeal","stringify","encryptionUtils"],"sources":["../../../../../packages/nextjs/src/utils/encryption-edge/index.ts"],"sourcesContent":["// noinspection DuplicatedCode\n// duplicated code for standard iron-session and iron-session/edge\n\nimport config from '../../config';\nimport { unsealData, sealData } from 'iron-session/edge';\nimport type { FronteggUserTokens, EncryptionUtils } from '../../types';\n\n/**\n * IMPORTANT NOTE:\n * This utils can be used only in edge runtime, for server/client runtime use the ./utils/encryption\n **/\n\nconst unsealTokens = async (cookie: string): Promise<FronteggUserTokens | undefined> => {\n const jwtData: string = await unsealData(cookie, {\n password: config.password,\n });\n return JSON.parse(jwtData);\n};\n\nconst sealTokens = async (tokens: FronteggUserTokens, ttl: number): Promise<string> => {\n const dataToSeal = JSON.stringify(tokens);\n return sealData(dataToSeal, {\n password: config.password,\n ttl,\n });\n};\n\nconst encryptionUtils: EncryptionUtils = {\n unsealTokens,\n sealTokens,\n};\n\nexport default encryptionUtils;\n"],"mappings":"AAAA;AACA;;AAEA,OAAOA,MAAM,MAAM,cAAc;AACjC,SAASC,UAAU,EAAEC,QAAQ,QAAQ,mBAAmB;AAGxD;AACA;AACA;AACA;;AAEA,MAAMC,YAAY,GAAG,MAAOC,MAAc,IAA8C;EACtF,MAAMC,OAAe,GAAG,MAAMJ,UAAU,CAACG,MAAM,EAAE;IAC/CE,QAAQ,EAAEN,MAAM,CAACM;EACnB,CAAC,CAAC;EACF,OAAOC,IAAI,CAACC,KAAK,CAACH,OAAO,CAAC;AAC5B,CAAC;AAED,MAAMI,UAAU,GAAG,OAAOC,MAA0B,EAAEC,GAAW,KAAsB;EACrF,MAAMC,UAAU,GAAGL,IAAI,CAACM,SAAS,CAACH,MAAM,CAAC;EACzC,OAAOR,QAAQ,CAACU,UAAU,EAAE;IAC1BN,QAAQ,EAAEN,MAAM,CAACM,QAAQ;IACzBK;EACF,CAAC,CAAC;AACJ,CAAC;AAED,MAAMG,eAAgC,GAAG;EACvCX,YAAY;EACZM;AACF,CAAC;AAED,eAAeK,eAAe"}
@@ -0,0 +1,6 @@
1
+ {
2
+ "sideEffects": false,
3
+ "module": "./index.js",
4
+ "main": "./index.js",
5
+ "types": "./index.d.ts"
6
+ }
@@ -0,0 +1,3 @@
1
+ export declare class FronteggEnvNotFound extends Error {
2
+ constructor(...name: string[]);
3
+ }
@@ -0,0 +1,8 @@
1
+ export class FronteggEnvNotFound extends Error {
2
+ constructor(...name) {
3
+ const message = `Missing one or more environment variables (${name.join(', ')}). add it to the .env.local file.`;
4
+ super(message);
5
+ Object.setPrototypeOf(this, FronteggEnvNotFound.prototype);
6
+ }
7
+ }
8
+ //# sourceMappingURL=FronteggEnvNotFound.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"FronteggEnvNotFound.js","names":["FronteggEnvNotFound","Error","constructor","name","message","join","Object","setPrototypeOf","prototype"],"sources":["../../../../../packages/nextjs/src/utils/errors/FronteggEnvNotFound.ts"],"sourcesContent":["export class FronteggEnvNotFound extends Error {\n constructor(...name: string[]) {\n const message = `Missing one or more environment variables (${name.join(', ')}). add it to the .env.local file.`;\n super(message);\n Object.setPrototypeOf(this, FronteggEnvNotFound.prototype);\n }\n}\n"],"mappings":"AAAA,OAAO,MAAMA,mBAAmB,SAASC,KAAK,CAAC;EAC7CC,WAAW,CAAC,GAAGC,IAAc,EAAE;IAC7B,MAAMC,OAAO,GAAI,8CAA6CD,IAAI,CAACE,IAAI,CAAC,IAAI,CAAE,mCAAkC;IAChH,KAAK,CAACD,OAAO,CAAC;IACdE,MAAM,CAACC,cAAc,CAAC,IAAI,EAAEP,mBAAmB,CAACQ,SAAS,CAAC;EAC5D;AACF"}
@@ -0,0 +1,3 @@
1
+ export declare class InvalidFronteggEnv extends Error {
2
+ constructor(name: string, type: string);
3
+ }
@@ -0,0 +1,8 @@
1
+ export class InvalidFronteggEnv extends Error {
2
+ constructor(name, type) {
3
+ const message = `Invalid environment variable (${name}), must be a valid ${type}`;
4
+ super(message);
5
+ Object.setPrototypeOf(this, InvalidFronteggEnv.prototype);
6
+ }
7
+ }
8
+ //# sourceMappingURL=InvalidFronteggEnv.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"InvalidFronteggEnv.js","names":["InvalidFronteggEnv","Error","constructor","name","type","message","Object","setPrototypeOf","prototype"],"sources":["../../../../../packages/nextjs/src/utils/errors/InvalidFronteggEnv.ts"],"sourcesContent":["export class InvalidFronteggEnv extends Error {\n constructor(name: string, type: string) {\n const message = `Invalid environment variable (${name}), must be a valid ${type}`;\n super(message);\n Object.setPrototypeOf(this, InvalidFronteggEnv.prototype);\n }\n}\n"],"mappings":"AAAA,OAAO,MAAMA,kBAAkB,SAASC,KAAK,CAAC;EAC5CC,WAAW,CAACC,IAAY,EAAEC,IAAY,EAAE;IACtC,MAAMC,OAAO,GAAI,iCAAgCF,IAAK,sBAAqBC,IAAK,EAAC;IACjF,KAAK,CAACC,OAAO,CAAC;IACdC,MAAM,CAACC,cAAc,CAAC,IAAI,EAAEP,kBAAkB,CAACQ,SAAS,CAAC;EAC3D;AACF"}
@@ -0,0 +1,2 @@
1
+ export * from './FronteggEnvNotFound';
2
+ export * from './InvalidFronteggEnv';
@@ -0,0 +1,3 @@
1
+ export * from './FronteggEnvNotFound';
2
+ export * from './InvalidFronteggEnv';
3
+ //# sourceMappingURL=index.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"index.js","names":[],"sources":["../../../../../packages/nextjs/src/utils/errors/index.ts"],"sourcesContent":["export * from './FronteggEnvNotFound';\nexport * from './InvalidFronteggEnv';\n"],"mappings":"AAAA,cAAc,uBAAuB;AACrC,cAAc,sBAAsB"}
@@ -0,0 +1,6 @@
1
+ {
2
+ "sideEffects": false,
3
+ "module": "./index.js",
4
+ "main": "./index.js",
5
+ "types": "./index.d.ts"
6
+ }
@@ -0,0 +1,7 @@
1
+ import { AllUserData, FronteggNextJSSession } from '../../types';
2
+ type FetchUserDataOptions = {
3
+ getSession: () => Promise<FronteggNextJSSession | undefined | null>;
4
+ getHeaders: () => Promise<Record<string, string | string[] | undefined>>;
5
+ };
6
+ export default function fetchUserData(options: FetchUserDataOptions): Promise<AllUserData>;
7
+ export {};
@@ -0,0 +1,49 @@
1
+ import _extends from "@babel/runtime/helpers/esm/extends";
2
+ import { getTenants, getUsers } from '../../api';
3
+ import { calculateExpiresInFromExp } from '../common';
4
+ import fronteggLogger from '../fronteggLogger';
5
+ export default async function fetchUserData(options) {
6
+ const {
7
+ getSession,
8
+ getHeaders
9
+ } = options;
10
+ const logger = fronteggLogger.child({
11
+ tag: 'fetchUserData.getAllUserData'
12
+ });
13
+ try {
14
+ const session = await getSession();
15
+ if (!session) {
16
+ logger.info('No session found');
17
+ return {};
18
+ }
19
+ const {
20
+ accessToken
21
+ } = session;
22
+ const reqHeaders = await getHeaders();
23
+ const headers = _extends({}, reqHeaders, {
24
+ authorization: `Bearer ${accessToken}`
25
+ });
26
+ logger.debug('Retrieving user data...');
27
+ const [baseUserResult, tenantsResult] = await Promise.allSettled([getUsers(headers), getTenants(headers)]);
28
+ logger.debug('Retrieved user data:', 'baseUserResult: ', baseUserResult.status, 'tenantsResult:', tenantsResult.status);
29
+ const baseUser = baseUserResult.status === 'fulfilled' ? baseUserResult.value : null;
30
+ const tenants = tenantsResult.status === 'fulfilled' ? tenantsResult.value : null;
31
+ if (!baseUser || !tenants) {
32
+ logger.info('No base user or tenants found');
33
+ return {};
34
+ }
35
+ const user = _extends({}, session.user, baseUser, {
36
+ expiresIn: calculateExpiresInFromExp(session.user.exp)
37
+ });
38
+ logger.info('Retrieved all user data successfully');
39
+ return {
40
+ user,
41
+ session,
42
+ tenants
43
+ };
44
+ } catch (e) {
45
+ // logger.error(e.message, e);
46
+ return {};
47
+ }
48
+ }
49
+ //# sourceMappingURL=index.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"index.js","names":["getTenants","getUsers","calculateExpiresInFromExp","fronteggLogger","fetchUserData","options","getSession","getHeaders","logger","child","tag","session","info","accessToken","reqHeaders","headers","authorization","debug","baseUserResult","tenantsResult","Promise","allSettled","status","baseUser","value","tenants","user","expiresIn","exp","e"],"sources":["../../../../../packages/nextjs/src/utils/fetchUserData/index.ts"],"sourcesContent":["import { AllUserData, FronteggNextJSSession } from '../../types';\nimport { getTenants, getUsers } from '../../api';\nimport { calculateExpiresInFromExp } from '../common';\nimport fronteggLogger from '../fronteggLogger';\n\ntype FetchUserDataOptions = {\n getSession: () => Promise<FronteggNextJSSession | undefined | null>;\n getHeaders: () => Promise<Record<string, string | string[] | undefined>>;\n};\n\nexport default async function fetchUserData(options: FetchUserDataOptions): Promise<AllUserData> {\n const { getSession, getHeaders } = options;\n\n const logger = fronteggLogger.child({ tag: 'fetchUserData.getAllUserData' });\n try {\n const session = await getSession();\n if (!session) {\n logger.info('No session found');\n return {};\n }\n\n const { accessToken } = session;\n const reqHeaders = await getHeaders();\n const headers = { ...reqHeaders, authorization: `Bearer ${accessToken}` };\n\n logger.debug('Retrieving user data...');\n const [baseUserResult, tenantsResult] = await Promise.allSettled([getUsers(headers), getTenants(headers)]);\n logger.debug(\n 'Retrieved user data:',\n 'baseUserResult: ',\n baseUserResult.status,\n 'tenantsResult:',\n tenantsResult.status\n );\n\n const baseUser = baseUserResult.status === 'fulfilled' ? baseUserResult.value : null;\n const tenants = tenantsResult.status === 'fulfilled' ? tenantsResult.value : null;\n\n if (!baseUser || !tenants) {\n logger.info('No base user or tenants found');\n return {};\n }\n\n const user = {\n ...session.user,\n ...baseUser!,\n expiresIn: calculateExpiresInFromExp(session.user.exp),\n };\n\n logger.info('Retrieved all user data successfully');\n\n return { user, session, tenants };\n } catch (e: any) {\n // logger.error(e.message, e);\n return {};\n }\n}\n"],"mappings":";AACA,SAASA,UAAU,EAAEC,QAAQ,QAAQ,WAAW;AAChD,SAASC,yBAAyB,QAAQ,WAAW;AACrD,OAAOC,cAAc,MAAM,mBAAmB;AAO9C,eAAe,eAAeC,aAAa,CAACC,OAA6B,EAAwB;EAC/F,MAAM;IAAEC,UAAU;IAAEC;EAAW,CAAC,GAAGF,OAAO;EAE1C,MAAMG,MAAM,GAAGL,cAAc,CAACM,KAAK,CAAC;IAAEC,GAAG,EAAE;EAA+B,CAAC,CAAC;EAC5E,IAAI;IACF,MAAMC,OAAO,GAAG,MAAML,UAAU,EAAE;IAClC,IAAI,CAACK,OAAO,EAAE;MACZH,MAAM,CAACI,IAAI,CAAC,kBAAkB,CAAC;MAC/B,OAAO,CAAC,CAAC;IACX;IAEA,MAAM;MAAEC;IAAY,CAAC,GAAGF,OAAO;IAC/B,MAAMG,UAAU,GAAG,MAAMP,UAAU,EAAE;IACrC,MAAMQ,OAAO,gBAAQD,UAAU;MAAEE,aAAa,EAAG,UAASH,WAAY;IAAC,EAAE;IAEzEL,MAAM,CAACS,KAAK,CAAC,yBAAyB,CAAC;IACvC,MAAM,CAACC,cAAc,EAAEC,aAAa,CAAC,GAAG,MAAMC,OAAO,CAACC,UAAU,CAAC,CAACpB,QAAQ,CAACc,OAAO,CAAC,EAAEf,UAAU,CAACe,OAAO,CAAC,CAAC,CAAC;IAC1GP,MAAM,CAACS,KAAK,CACV,sBAAsB,EACtB,kBAAkB,EAClBC,cAAc,CAACI,MAAM,EACrB,gBAAgB,EAChBH,aAAa,CAACG,MAAM,CACrB;IAED,MAAMC,QAAQ,GAAGL,cAAc,CAACI,MAAM,KAAK,WAAW,GAAGJ,cAAc,CAACM,KAAK,GAAG,IAAI;IACpF,MAAMC,OAAO,GAAGN,aAAa,CAACG,MAAM,KAAK,WAAW,GAAGH,aAAa,CAACK,KAAK,GAAG,IAAI;IAEjF,IAAI,CAACD,QAAQ,IAAI,CAACE,OAAO,EAAE;MACzBjB,MAAM,CAACI,IAAI,CAAC,+BAA+B,CAAC;MAC5C,OAAO,CAAC,CAAC;IACX;IAEA,MAAMc,IAAI,gBACLf,OAAO,CAACe,IAAI,EACZH,QAAQ;MACXI,SAAS,EAAEzB,yBAAyB,CAACS,OAAO,CAACe,IAAI,CAACE,GAAG;IAAC,EACvD;IAEDpB,MAAM,CAACI,IAAI,CAAC,sCAAsC,CAAC;IAEnD,OAAO;MAAEc,IAAI;MAAEf,OAAO;MAAEc;IAAQ,CAAC;EACnC,CAAC,CAAC,OAAOI,CAAM,EAAE;IACf;IACA,OAAO,CAAC,CAAC;EACX;AACF"}
@@ -0,0 +1,6 @@
1
+ {
2
+ "sideEffects": false,
3
+ "module": "./index.js",
4
+ "main": "./index.js",
5
+ "types": "./index.d.ts"
6
+ }
@@ -0,0 +1,13 @@
1
+ /**
2
+ * Map between level code and severity message
3
+ */
4
+ export declare const LEVELS: Record<number, string>;
5
+ /**
6
+ * Map between severity message and level code
7
+ */
8
+ export declare const LEVEL_NAMES: {
9
+ error: number;
10
+ warn: number;
11
+ info: number;
12
+ debug: number;
13
+ };
@@ -0,0 +1,20 @@
1
+ /**
2
+ * Map between level code and severity message
3
+ */
4
+ export const LEVELS = {
5
+ 40: 'ERROR',
6
+ 30: 'WARN',
7
+ 20: 'INFO',
8
+ 10: 'DEBUG'
9
+ };
10
+
11
+ /**
12
+ * Map between severity message and level code
13
+ */
14
+ export const LEVEL_NAMES = {
15
+ error: 40,
16
+ warn: 30,
17
+ info: 20,
18
+ debug: 10
19
+ };
20
+ //# sourceMappingURL=constants.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"constants.js","names":["LEVELS","LEVEL_NAMES","error","warn","info","debug"],"sources":["../../../../../packages/nextjs/src/utils/fronteggLogger/constants.ts"],"sourcesContent":["/**\n * Map between level code and severity message\n */\nexport const LEVELS: Record<number, string> = {\n 40: 'ERROR',\n 30: 'WARN',\n 20: 'INFO',\n 10: 'DEBUG',\n};\n\n/**\n * Map between severity message and level code\n */\nexport const LEVEL_NAMES = {\n error: 40,\n warn: 30,\n info: 20,\n debug: 10,\n};\n"],"mappings":"AAAA;AACA;AACA;AACA,OAAO,MAAMA,MAA8B,GAAG;EAC5C,EAAE,EAAE,OAAO;EACX,EAAE,EAAE,MAAM;EACV,EAAE,EAAE,MAAM;EACV,EAAE,EAAE;AACN,CAAC;;AAED;AACA;AACA;AACA,OAAO,MAAMC,WAAW,GAAG;EACzBC,KAAK,EAAE,EAAE;EACTC,IAAI,EAAE,EAAE;EACRC,IAAI,EAAE,EAAE;EACRC,KAAK,EAAE;AACT,CAAC"}
@@ -0,0 +1,17 @@
1
+ import { LEVEL_NAMES } from './constants';
2
+ type FronteggLoggerOptions = {
3
+ tag: string;
4
+ level?: keyof typeof LEVEL_NAMES;
5
+ };
6
+ declare class FronteggLogger {
7
+ private readonly tag;
8
+ private readonly level;
9
+ constructor(options: FronteggLoggerOptions);
10
+ private prepare;
11
+ debug(...args: any[]): void;
12
+ info(...args: any[]): void;
13
+ warn(...args: any[]): void;
14
+ error(...args: any[]): void;
15
+ static child(options: FronteggLoggerOptions): FronteggLogger;
16
+ }
17
+ export default FronteggLogger;
@@ -0,0 +1,61 @@
1
+ import { LEVEL_NAMES, LEVELS } from './constants';
2
+
3
+ /**
4
+ * @see [enabling-debug-logging](https://docs.github.com/en/actions/monitoring-and-troubleshooting-workflows/enabling-debug-logging)
5
+ * in GitHub actions in failed tests for more debugging logs
6
+ */
7
+ const isGithubRunnerDebugMode = process.env.ACTIONS_STEP_DEBUG === 'true' || process.env.ACTIONS_RUNNER_DEBUG === 'true';
8
+ let logLevel = 'warn';
9
+ if (process.env.FRONTEGG_LOG_LEVEL) {
10
+ logLevel = process.env.FRONTEGG_LOG_LEVEL;
11
+ }
12
+ if (isGithubRunnerDebugMode) {
13
+ logLevel = 'debug';
14
+ }
15
+ if (Object.keys(LEVEL_NAMES).indexOf(logLevel) === -1) {
16
+ logLevel = 'warn';
17
+ }
18
+ const maxTagLength = 25;
19
+ function repeat(num) {
20
+ return [...new Array(num)].map(() => ' ').join('');
21
+ }
22
+ class FronteggLogger {
23
+ constructor(options) {
24
+ var _options$level;
25
+ this.tag = void 0;
26
+ this.level = void 0;
27
+ if (options.tag.length > maxTagLength) {
28
+ this.tag = options.tag.slice(0, 7) + '...' + options.tag.slice(options.tag.length - maxTagLength + 10);
29
+ } else {
30
+ this.tag = repeat(maxTagLength - options.tag.length) + options.tag;
31
+ }
32
+ this.level = (_options$level = options.level) != null ? _options$level : logLevel;
33
+ }
34
+ prepare(printLevel, args) {
35
+ const levelName = LEVELS[LEVEL_NAMES[printLevel]];
36
+ return [new Date().toISOString(), `|${levelName}| ${this.tag}:`, ...args];
37
+ }
38
+ debug(...args) {
39
+ if (LEVEL_NAMES[this.level] <= LEVEL_NAMES.debug) {
40
+ console.debug.apply(console, this.prepare('debug', args));
41
+ }
42
+ }
43
+ info(...args) {
44
+ if (LEVEL_NAMES[this.level] <= LEVEL_NAMES.info) {
45
+ console.info.apply(console, this.prepare('info', args));
46
+ }
47
+ }
48
+ warn(...args) {
49
+ if (LEVEL_NAMES[this.level] <= LEVEL_NAMES.warn) {
50
+ console.warn.apply(console, this.prepare('warn', args));
51
+ }
52
+ }
53
+ error(...args) {
54
+ console.error.apply(console, this.prepare('error', args));
55
+ }
56
+ static child(options) {
57
+ return new FronteggLogger(options);
58
+ }
59
+ }
60
+ export default FronteggLogger;
61
+ //# sourceMappingURL=index.js.map