@rakun-kit/core 1.4.11 → 1.5.0

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 (654) hide show
  1. package/README.md +1100 -758
  2. package/dist/cjs/api/context.js +1 -0
  3. package/dist/cjs/api/context.js.map +1 -1
  4. package/dist/cjs/api/operations/apiEventLog.js +128 -0
  5. package/dist/cjs/api/operations/apiEventLog.js.map +1 -0
  6. package/dist/cjs/api/operations/index.js +4 -1
  7. package/dist/cjs/api/operations/index.js.map +1 -1
  8. package/dist/cjs/api/operations/manager-contract.js +256 -2
  9. package/dist/cjs/api/operations/manager-contract.js.map +1 -1
  10. package/dist/cjs/api/operations/manager-manifest.js +160 -0
  11. package/dist/cjs/api/operations/manager-manifest.js.map +1 -1
  12. package/dist/cjs/api/operations/manager.js +128 -4
  13. package/dist/cjs/api/operations/manager.js.map +1 -1
  14. package/dist/cjs/api/operations/tracing.js +36 -5
  15. package/dist/cjs/api/operations/tracing.js.map +1 -1
  16. package/dist/cjs/api/routes/manager/auth/externalLogin.js +126 -0
  17. package/dist/cjs/api/routes/manager/auth/externalLogin.js.map +1 -0
  18. package/dist/cjs/api/routes/manager/auth/login.js +51 -54
  19. package/dist/cjs/api/routes/manager/auth/login.js.map +1 -1
  20. package/dist/cjs/api/routes/manager/auth/mfa/regenerateRecoveryCodes.js +46 -0
  21. package/dist/cjs/api/routes/manager/auth/mfa/regenerateRecoveryCodes.js.map +1 -0
  22. package/dist/cjs/api/routes/manager/auth/mfa/verifyRecoveryCode.js +80 -0
  23. package/dist/cjs/api/routes/manager/auth/mfa/verifyRecoveryCode.js.map +1 -0
  24. package/dist/cjs/api/routes/manager/auth/passwordIpBlocks.js +90 -0
  25. package/dist/cjs/api/routes/manager/auth/passwordIpBlocks.js.map +1 -0
  26. package/dist/cjs/api/routes/manager/auth/passwordRecovery.js +147 -0
  27. package/dist/cjs/api/routes/manager/auth/passwordRecovery.js.map +1 -0
  28. package/dist/cjs/api/routes/manager/auth/totp/confirmTotp.js +19 -2
  29. package/dist/cjs/api/routes/manager/auth/totp/confirmTotp.js.map +1 -1
  30. package/dist/cjs/api/routes/manager/auth/totp/enrollTotp.js +2 -2
  31. package/dist/cjs/api/routes/manager/auth/totp/enrollTotp.js.map +1 -1
  32. package/dist/cjs/api/routes/manager/auth/webauthn/webauthnRegisterVerify.js +32 -3
  33. package/dist/cjs/api/routes/manager/auth/webauthn/webauthnRegisterVerify.js.map +1 -1
  34. package/dist/cjs/api/routes/manager/comments.js +120 -8
  35. package/dist/cjs/api/routes/manager/comments.js.map +1 -1
  36. package/dist/cjs/api/routes/manager/contentVersions.js +224 -0
  37. package/dist/cjs/api/routes/manager/contentVersions.js.map +1 -0
  38. package/dist/cjs/api/routes/manager/delete.js +69 -5
  39. package/dist/cjs/api/routes/manager/delete.js.map +1 -1
  40. package/dist/cjs/api/routes/manager/list.js +91 -2
  41. package/dist/cjs/api/routes/manager/list.js.map +1 -1
  42. package/dist/cjs/api/routes/manager/localeVariants.js +234 -18
  43. package/dist/cjs/api/routes/manager/localeVariants.js.map +1 -1
  44. package/dist/cjs/api/routes/manager/logs/cleanup.js +20 -0
  45. package/dist/cjs/api/routes/manager/logs/cleanup.js.map +1 -0
  46. package/dist/cjs/api/routes/manager/logs/list.js +22 -0
  47. package/dist/cjs/api/routes/manager/logs/list.js.map +1 -0
  48. package/dist/cjs/api/routes/manager/notifications.js +140 -0
  49. package/dist/cjs/api/routes/manager/notifications.js.map +1 -0
  50. package/dist/cjs/api/routes/manager/previewSlugRedirects.js +25 -0
  51. package/dist/cjs/api/routes/manager/previewSlugRedirects.js.map +1 -0
  52. package/dist/cjs/api/routes/manager/reviewPolicies.js +109 -0
  53. package/dist/cjs/api/routes/manager/reviewPolicies.js.map +1 -0
  54. package/dist/cjs/api/routes/manager/reviews.js +272 -0
  55. package/dist/cjs/api/routes/manager/reviews.js.map +1 -0
  56. package/dist/cjs/api/routes/manager/routeLayout.js +138 -0
  57. package/dist/cjs/api/routes/manager/routeLayout.js.map +1 -0
  58. package/dist/cjs/api/routes/manager/translateDocument.js +15 -0
  59. package/dist/cjs/api/routes/manager/translateDocument.js.map +1 -1
  60. package/dist/cjs/api/routes/manager/trash.js +72 -39
  61. package/dist/cjs/api/routes/manager/trash.js.map +1 -1
  62. package/dist/cjs/api/routes/manager/uiLocales.js +30 -0
  63. package/dist/cjs/api/routes/manager/uiLocales.js.map +1 -0
  64. package/dist/cjs/api/routes/manager/update.js +87 -0
  65. package/dist/cjs/api/routes/manager/update.js.map +1 -1
  66. package/dist/cjs/api/routes/manager/versions/restore.js +20 -0
  67. package/dist/cjs/api/routes/manager/versions/restore.js.map +1 -1
  68. package/dist/cjs/api/utils/authEvents.js +31 -0
  69. package/dist/cjs/api/utils/authEvents.js.map +1 -0
  70. package/dist/cjs/api/utils/authRateLimit.js +4 -3
  71. package/dist/cjs/api/utils/authRateLimit.js.map +1 -1
  72. package/dist/cjs/api/utils/managerNotifications.js +27 -0
  73. package/dist/cjs/api/utils/managerNotifications.js.map +1 -0
  74. package/dist/cjs/api/utils/recoveryCodes.js +29 -0
  75. package/dist/cjs/api/utils/recoveryCodes.js.map +1 -0
  76. package/dist/cjs/api/utils/redirects/createSlugChangeRedirects.js +145 -0
  77. package/dist/cjs/api/utils/redirects/createSlugChangeRedirects.js.map +1 -0
  78. package/dist/cjs/api/utils/redirects/slugPathChanges.js +137 -0
  79. package/dist/cjs/api/utils/redirects/slugPathChanges.js.map +1 -0
  80. package/dist/cjs/api/utils/requireContentType.js +13 -0
  81. package/dist/cjs/api/utils/requireContentType.js.map +1 -1
  82. package/dist/cjs/api/utils/reviews.js +273 -0
  83. package/dist/cjs/api/utils/reviews.js.map +1 -0
  84. package/dist/cjs/api/utils/routes/routeMapHelpers.js +46 -22
  85. package/dist/cjs/api/utils/routes/routeMapHelpers.js.map +1 -1
  86. package/dist/cjs/api/utils/routes/updateRoutesMap.js +2 -1
  87. package/dist/cjs/api/utils/routes/updateRoutesMap.js.map +1 -1
  88. package/dist/cjs/api/utils/safeManagerQuery.js +1 -0
  89. package/dist/cjs/api/utils/safeManagerQuery.js.map +1 -1
  90. package/dist/cjs/auth/accountRecovery.js +5 -0
  91. package/dist/cjs/auth/accountRecovery.js.map +1 -0
  92. package/dist/cjs/auth/completePrimaryAuthentication.js +50 -0
  93. package/dist/cjs/auth/completePrimaryAuthentication.js.map +1 -0
  94. package/dist/cjs/auth/loginAdapters.js +183 -0
  95. package/dist/cjs/auth/loginAdapters.js.map +1 -0
  96. package/dist/cjs/auth/passwordFail2ban.js +119 -0
  97. package/dist/cjs/auth/passwordFail2ban.js.map +1 -0
  98. package/dist/cjs/auth/passwordResetMailTemplate.js +90 -0
  99. package/dist/cjs/auth/passwordResetMailTemplate.js.map +1 -0
  100. package/dist/cjs/bootstrapState.js.map +1 -1
  101. package/dist/cjs/client.js +5 -1
  102. package/dist/cjs/client.js.map +1 -1
  103. package/dist/cjs/contracts.js +12 -0
  104. package/dist/cjs/contracts.js.map +1 -1
  105. package/dist/cjs/eventLog/index.js +52 -0
  106. package/dist/cjs/eventLog/index.js.map +1 -0
  107. package/dist/cjs/eventLog/mongo.js +115 -0
  108. package/dist/cjs/eventLog/mongo.js.map +1 -0
  109. package/dist/cjs/eventLog/service.js +189 -0
  110. package/dist/cjs/eventLog/service.js.map +1 -0
  111. package/dist/cjs/eventLog/types.js +6 -0
  112. package/dist/cjs/eventLog/types.js.map +1 -0
  113. package/dist/cjs/index.js +62 -3
  114. package/dist/cjs/index.js.map +1 -1
  115. package/dist/cjs/internal-content-types/ContentCommentReadState.js +21 -0
  116. package/dist/cjs/internal-content-types/ContentCommentReadState.js.map +1 -0
  117. package/dist/cjs/internal-content-types/ContentReview.js +34 -0
  118. package/dist/cjs/internal-content-types/ContentReview.js.map +1 -0
  119. package/dist/cjs/internal-content-types/ContentReviewDecision.js +21 -0
  120. package/dist/cjs/internal-content-types/ContentReviewDecision.js.map +1 -0
  121. package/dist/cjs/internal-content-types/ContentReviewPolicy.js +21 -0
  122. package/dist/cjs/internal-content-types/ContentReviewPolicy.js.map +1 -0
  123. package/dist/cjs/internal-content-types/LoginIpBlock.js +20 -0
  124. package/dist/cjs/internal-content-types/LoginIpBlock.js.map +1 -0
  125. package/dist/cjs/internal-content-types/ManagerNotification.js +33 -0
  126. package/dist/cjs/internal-content-types/ManagerNotification.js.map +1 -0
  127. package/dist/cjs/internal-content-types/ManagerUserHooks.js +8 -1
  128. package/dist/cjs/internal-content-types/ManagerUserHooks.js.map +1 -1
  129. package/dist/cjs/internal-content-types/PasswordResetToken.js +50 -0
  130. package/dist/cjs/internal-content-types/PasswordResetToken.js.map +1 -0
  131. package/dist/cjs/internal-content-types/UserMfa.js +35 -1
  132. package/dist/cjs/internal-content-types/UserMfa.js.map +1 -1
  133. package/dist/cjs/internal-content-types/index.js +7 -0
  134. package/dist/cjs/internal-content-types/index.js.map +1 -1
  135. package/dist/cjs/lib/ContentType.js +1 -8
  136. package/dist/cjs/lib/ContentType.js.map +1 -1
  137. package/dist/cjs/lib/Permissions.js +13 -1
  138. package/dist/cjs/lib/Permissions.js.map +1 -1
  139. package/dist/cjs/lib/Registry.js +8 -3
  140. package/dist/cjs/lib/Registry.js.map +1 -1
  141. package/dist/cjs/lib/errors/AppError.js +7 -1
  142. package/dist/cjs/lib/errors/AppError.js.map +1 -1
  143. package/dist/cjs/lib/fields/Fields.js +2 -1
  144. package/dist/cjs/lib/fields/Fields.js.map +1 -1
  145. package/dist/cjs/lib/fields/Link.js +2 -1
  146. package/dist/cjs/lib/fields/Link.js.map +1 -1
  147. package/dist/cjs/lib/localeVariants.js +9 -1
  148. package/dist/cjs/lib/localeVariants.js.map +1 -1
  149. package/dist/cjs/literals/index.js +0 -1
  150. package/dist/cjs/literals/index.js.map +1 -1
  151. package/dist/cjs/mail/adapters.js +3 -0
  152. package/dist/cjs/mail/adapters.js.map +1 -0
  153. package/dist/cjs/mail/index.js +53 -0
  154. package/dist/cjs/mail/index.js.map +1 -0
  155. package/dist/cjs/mail/mailService.js +209 -0
  156. package/dist/cjs/mail/mailService.js.map +1 -0
  157. package/dist/cjs/mail/templates.js +32 -0
  158. package/dist/cjs/mail/templates.js.map +1 -0
  159. package/dist/cjs/orm/createIndexes.js +37 -0
  160. package/dist/cjs/orm/createIndexes.js.map +1 -1
  161. package/dist/cjs/orm/dbService.js +3 -3
  162. package/dist/cjs/orm/dbService.js.map +1 -1
  163. package/dist/cjs/orm/operations/update.js +28 -26
  164. package/dist/cjs/orm/operations/update.js.map +1 -1
  165. package/dist/cjs/plugins.js.map +1 -1
  166. package/dist/cjs/schemas/manager/auth/externalLogin.js +27 -0
  167. package/dist/cjs/schemas/manager/auth/externalLogin.js.map +1 -0
  168. package/dist/cjs/schemas/manager/auth/mfa/recoveryCode.js +27 -0
  169. package/dist/cjs/schemas/manager/auth/mfa/recoveryCode.js.map +1 -0
  170. package/dist/cjs/schemas/manager/auth/passwordIpBlocks.js +32 -0
  171. package/dist/cjs/schemas/manager/auth/passwordIpBlocks.js.map +1 -0
  172. package/dist/cjs/schemas/manager/auth/passwordRecovery.js +21 -0
  173. package/dist/cjs/schemas/manager/auth/passwordRecovery.js.map +1 -0
  174. package/dist/cjs/schemas/manager/auth/totp/confirmTotp.js +4 -7
  175. package/dist/cjs/schemas/manager/auth/totp/confirmTotp.js.map +1 -1
  176. package/dist/cjs/schemas/manager/comments.js +11 -1
  177. package/dist/cjs/schemas/manager/comments.js.map +1 -1
  178. package/dist/cjs/schemas/manager/contentVersions.js +51 -0
  179. package/dist/cjs/schemas/manager/contentVersions.js.map +1 -0
  180. package/dist/cjs/schemas/manager/eventLogs.js +54 -0
  181. package/dist/cjs/schemas/manager/eventLogs.js.map +1 -0
  182. package/dist/cjs/schemas/manager/list.js +1 -0
  183. package/dist/cjs/schemas/manager/list.js.map +1 -1
  184. package/dist/cjs/schemas/manager/localeVariants.js +10 -1
  185. package/dist/cjs/schemas/manager/localeVariants.js.map +1 -1
  186. package/dist/cjs/schemas/manager/notifications.js +51 -0
  187. package/dist/cjs/schemas/manager/notifications.js.map +1 -0
  188. package/dist/cjs/schemas/manager/reviewPolicies.js +33 -0
  189. package/dist/cjs/schemas/manager/reviewPolicies.js.map +1 -0
  190. package/dist/cjs/schemas/manager/reviews.js +93 -0
  191. package/dist/cjs/schemas/manager/reviews.js.map +1 -0
  192. package/dist/cjs/schemas/manager/routeLayout.js +50 -0
  193. package/dist/cjs/schemas/manager/routeLayout.js.map +1 -0
  194. package/dist/cjs/schemas/manager/slugRedirects.js +24 -0
  195. package/dist/cjs/schemas/manager/slugRedirects.js.map +1 -0
  196. package/dist/cjs/schemas/manager/uiLocales.js +29 -0
  197. package/dist/cjs/schemas/manager/uiLocales.js.map +1 -0
  198. package/dist/cjs/schemas/manager/update.js +1 -0
  199. package/dist/cjs/schemas/manager/update.js.map +1 -1
  200. package/dist/docs/index.md +238 -0
  201. package/dist/esm/api/context.d.ts +2 -0
  202. package/dist/esm/api/context.d.ts.map +1 -1
  203. package/dist/esm/api/context.js +1 -0
  204. package/dist/esm/api/context.js.map +1 -1
  205. package/dist/esm/api/operations/apiEventLog.d.ts +25 -0
  206. package/dist/esm/api/operations/apiEventLog.d.ts.map +1 -0
  207. package/dist/esm/api/operations/apiEventLog.js +121 -0
  208. package/dist/esm/api/operations/apiEventLog.js.map +1 -0
  209. package/dist/esm/api/operations/index.d.ts +735 -4
  210. package/dist/esm/api/operations/index.d.ts.map +1 -1
  211. package/dist/esm/api/operations/index.js +1 -0
  212. package/dist/esm/api/operations/index.js.map +1 -1
  213. package/dist/esm/api/operations/manager-contract.d.ts +729 -4
  214. package/dist/esm/api/operations/manager-contract.d.ts.map +1 -1
  215. package/dist/esm/api/operations/manager-contract.js +257 -3
  216. package/dist/esm/api/operations/manager-contract.js.map +1 -1
  217. package/dist/esm/api/operations/manager-manifest.d.ts +160 -0
  218. package/dist/esm/api/operations/manager-manifest.d.ts.map +1 -1
  219. package/dist/esm/api/operations/manager-manifest.js +160 -0
  220. package/dist/esm/api/operations/manager-manifest.js.map +1 -1
  221. package/dist/esm/api/operations/manager.d.ts +729 -4
  222. package/dist/esm/api/operations/manager.d.ts.map +1 -1
  223. package/dist/esm/api/operations/manager.js +126 -2
  224. package/dist/esm/api/operations/manager.js.map +1 -1
  225. package/dist/esm/api/operations/tracing.d.ts.map +1 -1
  226. package/dist/esm/api/operations/tracing.js +36 -5
  227. package/dist/esm/api/operations/tracing.js.map +1 -1
  228. package/dist/esm/api/operations/web-contract.d.ts +5 -0
  229. package/dist/esm/api/operations/web-contract.d.ts.map +1 -1
  230. package/dist/esm/api/operations/web.d.ts +5 -0
  231. package/dist/esm/api/operations/web.d.ts.map +1 -1
  232. package/dist/esm/api/routes/manager/auth/externalLogin.d.ts +11 -0
  233. package/dist/esm/api/routes/manager/auth/externalLogin.d.ts.map +1 -0
  234. package/dist/esm/api/routes/manager/auth/externalLogin.js +121 -0
  235. package/dist/esm/api/routes/manager/auth/externalLogin.js.map +1 -0
  236. package/dist/esm/api/routes/manager/auth/getSession.d.ts +2 -0
  237. package/dist/esm/api/routes/manager/auth/getSession.d.ts.map +1 -1
  238. package/dist/esm/api/routes/manager/auth/login.d.ts.map +1 -1
  239. package/dist/esm/api/routes/manager/auth/login.js +52 -55
  240. package/dist/esm/api/routes/manager/auth/login.js.map +1 -1
  241. package/dist/esm/api/routes/manager/auth/markTourSeen.d.ts +2 -0
  242. package/dist/esm/api/routes/manager/auth/markTourSeen.d.ts.map +1 -1
  243. package/dist/esm/api/routes/manager/auth/mfa/regenerateRecoveryCodes.d.ts +10 -0
  244. package/dist/esm/api/routes/manager/auth/mfa/regenerateRecoveryCodes.d.ts.map +1 -0
  245. package/dist/esm/api/routes/manager/auth/mfa/regenerateRecoveryCodes.js +42 -0
  246. package/dist/esm/api/routes/manager/auth/mfa/regenerateRecoveryCodes.js.map +1 -0
  247. package/dist/esm/api/routes/manager/auth/mfa/verifyRecoveryCode.d.ts +15 -0
  248. package/dist/esm/api/routes/manager/auth/mfa/verifyRecoveryCode.d.ts.map +1 -0
  249. package/dist/esm/api/routes/manager/auth/mfa/verifyRecoveryCode.js +76 -0
  250. package/dist/esm/api/routes/manager/auth/mfa/verifyRecoveryCode.js.map +1 -0
  251. package/dist/esm/api/routes/manager/auth/passwordIpBlocks.d.ts +10 -0
  252. package/dist/esm/api/routes/manager/auth/passwordIpBlocks.d.ts.map +1 -0
  253. package/dist/esm/api/routes/manager/auth/passwordIpBlocks.js +85 -0
  254. package/dist/esm/api/routes/manager/auth/passwordIpBlocks.js.map +1 -0
  255. package/dist/esm/api/routes/manager/auth/passwordRecovery.d.ts +15 -0
  256. package/dist/esm/api/routes/manager/auth/passwordRecovery.d.ts.map +1 -0
  257. package/dist/esm/api/routes/manager/auth/passwordRecovery.js +142 -0
  258. package/dist/esm/api/routes/manager/auth/passwordRecovery.js.map +1 -0
  259. package/dist/esm/api/routes/manager/auth/totp/confirmTotp.d.ts +2 -1
  260. package/dist/esm/api/routes/manager/auth/totp/confirmTotp.d.ts.map +1 -1
  261. package/dist/esm/api/routes/manager/auth/totp/confirmTotp.js +19 -2
  262. package/dist/esm/api/routes/manager/auth/totp/confirmTotp.js.map +1 -1
  263. package/dist/esm/api/routes/manager/auth/totp/enrollTotp.js +2 -2
  264. package/dist/esm/api/routes/manager/auth/totp/enrollTotp.js.map +1 -1
  265. package/dist/esm/api/routes/manager/auth/updateAccount.d.ts +2 -0
  266. package/dist/esm/api/routes/manager/auth/updateAccount.d.ts.map +1 -1
  267. package/dist/esm/api/routes/manager/auth/updateTutorialPreferences.d.ts +2 -0
  268. package/dist/esm/api/routes/manager/auth/updateTutorialPreferences.d.ts.map +1 -1
  269. package/dist/esm/api/routes/manager/auth/webauthn/webauthnRegisterVerify.d.ts +2 -1
  270. package/dist/esm/api/routes/manager/auth/webauthn/webauthnRegisterVerify.d.ts.map +1 -1
  271. package/dist/esm/api/routes/manager/auth/webauthn/webauthnRegisterVerify.js +32 -3
  272. package/dist/esm/api/routes/manager/auth/webauthn/webauthnRegisterVerify.js.map +1 -1
  273. package/dist/esm/api/routes/manager/comments.d.ts +9 -1
  274. package/dist/esm/api/routes/manager/comments.d.ts.map +1 -1
  275. package/dist/esm/api/routes/manager/comments.js +118 -8
  276. package/dist/esm/api/routes/manager/comments.js.map +1 -1
  277. package/dist/esm/api/routes/manager/contentType.d.ts +0 -1
  278. package/dist/esm/api/routes/manager/contentType.d.ts.map +1 -1
  279. package/dist/esm/api/routes/manager/contentTypes.d.ts +0 -1
  280. package/dist/esm/api/routes/manager/contentTypes.d.ts.map +1 -1
  281. package/dist/esm/api/routes/manager/contentVersions.d.ts +15 -0
  282. package/dist/esm/api/routes/manager/contentVersions.d.ts.map +1 -0
  283. package/dist/esm/api/routes/manager/contentVersions.js +218 -0
  284. package/dist/esm/api/routes/manager/contentVersions.js.map +1 -0
  285. package/dist/esm/api/routes/manager/create.d.ts +1 -0
  286. package/dist/esm/api/routes/manager/create.d.ts.map +1 -1
  287. package/dist/esm/api/routes/manager/delete.d.ts.map +1 -1
  288. package/dist/esm/api/routes/manager/delete.js +70 -6
  289. package/dist/esm/api/routes/manager/delete.js.map +1 -1
  290. package/dist/esm/api/routes/manager/duplicate.d.ts +1 -0
  291. package/dist/esm/api/routes/manager/duplicate.d.ts.map +1 -1
  292. package/dist/esm/api/routes/manager/languages.d.ts +1 -0
  293. package/dist/esm/api/routes/manager/languages.d.ts.map +1 -1
  294. package/dist/esm/api/routes/manager/list.d.ts +3 -0
  295. package/dist/esm/api/routes/manager/list.d.ts.map +1 -1
  296. package/dist/esm/api/routes/manager/list.js +93 -4
  297. package/dist/esm/api/routes/manager/list.js.map +1 -1
  298. package/dist/esm/api/routes/manager/localeVariants.d.ts +215 -1
  299. package/dist/esm/api/routes/manager/localeVariants.d.ts.map +1 -1
  300. package/dist/esm/api/routes/manager/localeVariants.js +218 -11
  301. package/dist/esm/api/routes/manager/localeVariants.js.map +1 -1
  302. package/dist/esm/api/routes/manager/logs/cleanup.d.ts +7 -0
  303. package/dist/esm/api/routes/manager/logs/cleanup.d.ts.map +1 -0
  304. package/dist/esm/api/routes/manager/logs/cleanup.js +16 -0
  305. package/dist/esm/api/routes/manager/logs/cleanup.js.map +1 -0
  306. package/dist/esm/api/routes/manager/logs/list.d.ts +7 -0
  307. package/dist/esm/api/routes/manager/logs/list.d.ts.map +1 -0
  308. package/dist/esm/api/routes/manager/logs/list.js +18 -0
  309. package/dist/esm/api/routes/manager/logs/list.js.map +1 -0
  310. package/dist/esm/api/routes/manager/notifications.d.ts +11 -0
  311. package/dist/esm/api/routes/manager/notifications.d.ts.map +1 -0
  312. package/dist/esm/api/routes/manager/notifications.js +135 -0
  313. package/dist/esm/api/routes/manager/notifications.js.map +1 -0
  314. package/dist/esm/api/routes/manager/previewSlugRedirects.d.ts +7 -0
  315. package/dist/esm/api/routes/manager/previewSlugRedirects.d.ts.map +1 -0
  316. package/dist/esm/api/routes/manager/previewSlugRedirects.js +21 -0
  317. package/dist/esm/api/routes/manager/previewSlugRedirects.js.map +1 -0
  318. package/dist/esm/api/routes/manager/reviewPolicies.d.ts +14 -0
  319. package/dist/esm/api/routes/manager/reviewPolicies.d.ts.map +1 -0
  320. package/dist/esm/api/routes/manager/reviewPolicies.js +103 -0
  321. package/dist/esm/api/routes/manager/reviewPolicies.js.map +1 -0
  322. package/dist/esm/api/routes/manager/reviews.d.ts +23 -0
  323. package/dist/esm/api/routes/manager/reviews.d.ts.map +1 -0
  324. package/dist/esm/api/routes/manager/reviews.js +264 -0
  325. package/dist/esm/api/routes/manager/reviews.js.map +1 -0
  326. package/dist/esm/api/routes/manager/routeLayout.d.ts +11 -0
  327. package/dist/esm/api/routes/manager/routeLayout.d.ts.map +1 -0
  328. package/dist/esm/api/routes/manager/routeLayout.js +133 -0
  329. package/dist/esm/api/routes/manager/routeLayout.js.map +1 -0
  330. package/dist/esm/api/routes/manager/translateDocument.d.ts.map +1 -1
  331. package/dist/esm/api/routes/manager/translateDocument.js +15 -0
  332. package/dist/esm/api/routes/manager/translateDocument.js.map +1 -1
  333. package/dist/esm/api/routes/manager/trash.d.ts +19 -0
  334. package/dist/esm/api/routes/manager/trash.d.ts.map +1 -1
  335. package/dist/esm/api/routes/manager/trash.js +70 -38
  336. package/dist/esm/api/routes/manager/trash.js.map +1 -1
  337. package/dist/esm/api/routes/manager/uiLocales.d.ts +17 -0
  338. package/dist/esm/api/routes/manager/uiLocales.d.ts.map +1 -0
  339. package/dist/esm/api/routes/manager/uiLocales.js +25 -0
  340. package/dist/esm/api/routes/manager/uiLocales.js.map +1 -0
  341. package/dist/esm/api/routes/manager/update.d.ts +1 -0
  342. package/dist/esm/api/routes/manager/update.d.ts.map +1 -1
  343. package/dist/esm/api/routes/manager/update.js +87 -0
  344. package/dist/esm/api/routes/manager/update.js.map +1 -1
  345. package/dist/esm/api/routes/manager/versions/restore.d.ts.map +1 -1
  346. package/dist/esm/api/routes/manager/versions/restore.js +20 -0
  347. package/dist/esm/api/routes/manager/versions/restore.js.map +1 -1
  348. package/dist/esm/api/routes/web/previewPage.d.ts +2 -0
  349. package/dist/esm/api/routes/web/previewPage.d.ts.map +1 -1
  350. package/dist/esm/api/utils/authEvents.d.ts +7 -0
  351. package/dist/esm/api/utils/authEvents.d.ts.map +1 -0
  352. package/dist/esm/api/utils/authEvents.js +27 -0
  353. package/dist/esm/api/utils/authEvents.js.map +1 -0
  354. package/dist/esm/api/utils/authRateLimit.d.ts.map +1 -1
  355. package/dist/esm/api/utils/authRateLimit.js +4 -3
  356. package/dist/esm/api/utils/authRateLimit.js.map +1 -1
  357. package/dist/esm/api/utils/getUser.d.ts +2 -0
  358. package/dist/esm/api/utils/getUser.d.ts.map +1 -1
  359. package/dist/esm/api/utils/managerNotifications.d.ts +39 -0
  360. package/dist/esm/api/utils/managerNotifications.d.ts.map +1 -0
  361. package/dist/esm/api/utils/managerNotifications.js +23 -0
  362. package/dist/esm/api/utils/managerNotifications.js.map +1 -0
  363. package/dist/esm/api/utils/recoveryCodes.d.ts +9 -0
  364. package/dist/esm/api/utils/recoveryCodes.d.ts.map +1 -0
  365. package/dist/esm/api/utils/recoveryCodes.js +22 -0
  366. package/dist/esm/api/utils/recoveryCodes.js.map +1 -0
  367. package/dist/esm/api/utils/redirects/createSlugChangeRedirects.d.ts +14 -0
  368. package/dist/esm/api/utils/redirects/createSlugChangeRedirects.d.ts.map +1 -0
  369. package/dist/esm/api/utils/redirects/createSlugChangeRedirects.js +141 -0
  370. package/dist/esm/api/utils/redirects/createSlugChangeRedirects.js.map +1 -0
  371. package/dist/esm/api/utils/redirects/slugPathChanges.d.ts +9 -0
  372. package/dist/esm/api/utils/redirects/slugPathChanges.d.ts.map +1 -0
  373. package/dist/esm/api/utils/redirects/slugPathChanges.js +133 -0
  374. package/dist/esm/api/utils/redirects/slugPathChanges.js.map +1 -0
  375. package/dist/esm/api/utils/requireContentType.d.ts.map +1 -1
  376. package/dist/esm/api/utils/requireContentType.js +13 -0
  377. package/dist/esm/api/utils/requireContentType.js.map +1 -1
  378. package/dist/esm/api/utils/reviews.d.ts +145 -0
  379. package/dist/esm/api/utils/reviews.d.ts.map +1 -0
  380. package/dist/esm/api/utils/reviews.js +253 -0
  381. package/dist/esm/api/utils/reviews.js.map +1 -0
  382. package/dist/esm/api/utils/routes/routeMapHelpers.d.ts +2 -0
  383. package/dist/esm/api/utils/routes/routeMapHelpers.d.ts.map +1 -1
  384. package/dist/esm/api/utils/routes/routeMapHelpers.js +45 -22
  385. package/dist/esm/api/utils/routes/routeMapHelpers.js.map +1 -1
  386. package/dist/esm/api/utils/routes/updateRoutesMap.d.ts +2 -1
  387. package/dist/esm/api/utils/routes/updateRoutesMap.d.ts.map +1 -1
  388. package/dist/esm/api/utils/routes/updateRoutesMap.js +2 -1
  389. package/dist/esm/api/utils/routes/updateRoutesMap.js.map +1 -1
  390. package/dist/esm/api/utils/safeManagerQuery.d.ts.map +1 -1
  391. package/dist/esm/api/utils/safeManagerQuery.js +1 -0
  392. package/dist/esm/api/utils/safeManagerQuery.js.map +1 -1
  393. package/dist/esm/auth/accountRecovery.d.ts +18 -0
  394. package/dist/esm/auth/accountRecovery.d.ts.map +1 -0
  395. package/dist/esm/auth/accountRecovery.js +2 -0
  396. package/dist/esm/auth/accountRecovery.js.map +1 -0
  397. package/dist/esm/auth/completePrimaryAuthentication.d.ts +3 -0
  398. package/dist/esm/auth/completePrimaryAuthentication.d.ts.map +1 -0
  399. package/dist/esm/auth/completePrimaryAuthentication.js +46 -0
  400. package/dist/esm/auth/completePrimaryAuthentication.js.map +1 -0
  401. package/dist/esm/auth/loginAdapters.d.ts +57 -0
  402. package/dist/esm/auth/loginAdapters.d.ts.map +1 -0
  403. package/dist/esm/auth/loginAdapters.js +176 -0
  404. package/dist/esm/auth/loginAdapters.js.map +1 -0
  405. package/dist/esm/auth/passwordFail2ban.d.ts +20 -0
  406. package/dist/esm/auth/passwordFail2ban.d.ts.map +1 -0
  407. package/dist/esm/auth/passwordFail2ban.js +110 -0
  408. package/dist/esm/auth/passwordFail2ban.js.map +1 -0
  409. package/dist/esm/auth/passwordResetMailTemplate.d.ts +3 -0
  410. package/dist/esm/auth/passwordResetMailTemplate.d.ts.map +1 -0
  411. package/dist/esm/auth/passwordResetMailTemplate.js +87 -0
  412. package/dist/esm/auth/passwordResetMailTemplate.js.map +1 -0
  413. package/dist/esm/bootstrapState.d.ts +24 -2
  414. package/dist/esm/bootstrapState.d.ts.map +1 -1
  415. package/dist/esm/bootstrapState.js.map +1 -1
  416. package/dist/esm/client.d.ts +12 -6
  417. package/dist/esm/client.d.ts.map +1 -1
  418. package/dist/esm/client.js +4 -4
  419. package/dist/esm/client.js.map +1 -1
  420. package/dist/esm/contracts.d.ts +12 -0
  421. package/dist/esm/contracts.d.ts.map +1 -1
  422. package/dist/esm/contracts.js +12 -0
  423. package/dist/esm/contracts.js.map +1 -1
  424. package/dist/esm/eventLog/index.d.ts +12 -0
  425. package/dist/esm/eventLog/index.d.ts.map +1 -0
  426. package/dist/esm/eventLog/index.js +28 -0
  427. package/dist/esm/eventLog/index.js.map +1 -0
  428. package/dist/esm/eventLog/mongo.d.ts +5 -0
  429. package/dist/esm/eventLog/mongo.d.ts.map +1 -0
  430. package/dist/esm/eventLog/mongo.js +111 -0
  431. package/dist/esm/eventLog/mongo.js.map +1 -0
  432. package/dist/esm/eventLog/service.d.ts +19 -0
  433. package/dist/esm/eventLog/service.d.ts.map +1 -0
  434. package/dist/esm/eventLog/service.js +180 -0
  435. package/dist/esm/eventLog/service.js.map +1 -0
  436. package/dist/esm/eventLog/types.d.ts +73 -0
  437. package/dist/esm/eventLog/types.d.ts.map +1 -0
  438. package/dist/esm/eventLog/types.js +3 -0
  439. package/dist/esm/eventLog/types.js.map +1 -0
  440. package/dist/esm/index.d.ts +9 -4
  441. package/dist/esm/index.d.ts.map +1 -1
  442. package/dist/esm/index.js +56 -7
  443. package/dist/esm/index.js.map +1 -1
  444. package/dist/esm/internal-content-types/Backup.d.ts.map +1 -1
  445. package/dist/esm/internal-content-types/ContentComment.d.ts +35 -0
  446. package/dist/esm/internal-content-types/ContentComment.d.ts.map +1 -1
  447. package/dist/esm/internal-content-types/ContentCommentReadState.d.ts +3499 -0
  448. package/dist/esm/internal-content-types/ContentCommentReadState.d.ts.map +1 -0
  449. package/dist/esm/internal-content-types/ContentCommentReadState.js +15 -0
  450. package/dist/esm/internal-content-types/ContentCommentReadState.js.map +1 -0
  451. package/dist/esm/internal-content-types/ContentReview.d.ts +10045 -0
  452. package/dist/esm/internal-content-types/ContentReview.d.ts.map +1 -0
  453. package/dist/esm/internal-content-types/ContentReview.js +28 -0
  454. package/dist/esm/internal-content-types/ContentReview.js.map +1 -0
  455. package/dist/esm/internal-content-types/ContentReviewDecision.d.ts +3181 -0
  456. package/dist/esm/internal-content-types/ContentReviewDecision.d.ts.map +1 -0
  457. package/dist/esm/internal-content-types/ContentReviewDecision.js +15 -0
  458. package/dist/esm/internal-content-types/ContentReviewDecision.js.map +1 -0
  459. package/dist/esm/internal-content-types/ContentReviewPolicy.d.ts +1211 -0
  460. package/dist/esm/internal-content-types/ContentReviewPolicy.d.ts.map +1 -0
  461. package/dist/esm/internal-content-types/ContentReviewPolicy.js +15 -0
  462. package/dist/esm/internal-content-types/ContentReviewPolicy.js.map +1 -0
  463. package/dist/esm/internal-content-types/ContentVersion.d.ts.map +1 -1
  464. package/dist/esm/internal-content-types/LinkedIteratorTemplate.d.ts.map +1 -1
  465. package/dist/esm/internal-content-types/LoginIpBlock.d.ts +434 -0
  466. package/dist/esm/internal-content-types/LoginIpBlock.d.ts.map +1 -0
  467. package/dist/esm/internal-content-types/LoginIpBlock.js +14 -0
  468. package/dist/esm/internal-content-types/LoginIpBlock.js.map +1 -0
  469. package/dist/esm/internal-content-types/ManagerFavorite.d.ts +28 -0
  470. package/dist/esm/internal-content-types/ManagerFavorite.d.ts.map +1 -1
  471. package/dist/esm/internal-content-types/ManagerNotification.d.ts +6614 -0
  472. package/dist/esm/internal-content-types/ManagerNotification.d.ts.map +1 -0
  473. package/dist/esm/internal-content-types/ManagerNotification.js +27 -0
  474. package/dist/esm/internal-content-types/ManagerNotification.js.map +1 -0
  475. package/dist/esm/internal-content-types/ManagerUser.d.ts +7 -0
  476. package/dist/esm/internal-content-types/ManagerUser.d.ts.map +1 -1
  477. package/dist/esm/internal-content-types/ManagerUserHooks.d.ts.map +1 -1
  478. package/dist/esm/internal-content-types/ManagerUserHooks.js +8 -1
  479. package/dist/esm/internal-content-types/ManagerUserHooks.js.map +1 -1
  480. package/dist/esm/internal-content-types/MfaChallenge.d.ts +28 -0
  481. package/dist/esm/internal-content-types/MfaChallenge.d.ts.map +1 -1
  482. package/dist/esm/internal-content-types/Migration.d.ts.map +1 -1
  483. package/dist/esm/internal-content-types/PasswordResetToken.d.ts +3181 -0
  484. package/dist/esm/internal-content-types/PasswordResetToken.d.ts.map +1 -0
  485. package/dist/esm/internal-content-types/PasswordResetToken.js +44 -0
  486. package/dist/esm/internal-content-types/PasswordResetToken.js.map +1 -0
  487. package/dist/esm/internal-content-types/RobotsRule.d.ts.map +1 -1
  488. package/dist/esm/internal-content-types/Route.d.ts.map +1 -1
  489. package/dist/esm/internal-content-types/RouteLayoutModule.d.ts.map +1 -1
  490. package/dist/esm/internal-content-types/SchemaState.d.ts.map +1 -1
  491. package/dist/esm/internal-content-types/Session.d.ts +28 -0
  492. package/dist/esm/internal-content-types/Session.d.ts.map +1 -1
  493. package/dist/esm/internal-content-types/UserMfa.d.ts +30 -0
  494. package/dist/esm/internal-content-types/UserMfa.d.ts.map +1 -1
  495. package/dist/esm/internal-content-types/UserMfa.js +35 -1
  496. package/dist/esm/internal-content-types/UserMfa.js.map +1 -1
  497. package/dist/esm/internal-content-types/WebAuthnCredential.d.ts +28 -0
  498. package/dist/esm/internal-content-types/WebAuthnCredential.d.ts.map +1 -1
  499. package/dist/esm/internal-content-types/WebAuthnRegChallenge.d.ts +28 -0
  500. package/dist/esm/internal-content-types/WebAuthnRegChallenge.d.ts.map +1 -1
  501. package/dist/esm/internal-content-types/index.d.ts +7 -0
  502. package/dist/esm/internal-content-types/index.d.ts.map +1 -1
  503. package/dist/esm/internal-content-types/index.js +7 -0
  504. package/dist/esm/internal-content-types/index.js.map +1 -1
  505. package/dist/esm/internal-content-types/syncAdminRole.d.ts +1 -0
  506. package/dist/esm/internal-content-types/syncAdminRole.d.ts.map +1 -1
  507. package/dist/esm/lib/ContentType.d.ts +3 -9
  508. package/dist/esm/lib/ContentType.d.ts.map +1 -1
  509. package/dist/esm/lib/ContentType.js +2 -9
  510. package/dist/esm/lib/ContentType.js.map +1 -1
  511. package/dist/esm/lib/Permissions.d.ts +3 -0
  512. package/dist/esm/lib/Permissions.d.ts.map +1 -1
  513. package/dist/esm/lib/Permissions.js +13 -1
  514. package/dist/esm/lib/Permissions.js.map +1 -1
  515. package/dist/esm/lib/Registry.d.ts +4 -3
  516. package/dist/esm/lib/Registry.d.ts.map +1 -1
  517. package/dist/esm/lib/Registry.js +7 -3
  518. package/dist/esm/lib/Registry.js.map +1 -1
  519. package/dist/esm/lib/errors/AppError.d.ts.map +1 -1
  520. package/dist/esm/lib/errors/AppError.js +7 -1
  521. package/dist/esm/lib/errors/AppError.js.map +1 -1
  522. package/dist/esm/lib/fields/Fields.d.ts +15 -0
  523. package/dist/esm/lib/fields/Fields.d.ts.map +1 -1
  524. package/dist/esm/lib/fields/Fields.js +1 -0
  525. package/dist/esm/lib/fields/Fields.js.map +1 -1
  526. package/dist/esm/lib/fields/Link.d.ts +2 -2
  527. package/dist/esm/lib/fields/Link.d.ts.map +1 -1
  528. package/dist/esm/lib/fields/Link.js +2 -1
  529. package/dist/esm/lib/fields/Link.js.map +1 -1
  530. package/dist/esm/lib/localeVariants.d.ts +3 -0
  531. package/dist/esm/lib/localeVariants.d.ts.map +1 -1
  532. package/dist/esm/lib/localeVariants.js +7 -0
  533. package/dist/esm/lib/localeVariants.js.map +1 -1
  534. package/dist/esm/lib/types/index.d.ts +1 -0
  535. package/dist/esm/lib/types/index.d.ts.map +1 -1
  536. package/dist/esm/literals/index.d.ts +0 -1
  537. package/dist/esm/literals/index.d.ts.map +1 -1
  538. package/dist/esm/literals/index.js +0 -1
  539. package/dist/esm/literals/index.js.map +1 -1
  540. package/dist/esm/mail/adapters.d.ts +34 -0
  541. package/dist/esm/mail/adapters.d.ts.map +1 -0
  542. package/dist/esm/mail/adapters.js +2 -0
  543. package/dist/esm/mail/adapters.js.map +1 -0
  544. package/dist/esm/mail/index.d.ts +11 -0
  545. package/dist/esm/mail/index.d.ts.map +1 -0
  546. package/dist/esm/mail/index.js +31 -0
  547. package/dist/esm/mail/index.js.map +1 -0
  548. package/dist/esm/mail/mailService.d.ts +58 -0
  549. package/dist/esm/mail/mailService.d.ts.map +1 -0
  550. package/dist/esm/mail/mailService.js +202 -0
  551. package/dist/esm/mail/mailService.js.map +1 -0
  552. package/dist/esm/mail/templates.d.ts +26 -0
  553. package/dist/esm/mail/templates.d.ts.map +1 -0
  554. package/dist/esm/mail/templates.js +27 -0
  555. package/dist/esm/mail/templates.js.map +1 -0
  556. package/dist/esm/manager.d.ts +160 -0
  557. package/dist/esm/manager.d.ts.map +1 -1
  558. package/dist/esm/orm/createIndexes.d.ts.map +1 -1
  559. package/dist/esm/orm/createIndexes.js +38 -1
  560. package/dist/esm/orm/createIndexes.js.map +1 -1
  561. package/dist/esm/orm/dbService.js +3 -3
  562. package/dist/esm/orm/dbService.js.map +1 -1
  563. package/dist/esm/orm/operations/update.d.ts.map +1 -1
  564. package/dist/esm/orm/operations/update.js +28 -26
  565. package/dist/esm/orm/operations/update.js.map +1 -1
  566. package/dist/esm/plugins.d.ts +4 -0
  567. package/dist/esm/plugins.d.ts.map +1 -1
  568. package/dist/esm/plugins.js.map +1 -1
  569. package/dist/esm/schemas/manager/auth/externalLogin.d.ts +42 -0
  570. package/dist/esm/schemas/manager/auth/externalLogin.d.ts.map +1 -0
  571. package/dist/esm/schemas/manager/auth/externalLogin.js +21 -0
  572. package/dist/esm/schemas/manager/auth/externalLogin.js.map +1 -0
  573. package/dist/esm/schemas/manager/auth/mfa/recoveryCode.d.ts +22 -0
  574. package/dist/esm/schemas/manager/auth/mfa/recoveryCode.d.ts.map +1 -0
  575. package/dist/esm/schemas/manager/auth/mfa/recoveryCode.js +21 -0
  576. package/dist/esm/schemas/manager/auth/mfa/recoveryCode.js.map +1 -0
  577. package/dist/esm/schemas/manager/auth/passwordIpBlocks.d.ts +36 -0
  578. package/dist/esm/schemas/manager/auth/passwordIpBlocks.d.ts.map +1 -0
  579. package/dist/esm/schemas/manager/auth/passwordIpBlocks.js +26 -0
  580. package/dist/esm/schemas/manager/auth/passwordIpBlocks.js.map +1 -0
  581. package/dist/esm/schemas/manager/auth/passwordRecovery.d.ts +17 -0
  582. package/dist/esm/schemas/manager/auth/passwordRecovery.d.ts.map +1 -0
  583. package/dist/esm/schemas/manager/auth/passwordRecovery.js +15 -0
  584. package/dist/esm/schemas/manager/auth/passwordRecovery.js.map +1 -0
  585. package/dist/esm/schemas/manager/auth/totp/confirmTotp.d.ts +4 -5
  586. package/dist/esm/schemas/manager/auth/totp/confirmTotp.d.ts.map +1 -1
  587. package/dist/esm/schemas/manager/auth/totp/confirmTotp.js +4 -7
  588. package/dist/esm/schemas/manager/auth/totp/confirmTotp.js.map +1 -1
  589. package/dist/esm/schemas/manager/comments.d.ts +15 -0
  590. package/dist/esm/schemas/manager/comments.d.ts.map +1 -1
  591. package/dist/esm/schemas/manager/comments.js +10 -0
  592. package/dist/esm/schemas/manager/comments.js.map +1 -1
  593. package/dist/esm/schemas/manager/contentVersions.d.ts +442 -0
  594. package/dist/esm/schemas/manager/contentVersions.d.ts.map +1 -0
  595. package/dist/esm/schemas/manager/contentVersions.js +45 -0
  596. package/dist/esm/schemas/manager/contentVersions.js.map +1 -0
  597. package/dist/esm/schemas/manager/eventLogs.d.ts +127 -0
  598. package/dist/esm/schemas/manager/eventLogs.d.ts.map +1 -0
  599. package/dist/esm/schemas/manager/eventLogs.js +48 -0
  600. package/dist/esm/schemas/manager/eventLogs.js.map +1 -0
  601. package/dist/esm/schemas/manager/list.d.ts +1 -0
  602. package/dist/esm/schemas/manager/list.d.ts.map +1 -1
  603. package/dist/esm/schemas/manager/list.js +1 -0
  604. package/dist/esm/schemas/manager/list.js.map +1 -1
  605. package/dist/esm/schemas/manager/localeVariants.d.ts +51 -0
  606. package/dist/esm/schemas/manager/localeVariants.d.ts.map +1 -1
  607. package/dist/esm/schemas/manager/localeVariants.js +9 -0
  608. package/dist/esm/schemas/manager/localeVariants.js.map +1 -1
  609. package/dist/esm/schemas/manager/notifications.d.ts +79 -0
  610. package/dist/esm/schemas/manager/notifications.d.ts.map +1 -0
  611. package/dist/esm/schemas/manager/notifications.js +45 -0
  612. package/dist/esm/schemas/manager/notifications.js.map +1 -0
  613. package/dist/esm/schemas/manager/reviewPolicies.d.ts +43 -0
  614. package/dist/esm/schemas/manager/reviewPolicies.d.ts.map +1 -0
  615. package/dist/esm/schemas/manager/reviewPolicies.js +27 -0
  616. package/dist/esm/schemas/manager/reviewPolicies.js.map +1 -0
  617. package/dist/esm/schemas/manager/reviews.d.ts +442 -0
  618. package/dist/esm/schemas/manager/reviews.d.ts.map +1 -0
  619. package/dist/esm/schemas/manager/reviews.js +87 -0
  620. package/dist/esm/schemas/manager/reviews.js.map +1 -0
  621. package/dist/esm/schemas/manager/routeLayout.d.ts +75 -0
  622. package/dist/esm/schemas/manager/routeLayout.d.ts.map +1 -0
  623. package/dist/esm/schemas/manager/routeLayout.js +44 -0
  624. package/dist/esm/schemas/manager/routeLayout.js.map +1 -0
  625. package/dist/esm/schemas/manager/slugRedirects.d.ts +26 -0
  626. package/dist/esm/schemas/manager/slugRedirects.d.ts.map +1 -0
  627. package/dist/esm/schemas/manager/slugRedirects.js +18 -0
  628. package/dist/esm/schemas/manager/slugRedirects.js.map +1 -0
  629. package/dist/esm/schemas/manager/uiLocales.d.ts +33 -0
  630. package/dist/esm/schemas/manager/uiLocales.d.ts.map +1 -0
  631. package/dist/esm/schemas/manager/uiLocales.js +25 -0
  632. package/dist/esm/schemas/manager/uiLocales.js.map +1 -0
  633. package/dist/esm/schemas/manager/update.d.ts +1 -0
  634. package/dist/esm/schemas/manager/update.d.ts.map +1 -1
  635. package/dist/esm/schemas/manager/update.js +1 -0
  636. package/dist/esm/schemas/manager/update.js.map +1 -1
  637. package/dist/esm/schemas/web/page.d.ts +12 -0
  638. package/dist/esm/schemas/web/page.d.ts.map +1 -1
  639. package/dist/esm/schemas/web/previewPage.d.ts +8 -0
  640. package/dist/esm/schemas/web/previewPage.d.ts.map +1 -1
  641. package/dist/tsconfig.build.tsbuildinfo +1 -1
  642. package/package.json +11 -4
  643. package/dist/cjs/literals/manager.js +0 -43
  644. package/dist/cjs/literals/manager.js.map +0 -1
  645. package/dist/cjs/literals/managerLiterals.js +0 -15
  646. package/dist/cjs/literals/managerLiterals.js.map +0 -1
  647. package/dist/esm/literals/manager.d.ts +0 -22
  648. package/dist/esm/literals/manager.d.ts.map +0 -1
  649. package/dist/esm/literals/manager.js +0 -38
  650. package/dist/esm/literals/manager.js.map +0 -1
  651. package/dist/esm/literals/managerLiterals.d.ts +0 -12
  652. package/dist/esm/literals/managerLiterals.d.ts.map +0 -1
  653. package/dist/esm/literals/managerLiterals.js +0 -12
  654. package/dist/esm/literals/managerLiterals.js.map +0 -1
