@arch-cadre/core 0.0.6

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 (190) hide show
  1. package/dist/_virtual/_rolldown/runtime.cjs +29 -0
  2. package/dist/_virtual/_rolldown/runtime.mjs +18 -0
  3. package/dist/core/auth/augment.cjs +71 -0
  4. package/dist/core/auth/augment.d.cts +20 -0
  5. package/dist/core/auth/augment.d.cts.map +1 -0
  6. package/dist/core/auth/augment.d.mts +20 -0
  7. package/dist/core/auth/augment.d.mts.map +1 -0
  8. package/dist/core/auth/augment.mjs +66 -0
  9. package/dist/core/auth/augment.mjs.map +1 -0
  10. package/dist/core/auth/email-verification.cjs +99 -0
  11. package/dist/core/auth/email-verification.d.cts +62 -0
  12. package/dist/core/auth/email-verification.d.cts.map +1 -0
  13. package/dist/core/auth/email-verification.d.mts +62 -0
  14. package/dist/core/auth/email-verification.d.mts.map +1 -0
  15. package/dist/core/auth/email-verification.mjs +92 -0
  16. package/dist/core/auth/email-verification.mjs.map +1 -0
  17. package/dist/core/auth/logic.cjs +224 -0
  18. package/dist/core/auth/logic.d.cts +110 -0
  19. package/dist/core/auth/logic.d.cts.map +1 -0
  20. package/dist/core/auth/logic.d.mts +110 -0
  21. package/dist/core/auth/logic.d.mts.map +1 -0
  22. package/dist/core/auth/logic.mjs +213 -0
  23. package/dist/core/auth/logic.mjs.map +1 -0
  24. package/dist/core/auth/password-reset.cjs +118 -0
  25. package/dist/core/auth/password-reset.d.cts +39 -0
  26. package/dist/core/auth/password-reset.d.cts.map +1 -0
  27. package/dist/core/auth/password-reset.d.mts +39 -0
  28. package/dist/core/auth/password-reset.d.mts.map +1 -0
  29. package/dist/core/auth/password-reset.mjs +111 -0
  30. package/dist/core/auth/password-reset.mjs.map +1 -0
  31. package/dist/core/auth/rbac.cjs +118 -0
  32. package/dist/core/auth/rbac.d.cts +61 -0
  33. package/dist/core/auth/rbac.d.cts.map +1 -0
  34. package/dist/core/auth/rbac.d.mts +61 -0
  35. package/dist/core/auth/rbac.d.mts.map +1 -0
  36. package/dist/core/auth/rbac.mjs +104 -0
  37. package/dist/core/auth/rbac.mjs.map +1 -0
  38. package/dist/core/auth/session.cjs +161 -0
  39. package/dist/core/auth/session.d.cts +54 -0
  40. package/dist/core/auth/session.d.cts.map +1 -0
  41. package/dist/core/auth/session.d.mts +54 -0
  42. package/dist/core/auth/session.d.mts.map +1 -0
  43. package/dist/core/auth/session.mjs +150 -0
  44. package/dist/core/auth/session.mjs.map +1 -0
  45. package/dist/core/auth/types.d.cts +55 -0
  46. package/dist/core/auth/types.d.cts.map +1 -0
  47. package/dist/core/auth/types.d.mts +55 -0
  48. package/dist/core/auth/types.d.mts.map +1 -0
  49. package/dist/core/auth/utils/encode.cjs +27 -0
  50. package/dist/core/auth/utils/encode.d.cts +15 -0
  51. package/dist/core/auth/utils/encode.d.cts.map +1 -0
  52. package/dist/core/auth/utils/encode.d.mts +15 -0
  53. package/dist/core/auth/utils/encode.d.mts.map +1 -0
  54. package/dist/core/auth/utils/encode.mjs +26 -0
  55. package/dist/core/auth/utils/encode.mjs.map +1 -0
  56. package/dist/core/auth/utils/encryption.cjs +67 -0
  57. package/dist/core/auth/utils/encryption.d.cts +28 -0
  58. package/dist/core/auth/utils/encryption.d.cts.map +1 -0
  59. package/dist/core/auth/utils/encryption.d.mts +28 -0
  60. package/dist/core/auth/utils/encryption.d.mts.map +1 -0
  61. package/dist/core/auth/utils/encryption.mjs +64 -0
  62. package/dist/core/auth/utils/encryption.mjs.map +1 -0
  63. package/dist/core/auth/validation.cjs +39 -0
  64. package/dist/core/auth/validation.d.cts +48 -0
  65. package/dist/core/auth/validation.d.cts.map +1 -0
  66. package/dist/core/auth/validation.d.mts +48 -0
  67. package/dist/core/auth/validation.d.mts.map +1 -0
  68. package/dist/core/auth/validation.mjs +31 -0
  69. package/dist/core/auth/validation.mjs.map +1 -0
  70. package/dist/core/bootstrap.cjs +32 -0
  71. package/dist/core/bootstrap.d.cts +5 -0
  72. package/dist/core/bootstrap.d.cts.map +1 -0
  73. package/dist/core/bootstrap.d.mts +5 -0
  74. package/dist/core/bootstrap.d.mts.map +1 -0
  75. package/dist/core/bootstrap.mjs +33 -0
  76. package/dist/core/bootstrap.mjs.map +1 -0
  77. package/dist/core/config.cjs +6 -0
  78. package/dist/core/config.d.cts +11 -0
  79. package/dist/core/config.d.cts.map +1 -0
  80. package/dist/core/config.d.mts +11 -0
  81. package/dist/core/config.d.mts.map +1 -0
  82. package/dist/core/config.mjs +6 -0
  83. package/dist/core/config.mjs.map +1 -0
  84. package/dist/core/config.server.cjs +60 -0
  85. package/dist/core/config.server.d.cts +16 -0
  86. package/dist/core/config.server.d.cts.map +1 -0
  87. package/dist/core/config.server.d.mts +16 -0
  88. package/dist/core/config.server.d.mts.map +1 -0
  89. package/dist/core/config.server.mjs +57 -0
  90. package/dist/core/config.server.mjs.map +1 -0
  91. package/dist/core/event-bus.cjs +48 -0
  92. package/dist/core/event-bus.d.cts +17 -0
  93. package/dist/core/event-bus.d.cts.map +1 -0
  94. package/dist/core/event-bus.d.mts +17 -0
  95. package/dist/core/event-bus.d.mts.map +1 -0
  96. package/dist/core/event-bus.mjs +48 -0
  97. package/dist/core/event-bus.mjs.map +1 -0
  98. package/dist/core/filesystem/service.cjs +43 -0
  99. package/dist/core/filesystem/service.d.cts +19 -0
  100. package/dist/core/filesystem/service.d.cts.map +1 -0
  101. package/dist/core/filesystem/service.d.mts +19 -0
  102. package/dist/core/filesystem/service.d.mts.map +1 -0
  103. package/dist/core/filesystem/service.mjs +43 -0
  104. package/dist/core/filesystem/service.mjs.map +1 -0
  105. package/dist/core/filesystem/types.d.cts +22 -0
  106. package/dist/core/filesystem/types.d.cts.map +1 -0
  107. package/dist/core/filesystem/types.d.mts +22 -0
  108. package/dist/core/filesystem/types.d.mts.map +1 -0
  109. package/dist/core/notifications/actions.cjs +36 -0
  110. package/dist/core/notifications/actions.d.cts +58 -0
  111. package/dist/core/notifications/actions.d.cts.map +1 -0
  112. package/dist/core/notifications/actions.d.mts +58 -0
  113. package/dist/core/notifications/actions.d.mts.map +1 -0
  114. package/dist/core/notifications/actions.mjs +33 -0
  115. package/dist/core/notifications/actions.mjs.map +1 -0
  116. package/dist/core/notifications/index.cjs +2 -0
  117. package/dist/core/notifications/index.mjs +4 -0
  118. package/dist/core/notifications/service.cjs +30 -0
  119. package/dist/core/notifications/service.d.cts +9 -0
  120. package/dist/core/notifications/service.d.cts.map +1 -0
  121. package/dist/core/notifications/service.d.mts +9 -0
  122. package/dist/core/notifications/service.d.mts.map +1 -0
  123. package/dist/core/notifications/service.mjs +31 -0
  124. package/dist/core/notifications/service.mjs.map +1 -0
  125. package/dist/core/notifications/types.d.cts +21 -0
  126. package/dist/core/notifications/types.d.cts.map +1 -0
  127. package/dist/core/notifications/types.d.mts +21 -0
  128. package/dist/core/notifications/types.d.mts.map +1 -0
  129. package/dist/core/setup.cjs +25 -0
  130. package/dist/core/setup.d.cts +9 -0
  131. package/dist/core/setup.d.cts.map +1 -0
  132. package/dist/core/setup.d.mts +9 -0
  133. package/dist/core/setup.d.mts.map +1 -0
  134. package/dist/core/setup.mjs +25 -0
  135. package/dist/core/setup.mjs.map +1 -0
  136. package/dist/core/types.d.cts +13 -0
  137. package/dist/core/types.d.cts.map +1 -0
  138. package/dist/core/types.d.mts +13 -0
  139. package/dist/core/types.d.mts.map +1 -0
  140. package/dist/index.cjs +30 -0
  141. package/dist/index.d.cts +8 -0
  142. package/dist/index.d.mts +8 -0
  143. package/dist/index.mjs +6 -0
  144. package/dist/server/auth/email.cjs +24 -0
  145. package/dist/server/auth/email.d.cts +13 -0
  146. package/dist/server/auth/email.d.cts.map +1 -0
  147. package/dist/server/auth/email.d.mts +13 -0
  148. package/dist/server/auth/email.d.mts.map +1 -0
  149. package/dist/server/auth/email.mjs +23 -0
  150. package/dist/server/auth/email.mjs.map +1 -0
  151. package/dist/server/auth/password.cjs +37 -0
  152. package/dist/server/auth/password.d.cts +23 -0
  153. package/dist/server/auth/password.d.cts.map +1 -0
  154. package/dist/server/auth/password.d.mts +23 -0
  155. package/dist/server/auth/password.d.mts.map +1 -0
  156. package/dist/server/auth/password.mjs +34 -0
  157. package/dist/server/auth/password.mjs.map +1 -0
  158. package/dist/server/auth/user.cjs +165 -0
  159. package/dist/server/auth/user.d.cts +58 -0
  160. package/dist/server/auth/user.d.cts.map +1 -0
  161. package/dist/server/auth/user.d.mts +58 -0
  162. package/dist/server/auth/user.d.mts.map +1 -0
  163. package/dist/server/auth/user.mjs +153 -0
  164. package/dist/server/auth/user.mjs.map +1 -0
  165. package/dist/server/database/inject.cjs +24 -0
  166. package/dist/server/database/inject.d.cts +15 -0
  167. package/dist/server/database/inject.d.cts.map +1 -0
  168. package/dist/server/database/inject.d.mts +15 -0
  169. package/dist/server/database/inject.d.mts.map +1 -0
  170. package/dist/server/database/inject.mjs +23 -0
  171. package/dist/server/database/inject.mjs.map +1 -0
  172. package/dist/server/database/schema.cjs +163 -0
  173. package/dist/server/database/schema.d.cts +2962 -0
  174. package/dist/server/database/schema.d.cts.map +1 -0
  175. package/dist/server/database/schema.d.mts +2962 -0
  176. package/dist/server/database/schema.d.mts.map +1 -0
  177. package/dist/server/database/schema.mjs +151 -0
  178. package/dist/server/database/schema.mjs.map +1 -0
  179. package/dist/server/emails/index.cjs +32 -0
  180. package/dist/server/emails/index.d.cts +26 -0
  181. package/dist/server/emails/index.d.cts.map +1 -0
  182. package/dist/server/emails/index.d.mts +26 -0
  183. package/dist/server/emails/index.d.mts.map +1 -0
  184. package/dist/server/emails/index.mjs +29 -0
  185. package/dist/server/emails/index.mjs.map +1 -0
  186. package/dist/server.cjs +145 -0
  187. package/dist/server.d.cts +26 -0
  188. package/dist/server.d.mts +26 -0
  189. package/dist/server.mjs +23 -0
  190. package/package.json +60 -0
