@stamhoofd/backend 2.118.1 → 2.120.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 (362) hide show
  1. package/package.json +32 -22
  2. package/src/audit-logs/ModelLogger.ts +4 -2
  3. package/src/audit-logs/OrderLogger.ts +1 -1
  4. package/src/boot.ts +32 -14
  5. package/src/crons/balance-emails.ts +4 -2
  6. package/src/crons/clearExcelCache.test.ts +8 -8
  7. package/src/crons/update-cached-balances.ts +40 -14
  8. package/src/debug.ts +3 -2
  9. package/src/decoders/StringArrayDecoder.ts +1 -1
  10. package/src/decoders/StringNullableDecoder.ts +1 -1
  11. package/src/email-recipient-loaders/documents.ts +2 -1
  12. package/src/email-recipient-loaders/members.ts +2 -1
  13. package/src/email-recipient-loaders/orders.ts +2 -1
  14. package/src/email-recipient-loaders/payments.ts +6 -3
  15. package/src/email-recipient-loaders/receivable-balances.ts +2 -1
  16. package/src/email-recipient-loaders/registrations.ts +2 -1
  17. package/src/email-replacements/getEmailReplacementsForPayment.ts +8 -7
  18. package/src/endpoints/admin/members/ChargeMembersEndpoint.ts +7 -6
  19. package/src/endpoints/admin/memberships/ChargeMembershipsEndpoint.ts +3 -2
  20. package/src/endpoints/admin/memberships/GetChargeMembershipsSummaryEndpoint.ts +2 -1
  21. package/src/endpoints/admin/organizations/ChargeOrganizationsEndpoint.ts +4 -3
  22. package/src/endpoints/admin/organizations/GetOrganizationsCountEndpoint.ts +3 -2
  23. package/src/endpoints/admin/organizations/GetOrganizationsEndpoint.ts +7 -5
  24. package/src/endpoints/admin/organizations/PatchOrganizationsEndpoint.ts +12 -10
  25. package/src/endpoints/admin/registrations/ChargeRegistrationsEndpoint.ts +4 -3
  26. package/src/endpoints/auth/CreateAdminEndpoint.ts +8 -6
  27. package/src/endpoints/auth/CreateTokenEndpoint.ts +14 -12
  28. package/src/endpoints/auth/DeleteTokenEndpoint.ts +2 -1
  29. package/src/endpoints/auth/DeleteUserEndpoint.ts +2 -1
  30. package/src/endpoints/auth/ForgotPasswordEndpoint.ts +5 -4
  31. package/src/endpoints/auth/GetOtherUserEndpoint.ts +3 -2
  32. package/src/endpoints/auth/GetUserEndpoint.ts +3 -2
  33. package/src/endpoints/auth/OpenIDConnectAuthTokenEndpoint.ts +2 -1
  34. package/src/endpoints/auth/OpenIDConnectCallbackEndpoint.ts +4 -2
  35. package/src/endpoints/auth/OpenIDConnectStartEndpoint.ts +3 -2
  36. package/src/endpoints/auth/PatchUserEndpoint.ts +15 -12
  37. package/src/endpoints/auth/PollEmailVerificationEndpoint.ts +3 -2
  38. package/src/endpoints/auth/RetryEmailVerificationEndpoint.ts +3 -2
  39. package/src/endpoints/auth/SignupEndpoint.ts +5 -4
  40. package/src/endpoints/auth/VerifyEmailEndpoint.ts +6 -5
  41. package/src/endpoints/frontend/FrontendEnvironmentEndpoint.ts +3 -2
  42. package/src/endpoints/global/addresses/SearchRegionsEndpoint.ts +8 -5
  43. package/src/endpoints/global/addresses/ValidateAddressEndpoint.ts +5 -3
  44. package/src/endpoints/global/audit-logs/GetAuditLogsEndpoint.ts +8 -5
  45. package/src/endpoints/global/billing/ActivatePackagesEndpoint.ts +9 -7
  46. package/src/endpoints/global/billing/DeactivatePackageEndpoint.ts +4 -3
  47. package/src/endpoints/global/caddy/CheckDomainCertEndpoint.ts +4 -2
  48. package/src/endpoints/global/email/CreateEmailEndpoint.ts +9 -7
  49. package/src/endpoints/global/email/GetAdminEmailsEndpoint.test.ts +2 -1
  50. package/src/endpoints/global/email/GetAdminEmailsEndpoint.ts +22 -19
  51. package/src/endpoints/global/email/GetEmailAddressEndpoint.ts +6 -4
  52. package/src/endpoints/global/email/GetEmailEndpoint.ts +4 -3
  53. package/src/endpoints/global/email/GetUserEmailsEndpoint.test.ts +3 -2
  54. package/src/endpoints/global/email/GetUserEmailsEndpoint.ts +7 -4
  55. package/src/endpoints/global/email/ManageEmailAddressEndpoint.ts +7 -5
  56. package/src/endpoints/global/email/PatchEmailEndpoint.test.ts +11 -11
  57. package/src/endpoints/global/email/PatchEmailEndpoint.ts +14 -11
  58. package/src/endpoints/global/email-recipients/GetEmailRecipientsCountEndpoint.ts +3 -2
  59. package/src/endpoints/global/email-recipients/GetEmailRecipientsEndpoint.test.ts +2 -1
  60. package/src/endpoints/global/email-recipients/GetEmailRecipientsEndpoint.ts +8 -5
  61. package/src/endpoints/global/email-recipients/RetryEmailRecipientEndpoint.ts +7 -5
  62. package/src/endpoints/global/email-recipients/helpers/validateEmailRecipientFilter.ts +4 -3
  63. package/src/endpoints/global/events/GetEventNotificationsCountEndpoint.ts +3 -2
  64. package/src/endpoints/global/events/GetEventNotificationsEndpoint.ts +9 -6
  65. package/src/endpoints/global/events/GetEventsEndpoint.ts +7 -4
  66. package/src/endpoints/global/events/PatchEventNotificationsEndpoint.test.ts +4 -2
  67. package/src/endpoints/global/events/PatchEventNotificationsEndpoint.ts +17 -15
  68. package/src/endpoints/global/events/PatchEventsEndpoint.test.ts +4 -2
  69. package/src/endpoints/global/events/PatchEventsEndpoint.ts +28 -26
  70. package/src/endpoints/global/files/ExportToExcelEndpoint.ts +8 -5
  71. package/src/endpoints/global/files/GetFileCache.ts +5 -3
  72. package/src/endpoints/global/files/UploadFile.ts +10 -4
  73. package/src/endpoints/global/files/UploadImage.ts +4 -2
  74. package/src/endpoints/global/groups/GetGroupsEndpoint.test.ts +4 -2
  75. package/src/endpoints/global/groups/GetGroupsEndpoint.ts +8 -5
  76. package/src/endpoints/global/members/GetMemberFamilyEndpoint.ts +7 -5
  77. package/src/endpoints/global/members/GetMembersCountEndpoint.ts +3 -2
  78. package/src/endpoints/global/members/GetMembersEndpoint.test.ts +4 -2
  79. package/src/endpoints/global/members/GetMembersEndpoint.ts +10 -8
  80. package/src/endpoints/global/members/PatchOrganizationMembersEndpoint.test.ts +257 -6
  81. package/src/endpoints/global/members/PatchOrganizationMembersEndpoint.ts +162 -107
  82. package/src/endpoints/global/members/helpers/validateGroupFilter.ts +4 -3
  83. package/src/endpoints/global/members/shouldCheckIfMemberIsDuplicate.ts +3 -2
  84. package/src/endpoints/global/organizations/CheckRegisterCodeEndpoint.ts +3 -2
  85. package/src/endpoints/global/organizations/CreateOrganizationEndpoint.test.ts +3 -2
  86. package/src/endpoints/global/organizations/CreateOrganizationEndpoint.ts +8 -7
  87. package/src/endpoints/global/organizations/GetOrganizationFromDomainEndpoint.ts +5 -3
  88. package/src/endpoints/global/organizations/GetOrganizationFromUriEndpoint.ts +5 -3
  89. package/src/endpoints/global/organizations/SearchOrganizationEndpoint.ts +8 -5
  90. package/src/endpoints/global/payments/StripeWebhookEndpoint.ts +4 -2
  91. package/src/endpoints/global/platform/GetPlatformAdminsEndpoint.ts +2 -1
  92. package/src/endpoints/global/platform/GetPlatformEndpoint.ts +3 -2
  93. package/src/endpoints/global/platform/PatchPlatformEnpoint.test.ts +3 -2
  94. package/src/endpoints/global/platform/PatchPlatformEnpoint.ts +7 -4
  95. package/src/endpoints/global/platform-memberships/GetPlatformMembershipsCountEndpoint.ts +47 -0
  96. package/src/endpoints/global/platform-memberships/GetPlatformMembershipsEndpoint.ts +206 -0
  97. package/src/endpoints/global/registration/GetRegistrationsCountEndpoint.ts +3 -2
  98. package/src/endpoints/global/registration/GetRegistrationsEndpoint.test.ts +2 -1
  99. package/src/endpoints/global/registration/GetRegistrationsEndpoint.ts +10 -7
  100. package/src/endpoints/global/registration/GetUserDetailedPayableBalanceEndpoint.ts +4 -2
  101. package/src/endpoints/global/registration/GetUserDocumentsEndpoint.ts +4 -2
  102. package/src/endpoints/global/registration/GetUserMembersEndpoint.ts +3 -2
  103. package/src/endpoints/global/registration/GetUserPayableBalanceEndpoint.ts +2 -1
  104. package/src/endpoints/global/registration/PatchUserMembersEndpoint.test.ts +5 -3
  105. package/src/endpoints/global/registration/PatchUserMembersEndpoint.ts +13 -9
  106. package/src/endpoints/global/registration/RegisterMembersEndpoint.test.ts +50 -49
  107. package/src/endpoints/global/registration/RegisterMembersEndpoint.ts +25 -22
  108. package/src/endpoints/global/registration-periods/GetRegistrationPeriodsEndpoint.ts +8 -5
  109. package/src/endpoints/global/registration-periods/PatchRegistrationPeriodsEndpoint.ts +9 -7
  110. package/src/endpoints/global/sso/GetSSOEndpoint.ts +4 -2
  111. package/src/endpoints/global/sso/SetSSOEndpoint.ts +3 -2
  112. package/src/endpoints/global/webshops/GetWebshopFromDomainEndpoint.ts +4 -2
  113. package/src/endpoints/global/webshops/GetWebshopsCountEndpoint.ts +43 -0
  114. package/src/endpoints/global/webshops/GetWebshopsEndpoint.test.ts +808 -0
  115. package/src/endpoints/global/webshops/GetWebshopsEndpoint.ts +221 -0
  116. package/src/endpoints/organization/dashboard/balance-items/GetBalanceItemEndpoint.ts +4 -3
  117. package/src/endpoints/organization/dashboard/balance-items/GetBalanceItemsCountEndpoint.ts +3 -2
  118. package/src/endpoints/organization/dashboard/balance-items/GetBalanceItemsEndpoint.ts +6 -4
  119. package/src/endpoints/organization/dashboard/balance-items/PatchBalanceItemsEndpoint.ts +15 -13
  120. package/src/endpoints/organization/dashboard/billing/GetOrganizationDetailedPayableBalanceEndpoint.ts +4 -2
  121. package/src/endpoints/organization/dashboard/billing/GetOrganizationPayableBalanceEndpoint.ts +4 -2
  122. package/src/endpoints/organization/dashboard/billing/GetPackagesEndpoint.ts +2 -1
  123. package/src/endpoints/organization/dashboard/documents/GetDocumentTemplateXML.ts +3 -2
  124. package/src/endpoints/organization/dashboard/documents/GetDocumentTemplatesCountEndpoint.ts +3 -2
  125. package/src/endpoints/organization/dashboard/documents/GetDocumentTemplatesEndpoint.ts +7 -4
  126. package/src/endpoints/organization/dashboard/documents/GetDocumentsCountEndpoint.ts +3 -2
  127. package/src/endpoints/organization/dashboard/documents/GetDocumentsEndpoint.ts +7 -4
  128. package/src/endpoints/organization/dashboard/documents/PatchDocumentEndpoint.ts +9 -7
  129. package/src/endpoints/organization/dashboard/documents/PatchDocumentTemplatesEndpoint.test.ts +4 -2
  130. package/src/endpoints/organization/dashboard/documents/PatchDocumentTemplatesEndpoint.ts +7 -5
  131. package/src/endpoints/organization/dashboard/email/CheckEmailBouncesEndpoint.ts +3 -2
  132. package/src/endpoints/organization/dashboard/email-templates/GetEmailTemplatesEndpoint.test.ts +36 -1
  133. package/src/endpoints/organization/dashboard/email-templates/GetEmailTemplatesEndpoint.ts +13 -4
  134. package/src/endpoints/organization/dashboard/email-templates/PatchEmailTemplatesEndpoint.test.ts +4 -2
  135. package/src/endpoints/organization/dashboard/email-templates/PatchEmailTemplatesEndpoint.ts +7 -5
  136. package/src/endpoints/organization/dashboard/invoices/GetInvoicesCountEndpoint.ts +3 -2
  137. package/src/endpoints/organization/dashboard/invoices/GetInvoicesEndpoint.ts +6 -4
  138. package/src/endpoints/organization/dashboard/invoices/PatchInvoicesEndpoint.ts +5 -3
  139. package/src/endpoints/organization/dashboard/mollie/CheckMollieEndpoint.ts +4 -2
  140. package/src/endpoints/organization/dashboard/mollie/ConnectMollieEndpoint.ts +6 -3
  141. package/src/endpoints/organization/dashboard/mollie/DisconnectMollieEndpoint.ts +4 -2
  142. package/src/endpoints/organization/dashboard/mollie/GetMollieDashboardEndpoint.ts +2 -1
  143. package/src/endpoints/organization/dashboard/nolt/CreateNoltTokenEndpoint.ts +2 -1
  144. package/src/endpoints/organization/dashboard/organization/GetOrganizationArchivedGroups.ts +4 -2
  145. package/src/endpoints/organization/dashboard/organization/GetOrganizationDeletedGroups.ts +3 -2
  146. package/src/endpoints/organization/dashboard/organization/GetUitpasClientIdEndpoint.ts +2 -1
  147. package/src/endpoints/organization/dashboard/organization/PatchOrganizationEndpoint.test.ts +5 -3
  148. package/src/endpoints/organization/dashboard/organization/PatchOrganizationEndpoint.ts +22 -19
  149. package/src/endpoints/organization/dashboard/organization/SearchUitpasOrganizersEndpoint.ts +5 -3
  150. package/src/endpoints/organization/dashboard/organization/SetOrganizationDomainEndpoint.ts +11 -9
  151. package/src/endpoints/organization/dashboard/organization/SetUitpasClientCredentialsEndpoint.ts +8 -7
  152. package/src/endpoints/organization/dashboard/payments/GetMemberBalanceEndpoint.ts +2 -1
  153. package/src/endpoints/organization/dashboard/payments/GetPaymentsCountEndpoint.ts +3 -2
  154. package/src/endpoints/organization/dashboard/payments/GetPaymentsEndpoint.ts +7 -5
  155. package/src/endpoints/organization/dashboard/payments/PatchPaymentsEndpoint.ts +18 -16
  156. package/src/endpoints/organization/dashboard/receivable-balances/GetReceivableBalanceEndpoint.ts +2 -1
  157. package/src/endpoints/organization/dashboard/receivable-balances/GetReceivableBalancesCountEndpoint.ts +3 -2
  158. package/src/endpoints/organization/dashboard/receivable-balances/GetReceivableBalancesEndpoint.ts +5 -3
  159. package/src/endpoints/organization/dashboard/registration-periods/GetOrganizationRegistrationPeriodsEndpoint.test.ts +2 -1
  160. package/src/endpoints/organization/dashboard/registration-periods/GetOrganizationRegistrationPeriodsEndpoint.ts +8 -5
  161. package/src/endpoints/organization/dashboard/registration-periods/MoveRegistrationPeriods.test.ts +4 -2
  162. package/src/endpoints/organization/dashboard/registration-periods/PatchOrganizationRegistrationPeriodsEndpoint.test.ts +4 -2
  163. package/src/endpoints/organization/dashboard/registration-periods/PatchOrganizationRegistrationPeriodsEndpoint.ts +32 -29
  164. package/src/endpoints/organization/dashboard/registration-periods/SetupStepReviewEndpoint.ts +6 -3
  165. package/src/endpoints/organization/dashboard/stripe/ConnectStripeEndpoint.ts +3 -2
  166. package/src/endpoints/organization/dashboard/stripe/DeleteStripeAccountEndpoint.ts +3 -2
  167. package/src/endpoints/organization/dashboard/stripe/GetStripeAccountLinkEndpoint.ts +5 -3
  168. package/src/endpoints/organization/dashboard/stripe/GetStripeAccountsEndpoint.ts +2 -1
  169. package/src/endpoints/organization/dashboard/stripe/GetStripeLoginLinkEndpoint.ts +5 -3
  170. package/src/endpoints/organization/dashboard/stripe/UpdateStripeAccountEndpoint.ts +3 -2
  171. package/src/endpoints/organization/dashboard/users/CreateApiUserEndpoint.ts +4 -3
  172. package/src/endpoints/organization/dashboard/users/DeleteUserEndpoint.ts +4 -3
  173. package/src/endpoints/organization/dashboard/users/GetApiUsersEndpoint.ts +3 -2
  174. package/src/endpoints/organization/dashboard/users/GetOrganizationAdminsEndpoint.ts +2 -1
  175. package/src/endpoints/organization/dashboard/users/PatchApiUserEndpoint.ts +6 -4
  176. package/src/endpoints/organization/dashboard/webshops/CreateWebshopEndpoint.ts +7 -6
  177. package/src/endpoints/organization/dashboard/webshops/DeleteWebshopEndpoint.ts +3 -2
  178. package/src/endpoints/organization/dashboard/webshops/GetDiscountCodesEndpoint.ts +4 -2
  179. package/src/endpoints/organization/dashboard/webshops/GetWebshopOrdersCountEndpoint.ts +3 -2
  180. package/src/endpoints/organization/dashboard/webshops/GetWebshopOrdersEndpoint.ts +7 -4
  181. package/src/endpoints/organization/dashboard/webshops/{GetWebshopTicketsCountEndpoint → GetWebshopTicketsCountEndpoint.ts} +7 -7
  182. package/src/endpoints/organization/dashboard/webshops/GetWebshopTicketsEndpoint.ts +9 -6
  183. package/src/endpoints/organization/dashboard/webshops/GetWebshopUriAvailabilityEndpoint.ts +4 -2
  184. package/src/endpoints/organization/dashboard/webshops/PatchDiscountCodesEndpoint.ts +6 -4
  185. package/src/endpoints/organization/dashboard/webshops/PatchWebshopEndpoint.ts +13 -12
  186. package/src/endpoints/organization/dashboard/webshops/PatchWebshopOrdersEndpoint.ts +4 -2
  187. package/src/endpoints/organization/dashboard/webshops/PatchWebshopTicketsEndpoint.ts +5 -3
  188. package/src/endpoints/organization/dashboard/webshops/SearchUitpasEventsEndpoint.ts +6 -4
  189. package/src/endpoints/organization/dashboard/webshops/VerifyWebshopDomainEndpoint.ts +2 -1
  190. package/src/endpoints/organization/shared/ExchangePaymentEndpoint.ts +6 -4
  191. package/src/endpoints/organization/shared/GetDocumentHtml.ts +4 -3
  192. package/src/endpoints/organization/shared/GetPaymentEndpoint.ts +4 -3
  193. package/src/endpoints/organization/shared/GetUitpasNumberDetailsEndpoint.ts +3 -2
  194. package/src/endpoints/organization/shared/auth/GetOrganizationEndpoint.ts +3 -2
  195. package/src/endpoints/organization/webshops/CheckWebshopDiscountCodesEndpoint.ts +4 -3
  196. package/src/endpoints/organization/webshops/GetOrderByPaymentEndpoint.ts +5 -4
  197. package/src/endpoints/organization/webshops/GetOrderEndpoint.ts +4 -3
  198. package/src/endpoints/organization/webshops/GetTicketsEndpoint.ts +7 -5
  199. package/src/endpoints/organization/webshops/GetWebshopEndpoint.ts +4 -3
  200. package/src/endpoints/organization/webshops/PlaceOrderEndpoint.test.ts +7 -3
  201. package/src/endpoints/organization/webshops/PlaceOrderEndpoint.ts +11 -10
  202. package/src/endpoints/organization/webshops/RetrieveUitpasSocialTariffPriceEndpoint.ts +5 -4
  203. package/src/endpoints/system/HealthEndpoint.test.ts +44 -0
  204. package/src/endpoints/system/HealthEndpoint.ts +14 -6
  205. package/src/excel-loaders/balance-items.ts +19 -17
  206. package/src/excel-loaders/event-notifications.ts +15 -13
  207. package/src/excel-loaders/index.ts +1 -0
  208. package/src/excel-loaders/members.ts +45 -43
  209. package/src/excel-loaders/organizations.ts +26 -25
  210. package/src/excel-loaders/payments.ts +44 -42
  211. package/src/excel-loaders/platform-memberships.ts +202 -0
  212. package/src/excel-loaders/receivable-balances.ts +25 -23
  213. package/src/excel-loaders/registrations.ts +30 -28
  214. package/src/helpers/AddressValidator.test.ts +2 -1
  215. package/src/helpers/AddressValidator.ts +13 -10
  216. package/src/helpers/AdminPermissionChecker.ts +193 -95
  217. package/src/helpers/AuthenticatedStructures.ts +13 -11
  218. package/src/helpers/BuckarooHelper.ts +3 -2
  219. package/src/helpers/Context.ts +8 -6
  220. package/src/helpers/CookieHelper.ts +2 -2
  221. package/src/helpers/FileCache.ts +9 -9
  222. package/src/helpers/ForwardHandler.ts +3 -2
  223. package/src/helpers/GlobalHelper.ts +2 -0
  224. package/src/helpers/GroupBuilder.ts +2 -1
  225. package/src/helpers/GroupedThrottledQueue.test.ts +19 -19
  226. package/src/helpers/LimitedFilteredRequestHelper.ts +1 -1
  227. package/src/helpers/MemberCharger.ts +2 -1
  228. package/src/helpers/MemberUserSyncer.ts +6 -3
  229. package/src/helpers/MembershipCharger.ts +2 -2
  230. package/src/helpers/OrganizationCharger.ts +2 -1
  231. package/src/helpers/PeriodHelper.ts +2 -1
  232. package/src/helpers/SQLTranslatedString.ts +3 -2
  233. package/src/helpers/ServiceFeeHelper.ts +1 -1
  234. package/src/helpers/SetupStepUpdater.ts +6 -5
  235. package/src/helpers/StripeHelper.ts +9 -8
  236. package/src/helpers/TagHelper.test.ts +5 -5
  237. package/src/helpers/TagHelper.ts +2 -1
  238. package/src/helpers/TemporaryMemberAccess.ts +2 -1
  239. package/src/helpers/ThrottledQueue.test.ts +20 -20
  240. package/src/helpers/UitpasTokenRepository.ts +7 -7
  241. package/src/helpers/ViesHelper.ts +5 -4
  242. package/src/helpers/XlsxTransformerColumnHelper.ts +21 -19
  243. package/src/helpers/email-html-helpers.ts +13 -12
  244. package/src/helpers/fetchToAsyncIterator.ts +1 -1
  245. package/src/helpers/outstandingBalanceJoin.ts +2 -1
  246. package/src/helpers/updateMemberDetailsUitpasNumber.ts +5 -4
  247. package/src/middleware/ContextMiddleware.ts +1 -1
  248. package/src/migrate.ts +21 -4
  249. package/src/seeds/0000000003-default-email-templates.ts +1 -1
  250. package/src/seeds/0000000004-single-organization.ts +2 -1
  251. package/src/seeds/1752848561-groups-registration-periods.ts +3 -2
  252. package/src/seeds/1754560914-groups-prices.test.ts +2 -1
  253. package/src/seeds/1754560914-groups-prices.ts +2 -1
  254. package/src/seeds/1755790070-fill-email-recipient-errors.ts +6 -6
  255. package/src/seeds/1755876819-remove-duplicate-members.ts +2 -1
  256. package/src/seeds/1765896674-document-update-year.test.ts +2 -1
  257. package/src/seeds/1773754928-force-save-members.ts +15 -0
  258. package/src/services/AuditLogService.ts +3 -2
  259. package/src/services/BalanceItemPaymentService.ts +2 -2
  260. package/src/services/BalanceItemService.ts +2 -1
  261. package/src/services/BootChecksService.test.ts +33 -0
  262. package/src/services/BootChecksService.ts +21 -0
  263. package/src/services/DatabaseCollationService.test.ts +18 -0
  264. package/src/services/DatabaseCollationService.ts +81 -0
  265. package/src/services/DocumentService.ts +1 -1
  266. package/src/services/EventNotificationService.ts +5 -4
  267. package/src/services/FileSignService.ts +2 -2
  268. package/src/services/InvoiceService.ts +3 -3
  269. package/src/services/MemberNumberService.ts +6 -4
  270. package/src/services/MemberRecordStore.ts +28 -19
  271. package/src/services/PaymentReallocationService.test.ts +2 -1
  272. package/src/services/PaymentReallocationService.ts +2 -1
  273. package/src/services/PaymentService.ts +28 -26
  274. package/src/services/RegistrationService.ts +65 -3
  275. package/src/services/SSOService.ts +13 -9
  276. package/src/services/STPackageService.ts +7 -5
  277. package/src/services/StartupHealthService.ts +15 -0
  278. package/src/services/uitpas/PassholderEndpoints.ts +2 -2
  279. package/src/services/uitpas/UitpasService.ts +11 -8
  280. package/src/services/uitpas/cancelTicketSales.ts +1 -1
  281. package/src/services/uitpas/checkPermissionsFor.ts +9 -9
  282. package/src/services/uitpas/getSocialTariffForEvent.ts +4 -4
  283. package/src/services/uitpas/getSocialTariffForUitpasNumbers.ts +5 -5
  284. package/src/services/uitpas/handleUitpasResponse.ts +1 -1
  285. package/src/services/uitpas/registerTicketSales.ts +4 -4
  286. package/src/services/uitpas/searchUitpasEvents.ts +3 -3
  287. package/src/services/uitpas/searchUitpasOrganizers.ts +3 -3
  288. package/src/sql-filters/audit-logs.ts +2 -1
  289. package/src/sql-filters/balance-item-payments.ts +2 -1
  290. package/src/sql-filters/balance-items.ts +2 -1
  291. package/src/sql-filters/base-registration-filter-compilers.ts +6 -4
  292. package/src/sql-filters/document-templates.ts +2 -1
  293. package/src/sql-filters/documents.ts +2 -1
  294. package/src/sql-filters/email-recipients.ts +2 -1
  295. package/src/sql-filters/emails.ts +2 -1
  296. package/src/sql-filters/event-notifications.ts +2 -1
  297. package/src/sql-filters/events.ts +2 -1
  298. package/src/sql-filters/groups.ts +2 -1
  299. package/src/sql-filters/invoiced-balance-items.ts +2 -1
  300. package/src/sql-filters/invoices.ts +2 -1
  301. package/src/sql-filters/member-responsibility-records.ts +2 -1
  302. package/src/sql-filters/members.ts +8 -7
  303. package/src/sql-filters/orders.ts +3 -2
  304. package/src/sql-filters/organization-registration-periods.ts +2 -1
  305. package/src/sql-filters/organizations.ts +2 -1
  306. package/src/sql-filters/payments.ts +2 -1
  307. package/src/sql-filters/platform-memberships.ts +67 -0
  308. package/src/sql-filters/receivable-balances.ts +2 -1
  309. package/src/sql-filters/registration-periods.ts +2 -1
  310. package/src/sql-filters/registrations.ts +2 -1
  311. package/src/sql-filters/tickets.ts +2 -1
  312. package/src/sql-filters/users.ts +2 -1
  313. package/src/sql-filters/webshops.ts +38 -0
  314. package/src/sql-sorters/audit-logs.ts +3 -2
  315. package/src/sql-sorters/balance-items.ts +3 -2
  316. package/src/sql-sorters/document-templates.ts +3 -2
  317. package/src/sql-sorters/documents.ts +3 -2
  318. package/src/sql-sorters/email-recipients.ts +3 -2
  319. package/src/sql-sorters/emails.ts +3 -2
  320. package/src/sql-sorters/event-notifications.ts +3 -2
  321. package/src/sql-sorters/events.ts +3 -2
  322. package/src/sql-sorters/groups.ts +3 -2
  323. package/src/sql-sorters/invoices.ts +3 -2
  324. package/src/sql-sorters/members.ts +3 -2
  325. package/src/sql-sorters/orders.ts +3 -2
  326. package/src/sql-sorters/organization-registration-periods.ts +3 -2
  327. package/src/sql-sorters/organizations.ts +3 -2
  328. package/src/sql-sorters/payments.ts +3 -2
  329. package/src/sql-sorters/platform-memberships.ts +40 -0
  330. package/src/sql-sorters/receivable-balances.ts +3 -2
  331. package/src/sql-sorters/registration-periods.ts +3 -2
  332. package/src/sql-sorters/registrations.ts +3 -2
  333. package/src/sql-sorters/tickets.ts +3 -2
  334. package/src/sql-sorters/webshops.ts +40 -0
  335. package/tests/actions/patchOrganizationMember.ts +5 -4
  336. package/tests/actions/patchPaymentStatus.ts +2 -2
  337. package/tests/actions/patchUserMember.ts +6 -4
  338. package/tests/e2e/api-rate-limits.test.ts +4 -5
  339. package/tests/e2e/bundle-discounts.test.ts +3 -2
  340. package/tests/e2e/charge-members.test.ts +7 -5
  341. package/tests/e2e/documents.test.ts +3 -2
  342. package/tests/e2e/private-files.test.ts +11 -13
  343. package/tests/e2e/register.test.ts +6 -5
  344. package/tests/e2e/stock.test.ts +6 -8
  345. package/tests/e2e/tickets.test.ts +4 -2
  346. package/tests/helpers/StripeMocker.ts +3 -3
  347. package/tests/init/initAdmin.ts +4 -2
  348. package/tests/init/initBundleDiscount.ts +3 -2
  349. package/tests/init/initPayconiq.ts +1 -1
  350. package/tests/init/initPermissionRole.ts +4 -2
  351. package/tests/init/initPlatformRecordCategory.ts +1 -1
  352. package/tests/init/initStripe.ts +1 -1
  353. package/tests/vitest.global.setup.ts +26 -0
  354. package/tests/{jest.setup.ts → vitest.setup.ts} +4 -3
  355. package/tsconfig.build.json +17 -0
  356. package/tsconfig.json +10 -41
  357. package/tsconfig.test.json +17 -0
  358. package/vitest.config.js +13 -0
  359. package/eslint.config.mjs +0 -5
  360. package/jest.config.cjs +0 -27
  361. package/tests/jest.global.setup.ts +0 -33
  362. package/tests/toMatchMap.ts +0 -68
