@webiny/api-core 0.0.0-unstable.e2758ee1cf → 0.0.0-unstable.e6f0dc8ca7

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 (487) hide show
  1. package/ApiCoreFeature.d.ts +5 -1
  2. package/ApiCoreFeature.js +6 -0
  3. package/ApiCoreFeature.js.map +1 -1
  4. package/createApiCore.d.ts +1 -1
  5. package/createApiCore.js +2 -3
  6. package/createApiCore.js.map +1 -1
  7. package/domain/security/ApiToken.d.ts +1 -0
  8. package/domain/security/ApiToken.js +1 -0
  9. package/domain/security/ApiToken.js.map +1 -1
  10. package/exports/api/build-params.d.ts +1 -0
  11. package/exports/api/build-params.js +1 -0
  12. package/exports/api/build-params.js.map +1 -1
  13. package/exports/api/event-publisher.d.ts +1 -0
  14. package/exports/api/event-publisher.js +1 -0
  15. package/exports/api/event-publisher.js.map +1 -1
  16. package/exports/api/key-value-store.d.ts +1 -0
  17. package/exports/api/key-value-store.js +1 -0
  18. package/exports/api/key-value-store.js.map +1 -1
  19. package/exports/api/logger.d.ts +1 -0
  20. package/exports/api/logger.js +1 -0
  21. package/exports/api/logger.js.map +1 -1
  22. package/exports/api/security/api-key.d.ts +3 -3
  23. package/exports/api/security/api-key.js +3 -3
  24. package/exports/api/security/api-key.js.map +1 -1
  25. package/exports/api/security/authentication.d.ts +1 -1
  26. package/exports/api/security/authentication.js +1 -1
  27. package/exports/api/security/authentication.js.map +1 -1
  28. package/exports/api/security/role.d.ts +3 -3
  29. package/exports/api/security/role.js +3 -3
  30. package/exports/api/security/role.js.map +1 -1
  31. package/exports/api/security/user.d.ts +3 -3
  32. package/exports/api/security/user.js +3 -3
  33. package/exports/api/security/user.js.map +1 -1
  34. package/exports/api/security.d.ts +6 -0
  35. package/exports/api/security.js +5 -0
  36. package/exports/api/security.js.map +1 -1
  37. package/exports/api/system.d.ts +1 -1
  38. package/exports/api/system.js +1 -1
  39. package/exports/api/system.js.map +1 -1
  40. package/exports/api/tenancy.d.ts +4 -4
  41. package/exports/api/tenancy.js +4 -4
  42. package/exports/api/tenancy.js.map +1 -1
  43. package/exports/api.d.ts +7 -0
  44. package/exports/api.js +8 -0
  45. package/exports/api.js.map +1 -0
  46. package/features/ai/Ai.d.ts +26 -0
  47. package/features/ai/Ai.js +133 -0
  48. package/features/ai/Ai.js.map +1 -0
  49. package/features/ai/AiSdkTools.d.ts +11 -0
  50. package/features/ai/AiSdkTools.js +25 -0
  51. package/features/ai/AiSdkTools.js.map +1 -0
  52. package/features/ai/AnthropicSdkFactory.d.ts +10 -0
  53. package/features/ai/AnthropicSdkFactory.js +71 -0
  54. package/features/ai/AnthropicSdkFactory.js.map +1 -0
  55. package/features/ai/OpenAiSdkFactory.d.ts +10 -0
  56. package/features/ai/OpenAiSdkFactory.js +187 -0
  57. package/features/ai/OpenAiSdkFactory.js.map +1 -0
  58. package/features/ai/abstractions.d.ts +92 -0
  59. package/features/ai/abstractions.js +35 -0
  60. package/features/ai/abstractions.js.map +1 -0
  61. package/features/ai/feature.d.ts +4 -0
  62. package/features/ai/feature.js +16 -0
  63. package/features/ai/feature.js.map +1 -0
  64. package/features/ai/index.d.ts +3 -0
  65. package/features/ai/index.js +4 -0
  66. package/features/ai/index.js.map +1 -0
  67. package/features/buildParams/abstractions.d.ts +2 -0
  68. package/features/buildParams/abstractions.js +2 -0
  69. package/features/buildParams/abstractions.js.map +1 -1
  70. package/features/buildParams/feature.d.ts +5 -1
  71. package/features/encryption/EncryptionService.d.ts +10 -0
  72. package/features/encryption/EncryptionService.js +58 -0
  73. package/features/encryption/EncryptionService.js.map +1 -0
  74. package/features/encryption/abstractions.d.ts +9 -0
  75. package/features/encryption/abstractions.js +5 -0
  76. package/features/encryption/abstractions.js.map +1 -0
  77. package/features/encryption/feature.d.ts +4 -0
  78. package/features/encryption/feature.js +10 -0
  79. package/features/encryption/feature.js.map +1 -0
  80. package/features/encryption/index.d.ts +1 -0
  81. package/features/encryption/index.js +3 -0
  82. package/features/encryption/index.js.map +1 -0
  83. package/features/eventPublisher/abstractions.d.ts +2 -0
  84. package/features/eventPublisher/abstractions.js +3 -0
  85. package/features/eventPublisher/abstractions.js.map +1 -1
  86. package/features/eventPublisher/feature.d.ts +5 -1
  87. package/features/featureFlags/feature.d.ts +5 -1
  88. package/features/keyValueStore/GlobalKeyValueStore.js +3 -1
  89. package/features/keyValueStore/GlobalKeyValueStore.js.map +1 -1
  90. package/features/keyValueStore/KeyValueStoreRepository.d.ts +2 -2
  91. package/features/keyValueStore/KeyValueStoreRepository.js +2 -2
  92. package/features/keyValueStore/KeyValueStoreRepository.js.map +1 -1
  93. package/features/keyValueStore/abstractions.d.ts +10 -2
  94. package/features/keyValueStore/abstractions.js +4 -0
  95. package/features/keyValueStore/abstractions.js.map +1 -1
  96. package/features/keyValueStore/feature.d.ts +4 -1
  97. package/features/keyValueStore/feature.js.map +1 -1
  98. package/features/logger/abstractions.d.ts +1 -0
  99. package/features/logger/abstractions.js +1 -0
  100. package/features/logger/abstractions.js.map +1 -1
  101. package/features/logger/feature.d.ts +4 -1
  102. package/features/masker/Masker.d.ts +8 -0
  103. package/features/masker/Masker.js +21 -0
  104. package/features/masker/Masker.js.map +1 -0
  105. package/features/masker/abstractions.d.ts +11 -0
  106. package/features/masker/abstractions.js +4 -0
  107. package/features/masker/abstractions.js.map +1 -0
  108. package/features/masker/feature.d.ts +4 -0
  109. package/features/masker/feature.js +10 -0
  110. package/features/masker/feature.js.map +1 -0
  111. package/features/masker/index.d.ts +1 -0
  112. package/features/masker/index.js +3 -0
  113. package/features/masker/index.js.map +1 -0
  114. package/features/security/IdentityContext/abstractions.d.ts +1 -0
  115. package/features/security/IdentityContext/abstractions.js +1 -0
  116. package/features/security/IdentityContext/abstractions.js.map +1 -1
  117. package/features/security/IdentityContext/feature.d.ts +4 -1
  118. package/features/security/SecurityFeature.d.ts +5 -1
  119. package/features/security/apiKeys/CreateApiKey/CreateApiKeyUseCase.js +1 -1
  120. package/features/security/apiKeys/CreateApiKey/CreateApiKeyUseCase.js.map +1 -1
  121. package/features/security/apiKeys/CreateApiKey/abstractions.d.ts +1 -0
  122. package/features/security/apiKeys/CreateApiKey/abstractions.js +1 -0
  123. package/features/security/apiKeys/CreateApiKey/abstractions.js.map +1 -1
  124. package/features/security/apiKeys/CreateApiKey/events.d.ts +6 -4
  125. package/features/security/apiKeys/CreateApiKey/events.js +8 -4
  126. package/features/security/apiKeys/CreateApiKey/events.js.map +1 -1
  127. package/features/security/apiKeys/CreateApiKey/feature.d.ts +4 -1
  128. package/features/security/apiKeys/DeleteApiKey/abstractions.d.ts +1 -0
  129. package/features/security/apiKeys/DeleteApiKey/abstractions.js +1 -0
  130. package/features/security/apiKeys/DeleteApiKey/abstractions.js.map +1 -1
  131. package/features/security/apiKeys/DeleteApiKey/events.d.ts +6 -4
  132. package/features/security/apiKeys/DeleteApiKey/events.js +8 -4
  133. package/features/security/apiKeys/DeleteApiKey/events.js.map +1 -1
  134. package/features/security/apiKeys/DeleteApiKey/feature.d.ts +4 -1
  135. package/features/security/apiKeys/GetApiKey/abstractions.d.ts +1 -0
  136. package/features/security/apiKeys/GetApiKey/abstractions.js +1 -0
  137. package/features/security/apiKeys/GetApiKey/abstractions.js.map +1 -1
  138. package/features/security/apiKeys/GetApiKey/feature.d.ts +4 -1
  139. package/features/security/apiKeys/GetApiKeyBySlug/abstractions.d.ts +1 -0
  140. package/features/security/apiKeys/GetApiKeyBySlug/abstractions.js +1 -0
  141. package/features/security/apiKeys/GetApiKeyBySlug/abstractions.js.map +1 -1
  142. package/features/security/apiKeys/GetApiKeyBySlug/feature.d.ts +4 -1
  143. package/features/security/apiKeys/GetApiKeyByToken/abstractions.d.ts +1 -0
  144. package/features/security/apiKeys/GetApiKeyByToken/abstractions.js +1 -0
  145. package/features/security/apiKeys/GetApiKeyByToken/abstractions.js.map +1 -1
  146. package/features/security/apiKeys/GetApiKeyByToken/feature.d.ts +4 -1
  147. package/features/security/apiKeys/ListApiKeys/ListApiKeysUseCase.js +1 -1
  148. package/features/security/apiKeys/ListApiKeys/ListApiKeysUseCase.js.map +1 -1
  149. package/features/security/apiKeys/ListApiKeys/abstractions.d.ts +1 -0
  150. package/features/security/apiKeys/ListApiKeys/abstractions.js +1 -0
  151. package/features/security/apiKeys/ListApiKeys/abstractions.js.map +1 -1
  152. package/features/security/apiKeys/ListApiKeys/feature.d.ts +4 -1
  153. package/features/security/apiKeys/UpdateApiKey/UpdateApiKeyUseCase.js +1 -1
  154. package/features/security/apiKeys/UpdateApiKey/UpdateApiKeyUseCase.js.map +1 -1
  155. package/features/security/apiKeys/UpdateApiKey/abstractions.d.ts +1 -0
  156. package/features/security/apiKeys/UpdateApiKey/abstractions.js +1 -0
  157. package/features/security/apiKeys/UpdateApiKey/abstractions.js.map +1 -1
  158. package/features/security/apiKeys/UpdateApiKey/events.d.ts +6 -4
  159. package/features/security/apiKeys/UpdateApiKey/events.js +8 -4
  160. package/features/security/apiKeys/UpdateApiKey/events.js.map +1 -1
  161. package/features/security/apiKeys/UpdateApiKey/feature.d.ts +4 -1
  162. package/features/security/apiKeys/feature.d.ts +4 -1
  163. package/features/security/apiKeys/shared/abstractions.d.ts +5 -2
  164. package/features/security/apiKeys/shared/abstractions.js +3 -0
  165. package/features/security/apiKeys/shared/abstractions.js.map +1 -1
  166. package/features/security/apiKeys/shared/schemas.d.ts +10 -71
  167. package/features/security/apiKeys/shared/schemas.js +4 -4
  168. package/features/security/apiKeys/shared/schemas.js.map +1 -1
  169. package/features/security/authentication/AuthenticationContext/SetIdTokenCookie.d.ts +2 -2
  170. package/features/security/authentication/AuthenticationContext/SetIdTokenCookie.js +2 -2
  171. package/features/security/authentication/AuthenticationContext/SetIdTokenCookie.js.map +1 -1
  172. package/features/security/authentication/AuthenticationContext/abstractions.d.ts +1 -0
  173. package/features/security/authentication/AuthenticationContext/abstractions.js +1 -0
  174. package/features/security/authentication/AuthenticationContext/abstractions.js.map +1 -1
  175. package/features/security/authentication/AuthenticationContext/events.d.ts +6 -4
  176. package/features/security/authentication/AuthenticationContext/events.js +8 -4
  177. package/features/security/authentication/AuthenticationContext/events.js.map +1 -1
  178. package/features/security/authentication/AuthenticationContext/feature.d.ts +4 -1
  179. package/features/security/authentication/Authenticator/abstractions.d.ts +1 -0
  180. package/features/security/authentication/Authenticator/abstractions.js +1 -0
  181. package/features/security/authentication/Authenticator/abstractions.js.map +1 -1
  182. package/features/security/authorization/AuthorizationContext/AuthorizationContext.d.ts +1 -0
  183. package/features/security/authorization/AuthorizationContext/AuthorizationContext.js +14 -2
  184. package/features/security/authorization/AuthorizationContext/AuthorizationContext.js.map +1 -1
  185. package/features/security/authorization/AuthorizationContext/abstractions.d.ts +2 -0
  186. package/features/security/authorization/AuthorizationContext/abstractions.js +2 -0
  187. package/features/security/authorization/AuthorizationContext/abstractions.js.map +1 -1
  188. package/features/security/authorization/AuthorizationContext/feature.d.ts +4 -1
  189. package/features/security/authorization/Authorizer/abstractions.d.ts +1 -0
  190. package/features/security/authorization/Authorizer/abstractions.js +1 -0
  191. package/features/security/authorization/Authorizer/abstractions.js.map +1 -1
  192. package/features/security/authorization/GroupsTeamsAuthorizer/feature.d.ts +4 -1
  193. package/features/security/login/abstractions.d.ts +3 -2
  194. package/features/security/login/abstractions.js +4 -2
  195. package/features/security/login/abstractions.js.map +1 -1
  196. package/features/security/permissions/createPermissionSchema.d.ts +2 -0
  197. package/features/security/permissions/createPermissionSchema.js +8 -0
  198. package/features/security/permissions/createPermissionSchema.js.map +1 -0
  199. package/features/security/permissions/createPermissions.d.ts +5 -5
  200. package/features/security/permissions/createPermissions.js +198 -188
  201. package/features/security/permissions/createPermissions.js.map +1 -1
  202. package/features/security/permissions/index.d.ts +2 -1
  203. package/features/security/permissions/index.js +2 -1
  204. package/features/security/permissions/index.js.map +1 -1
  205. package/features/security/roles/CreateRole/CreateRoleUseCase.d.ts +1 -3
  206. package/features/security/roles/CreateRole/CreateRoleUseCase.js +3 -7
  207. package/features/security/roles/CreateRole/CreateRoleUseCase.js.map +1 -1
  208. package/features/security/roles/CreateRole/abstractions.d.ts +1 -0
  209. package/features/security/roles/CreateRole/abstractions.js +1 -0
  210. package/features/security/roles/CreateRole/abstractions.js.map +1 -1
  211. package/features/security/roles/CreateRole/events.d.ts +6 -4
  212. package/features/security/roles/CreateRole/events.js +8 -4
  213. package/features/security/roles/CreateRole/events.js.map +1 -1
  214. package/features/security/roles/CreateRole/feature.d.ts +4 -1
  215. package/features/security/roles/CreateRole/schema.d.ts +2 -20
  216. package/features/security/roles/CreateRole/schema.js +2 -2
  217. package/features/security/roles/CreateRole/schema.js.map +1 -1
  218. package/features/security/roles/DeleteRole/abstractions.d.ts +1 -0
  219. package/features/security/roles/DeleteRole/abstractions.js +1 -0
  220. package/features/security/roles/DeleteRole/abstractions.js.map +1 -1
  221. package/features/security/roles/DeleteRole/events.d.ts +6 -4
  222. package/features/security/roles/DeleteRole/events.js +8 -4
  223. package/features/security/roles/DeleteRole/events.js.map +1 -1
  224. package/features/security/roles/DeleteRole/feature.d.ts +4 -1
  225. package/features/security/roles/GetRole/abstractions.d.ts +1 -0
  226. package/features/security/roles/GetRole/abstractions.js +1 -0
  227. package/features/security/roles/GetRole/abstractions.js.map +1 -1
  228. package/features/security/roles/GetRole/feature.d.ts +4 -1
  229. package/features/security/roles/ListRoles/abstractions.d.ts +1 -0
  230. package/features/security/roles/ListRoles/abstractions.js +1 -0
  231. package/features/security/roles/ListRoles/abstractions.js.map +1 -1
  232. package/features/security/roles/ListRoles/feature.d.ts +4 -1
  233. package/features/security/roles/UpdateRole/UpdateRoleUseCase.js +1 -1
  234. package/features/security/roles/UpdateRole/UpdateRoleUseCase.js.map +1 -1
  235. package/features/security/roles/UpdateRole/abstractions.d.ts +1 -0
  236. package/features/security/roles/UpdateRole/abstractions.js +1 -0
  237. package/features/security/roles/UpdateRole/abstractions.js.map +1 -1
  238. package/features/security/roles/UpdateRole/events.d.ts +6 -4
  239. package/features/security/roles/UpdateRole/events.js +8 -4
  240. package/features/security/roles/UpdateRole/events.js.map +1 -1
  241. package/features/security/roles/UpdateRole/feature.d.ts +4 -1
  242. package/features/security/roles/UpdateRole/schema.d.ts +2 -18
  243. package/features/security/roles/UpdateRole/schema.js +2 -2
  244. package/features/security/roles/UpdateRole/schema.js.map +1 -1
  245. package/features/security/roles/feature.d.ts +4 -1
  246. package/features/security/roles/feature.js +2 -0
  247. package/features/security/roles/feature.js.map +1 -1
  248. package/features/security/roles/shared/RoleProvider.d.ts +13 -0
  249. package/features/security/roles/shared/RoleProvider.js +29 -0
  250. package/features/security/roles/shared/RoleProvider.js.map +1 -0
  251. package/features/security/roles/shared/RolesRepository.d.ts +3 -1
  252. package/features/security/roles/shared/RolesRepository.js +19 -18
  253. package/features/security/roles/shared/RolesRepository.js.map +1 -1
  254. package/features/security/roles/shared/abstractions.d.ts +19 -0
  255. package/features/security/roles/shared/abstractions.js +3 -0
  256. package/features/security/roles/shared/abstractions.js.map +1 -1
  257. package/features/security/shared/abstractions.d.ts +5 -14
  258. package/features/security/shared/abstractions.js +3 -16
  259. package/features/security/shared/abstractions.js.map +1 -1
  260. package/features/security/teams/CreateTeam/CreateTeamUseCase.d.ts +1 -3
  261. package/features/security/teams/CreateTeam/CreateTeamUseCase.js +3 -7
  262. package/features/security/teams/CreateTeam/CreateTeamUseCase.js.map +1 -1
  263. package/features/security/teams/CreateTeam/abstractions.d.ts +1 -0
  264. package/features/security/teams/CreateTeam/abstractions.js +1 -0
  265. package/features/security/teams/CreateTeam/abstractions.js.map +1 -1
  266. package/features/security/teams/CreateTeam/events.d.ts +6 -4
  267. package/features/security/teams/CreateTeam/events.js +8 -4
  268. package/features/security/teams/CreateTeam/events.js.map +1 -1
  269. package/features/security/teams/CreateTeam/feature.d.ts +4 -1
  270. package/features/security/teams/CreateTeam/index.d.ts +1 -1
  271. package/features/security/teams/CreateTeam/index.js +1 -1
  272. package/features/security/teams/CreateTeam/index.js.map +1 -1
  273. package/features/security/teams/CreateTeam/schema.d.ts +2 -12
  274. package/features/security/teams/DeleteTeam/abstractions.d.ts +1 -0
  275. package/features/security/teams/DeleteTeam/abstractions.js +1 -0
  276. package/features/security/teams/DeleteTeam/abstractions.js.map +1 -1
  277. package/features/security/teams/DeleteTeam/events.d.ts +6 -4
  278. package/features/security/teams/DeleteTeam/events.js +8 -4
  279. package/features/security/teams/DeleteTeam/events.js.map +1 -1
  280. package/features/security/teams/DeleteTeam/feature.d.ts +4 -1
  281. package/features/security/teams/GetTeam/abstractions.d.ts +1 -0
  282. package/features/security/teams/GetTeam/abstractions.js +1 -0
  283. package/features/security/teams/GetTeam/abstractions.js.map +1 -1
  284. package/features/security/teams/GetTeam/feature.d.ts +4 -1
  285. package/features/security/teams/ListTeams/abstractions.d.ts +1 -0
  286. package/features/security/teams/ListTeams/abstractions.js +1 -0
  287. package/features/security/teams/ListTeams/abstractions.js.map +1 -1
  288. package/features/security/teams/ListTeams/feature.d.ts +4 -1
  289. package/features/security/teams/UpdateTeam/UpdateTeamUseCase.js +1 -1
  290. package/features/security/teams/UpdateTeam/UpdateTeamUseCase.js.map +1 -1
  291. package/features/security/teams/UpdateTeam/abstractions.d.ts +1 -0
  292. package/features/security/teams/UpdateTeam/abstractions.js +1 -0
  293. package/features/security/teams/UpdateTeam/abstractions.js.map +1 -1
  294. package/features/security/teams/UpdateTeam/events.d.ts +6 -4
  295. package/features/security/teams/UpdateTeam/events.js +8 -4
  296. package/features/security/teams/UpdateTeam/events.js.map +1 -1
  297. package/features/security/teams/UpdateTeam/feature.d.ts +4 -1
  298. package/features/security/teams/UpdateTeam/schema.d.ts +2 -10
  299. package/features/security/teams/feature.d.ts +4 -1
  300. package/features/security/teams/feature.js +6 -0
  301. package/features/security/teams/feature.js.map +1 -1
  302. package/features/security/teams/shared/TeamProvider.d.ts +13 -0
  303. package/features/security/teams/shared/TeamProvider.js +29 -0
  304. package/features/security/teams/shared/TeamProvider.js.map +1 -0
  305. package/features/security/teams/shared/TeamsRepository.js +20 -18
  306. package/features/security/teams/shared/TeamsRepository.js.map +1 -1
  307. package/features/security/teams/shared/abstractions.d.ts +18 -0
  308. package/features/security/teams/shared/abstractions.js +3 -0
  309. package/features/security/teams/shared/abstractions.js.map +1 -1
  310. package/features/security/teams/shared/decorators/TeamsRepositoryCachingDecorator.d.ts +17 -0
  311. package/features/security/teams/shared/decorators/TeamsRepositoryCachingDecorator.js +76 -0
  312. package/features/security/teams/shared/decorators/TeamsRepositoryCachingDecorator.js.map +1 -0
  313. package/features/security/utils/verifyJwtUsingJwk.d.ts +2 -4
  314. package/features/security/utils/verifyJwtUsingJwk.js +1 -1
  315. package/features/security/utils/verifyJwtUsingJwk.js.map +1 -1
  316. package/features/system/InstallSystem/abstractions.d.ts +4 -5
  317. package/features/system/InstallSystem/abstractions.js +3 -4
  318. package/features/system/InstallSystem/abstractions.js.map +1 -1
  319. package/features/system/InstallSystem/events.js +2 -2
  320. package/features/system/InstallSystem/events.js.map +1 -1
  321. package/features/system/InstallSystem/feature.d.ts +5 -1
  322. package/features/system/InstallSystem/index.d.ts +1 -1
  323. package/features/system/InstallSystem/index.js +1 -1
  324. package/features/system/InstallSystem/index.js.map +1 -1
  325. package/features/system/SystemFeature.d.ts +4 -1
  326. package/features/task/TaskController/abstractions.d.ts +1 -0
  327. package/features/task/TaskController/abstractions.js +1 -0
  328. package/features/task/TaskController/abstractions.js.map +1 -1
  329. package/features/task/TaskDefinition/abstractions.d.ts +7 -1
  330. package/features/task/TaskDefinition/abstractions.js +1 -0
  331. package/features/task/TaskDefinition/abstractions.js.map +1 -1
  332. package/features/task/TaskService/abstractions.d.ts +1 -0
  333. package/features/task/TaskService/abstractions.js +1 -0
  334. package/features/task/TaskService/abstractions.js.map +1 -1
  335. package/features/tenancy/CreateTenant/abstractions.d.ts +9 -7
  336. package/features/tenancy/CreateTenant/abstractions.js +7 -5
  337. package/features/tenancy/CreateTenant/abstractions.js.map +1 -1
  338. package/features/tenancy/CreateTenant/events.js +3 -3
  339. package/features/tenancy/CreateTenant/events.js.map +1 -1
  340. package/features/tenancy/CreateTenant/feature.d.ts +5 -1
  341. package/features/tenancy/CreateTenant/index.d.ts +1 -1
  342. package/features/tenancy/CreateTenant/index.js +1 -1
  343. package/features/tenancy/CreateTenant/index.js.map +1 -1
  344. package/features/tenancy/DeleteTenant/abstractions.d.ts +9 -4
  345. package/features/tenancy/DeleteTenant/abstractions.js +7 -2
  346. package/features/tenancy/DeleteTenant/abstractions.js.map +1 -1
  347. package/features/tenancy/DeleteTenant/events.js +3 -3
  348. package/features/tenancy/DeleteTenant/events.js.map +1 -1
  349. package/features/tenancy/DeleteTenant/feature.d.ts +5 -1
  350. package/features/tenancy/DeleteTenant/index.d.ts +1 -1
  351. package/features/tenancy/DeleteTenant/index.js +1 -1
  352. package/features/tenancy/DeleteTenant/index.js.map +1 -1
  353. package/features/tenancy/GetRootTenant/feature.d.ts +5 -1
  354. package/features/tenancy/GetTenantById/abstractions.d.ts +3 -0
  355. package/features/tenancy/GetTenantById/abstractions.js +3 -9
  356. package/features/tenancy/GetTenantById/abstractions.js.map +1 -1
  357. package/features/tenancy/GetTenantById/feature.d.ts +5 -1
  358. package/features/tenancy/InstallTenant/abstractions.d.ts +5 -11
  359. package/features/tenancy/InstallTenant/abstractions.js +4 -13
  360. package/features/tenancy/InstallTenant/abstractions.js.map +1 -1
  361. package/features/tenancy/InstallTenant/events.js +2 -2
  362. package/features/tenancy/InstallTenant/events.js.map +1 -1
  363. package/features/tenancy/InstallTenant/feature.d.ts +5 -1
  364. package/features/tenancy/InstallTenant/index.d.ts +1 -1
  365. package/features/tenancy/InstallTenant/index.js +1 -1
  366. package/features/tenancy/InstallTenant/index.js.map +1 -1
  367. package/features/tenancy/ListTenants/feature.d.ts +5 -1
  368. package/features/tenancy/TenancyFeature.d.ts +4 -1
  369. package/features/tenancy/TenancyFeature.js.map +1 -1
  370. package/features/tenancy/TenantContext/abstractions.d.ts +1 -0
  371. package/features/tenancy/TenantContext/abstractions.js +1 -0
  372. package/features/tenancy/TenantContext/abstractions.js.map +1 -1
  373. package/features/tenancy/TenantContext/feature.d.ts +4 -1
  374. package/features/tenancy/UpdateTenant/abstractions.d.ts +9 -4
  375. package/features/tenancy/UpdateTenant/abstractions.js +7 -2
  376. package/features/tenancy/UpdateTenant/abstractions.js.map +1 -1
  377. package/features/tenancy/UpdateTenant/events.js +3 -3
  378. package/features/tenancy/UpdateTenant/events.js.map +1 -1
  379. package/features/tenancy/UpdateTenant/feature.d.ts +5 -1
  380. package/features/tenancy/UpdateTenant/index.d.ts +1 -1
  381. package/features/tenancy/UpdateTenant/index.js +1 -1
  382. package/features/tenancy/UpdateTenant/index.js.map +1 -1
  383. package/features/users/AdminUsersFeature.d.ts +4 -1
  384. package/features/users/AdminUsersFeature.js.map +1 -1
  385. package/features/users/CreateUser/CreateUserUseCase.js +1 -1
  386. package/features/users/CreateUser/CreateUserUseCase.js.map +1 -1
  387. package/features/users/CreateUser/abstractions.d.ts +1 -0
  388. package/features/users/CreateUser/abstractions.js +1 -1
  389. package/features/users/CreateUser/abstractions.js.map +1 -1
  390. package/features/users/CreateUser/events.d.ts +6 -4
  391. package/features/users/CreateUser/events.js +8 -4
  392. package/features/users/CreateUser/events.js.map +1 -1
  393. package/features/users/CreateUser/feature.d.ts +4 -1
  394. package/features/users/CreateUser/schema.d.ts +4 -36
  395. package/features/users/DeleteUser/abstractions.d.ts +1 -0
  396. package/features/users/DeleteUser/abstractions.js +1 -1
  397. package/features/users/DeleteUser/abstractions.js.map +1 -1
  398. package/features/users/DeleteUser/events.d.ts +6 -4
  399. package/features/users/DeleteUser/events.js +8 -4
  400. package/features/users/DeleteUser/events.js.map +1 -1
  401. package/features/users/DeleteUser/feature.d.ts +4 -1
  402. package/features/users/ExternalIdpUserSync/ExternalIdpUserSyncHandler.d.ts +3 -3
  403. package/features/users/ExternalIdpUserSync/ExternalIdpUserSyncHandler.js +2 -2
  404. package/features/users/ExternalIdpUserSync/ExternalIdpUserSyncHandler.js.map +1 -1
  405. package/features/users/ExternalIdpUserSync/feature.d.ts +4 -1
  406. package/features/users/GetIdentityProfile/feature.d.ts +4 -1
  407. package/features/users/GetUser/abstractions.d.ts +1 -0
  408. package/features/users/GetUser/abstractions.js +1 -1
  409. package/features/users/GetUser/abstractions.js.map +1 -1
  410. package/features/users/GetUser/feature.d.ts +4 -1
  411. package/features/users/ListUserTeams/abstractions.d.ts +1 -0
  412. package/features/users/ListUserTeams/abstractions.js +1 -1
  413. package/features/users/ListUserTeams/abstractions.js.map +1 -1
  414. package/features/users/ListUserTeams/feature.d.ts +4 -1
  415. package/features/users/ListUsers/abstractions.d.ts +1 -0
  416. package/features/users/ListUsers/abstractions.js +1 -1
  417. package/features/users/ListUsers/abstractions.js.map +1 -1
  418. package/features/users/ListUsers/feature.d.ts +4 -1
  419. package/features/users/UpdateUser/UpdateUserUseCase.js +1 -1
  420. package/features/users/UpdateUser/UpdateUserUseCase.js.map +1 -1
  421. package/features/users/UpdateUser/abstractions.d.ts +1 -0
  422. package/features/users/UpdateUser/abstractions.js +1 -1
  423. package/features/users/UpdateUser/abstractions.js.map +1 -1
  424. package/features/users/UpdateUser/events.d.ts +6 -4
  425. package/features/users/UpdateUser/events.js +8 -4
  426. package/features/users/UpdateUser/events.js.map +1 -1
  427. package/features/users/UpdateUser/feature.d.ts +4 -1
  428. package/features/users/UpdateUser/schema.d.ts +4 -30
  429. package/features/users/shared/abstractions.d.ts +1 -0
  430. package/features/users/shared/abstractions.js +1 -1
  431. package/features/users/shared/abstractions.js.map +1 -1
  432. package/features/wcp/WcpContext/WcpContext.d.ts +3 -0
  433. package/features/wcp/WcpContext/WcpContext.js +9 -0
  434. package/features/wcp/WcpContext/WcpContext.js.map +1 -1
  435. package/features/wcp/WcpContext/decorators/WcpContextWithFeatureFlagsDecorator.d.ts +15 -0
  436. package/features/wcp/WcpContext/decorators/WcpContextWithFeatureFlagsDecorator.js +24 -3
  437. package/features/wcp/WcpContext/decorators/WcpContextWithFeatureFlagsDecorator.js.map +1 -1
  438. package/features/wcp/WcpContext/feature.d.ts +5 -1
  439. package/features/wcp/WcpFeature.d.ts +4 -1
  440. package/features/wcp/WcpFeature.js.map +1 -1
  441. package/graphql/security/NotAuthorizedResponse.d.ts +1 -0
  442. package/graphql/security/NotAuthorizedResponse.js +1 -0
  443. package/graphql/security/NotAuthorizedResponse.js.map +1 -1
  444. package/graphql/wcp/graphql.js +1 -0
  445. package/graphql/wcp/graphql.js.map +1 -1
  446. package/idp/abstractions.d.ts +4 -0
  447. package/idp/abstractions.js +4 -0
  448. package/idp/abstractions.js.map +1 -1
  449. package/idp/feature.d.ts +4 -1
  450. package/legacy/security/createSecurityContext.js +0 -11
  451. package/legacy/security/createSecurityContext.js.map +1 -1
  452. package/legacy/security/plugins/authenticateUsingHttpHeader.d.ts +1 -1
  453. package/legacy/wcp/LegacyWcpContext.d.ts +3 -0
  454. package/legacy/wcp/LegacyWcpContext.js +9 -0
  455. package/legacy/wcp/LegacyWcpContext.js.map +1 -1
  456. package/legacy/wcp/context.d.ts +1 -3
  457. package/legacy/wcp/context.js +4 -2
  458. package/legacy/wcp/context.js.map +1 -1
  459. package/models/base/BaseModel.js +2 -2
  460. package/models/base/BaseModel.js.map +1 -1
  461. package/models/base/ModelBuilder.d.ts +2 -2
  462. package/models/base/ModelBuilder.js +21 -2
  463. package/models/base/ModelBuilder.js.map +1 -1
  464. package/models/cms/FieldBuilder.d.ts +3 -2
  465. package/models/cms/FieldBuilder.js +12 -17
  466. package/models/cms/FieldBuilder.js.map +1 -1
  467. package/models/cms/FieldBuilderRegistry.d.ts +1 -1
  468. package/models/cms/FieldBuilderRegistry.js.map +1 -1
  469. package/models/cms/FieldDefinitionsBuilder.d.ts +1 -0
  470. package/models/cms/FieldDefinitionsBuilder.js +15 -17
  471. package/models/cms/FieldDefinitionsBuilder.js.map +1 -1
  472. package/models/cms/PrivateCmsModelBuilder.js +1 -1
  473. package/models/cms/PrivateCmsModelBuilder.js.map +1 -1
  474. package/models/cms/abstractions.d.ts +1 -1
  475. package/models/cms/abstractions.js.map +1 -1
  476. package/models/cms/fieldsBuilder.md +4 -2
  477. package/models/simple/Page/abstractions.d.ts +1 -11
  478. package/package.json +27 -68
  479. package/types/security.d.ts +13 -10
  480. package/types/security.js.map +1 -1
  481. package/features/security/shared/abstractions.ts.bak +0 -52
  482. package/legacy/security/plugins/SecurityRolePlugin.d.ts +0 -16
  483. package/legacy/security/plugins/SecurityRolePlugin.js +0 -33
  484. package/legacy/security/plugins/SecurityRolePlugin.js.map +0 -1
  485. package/legacy/security/plugins/SecurityTeamPlugin.d.ts +0 -16
  486. package/legacy/security/plugins/SecurityTeamPlugin.js +0 -33
  487. package/legacy/security/plugins/SecurityTeamPlugin.js.map +0 -1