@@ -0,0 +1,46 @@
1
+ import { randomBytes } from 'crypto';
2
+ import { ManagerUser, MfaChallenge, Session, UserMfa } from '../internal-content-types/index.js';
3
+ import { getMongoService } from '../orm/index.js';
4
+ import { SESSION_MAX_AGE_MS } from '../api/sessionCookie.js';
5
+ export const completePrimaryAuthentication = async (userId) => {
6
+ const db = await getMongoService();
7
+ const mfa = await db.find(UserMfa, { 'user._id': userId });
8
+ if (mfa?.enabled) {
9
+ const challenge = randomBytes(32).toString('hex');
10
+ const expiresAt = new Date(Date.now() + 1000 * 60 * 5);
11
+ await db.create(MfaChallenge, {
12
+ token: challenge,
13
+ user: {
14
+ _id: userId,
15
+ contentType: ManagerUser.name,
16
+ type: 'existing',
17
+ },
18
+ method: mfa.preferredMethod ?? 'totp',
19
+ expiresAt,
20
+ attempts: 0,
21
+ _type: 'MfaChallenge',
22
+ });
23
+ return {
24
+ challenge,
25
+ method: mfa.preferredMethod ?? 'totp',
26
+ expiresAt: expiresAt.toISOString(),
27
+ };
28
+ }
29
+ const token = crypto.randomUUID();
30
+ const expiresAt = new Date(Date.now() + SESSION_MAX_AGE_MS);
31
+ await db.create(Session, {
32
+ token,
33
+ user: {
34
+ _id: userId,
35
+ contentType: ManagerUser.name,
36
+ type: 'existing',
37
+ },
38
+ expiresAt,
39
+ _type: 'Session',
40
+ });
41
+ return {
42
+ token,
43
+ expiresAt: expiresAt.toISOString(),
44
+ };
45
+ };
46
+ //# sourceMappingURL=completePrimaryAuthentication.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"completePrimaryAuthentication.js","sourceRoot":"","sources":["../../../src/auth/completePrimaryAuthentication.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,WAAW,EAAE,MAAM,QAAQ,CAAA;AAEpC,OAAO,EAAE,WAAW,EAAE,YAAY,EAAE,OAAO,EAAE,OAAO,EAAE,MAAM,2BAA2B,CAAA;AACvF,OAAO,EAAE,eAAe,EAAE,MAAM,QAAQ,CAAA;AAExC,OAAO,EAAE,kBAAkB,EAAE,MAAM,sBAAsB,CAAA;AAEzD,MAAM,CAAC,MAAM,6BAA6B,GAAG,KAAK,EAAE,MAAc,EAAwB,EAAE;IAC1F,MAAM,EAAE,GAAG,MAAM,eAAe,EAAE,CAAA;IAClC,MAAM,GAAG,GAAG,MAAM,EAAE,CAAC,IAAI,CAAC,OAAO,EAAE,EAAE,UAAU,EAAE,MAAM,EAAE,CAAC,CAAA;IAE1D,IAAI,GAAG,EAAE,OAAO,EAAE,CAAC;QACjB,MAAM,SAAS,GAAG,WAAW,CAAC,EAAE,CAAC,CAAC,QAAQ,CAAC,KAAK,CAAC,CAAA;QACjD,MAAM,SAAS,GAAG,IAAI,IAAI,CAAC,IAAI,CAAC,GAAG,EAAE,GAAG,IAAI,GAAG,EAAE,GAAG,CAAC,CAAC,CAAA;QAEtD,MAAM,EAAE,CAAC,MAAM,CAAC,YAAY,EAAE;YAC5B,KAAK,EAAE,SAAS;YAChB,IAAI,EAAE;gBACJ,GAAG,EAAE,MAAM;gBACX,WAAW,EAAE,WAAW,CAAC,IAAI;gBAC7B,IAAI,EAAE,UAAU;aACjB;YACD,MAAM,EAAE,GAAG,CAAC,eAAe,IAAI,MAAM;YACrC,SAAS;YACT,QAAQ,EAAE,CAAC;YACX,KAAK,EAAE,cAAc;SACtB,CAAC,CAAA;QAEF,OAAO;YACL,SAAS;YACT,MAAM,EAAE,GAAG,CAAC,eAAe,IAAI,MAAM;YACrC,SAAS,EAAE,SAAS,CAAC,WAAW,EAAE;SACnC,CAAA;IACH,CAAC;IAED,MAAM,KAAK,GAAG,MAAM,CAAC,UAAU,EAAE,CAAA;IACjC,MAAM,SAAS,GAAG,IAAI,IAAI,CAAC,IAAI,CAAC,GAAG,EAAE,GAAG,kBAAkB,CAAC,CAAA;IAE3D,MAAM,EAAE,CAAC,MAAM,CAAC,OAAO,EAAE;QACvB,KAAK;QACL,IAAI,EAAE;YACJ,GAAG,EAAE,MAAM;YACX,WAAW,EAAE,WAAW,CAAC,IAAI;YAC7B,IAAI,EAAE,UAAU;SACjB;QACD,SAAS;QACT,KAAK,EAAE,SAAS;KACjB,CAAC,CAAA;IAEF,OAAO;QACL,KAAK;QACL,SAAS,EAAE,SAAS,CAAC,WAAW,EAAE;KACnC,CAAA;AACH,CAAC,CAAA"}
@@ -0,0 +1,57 @@
1
+ export type LoginAdapterIcon = 'github' | 'google' | 'microsoft' | 'generic';
2
+ export type LoginAdapterIdentity = {
3
+ id: string;
4
+ email: string;
5
+ emailVerified: boolean;
6
+ name?: string;
7
+ };
8
+ export type LoginAdapterAuthorizationInput = {
9
+ state: string;
10
+ codeChallenge: string;
11
+ };
12
+ export type LoginAdapterCallbackInput = {
13
+ code: string;
14
+ codeVerifier: string;
15
+ };
16
+ export type LoginAdapter = {
17
+ id: string;
18
+ label: string;
19
+ icon?: LoginAdapterIcon;
20
+ createAuthorizationUrl: (input: LoginAdapterAuthorizationInput) => Promise<string> | string;
21
+ authenticate: (input: LoginAdapterCallbackInput) => Promise<LoginAdapterIdentity>;
22
+ };
23
+ export type PasswordFail2banConfig = {
24
+ /** Failed attempts before the IP is blocked. Defaults to 5. */
25
+ maxAttempts?: number;
26
+ /** Override IP resolution when running behind a custom proxy. */
27
+ resolveIp?: (context: import('../api/context.js').RakunRequestContext) => string | undefined;
28
+ };
29
+ export type LoginConfig = {
30
+ /** Enable the built-in email/password form. Defaults to true. */
31
+ password?: boolean;
32
+ /** Persistent IP blocking for failed password logins. Enabled by default. */
33
+ fail2ban?: false | PasswordFail2banConfig;
34
+ adapters?: readonly LoginAdapter[];
35
+ };
36
+ export declare const defineLoginAdapter: <TAdapter extends LoginAdapter>(adapter: TAdapter) => TAdapter;
37
+ type OAuthClientConfig = {
38
+ clientId: string;
39
+ clientSecret: string;
40
+ redirectUri: string;
41
+ label?: string;
42
+ };
43
+ export type GitHubLoginAdapterConfig = OAuthClientConfig & {
44
+ allowSignup?: boolean;
45
+ };
46
+ export declare const createGitHubLoginAdapter: (config: GitHubLoginAdapterConfig) => LoginAdapter;
47
+ export type GoogleLoginAdapterConfig = OAuthClientConfig & {
48
+ hostedDomain?: string;
49
+ prompt?: 'none' | 'consent' | 'select_account';
50
+ };
51
+ export declare const createGoogleLoginAdapter: (config: GoogleLoginAdapterConfig) => LoginAdapter;
52
+ export type MicrosoftLoginAdapterConfig = OAuthClientConfig & {
53
+ tenant?: string;
54
+ };
55
+ export declare const createMicrosoftLoginAdapter: (config: MicrosoftLoginAdapterConfig) => LoginAdapter;
56
+ export {};
57
+ //# sourceMappingURL=loginAdapters.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"loginAdapters.d.ts","sourceRoot":"","sources":["../../../src/auth/loginAdapters.ts"],"names":[],"mappings":"AAAA,MAAM,MAAM,gBAAgB,GAAG,QAAQ,GAAG,QAAQ,GAAG,WAAW,GAAG,SAAS,CAAA;AAE5E,MAAM,MAAM,oBAAoB,GAAG;IACjC,EAAE,EAAE,MAAM,CAAA;IACV,KAAK,EAAE,MAAM,CAAA;IACb,aAAa,EAAE,OAAO,CAAA;IACtB,IAAI,CAAC,EAAE,MAAM,CAAA;CACd,CAAA;AAED,MAAM,MAAM,8BAA8B,GAAG;IAC3C,KAAK,EAAE,MAAM,CAAA;IACb,aAAa,EAAE,MAAM,CAAA;CACtB,CAAA;AAED,MAAM,MAAM,yBAAyB,GAAG;IACtC,IAAI,EAAE,MAAM,CAAA;IACZ,YAAY,EAAE,MAAM,CAAA;CACrB,CAAA;AAED,MAAM,MAAM,YAAY,GAAG;IACzB,EAAE,EAAE,MAAM,CAAA;IACV,KAAK,EAAE,MAAM,CAAA;IACb,IAAI,CAAC,EAAE,gBAAgB,CAAA;IACvB,sBAAsB,EAAE,CAAC,KAAK,EAAE,8BAA8B,KAAK,OAAO,CAAC,MAAM,CAAC,GAAG,MAAM,CAAA;IAC3F,YAAY,EAAE,CAAC,KAAK,EAAE,yBAAyB,KAAK,OAAO,CAAC,oBAAoB,CAAC,CAAA;CAClF,CAAA;AAED,MAAM,MAAM,sBAAsB,GAAG;IACnC,+DAA+D;IAC/D,WAAW,CAAC,EAAE,MAAM,CAAA;IACpB,iEAAiE;IACjE,SAAS,CAAC,EAAE,CACV,OAAO,EAAE,OAAO,gBAAgB,EAAE,mBAAmB,KAClD,MAAM,GAAG,SAAS,CAAA;CACxB,CAAA;AAED,MAAM,MAAM,WAAW,GAAG;IACxB,iEAAiE;IACjE,QAAQ,CAAC,EAAE,OAAO,CAAA;IAClB,6EAA6E;IAC7E,QAAQ,CAAC,EAAE,KAAK,GAAG,sBAAsB,CAAA;IACzC,QAAQ,CAAC,EAAE,SAAS,YAAY,EAAE,CAAA;CACnC,CAAA;AAED,eAAO,MAAM,kBAAkB,GAAI,QAAQ,SAAS,YAAY,EAAE,SAAS,QAAQ,KAAG,QAC7E,CAAA;AAET,KAAK,iBAAiB,GAAG;IACvB,QAAQ,EAAE,MAAM,CAAA;IAChB,YAAY,EAAE,MAAM,CAAA;IACpB,WAAW,EAAE,MAAM,CAAA;IACnB,KAAK,CAAC,EAAE,MAAM,CAAA;CACf,CAAA;AA6BD,MAAM,MAAM,wBAAwB,GAAG,iBAAiB,GAAG;IACzD,WAAW,CAAC,EAAE,OAAO,CAAA;CACtB,CAAA;AAED,eAAO,MAAM,wBAAwB,GAAI,QAAQ,wBAAwB,KAAG,YA+DxE,CAAA;AAEJ,MAAM,MAAM,wBAAwB,GAAG,iBAAiB,GAAG;IACzD,YAAY,CAAC,EAAE,MAAM,CAAA;IACrB,MAAM,CAAC,EAAE,MAAM,GAAG,SAAS,GAAG,gBAAgB,CAAA;CAC/C,CAAA;AAED,eAAO,MAAM,wBAAwB,GAAI,QAAQ,wBAAwB,KAAG,YA0DxE,CAAA;AAEJ,MAAM,MAAM,2BAA2B,GAAG,iBAAiB,GAAG;IAC5D,MAAM,CAAC,EAAE,MAAM,CAAA;CAChB,CAAA;AAED,eAAO,MAAM,2BAA2B,GAAI,QAAQ,2BAA2B,KAAG,YA4DjF,CAAA"}
@@ -0,0 +1,176 @@
1
+ export const defineLoginAdapter = (adapter) => adapter;
2
+ const fetchJson = async (url, init) => {
3
+ const response = await fetch(url, init);
4
+ if (!response.ok) {
5
+ throw new Error(`OAuth provider request failed with status ${response.status}`);
6
+ }
7
+ return (await response.json());
8
+ };
9
+ const bearerHeaders = (accessToken) => ({
10
+ Accept: 'application/json',
11
+ Authorization: `Bearer ${accessToken}`,
12
+ });
13
+ const requireAccessToken = (value) => {
14
+ if (!value ||
15
+ typeof value !== 'object' ||
16
+ typeof value.access_token !== 'string') {
17
+ throw new Error('OAuth provider did not return an access token');
18
+ }
19
+ return value.access_token;
20
+ };
21
+ export const createGitHubLoginAdapter = (config) => defineLoginAdapter({
22
+ id: 'github',
23
+ label: config.label ?? 'GitHub',
24
+ icon: 'github',
25
+ createAuthorizationUrl: ({ state, codeChallenge }) => {
26
+ const url = new URL('https://github.com/login/oauth/authorize');
27
+ url.searchParams.set('client_id', config.clientId);
28
+ url.searchParams.set('redirect_uri', config.redirectUri);
29
+ url.searchParams.set('scope', 'read:user user:email');
30
+ url.searchParams.set('state', state);
31
+ url.searchParams.set('code_challenge', codeChallenge);
32
+ url.searchParams.set('code_challenge_method', 'S256');
33
+ url.searchParams.set('allow_signup', String(config.allowSignup ?? true));
34
+ return url.toString();
35
+ },
36
+ authenticate: async ({ code, codeVerifier }) => {
37
+ const token = await fetchJson('https://github.com/login/oauth/access_token', {
38
+ method: 'POST',
39
+ headers: {
40
+ Accept: 'application/json',
41
+ 'Content-Type': 'application/x-www-form-urlencoded',
42
+ },
43
+ body: new URLSearchParams({
44
+ client_id: config.clientId,
45
+ client_secret: config.clientSecret,
46
+ code,
47
+ redirect_uri: config.redirectUri,
48
+ code_verifier: codeVerifier,
49
+ }),
50
+ });
51
+ const accessToken = requireAccessToken(token);
52
+ const headers = {
53
+ ...bearerHeaders(accessToken),
54
+ 'X-GitHub-Api-Version': '2022-11-28',
55
+ };
56
+ const [profile, emails] = await Promise.all([
57
+ fetchJson('https://api.github.com/user', {
58
+ headers,
59
+ }),
60
+ fetchJson('https://api.github.com/user/emails', { headers }),
61
+ ]);
62
+ const email = emails.find((item) => item.primary && item.verified)?.email ??
63
+ emails.find((item) => item.verified)?.email;
64
+ if (profile.id === undefined || !email) {
65
+ throw new Error('GitHub did not return a verified email identity');
66
+ }
67
+ return {
68
+ id: String(profile.id),
69
+ email,
70
+ emailVerified: true,
71
+ name: profile.name ?? undefined,
72
+ };
73
+ },
74
+ });
75
+ export const createGoogleLoginAdapter = (config) => defineLoginAdapter({
76
+ id: 'google',
77
+ label: config.label ?? 'Google',
78
+ icon: 'google',
79
+ createAuthorizationUrl: ({ state, codeChallenge }) => {
80
+ const url = new URL('https://accounts.google.com/o/oauth2/v2/auth');
81
+ url.searchParams.set('client_id', config.clientId);
82
+ url.searchParams.set('redirect_uri', config.redirectUri);
83
+ url.searchParams.set('response_type', 'code');
84
+ url.searchParams.set('scope', 'openid profile email');
85
+ url.searchParams.set('state', state);
86
+ url.searchParams.set('code_challenge', codeChallenge);
87
+ url.searchParams.set('code_challenge_method', 'S256');
88
+ if (config.hostedDomain)
89
+ url.searchParams.set('hd', config.hostedDomain);
90
+ if (config.prompt)
91
+ url.searchParams.set('prompt', config.prompt);
92
+ return url.toString();
93
+ },
94
+ authenticate: async ({ code, codeVerifier }) => {
95
+ const token = await fetchJson('https://oauth2.googleapis.com/token', {
96
+ method: 'POST',
97
+ headers: { 'Content-Type': 'application/x-www-form-urlencoded' },
98
+ body: new URLSearchParams({
99
+ client_id: config.clientId,
100
+ client_secret: config.clientSecret,
101
+ code,
102
+ code_verifier: codeVerifier,
103
+ grant_type: 'authorization_code',
104
+ redirect_uri: config.redirectUri,
105
+ }),
106
+ });
107
+ const accessToken = requireAccessToken(token);
108
+ const profile = await fetchJson('https://openidconnect.googleapis.com/v1/userinfo', {
109
+ headers: bearerHeaders(accessToken),
110
+ });
111
+ if (!profile.sub ||
112
+ !profile.email ||
113
+ profile.email_verified !== true ||
114
+ (config.hostedDomain && profile.hd !== config.hostedDomain)) {
115
+ throw new Error('Google did not return a verified email identity');
116
+ }
117
+ return {
118
+ id: profile.sub,
119
+ email: profile.email,
120
+ emailVerified: true,
121
+ name: profile.name,
122
+ };
123
+ },
124
+ });
125
+ export const createMicrosoftLoginAdapter = (config) => {
126
+ const tenant = config.tenant ?? 'common';
127
+ const scope = 'openid profile email User.Read';
128
+ return defineLoginAdapter({
129
+ id: 'microsoft',
130
+ label: config.label ?? 'Microsoft',
131
+ icon: 'microsoft',
132
+ createAuthorizationUrl: ({ state, codeChallenge }) => {
133
+ const url = new URL(`https://login.microsoftonline.com/${encodeURIComponent(tenant)}/oauth2/v2.0/authorize`);
134
+ url.searchParams.set('client_id', config.clientId);
135
+ url.searchParams.set('redirect_uri', config.redirectUri);
136
+ url.searchParams.set('response_type', 'code');
137
+ url.searchParams.set('response_mode', 'query');
138
+ url.searchParams.set('scope', scope);
139
+ url.searchParams.set('state', state);
140
+ url.searchParams.set('code_challenge', codeChallenge);
141
+ url.searchParams.set('code_challenge_method', 'S256');
142
+ return url.toString();
143
+ },
144
+ authenticate: async ({ code, codeVerifier }) => {
145
+ const tokenUrl = `https://login.microsoftonline.com/${encodeURIComponent(tenant)}/oauth2/v2.0/token`;
146
+ const token = await fetchJson(tokenUrl, {
147
+ method: 'POST',
148
+ headers: { 'Content-Type': 'application/x-www-form-urlencoded' },
149
+ body: new URLSearchParams({
150
+ client_id: config.clientId,
151
+ client_secret: config.clientSecret,
152
+ code,
153
+ code_verifier: codeVerifier,
154
+ grant_type: 'authorization_code',
155
+ redirect_uri: config.redirectUri,
156
+ scope,
157
+ }),
158
+ });
159
+ const accessToken = requireAccessToken(token);
160
+ const profile = await fetchJson('https://graph.microsoft.com/v1.0/me?$select=id,displayName,mail,userPrincipalName', {
161
+ headers: bearerHeaders(accessToken),
162
+ });
163
+ const email = profile.mail || profile.userPrincipalName;
164
+ if (!profile.id || !email) {
165
+ throw new Error('Microsoft did not return an email identity');
166
+ }
167
+ return {
168
+ id: profile.id,
169
+ email,
170
+ emailVerified: true,
171
+ name: profile.displayName,
172
+ };
173
+ },
174
+ });
175
+ };
176
+ //# sourceMappingURL=loginAdapters.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"loginAdapters.js","sourceRoot":"","sources":["../../../src/auth/loginAdapters.ts"],"names":[],"mappings":"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"}
@@ -0,0 +1,20 @@
1
+ import type { RakunRequestContext } from '../api/context.js';
2
+ export declare const DEFAULT_PASSWORD_FAIL2BAN_MAX_ATTEMPTS = 5;
3
+ export declare const normalizePasswordLoginIp: (value: string | undefined) => string | undefined;
4
+ export declare const getPasswordFail2banConfig: () => {
5
+ maxAttempts: number;
6
+ resolveIp: ((context: import("../api/context.js").RakunRequestContext) => string | undefined) | undefined;
7
+ } | null;
8
+ export declare const resolvePasswordLoginIp: (ctx?: RakunRequestContext) => string | undefined;
9
+ export declare const getBlockedPasswordIp: (ip?: string) => Promise<{
10
+ recordId: string;
11
+ failedAttempts: number;
12
+ } | null>;
13
+ export declare const recordPasswordFailure: (ip?: string) => Promise<{
14
+ blocked: boolean;
15
+ newlyBlocked: boolean;
16
+ recordId?: string;
17
+ failedAttempts?: number;
18
+ }>;
19
+ export declare const clearPasswordFailures: (ip?: string) => Promise<void>;
20
+ //# sourceMappingURL=passwordFail2ban.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"passwordFail2ban.d.ts","sourceRoot":"","sources":["../../../src/auth/passwordFail2ban.ts"],"names":[],"mappings":"AAMA,OAAO,KAAK,EAAE,mBAAmB,EAAE,MAAM,gBAAgB,CAAA;AAGzD,eAAO,MAAM,sCAAsC,IAAI,CAAA;AAEvD,eAAO,MAAM,wBAAwB,GACnC,OAAO,MAAM,GAAG,SAAS,KACxB,MAAM,GAAG,SAYX,CAAA;AAED,eAAO,MAAM,yBAAyB;;;QASrC,CAAA;AAED,eAAO,MAAM,sBAAsB,GACjC,MAAM,mBAAmB,KACxB,MAAM,GAAG,SAQX,CAAA;AAED,eAAO,MAAM,oBAAoB,GAAU,KAAK,MAAM;;;SAWrD,CAAA;AAED,eAAO,MAAM,qBAAqB,GAChC,KAAK,MAAM,KACV,OAAO,CAAC;IACT,OAAO,EAAE,OAAO,CAAA;IAChB,YAAY,EAAE,OAAO,CAAA;IACrB,QAAQ,CAAC,EAAE,MAAM,CAAA;IACjB,cAAc,CAAC,EAAE,MAAM,CAAA;CACxB,CAqEA,CAAA;AAED,eAAO,MAAM,qBAAqB,GAAU,KAAK,MAAM,kBAMtD,CAAA"}
@@ -0,0 +1,110 @@
1
+ import { isIP } from 'node:net';
2
+ import { getRakunBootstrapOptions } from '../bootstrapState.js';
3
+ import { LoginIpBlock } from '../internal-content-types/index.js';
4
+ import { getMongoService } from '../orm/index.js';
5
+ import { getRequestRateLimitIdentifier } from '../api/utils/authRateLimit.js';
6
+ export const DEFAULT_PASSWORD_FAIL2BAN_MAX_ATTEMPTS = 5;
7
+ export const normalizePasswordLoginIp = (value) => {
8
+ const candidate = value?.trim();
9
+ if (!candidate || candidate === 'unknown')
10
+ return undefined;
11
+ if (candidate.startsWith('::ffff:')) {
12
+ const ipv4 = candidate.slice('::ffff:'.length);
13
+ if (isIP(ipv4) === 4)
14
+ return ipv4;
15
+ }
16
+ if (isIP(candidate))
17
+ return candidate;
18
+ return undefined;
19
+ };
20
+ export const getPasswordFail2banConfig = () => {
21
+ const configured = getRakunBootstrapOptions()?.login?.fail2ban;
22
+ if (configured === false)
23
+ return null;
24
+ return {
25
+ maxAttempts: configured?.maxAttempts ?? DEFAULT_PASSWORD_FAIL2BAN_MAX_ATTEMPTS,
26
+ resolveIp: configured?.resolveIp,
27
+ };
28
+ };
29
+ export const resolvePasswordLoginIp = (ctx) => {
30
+ if (!ctx)
31
+ return undefined;
32
+ const config = getPasswordFail2banConfig();
33
+ if (!config)
34
+ return undefined;
35
+ return normalizePasswordLoginIp(config.resolveIp?.(ctx) ?? getRequestRateLimitIdentifier(ctx));
36
+ };
37
+ export const getBlockedPasswordIp = async (ip) => {
38
+ if (!ip)
39
+ return null;
40
+ const db = await getMongoService();
41
+ const record = await db.find(LoginIpBlock, { ip });
42
+ return record?.blockedAt
43
+ ? {
44
+ recordId: record._id,
45
+ failedAttempts: record.failedAttempts,
46
+ }
47
+ : null;
48
+ };
49
+ export const recordPasswordFailure = async (ip) => {
50
+ const config = getPasswordFail2banConfig();
51
+ if (!ip || !config)
52
+ return { blocked: false, newlyBlocked: false };
53
+ const db = await getMongoService();
54
+ const collection = db.rawDB.collection(LoginIpBlock.name);
55
+ const now = new Date();
56
+ const update = {
57
+ $inc: { failedAttempts: 1 },
58
+ $set: { lastFailedAt: now, updatedAt: now },
59
+ $setOnInsert: {
60
+ _type: LoginIpBlock.name,
61
+ ip,
62
+ createdAt: now,
63
+ },
64
+ };
65
+ let record;
66
+ try {
67
+ record = await collection.findOneAndUpdate({ ip }, update, { upsert: true, returnDocument: 'after' });
68
+ }
69
+ catch (error) {
70
+ if (!error ||
71
+ typeof error !== 'object' ||
72
+ !('code' in error) ||
73
+ error.code !== 11000) {
74
+ throw error;
75
+ }
76
+ record = await collection.findOneAndUpdate({ ip }, {
77
+ $inc: update.$inc,
78
+ $set: update.$set,
79
+ }, { returnDocument: 'after' });
80
+ }
81
+ const failedAttempts = Number(record?.failedAttempts ?? 1);
82
+ if (record?.blockedAt) {
83
+ return {
84
+ blocked: true,
85
+ newlyBlocked: false,
86
+ recordId: String(record._id),
87
+ failedAttempts,
88
+ };
89
+ }
90
+ let newlyBlocked = false;
91
+ if (failedAttempts >= config.maxAttempts && record?._id) {
92
+ const blocked = await collection.findOneAndUpdate({ _id: record._id, blockedAt: { $exists: false } }, { $set: { blockedAt: now, updatedAt: now } }, { returnDocument: 'after' });
93
+ newlyBlocked = Boolean(blocked);
94
+ }
95
+ return {
96
+ blocked: failedAttempts >= config.maxAttempts,
97
+ newlyBlocked,
98
+ recordId: record?._id ? String(record._id) : undefined,
99
+ failedAttempts,
100
+ };
101
+ };
102
+ export const clearPasswordFailures = async (ip) => {
103
+ if (!ip || !getPasswordFail2banConfig())
104
+ return;
105
+ const db = await getMongoService();
106
+ await db.rawDB
107
+ .collection(LoginIpBlock.name)
108
+ .deleteOne({ ip, blockedAt: { $exists: false } });
109
+ };
110
+ //# sourceMappingURL=passwordFail2ban.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"passwordFail2ban.js","sourceRoot":"","sources":["../../../src/auth/passwordFail2ban.ts"],"names":[],"mappings":"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"}
@@ -0,0 +1,3 @@
1
+ import type { PasswordResetMailProps } from './accountRecovery.js';
2
+ export declare const passwordResetMailTemplate: import("../index.js").MailTemplate<PasswordResetMailProps>;
3
+ //# sourceMappingURL=passwordResetMailTemplate.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"passwordResetMailTemplate.d.ts","sourceRoot":"","sources":["../../../src/auth/passwordResetMailTemplate.ts"],"names":[],"mappings":"AACA,OAAO,KAAK,EAAE,sBAAsB,EAAE,MAAM,mBAAmB,CAAA;AAe/D,eAAO,MAAM,yBAAyB,mDA+ElC,CAAA"}
@@ -0,0 +1,87 @@
1
+ import { defineMailTemplate } from '../mail/index.js';
2
+ const escapeHtml = (value) => value.replace(/[&<>"']/g, (character) => ({
3
+ '&': '&amp;',
4
+ '<': '&lt;',
5
+ '>': '&gt;',
6
+ '"': '&quot;',
7
+ "'": '&#039;',
8
+ })[character] ?? character);
9
+ export const passwordResetMailTemplate = defineMailTemplate({
10
+ subject: 'Reset your Rakun manager password',
11
+ render: ({ expiresAt, resetUrl, user }) => {
12
+ const recipient = user.name?.trim() || user.email;
13
+ const expiresAtText = expiresAt.toUTCString();
14
+ const safeRecipient = escapeHtml(recipient);
15
+ const safeResetUrl = escapeHtml(resetUrl);
16
+ return {
17
+ text: [
18
+ `Hello ${recipient},`,
19
+ 'We received a request to reset your Rakun Manager password.',
20
+ `Choose a new password: ${resetUrl}`,
21
+ `This single-use link expires on ${expiresAtText}.`,
22
+ 'If you did not request this change, you can safely ignore this email. Your password will remain unchanged.',
23
+ ].join('\n\n'),
24
+ html: `<!doctype html>
25
+ <html lang="en">
26
+ <head>
27
+ <meta charset="utf-8">
28
+ <meta name="viewport" content="width=device-width, initial-scale=1">
29
+ <title>Reset your Rakun manager password</title>
30
+ </head>
31
+ <body style="background-color:#f7f8f7;color:#141a1f;font-family:Inter,-apple-system,BlinkMacSystemFont,'Segoe UI',Arial,sans-serif;margin:0;padding:0;">
32
+ <div style="display:none;font-size:1px;color:#f7f8f7;line-height:1px;max-height:0;max-width:0;opacity:0;overflow:hidden;">Reset your Rakun manager password</div>
33
+ <table role="presentation" cellpadding="0" cellspacing="0" border="0" width="100%" style="background-color:#f7f8f7;border-collapse:collapse;width:100%;">
34
+ <tr>
35
+ <td align="center" style="padding:40px 12px;">
36
+ <table role="presentation" cellpadding="0" cellspacing="0" border="0" width="600" style="background-color:#ffffff;border:1px solid #e2e6e9;border-collapse:separate;border-radius:8px;max-width:600px;width:100%;">
37
+ <tr>
38
+ <td style="border-bottom:1px solid #edf0f2;padding:20px 28px;">
39
+ <table role="presentation" cellpadding="0" cellspacing="0" border="0">
40
+ <tr>
41
+ <td align="center" bgcolor="#2abb67" width="32" height="32" style="background-color:#2abb67;border-radius:8px;color:#ffffff;font-size:16px;font-weight:700;line-height:32px;text-align:center;">R</td>
42
+ <td style="color:#141a1f;font-size:16px;font-weight:700;line-height:24px;padding-left:10px;">Rakun <span style="color:#67737e;font-weight:500;">Manager</span></td>
43
+ </tr>
44
+ </table>
45
+ </td>
46
+ </tr>
47
+ <tr>
48
+ <td style="padding:34px 32px 32px;">
49
+ <p style="color:#219150;font-size:12px;font-weight:700;letter-spacing:.08em;line-height:18px;margin:0 0 10px;text-transform:uppercase;">Account security</p>
50
+ <h1 style="color:#141a1f;font-size:28px;font-weight:700;line-height:36px;margin:0 0 22px;">Reset your password</h1>
51
+ <p style="color:#46515b;font-size:15px;line-height:24px;margin:0 0 12px;">Hello ${safeRecipient},</p>
52
+ <p style="color:#46515b;font-size:15px;line-height:24px;margin:0 0 12px;">We received a request to reset your manager password. Use the button below to choose a new one.</p>
53
+ <table role="presentation" cellpadding="0" cellspacing="0" border="0" style="margin:28px 0;">
54
+ <tr>
55
+ <td align="center" bgcolor="#2abb67" style="background-color:#2abb67;border-radius:8px;">
56
+ <a href="${safeResetUrl}" style="color:#ffffff;display:inline-block;font-size:14px;font-weight:700;line-height:20px;padding:12px 22px;text-align:center;text-decoration:none;">Choose new password</a>
57
+ </td>
58
+ </tr>
59
+ </table>
60
+ <table role="presentation" cellpadding="0" cellspacing="0" border="0" width="100%" style="background-color:#f0f2f4;border:1px solid #e2e6e9;border-radius:8px;margin:0 0 24px;width:100%;">
61
+ <tr>
62
+ <td style="padding:15px 17px;">
63
+ <p style="color:#141a1f;font-size:14px;font-weight:700;line-height:20px;margin:0;">Single-use security link</p>
64
+ <p style="color:#67737e;font-size:13px;line-height:20px;margin:4px 0 0;">This link can only be used once and expires on ${expiresAtText}.</p>
65
+ </td>
66
+ </tr>
67
+ </table>
68
+ <p style="color:#67737e;font-size:13px;line-height:20px;margin:0 0 6px;">If the button does not work, copy and paste this address into your browser:</p>
69
+ <p style="font-size:13px;line-height:20px;margin:0;word-wrap:break-word;"><a href="${safeResetUrl}" style="color:#219150;text-decoration:underline;">${safeResetUrl}</a></p>
70
+ <p style="border-top:1px solid #edf0f2;color:#67737e;font-size:13px;line-height:20px;margin:28px 0 0;padding-top:20px;">If you did not request this change, you can safely ignore this email. Your password will remain unchanged.</p>
71
+ </td>
72
+ </tr>
73
+ <tr>
74
+ <td style="background-color:#f7f8f7;border-top:1px solid #edf0f2;padding:17px 28px;">
75
+ <p style="color:#8f99a3;font-size:12px;line-height:18px;margin:0;">This message was sent automatically by Rakun Manager.</p>
76
+ </td>
77
+ </tr>
78
+ </table>
79
+ </td>
80
+ </tr>
81
+ </table>
82
+ </body>
83
+ </html>`,
84
+ };
85
+ },
86
+ });
87
+ //# sourceMappingURL=passwordResetMailTemplate.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"passwordResetMailTemplate.js","sourceRoot":"","sources":["../../../src/auth/passwordResetMailTemplate.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,kBAAkB,EAAE,MAAM,SAAS,CAAA;AAG5C,MAAM,UAAU,GAAG,CAAC,KAAa,EAAE,EAAE,CACnC,KAAK,CAAC,OAAO,CACX,UAAU,EACV,CAAC,SAAS,EAAE,EAAE,CACZ,CAAC;IACC,GAAG,EAAE,OAAO;IACZ,GAAG,EAAE,MAAM;IACX,GAAG,EAAE,MAAM;IACX,GAAG,EAAE,QAAQ;IACb,GAAG,EAAE,QAAQ;CACd,CAAC,CAAC,SAAS,CAAC,IAAI,SAAS,CAC7B,CAAA;AAEH,MAAM,CAAC,MAAM,yBAAyB,GACpC,kBAAkB,CAAyB;IACzC,OAAO,EAAE,mCAAmC;IAC5C,MAAM,EAAE,CAAC,EAAE,SAAS,EAAE,QAAQ,EAAE,IAAI,EAAE,EAAE,EAAE;QACxC,MAAM,SAAS,GAAG,IAAI,CAAC,IAAI,EAAE,IAAI,EAAE,IAAI,IAAI,CAAC,KAAK,CAAA;QACjD,MAAM,aAAa,GAAG,SAAS,CAAC,WAAW,EAAE,CAAA;QAC7C,MAAM,aAAa,GAAG,UAAU,CAAC,SAAS,CAAC,CAAA;QAC3C,MAAM,YAAY,GAAG,UAAU,CAAC,QAAQ,CAAC,CAAA;QAEzC,OAAO;YACL,IAAI,EAAE;gBACJ,SAAS,SAAS,GAAG;gBACrB,6DAA6D;gBAC7D,0BAA0B,QAAQ,EAAE;gBACpC,mCAAmC,aAAa,GAAG;gBACnD,4GAA4G;aAC7G,CAAC,IAAI,CAAC,MAAM,CAAC;YACd,IAAI,EAAE;;;;;;;;;;;;;;;;;;;;;;;;;;;kGA2BoF,aAAa;;;;;iCAK9E,YAAY;;;;;;;;gJAQmG,aAAa;;;;;qGAKxD,YAAY,sDAAsD,YAAY;;;;;;;;;;;;;;QAc3K;SACD,CAAA;IACH,CAAC;CACF,CAAC,CAAA"}
@@ -2,11 +2,16 @@ import type ContentType from "./lib/ContentType.js";
2
2
  import type { createLogger } from "./lib/Logger.js";