@@ -1,5 +1,7 @@
1
- import { AutoEncoderPatchType, Decoder, PatchableArrayAutoEncoder, PatchableArrayDecoder, patchObject, StringDecoder } from '@simonbackx/simple-encoding';
2
- import { DecodedRequest, Endpoint, Request, Response } from '@simonbackx/simple-endpoints';
1
+ import type { AutoEncoderPatchType, Decoder, PatchableArrayAutoEncoder} from '@simonbackx/simple-encoding';
2
+ import { PatchableArrayDecoder, patchObject, StringDecoder } from '@simonbackx/simple-encoding';
3
+ import type { DecodedRequest, Request} from '@simonbackx/simple-endpoints';
4
+ import { Endpoint, Response } from '@simonbackx/simple-endpoints';
3
5
  import { SimpleError } from '@simonbackx/simple-errors';
4
6
  import { BalanceItem, BalanceItemPayment, Payment, User } from '@stamhoofd/models';
5
7
  import { QueueHandler } from '@stamhoofd/queues';
@@ -53,7 +55,7 @@ export class PatchPaymentsEndpoint extends Endpoint<Params, Query, Body, Respons
53
55
  throw new SimpleError({
54
56
  code: 'invalid_field',
55
57
  message: 'You need to add at least one balance item payment',
56
- human: $t(`8b093b22-3e43-484d-b28c-da7f8db46aa0`),
58
+ human: $t(`%Em`),
57
59
  field: 'balanceItemPayments',
58
60
  });
