@cabin-id/nextjs 1.0.0 → 1.0.2

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 (301) hide show
  1. package/dist/cjs/api/endpoints/AbstractApi.js +38 -0
  2. package/dist/cjs/api/endpoints/AbstractApi.js.map +1 -0
  3. package/dist/cjs/api/endpoints/UserApi.js +40 -0
  4. package/dist/cjs/api/endpoints/UserApi.js.map +1 -0
  5. package/dist/cjs/api/endpoints/index.js +32 -0
  6. package/dist/cjs/api/endpoints/index.js.map +1 -0
  7. package/dist/cjs/api/factory.js +60 -0
  8. package/dist/cjs/api/factory.js.map +1 -0
  9. package/dist/cjs/api/request.js +97 -0
  10. package/dist/cjs/api/request.js.map +1 -0
  11. package/dist/cjs/component.client.js +32 -0
  12. package/dist/cjs/component.client.js.map +1 -0
  13. package/dist/cjs/component.server.js +32 -0
  14. package/dist/cjs/component.server.js.map +1 -0
  15. package/dist/cjs/components/SignInButton.js +67 -0
  16. package/dist/cjs/components/SignInButton.js.map +1 -0
  17. package/dist/cjs/components/index.js +29 -0
  18. package/dist/cjs/components/index.js.map +1 -0
  19. package/dist/cjs/constants.js +122 -0
  20. package/dist/cjs/constants.js.map +1 -0
  21. package/dist/cjs/hooks/createContextAndHook.js +62 -0
  22. package/dist/cjs/hooks/createContextAndHook.js.map +1 -0
  23. package/dist/cjs/hooks/index.js +29 -0
  24. package/dist/cjs/hooks/index.js.map +1 -0
  25. package/dist/cjs/hooks/useSafeLayoutEffect.js +40 -0
  26. package/dist/cjs/hooks/useSafeLayoutEffect.js.map +1 -0
  27. package/dist/cjs/hooks/useUser.js +70 -0
  28. package/dist/cjs/hooks/useUser.js.map +1 -0
  29. package/dist/cjs/icons/logo.js +98 -0
  30. package/dist/cjs/icons/logo.js.map +1 -0
  31. package/dist/cjs/index.js +45 -0
  32. package/dist/cjs/index.js.map +1 -0
  33. package/dist/cjs/package.json +9 -0
  34. package/dist/cjs/provider/context.js +62 -0
  35. package/dist/cjs/provider/context.js.map +1 -0
  36. package/dist/cjs/provider/core.provider.js +49 -0
  37. package/dist/cjs/provider/core.provider.js.map +1 -0
  38. package/dist/cjs/provider/main.provider.js +45 -0
  39. package/dist/cjs/provider/main.provider.js.map +1 -0
  40. package/dist/cjs/server/auth.js +61 -0
  41. package/dist/cjs/server/auth.js.map +1 -0
  42. package/dist/cjs/server/client.js +35 -0
  43. package/dist/cjs/server/client.js.map +1 -0
  44. package/dist/cjs/server/createGetAuth.js +45 -0
  45. package/dist/cjs/server/createGetAuth.js.map +1 -0
  46. package/dist/cjs/server/createRedirect.js +90 -0
  47. package/dist/cjs/server/createRedirect.js.map +1 -0
  48. package/dist/cjs/server/errors.js +110 -0
  49. package/dist/cjs/server/errors.js.map +1 -0
  50. package/dist/cjs/server/getCurrentUser.js +36 -0
  51. package/dist/cjs/server/getCurrentUser.js.map +1 -0
  52. package/dist/cjs/server/index.js +32 -0
  53. package/dist/cjs/server/index.js.map +1 -0
  54. package/dist/cjs/server/middleware.js +193 -0
  55. package/dist/cjs/server/middleware.js.map +1 -0
  56. package/dist/cjs/server/protect.js +69 -0
  57. package/dist/cjs/server/protect.js.map +1 -0
  58. package/dist/cjs/server/routeMatcher.js +42 -0
  59. package/dist/cjs/server/routeMatcher.js.map +1 -0
  60. package/dist/cjs/server/serverRedirectWithAuth.js +39 -0
  61. package/dist/cjs/server/serverRedirectWithAuth.js.map +1 -0
  62. package/dist/cjs/server/type.js +17 -0
  63. package/dist/cjs/server/type.js.map +1 -0
  64. package/dist/cjs/server/utils.js +165 -0
  65. package/dist/cjs/server/utils.js.map +1 -0
  66. package/dist/cjs/styles/global.css +420 -0
  67. package/dist/cjs/styles/global.css.map +1 -0
  68. package/dist/cjs/tokens/authObjects.js +45 -0
  69. package/dist/cjs/tokens/authObjects.js.map +1 -0
  70. package/dist/cjs/tokens/authStatus.js +86 -0
  71. package/dist/cjs/tokens/authStatus.js.map +1 -0
  72. package/dist/cjs/tokens/authenticateContext.js +69 -0
  73. package/dist/cjs/tokens/authenticateContext.js.map +1 -0
  74. package/dist/cjs/tokens/cabinIdRequest.js +79 -0
  75. package/dist/cjs/tokens/cabinIdRequest.js.map +1 -0
  76. package/dist/cjs/tokens/cabinIdUrl.js +36 -0
  77. package/dist/cjs/tokens/cabinIdUrl.js.map +1 -0
  78. package/dist/cjs/tokens/request.js +58 -0
  79. package/dist/cjs/tokens/request.js.map +1 -0
  80. package/dist/cjs/types.js +17 -0
  81. package/dist/cjs/types.js.map +1 -0
  82. package/dist/cjs/utils/assertValidSecretKey.js +35 -0
  83. package/dist/cjs/utils/assertValidSecretKey.js.map +1 -0
  84. package/dist/cjs/utils/createCabinIdClient.js +38 -0
  85. package/dist/cjs/utils/createCabinIdClient.js.map +1 -0
  86. package/dist/cjs/utils/http.js +31 -0
  87. package/dist/cjs/utils/http.js.map +1 -0
  88. package/dist/cjs/utils/initial.js +45 -0
  89. package/dist/cjs/utils/initial.js.map +1 -0
  90. package/dist/cjs/utils/isomorphicAtob.js +36 -0
  91. package/dist/cjs/utils/isomorphicAtob.js.map +1 -0
  92. package/dist/cjs/utils/isomorphicBtoa.js +36 -0
  93. package/dist/cjs/utils/isomorphicBtoa.js.map +1 -0
  94. package/dist/cjs/utils/key.js +49 -0
  95. package/dist/cjs/utils/key.js.map +1 -0
  96. package/dist/cjs/utils/path.js +33 -0
  97. package/dist/cjs/utils/path.js.map +1 -0
  98. package/dist/cjs/utils/response.js +76 -0
  99. package/dist/cjs/utils/response.js.map +1 -0
  100. package/dist/cjs/utils.js +52 -0
  101. package/dist/cjs/utils.js.map +1 -0
  102. package/dist/esm/api/endpoints/AbstractApi.js +14 -0
  103. package/dist/esm/api/endpoints/AbstractApi.js.map +1 -0
  104. package/dist/esm/api/endpoints/UserApi.js +16 -0
  105. package/dist/esm/api/endpoints/UserApi.js.map +1 -0
  106. package/dist/esm/api/endpoints/index.js +7 -0
  107. package/dist/esm/api/endpoints/index.js.map +1 -0
  108. package/dist/esm/api/factory.js +35 -0
  109. package/dist/esm/api/factory.js.map +1 -0
  110. package/dist/esm/api/request.js +63 -0
  111. package/dist/esm/api/request.js.map +1 -0
  112. package/dist/esm/component.client.js +7 -0
  113. package/dist/esm/component.client.js.map +1 -0
  114. package/dist/esm/component.server.js +7 -0
  115. package/dist/esm/component.server.js.map +1 -0
  116. package/dist/esm/components/SignInButton.js +33 -0
  117. package/dist/esm/components/SignInButton.js.map +1 -0
  118. package/dist/esm/components/index.js +5 -0
  119. package/dist/esm/components/index.js.map +1 -0
  120. package/dist/esm/constants.js +88 -0
  121. package/dist/esm/constants.js.map +1 -0
  122. package/dist/esm/hooks/createContextAndHook.js +27 -0
  123. package/dist/esm/hooks/createContextAndHook.js.map +1 -0
  124. package/dist/esm/hooks/index.js +5 -0
  125. package/dist/esm/hooks/index.js.map +1 -0
  126. package/dist/esm/hooks/useSafeLayoutEffect.js +6 -0
  127. package/dist/esm/hooks/useSafeLayoutEffect.js.map +1 -0
  128. package/dist/esm/hooks/useUser.js +54 -0
  129. package/dist/esm/hooks/useUser.js.map +1 -0
  130. package/dist/esm/icons/logo.js +64 -0
  131. package/dist/esm/icons/logo.js.map +1 -0
  132. package/dist/esm/index.js +16 -0
  133. package/dist/esm/index.js.map +1 -0
  134. package/dist/esm/package.json +9 -0
  135. package/dist/esm/provider/context.js +24 -0
  136. package/dist/esm/provider/context.js.map +1 -0
  137. package/dist/esm/provider/core.provider.js +15 -0
  138. package/dist/esm/provider/core.provider.js.map +1 -0
  139. package/dist/esm/provider/main.provider.js +11 -0
  140. package/dist/esm/provider/main.provider.js.map +1 -0
  141. package/dist/esm/server/auth.js +37 -0
  142. package/dist/esm/server/auth.js.map +1 -0
  143. package/dist/esm/server/client.js +11 -0
  144. package/dist/esm/server/client.js.map +1 -0
  145. package/dist/esm/server/createGetAuth.js +23 -0
  146. package/dist/esm/server/createGetAuth.js.map +1 -0
  147. package/dist/esm/server/createRedirect.js +66 -0
  148. package/dist/esm/server/createRedirect.js.map +1 -0
  149. package/dist/esm/server/errors.js +78 -0
  150. package/dist/esm/server/errors.js.map +1 -0
  151. package/dist/esm/server/getCurrentUser.js +12 -0
  152. package/dist/esm/server/getCurrentUser.js.map +1 -0
  153. package/dist/esm/server/index.js +7 -0
  154. package/dist/esm/server/index.js.map +1 -0
  155. package/dist/esm/server/middleware.js +175 -0
  156. package/dist/esm/server/middleware.js.map +1 -0
  157. package/dist/esm/server/protect.js +45 -0
  158. package/dist/esm/server/protect.js.map +1 -0
  159. package/dist/esm/server/routeMatcher.js +18 -0
  160. package/dist/esm/server/routeMatcher.js.map +1 -0
  161. package/dist/esm/server/serverRedirectWithAuth.js +15 -0
  162. package/dist/esm/server/serverRedirectWithAuth.js.map +1 -0
  163. package/dist/esm/server/type.js +1 -0
  164. package/dist/esm/server/type.js.map +1 -0
  165. package/dist/esm/server/utils.js +132 -0
  166. package/dist/esm/server/utils.js.map +1 -0
  167. package/dist/esm/styles/global.css +420 -0
  168. package/dist/esm/styles/global.css.map +1 -0
  169. package/dist/esm/tokens/authObjects.js +20 -0
  170. package/dist/esm/tokens/authObjects.js.map +1 -0
  171. package/dist/esm/tokens/authStatus.js +59 -0
  172. package/dist/esm/tokens/authStatus.js.map +1 -0
  173. package/dist/esm/tokens/authenticateContext.js +45 -0
  174. package/dist/esm/tokens/authenticateContext.js.map +1 -0
  175. package/dist/esm/tokens/cabinIdRequest.js +55 -0
  176. package/dist/esm/tokens/cabinIdRequest.js.map +1 -0
  177. package/dist/esm/tokens/cabinIdUrl.js +12 -0
  178. package/dist/esm/tokens/cabinIdUrl.js.map +1 -0
  179. package/dist/esm/tokens/request.js +34 -0
  180. package/dist/esm/tokens/request.js.map +1 -0
  181. package/dist/esm/types.js +1 -0
  182. package/dist/esm/types.js.map +1 -0
  183. package/dist/esm/utils/assertValidSecretKey.js +11 -0
  184. package/dist/esm/utils/assertValidSecretKey.js.map +1 -0
  185. package/dist/esm/utils/createCabinIdClient.js +17 -0
  186. package/dist/esm/utils/createCabinIdClient.js.map +1 -0
  187. package/dist/esm/utils/http.js +7 -0
  188. package/dist/esm/utils/http.js.map +1 -0
  189. package/dist/esm/utils/initial.js +21 -0
  190. package/dist/esm/utils/initial.js.map +1 -0
  191. package/dist/esm/utils/isomorphicAtob.js +12 -0
  192. package/dist/esm/utils/isomorphicAtob.js.map +1 -0
  193. package/dist/esm/utils/isomorphicBtoa.js +12 -0
  194. package/dist/esm/utils/isomorphicBtoa.js.map +1 -0
  195. package/dist/esm/utils/key.js +24 -0
  196. package/dist/esm/utils/key.js.map +1 -0
  197. package/dist/esm/utils/path.js +9 -0
  198. package/dist/esm/utils/path.js.map +1 -0
  199. package/dist/esm/utils/response.js +49 -0
  200. package/dist/esm/utils/response.js.map +1 -0
  201. package/dist/esm/utils.js +27 -0
  202. package/dist/esm/utils.js.map +1 -0
  203. package/dist/types/api/endpoints/AbstractApi.d.ts +7 -0
  204. package/dist/types/api/endpoints/AbstractApi.d.ts.map +1 -0
  205. package/dist/types/api/endpoints/UserApi.d.ts +6 -0
  206. package/dist/types/api/endpoints/UserApi.d.ts.map +1 -0
  207. package/dist/types/api/endpoints/index.d.ts +3 -0
  208. package/dist/types/api/endpoints/index.d.ts.map +1 -0
  209. package/dist/types/api/factory.d.ts +35 -0
  210. package/dist/types/api/factory.d.ts.map +1 -0
  211. package/dist/types/api/request.d.ts +33 -0
  212. package/dist/types/api/request.d.ts.map +1 -0
  213. package/dist/types/component.client.d.ts +3 -0
  214. package/dist/types/component.client.d.ts.map +1 -0
  215. package/dist/types/component.server.d.ts +3 -0
  216. package/dist/types/component.server.d.ts.map +1 -0
  217. package/dist/types/components/SignInButton.d.ts +3 -0
  218. package/dist/types/components/SignInButton.d.ts.map +1 -0
  219. package/dist/types/components/index.d.ts +2 -0
  220. package/dist/types/components/index.d.ts.map +1 -0
  221. package/dist/types/constants.d.ts +69 -0
  222. package/dist/types/constants.d.ts.map +1 -0
  223. package/dist/types/hooks/createContextAndHook.d.ts +18 -0
  224. package/dist/types/hooks/createContextAndHook.d.ts.map +1 -0
  225. package/dist/types/hooks/index.d.ts +2 -0
  226. package/dist/types/hooks/index.d.ts.map +1 -0
  227. package/dist/types/hooks/useSafeLayoutEffect.d.ts +3 -0
  228. package/dist/types/hooks/useSafeLayoutEffect.d.ts.map +1 -0
  229. package/dist/types/hooks/useUser.d.ts +36 -0
  230. package/dist/types/hooks/useUser.d.ts.map +1 -0
  231. package/dist/types/icons/logo.d.ts +3 -0
  232. package/dist/types/icons/logo.d.ts.map +1 -0
  233. package/dist/types/index.d.ts +8 -0
  234. package/dist/types/index.d.ts.map +1 -0
  235. package/dist/types/provider/context.d.ts +15 -0
  236. package/dist/types/provider/context.d.ts.map +1 -0
  237. package/dist/types/provider/core.provider.d.ts +6 -0
  238. package/dist/types/provider/core.provider.d.ts.map +1 -0
  239. package/dist/types/provider/main.provider.d.ts +5 -0
  240. package/dist/types/provider/main.provider.d.ts.map +1 -0
  241. package/dist/types/server/auth.d.ts +11 -0
  242. package/dist/types/server/auth.d.ts.map +1 -0
  243. package/dist/types/server/client.d.ts +3 -0
  244. package/dist/types/server/client.d.ts.map +1 -0
  245. package/dist/types/server/createGetAuth.d.ts +5 -0
  246. package/dist/types/server/createGetAuth.d.ts.map +1 -0
  247. package/dist/types/server/createRedirect.d.ts +21 -0
  248. package/dist/types/server/createRedirect.d.ts.map +1 -0
  249. package/dist/types/server/errors.d.ts +10 -0
  250. package/dist/types/server/errors.d.ts.map +1 -0
  251. package/dist/types/server/getCurrentUser.d.ts +3 -0
  252. package/dist/types/server/getCurrentUser.d.ts.map +1 -0
  253. package/dist/types/server/index.d.ts +3 -0
  254. package/dist/types/server/index.d.ts.map +1 -0
  255. package/dist/types/server/middleware.d.ts +33 -0
  256. package/dist/types/server/middleware.d.ts.map +1 -0
  257. package/dist/types/server/protect.d.ts +34 -0
  258. package/dist/types/server/protect.d.ts.map +1 -0
  259. package/dist/types/server/routeMatcher.d.ts +10 -0
  260. package/dist/types/server/routeMatcher.d.ts.map +1 -0
  261. package/dist/types/server/serverRedirectWithAuth.d.ts +3 -0
  262. package/dist/types/server/serverRedirectWithAuth.d.ts.map +1 -0
  263. package/dist/types/server/type.d.ts +14 -0
  264. package/dist/types/server/type.d.ts.map +1 -0
  265. package/dist/types/server/utils.d.ts +17 -0
  266. package/dist/types/server/utils.d.ts.map +1 -0
  267. package/dist/types/tokens/authObjects.d.ts +37 -0
  268. package/dist/types/tokens/authObjects.d.ts.map +1 -0
  269. package/dist/types/tokens/authStatus.d.ts +51 -0
  270. package/dist/types/tokens/authStatus.d.ts.map +1 -0
  271. package/dist/types/tokens/authenticateContext.d.ts +40 -0
  272. package/dist/types/tokens/authenticateContext.d.ts.map +1 -0
  273. package/dist/types/tokens/cabinIdRequest.d.ts +24 -0
  274. package/dist/types/tokens/cabinIdRequest.d.ts.map +1 -0
  275. package/dist/types/tokens/cabinIdUrl.d.ts +18 -0
  276. package/dist/types/tokens/cabinIdUrl.d.ts.map +1 -0
  277. package/dist/types/tokens/request.d.ts +4 -0
  278. package/dist/types/tokens/request.d.ts.map +1 -0
  279. package/dist/types/types.d.ts +34 -0
  280. package/dist/types/types.d.ts.map +1 -0
  281. package/dist/types/utils/assertValidSecretKey.d.ts +2 -0
  282. package/dist/types/utils/assertValidSecretKey.d.ts.map +1 -0
  283. package/dist/types/utils/createCabinIdClient.d.ts +5 -0
  284. package/dist/types/utils/createCabinIdClient.d.ts.map +1 -0
  285. package/dist/types/utils/http.d.ts +4 -0
  286. package/dist/types/utils/http.d.ts.map +1 -0
  287. package/dist/types/utils/initial.d.ts +5 -0
  288. package/dist/types/utils/initial.d.ts.map +1 -0
  289. package/dist/types/utils/isomorphicAtob.d.ts +6 -0
  290. package/dist/types/utils/isomorphicAtob.d.ts.map +1 -0
  291. package/dist/types/utils/isomorphicBtoa.d.ts +2 -0
  292. package/dist/types/utils/isomorphicBtoa.d.ts.map +1 -0
  293. package/dist/types/utils/key.d.ts +5 -0
  294. package/dist/types/utils/key.d.ts.map +1 -0
  295. package/dist/types/utils/path.d.ts +4 -0
  296. package/dist/types/utils/path.d.ts.map +1 -0
  297. package/dist/types/utils/response.d.ts +13 -0
  298. package/dist/types/utils/response.d.ts.map +1 -0
  299. package/dist/types/utils.d.ts +5 -0
  300. package/dist/types/utils.d.ts.map +1 -0
  301. package/package.json +1 -1