@@ -4,17 +4,21 @@ import { DomainEvent } from "../../eventPublisher/index.js";
4
4
  export class UserBeforeCreateEvent extends DomainEvent {
5
5
  eventType = "user.beforeCreate";
6
6
  getHandlerAbstraction() {
7
- return UserBeforeCreateHandler;
7
+ return UserBeforeCreateEventHandler;
8
8
  }
9
9
  }
10
- export const UserBeforeCreateHandler = createAbstraction("UserBeforeCreateHandler");
10
+
11
+ /** Hook into user lifecycle before a user is created. */
12
+ export const UserBeforeCreateEventHandler = createAbstraction("UserBeforeCreateEventHandler");
11
13
  // After Create Event
12
14
  export class UserAfterCreateEvent extends DomainEvent {
13
15
  eventType = "user.afterCreate";
14
16
  getHandlerAbstraction() {
15
- return UserAfterCreateHandler;
17
+ return UserAfterCreateEventHandler;
16
18
  }
17
19
  }
18
- export const UserAfterCreateHandler = createAbstraction("UserAfterCreateHandler");
20
+
21
+ /** Hook into user lifecycle after a user is created. */
22
+ export const UserAfterCreateEventHandler = createAbstraction("UserAfterCreateEventHandler");
19
23
 