59
61
  }
@@ -62,7 +64,7 @@ export class PatchPaymentsEndpoint extends Endpoint<Params, Query, Body, Respons
62
64
  throw new SimpleError({
63
65
  code: 'invalid_field',
64
66
  message: 'Invalid payment method',
65
- human: $t(`27b3013c-af5d-4c8e-9363-415c56b138b6`),
67
+ human: $t(`%En`),
66
68
  field: 'method',
67
69
  });
68
70
  }
@@ -115,7 +117,7 @@ export class PatchPaymentsEndpoint extends Endpoint<Params, Query, Body, Respons
115
117
  throw new SimpleError({
116
118
  code: 'invalid_field',
117
119
  message: 'Transfer settings are required',
118
- human: $t(`c6cdb321-3eb3-4689-aaed-0626e7ea0844`),
120
+ human: $t(`%Eo`),
119
121
  field: 'transferSettings',
120
122
  });
121
123
  }
@@ -126,7 +128,7 @@ export class PatchPaymentsEndpoint extends Endpoint<Params, Query, Body, Respons
126
128
  throw new SimpleError({
127
129
  code: 'invalid_field',
128
130
  message: 'Transfer description is required',
129
- human: $t(`16e792b1-bb90-4d09-b9c8-a1e382a2eafe`),
131
+ human: $t(`%Ep`),
130
132
  field: 'transferDescription',
131
133
  });