@@ -0,0 +1,69 @@
1
+ "use strict";
2
+ var __defProp = Object.defineProperty;
3
+ var __getOwnPropDesc = Object.getOwnPropertyDescriptor;
4
+ var __getOwnPropNames = Object.getOwnPropertyNames;
5
+ var __hasOwnProp = Object.prototype.hasOwnProperty;
6
+ var __export = (target, all) => {
7
+ for (var name in all)
8
+ __defProp(target, name, { get: all[name], enumerable: true });
9
+ };
10
+ var __copyProps = (to, from, except, desc) => {
11
+ if (from && typeof from === "object" || typeof from === "function") {
12
+ for (let key of __getOwnPropNames(from))
13
+ if (!__hasOwnProp.call(to, key) && key !== except)
14
+ __defProp(to, key, { get: () => from[key], enumerable: !(desc = __getOwnPropDesc(from, key)) || desc.enumerable });
15
+ }
16
+ return to;
17
+ };
18
+ var __toCommonJS = (mod) => __copyProps(__defProp({}, "__esModule", { value: true }), mod);
19
+ var protect_exports = {};
20
+ __export(protect_exports, {
21
+ createProtect: () => createProtect
22
+ });
23
+ module.exports = __toCommonJS(protect_exports);
24
+ var import_constants = require("../constants");
25
+ const createProtect = (opts) => {
26
+ const { redirectToSignIn, authObject, redirect, notFound, request } = opts;
27
+ return (...args) => {
28
+ var _a, _b, _c, _d, _e, _f;
29
+ const optionValuesAsParam = ((_a = args[0]) == null ? void 0 : _a.unauthenticatedUrl) || ((_b = args[0]) == null ? void 0 : _b.unauthorizedUrl);
30
+ const paramsOrFunction = optionValuesAsParam ? void 0 : args[0];
31
+ const unauthenticatedUrl = ((_c = args[0]) == null ? void 0 : _c.unauthenticatedUrl) || ((_d = args[1]) == null ? void 0 : _d.unauthenticatedUrl);
32
+ const unauthorizedUrl = ((_e = args[0]) == null ? void 0 : _e.unauthorizedUrl) || ((_f = args[1]) == null ? void 0 : _f.unauthorizedUrl);
33
+ const handleUnauthenticated = () => {
34
+ if (unauthenticatedUrl) {
35
+ return redirect(unauthenticatedUrl);
36
+ }
37
+ if (isPageRequest(request)) {
38
+ return redirectToSignIn();
39
+ }
40
+ return notFound();
41
+ };
42
+ const handleUnauthorized = () => {
43
+ if (unauthorizedUrl) {
44
+ return redirect(unauthorizedUrl);
45
+ }
46
+ return notFound();
47
+ };
48
+ if (!authObject.userId) {
49
+ return handleUnauthenticated();
50
+ }
51
+ if (!paramsOrFunction) {
52
+ return authObject;
53
+ }
54
+ return handleUnauthorized();
55
+ };
56
+ };
57
+ const isServerActionRequest = (req) => {
58
+ var _a, _b;
59
+ return !!req.headers.get(import_constants.constants.NextHeaders.NextUrl) && (((_a = req.headers.get(import_constants.constants.Headers.Accept)) == null ? void 0 : _a.includes("text/x-component")) || ((_b = req.headers.get(import_constants.constants.Headers.ContentType)) == null ? void 0 : _b.includes("multipart/form-data")) || !!req.headers.get(import_constants.constants.NextHeaders.NextAction));
60
+ };
61
+ const isPageRequest = (req) => {
62
+ var _a;
63
+ return req.headers.get(import_constants.constants.Headers.SecFetchDest) === "document" || ((_a = req.headers.get(import_constants.constants.Headers.Accept)) == null ? void 0 : _a.includes("text/html")) || !!req.headers.get(import_constants.constants.NextHeaders.NextUrl) && !isServerActionRequest(req) || !!req.headers.get(import_constants.constants.NextHeaders.NextjsData);
64
+ };
65
+ // Annotate the CommonJS export names for ESM import in node:
66
+ 0 && (module.exports = {
67
+ createProtect
68
+ });
69
+ //# sourceMappingURL=protect.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"sources":["../../../src/server/protect.ts"],"sourcesContent":["import { AuthObject, SignedInAuthObject } from '../tokens/authObjects';\nimport { constants } from '../constants';\nimport { RedirectFun } from './createRedirect';\n\ntype AuthProtectOptions = {\n unauthorizedUrl?: string;\n unauthenticatedUrl?: string;\n};\n\n/**\n * Throws a Nextjs notFound error if user is not authenticated or authorized.\n */\nexport interface AuthProtect {\n // (\n // params?: CheckAuthorizationParamsWithCustomPermissions,\n // options?: AuthProtectOptions\n // ): SignedInAuthObject;\n\n // (\n // params?: (has: CheckAuthorizationWithCustomPermissions) => boolean,\n // options?: AuthProtectOptions\n // ): SignedInAuthObject;\n\n (options?: AuthProtectOptions): SignedInAuthObject;\n}\n\nexport const createProtect = (opts: {\n request: Request;\n authObject: AuthObject;\n /**\n * middleware and pages throw a notFound error if signed out\n * but the middleware needs to throw an error it can catch\n * use this callback to customise the behavior\n */\n notFound: () => never;\n /**\n * see {@link notFound} above\n */\n redirect: (url: string) => void;\n /**\n * protect() in middleware redirects to signInUrl if signed out\n * protect() in pages throws a notFound error if signed out\n * use this callback to customise the behavior\n */\n redirectToSignIn: RedirectFun<unknown>;\n}): AuthProtect => {\n const { redirectToSignIn, authObject, redirect, notFound, request } = opts;\n\n return ((...args: any[]) => {\n const optionValuesAsParam =\n args[0]?.unauthenticatedUrl || args[0]?.unauthorizedUrl;\n const paramsOrFunction = optionValuesAsParam ? undefined : args[0];\n const unauthenticatedUrl = (args[0]?.unauthenticatedUrl ||\n args[1]?.unauthenticatedUrl) as string | undefined;\n const unauthorizedUrl = (args[0]?.unauthorizedUrl ||\n args[1]?.unauthorizedUrl) as string | undefined;\n\n const handleUnauthenticated = () => {\n if (unauthenticatedUrl) {\n return redirect(unauthenticatedUrl);\n }\n if (isPageRequest(request)) {\n // TODO: Handle runtime values. What happens if runtime values are set in middleware and in ClerkProvider as well?\n return redirectToSignIn();\n }\n return notFound();\n };\n\n const handleUnauthorized = () => {\n if (unauthorizedUrl) {\n return redirect(unauthorizedUrl);\n }\n return notFound();\n };\n\n /**\n * User is not authenticated\n */\n if (!authObject.userId) {\n return handleUnauthenticated();\n }\n\n /**\n * User is authenticated\n */\n if (!paramsOrFunction) {\n return authObject;\n }\n\n /**\n * if a function is passed and returns false then throw not found\n */\n // if (typeof paramsOrFunction === 'function') {\n // if (paramsOrFunction(authObject.has)) {\n // return authObject;\n // }\n // return handleUnauthorized();\n // }\n\n /**\n * Checking if user is authorized when permission or role is passed\n */\n // if (authObject.has(paramsOrFunction)) {\n // return authObject;\n // }\n\n return handleUnauthorized();\n }) as AuthProtect;\n};\n\nconst isServerActionRequest = (req: Request) => {\n return (\n !!req.headers.get(constants.NextHeaders.NextUrl) &&\n (req.headers.get(constants.Headers.Accept)?.includes('text/x-component') ||\n req.headers\n .get(constants.Headers.ContentType)\n ?.includes('multipart/form-data') ||\n !!req.headers.get(constants.NextHeaders.NextAction))\n );\n};\n\nconst isPageRequest = (req: Request): boolean => {\n return (\n req.headers.get(constants.Headers.SecFetchDest) === 'document' ||\n req.headers.get(constants.Headers.Accept)?.includes('text/html') ||\n (!!req.headers.get(constants.NextHeaders.NextUrl) &&\n !isServerActionRequest(req)) ||\n !!req.headers.get(constants.NextHeaders.NextjsData)\n );\n};\n\n// In case we want to handle router handlers and server actions differently in the future\n// const isRouteHandler = (req: Request) => {\n// return !isPageRequest(req) && !isServerAction(req);\n// };\n"],"mappings":";;;;;;;;;;;;;;;;;;AAAA;AAAA;AAAA;AAAA;AAAA;AACA,uBAA0B;AAyBnB,MAAM,gBAAgB,CAAC,SAmBX;AACjB,QAAM,EAAE,kBAAkB,YAAY,UAAU,UAAU,QAAQ,IAAI;AAEtE,SAAQ,IAAI,SAAgB;AAhD9B;AAiDI,UAAM,wBACJ,UAAK,CAAC,MAAN,mBAAS,yBAAsB,UAAK,CAAC,MAAN,mBAAS;AAC1C,UAAM,mBAAmB,sBAAsB,SAAY,KAAK,CAAC;AACjE,UAAM,uBAAsB,UAAK,CAAC,MAAN,mBAAS,yBACnC,UAAK,CAAC,MAAN,mBAAS;AACX,UAAM,oBAAmB,UAAK,CAAC,MAAN,mBAAS,sBAChC,UAAK,CAAC,MAAN,mBAAS;AAEX,UAAM,wBAAwB,MAAM;AAClC,UAAI,oBAAoB;AACtB,eAAO,SAAS,kBAAkB;AAAA,MACpC;AACA,UAAI,cAAc,OAAO,GAAG;AAE1B,eAAO,iBAAiB;AAAA,MAC1B;AACA,aAAO,SAAS;AAAA,IAClB;AAEA,UAAM,qBAAqB,MAAM;AAC/B,UAAI,iBAAiB;AACnB,eAAO,SAAS,eAAe;AAAA,MACjC;AACA,aAAO,SAAS;AAAA,IAClB;AAKA,QAAI,CAAC,WAAW,QAAQ;AACtB,aAAO,sBAAsB;AAAA,IAC/B;AAKA,QAAI,CAAC,kBAAkB;AACrB,aAAO;AAAA,IACT;AAmBA,WAAO,mBAAmB;AAAA,EAC5B;AACF;AAEA,MAAM,wBAAwB,CAAC,QAAiB;AA9GhD;AA+GE,SACE,CAAC,CAAC,IAAI,QAAQ,IAAI,2BAAU,YAAY,OAAO,QAC9C,SAAI,QAAQ,IAAI,2BAAU,QAAQ,MAAM,MAAxC,mBAA2C,SAAS,0BACnD,SAAI,QACD,IAAI,2BAAU,QAAQ,WAAW,MADpC,mBAEI,SAAS,2BACb,CAAC,CAAC,IAAI,QAAQ,IAAI,2BAAU,YAAY,UAAU;AAExD;AAEA,MAAM,gBAAgB,CAAC,QAA0B;AAzHjD;AA0HE,SACE,IAAI,QAAQ,IAAI,2BAAU,QAAQ,YAAY,MAAM,gBACpD,SAAI,QAAQ,IAAI,2BAAU,QAAQ,MAAM,MAAxC,mBAA2C,SAAS,iBACnD,CAAC,CAAC,IAAI,QAAQ,IAAI,2BAAU,YAAY,OAAO,KAC9C,CAAC,sBAAsB,GAAG,KAC5B,CAAC,CAAC,IAAI,QAAQ,IAAI,2BAAU,YAAY,UAAU;AAEtD;","names":[]}
@@ -0,0 +1,42 @@
1
+ "use strict";
2
+ var __defProp = Object.defineProperty;
3
+ var __getOwnPropDesc = Object.getOwnPropertyDescriptor;
4
+ var __getOwnPropNames = Object.getOwnPropertyNames;
5
+ var __hasOwnProp = Object.prototype.hasOwnProperty;
6
+ var __export = (target, all) => {
7
+ for (var name in all)
8
+ __defProp(target, name, { get: all[name], enumerable: true });
9
+ };
10
+ var __copyProps = (to, from, except, desc) => {
11
+ if (from && typeof from === "object" || typeof from === "function") {
12
+ for (let key of __getOwnPropNames(from))
13
+ if (!__hasOwnProp.call(to, key) && key !== except)
14
+ __defProp(to, key, { get: () => from[key], enumerable: !(desc = __getOwnPropDesc(from, key)) || desc.enumerable });
15
+ }
16
+ return to;
17
+ };
18
+ var __toCommonJS = (mod) => __copyProps(__defProp({}, "__esModule", { value: true }), mod);
19
+ var routeMatcher_exports = {};
20
+ __export(routeMatcher_exports, {
21
+ createRouteMatcher: () => createRouteMatcher
22
+ });
23
+ module.exports = __toCommonJS(routeMatcher_exports);
24
+ var import_utils = require("../utils");
25
+ const createRouteMatcher = (routes) => {
26
+ if (typeof routes === "function") {
27
+ return (req) => routes(req);
28
+ }
29
+ const routePatterns = [routes || ""].flat().filter(Boolean);
30
+ const matchers = precomputePathRegex(routePatterns);
31
+ return (req) => matchers.some((matcher) => matcher.test(req.nextUrl.pathname));
32
+ };
33
+ const precomputePathRegex = (patterns) => {
34
+ return patterns.map(
35
+ (pattern) => pattern instanceof RegExp ? pattern : import_utils.paths.toRegexp(pattern)
36
+ );
37
+ };
38
+ // Annotate the CommonJS export names for ESM import in node:
39
+ 0 && (module.exports = {
40
+ createRouteMatcher
41
+ });
42
+ //# sourceMappingURL=routeMatcher.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"sources":["../../../src/server/routeMatcher.ts"],"sourcesContent":["import type Link from 'next/link';\nimport type { NextRequest } from 'next/server';\nimport type { Autocomplete } from '../types';\nimport { paths } from '../utils';\n\ntype WithPathPatternWildcard<T> = `${T & string}(.*)`;\ntype NextTypedRoute<T = Parameters<typeof Link>['0']['href']> = T extends string\n ? T\n : never;\n\ntype RouteMatcherWithNextTypedRoutes = Autocomplete<\n WithPathPatternWildcard<NextTypedRoute> | NextTypedRoute\n>;\n\nexport type RouteMatcherParam =\n | Array<RegExp | RouteMatcherWithNextTypedRoutes>\n | RegExp\n | RouteMatcherWithNextTypedRoutes\n | ((req: NextRequest) => boolean);\n\nexport const createRouteMatcher = (routes: RouteMatcherParam) => {\n if (typeof routes === 'function') {\n return (req: NextRequest) => routes(req);\n }\n const routePatterns = [routes || ''].flat().filter(Boolean);\n const matchers = precomputePathRegex(routePatterns);\n return (req: NextRequest) =>\n matchers.some((matcher) => matcher.test(req.nextUrl.pathname));\n};\n\nconst precomputePathRegex = (patterns: Array<string | RegExp>) => {\n return patterns.map((pattern) =>\n pattern instanceof RegExp ? pattern : paths.toRegexp(pattern)\n );\n};\n"],"mappings":";;;;;;;;;;;;;;;;;;AAAA;AAAA;AAAA;AAAA;AAAA;AAGA,mBAAsB;AAiBf,MAAM,qBAAqB,CAAC,WAA8B;AAC/D,MAAI,OAAO,WAAW,YAAY;AAChC,WAAO,CAAC,QAAqB,OAAO,GAAG;AAAA,EACzC;AACA,QAAM,gBAAgB,CAAC,UAAU,EAAE,EAAE,KAAK,EAAE,OAAO,OAAO;AAC1D,QAAM,WAAW,oBAAoB,aAAa;AAClD,SAAO,CAAC,QACN,SAAS,KAAK,CAAC,YAAY,QAAQ,KAAK,IAAI,QAAQ,QAAQ,CAAC;AACjE;AAEA,MAAM,sBAAsB,CAAC,aAAqC;AAChE,SAAO,SAAS;AAAA,IAAI,CAAC,YACnB,mBAAmB,SAAS,UAAU,mBAAM,SAAS,OAAO;AAAA,EAC9D;AACF;","names":[]}
@@ -0,0 +1,39 @@
1
+ "use strict";
2
+ var __defProp = Object.defineProperty;
3
+ var __getOwnPropDesc = Object.getOwnPropertyDescriptor;
4
+ var __getOwnPropNames = Object.getOwnPropertyNames;
5
+ var __hasOwnProp = Object.prototype.hasOwnProperty;
6
+ var __export = (target, all) => {
7
+ for (var name in all)
8
+ __defProp(target, name, { get: all[name], enumerable: true });
9
+ };
10
+ var __copyProps = (to, from, except, desc) => {
11
+ if (from && typeof from === "object" || typeof from === "function") {
12
+ for (let key of __getOwnPropNames(from))
13
+ if (!__hasOwnProp.call(to, key) && key !== except)
14
+ __defProp(to, key, { get: () => from[key], enumerable: !(desc = __getOwnPropDesc(from, key)) || desc.enumerable });
15
+ }
16
+ return to;
17
+ };
18
+ var __toCommonJS = (mod) => __copyProps(__defProp({}, "__esModule", { value: true }), mod);
19
+ var serverRedirectWithAuth_exports = {};
20
+ __export(serverRedirectWithAuth_exports, {
21
+ serverRedirectWithAuth: () => serverRedirectWithAuth
22
+ });
23
+ module.exports = __toCommonJS(serverRedirectWithAuth_exports);
24
+ var import_server = require("next/server");
25
+ var import_constants = require("../constants");
26
+ const serverRedirectWithAuth = (cabinIdRequest, res) => {
27
+ const location = res.headers.get("location");
28
+ const shouldAppendDevBrowser = res.headers.get(import_constants.constants.Headers.CabinIdRedirectTo) === "true";
29
+ if (shouldAppendDevBrowser && !!location && cabinIdRequest.cabinIdUrl.isCrossOrigin(location)) {
30
+ const url = new URL(location);
31
+ return import_server.NextResponse.redirect(url.href, res);
32
+ }
33
+ return res;
34
+ };
35
+ // Annotate the CommonJS export names for ESM import in node:
36
+ 0 && (module.exports = {
37
+ serverRedirectWithAuth
38
+ });
39
+ //# sourceMappingURL=serverRedirectWithAuth.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"sources":["../../../src/server/serverRedirectWithAuth.ts"],"sourcesContent":["import { NextResponse } from 'next/server';\nimport { constants } from '../constants';\nimport { CabinIdRequest } from 'src/tokens/cabinIdRequest';\n\nexport const serverRedirectWithAuth = (\n cabinIdRequest: CabinIdRequest,\n res: Response\n) => {\n const location = res.headers.get('location');\n const shouldAppendDevBrowser =\n res.headers.get(constants.Headers.CabinIdRedirectTo) === 'true';\n\n if (\n shouldAppendDevBrowser &&\n !!location &&\n cabinIdRequest.cabinIdUrl.isCrossOrigin(location)\n ) {\n const url = new URL(location);\n return NextResponse.redirect(url.href, res);\n }\n return res;\n};\n"],"mappings":";;;;;;;;;;;;;;;;;;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA,oBAA6B;AAC7B,uBAA0B;AAGnB,MAAM,yBAAyB,CACpC,gBACA,QACG;AACH,QAAM,WAAW,IAAI,QAAQ,IAAI,UAAU;AAC3C,QAAM,yBACJ,IAAI,QAAQ,IAAI,2BAAU,QAAQ,iBAAiB,MAAM;AAE3D,MACE,0BACA,CAAC,CAAC,YACF,eAAe,WAAW,cAAc,QAAQ,GAChD;AACA,UAAM,MAAM,IAAI,IAAI,QAAQ;AAC5B,WAAO,2BAAa,SAAS,IAAI,MAAM,GAAG;AAAA,EAC5C;AACA,SAAO;AACT;","names":[]}
@@ -0,0 +1,17 @@
1
+ "use strict";
2
+ var __defProp = Object.defineProperty;
3
+ var __getOwnPropDesc = Object.getOwnPropertyDescriptor;
4
+ var __getOwnPropNames = Object.getOwnPropertyNames;
5
+ var __hasOwnProp = Object.prototype.hasOwnProperty;
6
+ var __copyProps = (to, from, except, desc) => {
7
+ if (from && typeof from === "object" || typeof from === "function") {
8
+ for (let key of __getOwnPropNames(from))
9
+ if (!__hasOwnProp.call(to, key) && key !== except)
10
+ __defProp(to, key, { get: () => from[key], enumerable: !(desc = __getOwnPropDesc(from, key)) || desc.enumerable });
11
+ }
12
+ return to;
13
+ };
14
+ var __toCommonJS = (mod) => __copyProps(__defProp({}, "__esModule", { value: true }), mod);
15
+ var type_exports = {};
16
+ module.exports = __toCommonJS(type_exports);
17
+ //# sourceMappingURL=type.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"sources":["../../../src/server/type.ts"],"sourcesContent":["import type { IncomingMessage } from 'http';\nimport type { NextApiRequest } from 'next';\nimport type { NextApiRequestCookies } from 'next/dist/server/api-utils';\nimport type { NextMiddleware, NextRequest } from 'next/server';\n\n// Request contained in GetServerSidePropsContext, has cookies but not query\ntype GsspRequest = IncomingMessage & { cookies: NextApiRequestCookies };\n\nexport type RequestLike = NextRequest | NextApiRequest | GsspRequest;\n\nexport type NextMiddlewareRequestParam = Parameters<NextMiddleware>['0'];\nexport type NextMiddlewareEvtParam = Parameters<NextMiddleware>['1'];\nexport type NextMiddlewareReturn = ReturnType<NextMiddleware>;\n"],"mappings":";;;;;;;;;;;;;;AAAA;AAAA;","names":[]}
@@ -0,0 +1,165 @@
1
+ "use strict";
2
+ var __defProp = Object.defineProperty;
3
+ var __getOwnPropDesc = Object.getOwnPropertyDescriptor;
4
+ var __getOwnPropNames = Object.getOwnPropertyNames;
5
+ var __hasOwnProp = Object.prototype.hasOwnProperty;
6
+ var __export = (target, all) => {
7
+ for (var name in all)
8
+ __defProp(target, name, { get: all[name], enumerable: true });
9
+ };
10
+ var __copyProps = (to, from, except, desc) => {
11
+ if (from && typeof from === "object" || typeof from === "function") {
12
+ for (let key of __getOwnPropNames(from))
13
+ if (!__hasOwnProp.call(to, key) && key !== except)
14
+ __defProp(to, key, { get: () => from[key], enumerable: !(desc = __getOwnPropDesc(from, key)) || desc.enumerable });
15
+ }
16
+ return to;
17
+ };
18
+ var __toCommonJS = (mod) => __copyProps(__defProp({}, "__esModule", { value: true }), mod);
19
+ var utils_exports = {};
20
+ __export(utils_exports, {
21
+ apiEndpointUnauthorizedNextResponse: () => apiEndpointUnauthorizedNextResponse,
22
+ assertKey: () => assertKey,
23
+ buildRequestLike: () => buildRequestLike,
24
+ decorateRequest: () => decorateRequest,
25
+ getAuthKeyFromRequest: () => getAuthKeyFromRequest,
26
+ getCookie: () => getCookie,
27
+ getCustomAttributeFromRequest: () => getCustomAttributeFromRequest,
28
+ getHeader: () => getHeader,
29
+ redirectAdapter: () => redirectAdapter,
30
+ setRequestHeadersOnNextResponse: () => setRequestHeadersOnNextResponse
31
+ });
32
+ module.exports = __toCommonJS(utils_exports);
33
+ var import_server = require("next/server");
34
+ var import_constants = require("../constants");
35
+ function assertKey(key, onError) {
36
+ if (!key) {
37
+ onError();
38
+ }
39
+ return key;
40
+ }
41
+ const apiEndpointUnauthorizedNextResponse = () => {
42
+ return import_server.NextResponse.json(null, { status: 401, statusText: "Unauthorized" });
43
+ };
44
+ const redirectAdapter = (url) => {
45
+ return import_server.NextResponse.redirect(url, {
46
+ headers: { [import_constants.constants.Headers.CabinIdRedirectTo]: "true" }
47
+ });
48
+ };
49
+ const OVERRIDE_HEADERS = "x-middleware-override-headers";
50
+ const MIDDLEWARE_HEADER_PREFIX = "x-middleware-request";
51
+ const setRequestHeadersOnNextResponse = (res, req, newHeaders) => {
52
+ if (!res.headers.get(OVERRIDE_HEADERS)) {
53
+ res.headers.set(OVERRIDE_HEADERS, [...req.headers.keys()]);
54
+ req.headers.forEach((val, key) => {
55
+ res.headers.set(`${MIDDLEWARE_HEADER_PREFIX}-${key}`, val);
56
+ });
57
+ }
58
+ Object.entries(newHeaders).forEach(([key, val]) => {
59
+ res.headers.set(
60
+ OVERRIDE_HEADERS,
61
+ `${res.headers.get(OVERRIDE_HEADERS)},${key}`
62
+ );
63
+ res.headers.set(`${MIDDLEWARE_HEADER_PREFIX}-${key}`, val);
64
+ });
65
+ };
66
+ function createTokenSignature(token, key) {
67
+ return `${token}${key}`;
68
+ }
69
+ function decorateRequest(req, res, requestState, secretKey) {
70
+ const { token } = requestState;
71
+ if (!res) {
72
+ res = import_server.NextResponse.next();
73
+ }
74
+ if (res.headers.get(import_constants.constants.NextHeaders.NextRedirect)) {
75
+ return res;
76
+ }
77
+ let rewriteURL;
78
+ if (res.headers.get(import_constants.constants.NextHeaders.NextResume) === "1") {
79
+ res.headers.delete(import_constants.constants.NextHeaders.NextResume);
80
+ rewriteURL = new URL(req.url);
81
+ }
82
+ const rewriteURLHeader = res.headers.get(import_constants.constants.NextHeaders.NextRewrite);
83
+ if (rewriteURLHeader) {
84
+ const reqURL = new URL(req.url);
85
+ rewriteURL = new URL(rewriteURLHeader);
86
+ if (rewriteURL.origin !== reqURL.origin) {
87
+ return res;
88
+ }
89
+ }
90
+ if (rewriteURL) {
91
+ setRequestHeadersOnNextResponse(res, req, {
92
+ [import_constants.constants.Headers.AuthToken]: token || "",
93
+ [import_constants.constants.Headers.AuthSignature]: token ? createTokenSignature(token, secretKey) : ""
94
+ });
95
+ const origin = rewriteURL == null ? void 0 : rewriteURL.origin;
96
+ const pathName = rewriteURL == null ? void 0 : rewriteURL.pathname;
97
+ res.headers.set(
98
+ import_constants.constants.NextHeaders.NextRewrite,
99
+ `${origin}${pathName || ""}`
100
+ );
101
+ }
102
+ return res;
103
+ }
104
+ const buildRequestLike = () => {
105
+ try {
106
+ const { headers } = require("next/headers");
107
+ return new import_server.NextRequest("https://placeholder.com", { headers: headers() });
108
+ } catch (e) {
109
+ if (e && "message" in e && typeof e.message === "string" && (e.message.toLowerCase().includes("Dynamic server usage".toLowerCase()) || e.message.toLowerCase().includes(
110
+ "This page needs to bail out of prerendering".toLowerCase()
111
+ ))) {
112
+ throw e;
113
+ }
114
+ throw new Error(
115
+ `CabinID: auth() and currentUser() are only supported in App Router (/app directory).
116
+ If you're using /pages, try getAuth() instead.
117
+ Original error: ${e}`
118
+ );
119
+ }
120
+ };
121
+ function getCustomAttributeFromRequest(req, key) {
122
+ return key in req ? req[key] : void 0;
123
+ }
124
+ function getAuthKeyFromRequest(req, key) {
125
+ return getCustomAttributeFromRequest(req, import_constants.constants.Attributes[key]) || getHeader(req, import_constants.constants.Headers[key]);
126
+ }
127
+ function getHeader(req, name) {
128
+ var _a, _b;
129
+ if (isNextRequest(req)) {
130
+ return req.headers.get(name);
131
+ }
132
+ return req.headers[name] || req.headers[name.toLowerCase()] || ((_b = (_a = req.socket) == null ? void 0 : _a._httpMessage) == null ? void 0 : _b.getHeader(name));
133
+ }
134
+ function isNextRequest(val) {
135
+ try {
136
+ const { headers, nextUrl, cookies } = val || {};
137
+ return typeof (headers == null ? void 0 : headers.get) === "function" && typeof (nextUrl == null ? void 0 : nextUrl.searchParams.get) === "function" && typeof (cookies == null ? void 0 : cookies.get) === "function";
138
+ } catch (e) {
139
+ return false;
140
+ }
141
+ }
142
+ function getCookie(req, name) {
143
+ if (isNextRequest(req)) {
144
+ const reqCookieOrString = req.cookies.get(name);
145
+ if (!reqCookieOrString) {
146
+ return void 0;
147
+ }
148
+ return typeof reqCookieOrString === "string" ? reqCookieOrString : reqCookieOrString.value;
149
+ }
150
+ return req.cookies[name];
151
+ }
152
+ // Annotate the CommonJS export names for ESM import in node:
153
+ 0 && (module.exports = {
154
+ apiEndpointUnauthorizedNextResponse,
155
+ assertKey,
156
+ buildRequestLike,
157
+ decorateRequest,
158
+ getAuthKeyFromRequest,
159
+ getCookie,
160
+ getCustomAttributeFromRequest,
161
+ getHeader,
162
+ redirectAdapter,
163
+ setRequestHeadersOnNextResponse
164
+ });
165
+ //# sourceMappingURL=utils.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"sources":["../../../src/server/utils.ts"],"sourcesContent":["import { NextResponse, NextRequest } from 'next/server';\nimport { constants } from '../constants';\nimport { CabinIdRequest } from '../tokens/cabinIdRequest';\nimport { RequestLike } from './type';\n\nexport function assertKey(key: string, onError: () => never): string {\n if (!key) {\n onError();\n }\n\n return key;\n}\n\nexport const apiEndpointUnauthorizedNextResponse = () => {\n return NextResponse.json(null, { status: 401, statusText: 'Unauthorized' });\n};\n\nexport const redirectAdapter = (url: string | URL) => {\n return NextResponse.redirect(url, {\n headers: { [constants.Headers.CabinIdRedirectTo]: 'true' },\n });\n};\n\nconst OVERRIDE_HEADERS = 'x-middleware-override-headers';\nconst MIDDLEWARE_HEADER_PREFIX = 'x-middleware-request' as string;\n\nexport const setRequestHeadersOnNextResponse = (\n res: NextResponse | Response,\n req: Request,\n newHeaders: Record<string, string>\n) => {\n if (!res.headers.get(OVERRIDE_HEADERS)) {\n // Emulate a user setting overrides by explicitly adding the required nextjs headers\n // https://github.com/vercel/next.js/pull/41380\n // @ts-expect-error\n res.headers.set(OVERRIDE_HEADERS, [...req.headers.keys()]);\n req.headers.forEach((val, key) => {\n res.headers.set(`${MIDDLEWARE_HEADER_PREFIX}-${key}`, val);\n });\n }\n\n // Now that we have normalised res to include overrides, just append the new header\n Object.entries(newHeaders).forEach(([key, val]) => {\n res.headers.set(\n OVERRIDE_HEADERS,\n `${res.headers.get(OVERRIDE_HEADERS)},${key}`\n );\n res.headers.set(`${MIDDLEWARE_HEADER_PREFIX}-${key}`, val);\n });\n};\n\n/**\n * Compute a cryptographic signature from a session token and provided secret key. Used to validate that the token has not been modified when transferring between middleware and the Next.js origin.\n */\nfunction createTokenSignature(token: string, key: string): string {\n return `${token}${key}`;\n}\n\ntype RequestState = any;\n\n// Auth result will be set as both a query param & header when applicable\nexport function decorateRequest(\n req: CabinIdRequest,\n res: Response,\n requestState: RequestState,\n secretKey: string\n): Response {\n const { token } = requestState;\n\n // pass-through case, convert to next()\n if (!res) {\n res = NextResponse.next();\n }\n\n // redirect() case, return early\n if (res.headers.get(constants.NextHeaders.NextRedirect)) {\n return res;\n }\n\n let rewriteURL;\n\n // next() case, convert to a rewrite\n if (res.headers.get(constants.NextHeaders.NextResume) === '1') {\n res.headers.delete(constants.NextHeaders.NextResume);\n rewriteURL = new URL(req.url);\n }\n\n // rewrite() case, set auth result only if origin remains the same\n const rewriteURLHeader = res.headers.get(constants.NextHeaders.NextRewrite);\n\n if (rewriteURLHeader) {\n const reqURL = new URL(req.url);\n rewriteURL = new URL(rewriteURLHeader);\n\n // if the origin has changed, return early\n if (rewriteURL.origin !== reqURL.origin) {\n return res;\n }\n }\n\n if (rewriteURL) {\n setRequestHeadersOnNextResponse(res, req, {\n [constants.Headers.AuthToken]: token || '',\n [constants.Headers.AuthSignature]: token\n ? createTokenSignature(token, secretKey)\n : '',\n });\n const origin = rewriteURL?.origin;\n const pathName = rewriteURL?.pathname;\n\n res.headers.set(\n constants.NextHeaders.NextRewrite,\n `${origin}${pathName || ''}`\n );\n }\n return res;\n}\n\nexport const buildRequestLike = () => {\n try {\n // Dynamically import next/headers, otherwise Next12 apps will break\n // because next/headers was introduced in next@13\n // eslint-disable-next-line @typescript-eslint/no-var-requires\n const { headers } = require('next/headers');\n return new NextRequest('https://placeholder.com', { headers: headers() });\n } catch (e: any) {\n if (\n e &&\n 'message' in e &&\n typeof e.message === 'string' &&\n (e.message.toLowerCase().includes('Dynamic server usage'.toLowerCase()) ||\n e.message\n .toLowerCase()\n .includes(\n 'This page needs to bail out of prerendering'.toLowerCase()\n ))\n ) {\n throw e;\n }\n\n throw new Error(\n `CabinID: auth() and currentUser() are only supported in App Router (/app directory).\\nIf you're using /pages, try getAuth() instead.\\nOriginal error: ${e}`\n );\n }\n};\n\nexport function getCustomAttributeFromRequest(\n req: RequestLike,\n key: string\n): string | null | undefined {\n // @ts-expect-error - TS doesn't like indexing into RequestLike\n return key in req ? req[key] : undefined;\n}\n\nexport function getAuthKeyFromRequest(\n req: RequestLike,\n key: keyof typeof constants.Attributes\n): string | null | undefined {\n return (\n getCustomAttributeFromRequest(req, constants.Attributes[key]) ||\n getHeader(req, constants.Headers[key])\n );\n}\n\nexport function getHeader(\n req: RequestLike,\n name: string\n): string | null | undefined {\n if (isNextRequest(req)) {\n return req.headers.get(name);\n }\n\n // If no header has been determined for IncomingMessage case, check if available within private `socket` headers\n // When deployed to vercel, req.headers for API routes is a `IncomingHttpHeaders` key-val object which does not follow\n // the Headers spec so the name is no longer case-insensitive.\n return (\n req.headers[name] ||\n req.headers[name.toLowerCase()] ||\n (req.socket as any)?._httpMessage?.getHeader(name)\n );\n}\n\nfunction isNextRequest(val: unknown): val is NextRequest {\n try {\n const { headers, nextUrl, cookies } = (val || {}) as NextRequest;\n return (\n typeof headers?.get === 'function' &&\n typeof nextUrl?.searchParams.get === 'function' &&\n typeof cookies?.get === 'function'\n );\n } catch (e) {\n return false;\n }\n}\n\nexport function getCookie(req: RequestLike, name: string): string | undefined {\n if (isNextRequest(req)) {\n // Nextjs broke semver in the 13.0.0 -> 13.0.1 release, so even though\n // this should be RequestCookie in all updated apps. In order to support apps\n // using v13.0.0 still, we explicitly add the string type\n // https://github.com/vercel/next.js/pull/41526\n const reqCookieOrString = req.cookies.get(name) as\n | ReturnType<NextRequest['cookies']['get']>\n | string\n | undefined;\n if (!reqCookieOrString) {\n return undefined;\n }\n return typeof reqCookieOrString === 'string'\n ? reqCookieOrString\n : reqCookieOrString.value;\n }\n return req.cookies[name];\n}\n"],"mappings":"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","names":[]}