20
24
  //# sourceMappingURL=events.js.map
@@ -1 +1 @@
1
- {"version":3,"names":["createAbstraction","DomainEvent","UserBeforeCreateEvent","eventType","getHandlerAbstraction","UserBeforeCreateHandler","UserAfterCreateEvent","UserAfterCreateHandler"],"sources":["events.ts"],"sourcesContent":["import { createAbstraction } from \"@webiny/feature/api\";\nimport { DomainEvent } from \"~/features/eventPublisher/index.js\";\nimport type { IEventHandler } from \"~/features/eventPublisher/index.js\";\nimport type { UserBeforeCreatePayload, UserAfterCreatePayload } from \"./abstractions.js\";\n\n// Before Create Event\nexport class UserBeforeCreateEvent extends DomainEvent<UserBeforeCreatePayload> {\n eventType = \"user.beforeCreate\" as const;\n\n getHandlerAbstraction() {\n return UserBeforeCreateHandler;\n }\n}\n\nexport const UserBeforeCreateHandler =\n createAbstraction<IEventHandler<UserBeforeCreateEvent>>(\"UserBeforeCreateHandler\");\n\nexport namespace UserBeforeCreateHandler {\n export type Interface = IEventHandler<UserBeforeCreateEvent>;\n export type Event = UserBeforeCreateEvent;\n}\n\n// After Create Event\nexport class UserAfterCreateEvent extends DomainEvent<UserAfterCreatePayload> {\n eventType = \"user.afterCreate\" as const;\n\n getHandlerAbstraction() {\n return UserAfterCreateHandler;\n }\n}\n\nexport const UserAfterCreateHandler =\n createAbstraction<IEventHandler<UserAfterCreateEvent>>(\"UserAfterCreateHandler\");\n\nexport namespace UserAfterCreateHandler {\n export type Interface = IEventHandler<UserAfterCreateEvent>;\n export type Event = UserAfterCreateEvent;\n}\n"],"mappings":"AAAA,SAASA,iBAAiB,QAAQ,qBAAqB;AACvD,SAASC,WAAW;AAIpB;AACA,OAAO,MAAMC,qBAAqB,SAASD,WAAW,CAA0B;EAC5EE,SAAS,GAAG,mBAAmB;EAE/BC,qBAAqBA,CAAA,EAAG;IACpB,OAAOC,uBAAuB;EAClC;AACJ;AAEA,OAAO,MAAMA,uBAAuB,GAChCL,iBAAiB,CAAuC,yBAAyB,CAAC;AAOtF;AACA,OAAO,MAAMM,oBAAoB,SAASL,WAAW,CAAyB;EAC1EE,SAAS,GAAG,kBAAkB;EAE9BC,qBAAqBA,CAAA,EAAG;IACpB,OAAOG,sBAAsB;EACjC;AACJ;AAEA,OAAO,MAAMA,sBAAsB,GAC/BP,iBAAiB,CAAsC,wBAAwB,CAAC","ignoreList":[]}
1
+ {"version":3,"names":["createAbstraction","DomainEvent","UserBeforeCreateEvent","eventType","getHandlerAbstraction","UserBeforeCreateEventHandler","UserAfterCreateEvent","UserAfterCreateEventHandler"],"sources":["events.ts"],"sourcesContent":["import { createAbstraction } from \"@webiny/feature/api\";\nimport { DomainEvent } from \"~/features/eventPublisher/index.js\";\nimport type { IEventHandler } from \"~/features/eventPublisher/index.js\";\nimport type { UserBeforeCreatePayload, UserAfterCreatePayload } from \"./abstractions.js\";\n\n// Before Create Event\nexport class UserBeforeCreateEvent extends DomainEvent<UserBeforeCreatePayload> {\n eventType = \"user.beforeCreate\" as const;\n\n getHandlerAbstraction() {\n return UserBeforeCreateEventHandler;\n }\n}\n\n/** Hook into user lifecycle before a user is created. */\nexport const UserBeforeCreateEventHandler = createAbstraction<IEventHandler<UserBeforeCreateEvent>>(\n \"UserBeforeCreateEventHandler\"\n);\n\nexport namespace UserBeforeCreateEventHandler {\n export type Interface = IEventHandler<UserBeforeCreateEvent>;\n export type Event = UserBeforeCreateEvent;\n}\n\n// After Create Event\nexport class UserAfterCreateEvent extends DomainEvent<UserAfterCreatePayload> {\n eventType = \"user.afterCreate\" as const;\n\n getHandlerAbstraction() {\n return UserAfterCreateEventHandler;\n }\n}\n\n/** Hook into user lifecycle after a user is created. */\nexport const UserAfterCreateEventHandler = createAbstraction<IEventHandler<UserAfterCreateEvent>>(\n \"UserAfterCreateEventHandler\"\n);\n\nexport namespace UserAfterCreateEventHandler {\n export type Interface = IEventHandler<UserAfterCreateEvent>;\n export type Event = UserAfterCreateEvent;\n}\n"],"mappings":"AAAA,SAASA,iBAAiB,QAAQ,qBAAqB;AACvD,SAASC,WAAW;AAIpB;AACA,OAAO,MAAMC,qBAAqB,SAASD,WAAW,CAA0B;EAC5EE,SAAS,GAAG,mBAAmB;EAE/BC,qBAAqBA,CAAA,EAAG;IACpB,OAAOC,4BAA4B;EACvC;AACJ;;AAEA;AACA,OAAO,MAAMA,4BAA4B,GAAGL,iBAAiB,CACzD,8BACJ,CAAC;AAOD;AACA,OAAO,MAAMM,oBAAoB,SAASL,WAAW,CAAyB;EAC1EE,SAAS,GAAG,kBAAkB;EAE9BC,qBAAqBA,CAAA,EAAG;IACpB,OAAOG,2BAA2B;EACtC;AACJ;;AAEA;AACA,OAAO,MAAMA,2BAA2B,GAAGP,iBAAiB,CACxD,6BACJ,CAAC","ignoreList":[]}
@@ -1 +1,4 @@
1
- export declare const CreateUserFeature: import("@webiny/feature/api/createFeature.js").FeatureDefinition<unknown>;
1
+ export declare const CreateUserFeature: {
2
+ name: string;
3
+ register(container: import("@webiny/di").Container): void;
4
+ };
@@ -8,40 +8,8 @@ export declare const createUserValidation: z.ZodObject<{
8
8
  avatar: z.ZodNullable<z.ZodOptional<z.ZodObject<{
9
9
  id: z.ZodString;
10
10
  src: z.ZodString;
11
- }, "strip", z.ZodTypeAny, {
12
- id: string;
13
- src: string;
14
- }, {
15
- id: string;
16
- src: string;
17
- }>>>;
18
- roles: z.ZodDefault<z.ZodOptional<z.ZodArray<z.ZodString, "many">>>;
19
- teams: z.ZodDefault<z.ZodOptional<z.ZodArray<z.ZodString, "many">>>;
11
+ }, z.core.$strip>>>;
12
+ roles: z.ZodDefault<z.ZodOptional<z.ZodArray<z.ZodString>>>;
13
+ teams: z.ZodDefault<z.ZodOptional<z.ZodArray<z.ZodString>>>;
20
14
  external: z.ZodDefault<z.ZodOptional<z.ZodBoolean>>;