132
134
  }
@@ -140,7 +142,7 @@ export class PatchPaymentsEndpoint extends Endpoint<Params, Query, Body, Respons
140
142
  for (const item of put.balanceItemPayments) {
141
143
  const balanceItem = await BalanceItem.getByID(item.balanceItem.id);
142
144
  if (!balanceItem || balanceItem.organizationId !== organization.id) {
143
- throw Context.auth.notFoundOrNoAccess($t(`701966b1-07e0-4ce6-9779-2193c1596825`));
145
+ throw Context.auth.notFoundOrNoAccess($t(`%Eq`));
144
146
  }
145
147
  balanceItems.push(balanceItem);
146
148
 
@@ -158,7 +160,7 @@ export class PatchPaymentsEndpoint extends Endpoint<Params, Query, Body, Respons
158
160
 
159
161
  // Check permissions
160
162
  if (!(await Context.auth.canAccessBalanceItems(balanceItems, PermissionLevel.Write))) {
161
- throw Context.auth.error($t(`19bc226c-2b4b-49bf-94a5-28e3d679ecc7`));
163
+ throw Context.auth.error($t(`%Er`));
162
164
  }
163
165
 
164
166
  // Check total price
@@ -172,7 +174,7 @@ export class PatchPaymentsEndpoint extends Endpoint<Params, Query, Body, Respons
172
174
  throw new SimpleError({
173
175
  code: 'invalid_field',
174
176
  message: 'The price should be greater than zero',
175
- human: $t(`f4070936-7a8f-4373-af03-ca53200bb11b`),
177
+ human: $t(`%Es`),
176
178
  field: 'price',
177
179
  });
178
180
  }