3
3
  import type { LiteralCatalogInput } from "./literals/definitions.js";
4
4
  import type { MediaServiceConfig } from "./media/index.js";
5
+ import type { MailServiceConfig } from "./mail/index.js";
6
+ import type { EventLogServiceConfig } from "./eventLog/index.js";
5
7
  import type { TranslationServiceConfig } from "./translation/index.js";
6
8
  import type { MongoConfig } from "./orm/database.js";
7
9
  import type { RouteDefinition } from "./api/utils/routes/routeDefinitions.js";
8
10
  import type { RakunOperationMap } from "./api/operations/types.js";
9
- import type { RakunPluginDefinition, RakunPluginFieldDefinition, RakunResolvedPluginContributions } from './plugins.js';
11
+ import type { RakunPluginDefinition, RakunPluginFieldDefinition, RakunResolvedPluginContributions } from "./plugins.js";
12
+ import type { ManagerLanguagePack } from "./schemas/manager/uiLocales.js";
13
+ import type { AccountRecoveryConfig } from "./auth/accountRecovery.js";
14
+ import type { LoginConfig } from "./auth/loginAdapters.js";
10
15
  export interface RakunBootstrapOptions {
11
16
  literals: LiteralCatalogInput;
12
17
  contentTypes: RakunContentType[];
@@ -17,8 +22,25 @@ export interface RakunBootstrapOptions {
17
22
  apiOperations?: RakunOperationMap;
18
23
  plugins?: readonly RakunPluginDefinition[];
19
24
  permissions?: readonly string[];
25
+ /**
26
+ * Installable manager UI locale packs (ICU key/value messages).
27
+ * English is always built into the manager client; list extra locales here.
28
+ */
29
+ managerLanguages?: readonly ManagerLanguagePack[];
20
30
  mongo?: MongoConfig;
21
31
  media?: MediaServiceConfig;
32
+ mail?: MailServiceConfig;
33
+ /**
34
+ * Manager password-reset URL builder, expiry, and optional mail template.
35
+ * Requires `mail`; core provides the default template.
36
+ */
37
+ accountRecovery?: AccountRecoveryConfig;
38
+ /** Manager login methods. Password login is enabled by default. */
39
+ login?: LoginConfig;
40
+ /**
41
+ * Persistent business event log. Defaults to the built-in MongoDB adapter.
42
+ */
43
+ eventLog?: EventLogServiceConfig;
22
44
  translation?: TranslationServiceConfig;
23
45
  logger?: Parameters<typeof createLogger>[0];
24
46
  revalidate?: {
@@ -29,7 +51,7 @@ export interface RakunBootstrapOptions {
29
51
  syncRoutes?: boolean;
30
52
  }
31
53
  export type RakunContentType = ContentType;
32
- export type ResolvedRakunBootstrapOptions = Omit<RakunBootstrapOptions, 'contentTypes' | 'routes' | 'apiOperations' | 'literals' | 'permissions'> & RakunResolvedPluginContributions & {
54
+ export type ResolvedRakunBootstrapOptions = Omit<RakunBootstrapOptions, "contentTypes" | "routes" | "apiOperations" | "literals" | "permissions"> & RakunResolvedPluginContributions & {
33
55
  fields: RakunPluginFieldDefinition[];
34
56
  };
35
57
  export declare const getRakunBootstrapOptions: () => ResolvedRakunBootstrapOptions | null;
@@ -1 +1 @@
1
- {"version":3,"file":"bootstrapState.d.ts","sourceRoot":"","sources":["../../src/bootstrapState.ts"],"names":[],"mappings":"AAAA,OAAO,KAAK,WAAW,MAAM,mBAAmB,CAAC;AACjD,OAAO,KAAK,EAAE,YAAY,EAAE,MAAM,cAAc,CAAC;AACjD,OAAO,KAAK,EAAE,mBAAmB,EAAE,MAAM,wBAAwB,CAAC;AAClE,OAAO,KAAK,EAAE,kBAAkB,EAAE,MAAM,SAAS,CAAC;AAClD,OAAO,KAAK,EAAE,wBAAwB,EAAE,MAAM,eAAe,CAAC;AAC9D,OAAO,KAAK,EAAE,WAAW,EAAE,MAAM,gBAAgB,CAAC;AAClD,OAAO,KAAK,EAAE,eAAe,EAAE,MAAM,qCAAqC,CAAC;AAC3E,OAAO,KAAK,EAAE,iBAAiB,EAAE,MAAM,wBAAwB,CAAC;AAChE,OAAO,KAAK,EACV,qBAAqB,EACrB,0BAA0B,EAC1B,gCAAgC,EACjC,MAAM,WAAW,CAAA;AAElB,MAAM,WAAW,qBAAqB;IACpC,QAAQ,EAAE,mBAAmB,CAAC;IAC9B,YAAY,EAAE,gBAAgB,EAAE,CAAC;IACjC,oBAAoB,CAAC,EAAE;QACrB,IAAI,CAAC,EAAE,gBAAgB,CAAC;KACzB,CAAC;IACF,MAAM,CAAC,EAAE,SAAS,eAAe,EAAE,CAAC;IACpC,aAAa,CAAC,EAAE,iBAAiB,CAAC;IAClC,OAAO,CAAC,EAAE,SAAS,qBAAqB,EAAE,CAAC;IAC3C,WAAW,CAAC,EAAE,SAAS,MAAM,EAAE,CAAC;IAChC,KAAK,CAAC,EAAE,WAAW,CAAC;IACpB,KAAK,CAAC,EAAE,kBAAkB,CAAC;IAC3B,WAAW,CAAC,EAAE,wBAAwB,CAAC;IACvC,MAAM,CAAC,EAAE,UAAU,CAAC,OAAO,YAAY,CAAC,CAAC,CAAC,CAAC,CAAC;IAC5C,UAAU,CAAC,EACP;QACE,GAAG,EAAE,MAAM,CAAC;QACZ,KAAK,EAAE,MAAM,CAAC;QACd,SAAS,CAAC,EAAE,MAAM,CAAC;KACpB,GACD,KAAK,CAAC;IACV,UAAU,CAAC,EAAE,OAAO,CAAC;CACtB;AAED,MAAM,MAAM,gBAAgB,GAAG,WAAW,CAAC;AAE3C,MAAM,MAAM,6BAA6B,GAAG,IAAI,CAC9C,qBAAqB,EACrB,cAAc,GAAG,QAAQ,GAAG,eAAe,GAAG,UAAU,GAAG,aAAa,CACzE,GACC,gCAAgC,GAAG;IACjC,MAAM,EAAE,0BAA0B,EAAE,CAAA;CACrC,CAAA;AAKH,eAAO,MAAM,wBAAwB,QAAO,6BAA6B,GAAG,IAC1D,CAAC;AAEnB,eAAO,MAAM,wBAAwB,GACnC,SAAS,6BAA6B,KACrC,IAGF,CAAC;AAEF,eAAO,MAAM,oBAAoB,QAAO,OAAuB,CAAC"}
1
+ {"version":3,"file":"bootstrapState.d.ts","sourceRoot":"","sources":["../../src/bootstrapState.ts"],"names":[],"mappings":"AAAA,OAAO,KAAK,WAAW,MAAM,mBAAmB,CAAC;AACjD,OAAO,KAAK,EAAE,YAAY,EAAE,MAAM,cAAc,CAAC;AACjD,OAAO,KAAK,EAAE,mBAAmB,EAAE,MAAM,wBAAwB,CAAC;AAClE,OAAO,KAAK,EAAE,kBAAkB,EAAE,MAAM,SAAS,CAAC;AAClD,OAAO,KAAK,EAAE,iBAAiB,EAAE,MAAM,QAAQ,CAAC;AAChD,OAAO,KAAK,EAAE,qBAAqB,EAAE,MAAM,YAAY,CAAC;AACxD,OAAO,KAAK,EAAE,wBAAwB,EAAE,MAAM,eAAe,CAAC;AAC9D,OAAO,KAAK,EAAE,WAAW,EAAE,MAAM,gBAAgB,CAAC;AAClD,OAAO,KAAK,EAAE,eAAe,EAAE,MAAM,qCAAqC,CAAC;AAC3E,OAAO,KAAK,EAAE,iBAAiB,EAAE,MAAM,wBAAwB,CAAC;AAChE,OAAO,KAAK,EACV,qBAAqB,EACrB,0BAA0B,EAC1B,gCAAgC,EACjC,MAAM,WAAW,CAAC;AACnB,OAAO,KAAK,EAAE,mBAAmB,EAAE,MAAM,6BAA6B,CAAC;AACvE,OAAO,KAAK,EAAE,qBAAqB,EAAE,MAAM,wBAAwB,CAAC;AACpE,OAAO,KAAK,EAAE,WAAW,EAAE,MAAM,sBAAsB,CAAC;AAExD,MAAM,WAAW,qBAAqB;IACpC,QAAQ,EAAE,mBAAmB,CAAC;IAC9B,YAAY,EAAE,gBAAgB,EAAE,CAAC;IACjC,oBAAoB,CAAC,EAAE;QACrB,IAAI,CAAC,EAAE,gBAAgB,CAAC;KACzB,CAAC;IACF,MAAM,CAAC,EAAE,SAAS,eAAe,EAAE,CAAC;IACpC,aAAa,CAAC,EAAE,iBAAiB,CAAC;IAClC,OAAO,CAAC,EAAE,SAAS,qBAAqB,EAAE,CAAC;IAC3C,WAAW,CAAC,EAAE,SAAS,MAAM,EAAE,CAAC;IAChC;;;OAGG;IACH,gBAAgB,CAAC,EAAE,SAAS,mBAAmB,EAAE,CAAC;IAClD,KAAK,CAAC,EAAE,WAAW,CAAC;IACpB,KAAK,CAAC,EAAE,kBAAkB,CAAC;IAC3B,IAAI,CAAC,EAAE,iBAAiB,CAAC;IACzB;;;OAGG;IACH,eAAe,CAAC,EAAE,qBAAqB,CAAC;IACxC,mEAAmE;IACnE,KAAK,CAAC,EAAE,WAAW,CAAC;IACpB;;OAEG;IACH,QAAQ,CAAC,EAAE,qBAAqB,CAAC;IACjC,WAAW,CAAC,EAAE,wBAAwB,CAAC;IACvC,MAAM,CAAC,EAAE,UAAU,CAAC,OAAO,YAAY,CAAC,CAAC,CAAC,CAAC,CAAC;IAC5C,UAAU,CAAC,EACP;QACE,GAAG,EAAE,MAAM,CAAC;QACZ,KAAK,EAAE,MAAM,CAAC;QACd,SAAS,CAAC,EAAE,MAAM,CAAC;KACpB,GACD,KAAK,CAAC;IACV,UAAU,CAAC,EAAE,OAAO,CAAC;CACtB;AAED,MAAM,MAAM,gBAAgB,GAAG,WAAW,CAAC;AAE3C,MAAM,MAAM,6BAA6B,GAAG,IAAI,CAC9C,qBAAqB,EACrB,cAAc,GAAG,QAAQ,GAAG,eAAe,GAAG,UAAU,GAAG,aAAa,CACzE,GACC,gCAAgC,GAAG;IACjC,MAAM,EAAE,0BAA0B,EAAE,CAAC;CACtC,CAAC;AAKJ,eAAO,MAAM,wBAAwB,QAC/B,6BAA6B,GAAG,IAAwB,CAAC;AAE/D,eAAO,MAAM,wBAAwB,GACnC,SAAS,6BAA6B,KACrC,IAGF,CAAC;AAEF,eAAO,MAAM,oBAAoB,QAAO,OAAuB,CAAC"}
@@ -1 +1 @@
1
- {"version":3,"file":"bootstrapState.js","sourceRoot":"","sources":["../../src/bootstrapState.ts"],"names":[],"mappings":"AAgDA,IAAI,gBAAgB,GAAyC,IAAI,CAAC;AAClE,IAAI,YAAY,GAAG,KAAK,CAAC;AAEzB,MAAM,CAAC,MAAM,wBAAwB,GAAG,GAAyC,EAAE,CACjF,gBAAgB,CAAC;AAEnB,MAAM,CAAC,MAAM,wBAAwB,GAAG,CACtC,OAAsC,EAChC,EAAE;IACR,gBAAgB,GAAG,OAAO,CAAC;IAC3B,YAAY,GAAG,IAAI,CAAC;AACtB,CAAC,CAAC;AAEF,MAAM,CAAC,MAAM,oBAAoB,GAAG,GAAY,EAAE,CAAC,YAAY,CAAC"}
1
+ {"version":3,"file":"bootstrapState.js","sourceRoot":"","sources":["../../src/bootstrapState.ts"],"names":[],"mappings":"AAsEA,IAAI,gBAAgB,GAAyC,IAAI,CAAC;AAClE,IAAI,YAAY,GAAG,KAAK,CAAC;AAEzB,MAAM,CAAC,MAAM,wBAAwB,GACnC,GAAyC,EAAE,CAAC,gBAAgB,CAAC;AAE/D,MAAM,CAAC,MAAM,wBAAwB,GAAG,CACtC,OAAsC,EAChC,EAAE;IACR,gBAAgB,GAAG,OAAO,CAAC;IAC3B,YAAY,GAAG,IAAI,CAAC;AACtB,CAAC,CAAC;AAEF,MAAM,CAAC,MAAM,oBAAoB,GAAG,GAAY,EAAE,CAAC,YAAY,CAAC"}