21
- }, "strip", z.ZodTypeAny, {
22
- email: string;
23
- external: boolean;
24
- roles: string[];
25
- teams: string[];
26
- firstName?: string | undefined;
27
- lastName?: string | undefined;
28
- id?: string | undefined;
29
- displayName?: string | undefined;
30
- avatar?: {
31
- id: string;
32
- src: string;
33
- } | null | undefined;
34
- }, {
35
- email: string;
36
- firstName?: string | undefined;
37
- lastName?: string | undefined;
38
- external?: boolean | undefined;
39
- id?: string | undefined;
40
- displayName?: string | undefined;
41
- roles?: string[] | undefined;
42
- teams?: string[] | undefined;
43
- avatar?: {
44
- id: string;
45
- src: string;
46
- } | null | undefined;
47
- }>;
15
+ }, z.core.$strip>;
@@ -11,6 +11,7 @@ export type DeleteUserError = IDeleteUserErrors[keyof IDeleteUserErrors] | Admin
11
11
  export interface IDeleteUser {
12
12
  execute(id: string): Promise<Result<void, DeleteUserError>>;
13
13
  }
14
+ /** Delete an admin user. */
14
15
  export declare const DeleteUserUseCase: import("@webiny/di").Abstraction<IDeleteUser>;
15
16
  export declare namespace DeleteUserUseCase {
16
17
  type Interface = IDeleteUser;
@@ -6,7 +6,7 @@ import { createAbstraction } from "@webiny/feature/api";
6
6
 
7
7
  // Use case interface
8
8
 
9
- // Abstraction constant
9
+ /** Delete an admin user. */
10
10
  export const DeleteUserUseCase = createAbstraction("DeleteUserUseCase");
11
11
 
12
12
  // Namespace exports
@@ -1 +1 @@
1
- {"version":3,"names":["createAbstraction","DeleteUserUseCase"],"sources":["abstractions.ts"],"sourcesContent":["import { createAbstraction } from \"@webiny/feature/api\";\nimport { Result } from \"@webiny/feature/api\";\nimport type { AdminUser } from \"~/features/users/shared/types.js\";\nimport { AdminUsersRepository } from \"~/features/users/shared/abstractions.js\";\nimport { NotAuthorizedError } from \"~/features/users/shared/errors.js\";\nimport { CannotDeleteOwnAccountError } from \"./errors.js\";\n\n// Use case specific errors\nexport interface IDeleteUserErrors {\n notAuthorized: NotAuthorizedError;\n cannotDeleteOwnAccount: CannotDeleteOwnAccountError;\n}\n\n// Combined error type (use case errors + repository errors)\nexport type DeleteUserError =\n | IDeleteUserErrors[keyof IDeleteUserErrors]\n | AdminUsersRepository.Error;\n\n// Use case interface\nexport interface IDeleteUser {\n execute(id: string): Promise<Result<void, DeleteUserError>>;\n}\n\n// Abstraction constant\nexport const DeleteUserUseCase = createAbstraction<IDeleteUser>(\"DeleteUserUseCase\");\n\n// Namespace exports\nexport namespace DeleteUserUseCase {\n export type Interface = IDeleteUser;\n export type Error = DeleteUserError;\n}\n\n// Event payload types\nexport interface UserBeforeDeletePayload {\n user: AdminUser;\n}\n\nexport interface UserAfterDeletePayload {\n user: AdminUser;\n}\n"],"mappings":"AAAA,SAASA,iBAAiB,QAAQ,qBAAqB;;AAOvD;;AAMA;;AAKA;;AAKA;AACA,OAAO,MAAMC,iBAAiB,GAAGD,iBAAiB,CAAc,mBAAmB,CAAC;;AAEpF;;AAMA","ignoreList":[]}
1
+ {"version":3,"names":["createAbstraction","DeleteUserUseCase"],"sources":["abstractions.ts"],"sourcesContent":["import { createAbstraction } from \"@webiny/feature/api\";\nimport { Result } from \"@webiny/feature/api\";\nimport type { AdminUser } from \"~/features/users/shared/types.js\";\nimport { AdminUsersRepository } from \"~/features/users/shared/abstractions.js\";\nimport { NotAuthorizedError } from \"~/features/users/shared/errors.js\";\nimport { CannotDeleteOwnAccountError } from \"./errors.js\";\n\n// Use case specific errors\nexport interface IDeleteUserErrors {\n notAuthorized: NotAuthorizedError;\n cannotDeleteOwnAccount: CannotDeleteOwnAccountError;\n}\n\n// Combined error type (use case errors + repository errors)\nexport type DeleteUserError =\n | IDeleteUserErrors[keyof IDeleteUserErrors]\n | AdminUsersRepository.Error;\n\n// Use case interface\nexport interface IDeleteUser {\n execute(id: string): Promise<Result<void, DeleteUserError>>;\n}\n\n/** Delete an admin user. */\nexport const DeleteUserUseCase = createAbstraction<IDeleteUser>(\"DeleteUserUseCase\");\n\n// Namespace exports\nexport namespace DeleteUserUseCase {\n export type Interface = IDeleteUser;\n export type Error = DeleteUserError;\n}\n\n// Event payload types\nexport interface UserBeforeDeletePayload {\n user: AdminUser;\n}\n\nexport interface UserAfterDeletePayload {\n user: AdminUser;\n}\n"],"mappings":"AAAA,SAASA,iBAAiB,QAAQ,qBAAqB;;AAOvD;;AAMA;;AAKA;;AAKA;AACA,OAAO,MAAMC,iBAAiB,GAAGD,iBAAiB,CAAc,mBAAmB,CAAC;;AAEpF;;AAMA","ignoreList":[]}
@@ -5,8 +5,9 @@ export declare class UserBeforeDeleteEvent extends DomainEvent<UserBeforeDeleteP
5
5
  eventType: "user.beforeDelete";
6
6
  getHandlerAbstraction(): import("@webiny/di").Abstraction<IEventHandler<UserBeforeDeleteEvent>>;
7
7
  }
8
- export declare const UserBeforeDeleteHandler: import("@webiny/di").Abstraction<IEventHandler<UserBeforeDeleteEvent>>;
9
- export declare namespace UserBeforeDeleteHandler {
8
+ /** Hook into user lifecycle before a user is deleted. */
9
+ export declare const UserBeforeDeleteEventHandler: import("@webiny/di").Abstraction<IEventHandler<UserBeforeDeleteEvent>>;
10
+ export declare namespace UserBeforeDeleteEventHandler {
10
11
  type Interface = IEventHandler<UserBeforeDeleteEvent>;
11
12
  type Event = UserBeforeDeleteEvent;
12
13
  }
@@ -14,8 +15,9 @@ export declare class UserAfterDeleteEvent extends DomainEvent<UserAfterDeletePay
14
15
  eventType: "user.afterDelete";
15
16
  getHandlerAbstraction(): import("@webiny/di").Abstraction<IEventHandler<UserAfterDeleteEvent>>;
16
17
  }