@@ -185,7 +187,7 @@ export class PatchPaymentsEndpoint extends Endpoint<Params, Query, Body, Respons
185
187
  throw new SimpleError({
186
188
  code: 'invalid_field',
187
189
  message: 'The price should be smaller than zero',
188
- human: $t(`9ebba3e9-d126-4e87-971e-1563c17a122e`),
190
+ human: $t(`%Et`),
189
191
  field: 'price',
190
192
  });
191
193
  }
@@ -198,7 +200,7 @@ export class PatchPaymentsEndpoint extends Endpoint<Params, Query, Body, Respons
198
200
  throw new SimpleError({
199
201
  code: 'invalid_field',
200
202
  message: 'Total price should be zero',
201
- human: $t(`5b5ec7ff-d48f-4943-80c3-f3d0e4b32989`),
203
+ human: $t(`%Eu`),
202
204
  field: 'price',
203
205
  });
204
206
  }
@@ -207,7 +209,7 @@ export class PatchPaymentsEndpoint extends Endpoint<Params, Query, Body, Respons
207
209
  throw new SimpleError({
208
210
  code: 'missing_items',
209
211
  message: 'At least two items are required for a reallocation',
210
- human: $t(`7b2fb731-37d9-4601-82c4-162abb2803f9`),
212
+ human: $t(`%Ev`),
211
213
  });
212
214
  }
213
215
  break;
@@ -249,7 +251,7 @@ export class PatchPaymentsEndpoint extends Endpoint<Params, Query, Body, Respons
249
251
  throw new SimpleError({
250
252
  code: 'not_found',
251
253
  message: 'Payment not found',
252
- human: $t(`29e79d32-8805-4458-84db-c90e591f9727`),
254
+ human: $t(`%Ew`),
253
255
  });
254
256
  }
255
257
 
@@ -258,7 +260,7 @@ export class PatchPaymentsEndpoint extends Endpoint<Params, Query, Body, Respons
258
260
  throw new SimpleError({
259
261
  code: 'invalid_field',
260
262
  message: 'Invalid payment method',
261
- human: $t(`6afcf043-3ccf-41e3-a840-36a18a8af809`),
263
+ human: $t(`%Ex`),
262
264
  });
263
265
  }
264
266
  }
@@ -277,7 +279,7 @@ export class PatchPaymentsEndpoint extends Endpoint<Params, Query, Body, Respons
277
279
  throw new SimpleError({
278
280
  code: 'invalid_field',
279
281
  message: 'Invalid payment method',
280
- human: $t(`eb03febc-d83b-4789-bb4d-0d97d542edfa`),
282
+ human: $t(`%Ey`),
281
283
  field: 'method',
282
284
  });
283
285
  }
@@ -300,7 +302,7 @@ export class PatchPaymentsEndpoint extends Endpoint<Params, Query, Body, Respons
300
302
  }
301
303
 
302
304
  if (patch.customer) {
303
- payment.customer = patchObject(payment.customer, patch.customer, { defaultValue: PaymentCustomer.create({}) });
305
+ // payment.customer = patchObject(payment.customer, patch.customer, { getDefaultValue: () => PaymentCustomer.create({}) });
304
306
  }
305
307
 
306
308
  const payingOrganizationId = patch.payingOrganizationId ?? patch.payingOrganization?.id ?? null;
@@ -1,4 +1,5 @@
1
- import { DecodedRequest, Endpoint, Request, Response } from '@simonbackx/simple-endpoints';
1
+ import type { DecodedRequest, Request} from '@simonbackx/simple-endpoints';
2
+ import { Endpoint, Response } from '@simonbackx/simple-endpoints';
2
3
  import { DetailedReceivableBalance, PaymentStatus, ReceivableBalanceType } from '@stamhoofd/structures';
3
4
 
4
5
  import { BalanceItem, BalanceItemPayment, CachedBalance, MemberUser, Payment } from '@stamhoofd/models';
@@ -1,5 +1,6 @@
1
- import { Decoder } from '@simonbackx/simple-encoding';
2
- import { DecodedRequest, Endpoint, Request, Response } from '@simonbackx/simple-endpoints';
1
+ import type { Decoder } from '@simonbackx/simple-encoding';
2
+ import type { DecodedRequest, Request} from '@simonbackx/simple-endpoints';
3
+ import { Endpoint, Response } from '@simonbackx/simple-endpoints';
3
4
  import { CountFilteredRequest, CountResponse } from '@stamhoofd/structures';
4
5
 
5
6
  import { Context } from '../../../../helpers/Context.js';
@@ -1,9 +1,11 @@
1
- import { Decoder } from '@simonbackx/simple-encoding';
2
- import { DecodedRequest, Endpoint, Request, Response } from '@simonbackx/simple-endpoints';
1
+ import type { Decoder } from '@simonbackx/simple-encoding';
2
+ import type { DecodedRequest, Request} from '@simonbackx/simple-endpoints';
3
+ import { Endpoint, Response } from '@simonbackx/simple-endpoints';
3
4
  import { SimpleError } from '@simonbackx/simple-errors';
4
5
  import { CachedBalance } from '@stamhoofd/models';
5
6
  import { applySQLSorter, compileToSQLFilter } from '@stamhoofd/sql';
6
- import { assertSort, CountFilteredRequest, DetailedReceivableBalance, getSortFilter, LimitedFilteredRequest, PaginatedResponse, ReceivableBalance as ReceivableBalanceStruct, StamhoofdFilter } from '@stamhoofd/structures';
7
+ import type { CountFilteredRequest, DetailedReceivableBalance, ReceivableBalance as ReceivableBalanceStruct, StamhoofdFilter } from '@stamhoofd/structures';
8
+ import { assertSort, getSortFilter, LimitedFilteredRequest, PaginatedResponse } from '@stamhoofd/structures';
7
9
 
8
10
  import { AuthenticatedStructures } from '../../../../helpers/AuthenticatedStructures.js';
9
11
  import { Context } from '../../../../helpers/Context.js';
@@ -1,5 +1,6 @@
1
1
  import { Request } from '@simonbackx/simple-endpoints';
2
- import { GroupFactory, Organization, OrganizationFactory, OrganizationRegistrationPeriodFactory, RegistrationPeriod, RegistrationPeriodFactory, Token, UserFactory } from '@stamhoofd/models';
2
+ import type { Organization, RegistrationPeriod} from '@stamhoofd/models';
3
+ import { GroupFactory, OrganizationFactory, OrganizationRegistrationPeriodFactory, RegistrationPeriodFactory, Token, UserFactory } from '@stamhoofd/models';
3
4
  import { GroupType, LimitedFilteredRequest, PermissionLevel, Permissions } from '@stamhoofd/structures';
4
5
  import { testServer } from '../../../../../tests/helpers/TestServer.js';
5
6
  import { GetOrganizationRegistrationPeriodsEndpoint } from './GetOrganizationRegistrationPeriodsEndpoint.js';
@@ -1,10 +1,13 @@
1
- import { DecodedRequest, Endpoint, Request, Response } from '@simonbackx/simple-endpoints';
2
- import { assertSort, CountFilteredRequest, getSortFilter, LimitedFilteredRequest, OrganizationRegistrationPeriod as OrganizationRegistrationPeriodStruct, PaginatedResponse, StamhoofdFilter } from '@stamhoofd/structures';
1
+ import type { DecodedRequest, Request} from '@simonbackx/simple-endpoints';
2
+ import { Endpoint, Response } from '@simonbackx/simple-endpoints';
3
+ import type { CountFilteredRequest, OrganizationRegistrationPeriod as OrganizationRegistrationPeriodStruct, StamhoofdFilter } from '@stamhoofd/structures';
4
+ import { assertSort, getSortFilter, LimitedFilteredRequest, PaginatedResponse } from '@stamhoofd/structures';
3
5
 
4
- import { Decoder } from '@simonbackx/simple-encoding';
6
+ import type { Decoder } from '@simonbackx/simple-encoding';
5
7
  import { SimpleError } from '@simonbackx/simple-errors';
6
8
  import { OrganizationRegistrationPeriod } from '@stamhoofd/models';
7
- import { applySQLSorter, compileToSQLFilter, SQLFilterDefinitions, SQLSortDefinitions } from '@stamhoofd/sql';
9
+ import type { SQLFilterDefinitions, SQLSortDefinitions } from '@stamhoofd/sql';
10
+ import { applySQLSorter, compileToSQLFilter } from '@stamhoofd/sql';
8
11
  import { AuthenticatedStructures } from '../../../../helpers/AuthenticatedStructures.js';
9
12
  import { Context } from '../../../../helpers/Context.js';
10
13
  import { organizationRegistrationPeriodFilterCompilers } from '../../../../sql-filters/organization-registration-periods.js';
@@ -115,7 +118,7 @@ export class GetOrganizationRegistrationPeriodsEndpoint extends Endpoint<Params,
115
118
  code: 'client_update_required',
116
119
  statusCode: 400,
117
120
  message: 'Er is een noodzakelijke update beschikbaar. Herlaad de pagina en wis indien nodig de cache van jouw browser.',
118
- human: $t(`adb0e7c8-aed7-43f5-bfcc-a350f03aaabe`),
121
+ human: $t(`%G8`),
119
122
  });