@@ -0,0 +1,29 @@
1
+ //#region \0rolldown/runtime.js
2
+ var __create = Object.create;
3
+ var __defProp = Object.defineProperty;
4
+ var __getOwnPropDesc = Object.getOwnPropertyDescriptor;
5
+ var __getOwnPropNames = Object.getOwnPropertyNames;
6
+ var __getProtoOf = Object.getPrototypeOf;
7
+ var __hasOwnProp = Object.prototype.hasOwnProperty;
8
+ var __copyProps = (to, from, except, desc) => {
9
+ if (from && typeof from === "object" || typeof from === "function") {
10
+ for (var keys = __getOwnPropNames(from), i = 0, n = keys.length, key; i < n; i++) {
11
+ key = keys[i];
12
+ if (!__hasOwnProp.call(to, key) && key !== except) {
13
+ __defProp(to, key, {
14
+ get: ((k) => from[k]).bind(null, key),
15
+ enumerable: !(desc = __getOwnPropDesc(from, key)) || desc.enumerable
16
+ });
17
+ }
18
+ }
19
+ }
20
+ return to;
21
+ };
22
+ var __toESM = (mod, isNodeMode, target) => (target = mod != null ? __create(__getProtoOf(mod)) : {}, __copyProps(isNodeMode || !mod || !mod.__esModule ? __defProp(target, "default", {
23
+ value: mod,
24
+ enumerable: true
25
+ }) : target, mod));
26
+
27
+ //#endregion
28
+
29
+ exports.__toESM = __toESM;
@@ -0,0 +1,18 @@
1
+ //#region \0rolldown/runtime.js
2
+ var __defProp = Object.defineProperty;
3
+ var __exportAll = (all, no_symbols) => {
4
+ let target = {};
5
+ for (var name in all) {
6
+ __defProp(target, name, {
7
+ get: all[name],
8
+ enumerable: true
9
+ });
10
+ }
11
+ if (!no_symbols) {
12
+ __defProp(target, Symbol.toStringTag, { value: "Module" });
13
+ }
14
+ return target;
15
+ };
16
+
17
+ //#endregion
18
+ export { __exportAll };
@@ -0,0 +1,71 @@
1
+
2
+ //#region src/core/auth/augment.ts
3
+ const globalForAugment = globalThis;
4
+ const identityAugmenters = globalForAugment.__WINKLY_IDENTITY_AUGMENTERS__ ?? /* @__PURE__ */ new Set();
5
+ const sessionAugmenters = globalForAugment.__WINKLY_SESSION_AUGMENTERS__ ?? /* @__PURE__ */ new Set();
6
+ const passwordResetSessionAugmenters = globalForAugment.__WINKLY_PASSWORD_RESET_SESSION_AUGMENTERS__ ?? /* @__PURE__ */ new Set();
7
+ globalForAugment.__WINKLY_IDENTITY_AUGMENTERS__ = identityAugmenters;
8
+ globalForAugment.__WINKLY_SESSION_AUGMENTERS__ = sessionAugmenters;
9
+ globalForAugment.__WINKLY_PASSWORD_RESET_SESSION_AUGMENTERS__ = passwordResetSessionAugmenters;
10
+ function registerIdentityAugmenter(augmenter) {
11
+ identityAugmenters.add(augmenter);
12
+ }
13
+ function registerSessionAugmenter(augmenter) {
14
+ sessionAugmenters.add(augmenter);
15
+ }
16
+ function registerPasswordResetSessionAugmenter(augmenter) {
17
+ passwordResetSessionAugmenters.add(augmenter);
18
+ }
19
+ /**
20
+ * EXECUTION FUNCTIONS
21
+ */
22
+ async function augmentUser(user, coreRbacData) {
23
+ let augmentedData = coreRbacData || {};
24
+ for (const augmenter of identityAugmenters) {
25
+ const data = await augmenter(user);
26
+ augmentedData = {
27
+ ...augmentedData,
28
+ ...data
29
+ };
30
+ }
31
+ return {
32
+ ...user,
33
+ ...augmentedData
34
+ };
35
+ }
36
+ async function augmentSession(session) {
37
+ let augmentedData = {};
38
+ for (const augmenter of sessionAugmenters) {
39
+ const data = await augmenter(session);
40
+ augmentedData = {
41
+ ...augmentedData,
42
+ ...data
43
+ };
44
+ }
45
+ return {
46
+ ...session,
47
+ ...augmentedData
48
+ };
49
+ }
50
+ async function augmentPasswordResetSession(session) {
51
+ let augmentedData = {};
52
+ for (const augmenter of passwordResetSessionAugmenters) {
53
+ const data = await augmenter(session);
54
+ augmentedData = {
55
+ ...augmentedData,
56
+ ...data
57
+ };
58
+ }
59
+ return {
60
+ ...session,
61
+ ...augmentedData
62
+ };
63
+ }
64
+
65
+ //#endregion
66
+ exports.augmentPasswordResetSession = augmentPasswordResetSession;
67
+ exports.augmentSession = augmentSession;
68
+ exports.augmentUser = augmentUser;
69
+ exports.registerIdentityAugmenter = registerIdentityAugmenter;
70
+ exports.registerPasswordResetSessionAugmenter = registerPasswordResetSessionAugmenter;
71
+ exports.registerSessionAugmenter = registerSessionAugmenter;
@@ -0,0 +1,20 @@
1
+ import { FullUser, PasswordResetSession, Session, User } from "./types.cjs";
2
+
3
+ //#region src/core/auth/augment.d.ts
4
+ /**
5
+ * REGISTRIES FOR MODULAR EXTENSIONS
6
+ */
7
+ type IdentityAugmenter = (user: User) => Promise<Partial<FullUser>>;
8
+ type SessionAugmenter = (session: Session) => Promise<Partial<Session>>;
9
+ type PasswordResetSessionAugmenter = (session: PasswordResetSession) => Promise<Partial<PasswordResetSession>>;
10
+ declare function registerIdentityAugmenter(augmenter: IdentityAugmenter): void;
11
+ declare function registerSessionAugmenter(augmenter: SessionAugmenter): void;
12
+ declare function registerPasswordResetSessionAugmenter(augmenter: PasswordResetSessionAugmenter): void;
13
+ /**
14
+ * EXECUTION FUNCTIONS
15
+ */
16
+ declare function augmentUser(user: User, coreRbacData?: Record<string, any>): Promise<FullUser>;
17
+ declare function augmentSession(session: Session): Promise<Session>;
18
+ //#endregion
19
+ export { augmentSession, augmentUser, registerIdentityAugmenter, registerPasswordResetSessionAugmenter, registerSessionAugmenter };
20
+ //# sourceMappingURL=augment.d.cts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"augment.d.cts","names":[],"sources":["../../../src/core/auth/augment.ts"],"mappings":";;;;;AAA6E;KAMxE,iBAAA,IAAqB,IAAA,EAAM,IAAA,KAAS,OAAA,CAAQ,OAAA,CAAQ,QAAA;AAAA,KACpD,gBAAA,IAAoB,OAAA,EAAS,OAAA,KAAY,OAAA,CAAQ,OAAA,CAAQ,OAAA;AAAA,KACzD,6BAAA,IACH,OAAA,EAAS,oBAAA,KACN,OAAA,CAAQ,OAAA,CAAQ,oBAAA;AAAA,iBAwBL,yBAAA,CAA0B,SAAA,EAAW,iBAAA;AAAA,iBAIrC,wBAAA,CAAyB,SAAA,EAAW,gBAAA;AAAA,iBAIpC,qCAAA,CACd,SAAA,EAAW,6BAAA;;;;iBAQS,WAAA,CACpB,IAAA,EAAM,IAAA,EACN,YAAA,GAAe,MAAA,gBACd,OAAA,CAAQ,QAAA;AAAA,iBASW,cAAA,CAAe,OAAA,EAAS,OAAA,GAAU,OAAA,CAAQ,OAAA"}
@@ -0,0 +1,20 @@
1
+ import { FullUser, PasswordResetSession, Session, User } from "./types.mjs";
2
+
3
+ //#region src/core/auth/augment.d.ts
4
+ /**
5
+ * REGISTRIES FOR MODULAR EXTENSIONS
6
+ */
7
+ type IdentityAugmenter = (user: User) => Promise<Partial<FullUser>>;
8
+ type SessionAugmenter = (session: Session) => Promise<Partial<Session>>;
9
+ type PasswordResetSessionAugmenter = (session: PasswordResetSession) => Promise<Partial<PasswordResetSession>>;
10
+ declare function registerIdentityAugmenter(augmenter: IdentityAugmenter): void;
11
+ declare function registerSessionAugmenter(augmenter: SessionAugmenter): void;
12
+ declare function registerPasswordResetSessionAugmenter(augmenter: PasswordResetSessionAugmenter): void;
13
+ /**
14
+ * EXECUTION FUNCTIONS
15
+ */
16
+ declare function augmentUser(user: User, coreRbacData?: Record<string, any>): Promise<FullUser>;
17
+ declare function augmentSession(session: Session): Promise<Session>;
18
+ //#endregion
19
+ export { augmentSession, augmentUser, registerIdentityAugmenter, registerPasswordResetSessionAugmenter, registerSessionAugmenter };
20
+ //# sourceMappingURL=augment.d.mts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"augment.d.mts","names":[],"sources":["../../../src/core/auth/augment.ts"],"mappings":";;;;;AAA6E;KAMxE,iBAAA,IAAqB,IAAA,EAAM,IAAA,KAAS,OAAA,CAAQ,OAAA,CAAQ,QAAA;AAAA,KACpD,gBAAA,IAAoB,OAAA,EAAS,OAAA,KAAY,OAAA,CAAQ,OAAA,CAAQ,OAAA;AAAA,KACzD,6BAAA,IACH,OAAA,EAAS,oBAAA,KACN,OAAA,CAAQ,OAAA,CAAQ,oBAAA;AAAA,iBAwBL,yBAAA,CAA0B,SAAA,EAAW,iBAAA;AAAA,iBAIrC,wBAAA,CAAyB,SAAA,EAAW,gBAAA;AAAA,iBAIpC,qCAAA,CACd,SAAA,EAAW,6BAAA;;;;iBAQS,WAAA,CACpB,IAAA,EAAM,IAAA,EACN,YAAA,GAAe,MAAA,gBACd,OAAA,CAAQ,QAAA;AAAA,iBASW,cAAA,CAAe,OAAA,EAAS,OAAA,GAAU,OAAA,CAAQ,OAAA"}
@@ -0,0 +1,66 @@
1
+ //#region src/core/auth/augment.ts
2
+ const globalForAugment = globalThis;
3
+ const identityAugmenters = globalForAugment.__WINKLY_IDENTITY_AUGMENTERS__ ?? /* @__PURE__ */ new Set();
4
+ const sessionAugmenters = globalForAugment.__WINKLY_SESSION_AUGMENTERS__ ?? /* @__PURE__ */ new Set();
5
+ const passwordResetSessionAugmenters = globalForAugment.__WINKLY_PASSWORD_RESET_SESSION_AUGMENTERS__ ?? /* @__PURE__ */ new Set();
6
+ globalForAugment.__WINKLY_IDENTITY_AUGMENTERS__ = identityAugmenters;
7
+ globalForAugment.__WINKLY_SESSION_AUGMENTERS__ = sessionAugmenters;
8
+ globalForAugment.__WINKLY_PASSWORD_RESET_SESSION_AUGMENTERS__ = passwordResetSessionAugmenters;
9
+ function registerIdentityAugmenter(augmenter) {
10
+ identityAugmenters.add(augmenter);
11
+ }
12
+ function registerSessionAugmenter(augmenter) {
13
+ sessionAugmenters.add(augmenter);
14
+ }
15
+ function registerPasswordResetSessionAugmenter(augmenter) {
16
+ passwordResetSessionAugmenters.add(augmenter);
17
+ }
18
+ /**
19
+ * EXECUTION FUNCTIONS
20
+ */
21
+ async function augmentUser(user, coreRbacData) {
22
+ let augmentedData = coreRbacData || {};
23
+ for (const augmenter of identityAugmenters) {
24
+ const data = await augmenter(user);
25
+ augmentedData = {
26
+ ...augmentedData,
27
+ ...data
28
+ };
29
+ }
30
+ return {
31
+ ...user,
32
+ ...augmentedData
33
+ };
34
+ }
35
+ async function augmentSession(session) {
36
+ let augmentedData = {};
37
+ for (const augmenter of sessionAugmenters) {
38
+ const data = await augmenter(session);
39
+ augmentedData = {
40
+ ...augmentedData,
41
+ ...data
42
+ };
43
+ }
44
+ return {
45
+ ...session,
46
+ ...augmentedData
47
+ };
48
+ }
49
+ async function augmentPasswordResetSession(session) {
50
+ let augmentedData = {};
51
+ for (const augmenter of passwordResetSessionAugmenters) {
52
+ const data = await augmenter(session);
53
+ augmentedData = {
54
+ ...augmentedData,
55
+ ...data
56
+ };
57
+ }
58
+ return {
59
+ ...session,
60
+ ...augmentedData
61
+ };
62
+ }
63
+
64
+ //#endregion
65
+ export { augmentPasswordResetSession, augmentSession, augmentUser, registerIdentityAugmenter, registerPasswordResetSessionAugmenter, registerSessionAugmenter };
66
+ //# sourceMappingURL=augment.mjs.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"augment.mjs","names":[],"sources":["../../../src/core/auth/augment.ts"],"sourcesContent":["import type { FullUser, PasswordResetSession, Session, User } from \"./types\";\n\n/**\n * REGISTRIES FOR MODULAR EXTENSIONS\n */\n\ntype IdentityAugmenter = (user: User) => Promise<Partial<FullUser>>;\ntype SessionAugmenter = (session: Session) => Promise<Partial<Session>>;\ntype PasswordResetSessionAugmenter = (\n session: PasswordResetSession,\n) => Promise<Partial<PasswordResetSession>>;\n\nconst globalForAugment = globalThis as unknown as {\n __WINKLY_IDENTITY_AUGMENTERS__: Set<IdentityAugmenter> | undefined;\n __WINKLY_SESSION_AUGMENTERS__: Set<SessionAugmenter> | undefined;\n __WINKLY_PASSWORD_RESET_SESSION_AUGMENTERS__:\n | Set<PasswordResetSessionAugmenter>\n | undefined;\n};\n\nconst identityAugmenters =\n globalForAugment.__WINKLY_IDENTITY_AUGMENTERS__ ??\n new Set<IdentityAugmenter>();\nconst sessionAugmenters =\n globalForAugment.__WINKLY_SESSION_AUGMENTERS__ ?? new Set<SessionAugmenter>();\nconst passwordResetSessionAugmenters =\n globalForAugment.__WINKLY_PASSWORD_RESET_SESSION_AUGMENTERS__ ??\n new Set<PasswordResetSessionAugmenter>();\n\nglobalForAugment.__WINKLY_IDENTITY_AUGMENTERS__ = identityAugmenters;\nglobalForAugment.__WINKLY_SESSION_AUGMENTERS__ = sessionAugmenters;\nglobalForAugment.__WINKLY_PASSWORD_RESET_SESSION_AUGMENTERS__ =\n passwordResetSessionAugmenters;\n\nexport function registerIdentityAugmenter(augmenter: IdentityAugmenter) {\n identityAugmenters.add(augmenter);\n}\n\nexport function registerSessionAugmenter(augmenter: SessionAugmenter) {\n sessionAugmenters.add(augmenter);\n}\n\nexport function registerPasswordResetSessionAugmenter(\n augmenter: PasswordResetSessionAugmenter,\n) {\n passwordResetSessionAugmenters.add(augmenter);\n}\n\n/**\n * EXECUTION FUNCTIONS\n */\nexport async function augmentUser(\n user: User,\n coreRbacData?: Record<string, any>,\n): Promise<FullUser> {\n let augmentedData = coreRbacData || {};\n for (const augmenter of identityAugmenters) {\n const data = await augmenter(user);\n augmentedData = { ...augmentedData, ...data };\n }\n return { ...user, ...augmentedData } as FullUser;\n}\n\nexport async function augmentSession(session: Session): Promise<Session> {\n let augmentedData = {};\n for (const augmenter of sessionAugmenters) {\n const data = await augmenter(session);\n augmentedData = { ...augmentedData, ...data };\n }\n return { ...session, ...augmentedData } as Session;\n}\n\nexport async function augmentPasswordResetSession(\n session: PasswordResetSession,\n): Promise<PasswordResetSession> {\n let augmentedData = {};\n for (const augmenter of passwordResetSessionAugmenters) {\n const data = await augmenter(session);\n augmentedData = { ...augmentedData, ...data };\n }\n return { ...session, ...augmentedData } as PasswordResetSession;\n}\n"],"mappings":";AAYA,MAAM,mBAAmB;AAQzB,MAAM,qBACJ,iBAAiB,kDACjB,IAAI,KAAwB;AAC9B,MAAM,oBACJ,iBAAiB,iDAAiC,IAAI,KAAuB;AAC/E,MAAM,iCACJ,iBAAiB,gEACjB,IAAI,KAAoC;AAE1C,iBAAiB,iCAAiC;AAClD,iBAAiB,gCAAgC;AACjD,iBAAiB,+CACf;AAEF,SAAgB,0BAA0B,WAA8B;AACtE,oBAAmB,IAAI,UAAU;;AAGnC,SAAgB,yBAAyB,WAA6B;AACpE,mBAAkB,IAAI,UAAU;;AAGlC,SAAgB,sCACd,WACA;AACA,gCAA+B,IAAI,UAAU;;;;;AAM/C,eAAsB,YACpB,MACA,cACmB;CACnB,IAAI,gBAAgB,gBAAgB,EAAE;AACtC,MAAK,MAAM,aAAa,oBAAoB;EAC1C,MAAM,OAAO,MAAM,UAAU,KAAK;AAClC,kBAAgB;GAAE,GAAG;GAAe,GAAG;GAAM;;AAE/C,QAAO;EAAE,GAAG;EAAM,GAAG;EAAe;;AAGtC,eAAsB,eAAe,SAAoC;CACvE,IAAI,gBAAgB,EAAE;AACtB,MAAK,MAAM,aAAa,mBAAmB;EACzC,MAAM,OAAO,MAAM,UAAU,QAAQ;AACrC,kBAAgB;GAAE,GAAG;GAAe,GAAG;GAAM;;AAE/C,QAAO;EAAE,GAAG;EAAS,GAAG;EAAe;;AAGzC,eAAsB,4BACpB,SAC+B;CAC/B,IAAI,gBAAgB,EAAE;AACtB,MAAK,MAAM,aAAa,gCAAgC;EACtD,MAAM,OAAO,MAAM,UAAU,QAAQ;AACrC,kBAAgB;GAAE,GAAG;GAAe,GAAG;GAAM;;AAE/C,QAAO;EAAE,GAAG;EAAS,GAAG;EAAe"}
@@ -0,0 +1,99 @@
1
+ "use server";
2
+
3
+ const require_runtime = require('../../_virtual/_rolldown/runtime.cjs');
4
+ const require_inject = require('../../server/database/inject.cjs');
5
+ const require_schema = require('../../server/database/schema.cjs');
6
+ const require_index = require('../../server/emails/index.cjs');
7
+ const require_encode = require('./utils/encode.cjs');
8
+ const require_logic = require('./logic.cjs');
9
+ const require_session = require('./session.cjs');
10
+ let drizzle_orm = require("drizzle-orm");
11
+ let date_fns = require("date-fns");
12
+ let next_headers = require("next/headers");
13
+
14
+ //#region src/core/auth/email-verification.ts
15
+ /**
16
+ * Register Email Verification as a Core Security Requirement.
17
+ */
18
+ async function initEmailVerification() {
19
+ require_logic.registerSecurityRequirement(async (_session, user) => {
20
+ if (!user.emailVerifiedAt) return {
21
+ satisfied: false,
22
+ redirect: "/verify-email?unverified"
23
+ };
24
+ return { satisfied: true };
25
+ });
26
+ }
27
+ /**
28
+ * Retrieves a specific email verification request for a user.
29
+ */
30
+ async function getUserEmailVerificationRequest(userId, id) {
31
+ const [session] = await require_inject.db.select().from(require_schema.emailVerificationTable).where((0, drizzle_orm.and)((0, drizzle_orm.eq)(require_schema.emailVerificationTable.id, id), (0, drizzle_orm.eq)(require_schema.emailVerificationTable.userId, userId)));
32
+ return session;
33
+ }
34
+ /**
35
+ * Creates a new email verification request, deleting any existing one for the user.
36
+ */
37
+ async function createEmailVerificationRequest(userId, email) {
38
+ await deleteUserEmailVerificationRequest(userId);
39
+ const code = require_encode.generateRandomOTP();
40
+ const [verificationRequest] = await require_inject.db.insert(require_schema.emailVerificationTable).values({
41
+ userId,
42
+ code,
43
+ email,
44
+ expiresAt: new Date((0, date_fns.addHours)(/* @__PURE__ */ new Date(), 1))
45
+ }).returning();
46
+ return verificationRequest;
47
+ }
48
+ /**
49
+ * Deletes all email verification requests for a user.
50
+ */
51
+ async function deleteUserEmailVerificationRequest(userId) {
52
+ await require_inject.db.delete(require_schema.emailVerificationTable).where((0, drizzle_orm.eq)(require_schema.emailVerificationTable.userId, userId));
53
+ }
54
+ /**
55
+ * Sends a verification email with the OTP code.
56
+ */
57
+ async function sendVerificationEmail(email, code) {
58
+ await /* @__PURE__ */ require_index.sendVerifyEmail(email, code);
59
+ }
60
+ /**
61
+ * Sets the email verification request ID in a cookie.
62
+ */
63
+ async function setEmailVerificationRequestCookie(request) {
64
+ (await (0, next_headers.cookies)()).set("email_verification", request.id, {
65
+ httpOnly: true,
66
+ path: "/",
67
+ secure: process.env.NODE_ENV === "production",
68
+ sameSite: "lax",
69
+ expires: request.expiresAt
70
+ });
71
+ }
72
+ /**
73
+ * Removes the email verification request cookie.
74
+ */
75
+ async function deleteEmailVerificationRequestCookie() {
76
+ (await (0, next_headers.cookies)()).delete("email_verification");
77
+ }
78
+ /**
79
+ * Retrieves the current email verification request based on session and cookie.
80
+ */
81
+ async function getUserEmailVerificationRequestFromRequest() {
82
+ const { user } = await require_session.getCurrentSession();
83
+ if (!user) return null;
84
+ const id = (await (0, next_headers.cookies)()).get("email_verification")?.value ?? null;
85
+ if (!id) return null;
86
+ const request = await getUserEmailVerificationRequest(user.id, id);
87
+ if (!request) await deleteEmailVerificationRequestCookie();
88
+ return request;
89
+ }
90
+
91
+ //#endregion
92
+ exports.createEmailVerificationRequest = createEmailVerificationRequest;
93
+ exports.deleteEmailVerificationRequestCookie = deleteEmailVerificationRequestCookie;
94
+ exports.deleteUserEmailVerificationRequest = deleteUserEmailVerificationRequest;
95
+ exports.getUserEmailVerificationRequest = getUserEmailVerificationRequest;
96
+ exports.getUserEmailVerificationRequestFromRequest = getUserEmailVerificationRequestFromRequest;
97
+ exports.initEmailVerification = initEmailVerification;
98
+ exports.sendVerificationEmail = sendVerificationEmail;
99
+ exports.setEmailVerificationRequestCookie = setEmailVerificationRequestCookie;
@@ -0,0 +1,62 @@
1
+ import { emailVerificationTable } from "../../server/database/schema.cjs";
2
+
3
+ //#region src/core/auth/email-verification.d.ts
4
+ /**
5
+ * Register Email Verification as a Core Security Requirement.
6
+ */
7
+ declare function initEmailVerification(): Promise<void>;
8
+ /**
9
+ * Retrieves a specific email verification request for a user.
10
+ */
11
+ declare function getUserEmailVerificationRequest(userId: string, id: string): Promise<{
12
+ id: string;
13
+ email: string;
14
+ code: string;
15
+ userId: string;
16
+ expiresAt: Date;
17
+ createdAt: Date;
18
+ updatedAt: Date | null;
19
+ }>;
20
+ /**
21
+ * Creates a new email verification request, deleting any existing one for the user.
22
+ */
23
+ declare function createEmailVerificationRequest(userId: string, email: string): Promise<{
24
+ id: string;
25
+ email: string;
26
+ createdAt: Date;
27
+ updatedAt: Date | null;
28
+ userId: string;
29
+ expiresAt: Date;
30
+ code: string;
31
+ }>;
32
+ /**
33
+ * Deletes all email verification requests for a user.
34
+ */
35
+ declare function deleteUserEmailVerificationRequest(userId: string): Promise<void>;
36
+ /**
37
+ * Sends a verification email with the OTP code.
38
+ */
39
+ declare function sendVerificationEmail(email: string, code: string): Promise<void>;
40
+ /**
41
+ * Sets the email verification request ID in a cookie.
42
+ */
43
+ declare function setEmailVerificationRequestCookie(request: typeof emailVerificationTable.$inferSelect): Promise<void>;
44
+ /**
45
+ * Removes the email verification request cookie.
46
+ */
47
+ declare function deleteEmailVerificationRequestCookie(): Promise<void>;
48
+ /**
49
+ * Retrieves the current email verification request based on session and cookie.
50
+ */
51
+ declare function getUserEmailVerificationRequestFromRequest(): Promise<{
52
+ id: string;
53
+ email: string;
54
+ code: string;
55
+ userId: string;
56
+ expiresAt: Date;
57
+ createdAt: Date;
58
+ updatedAt: Date | null;
59
+ } | null>;
60
+ //#endregion
61
+ export { createEmailVerificationRequest, deleteEmailVerificationRequestCookie, deleteUserEmailVerificationRequest, getUserEmailVerificationRequest, getUserEmailVerificationRequestFromRequest, initEmailVerification, sendVerificationEmail, setEmailVerificationRequestCookie };
62
+ //# sourceMappingURL=email-verification.d.cts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"email-verification.d.cts","names":[],"sources":["../../../src/core/auth/email-verification.ts"],"mappings":";;;;;AAeA;iBAAsB,qBAAA,CAAA,GAAqB,OAAA;;;;iBAerB,+BAAA,CACpB,MAAA,UACA,EAAA,WAAU,OAAA;;;;;;;;;;;;iBAkBU,8BAAA,CACpB,MAAA,UACA,KAAA,WAAa,OAAA;;;;;;;;;;;;iBAsBO,kCAAA,CACpB,MAAA,WACC,OAAA;;;;iBASmB,qBAAA,CACpB,KAAA,UACA,IAAA,WACC,OAAA;;;;iBAOmB,iCAAA,CACpB,OAAA,SAAgB,sBAAA,CAAuB,YAAA,GACtC,OAAA;;;;iBAemB,oCAAA,CAAA,GAAwC,OAAA;;;;iBAQxC,0CAAA,CAAA,GAA0C,OAAA"}
@@ -0,0 +1,62 @@
1
+ import { emailVerificationTable } from "../../server/database/schema.mjs";
2
+
3
+ //#region src/core/auth/email-verification.d.ts
4
+ /**
5
+ * Register Email Verification as a Core Security Requirement.
6
+ */
7
+ declare function initEmailVerification(): Promise<void>;
8
+ /**
9
+ * Retrieves a specific email verification request for a user.
10
+ */
11
+ declare function getUserEmailVerificationRequest(userId: string, id: string): Promise<{
12
+ id: string;
13
+ email: string;
14
+ code: string;
15
+ userId: string;
16
+ expiresAt: Date;
17
+ createdAt: Date;
18
+ updatedAt: Date | null;
19
+ }>;
20
+ /**
21
+ * Creates a new email verification request, deleting any existing one for the user.
22
+ */
23
+ declare function createEmailVerificationRequest(userId: string, email: string): Promise<{
24
+ id: string;
25
+ email: string;
26
+ createdAt: Date;
27
+ updatedAt: Date | null;
28
+ userId: string;
29
+ expiresAt: Date;
30
+ code: string;
31
+ }>;
32
+ /**
33
+ * Deletes all email verification requests for a user.
34
+ */
35
+ declare function deleteUserEmailVerificationRequest(userId: string): Promise<void>;
36
+ /**
37
+ * Sends a verification email with the OTP code.
38
+ */
39
+ declare function sendVerificationEmail(email: string, code: string): Promise<void>;
40
+ /**
41
+ * Sets the email verification request ID in a cookie.
42
+ */
43
+ declare function setEmailVerificationRequestCookie(request: typeof emailVerificationTable.$inferSelect): Promise<void>;
44
+ /**
45
+ * Removes the email verification request cookie.
46
+ */
47
+ declare function deleteEmailVerificationRequestCookie(): Promise<void>;
48
+ /**
49
+ * Retrieves the current email verification request based on session and cookie.
50
+ */
51
+ declare function getUserEmailVerificationRequestFromRequest(): Promise<{
52
+ id: string;
53
+ email: string;
54
+ code: string;
55
+ userId: string;
56
+ expiresAt: Date;
57
+ createdAt: Date;
58
+ updatedAt: Date | null;
59
+ } | null>;
60
+ //#endregion
61
+ export { createEmailVerificationRequest, deleteEmailVerificationRequestCookie, deleteUserEmailVerificationRequest, getUserEmailVerificationRequest, getUserEmailVerificationRequestFromRequest, initEmailVerification, sendVerificationEmail, setEmailVerificationRequestCookie };
62
+ //# sourceMappingURL=email-verification.d.mts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"email-verification.d.mts","names":[],"sources":["../../../src/core/auth/email-verification.ts"],"mappings":";;;;;AAeA;iBAAsB,qBAAA,CAAA,GAAqB,OAAA;;;;iBAerB,+BAAA,CACpB,MAAA,UACA,EAAA,WAAU,OAAA;;;;;;;;;;;;iBAkBU,8BAAA,CACpB,MAAA,UACA,KAAA,WAAa,OAAA;;;;;;;;;;;;iBAsBO,kCAAA,CACpB,MAAA,WACC,OAAA;;;;iBASmB,qBAAA,CACpB,KAAA,UACA,IAAA,WACC,OAAA;;;;iBAOmB,iCAAA,CACpB,OAAA,SAAgB,sBAAA,CAAuB,YAAA,GACtC,OAAA;;;;iBAemB,oCAAA,CAAA,GAAwC,OAAA;;;;iBAQxC,0CAAA,CAAA,GAA0C,OAAA"}
@@ -0,0 +1,92 @@
1
+ "use server";
2
+
3
+ import { db } from "../../server/database/inject.mjs";
4
+ import { emailVerificationTable } from "../../server/database/schema.mjs";
5
+ import { sendVerifyEmail } from "../../server/emails/index.mjs";
6
+ import { generateRandomOTP } from "./utils/encode.mjs";
7
+ import { registerSecurityRequirement } from "./logic.mjs";
8
+ import { getCurrentSession } from "./session.mjs";
9
+ import { and, eq } from "drizzle-orm";
10
+ import { addHours } from "date-fns";
11
+ import { cookies } from "next/headers";
12
+
13
+ //#region src/core/auth/email-verification.ts
14
+ /**
15
+ * Register Email Verification as a Core Security Requirement.
16
+ */
17
+ async function initEmailVerification() {
18
+ registerSecurityRequirement(async (_session, user) => {
19
+ if (!user.emailVerifiedAt) return {
20
+ satisfied: false,
21
+ redirect: "/verify-email?unverified"
22
+ };
23
+ return { satisfied: true };
24
+ });
25
+ }
26
+ /**
27
+ * Retrieves a specific email verification request for a user.
28
+ */
29
+ async function getUserEmailVerificationRequest(userId, id) {
30
+ const [session] = await db.select().from(emailVerificationTable).where(and(eq(emailVerificationTable.id, id), eq(emailVerificationTable.userId, userId)));
31
+ return session;
32
+ }
33
+ /**
34
+ * Creates a new email verification request, deleting any existing one for the user.
35
+ */
36
+ async function createEmailVerificationRequest(userId, email) {
37
+ await deleteUserEmailVerificationRequest(userId);
38
+ const code = generateRandomOTP();
39
+ const [verificationRequest] = await db.insert(emailVerificationTable).values({
40
+ userId,
41
+ code,
42
+ email,
43
+ expiresAt: new Date(addHours(/* @__PURE__ */ new Date(), 1))
44
+ }).returning();
45
+ return verificationRequest;
46
+ }
47
+ /**
48
+ * Deletes all email verification requests for a user.
49
+ */
50
+ async function deleteUserEmailVerificationRequest(userId) {
51
+ await db.delete(emailVerificationTable).where(eq(emailVerificationTable.userId, userId));
52
+ }
53
+ /**
54
+ * Sends a verification email with the OTP code.
55
+ */
56
+ async function sendVerificationEmail(email, code) {
57
+ await /* @__PURE__ */ sendVerifyEmail(email, code);
58
+ }
59
+ /**
60
+ * Sets the email verification request ID in a cookie.
61
+ */
62
+ async function setEmailVerificationRequestCookie(request) {
63
+ (await cookies()).set("email_verification", request.id, {
64
+ httpOnly: true,
65
+ path: "/",
66
+ secure: process.env.NODE_ENV === "production",
67
+ sameSite: "lax",
68
+ expires: request.expiresAt
69
+ });
70
+ }
71
+ /**
72
+ * Removes the email verification request cookie.
73
+ */
74
+ async function deleteEmailVerificationRequestCookie() {
75
+ (await cookies()).delete("email_verification");
76
+ }
77
+ /**
78
+ * Retrieves the current email verification request based on session and cookie.
79
+ */
80
+ async function getUserEmailVerificationRequestFromRequest() {
81
+ const { user } = await getCurrentSession();
82
+ if (!user) return null;
83
+ const id = (await cookies()).get("email_verification")?.value ?? null;
84
+ if (!id) return null;
85
+ const request = await getUserEmailVerificationRequest(user.id, id);
86
+ if (!request) await deleteEmailVerificationRequestCookie();
87
+ return request;
88
+ }
89
+
90
+ //#endregion
91
+ export { createEmailVerificationRequest, deleteEmailVerificationRequestCookie, deleteUserEmailVerificationRequest, getUserEmailVerificationRequest, getUserEmailVerificationRequestFromRequest, initEmailVerification, sendVerificationEmail, setEmailVerificationRequestCookie };
92
+ //# sourceMappingURL=email-verification.mjs.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"email-verification.mjs","names":[],"sources":["../../../src/core/auth/email-verification.ts"],"sourcesContent":["\"use server\";\n\nimport { addHours } from \"date-fns\";\nimport { and, eq } from \"drizzle-orm\";\nimport { cookies } from \"next/headers\";\nimport { db } from \"../../server/database/inject\";\nimport { emailVerificationTable } from \"../../server/database/schema\";\nimport { sendVerifyEmail } from \"../../server/emails\";\nimport { registerSecurityRequirement } from \"./logic\";\nimport { getCurrentSession } from \"./session\";\nimport { generateRandomOTP } from \"./utils/encode\";\n\n/**\n * Register Email Verification as a Core Security Requirement.\n */\nexport async function initEmailVerification() {\n registerSecurityRequirement(async (_session, user) => {\n if (!user.emailVerifiedAt) {\n return {\n satisfied: false,\n redirect: \"/verify-email?unverified\",\n };\n }\n return { satisfied: true };\n });\n}\n\n/**\n * Retrieves a specific email verification request for a user.\n */\nexport async function getUserEmailVerificationRequest(\n userId: string,\n id: string,\n) {\n const [session] = await db\n .select()\n .from(emailVerificationTable)\n .where(\n and(\n eq(emailVerificationTable.id, id),\n eq(emailVerificationTable.userId, userId),\n ),\n );\n\n return session;\n}\n\n/**\n * Creates a new email verification request, deleting any existing one for the user.\n */\nexport async function createEmailVerificationRequest(\n userId: string,\n email: string,\n) {\n await deleteUserEmailVerificationRequest(userId);\n\n const code = generateRandomOTP();\n\n const [verificationRequest] = await db\n .insert(emailVerificationTable)\n .values({\n userId,\n code,\n email,\n expiresAt: new Date(addHours(new Date(), 1)),\n })\n .returning();\n\n return verificationRequest;\n}\n\n/**\n * Deletes all email verification requests for a user.\n */\nexport async function deleteUserEmailVerificationRequest(\n userId: string,\n): Promise<void> {\n await db\n .delete(emailVerificationTable)\n .where(eq(emailVerificationTable.userId, userId));\n}\n\n/**\n * Sends a verification email with the OTP code.\n */\nexport async function sendVerificationEmail(\n email: string,\n code: string,\n): Promise<void> {\n await sendVerifyEmail(email, code);\n}\n\n/**\n * Sets the email verification request ID in a cookie.\n */\nexport async function setEmailVerificationRequestCookie(\n request: typeof emailVerificationTable.$inferSelect,\n): Promise<void> {\n const cookieStore = await cookies();\n\n cookieStore.set(\"email_verification\", request.id, {\n httpOnly: true,\n path: \"/\",\n secure: process.env.NODE_ENV === \"production\",\n sameSite: \"lax\",\n expires: request.expiresAt,\n });\n}\n\n/**\n * Removes the email verification request cookie.\n */\nexport async function deleteEmailVerificationRequestCookie(): Promise<void> {\n const cookieStore = await cookies();\n cookieStore.delete(\"email_verification\");\n}\n\n/**\n * Retrieves the current email verification request based on session and cookie.\n */\nexport async function getUserEmailVerificationRequestFromRequest() {\n const { user } = await getCurrentSession();\n\n if (!user) {\n return null;\n }\n\n const cookieStore = await cookies();\n const id = cookieStore.get(\"email_verification\")?.value ?? null;\n\n if (!id) {\n return null;\n }\n\n const request = await getUserEmailVerificationRequest(user.id, id);\n\n if (!request) {\n await deleteEmailVerificationRequestCookie();\n }\n\n return request;\n}\n"],"mappings":";;;;;;;;;;;;;;;;AAeA,eAAsB,wBAAwB;AAC5C,6BAA4B,OAAO,UAAU,SAAS;AACpD,MAAI,CAAC,KAAK,gBACR,QAAO;GACL,WAAW;GACX,UAAU;GACX;AAEH,SAAO,EAAE,WAAW,MAAM;GAC1B;;;;;AAMJ,eAAsB,gCACpB,QACA,IACA;CACA,MAAM,CAAC,WAAW,MAAM,GACrB,QAAQ,CACR,KAAK,uBAAuB,CAC5B,MACC,IACE,GAAG,uBAAuB,IAAI,GAAG,EACjC,GAAG,uBAAuB,QAAQ,OAAO,CAC1C,CACF;AAEH,QAAO;;;;;AAMT,eAAsB,+BACpB,QACA,OACA;AACA,OAAM,mCAAmC,OAAO;CAEhD,MAAM,OAAO,mBAAmB;CAEhC,MAAM,CAAC,uBAAuB,MAAM,GACjC,OAAO,uBAAuB,CAC9B,OAAO;EACN;EACA;EACA;EACA,WAAW,IAAI,KAAK,yBAAS,IAAI,MAAM,EAAE,EAAE,CAAC;EAC7C,CAAC,CACD,WAAW;AAEd,QAAO;;;;;AAMT,eAAsB,mCACpB,QACe;AACf,OAAM,GACH,OAAO,uBAAuB,CAC9B,MAAM,GAAG,uBAAuB,QAAQ,OAAO,CAAC;;;;;AAMrD,eAAsB,sBACpB,OACA,MACe;AACf,OAAM,gCAAgB,OAAO,KAAK;;;;;AAMpC,eAAsB,kCACpB,SACe;AAGf,EAFoB,MAAM,SAAS,EAEvB,IAAI,sBAAsB,QAAQ,IAAI;EAChD,UAAU;EACV,MAAM;EACN,QAAQ,QAAQ,IAAI,aAAa;EACjC,UAAU;EACV,SAAS,QAAQ;EAClB,CAAC;;;;;AAMJ,eAAsB,uCAAsD;AAE1E,EADoB,MAAM,SAAS,EACvB,OAAO,qBAAqB;;;;;AAM1C,eAAsB,6CAA6C;CACjE,MAAM,EAAE,SAAS,MAAM,mBAAmB;AAE1C,KAAI,CAAC,KACH,QAAO;CAIT,MAAM,MADc,MAAM,SAAS,EACZ,IAAI,qBAAqB,EAAE,SAAS;AAE3D,KAAI,CAAC,GACH,QAAO;CAGT,MAAM,UAAU,MAAM,gCAAgC,KAAK,IAAI,GAAG;AAElE,KAAI,CAAC,QACH,OAAM,sCAAsC;AAG9C,QAAO"}