17
- export declare const UserAfterDeleteHandler: import("@webiny/di").Abstraction<IEventHandler<UserAfterDeleteEvent>>;
18
- export declare namespace UserAfterDeleteHandler {
18
+ /** Hook into user lifecycle after a user is deleted. */
19
+ export declare const UserAfterDeleteEventHandler: import("@webiny/di").Abstraction<IEventHandler<UserAfterDeleteEvent>>;
20
+ export declare namespace UserAfterDeleteEventHandler {
19
21
  type Interface = IEventHandler<UserAfterDeleteEvent>;
20
22
  type Event = UserAfterDeleteEvent;
21
23
  }
@@ -4,17 +4,21 @@ import { DomainEvent } from "../../eventPublisher/index.js";
4
4
  export class UserBeforeDeleteEvent extends DomainEvent {
5
5
  eventType = "user.beforeDelete";
6
6
  getHandlerAbstraction() {
7
- return UserBeforeDeleteHandler;
7
+ return UserBeforeDeleteEventHandler;
8
8
  }
9
9
  }
10
- export const UserBeforeDeleteHandler = createAbstraction("UserBeforeDeleteHandler");
10
+
11
+ /** Hook into user lifecycle before a user is deleted. */
12
+ export const UserBeforeDeleteEventHandler = createAbstraction("UserBeforeDeleteEventHandler");
11
13
  // After Delete Event
12
14
  export class UserAfterDeleteEvent extends DomainEvent {
13
15
  eventType = "user.afterDelete";
14
16
  getHandlerAbstraction() {
15
- return UserAfterDeleteHandler;
17
+ return UserAfterDeleteEventHandler;
16
18
  }
17
19
  }
18
- export const UserAfterDeleteHandler = createAbstraction("UserAfterDeleteHandler");
20
+
21
+ /** Hook into user lifecycle after a user is deleted. */
22
+ export const UserAfterDeleteEventHandler = createAbstraction("UserAfterDeleteEventHandler");
19
23
 
20
24
  //# sourceMappingURL=events.js.map
@@ -1 +1 @@
1
- {"version":3,"names":["createAbstraction","DomainEvent","UserBeforeDeleteEvent","eventType","getHandlerAbstraction","UserBeforeDeleteHandler","UserAfterDeleteEvent","UserAfterDeleteHandler"],"sources":["events.ts"],"sourcesContent":["import { createAbstraction } from \"@webiny/feature/api\";\nimport { DomainEvent } from \"~/features/eventPublisher/index.js\";\nimport type { IEventHandler } from \"~/features/eventPublisher/index.js\";\nimport type { UserBeforeDeletePayload, UserAfterDeletePayload } from \"./abstractions.js\";\n\n// Before Delete Event\nexport class UserBeforeDeleteEvent extends DomainEvent<UserBeforeDeletePayload> {\n eventType = \"user.beforeDelete\" as const;\n\n getHandlerAbstraction() {\n return UserBeforeDeleteHandler;\n }\n}\n\nexport const UserBeforeDeleteHandler =\n createAbstraction<IEventHandler<UserBeforeDeleteEvent>>(\"UserBeforeDeleteHandler\");\n\nexport namespace UserBeforeDeleteHandler {\n export type Interface = IEventHandler<UserBeforeDeleteEvent>;\n export type Event = UserBeforeDeleteEvent;\n}\n\n// After Delete Event\nexport class UserAfterDeleteEvent extends DomainEvent<UserAfterDeletePayload> {\n eventType = \"user.afterDelete\" as const;\n\n getHandlerAbstraction() {\n return UserAfterDeleteHandler;\n }\n}\n\nexport const UserAfterDeleteHandler =\n createAbstraction<IEventHandler<UserAfterDeleteEvent>>(\"UserAfterDeleteHandler\");\n\nexport namespace UserAfterDeleteHandler {\n export type Interface = IEventHandler<UserAfterDeleteEvent>;\n export type Event = UserAfterDeleteEvent;\n}\n"],"mappings":"AAAA,SAASA,iBAAiB,QAAQ,qBAAqB;AACvD,SAASC,WAAW;AAIpB;AACA,OAAO,MAAMC,qBAAqB,SAASD,WAAW,CAA0B;EAC5EE,SAAS,GAAG,mBAAmB;EAE/BC,qBAAqBA,CAAA,EAAG;IACpB,OAAOC,uBAAuB;EAClC;AACJ;AAEA,OAAO,MAAMA,uBAAuB,GAChCL,iBAAiB,CAAuC,yBAAyB,CAAC;AAOtF;AACA,OAAO,MAAMM,oBAAoB,SAASL,WAAW,CAAyB;EAC1EE,SAAS,GAAG,kBAAkB;EAE9BC,qBAAqBA,CAAA,EAAG;IACpB,OAAOG,sBAAsB;EACjC;AACJ;AAEA,OAAO,MAAMA,sBAAsB,GAC/BP,iBAAiB,CAAsC,wBAAwB,CAAC","ignoreList":[]}
1
+ {"version":3,"names":["createAbstraction","DomainEvent","UserBeforeDeleteEvent","eventType","getHandlerAbstraction","UserBeforeDeleteEventHandler","UserAfterDeleteEvent","UserAfterDeleteEventHandler"],"sources":["events.ts"],"sourcesContent":["import { createAbstraction } from \"@webiny/feature/api\";\nimport { DomainEvent } from \"~/features/eventPublisher/index.js\";\nimport type { IEventHandler } from \"~/features/eventPublisher/index.js\";\nimport type { UserBeforeDeletePayload, UserAfterDeletePayload } from \"./abstractions.js\";\n\n// Before Delete Event\nexport class UserBeforeDeleteEvent extends DomainEvent<UserBeforeDeletePayload> {\n eventType = \"user.beforeDelete\" as const;\n\n getHandlerAbstraction() {\n return UserBeforeDeleteEventHandler;\n }\n}\n\n/** Hook into user lifecycle before a user is deleted. */\nexport const UserBeforeDeleteEventHandler = createAbstraction<IEventHandler<UserBeforeDeleteEvent>>(\n \"UserBeforeDeleteEventHandler\"\n);\n\nexport namespace UserBeforeDeleteEventHandler {\n export type Interface = IEventHandler<UserBeforeDeleteEvent>;\n export type Event = UserBeforeDeleteEvent;\n}\n\n// After Delete Event\nexport class UserAfterDeleteEvent extends DomainEvent<UserAfterDeletePayload> {\n eventType = \"user.afterDelete\" as const;\n\n getHandlerAbstraction() {\n return UserAfterDeleteEventHandler;\n }\n}\n\n/** Hook into user lifecycle after a user is deleted. */\nexport const UserAfterDeleteEventHandler = createAbstraction<IEventHandler<UserAfterDeleteEvent>>(\n \"UserAfterDeleteEventHandler\"\n);\n\nexport namespace UserAfterDeleteEventHandler {\n export type Interface = IEventHandler<UserAfterDeleteEvent>;\n export type Event = UserAfterDeleteEvent;\n}\n"],"mappings":"AAAA,SAASA,iBAAiB,QAAQ,qBAAqB;AACvD,SAASC,WAAW;AAIpB;AACA,OAAO,MAAMC,qBAAqB,SAASD,WAAW,CAA0B;EAC5EE,SAAS,GAAG,mBAAmB;EAE/BC,qBAAqBA,CAAA,EAAG;IACpB,OAAOC,4BAA4B;EACvC;AACJ;;AAEA;AACA,OAAO,MAAMA,4BAA4B,GAAGL,iBAAiB,CACzD,8BACJ,CAAC;AAOD;AACA,OAAO,MAAMM,oBAAoB,SAASL,WAAW,CAAyB;EAC1EE,SAAS,GAAG,kBAAkB;EAE9BC,qBAAqBA,CAAA,EAAG;IACpB,OAAOG,2BAA2B;EACtC;AACJ;;AAEA;AACA,OAAO,MAAMA,2BAA2B,GAAGP,iBAAiB,CACxD,6BACJ,CAAC","ignoreList":[]}
@@ -1 +1,4 @@
1
- export declare const DeleteUserFeature: import("@webiny/feature/api/createFeature.js").FeatureDefinition<unknown>;
1
+ export declare const DeleteUserFeature: {
2
+ name: string;
3
+ register(container: import("@webiny/di").Container): void;
4
+ };
@@ -1,11 +1,11 @@
1
- import { AfterLoginHandler } from "../../../features/security/login/index.js";
1
+ import { AfterLoginEventHandler } from "../../../features/security/login/index.js";
2
2
  import { IdentityContext } from "../../../features/security/IdentityContext/index.js";
3
3
  import { ListRolesUseCase } from "../../../features/security/roles/ListRoles/index.js";
4
4
  import { ListTeamsUseCase } from "../../../features/security/teams/ListTeams/index.js";
5
5
  import { GetUserUseCase } from "../../../features/users/GetUser/index.js";
6
6
  import { CreateUserUseCase } from "../../../features/users/CreateUser/index.js";
7
7
  import { UpdateUserUseCase } from "../../../features/users/UpdateUser/index.js";
8
- declare class ExternalIdpUserSyncHandlerImpl implements AfterLoginHandler.Interface {
8
+ declare class ExternalIdpUserSyncHandlerImpl implements AfterLoginEventHandler.Interface {
9
9
  private identityContext;
10
10
  private getUserUseCase;
11
11
  private createUserUseCase;
@@ -13,7 +13,7 @@ declare class ExternalIdpUserSyncHandlerImpl implements AfterLoginHandler.Interf
13
13
  private listRolesUseCase;
14
14
  private listTeamsUseCase;
15
15
  constructor(identityContext: IdentityContext.Interface, getUserUseCase: GetUserUseCase.Interface, createUserUseCase: CreateUserUseCase.Interface, updateUserUseCase: UpdateUserUseCase.Interface, listRolesUseCase: ListRolesUseCase.Interface, listTeamsUseCase: ListTeamsUseCase.Interface);
16
- handle(event: AfterLoginHandler.Event): Promise<void>;
16
+ handle(event: AfterLoginEventHandler.Event): Promise<void>;
17
17
  }
18
18
  export declare const ExternalIdpUserSyncHandler: import("@webiny/di").Implementation<typeof ExternalIdpUserSyncHandlerImpl>;
19
19
  export {};
@@ -1,5 +1,5 @@
1
1
  import { createImplementation } from "@webiny/feature/api";
2
- import { AfterLoginHandler } from "../../security/login/index.js";
2
+ import { AfterLoginEventHandler } from "../../security/login/index.js";
3
3
  import { IdentityContext } from "../../security/IdentityContext/index.js";
4
4
  import { ListRolesUseCase } from "../../security/roles/ListRoles/index.js";
5
5
  import { ListTeamsUseCase } from "../../security/teams/ListTeams/index.js";
@@ -81,7 +81,7 @@ class ExternalIdpUserSyncHandlerImpl {
81
81
  }
82
82
  }
83
83
  export const ExternalIdpUserSyncHandler = createImplementation({
84
- abstraction: AfterLoginHandler,
84
+ abstraction: AfterLoginEventHandler,
85
85
  implementation: ExternalIdpUserSyncHandlerImpl,
86
86
  dependencies: [IdentityContext, GetUserUseCase, CreateUserUseCase, UpdateUserUseCase, ListRolesUseCase, ListTeamsUseCase]
87
87
  });
@@ -1 +1 @@
1
- {"version":3,"names":["createImplementation","AfterLoginHandler","IdentityContext","ListRolesUseCase","ListTeamsUseCase","GetUserUseCase","CreateUserUseCase","UpdateUserUseCase","ExternalIdpUserSyncHandlerImpl","constructor","identityContext","getUserUseCase","createUserUseCase","updateUserUseCase","listRolesUseCase","listTeamsUseCase","handle","event","identity","payload","profile","external","withoutAuthorization","getUserResult","execute","id","data","displayName","email","firstName","lastName","roles","teams","roleSlugs","length","listRolesResult","where","slug_in","isOk","value","map","role","teamSlugs","listTeamsResult","team","ExternalIdpUserSyncHandler","abstraction","implementation","dependencies"],"sources":["ExternalIdpUserSyncHandler.ts"],"sourcesContent":["import { createImplementation } from \"@webiny/feature/api\";\nimport { AfterLoginHandler } from \"~/features/security/login/index.js\";\nimport { IdentityContext } from \"~/features/security/IdentityContext/index.js\";\nimport { ListRolesUseCase } from \"~/features/security/roles/ListRoles/index.js\";\nimport { ListTeamsUseCase } from \"~/features/security/teams/ListTeams/index.js\";\nimport { GetUserUseCase } from \"~/features/users/GetUser/index.js\";\nimport { CreateUserUseCase } from \"~/features/users/CreateUser/index.js\";\nimport { UpdateUserUseCase } from \"~/features/users/UpdateUser/index.js\";\n\nclass ExternalIdpUserSyncHandlerImpl implements AfterLoginHandler.Interface {\n constructor(\n private identityContext: IdentityContext.Interface,\n private getUserUseCase: GetUserUseCase.Interface,\n private createUserUseCase: CreateUserUseCase.Interface,\n private updateUserUseCase: UpdateUserUseCase.Interface,\n private listRolesUseCase: ListRolesUseCase.Interface,\n private listTeamsUseCase: ListTeamsUseCase.Interface\n ) {}\n\n async handle(event: AfterLoginHandler.Event): Promise<void> {\n const { identity } = event.payload;\n\n // We only sync external identities\n if (!identity.profile.external) {\n return;\n }\n\n await this.identityContext.withoutAuthorization(async () => {\n // Check if user exists\n const getUserResult = await this.getUserUseCase.execute({ id: identity.id });\n\n // Prepare user data\n const id = identity.id;\n\n const data = {\n displayName: identity.displayName,\n email: identity.profile.email,\n firstName: identity.profile.firstName || \"\",\n lastName: identity.profile.lastName || \"\",\n roles: [] as string[],\n teams: [] as string[],\n external: true\n };\n\n // Resolve roles\n const roleSlugs = identity.roles;\n if (roleSlugs.length > 0) {\n const listRolesResult = await this.listRolesUseCase.execute({\n where: { slug_in: roleSlugs }\n });\n if (listRolesResult.isOk()) {\n data.roles = listRolesResult.value.map(role => role.id);\n }\n }\n\n // Resolve teams\n const teamSlugs = identity.teams;\n if (teamSlugs.length > 0) {\n const listTeamsResult = await this.listTeamsUseCase.execute({\n where: { slug_in: teamSlugs }\n });\n if (listTeamsResult.isOk()) {\n data.teams = listTeamsResult.value.map(team => team.id);\n }\n }\n\n // Update or create user\n if (getUserResult.isOk()) {\n await this.updateUserUseCase.execute(identity.id, data);\n return;\n }\n\n await this.createUserUseCase.execute({ id, ...data });\n });\n }\n}\n\nexport const ExternalIdpUserSyncHandler = createImplementation({\n abstraction: AfterLoginHandler,\n implementation: ExternalIdpUserSyncHandlerImpl,\n dependencies: [\n IdentityContext,\n GetUserUseCase,\n CreateUserUseCase,\n UpdateUserUseCase,\n ListRolesUseCase,\n ListTeamsUseCase\n ]\n});\n"],"mappings":"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","ignoreList":[]}
1
+ {"version":3,"names":["createImplementation","AfterLoginEventHandler","IdentityContext","ListRolesUseCase","ListTeamsUseCase","GetUserUseCase","CreateUserUseCase","UpdateUserUseCase","ExternalIdpUserSyncHandlerImpl","constructor","identityContext","getUserUseCase","createUserUseCase","updateUserUseCase","listRolesUseCase","listTeamsUseCase","handle","event","identity","payload","profile","external","withoutAuthorization","getUserResult","execute","id","data","displayName","email","firstName","lastName","roles","teams","roleSlugs","length","listRolesResult","where","slug_in","isOk","value","map","role","teamSlugs","listTeamsResult","team","ExternalIdpUserSyncHandler","abstraction","implementation","dependencies"],"sources":["ExternalIdpUserSyncHandler.ts"],"sourcesContent":["import { createImplementation } from \"@webiny/feature/api\";\nimport { AfterLoginEventHandler } from \"~/features/security/login/index.js\";\nimport { IdentityContext } from \"~/features/security/IdentityContext/index.js\";\nimport { ListRolesUseCase } from \"~/features/security/roles/ListRoles/index.js\";\nimport { ListTeamsUseCase } from \"~/features/security/teams/ListTeams/index.js\";\nimport { GetUserUseCase } from \"~/features/users/GetUser/index.js\";\nimport { CreateUserUseCase } from \"~/features/users/CreateUser/index.js\";\nimport { UpdateUserUseCase } from \"~/features/users/UpdateUser/index.js\";\n\nclass ExternalIdpUserSyncHandlerImpl implements AfterLoginEventHandler.Interface {\n constructor(\n private identityContext: IdentityContext.Interface,\n private getUserUseCase: GetUserUseCase.Interface,\n private createUserUseCase: CreateUserUseCase.Interface,\n private updateUserUseCase: UpdateUserUseCase.Interface,\n private listRolesUseCase: ListRolesUseCase.Interface,\n private listTeamsUseCase: ListTeamsUseCase.Interface\n ) {}\n\n async handle(event: AfterLoginEventHandler.Event): Promise<void> {\n const { identity } = event.payload;\n\n // We only sync external identities\n if (!identity.profile.external) {\n return;\n }\n\n await this.identityContext.withoutAuthorization(async () => {\n // Check if user exists\n const getUserResult = await this.getUserUseCase.execute({ id: identity.id });\n\n // Prepare user data\n const id = identity.id;\n\n const data = {\n displayName: identity.displayName,\n email: identity.profile.email,\n firstName: identity.profile.firstName || \"\",\n lastName: identity.profile.lastName || \"\",\n roles: [] as string[],\n teams: [] as string[],\n external: true\n };\n\n // Resolve roles\n const roleSlugs = identity.roles;\n if (roleSlugs.length > 0) {\n const listRolesResult = await this.listRolesUseCase.execute({\n where: { slug_in: roleSlugs }\n });\n if (listRolesResult.isOk()) {\n data.roles = listRolesResult.value.map(role => role.id);\n }\n }\n\n // Resolve teams\n const teamSlugs = identity.teams;\n if (teamSlugs.length > 0) {\n const listTeamsResult = await this.listTeamsUseCase.execute({\n where: { slug_in: teamSlugs }\n });\n if (listTeamsResult.isOk()) {\n data.teams = listTeamsResult.value.map(team => team.id);\n }\n }\n\n // Update or create user\n if (getUserResult.isOk()) {\n await this.updateUserUseCase.execute(identity.id, data);\n return;\n }\n\n await this.createUserUseCase.execute({ id, ...data });\n });\n }\n}\n\nexport const ExternalIdpUserSyncHandler = createImplementation({\n abstraction: AfterLoginEventHandler,\n implementation: ExternalIdpUserSyncHandlerImpl,\n dependencies: [\n IdentityContext,\n GetUserUseCase,\n CreateUserUseCase,\n UpdateUserUseCase,\n ListRolesUseCase,\n ListTeamsUseCase\n ]\n});\n"],"mappings":"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","ignoreList":[]}
@@ -1 +1,4 @@
1
- export declare const ExternalIdpUserSyncFeature: import("@webiny/feature/api/createFeature.js").FeatureDefinition<unknown>;
1
+ export declare const ExternalIdpUserSyncFeature: {
2
+ name: string;
3
+ register(container: import("@webiny/di").Container): void;
4
+ };
@@ -1 +1,4 @@
1
- export declare const GetIdentityProfileFeature: import("@webiny/feature/api/createFeature.js").FeatureDefinition<unknown>;
1
+ export declare const GetIdentityProfileFeature: {
2
+ name: string;
3
+ register(container: import("@webiny/di").Container): void;
4
+ };
@@ -10,6 +10,7 @@ type GetUserError = IGetUserErrors[keyof IGetUserErrors] | AdminUsersRepository.
10
10
  export interface IGetUser {
11
11
  execute(input: GetUserInput): Promise<Result<AdminUser, GetUserError>>;
12
12
  }
13
+ /** Retrieve an admin user. */
13
14
  export declare const GetUserUseCase: import("@webiny/di").Abstraction<IGetUser>;
14
15
  export declare namespace GetUserUseCase {
15
16
  type Interface = IGetUser;
@@ -6,7 +6,7 @@ import { createAbstraction } from "@webiny/feature/api";
6
6
 
7
7
  // Use case interface
8
8
 
9
- // Abstraction constant
9
+ /** Retrieve an admin user. */
10
10
  export const GetUserUseCase = createAbstraction("GetUserUseCase");
11
11
 
12
12
  // Namespace exports
@@ -1 +1 @@
1
- {"version":3,"names":["createAbstraction","GetUserUseCase"],"sources":["abstractions.ts"],"sourcesContent":["import { createAbstraction } from \"@webiny/feature/api\";\nimport { Result } from \"@webiny/feature/api\";\nimport type { AdminUser } from \"~/features/users/shared/types.js\";\nimport type { GetUserInput } from \"~/features/users/shared/types.js\";\nimport { AdminUsersRepository } from \"~/features/users/shared/abstractions.js\";\nimport { NotAuthorizedError } from \"~/features/users/shared/errors.js\";\n\n// Use case specific errors\nexport interface IGetUserErrors {\n notAuthorized: NotAuthorizedError;\n}\n\n// Combined error type (use case errors + repository errors)\ntype GetUserError = IGetUserErrors[keyof IGetUserErrors] | AdminUsersRepository.Error;\n\n// Use case interface\nexport interface IGetUser {\n execute(input: GetUserInput): Promise<Result<AdminUser, GetUserError>>;\n}\n\n// Abstraction constant\nexport const GetUserUseCase = createAbstraction<IGetUser>(\"GetUserUseCase\");\n\n// Namespace exports\nexport namespace GetUserUseCase {\n export type Interface = IGetUser;\n export type Error = GetUserError;\n}\n"],"mappings":"AAAA,SAASA,iBAAiB,QAAQ,qBAAqB;;AAOvD;;AAKA;;AAGA;;AAKA;AACA,OAAO,MAAMC,cAAc,GAAGD,iBAAiB,CAAW,gBAAgB,CAAC;;AAE3E","ignoreList":[]}
1
+ {"version":3,"names":["createAbstraction","GetUserUseCase"],"sources":["abstractions.ts"],"sourcesContent":["import { createAbstraction } from \"@webiny/feature/api\";\nimport { Result } from \"@webiny/feature/api\";\nimport type { AdminUser } from \"~/features/users/shared/types.js\";\nimport type { GetUserInput } from \"~/features/users/shared/types.js\";\nimport { AdminUsersRepository } from \"~/features/users/shared/abstractions.js\";\nimport { NotAuthorizedError } from \"~/features/users/shared/errors.js\";\n\n// Use case specific errors\nexport interface IGetUserErrors {\n notAuthorized: NotAuthorizedError;\n}\n\n// Combined error type (use case errors + repository errors)\ntype GetUserError = IGetUserErrors[keyof IGetUserErrors] | AdminUsersRepository.Error;\n\n// Use case interface\nexport interface IGetUser {\n execute(input: GetUserInput): Promise<Result<AdminUser, GetUserError>>;\n}\n\n/** Retrieve an admin user. */\nexport const GetUserUseCase = createAbstraction<IGetUser>(\"GetUserUseCase\");\n\n// Namespace exports\nexport namespace GetUserUseCase {\n export type Interface = IGetUser;\n export type Error = GetUserError;\n}\n"],"mappings":"AAAA,SAASA,iBAAiB,QAAQ,qBAAqB;;AAOvD;;AAKA;;AAGA;;AAKA;AACA,OAAO,MAAMC,cAAc,GAAGD,iBAAiB,CAAW,gBAAgB,CAAC;;AAE3E","ignoreList":[]}
@@ -1 +1,4 @@
1
- export declare const GetUserFeature: import("@webiny/feature/api/createFeature.js").FeatureDefinition<unknown>;
1
+ export declare const GetUserFeature: {
2
+ name: string;
3
+ register(container: import("@webiny/di").Container): void;
4
+ };
@@ -7,6 +7,7 @@ type ListUserTeamsError = AdminUsersRepository.Error;
7
7
  export interface IListUserTeams {
8
8
  execute(userId: string): Promise<Result<Team[], ListUserTeamsError>>;
9
9
  }
10
+ /** List teams assigned to a user. */
10
11
  export declare const ListUserTeamsUseCase: import("@webiny/di").Abstraction<IListUserTeams>;
11
12
  export declare namespace ListUserTeamsUseCase {
12
13
  type Interface = IListUserTeams;
@@ -6,7 +6,7 @@ import { createAbstraction } from "@webiny/feature/api";
6
6
 
7
7
  // Use case interface
8
8
 
9
- // Abstraction constant
9
+ /** List teams assigned to a user. */
10
10
  export const ListUserTeamsUseCase = createAbstraction("ListUserTeamsUseCase");
11
11
 
12
12
  // Namespace exports
@@ -1 +1 @@
1
- {"version":3,"names":["createAbstraction","ListUserTeamsUseCase"],"sources":["abstractions.ts"],"sourcesContent":["import { createAbstraction } from \"@webiny/feature/api\";\nimport { Result } from \"@webiny/feature/api\";\nimport type { Team } from \"~/types/security.js\";\nimport { AdminUsersRepository } from \"~/features/users/shared/abstractions.js\";\n\n// Use case specific errors - none for this use case\nexport interface IListUserTeamsErrors {\n // No specific errors beyond repository errors\n}\n\n// Combined error type (use case errors + repository errors)\ntype ListUserTeamsError = AdminUsersRepository.Error;\n\n// Use case interface\nexport interface IListUserTeams {\n execute(userId: string): Promise<Result<Team[], ListUserTeamsError>>;\n}\n\n// Abstraction constant\nexport const ListUserTeamsUseCase = createAbstraction<IListUserTeams>(\"ListUserTeamsUseCase\");\n\n// Namespace exports\nexport namespace ListUserTeamsUseCase {\n export type Interface = IListUserTeams;\n export type Error = ListUserTeamsError;\n}\n"],"mappings":"AAAA,SAASA,iBAAiB,QAAQ,qBAAqB;;AAKvD;;AAKA;;AAGA;;AAKA;AACA,OAAO,MAAMC,oBAAoB,GAAGD,iBAAiB,CAAiB,sBAAsB,CAAC;;AAE7F","ignoreList":[]}
1
+ {"version":3,"names":["createAbstraction","ListUserTeamsUseCase"],"sources":["abstractions.ts"],"sourcesContent":["import { createAbstraction } from \"@webiny/feature/api\";\nimport { Result } from \"@webiny/feature/api\";\nimport type { Team } from \"~/types/security.js\";\nimport { AdminUsersRepository } from \"~/features/users/shared/abstractions.js\";\n\n// Use case specific errors - none for this use case\nexport interface IListUserTeamsErrors {\n // No specific errors beyond repository errors\n}\n\n// Combined error type (use case errors + repository errors)\ntype ListUserTeamsError = AdminUsersRepository.Error;\n\n// Use case interface\nexport interface IListUserTeams {\n execute(userId: string): Promise<Result<Team[], ListUserTeamsError>>;\n}\n\n/** List teams assigned to a user. */\nexport const ListUserTeamsUseCase = createAbstraction<IListUserTeams>(\"ListUserTeamsUseCase\");\n\n// Namespace exports\nexport namespace ListUserTeamsUseCase {\n export type Interface = IListUserTeams;\n export type Error = ListUserTeamsError;\n}\n"],"mappings":"AAAA,SAASA,iBAAiB,QAAQ,qBAAqB;;AAKvD;;AAKA;;AAGA;;AAKA;AACA,OAAO,MAAMC,oBAAoB,GAAGD,iBAAiB,CAAiB,sBAAsB,CAAC;;AAE7F","ignoreList":[]}
@@ -1 +1,4 @@
1
- export declare const ListUserTeamsFeature: import("@webiny/feature/api/createFeature.js").FeatureDefinition<unknown>;
1
+ export declare const ListUserTeamsFeature: {
2
+ name: string;
3
+ register(container: import("@webiny/di").Container): void;
4
+ };
@@ -10,6 +10,7 @@ type ListUsersError = IListUsersErrors[keyof IListUsersErrors] | AdminUsersRepos
10
10
  export interface IListUsers {
11
11
  execute(input?: ListUsersInput): Promise<Result<AdminUser[], ListUsersError>>;
12
12
  }
13
+ /** List all admin users. */
13
14
  export declare const ListUsersUseCase: import("@webiny/di").Abstraction<IListUsers>;
14
15
  export declare namespace ListUsersUseCase {
15
16
  type Interface = IListUsers;
@@ -6,7 +6,7 @@ import { createAbstraction } from "@webiny/feature/api";
6
6
 
7
7
  // Use case interface
8
8
 
9
- // Abstraction constant
9
+ /** List all admin users. */
10
10
  export const ListUsersUseCase = createAbstraction("ListUsersUseCase");
11
11
 
12
12
  // Namespace exports
@@ -1 +1 @@
1
- {"version":3,"names":["createAbstraction","ListUsersUseCase"],"sources":["abstractions.ts"],"sourcesContent":["import { createAbstraction } from \"@webiny/feature/api\";\nimport { Result } from \"@webiny/feature/api\";\nimport type { AdminUser } from \"~/features/users/shared/types.js\";\nimport type { ListUsersInput } from \"~/features/users/shared/types.js\";\nimport { AdminUsersRepository } from \"~/features/users/shared/abstractions.js\";\nimport { NotAuthorizedError } from \"~/features/users/shared/errors.js\";\n\n// Use case specific errors\nexport interface IListUsersErrors {\n notAuthorized: NotAuthorizedError;\n}\n\n// Combined error type (use case errors + repository errors)\ntype ListUsersError = IListUsersErrors[keyof IListUsersErrors] | AdminUsersRepository.Error;\n\n// Use case interface\nexport interface IListUsers {\n execute(input?: ListUsersInput): Promise<Result<AdminUser[], ListUsersError>>;\n}\n\n// Abstraction constant\nexport const ListUsersUseCase = createAbstraction<IListUsers>(\"ListUsersUseCase\");\n\n// Namespace exports\nexport namespace ListUsersUseCase {\n export type Interface = IListUsers;\n export type Error = ListUsersError;\n}\n"],"mappings":"AAAA,SAASA,iBAAiB,QAAQ,qBAAqB;;AAOvD;;AAKA;;AAGA;;AAKA;AACA,OAAO,MAAMC,gBAAgB,GAAGD,iBAAiB,CAAa,kBAAkB,CAAC;;AAEjF","ignoreList":[]}
1
+ {"version":3,"names":["createAbstraction","ListUsersUseCase"],"sources":["abstractions.ts"],"sourcesContent":["import { createAbstraction } from \"@webiny/feature/api\";\nimport { Result } from \"@webiny/feature/api\";\nimport type { AdminUser } from \"~/features/users/shared/types.js\";\nimport type { ListUsersInput } from \"~/features/users/shared/types.js\";\nimport { AdminUsersRepository } from \"~/features/users/shared/abstractions.js\";\nimport { NotAuthorizedError } from \"~/features/users/shared/errors.js\";\n\n// Use case specific errors\nexport interface IListUsersErrors {\n notAuthorized: NotAuthorizedError;\n}\n\n// Combined error type (use case errors + repository errors)\ntype ListUsersError = IListUsersErrors[keyof IListUsersErrors] | AdminUsersRepository.Error;\n\n// Use case interface\nexport interface IListUsers {\n execute(input?: ListUsersInput): Promise<Result<AdminUser[], ListUsersError>>;\n}\n\n/** List all admin users. */\nexport const ListUsersUseCase = createAbstraction<IListUsers>(\"ListUsersUseCase\");\n\n// Namespace exports\nexport namespace ListUsersUseCase {\n export type Interface = IListUsers;\n export type Error = ListUsersError;\n}\n"],"mappings":"AAAA,SAASA,iBAAiB,QAAQ,qBAAqB;;AAOvD;;AAKA;;AAGA;;AAKA;AACA,OAAO,MAAMC,gBAAgB,GAAGD,iBAAiB,CAAa,kBAAkB,CAAC;;AAEjF","ignoreList":[]}
@@ -1 +1,4 @@
1
- export declare const ListUsersFeature: import("@webiny/feature/api/createFeature.js").FeatureDefinition<unknown>;
1
+ export declare const ListUsersFeature: {
2
+ name: string;
3
+ register(container: import("@webiny/di").Container): void;
4
+ };
@@ -23,7 +23,7 @@ class UpdateUserUseCaseImpl {
23
23
  // 2. Validate input
24
24
  const validation = updateUserValidation.safeParse(input);
25
25
  if (!validation.success) {
26
- return Result.fail(new UserValidationError(validation.error.errors[0].message));
26
+ return Result.fail(new UserValidationError(validation.error.issues[0].message));
27
27
  }
28
28
 
29
29
  // If the input contains email, check if it is free to use.
@@ -1 +1 @@
1
- {"version":3,"names":["createImplementation","Result","IdentityContext","EventPublisher","UpdateUserUseCase","UseCaseAbstraction","AdminUsersRepository","updateUserValidation","NotAuthorizedError","EmailTakenError","UserValidationError","UserBeforeUpdateEvent","UserAfterUpdateEvent","UpdateUserUseCaseImpl","constructor","identityContext","eventPublisher","repository","execute","id","input","permission","getPermission","fail","validation","safeParse","success","error","errors","message","email","existingUserResult","get","isOk","value","getUserResult","isFail","originalUser","updateData","structuredClone","data","publish","user","updatedUser","result","update","ok","abstraction","implementation","dependencies"],"sources":["UpdateUserUseCase.ts"],"sourcesContent":["import { createImplementation } from \"@webiny/feature/api\";\nimport { Result } from \"@webiny/feature/api\";\nimport { IdentityContext } from \"~/features/security/IdentityContext/index.js\";\nimport { EventPublisher } from \"~/features/eventPublisher/index.js\";\nimport { UpdateUserUseCase as UseCaseAbstraction } from \"./abstractions.js\";\nimport { AdminUsersRepository } from \"~/features/users/shared/abstractions.js\";\nimport { updateUserValidation } from \"./schema.js\";\nimport {\n NotAuthorizedError,\n EmailTakenError,\n UserValidationError\n} from \"~/features/users/shared/errors.js\";\nimport { UserBeforeUpdateEvent, UserAfterUpdateEvent } from \"./events.js\";\nimport type { AdminUser } from \"~/features/users/shared/types.js\";\nimport type { UpdateUserInput } from \"~/features/users/shared/types.js\";\n\nclass UpdateUserUseCaseImpl implements UseCaseAbstraction.Interface {\n constructor(\n private identityContext: IdentityContext.Interface,\n private eventPublisher: EventPublisher.Interface,\n private repository: AdminUsersRepository.Interface\n ) {}\n\n async execute(\n id: string,\n input: UpdateUserInput\n ): Promise<Result<AdminUser, UseCaseAbstraction.Error>> {\n // 1. Check permission\n const permission = await this.identityContext.getPermission(\"adminUsers.user\");\n if (!permission) {\n return Result.fail(new NotAuthorizedError());\n }\n\n // 2. Validate input\n const validation = updateUserValidation.safeParse(input);\n if (!validation.success) {\n return Result.fail(new UserValidationError(validation.error.errors[0].message));\n }\n\n // If the input contains email, check if it is free to use.\n if (input.email) {\n const existingUserResult = await this.repository.get({ email: input.email });\n if (existingUserResult.isOk()) {\n if (existingUserResult.value.id !== id) {\n return Result.fail(new EmailTakenError(input.email));\n }\n }\n }\n // 3. Get existing user\n const getUserResult = await this.repository.get({ id });\n if (getUserResult.isFail()) {\n return Result.fail(getUserResult.error);\n }\n\n const originalUser = getUserResult.value;\n\n // 4. Clone update data for event modification\n const updateData = structuredClone(validation.data);\n\n // 5. Publish before event\n await this.eventPublisher.publish(\n new UserBeforeUpdateEvent({ user: originalUser, updateData, input: validation.data })\n );\n\n // 6. Merge updates with existing user\n const updatedUser: AdminUser = {\n ...originalUser,\n ...updateData\n };\n\n // 7. Update user via repository\n const result = await this.repository.update(updatedUser);\n if (result.isFail()) {\n return Result.fail(result.error);\n }\n\n // 8. Publish after event\n await this.eventPublisher.publish(\n new UserAfterUpdateEvent({\n originalUser,\n updatedUser: result.value,\n input: validation.data\n })\n );\n\n return Result.ok(result.value);\n }\n}\n\nexport const UpdateUserUseCase = createImplementation({\n abstraction: UseCaseAbstraction,\n implementation: UpdateUserUseCaseImpl,\n dependencies: [IdentityContext, EventPublisher, AdminUsersRepository]\n});\n"],"mappings":"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","ignoreList":[]}
1
+ {"version":3,"names":["createImplementation","Result","IdentityContext","EventPublisher","UpdateUserUseCase","UseCaseAbstraction","AdminUsersRepository","updateUserValidation","NotAuthorizedError","EmailTakenError","UserValidationError","UserBeforeUpdateEvent","UserAfterUpdateEvent","UpdateUserUseCaseImpl","constructor","identityContext","eventPublisher","repository","execute","id","input","permission","getPermission","fail","validation","safeParse","success","error","issues","message","email","existingUserResult","get","isOk","value","getUserResult","isFail","originalUser","updateData","structuredClone","data","publish","user","updatedUser","result","update","ok","abstraction","implementation","dependencies"],"sources":["UpdateUserUseCase.ts"],"sourcesContent":["import { createImplementation } from \"@webiny/feature/api\";\nimport { Result } from \"@webiny/feature/api\";\nimport { IdentityContext } from \"~/features/security/IdentityContext/index.js\";\nimport { EventPublisher } from \"~/features/eventPublisher/index.js\";\nimport { UpdateUserUseCase as UseCaseAbstraction } from \"./abstractions.js\";\nimport { AdminUsersRepository } from \"~/features/users/shared/abstractions.js\";\nimport { updateUserValidation } from \"./schema.js\";\nimport {\n NotAuthorizedError,\n EmailTakenError,\n UserValidationError\n} from \"~/features/users/shared/errors.js\";\nimport { UserBeforeUpdateEvent, UserAfterUpdateEvent } from \"./events.js\";\nimport type { AdminUser } from \"~/features/users/shared/types.js\";\nimport type { UpdateUserInput } from \"~/features/users/shared/types.js\";\n\nclass UpdateUserUseCaseImpl implements UseCaseAbstraction.Interface {\n constructor(\n private identityContext: IdentityContext.Interface,\n private eventPublisher: EventPublisher.Interface,\n private repository: AdminUsersRepository.Interface\n ) {}\n\n async execute(\n id: string,\n input: UpdateUserInput\n ): Promise<Result<AdminUser, UseCaseAbstraction.Error>> {\n // 1. Check permission\n const permission = await this.identityContext.getPermission(\"adminUsers.user\");\n if (!permission) {\n return Result.fail(new NotAuthorizedError());\n }\n\n // 2. Validate input\n const validation = updateUserValidation.safeParse(input);\n if (!validation.success) {\n return Result.fail(new UserValidationError(validation.error.issues[0].message));\n }\n\n // If the input contains email, check if it is free to use.\n if (input.email) {\n const existingUserResult = await this.repository.get({ email: input.email });\n if (existingUserResult.isOk()) {\n if (existingUserResult.value.id !== id) {\n return Result.fail(new EmailTakenError(input.email));\n }\n }\n }\n // 3. Get existing user\n const getUserResult = await this.repository.get({ id });\n if (getUserResult.isFail()) {\n return Result.fail(getUserResult.error);\n }\n\n const originalUser = getUserResult.value;\n\n // 4. Clone update data for event modification\n const updateData = structuredClone(validation.data);\n\n // 5. Publish before event\n await this.eventPublisher.publish(\n new UserBeforeUpdateEvent({ user: originalUser, updateData, input: validation.data })\n );\n\n // 6. Merge updates with existing user\n const updatedUser: AdminUser = {\n ...originalUser,\n ...updateData\n };\n\n // 7. Update user via repository\n const result = await this.repository.update(updatedUser);\n if (result.isFail()) {\n return Result.fail(result.error);\n }\n\n // 8. Publish after event\n await this.eventPublisher.publish(\n new UserAfterUpdateEvent({\n originalUser,\n updatedUser: result.value,\n input: validation.data\n })\n );\n\n return Result.ok(result.value);\n }\n}\n\nexport const UpdateUserUseCase = createImplementation({\n abstraction: UseCaseAbstraction,\n implementation: UpdateUserUseCaseImpl,\n dependencies: [IdentityContext, EventPublisher, AdminUsersRepository]\n});\n"],"mappings":"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","ignoreList":[]}
@@ -12,6 +12,7 @@ type UpdateUserError = IUpdateUserErrors[keyof IUpdateUserErrors] | AdminUsersRe
12
12
  export interface IUpdateUser {
13
13
  execute(id: string, input: UpdateUserInput): Promise<Result<AdminUser, UpdateUserError>>;
14
14
  }
15
+ /** Update an existing admin user. */
15
16
  export declare const UpdateUserUseCase: import("@webiny/di").Abstraction<IUpdateUser>;
16
17
  export declare namespace UpdateUserUseCase {
17
18
  type Interface = IUpdateUser;
@@ -6,7 +6,7 @@ import { createAbstraction } from "@webiny/feature/api";
6
6
 
7
7
  // Use case interface
8
8
 
9
- // Abstraction constant
9
+ /** Update an existing admin user. */
10
10
  export const UpdateUserUseCase = createAbstraction("UpdateUserUseCase");
11
11
 
12
12
  // Namespace exports
@@ -1 +1 @@
1
- {"version":3,"names":["createAbstraction","UpdateUserUseCase"],"sources":["abstractions.ts"],"sourcesContent":["import { createAbstraction } from \"@webiny/feature/api\";\nimport { Result } from \"@webiny/feature/api\";\nimport type { AdminUser } from \"~/features/users/shared/types.js\";\nimport type { UpdateUserInput } from \"~/features/users/shared/types.js\";\nimport { AdminUsersRepository } from \"~/features/users/shared/abstractions.js\";\nimport {\n NotAuthorizedError,\n EmailTakenError,\n UserValidationError\n} from \"~/features/users/shared/errors.js\";\n\n// Use case specific errors\nexport interface IUpdateUserErrors {\n notAuthorized: NotAuthorizedError;\n validation: UserValidationError;\n userExists: EmailTakenError;\n}\n\n// Combined error type (use case errors + repository errors)\ntype UpdateUserError = IUpdateUserErrors[keyof IUpdateUserErrors] | AdminUsersRepository.Error;\n\n// Use case interface\nexport interface IUpdateUser {\n execute(id: string, input: UpdateUserInput): Promise<Result<AdminUser, UpdateUserError>>;\n}\n\n// Abstraction constant\nexport const UpdateUserUseCase = createAbstraction<IUpdateUser>(\"UpdateUserUseCase\");\n\n// Namespace exports\nexport namespace UpdateUserUseCase {\n export type Interface = IUpdateUser;\n export type Error = UpdateUserError;\n}\n\n// Event payload types\nexport interface UserBeforeUpdatePayload {\n user: AdminUser;\n updateData: Partial<AdminUser>;\n input: UpdateUserInput;\n}\n\nexport interface UserAfterUpdatePayload {\n originalUser: AdminUser;\n updatedUser: AdminUser;\n input: UpdateUserInput;\n}\n"],"mappings":"AAAA,SAASA,iBAAiB,QAAQ,qBAAqB;;AAWvD;;AAOA;;AAGA;;AAKA;AACA,OAAO,MAAMC,iBAAiB,GAAGD,iBAAiB,CAAc,mBAAmB,CAAC;;AAEpF;;AAMA","ignoreList":[]}
1
+ {"version":3,"names":["createAbstraction","UpdateUserUseCase"],"sources":["abstractions.ts"],"sourcesContent":["import { createAbstraction } from \"@webiny/feature/api\";\nimport { Result } from \"@webiny/feature/api\";\nimport type { AdminUser } from \"~/features/users/shared/types.js\";\nimport type { UpdateUserInput } from \"~/features/users/shared/types.js\";\nimport { AdminUsersRepository } from \"~/features/users/shared/abstractions.js\";\nimport {\n NotAuthorizedError,\n EmailTakenError,\n UserValidationError\n} from \"~/features/users/shared/errors.js\";\n\n// Use case specific errors\nexport interface IUpdateUserErrors {\n notAuthorized: NotAuthorizedError;\n validation: UserValidationError;\n userExists: EmailTakenError;\n}\n\n// Combined error type (use case errors + repository errors)\ntype UpdateUserError = IUpdateUserErrors[keyof IUpdateUserErrors] | AdminUsersRepository.Error;\n\n// Use case interface\nexport interface IUpdateUser {\n execute(id: string, input: UpdateUserInput): Promise<Result<AdminUser, UpdateUserError>>;\n}\n\n/** Update an existing admin user. */\nexport const UpdateUserUseCase = createAbstraction<IUpdateUser>(\"UpdateUserUseCase\");\n\n// Namespace exports\nexport namespace UpdateUserUseCase {\n export type Interface = IUpdateUser;\n export type Error = UpdateUserError;\n}\n\n// Event payload types\nexport interface UserBeforeUpdatePayload {\n user: AdminUser;\n updateData: Partial<AdminUser>;\n input: UpdateUserInput;\n}\n\nexport interface UserAfterUpdatePayload {\n originalUser: AdminUser;\n updatedUser: AdminUser;\n input: UpdateUserInput;\n}\n"],"mappings":"AAAA,SAASA,iBAAiB,QAAQ,qBAAqB;;AAWvD;;AAOA;;AAGA;;AAKA;AACA,OAAO,MAAMC,iBAAiB,GAAGD,iBAAiB,CAAc,mBAAmB,CAAC;;AAEpF;;AAMA","ignoreList":[]}
@@ -5,8 +5,9 @@ export declare class UserBeforeUpdateEvent extends DomainEvent<UserBeforeUpdateP
5
5
  eventType: "user.beforeUpdate";
6
6
  getHandlerAbstraction(): import("@webiny/di").Abstraction<IEventHandler<UserBeforeUpdateEvent>>;
7
7
  }
8
- export declare const UserBeforeUpdateHandler: import("@webiny/di").Abstraction<IEventHandler<UserBeforeUpdateEvent>>;
9
- export declare namespace UserBeforeUpdateHandler {
8
+ /** Hook into user lifecycle before a user is updated. */
9
+ export declare const UserBeforeUpdateEventHandler: import("@webiny/di").Abstraction<IEventHandler<UserBeforeUpdateEvent>>;
10
+ export declare namespace UserBeforeUpdateEventHandler {
10
11
  type Interface = IEventHandler<UserBeforeUpdateEvent>;
11
12
  type Event = UserBeforeUpdateEvent;
12
13
  }
@@ -14,8 +15,9 @@ export declare class UserAfterUpdateEvent extends DomainEvent<UserAfterUpdatePay
14
15
  eventType: "user.afterUpdate";
15
16
  getHandlerAbstraction(): import("@webiny/di").Abstraction<IEventHandler<UserAfterUpdateEvent>>;
16
17
  }
17
- export declare const UserAfterUpdateHandler: import("@webiny/di").Abstraction<IEventHandler<UserAfterUpdateEvent>>;
18
- export declare namespace UserAfterUpdateHandler {
18
+ /** Hook into user lifecycle after a user is updated. */
19
+ export declare const UserAfterUpdateEventHandler: import("@webiny/di").Abstraction<IEventHandler<UserAfterUpdateEvent>>;
20
+ export declare namespace UserAfterUpdateEventHandler {
19
21
  type Interface = IEventHandler<UserAfterUpdateEvent>;
20
22
  type Event = UserAfterUpdateEvent;
21
23
  }
@@ -4,17 +4,21 @@ import { DomainEvent } from "../../eventPublisher/index.js";
4
4
  export class UserBeforeUpdateEvent extends DomainEvent {
5
5
  eventType = "user.beforeUpdate";
6
6
  getHandlerAbstraction() {
7
- return UserBeforeUpdateHandler;
7
+ return UserBeforeUpdateEventHandler;
8
8
  }
9
9
  }
10
- export const UserBeforeUpdateHandler = createAbstraction("UserBeforeUpdateHandler");
10
+
11
+ /** Hook into user lifecycle before a user is updated. */
12
+ export const UserBeforeUpdateEventHandler = createAbstraction("UserBeforeUpdateEventHandler");
11
13
  // After Update Event
12
14
  export class UserAfterUpdateEvent extends DomainEvent {
13
15
  eventType = "user.afterUpdate";
14
16
  getHandlerAbstraction() {
15
- return UserAfterUpdateHandler;
17
+ return UserAfterUpdateEventHandler;
16
18
  }
17
19
  }
18
- export const UserAfterUpdateHandler = createAbstraction("UserAfterUpdateHandler");
20
+
21
+ /** Hook into user lifecycle after a user is updated. */
22
+ export const UserAfterUpdateEventHandler = createAbstraction("UserAfterUpdateEventHandler");
19
23
 
20
24
  //# sourceMappingURL=events.js.map
@@ -1 +1 @@
1
- {"version":3,"names":["createAbstraction","DomainEvent","UserBeforeUpdateEvent","eventType","getHandlerAbstraction","UserBeforeUpdateHandler","UserAfterUpdateEvent","UserAfterUpdateHandler"],"sources":["events.ts"],"sourcesContent":["import { createAbstraction } from \"@webiny/feature/api\";\nimport { DomainEvent } from \"~/features/eventPublisher/index.js\";\nimport type { IEventHandler } from \"~/features/eventPublisher/index.js\";\nimport type { UserBeforeUpdatePayload, UserAfterUpdatePayload } from \"./abstractions.js\";\n\n// Before Update Event\nexport class UserBeforeUpdateEvent extends DomainEvent<UserBeforeUpdatePayload> {\n eventType = \"user.beforeUpdate\" as const;\n\n getHandlerAbstraction() {\n return UserBeforeUpdateHandler;\n }\n}\n\nexport const UserBeforeUpdateHandler =\n createAbstraction<IEventHandler<UserBeforeUpdateEvent>>(\"UserBeforeUpdateHandler\");\n\nexport namespace UserBeforeUpdateHandler {\n export type Interface = IEventHandler<UserBeforeUpdateEvent>;\n export type Event = UserBeforeUpdateEvent;\n}\n\n// After Update Event\nexport class UserAfterUpdateEvent extends DomainEvent<UserAfterUpdatePayload> {\n eventType = \"user.afterUpdate\" as const;\n\n getHandlerAbstraction() {\n return UserAfterUpdateHandler;\n }\n}\n\nexport const UserAfterUpdateHandler =\n createAbstraction<IEventHandler<UserAfterUpdateEvent>>(\"UserAfterUpdateHandler\");\n\nexport namespace UserAfterUpdateHandler {\n export type Interface = IEventHandler<UserAfterUpdateEvent>;\n export type Event = UserAfterUpdateEvent;\n}\n"],"mappings":"AAAA,SAASA,iBAAiB,QAAQ,qBAAqB;AACvD,SAASC,WAAW;AAIpB;AACA,OAAO,MAAMC,qBAAqB,SAASD,WAAW,CAA0B;EAC5EE,SAAS,GAAG,mBAAmB;EAE/BC,qBAAqBA,CAAA,EAAG;IACpB,OAAOC,uBAAuB;EAClC;AACJ;AAEA,OAAO,MAAMA,uBAAuB,GAChCL,iBAAiB,CAAuC,yBAAyB,CAAC;AAOtF;AACA,OAAO,MAAMM,oBAAoB,SAASL,WAAW,CAAyB;EAC1EE,SAAS,GAAG,kBAAkB;EAE9BC,qBAAqBA,CAAA,EAAG;IACpB,OAAOG,sBAAsB;EACjC;AACJ;AAEA,OAAO,MAAMA,sBAAsB,GAC/BP,iBAAiB,CAAsC,wBAAwB,CAAC","ignoreList":[]}
1
+ {"version":3,"names":["createAbstraction","DomainEvent","UserBeforeUpdateEvent","eventType","getHandlerAbstraction","UserBeforeUpdateEventHandler","UserAfterUpdateEvent","UserAfterUpdateEventHandler"],"sources":["events.ts"],"sourcesContent":["import { createAbstraction } from \"@webiny/feature/api\";\nimport { DomainEvent } from \"~/features/eventPublisher/index.js\";\nimport type { IEventHandler } from \"~/features/eventPublisher/index.js\";\nimport type { UserBeforeUpdatePayload, UserAfterUpdatePayload } from \"./abstractions.js\";\n\n// Before Update Event\nexport class UserBeforeUpdateEvent extends DomainEvent<UserBeforeUpdatePayload> {\n eventType = \"user.beforeUpdate\" as const;\n\n getHandlerAbstraction() {\n return UserBeforeUpdateEventHandler;\n }\n}\n\n/** Hook into user lifecycle before a user is updated. */\nexport const UserBeforeUpdateEventHandler = createAbstraction<IEventHandler<UserBeforeUpdateEvent>>(\n \"UserBeforeUpdateEventHandler\"\n);\n\nexport namespace UserBeforeUpdateEventHandler {\n export type Interface = IEventHandler<UserBeforeUpdateEvent>;\n export type Event = UserBeforeUpdateEvent;\n}\n\n// After Update Event\nexport class UserAfterUpdateEvent extends DomainEvent<UserAfterUpdatePayload> {\n eventType = \"user.afterUpdate\" as const;\n\n getHandlerAbstraction() {\n return UserAfterUpdateEventHandler;\n }\n}\n\n/** Hook into user lifecycle after a user is updated. */\nexport const UserAfterUpdateEventHandler = createAbstraction<IEventHandler<UserAfterUpdateEvent>>(\n \"UserAfterUpdateEventHandler\"\n);\n\nexport namespace UserAfterUpdateEventHandler {\n export type Interface = IEventHandler<UserAfterUpdateEvent>;\n export type Event = UserAfterUpdateEvent;\n}\n"],"mappings":"AAAA,SAASA,iBAAiB,QAAQ,qBAAqB;AACvD,SAASC,WAAW;AAIpB;AACA,OAAO,MAAMC,qBAAqB,SAASD,WAAW,CAA0B;EAC5EE,SAAS,GAAG,mBAAmB;EAE/BC,qBAAqBA,CAAA,EAAG;IACpB,OAAOC,4BAA4B;EACvC;AACJ;;AAEA;AACA,OAAO,MAAMA,4BAA4B,GAAGL,iBAAiB,CACzD,8BACJ,CAAC;AAOD;AACA,OAAO,MAAMM,oBAAoB,SAASL,WAAW,CAAyB;EAC1EE,SAAS,GAAG,kBAAkB;EAE9BC,qBAAqBA,CAAA,EAAG;IACpB,OAAOG,2BAA2B;EACtC;AACJ;;AAEA;AACA,OAAO,MAAMA,2BAA2B,GAAGP,iBAAiB,CACxD,6BACJ,CAAC","ignoreList":[]}
@@ -1 +1,4 @@
1
- export declare const UpdateUserFeature: import("@webiny/feature/api/createFeature.js").FeatureDefinition<unknown>;
1
+ export declare const UpdateUserFeature: {
2
+ name: string;
3
+ register(container: import("@webiny/di").Container): void;
4
+ };
@@ -6,33 +6,7 @@ export declare const updateUserValidation: z.ZodObject<{
6
6
  avatar: z.ZodNullable<z.ZodOptional<z.ZodObject<{
7
7
  id: z.ZodString;
8
8
  src: z.ZodString;
9
- }, "strip", z.ZodTypeAny, {
10
- id: string;
11
- src: string;
12
- }, {
13
- id: string;
14
- src: string;
15
- }>>>;
16
- roles: z.ZodOptional<z.ZodArray<z.ZodString, "many">>;
17
- teams: z.ZodOptional<z.ZodArray<z.ZodString, "many">>;
18
- }, "strip", z.ZodTypeAny, {
19
- firstName?: string | undefined;
20
- lastName?: string | undefined;
21
- displayName?: string | undefined;
22
- roles?: string[] | undefined;
23
- teams?: string[] | undefined;
24
- avatar?: {
25
- id: string;
26
- src: string;
27
- } | null | undefined;
28
- }, {
29
- firstName?: string | undefined;
30
- lastName?: string | undefined;
31
- displayName?: string | undefined;
32
- roles?: string[] | undefined;
33
- teams?: string[] | undefined;
34
- avatar?: {
35
- id: string;
36
- src: string;
37
- } | null | undefined;
38
- }>;
9
+ }, z.core.$strip>>>;
10
+ roles: z.ZodOptional<z.ZodArray<z.ZodString>>;
11
+ teams: z.ZodOptional<z.ZodArray<z.ZodString>>;
12
+ }, z.core.$strip>;