120
123
  }
121
124
 
@@ -1,9 +1,11 @@
1
1
  import { Request } from '@simonbackx/simple-endpoints';
2
- import { GroupFactory, MemberFactory, Organization, OrganizationFactory, OrganizationRegistrationPeriod, OrganizationRegistrationPeriodFactory, Registration, RegistrationFactory, RegistrationPeriod, RegistrationPeriodFactory, Token, UserFactory } from '@stamhoofd/models';
2
+ import type { Organization, OrganizationRegistrationPeriod, RegistrationPeriod} from '@stamhoofd/models';
3
+ import { GroupFactory, MemberFactory, OrganizationFactory, OrganizationRegistrationPeriodFactory, Registration, RegistrationFactory, RegistrationPeriodFactory, Token, UserFactory } from '@stamhoofd/models';
3
4
  import { Group, GroupType, OrganizationRegistrationPeriod as OrganizationRegistrationPeriodStruct, PermissionLevel, Permissions, PermissionsResourceType, ResourcePermissions, Version } from '@stamhoofd/structures';
4
5
  import { PatchOrganizationRegistrationPeriodsEndpoint } from './PatchOrganizationRegistrationPeriodsEndpoint.js';
5
6
 
6
- import { PatchableArray, PatchableArrayAutoEncoder } from '@simonbackx/simple-encoding';
7
+ import type { PatchableArrayAutoEncoder } from '@simonbackx/simple-encoding';
8
+ import { PatchableArray } from '@simonbackx/simple-encoding';
7
9
 
8
10
  import { testServer } from '../../../../../tests/helpers/TestServer.js';
9
11
  import { STExpect, TestUtils } from '@stamhoofd/test-utils';
@@ -1,8 +1,10 @@
1
1
  import { Request } from '@simonbackx/simple-endpoints';
2
- import { GroupFactory, Organization, OrganizationFactory, OrganizationRegistrationPeriod, OrganizationRegistrationPeriodFactory, RegistrationPeriodFactory, Token, UserFactory } from '@stamhoofd/models';
2
+ import type { Organization} from '@stamhoofd/models';
3
+ import { GroupFactory, OrganizationFactory, OrganizationRegistrationPeriod, OrganizationRegistrationPeriodFactory, RegistrationPeriodFactory, Token, UserFactory } from '@stamhoofd/models';
3
4
  import { GroupSettings, Group as GroupStruct, OrganizationRegistrationPeriod as OrganizationRegistrationPeriodStruct, PermissionLevel, Permissions, Version } from '@stamhoofd/structures';
4
5
 
5
- import { PatchableArray, PatchableArrayAutoEncoder } from '@simonbackx/simple-encoding';
6
+ import type { PatchableArrayAutoEncoder } from '@simonbackx/simple-encoding';
7
+ import { PatchableArray } from '@simonbackx/simple-encoding';
6
8
  import { STExpect, TestUtils } from '@stamhoofd/test-utils';
7
9
  import { testServer } from '../../../../../tests/helpers/TestServer.js';
8
10
  import { PatchOrganizationRegistrationPeriodsEndpoint } from './PatchOrganizationRegistrationPeriodsEndpoint.js';
@@ -1,9 +1,12 @@
1
- import { DecodedRequest, Endpoint, Request, Response } from '@simonbackx/simple-endpoints';
1
+ import type { DecodedRequest, Request} from '@simonbackx/simple-endpoints';
2
+ import { Endpoint, Response } from '@simonbackx/simple-endpoints';
2
3
  import { GroupPrivateSettings, Group as GroupStruct, GroupType, OrganizationRegistrationPeriod as OrganizationRegistrationPeriodStruct, PermissionLevel, PermissionsResourceType, ResourcePermissions, Version } from '@stamhoofd/structures';
3
4
 
4
- import { AutoEncoderPatchType, Decoder, PatchableArrayAutoEncoder, PatchableArrayDecoder, StringDecoder } from '@simonbackx/simple-encoding';
5
+ import type { AutoEncoderPatchType, Decoder, PatchableArrayAutoEncoder} from '@simonbackx/simple-encoding';
6
+ import { PatchableArrayDecoder, StringDecoder } from '@simonbackx/simple-encoding';
5
7
  import { SimpleError } from '@simonbackx/simple-errors';
6
- import { Event, Group, Organization, OrganizationRegistrationPeriod, Platform, Registration, RegistrationPeriod } from '@stamhoofd/models';
8
+ import type { Organization} from '@stamhoofd/models';
9
+ import { Event, Group, OrganizationRegistrationPeriod, Platform, Registration, RegistrationPeriod } from '@stamhoofd/models';
7
10
  import { SQL } from '@stamhoofd/sql';
8
11
  import { AuthenticatedStructures } from '../../../../helpers/AuthenticatedStructures.js';
9
12
  import { Context } from '../../../../helpers/Context.js';
@@ -60,7 +63,7 @@ export class PatchOrganizationRegistrationPeriodsEndpoint extends Endpoint<Param
60
63
  throw new SimpleError({
61
64
  code: 'not_found',
62
65
  message: 'Period not found',
63
- human: $t('347463a0-1e9a-40fe-996c-d77ba13bc05b'),
66
+ human: $t('%15j'),
64
67
  statusCode: 404,
65
68
  });
66
69
  }
@@ -71,7 +74,7 @@ export class PatchOrganizationRegistrationPeriodsEndpoint extends Endpoint<Param
71
74
  throw new SimpleError({
72
75
  code: 'not_found',
73
76
  message: 'Period not found',
74
- human: $t('347463a0-1e9a-40fe-996c-d77ba13bc05b'),
77
+ human: $t('%15j'),
75
78
  statusCode: 404,
76
79
  });
77
80
  }
@@ -80,7 +83,7 @@ export class PatchOrganizationRegistrationPeriodsEndpoint extends Endpoint<Param
80
83
  throw new SimpleError({
81
84
  code: 'locked_period',
82
85
  message: 'This period is locked',
83
- human: $t(`cc658db0-ee90-40fc-8a8c-1074a4f1f2f2`, { '2000-2001': period.getStructure().nameShort }),
86
+ human: $t(`%15m`, { '2000-2001': period.getStructure().nameShort }),
84
87
  });
85
88
  }
86
89
 
@@ -125,7 +128,7 @@ export class PatchOrganizationRegistrationPeriodsEndpoint extends Endpoint<Param
125
128
  }
126
129
 
127
130
  if (!await Context.auth.canCreateGroupInCategory(organization.id, category)) {
128
- throw Context.auth.error($t(`cdee3a74-4c03-46bc-ade1-7b8275a85400`));
131
+ throw Context.auth.error($t(`%Ez`));
129
132
  }
130
133
 
131
134
  // Only process puts
@@ -149,7 +152,7 @@ export class PatchOrganizationRegistrationPeriodsEndpoint extends Endpoint<Param
149
152
  code: 'invalid_field',
150
153
  field: 'categories',
151
154
  message: 'Cannot have groups and categories combined',
152
- human: $t(`c3834052-ea84-4d95-bc67-194e233cb11a`),
155
+ human: $t(`%F0`),
153
156
  });
154
157
  }
155
158
  }
@@ -170,7 +173,7 @@ export class PatchOrganizationRegistrationPeriodsEndpoint extends Endpoint<Param
170
173
  const isDeleted = refCountAfter < refCountBefore;
171
174
 
172
175
  if (isDeleted) {
173
- throw Context.auth.error($t(`55ddf8ff-ffcf-4577-bcbf-78c82637f245`));
176
+ throw Context.auth.error($t(`%F1`));
174
177
  }
175
178
  }
176
179
 
@@ -178,11 +181,11 @@ export class PatchOrganizationRegistrationPeriodsEndpoint extends Endpoint<Param
178
181
 
179
182
  if (!categoryAfter) {
180
183
  if (locked) {
181
- throw Context.auth.error($t(`55ddf8ff-ffcf-4577-bcbf-78c82637f245`));
184
+ throw Context.auth.error($t(`%F1`));
182
185
  }
183
186
  }
184
187
  else if (locked !== categoryAfter.settings.locked) {
185
- throw Context.auth.error($t(`a8982f4f-0c87-4f22-8f43-33ca26b73fc4`));
188
+ throw Context.auth.error($t(`%F2`));
186
189
  }
187
190
 
188
191
  if (!locked || !categoryAfter) {
@@ -193,7 +196,7 @@ export class PatchOrganizationRegistrationPeriodsEndpoint extends Endpoint<Param
193
196
  const settingsAfter = categoryAfter.settings;
194
197
 
195
198
  if (settingsBefore.name !== settingsAfter.name) {
196
- throw Context.auth.error($t(`2529c09e-f582-486a-b3eb-a8b96d8efa26`));
199
+ throw Context.auth.error($t(`%F3`));
197
200
  }
198
201
  }
199
202
  }
@@ -219,7 +222,7 @@ export class PatchOrganizationRegistrationPeriodsEndpoint extends Endpoint<Param
219
222
  throw new SimpleError({
220
223
  code: 'invalid_group_type',
221
224
  message: 'Cannot create groups for events via this endpoint',
222
- human: $t(`40dde58e-47fb-4adb-971a-537b16c479d5`),
225
+ human: $t(`%1HF`),
223
226
  });
224
227
  }
225
228
 
@@ -272,7 +275,7 @@ export class PatchOrganizationRegistrationPeriodsEndpoint extends Endpoint<Param
272
275
  throw new SimpleError({
273
276
  code: 'invalid_default_age_group',
274
277
  message: 'Invalid default age group',
275
- human: $t(`d81fc0f4-14e5-499c-9749-dd8941cdeb45`),
278
+ human: $t(`%F4`),
276
279
  statusCode: 400,
277
280
  });
278
281
  }
@@ -280,7 +283,7 @@ export class PatchOrganizationRegistrationPeriodsEndpoint extends Endpoint<Param
280
283
  throw new SimpleError({
281
284
  code: 'invalid_default_age_group',
282
285
  message: 'Invalid default age group',
283
- human: $t(`79672bcc-aa78-4d1d-ab82-f7c3c01ab4ff`),
286
+ human: $t(`%F5`),
284
287
  statusCode: 400,
285
288
  });
286
289
  }
@@ -292,7 +295,7 @@ export class PatchOrganizationRegistrationPeriodsEndpoint extends Endpoint<Param
292
295
  throw new SimpleError({
293
296
  code: 'not_found',
294
297
  message: 'Period not found',
295
- human: $t('347463a0-1e9a-40fe-996c-d77ba13bc05b'),
298
+ human: $t('%15j'),
296
299
  statusCode: 404,
297
300
  });
298
301
  }
@@ -309,7 +312,7 @@ export class PatchOrganizationRegistrationPeriodsEndpoint extends Endpoint<Param
309
312
  throw new SimpleError({
310
313
  code: 'locked_period',
311
314
  message: 'Period is locked',
312
- human: $t(`cc658db0-ee90-40fc-8a8c-1074a4f1f2f2`, { '2000-2001': period.getStructure().nameShort }),
315
+ human: $t(`%15m`, { '2000-2001': period.getStructure().nameShort }),
313
316
  });
314
317
  }
315
318
 
@@ -318,7 +321,7 @@ export class PatchOrganizationRegistrationPeriodsEndpoint extends Endpoint<Param
318
321
  throw new SimpleError({
319
322
  code: 'invalid_field',
320
323
  message: 'Period start date is too far in the future',
321
- human: $t('2655c006-55af-47e6-959c-16acdb1917dc'),
324
+ human: $t('%15k'),
322
325
  field: 'period',
323
326
  });
324
327
  }
@@ -328,7 +331,7 @@ export class PatchOrganizationRegistrationPeriodsEndpoint extends Endpoint<Param
328
331
  throw new SimpleError({
329
332
  code: 'invalid_field',
330
333
  message: 'Period has ended',
331
- human: $t('44ff6618-ecbf-408b-9cc1-b1479e8ba8a2'),
334
+ human: $t('%15l'),
332
335
  field: 'period',
333
336
  });
334
337
  }
@@ -363,7 +366,7 @@ export class PatchOrganizationRegistrationPeriodsEndpoint extends Endpoint<Param
363
366
  static async deleteGroup(id: string) {
364
367
  const model = await Group.getByID(id);
365
368
  if (!model || !await Context.auth.canAccessGroup(model, PermissionLevel.Full)) {
366
- throw Context.auth.error($t(`ab05b3fe-fb52-49d7-a7d5-2d3bcc6dde3e`));
369
+ throw Context.auth.error($t(`%F6`));
367
370
  }
368
371
 
369
372
  model.deletedAt = new Date();
@@ -382,7 +385,7 @@ export class PatchOrganizationRegistrationPeriodsEndpoint extends Endpoint<Param
382
385
  const model = await Group.getByID(struct.id);
383
386
 
384
387
  if (!model || !await Context.auth.canAccessGroup(model, PermissionLevel.Full)) {
385
- throw Context.auth.error($t(`0d382103-4a15-4f12-8e3d-feb4d184639d`));
388
+ throw Context.auth.error($t(`%F7`));
386
389
  }
387
390
 
388
391
  if (struct.settings) {
@@ -401,7 +404,7 @@ export class PatchOrganizationRegistrationPeriodsEndpoint extends Endpoint<Param
401
404
  throw new SimpleError({
402
405
  code: 'missing_permissions',
403
406
  message: 'You cannot restrict your own permissions',
404
- human: $t(`8c220808-51af-4ea3-a941-9e9e39cd8d20`),
407
+ human: $t(`%F8`),
405
408
  });
406
409
  }
407
410
  }
@@ -440,7 +443,7 @@ export class PatchOrganizationRegistrationPeriodsEndpoint extends Endpoint<Param
440
443
  throw new SimpleError({
441
444
  code: 'locked_period',
442
445
  message: 'This period is locked',
443
- human: Context.i18n.$t('f544b972-416c-471d-8836-d7f3b16f947d'),
446
+ human: Context.i18n.$t('%AW'),
444
447
  });
445
448
  }
446
449
  }
@@ -478,7 +481,7 @@ export class PatchOrganizationRegistrationPeriodsEndpoint extends Endpoint<Param
478
481
  throw new SimpleError({
479
482
  code: 'locked_period',
480
483
  message: 'This period is locked',
481
- human: $t('e115a9d1-11a6-42b9-a781-c6ab9d8a4b9c'),
484
+ human: $t('%1HS'),
482
485
  });
483
486
  }
484
487
  }
@@ -536,7 +539,7 @@ export class PatchOrganizationRegistrationPeriodsEndpoint extends Endpoint<Param
536
539
  code: 'invalid_field',
537
540
  field: 'periodId',
538
541
  message: 'Group has waiting list with other groups in the current period',
539
- human: $t('753684e1-94aa-4663-a81c-9656a51283ae'),
542
+ human: $t('%1HT'),
540
543
  });
541
544
  }
542
545
  }
@@ -591,7 +594,7 @@ export class PatchOrganizationRegistrationPeriodsEndpoint extends Endpoint<Param
591
594
  code: 'invalid_field',
592
595
  field: 'waitingList',
593
596
  message: 'Waiting list group is already used in another period',
594
- human: $t(`b906c293-2afa-4ebe-9b33-2d64ab46da34`),
597
+ human: $t(`%F9`),
595
598
  });
596
599
  }
597
600
 
@@ -658,7 +661,7 @@ export class PatchOrganizationRegistrationPeriodsEndpoint extends Endpoint<Param
658
661
 
659
662
  if (struct.type !== GroupType.EventRegistration && !allowedIds.includes(struct.id)) {
660
663
  if (!await Context.auth.hasFullAccess(organizationId)) {
661
- throw Context.auth.error($t(`153a7443-e2d9-4126-8e10-089b54964fb8`));
664
+ throw Context.auth.error($t(`%FA`));
662
665
  }
663
666
  }
664
667
  else {
@@ -669,7 +672,7 @@ export class PatchOrganizationRegistrationPeriodsEndpoint extends Endpoint<Param
669
672
  throw new SimpleError({
670
673
  code: 'invalid_period',
671
674
  message: 'Period is locked',
672
- human: Context.i18n.$t('f544b972-416c-471d-8836-d7f3b16f947d'),
675
+ human: Context.i18n.$t('%AW'),
673
676
  });
674
677
  }
675
678
 
@@ -730,7 +733,7 @@ export class PatchOrganizationRegistrationPeriodsEndpoint extends Endpoint<Param
730
733
  throw new SimpleError({
731
734
  code: 'missing_permissions',
732
735
  message: 'You cannot restrict your own permissions',
733
- human: $t(`4f4e52b6-288d-4893-a82b-15be8d07acbc`),
736
+ human: $t(`%FB`),
734
737
  });
735
738
  }
736
739
  }
@@ -1,7 +1,10 @@
1
- import { DecodedRequest, Endpoint, Request, Response } from '@simonbackx/simple-endpoints';
2
- import { OrganizationRegistrationPeriod as OrganizationRegistrationPeriodStruct, SetupStepType } from '@stamhoofd/structures';
1
+ import type { DecodedRequest, Request} from '@simonbackx/simple-endpoints';
2
+ import { Endpoint, Response } from '@simonbackx/simple-endpoints';
3
+ import type { OrganizationRegistrationPeriod as OrganizationRegistrationPeriodStruct} from '@stamhoofd/structures';
4
+ import { SetupStepType } from '@stamhoofd/structures';
3
5
 
4
- import { AutoEncoder, BooleanDecoder, Decoder, EnumDecoder, field } from '@simonbackx/simple-encoding';
6
+ import type { Decoder} from '@simonbackx/simple-encoding';
7
+ import { AutoEncoder, BooleanDecoder, EnumDecoder, field } from '@simonbackx/simple-encoding';
5
8
  import { SimpleError } from '@simonbackx/simple-errors';
6
9
  import { OrganizationRegistrationPeriod } from '@stamhoofd/models';
7
10
  import { AuthenticatedStructures } from '../../../../helpers/AuthenticatedStructures.js';
@@ -1,8 +1,9 @@
1
- import { DecodedRequest, Endpoint, Request, Response } from '@simonbackx/simple-endpoints';
1
+ import type { DecodedRequest, Request} from '@simonbackx/simple-endpoints';
2
+ import { Endpoint, Response } from '@simonbackx/simple-endpoints';
2
3
  import { SimpleError } from '@simonbackx/simple-errors';
3
4
  import { StripeAccount } from '@stamhoofd/models';
4
5
  import { AuditLogType, PermissionLevel, StripeAccount as StripeAccountStruct } from '@stamhoofd/structures';
5
- import Stripe from 'stripe';
6
+ import type Stripe from 'stripe';
6
7
 
7
8
  import { Context } from '../../../../helpers/Context.js';
8
9
  import { StripeHelper } from '../../../../helpers/StripeHelper.js';
@@ -1,4 +1,5 @@
1
- import { DecodedRequest, Endpoint, Request, Response } from '@simonbackx/simple-endpoints';
1
+ import type { DecodedRequest, Request} from '@simonbackx/simple-endpoints';
2
+ import { Endpoint, Response } from '@simonbackx/simple-endpoints';
2
3
  import { StripeAccount } from '@stamhoofd/models';
3
4
  import { AuditLogType, PermissionLevel } from '@stamhoofd/structures';
4
5
 
@@ -39,7 +40,7 @@ export class DeleteStripeAccountEndpoint extends Endpoint<Params, Query, Body, R
39
40
  // Search account in database
40
41
  const model = await StripeAccount.getByID(request.params.id);
41
42
  if (!model || model.organizationId !== organization.id || model.status !== 'active') {
42
- throw Context.auth.notFoundOrNoAccess($t(`e5f6d64c-b3fe-4c8a-a711-ebdb14098c98`));
43
+ throw Context.auth.notFoundOrNoAccess($t(`%FC`));
43
44
  }
44
45
 
45
46
  if (STAMHOOFD.STRIPE_ACCOUNT_ID && model.accountId === STAMHOOFD.STRIPE_ACCOUNT_ID) {
@@ -1,5 +1,7 @@
1
- import { AutoEncoder, Decoder, field, StringDecoder } from '@simonbackx/simple-encoding';
2
- import { DecodedRequest, Endpoint, Request, Response } from '@simonbackx/simple-endpoints';
1
+ import type { Decoder} from '@simonbackx/simple-encoding';
2
+ import { AutoEncoder, field, StringDecoder } from '@simonbackx/simple-encoding';
3
+ import type { DecodedRequest, Request} from '@simonbackx/simple-endpoints';
4
+ import { Endpoint, Response } from '@simonbackx/simple-endpoints';
3
5
  import { SimpleError } from '@simonbackx/simple-errors';
4
6
  import { StripeAccount } from '@stamhoofd/models';
5
7
  import { PermissionLevel } from '@stamhoofd/structures';
@@ -57,7 +59,7 @@ export class GetStripeAccountLinkEndpoint extends Endpoint<Params, Query, Body,
57
59
  // Search account in database
58
60
  const model = await StripeAccount.getByID(request.body.accountId);
59
61
  if (!model || model.organizationId !== organization.id || model.status !== 'active') {
60
- throw Context.auth.notFoundOrNoAccess($t(`e5f6d64c-b3fe-4c8a-a711-ebdb14098c98`));
62
+ throw Context.auth.notFoundOrNoAccess($t(`%FC`));
61
63
  }
62
64
 
63
65
  // Get account
@@ -1,4 +1,5 @@
1
- import { DecodedRequest, Endpoint, Request, Response } from '@simonbackx/simple-endpoints';
1
+ import type { DecodedRequest, Request} from '@simonbackx/simple-endpoints';
2
+ import { Endpoint, Response } from '@simonbackx/simple-endpoints';
2
3
  import { StripeAccount } from '@stamhoofd/models';
3
4
  import { PermissionLevel, StripeAccount as StripeAccountStruct } from '@stamhoofd/structures';
4
5
 
@@ -1,5 +1,7 @@
1
- import { AutoEncoder, Decoder, field, StringDecoder } from '@simonbackx/simple-encoding';
2
- import { DecodedRequest, Endpoint, Request, Response } from '@simonbackx/simple-endpoints';
1
+ import type { Decoder} from '@simonbackx/simple-encoding';
2
+ import { AutoEncoder, field, StringDecoder } from '@simonbackx/simple-encoding';
3
+ import type { DecodedRequest, Request} from '@simonbackx/simple-endpoints';
4
+ import { Endpoint, Response } from '@simonbackx/simple-endpoints';
3
5
  import { SimpleError } from '@simonbackx/simple-errors';
4
6
  import { StripeAccount, Token } from '@stamhoofd/models';
5
7
  import { PermissionLevel } from '@stamhoofd/structures';
@@ -53,7 +55,7 @@ export class GetStripeLoginLinkEndpoint extends Endpoint<Params, Query, Body, Re
53
55
  if (!model || model.organizationId !== organization.id || model.status !== 'active') {
54
56
  throw new SimpleError({
55
57
  code: 'not_found',
56
- message: $t(`e5f6d64c-b3fe-4c8a-a711-ebdb14098c98`),
58
+ message: $t(`%FC`),
57
59
  statusCode: 400,
58
60
  });
59
61
  }
@@ -1,4 +1,5 @@
1
- import { DecodedRequest, Endpoint, Request, Response } from '@simonbackx/simple-endpoints';
1
+ import type { DecodedRequest, Request} from '@simonbackx/simple-endpoints';
2
+ import { Endpoint, Response } from '@simonbackx/simple-endpoints';
2
3
  import { StripeAccount } from '@stamhoofd/models';
3
4
  import { AuditLogSource, PermissionLevel, StripeAccount as StripeAccountStruct } from '@stamhoofd/structures';
4
5
 
@@ -38,7 +39,7 @@ export class UpdateStripeAccountEndpoint extends Endpoint<Params, Query, Body, R
38
39
  // Search account in database
39
40
  const model = await StripeAccount.getByID(request.params.id);
40
41
  if (!model || model.organizationId !== organization.id) {
41
- throw Context.auth.notFoundOrNoAccess($t(`e5f6d64c-b3fe-4c8a-a711-ebdb14098c98`));
42
+ throw Context.auth.notFoundOrNoAccess($t(`%FC`));
42
43
  }
43
44
 
44
45
  // Get account
@@ -1,5 +1,6 @@
1
- import { Decoder } from '@simonbackx/simple-encoding';
2
- import { DecodedRequest, Endpoint, Request, Response } from '@simonbackx/simple-endpoints';
1
+ import type { Decoder } from '@simonbackx/simple-encoding';
2
+ import type { DecodedRequest, Request} from '@simonbackx/simple-endpoints';
3
+ import { Endpoint, Response } from '@simonbackx/simple-endpoints';
3
4
  import { SimpleError } from '@simonbackx/simple-errors';
4
5
  import { Token, User } from '@stamhoofd/models';
5
6
  import { ApiUser, ApiUserWithToken, UserMeta, UserPermissions } from '@stamhoofd/structures';
@@ -61,7 +62,7 @@ export class CreateApiUserEndpoint extends Endpoint<Params, Query, Body, Respons
61
62
  const rateLimits = request.body.meta.rateLimits;
62
63
  if (rateLimits) {
63
64
  if (!Context.auth.hasPlatformFullAccess()) {
64
- throw Context.auth.error($t('370932fc-6614-44be-bb8f-ff921305fadd'));
65
+ throw Context.auth.error($t('%FD'));
65
66
  }
66
67
 
67
68
  admin.meta = admin.meta ?? UserMeta.create({});
@@ -1,4 +1,5 @@
1
- import { DecodedRequest, Endpoint, Request, Response } from '@simonbackx/simple-endpoints';
1
+ import type { DecodedRequest, Request} from '@simonbackx/simple-endpoints';
2
+ import { Endpoint, Response } from '@simonbackx/simple-endpoints';
2
3
  import { SimpleError } from '@simonbackx/simple-errors';
3
4
  import { User } from '@stamhoofd/models';
4
5
 
@@ -41,7 +42,7 @@ export class DeleteUserEndpoint extends Endpoint<Params, Query, Body, ResponseBo
41
42
  if (user.id == request.params.id) {
42
43
  throw new SimpleError({
43
44
  code: 'permission_denied',
44
- message: $t(`253f8a6e-bef8-4a3a-8a7c-2580d8bad49c`),
45
+ message: $t(`%FE`),
45
46
  });
46
47
  }
47
48
 
@@ -49,7 +50,7 @@ export class DeleteUserEndpoint extends Endpoint<Params, Query, Body, ResponseBo
49
50
  if (!editUser || !Context.auth.checkScope(editUser.organizationId)) {
50
51
  throw new SimpleError({
51
52
  code: 'permission_denied',
52
- message: $t(`dd63dfe1-1a13-476b-b729-10b9df944e88`),
53
+ message: $t(`%FF`),
53
54
  });
54
55
  }
55
56