@webiny/api-core 0.0.0-unstable.e622468070 → 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 (628) hide show
  1. package/ApiCoreFeature.d.ts +5 -1
  2. package/ApiCoreFeature.js +8 -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/{buildParams.d.ts → build-params.d.ts} +1 -0
  11. package/exports/api/build-params.js +4 -0
  12. package/exports/api/build-params.js.map +1 -0
  13. package/exports/api/{eventPublisher.js → event-publisher.d.ts} +1 -2
  14. package/exports/api/event-publisher.js +4 -0
  15. package/exports/api/event-publisher.js.map +1 -0
  16. package/exports/api/{keyValueStore.d.ts → key-value-store.d.ts} +1 -0
  17. package/exports/api/key-value-store.js +4 -0
  18. package/exports/api/key-value-store.js.map +1 -0
  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 +7 -0
  23. package/exports/api/security/api-key.js +9 -0
  24. package/exports/api/security/api-key.js.map +1 -0
  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/FeatureFlags.d.ts +12 -0
  88. package/features/featureFlags/FeatureFlags.js +18 -0
  89. package/features/featureFlags/FeatureFlags.js.map +1 -0
  90. package/features/featureFlags/abstractions.d.ts +8 -0
  91. package/features/featureFlags/abstractions.js +4 -0
  92. package/features/featureFlags/abstractions.js.map +1 -0
  93. package/features/featureFlags/feature.d.ts +5 -0
  94. package/features/featureFlags/feature.js +10 -0
  95. package/features/featureFlags/feature.js.map +1 -0
  96. package/features/keyValueStore/GlobalKeyValueStore.js +3 -1
  97. package/features/keyValueStore/GlobalKeyValueStore.js.map +1 -1
  98. package/features/keyValueStore/KeyValueStoreRepository.d.ts +2 -2
  99. package/features/keyValueStore/KeyValueStoreRepository.js +2 -2
  100. package/features/keyValueStore/KeyValueStoreRepository.js.map +1 -1
  101. package/features/keyValueStore/abstractions.d.ts +10 -2
  102. package/features/keyValueStore/abstractions.js +4 -0
  103. package/features/keyValueStore/abstractions.js.map +1 -1
  104. package/features/keyValueStore/feature.d.ts +4 -1
  105. package/features/keyValueStore/feature.js.map +1 -1
  106. package/features/logger/abstractions.d.ts +1 -0
  107. package/features/logger/abstractions.js +1 -0
  108. package/features/logger/abstractions.js.map +1 -1
  109. package/features/logger/feature.d.ts +4 -1
  110. package/features/masker/Masker.d.ts +8 -0
  111. package/features/masker/Masker.js +21 -0
  112. package/features/masker/Masker.js.map +1 -0
  113. package/features/masker/abstractions.d.ts +11 -0
  114. package/features/masker/abstractions.js +4 -0
  115. package/features/masker/abstractions.js.map +1 -0
  116. package/features/masker/feature.d.ts +4 -0
  117. package/features/masker/feature.js +10 -0
  118. package/features/masker/feature.js.map +1 -0
  119. package/features/masker/index.d.ts +1 -0
  120. package/features/masker/index.js +3 -0
  121. package/features/masker/index.js.map +1 -0
  122. package/features/security/IdentityContext/IdentityContext.js +1 -1
  123. package/features/security/IdentityContext/IdentityContext.js.map +1 -1
  124. package/features/security/IdentityContext/abstractions.d.ts +1 -0
  125. package/features/security/IdentityContext/abstractions.js +1 -0
  126. package/features/security/IdentityContext/abstractions.js.map +1 -1
  127. package/features/security/IdentityContext/feature.d.ts +4 -1
  128. package/features/security/SecurityFeature.d.ts +5 -1
  129. package/features/security/apiKeys/CreateApiKey/CreateApiKeyUseCase.js +1 -1
  130. package/features/security/apiKeys/CreateApiKey/CreateApiKeyUseCase.js.map +1 -1
  131. package/features/security/apiKeys/CreateApiKey/abstractions.d.ts +1 -0
  132. package/features/security/apiKeys/CreateApiKey/abstractions.js +1 -0
  133. package/features/security/apiKeys/CreateApiKey/abstractions.js.map +1 -1
  134. package/features/security/apiKeys/CreateApiKey/events.d.ts +6 -4
  135. package/features/security/apiKeys/CreateApiKey/events.js +8 -4
  136. package/features/security/apiKeys/CreateApiKey/events.js.map +1 -1
  137. package/features/security/apiKeys/CreateApiKey/feature.d.ts +4 -1
  138. package/features/security/apiKeys/DeleteApiKey/abstractions.d.ts +1 -0
  139. package/features/security/apiKeys/DeleteApiKey/abstractions.js +1 -0
  140. package/features/security/apiKeys/DeleteApiKey/abstractions.js.map +1 -1
  141. package/features/security/apiKeys/DeleteApiKey/events.d.ts +6 -4
  142. package/features/security/apiKeys/DeleteApiKey/events.js +8 -4
  143. package/features/security/apiKeys/DeleteApiKey/events.js.map +1 -1
  144. package/features/security/apiKeys/DeleteApiKey/feature.d.ts +4 -1
  145. package/features/security/apiKeys/GetApiKey/abstractions.d.ts +1 -0
  146. package/features/security/apiKeys/GetApiKey/abstractions.js +1 -0
  147. package/features/security/apiKeys/GetApiKey/abstractions.js.map +1 -1
  148. package/features/security/apiKeys/GetApiKey/feature.d.ts +4 -1
  149. package/features/security/apiKeys/GetApiKeyBySlug/abstractions.d.ts +1 -0
  150. package/features/security/apiKeys/GetApiKeyBySlug/abstractions.js +1 -0
  151. package/features/security/apiKeys/GetApiKeyBySlug/abstractions.js.map +1 -1
  152. package/features/security/apiKeys/GetApiKeyBySlug/feature.d.ts +4 -1
  153. package/features/security/apiKeys/GetApiKeyByToken/abstractions.d.ts +1 -0
  154. package/features/security/apiKeys/GetApiKeyByToken/abstractions.js +1 -0
  155. package/features/security/apiKeys/GetApiKeyByToken/abstractions.js.map +1 -1
  156. package/features/security/apiKeys/GetApiKeyByToken/feature.d.ts +4 -1
  157. package/features/security/apiKeys/ListApiKeys/ListApiKeysUseCase.js +1 -1
  158. package/features/security/apiKeys/ListApiKeys/ListApiKeysUseCase.js.map +1 -1
  159. package/features/security/apiKeys/ListApiKeys/abstractions.d.ts +1 -0
  160. package/features/security/apiKeys/ListApiKeys/abstractions.js +1 -0
  161. package/features/security/apiKeys/ListApiKeys/abstractions.js.map +1 -1
  162. package/features/security/apiKeys/ListApiKeys/feature.d.ts +4 -1
  163. package/features/security/apiKeys/UpdateApiKey/UpdateApiKeyUseCase.js +1 -1
  164. package/features/security/apiKeys/UpdateApiKey/UpdateApiKeyUseCase.js.map +1 -1
  165. package/features/security/apiKeys/UpdateApiKey/abstractions.d.ts +1 -0
  166. package/features/security/apiKeys/UpdateApiKey/abstractions.js +1 -0
  167. package/features/security/apiKeys/UpdateApiKey/abstractions.js.map +1 -1
  168. package/features/security/apiKeys/UpdateApiKey/events.d.ts +6 -4
  169. package/features/security/apiKeys/UpdateApiKey/events.js +8 -4
  170. package/features/security/apiKeys/UpdateApiKey/events.js.map +1 -1
  171. package/features/security/apiKeys/UpdateApiKey/feature.d.ts +4 -1
  172. package/features/security/apiKeys/feature.d.ts +4 -1
  173. package/features/security/apiKeys/shared/abstractions.d.ts +5 -2
  174. package/features/security/apiKeys/shared/abstractions.js +3 -0
  175. package/features/security/apiKeys/shared/abstractions.js.map +1 -1
  176. package/features/security/apiKeys/shared/schemas.d.ts +10 -71
  177. package/features/security/apiKeys/shared/schemas.js +4 -4
  178. package/features/security/apiKeys/shared/schemas.js.map +1 -1
  179. package/features/security/authentication/AuthenticationContext/SetIdTokenCookie.d.ts +2 -2
  180. package/features/security/authentication/AuthenticationContext/SetIdTokenCookie.js +2 -2
  181. package/features/security/authentication/AuthenticationContext/SetIdTokenCookie.js.map +1 -1
  182. package/features/security/authentication/AuthenticationContext/abstractions.d.ts +1 -0
  183. package/features/security/authentication/AuthenticationContext/abstractions.js +1 -0
  184. package/features/security/authentication/AuthenticationContext/abstractions.js.map +1 -1
  185. package/features/security/authentication/AuthenticationContext/events.d.ts +6 -4
  186. package/features/security/authentication/AuthenticationContext/events.js +8 -4
  187. package/features/security/authentication/AuthenticationContext/events.js.map +1 -1
  188. package/features/security/authentication/AuthenticationContext/feature.d.ts +4 -1
  189. package/features/security/authentication/Authenticator/abstractions.d.ts +1 -0
  190. package/features/security/authentication/Authenticator/abstractions.js +1 -0
  191. package/features/security/authentication/Authenticator/abstractions.js.map +1 -1
  192. package/features/security/authorization/AuthorizationContext/AuthorizationContext.d.ts +1 -0
  193. package/features/security/authorization/AuthorizationContext/AuthorizationContext.js +14 -2
  194. package/features/security/authorization/AuthorizationContext/AuthorizationContext.js.map +1 -1
  195. package/features/security/authorization/AuthorizationContext/abstractions.d.ts +2 -0
  196. package/features/security/authorization/AuthorizationContext/abstractions.js +2 -0
  197. package/features/security/authorization/AuthorizationContext/abstractions.js.map +1 -1
  198. package/features/security/authorization/AuthorizationContext/feature.d.ts +4 -1
  199. package/features/security/authorization/Authorizer/abstractions.d.ts +1 -0
  200. package/features/security/authorization/Authorizer/abstractions.js +1 -0
  201. package/features/security/authorization/Authorizer/abstractions.js.map +1 -1
  202. package/features/security/authorization/GroupsTeamsAuthorizer/feature.d.ts +4 -1
  203. package/features/security/login/abstractions.d.ts +3 -2
  204. package/features/security/login/abstractions.js +4 -2
  205. package/features/security/login/abstractions.js.map +1 -1
  206. package/features/security/permissions/createPermissionSchema.d.ts +2 -0
  207. package/features/security/permissions/createPermissionSchema.js +8 -0
  208. package/features/security/permissions/createPermissionSchema.js.map +1 -0
  209. package/features/security/permissions/createPermissions.d.ts +8 -0
  210. package/features/security/permissions/createPermissions.js +250 -0
  211. package/features/security/permissions/createPermissions.js.map +1 -0
  212. package/features/security/permissions/index.d.ts +3 -0
  213. package/features/security/permissions/index.js +4 -0
  214. package/features/security/permissions/index.js.map +1 -0
  215. package/features/security/permissions/types.d.ts +137 -0
  216. package/features/security/permissions/types.js +3 -0
  217. package/features/security/permissions/types.js.map +1 -0
  218. package/features/security/roles/CreateRole/CreateRoleUseCase.d.ts +1 -3
  219. package/features/security/roles/CreateRole/CreateRoleUseCase.js +3 -7
  220. package/features/security/roles/CreateRole/CreateRoleUseCase.js.map +1 -1
  221. package/features/security/roles/CreateRole/abstractions.d.ts +1 -0
  222. package/features/security/roles/CreateRole/abstractions.js +1 -0
  223. package/features/security/roles/CreateRole/abstractions.js.map +1 -1
  224. package/features/security/roles/CreateRole/events.d.ts +6 -4
  225. package/features/security/roles/CreateRole/events.js +8 -4
  226. package/features/security/roles/CreateRole/events.js.map +1 -1
  227. package/features/security/roles/CreateRole/feature.d.ts +4 -1
  228. package/features/security/roles/CreateRole/schema.d.ts +2 -20
  229. package/features/security/roles/CreateRole/schema.js +2 -2
  230. package/features/security/roles/CreateRole/schema.js.map +1 -1
  231. package/features/security/roles/DeleteRole/abstractions.d.ts +1 -0
  232. package/features/security/roles/DeleteRole/abstractions.js +1 -0
  233. package/features/security/roles/DeleteRole/abstractions.js.map +1 -1
  234. package/features/security/roles/DeleteRole/events.d.ts +6 -4
  235. package/features/security/roles/DeleteRole/events.js +8 -4
  236. package/features/security/roles/DeleteRole/events.js.map +1 -1
  237. package/features/security/roles/DeleteRole/feature.d.ts +4 -1
  238. package/features/security/roles/GetRole/abstractions.d.ts +1 -0
  239. package/features/security/roles/GetRole/abstractions.js +1 -0
  240. package/features/security/roles/GetRole/abstractions.js.map +1 -1
  241. package/features/security/roles/GetRole/feature.d.ts +4 -1
  242. package/features/security/roles/ListRoles/abstractions.d.ts +1 -0
  243. package/features/security/roles/ListRoles/abstractions.js +1 -0
  244. package/features/security/roles/ListRoles/abstractions.js.map +1 -1
  245. package/features/security/roles/ListRoles/feature.d.ts +4 -1
  246. package/features/security/roles/UpdateRole/UpdateRoleUseCase.js +1 -1
  247. package/features/security/roles/UpdateRole/UpdateRoleUseCase.js.map +1 -1
  248. package/features/security/roles/UpdateRole/abstractions.d.ts +1 -0
  249. package/features/security/roles/UpdateRole/abstractions.js +1 -0
  250. package/features/security/roles/UpdateRole/abstractions.js.map +1 -1
  251. package/features/security/roles/UpdateRole/events.d.ts +6 -4
  252. package/features/security/roles/UpdateRole/events.js +8 -4
  253. package/features/security/roles/UpdateRole/events.js.map +1 -1
  254. package/features/security/roles/UpdateRole/feature.d.ts +4 -1
  255. package/features/security/roles/UpdateRole/schema.d.ts +2 -18
  256. package/features/security/roles/UpdateRole/schema.js +2 -2
  257. package/features/security/roles/UpdateRole/schema.js.map +1 -1
  258. package/features/security/roles/feature.d.ts +4 -1
  259. package/features/security/roles/feature.js +2 -0
  260. package/features/security/roles/feature.js.map +1 -1
  261. package/features/security/roles/shared/RoleProvider.d.ts +13 -0
  262. package/features/security/roles/shared/RoleProvider.js +29 -0
  263. package/features/security/roles/shared/RoleProvider.js.map +1 -0
  264. package/features/security/roles/shared/RolesRepository.d.ts +3 -1
  265. package/features/security/roles/shared/RolesRepository.js +19 -18
  266. package/features/security/roles/shared/RolesRepository.js.map +1 -1
  267. package/features/security/roles/shared/abstractions.d.ts +19 -0
  268. package/features/security/roles/shared/abstractions.js +3 -0
  269. package/features/security/roles/shared/abstractions.js.map +1 -1
  270. package/features/security/shared/abstractions.d.ts +5 -14
  271. package/features/security/shared/abstractions.js +3 -16
  272. package/features/security/shared/abstractions.js.map +1 -1
  273. package/features/security/teams/CreateTeam/CreateTeamUseCase.d.ts +1 -3
  274. package/features/security/teams/CreateTeam/CreateTeamUseCase.js +3 -7
  275. package/features/security/teams/CreateTeam/CreateTeamUseCase.js.map +1 -1
  276. package/features/security/teams/CreateTeam/abstractions.d.ts +1 -0
  277. package/features/security/teams/CreateTeam/abstractions.js +1 -0
  278. package/features/security/teams/CreateTeam/abstractions.js.map +1 -1
  279. package/features/security/teams/CreateTeam/events.d.ts +6 -4
  280. package/features/security/teams/CreateTeam/events.js +8 -4
  281. package/features/security/teams/CreateTeam/events.js.map +1 -1
  282. package/features/security/teams/CreateTeam/feature.d.ts +4 -1
  283. package/features/security/teams/CreateTeam/index.d.ts +1 -1
  284. package/features/security/teams/CreateTeam/index.js +1 -1
  285. package/features/security/teams/CreateTeam/index.js.map +1 -1
  286. package/features/security/teams/CreateTeam/schema.d.ts +2 -12
  287. package/features/security/teams/DeleteTeam/abstractions.d.ts +1 -0
  288. package/features/security/teams/DeleteTeam/abstractions.js +1 -0
  289. package/features/security/teams/DeleteTeam/abstractions.js.map +1 -1
  290. package/features/security/teams/DeleteTeam/events.d.ts +6 -4
  291. package/features/security/teams/DeleteTeam/events.js +8 -4
  292. package/features/security/teams/DeleteTeam/events.js.map +1 -1
  293. package/features/security/teams/DeleteTeam/feature.d.ts +4 -1
  294. package/features/security/teams/GetTeam/abstractions.d.ts +1 -0
  295. package/features/security/teams/GetTeam/abstractions.js +1 -0
  296. package/features/security/teams/GetTeam/abstractions.js.map +1 -1
  297. package/features/security/teams/GetTeam/feature.d.ts +4 -1
  298. package/features/security/teams/ListTeams/abstractions.d.ts +1 -0
  299. package/features/security/teams/ListTeams/abstractions.js +1 -0
  300. package/features/security/teams/ListTeams/abstractions.js.map +1 -1
  301. package/features/security/teams/ListTeams/feature.d.ts +4 -1
  302. package/features/security/teams/UpdateTeam/UpdateTeamUseCase.js +1 -1
  303. package/features/security/teams/UpdateTeam/UpdateTeamUseCase.js.map +1 -1
  304. package/features/security/teams/UpdateTeam/abstractions.d.ts +1 -0
  305. package/features/security/teams/UpdateTeam/abstractions.js +1 -0
  306. package/features/security/teams/UpdateTeam/abstractions.js.map +1 -1
  307. package/features/security/teams/UpdateTeam/events.d.ts +6 -4
  308. package/features/security/teams/UpdateTeam/events.js +8 -4
  309. package/features/security/teams/UpdateTeam/events.js.map +1 -1
  310. package/features/security/teams/UpdateTeam/feature.d.ts +4 -1
  311. package/features/security/teams/UpdateTeam/schema.d.ts +2 -10
  312. package/features/security/teams/feature.d.ts +4 -1
  313. package/features/security/teams/feature.js +6 -0
  314. package/features/security/teams/feature.js.map +1 -1
  315. package/features/security/teams/shared/TeamProvider.d.ts +13 -0
  316. package/features/security/teams/shared/TeamProvider.js +29 -0
  317. package/features/security/teams/shared/TeamProvider.js.map +1 -0
  318. package/features/security/teams/shared/TeamsRepository.js +20 -18
  319. package/features/security/teams/shared/TeamsRepository.js.map +1 -1
  320. package/features/security/teams/shared/abstractions.d.ts +18 -0
  321. package/features/security/teams/shared/abstractions.js +3 -0
  322. package/features/security/teams/shared/abstractions.js.map +1 -1
  323. package/features/security/teams/shared/decorators/TeamsRepositoryCachingDecorator.d.ts +17 -0
  324. package/features/security/teams/shared/decorators/TeamsRepositoryCachingDecorator.js +76 -0
  325. package/features/security/teams/shared/decorators/TeamsRepositoryCachingDecorator.js.map +1 -0
  326. package/features/security/utils/verifyJwtUsingJwk.d.ts +2 -4
  327. package/features/security/utils/verifyJwtUsingJwk.js +1 -1
  328. package/features/security/utils/verifyJwtUsingJwk.js.map +1 -1
  329. package/features/system/InstallSystem/abstractions.d.ts +4 -5
  330. package/features/system/InstallSystem/abstractions.js +3 -4
  331. package/features/system/InstallSystem/abstractions.js.map +1 -1
  332. package/features/system/InstallSystem/events.js +2 -2
  333. package/features/system/InstallSystem/events.js.map +1 -1
  334. package/features/system/InstallSystem/feature.d.ts +5 -1
  335. package/features/system/InstallSystem/index.d.ts +1 -1
  336. package/features/system/InstallSystem/index.js +1 -1
  337. package/features/system/InstallSystem/index.js.map +1 -1
  338. package/features/system/SystemFeature.d.ts +4 -1
  339. package/features/task/TaskController/abstractions.d.ts +1 -0
  340. package/features/task/TaskController/abstractions.js +1 -0
  341. package/features/task/TaskController/abstractions.js.map +1 -1
  342. package/features/task/TaskDefinition/abstractions.d.ts +7 -1
  343. package/features/task/TaskDefinition/abstractions.js +1 -0
  344. package/features/task/TaskDefinition/abstractions.js.map +1 -1
  345. package/features/task/TaskService/abstractions.d.ts +1 -0
  346. package/features/task/TaskService/abstractions.js +1 -0
  347. package/features/task/TaskService/abstractions.js.map +1 -1
  348. package/features/tenancy/CreateTenant/abstractions.d.ts +9 -7
  349. package/features/tenancy/CreateTenant/abstractions.js +7 -5
  350. package/features/tenancy/CreateTenant/abstractions.js.map +1 -1
  351. package/features/tenancy/CreateTenant/events.js +3 -3
  352. package/features/tenancy/CreateTenant/events.js.map +1 -1
  353. package/features/tenancy/CreateTenant/feature.d.ts +5 -1
  354. package/features/tenancy/CreateTenant/index.d.ts +1 -1
  355. package/features/tenancy/CreateTenant/index.js +1 -1
  356. package/features/tenancy/CreateTenant/index.js.map +1 -1
  357. package/features/tenancy/DeleteTenant/abstractions.d.ts +9 -4
  358. package/features/tenancy/DeleteTenant/abstractions.js +7 -2
  359. package/features/tenancy/DeleteTenant/abstractions.js.map +1 -1
  360. package/features/tenancy/DeleteTenant/events.js +3 -3
  361. package/features/tenancy/DeleteTenant/events.js.map +1 -1
  362. package/features/tenancy/DeleteTenant/feature.d.ts +5 -1
  363. package/features/tenancy/DeleteTenant/index.d.ts +1 -1
  364. package/features/tenancy/DeleteTenant/index.js +1 -1
  365. package/features/tenancy/DeleteTenant/index.js.map +1 -1
  366. package/features/tenancy/GetRootTenant/feature.d.ts +5 -1
  367. package/features/tenancy/GetTenantById/abstractions.d.ts +3 -0
  368. package/features/tenancy/GetTenantById/abstractions.js +3 -9
  369. package/features/tenancy/GetTenantById/abstractions.js.map +1 -1
  370. package/features/tenancy/GetTenantById/feature.d.ts +5 -1
  371. package/features/tenancy/InstallTenant/abstractions.d.ts +5 -11
  372. package/features/tenancy/InstallTenant/abstractions.js +4 -13
  373. package/features/tenancy/InstallTenant/abstractions.js.map +1 -1
  374. package/features/tenancy/InstallTenant/events.js +2 -2
  375. package/features/tenancy/InstallTenant/events.js.map +1 -1
  376. package/features/tenancy/InstallTenant/feature.d.ts +5 -1
  377. package/features/tenancy/InstallTenant/index.d.ts +1 -1
  378. package/features/tenancy/InstallTenant/index.js +1 -1
  379. package/features/tenancy/InstallTenant/index.js.map +1 -1
  380. package/features/tenancy/ListTenants/feature.d.ts +5 -1
  381. package/features/tenancy/TenancyFeature.d.ts +4 -1
  382. package/features/tenancy/TenancyFeature.js.map +1 -1
  383. package/features/tenancy/TenantContext/abstractions.d.ts +1 -0
  384. package/features/tenancy/TenantContext/abstractions.js +1 -0
  385. package/features/tenancy/TenantContext/abstractions.js.map +1 -1
  386. package/features/tenancy/TenantContext/feature.d.ts +4 -1
  387. package/features/tenancy/UpdateTenant/abstractions.d.ts +9 -4
  388. package/features/tenancy/UpdateTenant/abstractions.js +7 -2
  389. package/features/tenancy/UpdateTenant/abstractions.js.map +1 -1
  390. package/features/tenancy/UpdateTenant/events.js +3 -3
  391. package/features/tenancy/UpdateTenant/events.js.map +1 -1
  392. package/features/tenancy/UpdateTenant/feature.d.ts +5 -1
  393. package/features/tenancy/UpdateTenant/index.d.ts +1 -1
  394. package/features/tenancy/UpdateTenant/index.js +1 -1
  395. package/features/tenancy/UpdateTenant/index.js.map +1 -1
  396. package/features/users/AdminUsersFeature.d.ts +4 -1
  397. package/features/users/AdminUsersFeature.js.map +1 -1
  398. package/features/users/CreateUser/CreateUserUseCase.js +1 -1
  399. package/features/users/CreateUser/CreateUserUseCase.js.map +1 -1
  400. package/features/users/CreateUser/abstractions.d.ts +1 -0
  401. package/features/users/CreateUser/abstractions.js +1 -1
  402. package/features/users/CreateUser/abstractions.js.map +1 -1
  403. package/features/users/CreateUser/events.d.ts +6 -4
  404. package/features/users/CreateUser/events.js +8 -4
  405. package/features/users/CreateUser/events.js.map +1 -1
  406. package/features/users/CreateUser/feature.d.ts +4 -1
  407. package/features/users/CreateUser/schema.d.ts +4 -36
  408. package/features/users/DeleteUser/abstractions.d.ts +1 -0
  409. package/features/users/DeleteUser/abstractions.js +1 -1
  410. package/features/users/DeleteUser/abstractions.js.map +1 -1
  411. package/features/users/DeleteUser/events.d.ts +6 -4
  412. package/features/users/DeleteUser/events.js +8 -4
  413. package/features/users/DeleteUser/events.js.map +1 -1
  414. package/features/users/DeleteUser/feature.d.ts +4 -1
  415. package/features/users/ExternalIdpUserSync/ExternalIdpUserSyncHandler.d.ts +3 -3
  416. package/features/users/ExternalIdpUserSync/ExternalIdpUserSyncHandler.js +2 -2
  417. package/features/users/ExternalIdpUserSync/ExternalIdpUserSyncHandler.js.map +1 -1
  418. package/features/users/ExternalIdpUserSync/feature.d.ts +4 -1
  419. package/features/users/GetIdentityProfile/feature.d.ts +4 -1
  420. package/features/users/GetUser/abstractions.d.ts +1 -0
  421. package/features/users/GetUser/abstractions.js +1 -1
  422. package/features/users/GetUser/abstractions.js.map +1 -1
  423. package/features/users/GetUser/feature.d.ts +4 -1
  424. package/features/users/ListUserTeams/abstractions.d.ts +1 -0
  425. package/features/users/ListUserTeams/abstractions.js +1 -1
  426. package/features/users/ListUserTeams/abstractions.js.map +1 -1
  427. package/features/users/ListUserTeams/feature.d.ts +4 -1
  428. package/features/users/ListUsers/abstractions.d.ts +1 -0
  429. package/features/users/ListUsers/abstractions.js +1 -1
  430. package/features/users/ListUsers/abstractions.js.map +1 -1
  431. package/features/users/ListUsers/feature.d.ts +4 -1
  432. package/features/users/UpdateUser/UpdateUserUseCase.js +1 -1
  433. package/features/users/UpdateUser/UpdateUserUseCase.js.map +1 -1
  434. package/features/users/UpdateUser/abstractions.d.ts +1 -0
  435. package/features/users/UpdateUser/abstractions.js +1 -1
  436. package/features/users/UpdateUser/abstractions.js.map +1 -1
  437. package/features/users/UpdateUser/events.d.ts +6 -4
  438. package/features/users/UpdateUser/events.js +8 -4
  439. package/features/users/UpdateUser/events.js.map +1 -1
  440. package/features/users/UpdateUser/feature.d.ts +4 -1
  441. package/features/users/UpdateUser/schema.d.ts +4 -30
  442. package/features/users/shared/abstractions.d.ts +1 -0
  443. package/features/users/shared/abstractions.js +1 -1
  444. package/features/users/shared/abstractions.js.map +1 -1
  445. package/features/wcp/WcpContext/WcpContext.d.ts +5 -0
  446. package/features/wcp/WcpContext/WcpContext.js +15 -0
  447. package/features/wcp/WcpContext/WcpContext.js.map +1 -1
  448. package/features/wcp/WcpContext/abstractions.d.ts +1 -0
  449. package/features/wcp/WcpContext/abstractions.js.map +1 -1
  450. package/features/wcp/WcpContext/decorators/WcpContextWithFeatureFlagsDecorator.d.ts +94 -0
  451. package/features/wcp/WcpContext/decorators/WcpContextWithFeatureFlagsDecorator.js +142 -0
  452. package/features/wcp/WcpContext/decorators/WcpContextWithFeatureFlagsDecorator.js.map +1 -0
  453. package/features/wcp/WcpContext/feature.d.ts +5 -1
  454. package/features/wcp/WcpFeature.d.ts +4 -1
  455. package/features/wcp/WcpFeature.js +2 -0
  456. package/features/wcp/WcpFeature.js.map +1 -1
  457. package/graphql/security/NotAuthorizedResponse.d.ts +1 -0
  458. package/graphql/security/NotAuthorizedResponse.js +1 -0
  459. package/graphql/security/NotAuthorizedResponse.js.map +1 -1
  460. package/graphql/wcp/graphql.js +2 -1
  461. package/graphql/wcp/graphql.js.map +1 -1
  462. package/idp/abstractions.d.ts +4 -0
  463. package/idp/abstractions.js +4 -0
  464. package/idp/abstractions.js.map +1 -1
  465. package/idp/feature.d.ts +4 -1
  466. package/legacy/security/createSecurityContext.js +0 -11
  467. package/legacy/security/createSecurityContext.js.map +1 -1
  468. package/legacy/security/plugins/authenticateUsingHttpHeader.d.ts +1 -1
  469. package/legacy/wcp/LegacyWcpContext.d.ts +5 -0
  470. package/legacy/wcp/LegacyWcpContext.js +15 -0
  471. package/legacy/wcp/LegacyWcpContext.js.map +1 -1
  472. package/legacy/wcp/context.d.ts +1 -3
  473. package/legacy/wcp/context.js +4 -2
  474. package/legacy/wcp/context.js.map +1 -1
  475. package/models/base/BaseModel.js +2 -2
  476. package/models/base/BaseModel.js.map +1 -1
  477. package/models/base/ModelBuilder.d.ts +2 -2
  478. package/models/base/ModelBuilder.js +21 -2
  479. package/models/base/ModelBuilder.js.map +1 -1
  480. package/models/cms/FieldBuilder.d.ts +4 -3
  481. package/models/cms/FieldBuilder.js +17 -22
  482. package/models/cms/FieldBuilder.js.map +1 -1
  483. package/models/cms/FieldBuilderRegistry.d.ts +1 -1
  484. package/models/cms/FieldBuilderRegistry.js.map +1 -1
  485. package/models/cms/FieldDefinitionsBuilder.d.ts +1 -0
  486. package/models/cms/FieldDefinitionsBuilder.js +15 -17
  487. package/models/cms/FieldDefinitionsBuilder.js.map +1 -1
  488. package/models/cms/PrivateCmsModelBuilder.js +1 -1
  489. package/models/cms/PrivateCmsModelBuilder.js.map +1 -1
  490. package/models/cms/abstractions.d.ts +1 -1
  491. package/models/cms/abstractions.js.map +1 -1
  492. package/models/cms/fieldsBuilder.md +6 -4
  493. package/models/cms/types.d.ts +2 -2
  494. package/models/cms/types.js.map +1 -1
  495. package/models/simple/Page/abstractions.d.ts +1 -11
  496. package/package.json +28 -70
  497. package/types/security.d.ts +13 -10
  498. package/types/security.js.map +1 -1
  499. package/exports/api/buildParams.js +0 -3
  500. package/exports/api/buildParams.js.map +0 -1
  501. package/exports/api/eventPublisher.d.ts +0 -1
  502. package/exports/api/eventPublisher.js.map +0 -1
  503. package/exports/api/keyValueStore.js +0 -3
  504. package/exports/api/keyValueStore.js.map +0 -1
  505. package/exports/api/security/apiKey.d.ts +0 -7
  506. package/exports/api/security/apiKey.js +0 -9
  507. package/exports/api/security/apiKey.js.map +0 -1
  508. package/extensions/BuildParam.d.ts +0 -11
  509. package/extensions/BuildParam.js +0 -119
  510. package/extensions/BuildParam.js.map +0 -1
  511. package/extensions/GenericExtension.d.ts +0 -10
  512. package/extensions/GenericExtension.js +0 -7
  513. package/extensions/GenericExtension.js.map +0 -1
  514. package/extensions/eventHandlers/AfterAuthentication.d.ts +0 -10
  515. package/extensions/eventHandlers/AfterAuthentication.js +0 -9
  516. package/extensions/eventHandlers/AfterAuthentication.js.map +0 -1
  517. package/extensions/eventHandlers/ApiKeyAfterCreate.d.ts +0 -10
  518. package/extensions/eventHandlers/ApiKeyAfterCreate.js +0 -9
  519. package/extensions/eventHandlers/ApiKeyAfterCreate.js.map +0 -1
  520. package/extensions/eventHandlers/ApiKeyAfterDelete.d.ts +0 -10
  521. package/extensions/eventHandlers/ApiKeyAfterDelete.js +0 -9
  522. package/extensions/eventHandlers/ApiKeyAfterDelete.js.map +0 -1
  523. package/extensions/eventHandlers/ApiKeyAfterUpdate.d.ts +0 -10
  524. package/extensions/eventHandlers/ApiKeyAfterUpdate.js +0 -9
  525. package/extensions/eventHandlers/ApiKeyAfterUpdate.js.map +0 -1
  526. package/extensions/eventHandlers/ApiKeyBeforeCreate.d.ts +0 -10
  527. package/extensions/eventHandlers/ApiKeyBeforeCreate.js +0 -9
  528. package/extensions/eventHandlers/ApiKeyBeforeCreate.js.map +0 -1
  529. package/extensions/eventHandlers/ApiKeyBeforeDelete.d.ts +0 -10
  530. package/extensions/eventHandlers/ApiKeyBeforeDelete.js +0 -9
  531. package/extensions/eventHandlers/ApiKeyBeforeDelete.js.map +0 -1
  532. package/extensions/eventHandlers/ApiKeyBeforeUpdate.d.ts +0 -10
  533. package/extensions/eventHandlers/ApiKeyBeforeUpdate.js +0 -9
  534. package/extensions/eventHandlers/ApiKeyBeforeUpdate.js.map +0 -1
  535. package/extensions/eventHandlers/BeforeAuthentication.d.ts +0 -10
  536. package/extensions/eventHandlers/BeforeAuthentication.js +0 -9
  537. package/extensions/eventHandlers/BeforeAuthentication.js.map +0 -1
  538. package/extensions/eventHandlers/RoleAfterCreate.d.ts +0 -10
  539. package/extensions/eventHandlers/RoleAfterCreate.js +0 -9
  540. package/extensions/eventHandlers/RoleAfterCreate.js.map +0 -1
  541. package/extensions/eventHandlers/RoleAfterDelete.d.ts +0 -10
  542. package/extensions/eventHandlers/RoleAfterDelete.js +0 -9
  543. package/extensions/eventHandlers/RoleAfterDelete.js.map +0 -1
  544. package/extensions/eventHandlers/RoleAfterUpdate.d.ts +0 -10
  545. package/extensions/eventHandlers/RoleAfterUpdate.js +0 -9
  546. package/extensions/eventHandlers/RoleAfterUpdate.js.map +0 -1
  547. package/extensions/eventHandlers/RoleBeforeCreate.d.ts +0 -10
  548. package/extensions/eventHandlers/RoleBeforeCreate.js +0 -9
  549. package/extensions/eventHandlers/RoleBeforeCreate.js.map +0 -1
  550. package/extensions/eventHandlers/RoleBeforeDelete.d.ts +0 -10
  551. package/extensions/eventHandlers/RoleBeforeDelete.js +0 -9
  552. package/extensions/eventHandlers/RoleBeforeDelete.js.map +0 -1
  553. package/extensions/eventHandlers/RoleBeforeUpdate.d.ts +0 -10
  554. package/extensions/eventHandlers/RoleBeforeUpdate.js +0 -9
  555. package/extensions/eventHandlers/RoleBeforeUpdate.js.map +0 -1
  556. package/extensions/eventHandlers/SystemInstalled.d.ts +0 -10
  557. package/extensions/eventHandlers/SystemInstalled.js +0 -9
  558. package/extensions/eventHandlers/SystemInstalled.js.map +0 -1
  559. package/extensions/eventHandlers/TeamAfterCreate.d.ts +0 -10
  560. package/extensions/eventHandlers/TeamAfterCreate.js +0 -9
  561. package/extensions/eventHandlers/TeamAfterCreate.js.map +0 -1
  562. package/extensions/eventHandlers/TeamAfterDelete.d.ts +0 -10
  563. package/extensions/eventHandlers/TeamAfterDelete.js +0 -9
  564. package/extensions/eventHandlers/TeamAfterDelete.js.map +0 -1
  565. package/extensions/eventHandlers/TeamAfterUpdate.d.ts +0 -10
  566. package/extensions/eventHandlers/TeamAfterUpdate.js +0 -9
  567. package/extensions/eventHandlers/TeamAfterUpdate.js.map +0 -1
  568. package/extensions/eventHandlers/TeamBeforeCreate.d.ts +0 -10
  569. package/extensions/eventHandlers/TeamBeforeCreate.js +0 -9
  570. package/extensions/eventHandlers/TeamBeforeCreate.js.map +0 -1
  571. package/extensions/eventHandlers/TeamBeforeDelete.d.ts +0 -10
  572. package/extensions/eventHandlers/TeamBeforeDelete.js +0 -9
  573. package/extensions/eventHandlers/TeamBeforeDelete.js.map +0 -1
  574. package/extensions/eventHandlers/TeamBeforeUpdate.d.ts +0 -10
  575. package/extensions/eventHandlers/TeamBeforeUpdate.js +0 -9
  576. package/extensions/eventHandlers/TeamBeforeUpdate.js.map +0 -1
  577. package/extensions/eventHandlers/TenantAfterCreate.d.ts +0 -10
  578. package/extensions/eventHandlers/TenantAfterCreate.js +0 -9
  579. package/extensions/eventHandlers/TenantAfterCreate.js.map +0 -1
  580. package/extensions/eventHandlers/TenantAfterDelete.d.ts +0 -10
  581. package/extensions/eventHandlers/TenantAfterDelete.js +0 -9
  582. package/extensions/eventHandlers/TenantAfterDelete.js.map +0 -1
  583. package/extensions/eventHandlers/TenantAfterUpdate.d.ts +0 -10
  584. package/extensions/eventHandlers/TenantAfterUpdate.js +0 -9
  585. package/extensions/eventHandlers/TenantAfterUpdate.js.map +0 -1
  586. package/extensions/eventHandlers/TenantBeforeCreate.d.ts +0 -10
  587. package/extensions/eventHandlers/TenantBeforeCreate.js +0 -9
  588. package/extensions/eventHandlers/TenantBeforeCreate.js.map +0 -1
  589. package/extensions/eventHandlers/TenantBeforeDelete.d.ts +0 -10
  590. package/extensions/eventHandlers/TenantBeforeDelete.js +0 -9
  591. package/extensions/eventHandlers/TenantBeforeDelete.js.map +0 -1
  592. package/extensions/eventHandlers/TenantBeforeUpdate.d.ts +0 -10
  593. package/extensions/eventHandlers/TenantBeforeUpdate.js +0 -9
  594. package/extensions/eventHandlers/TenantBeforeUpdate.js.map +0 -1
  595. package/extensions/eventHandlers/TenantInstalled.d.ts +0 -10
  596. package/extensions/eventHandlers/TenantInstalled.js +0 -9
  597. package/extensions/eventHandlers/TenantInstalled.js.map +0 -1
  598. package/extensions/eventHandlers/UserAfterCreate.d.ts +0 -10
  599. package/extensions/eventHandlers/UserAfterCreate.js +0 -9
  600. package/extensions/eventHandlers/UserAfterCreate.js.map +0 -1
  601. package/extensions/eventHandlers/UserAfterDelete.d.ts +0 -10
  602. package/extensions/eventHandlers/UserAfterDelete.js +0 -9
  603. package/extensions/eventHandlers/UserAfterDelete.js.map +0 -1
  604. package/extensions/eventHandlers/UserAfterUpdate.d.ts +0 -10
  605. package/extensions/eventHandlers/UserAfterUpdate.js +0 -9
  606. package/extensions/eventHandlers/UserAfterUpdate.js.map +0 -1
  607. package/extensions/eventHandlers/UserBeforeCreate.d.ts +0 -10
  608. package/extensions/eventHandlers/UserBeforeCreate.js +0 -9
  609. package/extensions/eventHandlers/UserBeforeCreate.js.map +0 -1
  610. package/extensions/eventHandlers/UserBeforeDelete.d.ts +0 -10
  611. package/extensions/eventHandlers/UserBeforeDelete.js +0 -9
  612. package/extensions/eventHandlers/UserBeforeDelete.js.map +0 -1
  613. package/extensions/eventHandlers/UserBeforeUpdate.d.ts +0 -10
  614. package/extensions/eventHandlers/UserBeforeUpdate.js +0 -9
  615. package/extensions/eventHandlers/UserBeforeUpdate.js.map +0 -1
  616. package/extensions/eventHandlers/index.d.ts +0 -34
  617. package/extensions/eventHandlers/index.js +0 -49
  618. package/extensions/eventHandlers/index.js.map +0 -1
  619. package/extensions/index.d.ts +0 -58
  620. package/extensions/index.js +0 -49
  621. package/extensions/index.js.map +0 -1
  622. package/features/security/shared/abstractions.ts.bak +0 -52
  623. package/legacy/security/plugins/SecurityRolePlugin.d.ts +0 -16
  624. package/legacy/security/plugins/SecurityRolePlugin.js +0 -33
  625. package/legacy/security/plugins/SecurityRolePlugin.js.map +0 -1
  626. package/legacy/security/plugins/SecurityTeamPlugin.d.ts +0 -16
  627. package/legacy/security/plugins/SecurityTeamPlugin.js +0 -33
  628. package/legacy/security/plugins/SecurityTeamPlugin.js.map +0 -1
@@ -8,8 +8,9 @@ export declare class AfterLoginEvent extends DomainEvent<AfterLoginPayload> {
8
8
  eventType: "login.afterLogin";
9
9
  getHandlerAbstraction(): import("@webiny/di").Abstraction<IEventHandler<AfterLoginEvent>>;
10
10
  }
11
- export declare const AfterLoginHandler: import("@webiny/di").Abstraction<IEventHandler<AfterLoginEvent>>;
12
- export declare namespace AfterLoginHandler {
11
+ /** Hook into login lifecycle after a user logs in. */
12
+ export declare const AfterLoginEventHandler: import("@webiny/di").Abstraction<IEventHandler<AfterLoginEvent>>;
13
+ export declare namespace AfterLoginEventHandler {
13
14
  type Interface = IEventHandler<AfterLoginEvent>;
14
15
  type Event = AfterLoginEvent;
15
16
  }
@@ -3,9 +3,11 @@ import { createAbstraction } from "@webiny/feature/api";
3
3
  export class AfterLoginEvent extends DomainEvent {
4
4
  eventType = "login.afterLogin";
5
5
  getHandlerAbstraction() {
6
- return AfterLoginHandler;
6
+ return AfterLoginEventHandler;
7
7
  }
8
8
  }
9
- export const AfterLoginHandler = createAbstraction("AfterLoginHandler");
9
+
10
+ /** Hook into login lifecycle after a user logs in. */
11
+ export const AfterLoginEventHandler = createAbstraction("AfterLoginEventHandler");
10
12
 
11
13
  //# sourceMappingURL=abstractions.js.map
@@ -1 +1 @@
1
- {"version":3,"names":["DomainEvent","createAbstraction","AfterLoginEvent","eventType","getHandlerAbstraction","AfterLoginHandler"],"sources":["abstractions.ts"],"sourcesContent":["import { DomainEvent } from \"~/features/eventPublisher/index.js\";\nimport type { IEventHandler } from \"~/features/eventPublisher/index.js\";\nimport { createAbstraction } from \"@webiny/feature/api\";\nimport { Identity } from \"~/features/security/IdentityContext/index.js\";\n\nexport interface AfterLoginPayload {\n identity: Identity;\n}\n\nexport class AfterLoginEvent extends DomainEvent<AfterLoginPayload> {\n eventType = \"login.afterLogin\" as const;\n\n getHandlerAbstraction() {\n return AfterLoginHandler;\n }\n}\n\nexport const AfterLoginHandler =\n createAbstraction<IEventHandler<AfterLoginEvent>>(\"AfterLoginHandler\");\n\nexport namespace AfterLoginHandler {\n export type Interface = IEventHandler<AfterLoginEvent>;\n export type Event = AfterLoginEvent;\n}\n"],"mappings":"AAAA,SAASA,WAAW;AAEpB,SAASC,iBAAiB,QAAQ,qBAAqB;AAOvD,OAAO,MAAMC,eAAe,SAASF,WAAW,CAAoB;EAChEG,SAAS,GAAG,kBAAkB;EAE9BC,qBAAqBA,CAAA,EAAG;IACpB,OAAOC,iBAAiB;EAC5B;AACJ;AAEA,OAAO,MAAMA,iBAAiB,GAC1BJ,iBAAiB,CAAiC,mBAAmB,CAAC","ignoreList":[]}
1
+ {"version":3,"names":["DomainEvent","createAbstraction","AfterLoginEvent","eventType","getHandlerAbstraction","AfterLoginEventHandler"],"sources":["abstractions.ts"],"sourcesContent":["import { DomainEvent } from \"~/features/eventPublisher/index.js\";\nimport type { IEventHandler } from \"~/features/eventPublisher/index.js\";\nimport { createAbstraction } from \"@webiny/feature/api\";\nimport { Identity } from \"~/features/security/IdentityContext/index.js\";\n\nexport interface AfterLoginPayload {\n identity: Identity;\n}\n\nexport class AfterLoginEvent extends DomainEvent<AfterLoginPayload> {\n eventType = \"login.afterLogin\" as const;\n\n getHandlerAbstraction() {\n return AfterLoginEventHandler;\n }\n}\n\n/** Hook into login lifecycle after a user logs in. */\nexport const AfterLoginEventHandler =\n createAbstraction<IEventHandler<AfterLoginEvent>>(\"AfterLoginEventHandler\");\n\nexport namespace AfterLoginEventHandler {\n export type Interface = IEventHandler<AfterLoginEvent>;\n export type Event = AfterLoginEvent;\n}\n"],"mappings":"AAAA,SAASA,WAAW;AAEpB,SAASC,iBAAiB,QAAQ,qBAAqB;AAOvD,OAAO,MAAMC,eAAe,SAASF,WAAW,CAAoB;EAChEG,SAAS,GAAG,kBAAkB;EAE9BC,qBAAqBA,CAAA,EAAG;IACpB,OAAOC,sBAAsB;EACjC;AACJ;;AAEA;AACA,OAAO,MAAMA,sBAAsB,GAC/BJ,iBAAiB,CAAiC,wBAAwB,CAAC","ignoreList":[]}
@@ -0,0 +1,2 @@
1
+ import type { PermissionSchemaConfig } from "./types.js";
2
+ export declare function createPermissionSchema<const T extends PermissionSchemaConfig>(config: T): T;
@@ -0,0 +1,8 @@
1
+ export function createPermissionSchema(config) {
2
+ return {
3
+ ...config,
4
+ entities: config.entities ?? []
5
+ };
6
+ }
7
+
8
+ //# sourceMappingURL=createPermissionSchema.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"names":["createPermissionSchema","config","entities"],"sources":["createPermissionSchema.ts"],"sourcesContent":["import type { PermissionSchemaConfig } from \"./types.js\";\n\nexport function createPermissionSchema<const T extends PermissionSchemaConfig>(config: T): T {\n return {\n ...config,\n entities: config.entities ?? []\n };\n}\n"],"mappings":"AAEA,OAAO,SAASA,sBAAsBA,CAAyCC,MAAS,EAAK;EACzF,OAAO;IACH,GAAGA,MAAM;IACTC,QAAQ,EAAED,MAAM,CAACC,QAAQ,IAAI;EACjC,CAAC;AACL","ignoreList":[]}
@@ -0,0 +1,8 @@
1
+ import type { Abstraction } from "@webiny/di";
2
+ import type { PermissionSchemaConfig } from "./types.js";
3
+ import type { Permissions } from "./types.js";
4
+ export declare function createPermissionsAbstraction<const S extends PermissionSchemaConfig>(schema: S): Abstraction<Permissions<S>>;
5
+ export declare function createPermissionsFeature<const S extends PermissionSchemaConfig>(schema: S, abstraction: Abstraction<Permissions<S>>): {
6
+ name: string;
7
+ register(container: import("@webiny/di").Container): void;
8
+ };
@@ -0,0 +1,250 @@
1
+ import { createAbstraction } from "@webiny/feature/api";
2
+ import { createFeature } from "@webiny/feature/api";
3
+ import { IdentityContext } from "../IdentityContext/index.js";
4
+ function buildEntityMap(schema) {
5
+ const map = new Map();
6
+ for (const entity of schema.entities ?? []) {
7
+ const actions = new Set();
8
+ for (const action of entity.actions ?? []) {
9
+ actions.add(action.name);
10
+ }
11
+ map.set(entity.id, {
12
+ permission: entity.permission,
13
+ actions,
14
+ hasOwn: entity.scopes.includes("own")
15
+ });
16
+ }
17
+ return map;
18
+ }
19
+ function getEntity(entityMap, entityId) {
20
+ const entity = entityMap.get(entityId);
21
+ if (!entity) {
22
+ throw new Error(`Unknown entity "${entityId}" in permission schema.`);
23
+ }
24
+ return entity;
25
+ }
26
+ class SchemaPermissions {
27
+ constructor(schema, identityContext) {
28
+ this.entityMap = buildEntityMap(schema);
29
+ this.fullAccessName = `${schema.prefix}.*`;
30
+ this.identityContext = identityContext;
31
+ }
32
+ async canAccess(entityId, item) {
33
+ if (await this.identityContext.hasFullAccess()) {
34
+ return true;
35
+ }
36
+ if (await this.hasFullSchemaAccess()) {
37
+ return true;
38
+ }
39
+ const entity = getEntity(this.entityMap, entityId);
40
+ const permissions = await this.getEntityPermissions(entity.permission);
41
+ if (!permissions.length) {
42
+ return false;
43
+ }
44
+ // No item — just check entity-level access.
45
+ if (item === undefined) {
46
+ return true;
47
+ }
48
+ // Item provided — if all permissions require own, verify ownership.
49
+ const ownOnly = !permissions.some(p => !p.own);
50
+ if (!ownOnly) {
51
+ return true;
52
+ }
53
+ const identity = this.identityContext.getIdentity();
54
+ return item.createdBy?.id === identity.id;
55
+ }
56
+ async onlyOwnRecords(entityId) {
57
+ if (await this.identityContext.hasFullAccess()) {
58
+ return false;
59
+ }
60
+ if (await this.hasFullSchemaAccess()) {
61
+ return false;
62
+ }
63
+ const entity = getEntity(this.entityMap, entityId);
64
+ const permissions = await this.getEntityPermissions(entity.permission);
65
+ if (!permissions.length) {
66
+ return false;
67
+ }
68
+ return !permissions.some(p => !p.own);
69
+ }
70
+ async canRead(entityId) {
71
+ if (await this.identityContext.hasFullAccess()) {
72
+ return true;
73
+ }
74
+ if (await this.hasFullSchemaAccess()) {
75
+ return true;
76
+ }
77
+ const entity = getEntity(this.entityMap, entityId);
78
+ const permissions = await this.getEntityPermissions(entity.permission);
79
+ if (!permissions.length) {
80
+ return false;
81
+ }
82
+ return permissions.some(permission => {
83
+ if (typeof permission.rwd !== "string") {
84
+ return true;
85
+ }
86
+ return permission.rwd.includes("r");
87
+ });
88
+ }
89
+ async canCreate(entityId) {
90
+ if (await this.identityContext.hasFullAccess()) {
91
+ return true;
92
+ }
93
+ if (await this.hasFullSchemaAccess()) {
94
+ return true;
95
+ }
96
+ const entity = getEntity(this.entityMap, entityId);
97
+ const permissions = await this.getEntityPermissions(entity.permission);
98
+ if (!permissions.length) {
99
+ return false;
100
+ }
101
+ return permissions.some(permission => {
102
+ if (typeof permission.rwd !== "string") {
103
+ return true;
104
+ }
105
+ return permission.rwd.includes("w");
106
+ });
107
+ }
108
+ async canEdit(entityId, item) {
109
+ if (await this.identityContext.hasFullAccess()) {
110
+ return true;
111
+ }
112
+ if (await this.hasFullSchemaAccess()) {
113
+ return true;
114
+ }
115
+ const entity = getEntity(this.entityMap, entityId);
116
+ const permissions = await this.getEntityPermissions(entity.permission);
117
+ if (!permissions.length) {
118
+ return false;
119
+ }
120
+ const identity = this.identityContext.getIdentity();
121
+ return permissions.some(permission => {
122
+ if (permission.own) {
123
+ // No item provided (new/unsaved) — allow access.
124
+ if (!item?.createdBy) {
125
+ return true;
126
+ }
127
+ return item.createdBy.id === identity.id;
128
+ }
129
+ if (typeof permission.rwd !== "string") {
130
+ return true;
131
+ }
132
+ return permission.rwd.includes("w");
133
+ });
134
+ }
135
+ async canDelete(entityId, item) {
136
+ if (await this.identityContext.hasFullAccess()) {
137
+ return true;
138
+ }
139
+ if (await this.hasFullSchemaAccess()) {
140
+ return true;
141
+ }
142
+ const entity = getEntity(this.entityMap, entityId);
143
+ const permissions = await this.getEntityPermissions(entity.permission);
144
+ if (!permissions.length) {
145
+ return false;
146
+ }
147
+ const identity = this.identityContext.getIdentity();
148
+ return permissions.some(permission => {
149
+ if (permission.own) {
150
+ return item?.createdBy?.id === identity.id;
151
+ }
152
+ if (typeof permission.rwd !== "string") {
153
+ return true;
154
+ }
155
+ return permission.rwd.includes("d");
156
+ });
157
+ }
158
+ async canPublish(entityId) {
159
+ if (await this.identityContext.hasFullAccess()) {
160
+ return true;
161
+ }
162
+ if (await this.hasFullSchemaAccess()) {
163
+ return true;
164
+ }
165
+ const entity = getEntity(this.entityMap, entityId);
166
+ const permissions = await this.getEntityPermissions(entity.permission);
167
+ if (!permissions.length) {
168
+ return false;
169
+ }
170
+ return permissions.some(permission => {
171
+ return permission.pw?.includes("p");
172
+ });
173
+ }
174
+ async canUnpublish(entityId) {
175
+ if (await this.identityContext.hasFullAccess()) {
176
+ return true;
177
+ }
178
+ if (await this.hasFullSchemaAccess()) {
179
+ return true;
180
+ }
181
+ const entity = getEntity(this.entityMap, entityId);
182
+ const permissions = await this.getEntityPermissions(entity.permission);
183
+ if (!permissions.length) {
184
+ return false;
185
+ }
186
+ return permissions.some(permission => {
187
+ return permission.pw?.includes("u");
188
+ });
189
+ }
190
+ async canAction(action, entityId) {
191
+ if (await this.identityContext.hasFullAccess()) {
192
+ return true;
193
+ }
194
+ if (await this.hasFullSchemaAccess()) {
195
+ return true;
196
+ }
197
+ const entity = getEntity(this.entityMap, entityId);
198
+ const permissions = await this.getEntityPermissions(entity.permission);
199
+ if (!permissions.length) {
200
+ return false;
201
+ }
202
+ return permissions.some(permission => {
203
+ return permission[action] === true;
204
+ });
205
+ }
206
+ async getEntityPermissions(entityPermission) {
207
+ const permissions = await this.identityContext.getPermissions(entityPermission);
208
+ if (permissions.length) {
209
+ return permissions;
210
+ }
211
+ // Fall back to the schema wildcard (e.g. "test.*") — its flags apply to all entities.
212
+ const wildcard = await this.identityContext.getPermission(this.fullAccessName);
213
+ return wildcard ? [wildcard] : [];
214
+ }
215
+ async hasFullSchemaAccess() {
216
+ const permission = await this.identityContext.getPermission(this.fullAccessName);
217
+ if (!permission) {
218
+ return false;
219
+ }
220
+ // Only treat as full access if the permission has no `rwd` flag.
221
+ // A permission like { name: "wb.*", rwd: "r" } should NOT grant full access.
222
+ const keys = Object.keys(permission).filter(k => k !== "name");
223
+ const hasRwd = keys.includes("rwd");
224
+
225
+ // It's full-access only if there's no `rwd` flag.
226
+ return !hasRwd;
227
+ }
228
+ }
229
+ export function createPermissionsAbstraction(schema) {
230
+ return createAbstraction(`${schema.prefix}:Permissions`);
231
+ }
232
+ export function createPermissionsFeature(schema, abstraction) {
233
+ class PermissionsImpl extends SchemaPermissions {
234
+ constructor(identityContext) {
235
+ super(schema, identityContext);
236
+ }
237
+ }
238
+ const Implementation = abstraction.createImplementation({
239
+ implementation: PermissionsImpl,
240
+ dependencies: [IdentityContext]
241
+ });
242
+ return createFeature({
243
+ name: `${schema.prefix}:Permissions`,
244
+ register(container) {
245
+ container.register(Implementation);
246
+ }
247
+ });
248
+ }
249
+
250
+ //# sourceMappingURL=createPermissions.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"names":["createAbstraction","createFeature","IdentityContext","buildEntityMap","schema","map","Map","entity","entities","actions","Set","action","add","name","set","id","permission","hasOwn","scopes","includes","getEntity","entityMap","entityId","get","Error","SchemaPermissions","constructor","identityContext","fullAccessName","prefix","canAccess","item","hasFullAccess","hasFullSchemaAccess","permissions","getEntityPermissions","length","undefined","ownOnly","some","p","own","identity","getIdentity","createdBy","onlyOwnRecords","canRead","rwd","canCreate","canEdit","canDelete","canPublish","pw","canUnpublish","canAction","entityPermission","getPermissions","wildcard","getPermission","keys","Object","filter","k","hasRwd","createPermissionsAbstraction","createPermissionsFeature","abstraction","PermissionsImpl","Implementation","createImplementation","implementation","dependencies","register","container"],"sources":["createPermissions.ts"],"sourcesContent":["import { createAbstraction } from \"@webiny/feature/api\";\nimport { createFeature } from \"@webiny/feature/api\";\nimport { IdentityContext } from \"~/features/security/IdentityContext/index.js\";\nimport type { Abstraction } from \"@webiny/di\";\nimport type { PermissionSchemaConfig } from \"./types.js\";\nimport type { OwnableItem } from \"./types.js\";\nimport type { Permissions } from \"./types.js\";\n\ninterface EntityLookup {\n permission: string;\n actions: Set<string>;\n hasOwn: boolean;\n}\n\nfunction buildEntityMap(schema: PermissionSchemaConfig): Map<string, EntityLookup> {\n const map = new Map<string, EntityLookup>();\n for (const entity of schema.entities ?? []) {\n const actions = new Set<string>();\n for (const action of entity.actions ?? []) {\n actions.add(action.name);\n }\n map.set(entity.id, {\n permission: entity.permission,\n actions,\n hasOwn: entity.scopes.includes(\"own\")\n });\n }\n return map;\n}\n\nfunction getEntity(entityMap: Map<string, EntityLookup>, entityId: string): EntityLookup {\n const entity = entityMap.get(entityId);\n if (!entity) {\n throw new Error(`Unknown entity \"${entityId}\" in permission schema.`);\n }\n return entity;\n}\n\nclass SchemaPermissions<S extends PermissionSchemaConfig> {\n private readonly entityMap: Map<string, EntityLookup>;\n private readonly fullAccessName: string;\n private readonly identityContext: IdentityContext.Interface;\n\n constructor(schema: S, identityContext: IdentityContext.Interface) {\n this.entityMap = buildEntityMap(schema);\n this.fullAccessName = `${schema.prefix}.*`;\n this.identityContext = identityContext;\n }\n\n async canAccess(entityId: string, item?: OwnableItem): Promise<boolean> {\n if (await this.identityContext.hasFullAccess()) {\n return true;\n }\n if (await this.hasFullSchemaAccess()) {\n return true;\n }\n const entity = getEntity(this.entityMap, entityId);\n const permissions = await this.getEntityPermissions(entity.permission);\n if (!permissions.length) {\n return false;\n }\n // No item — just check entity-level access.\n if (item === undefined) {\n return true;\n }\n // Item provided — if all permissions require own, verify ownership.\n const ownOnly = !permissions.some(p => !p.own);\n if (!ownOnly) {\n return true;\n }\n const identity = this.identityContext.getIdentity();\n return item.createdBy?.id === identity.id;\n }\n\n async onlyOwnRecords(entityId: string): Promise<boolean> {\n if (await this.identityContext.hasFullAccess()) {\n return false;\n }\n if (await this.hasFullSchemaAccess()) {\n return false;\n }\n const entity = getEntity(this.entityMap, entityId);\n const permissions = await this.getEntityPermissions(entity.permission);\n if (!permissions.length) {\n return false;\n }\n return !permissions.some(p => !p.own);\n }\n\n async canRead(entityId: string): Promise<boolean> {\n if (await this.identityContext.hasFullAccess()) {\n return true;\n }\n if (await this.hasFullSchemaAccess()) {\n return true;\n }\n const entity = getEntity(this.entityMap, entityId);\n const permissions = await this.getEntityPermissions(entity.permission);\n if (!permissions.length) {\n return false;\n }\n return permissions.some(permission => {\n if (typeof permission.rwd !== \"string\") {\n return true;\n }\n return permission.rwd.includes(\"r\");\n });\n }\n\n async canCreate(entityId: string): Promise<boolean> {\n if (await this.identityContext.hasFullAccess()) {\n return true;\n }\n if (await this.hasFullSchemaAccess()) {\n return true;\n }\n const entity = getEntity(this.entityMap, entityId);\n const permissions = await this.getEntityPermissions(entity.permission);\n if (!permissions.length) {\n return false;\n }\n return permissions.some(permission => {\n if (typeof permission.rwd !== \"string\") {\n return true;\n }\n return permission.rwd.includes(\"w\");\n });\n }\n\n async canEdit(entityId: string, item?: OwnableItem): Promise<boolean> {\n if (await this.identityContext.hasFullAccess()) {\n return true;\n }\n if (await this.hasFullSchemaAccess()) {\n return true;\n }\n const entity = getEntity(this.entityMap, entityId);\n const permissions = await this.getEntityPermissions(entity.permission);\n if (!permissions.length) {\n return false;\n }\n const identity = this.identityContext.getIdentity();\n return permissions.some(permission => {\n if (permission.own) {\n // No item provided (new/unsaved) — allow access.\n if (!item?.createdBy) {\n return true;\n }\n return item.createdBy.id === identity.id;\n }\n if (typeof permission.rwd !== \"string\") {\n return true;\n }\n return permission.rwd.includes(\"w\");\n });\n }\n\n async canDelete(entityId: string, item?: OwnableItem): Promise<boolean> {\n if (await this.identityContext.hasFullAccess()) {\n return true;\n }\n if (await this.hasFullSchemaAccess()) {\n return true;\n }\n const entity = getEntity(this.entityMap, entityId);\n const permissions = await this.getEntityPermissions(entity.permission);\n if (!permissions.length) {\n return false;\n }\n const identity = this.identityContext.getIdentity();\n return permissions.some(permission => {\n if (permission.own) {\n return item?.createdBy?.id === identity.id;\n }\n if (typeof permission.rwd !== \"string\") {\n return true;\n }\n return permission.rwd.includes(\"d\");\n });\n }\n\n async canPublish(entityId: string): Promise<boolean> {\n if (await this.identityContext.hasFullAccess()) {\n return true;\n }\n if (await this.hasFullSchemaAccess()) {\n return true;\n }\n const entity = getEntity(this.entityMap, entityId);\n const permissions = await this.getEntityPermissions(entity.permission);\n if (!permissions.length) {\n return false;\n }\n return permissions.some(permission => {\n return permission.pw?.includes(\"p\");\n });\n }\n\n async canUnpublish(entityId: string): Promise<boolean> {\n if (await this.identityContext.hasFullAccess()) {\n return true;\n }\n if (await this.hasFullSchemaAccess()) {\n return true;\n }\n const entity = getEntity(this.entityMap, entityId);\n const permissions = await this.getEntityPermissions(entity.permission);\n if (!permissions.length) {\n return false;\n }\n return permissions.some(permission => {\n return permission.pw?.includes(\"u\");\n });\n }\n\n async canAction(action: string, entityId: string): Promise<boolean> {\n if (await this.identityContext.hasFullAccess()) {\n return true;\n }\n if (await this.hasFullSchemaAccess()) {\n return true;\n }\n const entity = getEntity(this.entityMap, entityId);\n const permissions = await this.getEntityPermissions(entity.permission);\n if (!permissions.length) {\n return false;\n }\n return permissions.some(permission => {\n return permission[action] === true;\n });\n }\n\n private async getEntityPermissions(entityPermission: string): Promise<any[]> {\n const permissions = await this.identityContext.getPermissions(entityPermission);\n if (permissions.length) {\n return permissions;\n }\n // Fall back to the schema wildcard (e.g. \"test.*\") — its flags apply to all entities.\n const wildcard = await this.identityContext.getPermission(this.fullAccessName);\n return wildcard ? [wildcard] : [];\n }\n\n private async hasFullSchemaAccess(): Promise<boolean> {\n const permission = await this.identityContext.getPermission(this.fullAccessName);\n if (!permission) {\n return false;\n }\n // Only treat as full access if the permission has no `rwd` flag.\n // A permission like { name: \"wb.*\", rwd: \"r\" } should NOT grant full access.\n const keys = Object.keys(permission).filter(k => k !== \"name\");\n\n const hasRwd = keys.includes(\"rwd\");\n\n // It's full-access only if there's no `rwd` flag.\n return !hasRwd;\n }\n}\n\nexport function createPermissionsAbstraction<const S extends PermissionSchemaConfig>(schema: S) {\n return createAbstraction<Permissions<S>>(`${schema.prefix}:Permissions`);\n}\n\nexport function createPermissionsFeature<const S extends PermissionSchemaConfig>(\n schema: S,\n abstraction: Abstraction<Permissions<S>>\n) {\n class PermissionsImpl extends SchemaPermissions<S> {\n constructor(identityContext: IdentityContext.Interface) {\n super(schema, identityContext);\n }\n }\n\n const Implementation = abstraction.createImplementation({\n implementation: PermissionsImpl,\n dependencies: [IdentityContext]\n } as any);\n\n return createFeature({\n name: `${schema.prefix}:Permissions`,\n register(container) {\n container.register(Implementation);\n }\n });\n}\n"],"mappings":"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","ignoreList":[]}
@@ -0,0 +1,3 @@
1
+ export { createPermissionSchema } from "./createPermissionSchema.js";
2
+ export { createPermissionsAbstraction, createPermissionsFeature } from "./createPermissions.js";
3
+ export type { ActionDefinition, EntityDefinition, PermissionSchemaConfig, OwnableItem, Permissions, AllEntityIds, RwdEntityId, PwEntityId, CustomActionNames } from "./types.js";
@@ -0,0 +1,4 @@
1
+ export { createPermissionSchema } from "./createPermissionSchema.js";
2
+ export { createPermissionsAbstraction, createPermissionsFeature } from "./createPermissions.js";
3
+
4
+ //# sourceMappingURL=index.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"names":["createPermissionSchema","createPermissionsAbstraction","createPermissionsFeature"],"sources":["index.ts"],"sourcesContent":["export { createPermissionSchema } from \"./createPermissionSchema.js\";\nexport { createPermissionsAbstraction, createPermissionsFeature } from \"./createPermissions.js\";\nexport type {\n ActionDefinition,\n EntityDefinition,\n PermissionSchemaConfig,\n OwnableItem,\n Permissions,\n AllEntityIds,\n RwdEntityId,\n PwEntityId,\n CustomActionNames\n} from \"./types.js\";\n"],"mappings":"AAAA,SAASA,sBAAsB;AAC/B,SAASC,4BAA4B,EAAEC,wBAAwB","ignoreList":[]}
@@ -0,0 +1,137 @@
1
+ /**
2
+ * An action definition on an entity.
3
+ *
4
+ * Built-in actions:
5
+ * - `{ name: "rwd" }` — read/write/delete (serialized as joined string, e.g. "rw")
6
+ * - `{ name: "pw" }` — publish/unpublish (serialized as joined string, e.g. "pu")
7
+ *
8
+ * Custom actions:
9
+ * - `{ name: "install" }` — boolean flag (serialized as `install: true`)
10
+ */
11
+ export interface ActionDefinition {
12
+ /** Key on the permission object (e.g. "rwd", "pw", "install"). */
13
+ name: string;
14
+ /** Display label for the UI. Required for custom actions; ignored for built-in "rwd"/"pw". */
15
+ label?: string;
16
+ }
17
+ /**
18
+ * Defines an entity within a permission schema.
19
+ */
20
+ export interface EntityDefinition {
21
+ /** Unique ID, used for form field naming: ${id}AccessScope, ${id}RWD, etc. */
22
+ id: string;
23
+ /** Display title for the UI renderer (e.g. "Files", "Settings"). */
24
+ title?: string;
25
+ /** Permission name emitted for this entity (e.g. "fm.file"). */
26
+ permission: string;
27
+ /** Available access scopes. */
28
+ scopes: readonly ("full" | "own")[];
29
+ /** Action definitions for this entity. */
30
+ actions?: readonly ActionDefinition[];
31
+ /** Dependency on another entity. */
32
+ dependsOn?: {
33
+ /** ID of parent entity. */
34
+ entity: string;
35
+ /** Required action character (e.g. "r"). */
36
+ requires: string;
37
+ };
38
+ }
39
+ /**
40
+ * Configuration for creating a permission schema.
41
+ */
42
+ export interface PermissionSchemaConfig {
43
+ /** Permission prefix — used to filter permissions from the array. */
44
+ prefix: string;
45
+ /**
46
+ * Full access configuration.
47
+ * - `true` — emits `{ name: "${prefix}.*" }`.
48
+ * - `{ ...extras }` — emits `{ name: "${prefix}.*", ...extras }`.
49
+ */
50
+ fullAccess: boolean | {
51
+ [key: string]: any;
52
+ };
53
+ /** Entity definitions (optional — simple apps have none). */
54
+ entities?: readonly EntityDefinition[];
55
+ }
56
+ /**
57
+ * Item that may have an owner (used for own-scope permission checks).
58
+ */
59
+ export interface OwnableItem {
60
+ createdBy?: {
61
+ id: string;
62
+ } | null;
63
+ }
64
+ /**
65
+ * Extract the union of entity definitions from a schema config type.
66
+ */
67
+ type EntitiesOf<S extends PermissionSchemaConfig> = S extends {
68
+ entities: ReadonlyArray<infer E extends EntityDefinition>;
69
+ } ? E : never;
70
+ /**
71
+ * Extract entity IDs whose actions array contains an action with the given name.
72
+ */
73
+ type EntityIdWithAction<S extends PermissionSchemaConfig, A extends string> = {
74
+ [K in EntitiesOf<S> as K extends {
75
+ actions: ReadonlyArray<infer Act>;
76
+ } ? Act extends {
77
+ name: A;
78
+ } ? K["id"] : never : never]: never;
79
+ } extends infer M ? keyof M & string : never;
80
+ /**
81
+ * All entity IDs in the schema.
82
+ */
83
+ export type AllEntityIds<S extends PermissionSchemaConfig> = EntitiesOf<S>["id"];
84
+ /**
85
+ * Entity IDs that have the "rwd" action.
86
+ */
87
+ export type RwdEntityId<S extends PermissionSchemaConfig> = EntityIdWithAction<S, "rwd">;
88
+ /**
89
+ * Entity IDs that have the "pw" action.
90
+ */
91
+ export type PwEntityId<S extends PermissionSchemaConfig> = EntityIdWithAction<S, "pw">;
92
+ /**
93
+ * Custom (non-builtin) action names across all entities.
94
+ */
95
+ export type CustomActionNames<S extends PermissionSchemaConfig> = Exclude<EntitiesOf<S> extends {
96
+ actions: ReadonlyArray<infer Act extends ActionDefinition>;
97
+ } ? Act["name"] : never, "rwd" | "pw">;
98
+ /**
99
+ * Typed permissions interface for a given schema.
100
+ *
101
+ * When the schema has literal entity types, methods are narrowed to only accept valid entity IDs.
102
+ * When the schema is dynamically typed, all methods accept `string`.
103
+ */
104
+ export type Permissions<S extends PermissionSchemaConfig> = string extends AllEntityIds<S> ? PermissionsUntyped : PermissionsTyped<S>;
105
+ export interface PermissionsUntyped {
106
+ canAccess(entityId: string, item?: OwnableItem): Promise<boolean>;
107
+ onlyOwnRecords(entityId: string): Promise<boolean>;
108
+ canRead(entityId: string): Promise<boolean>;
109
+ canCreate(entityId: string): Promise<boolean>;
110
+ canEdit(entityId: string, item?: OwnableItem): Promise<boolean>;
111
+ canDelete(entityId: string, item?: OwnableItem): Promise<boolean>;
112
+ canPublish(entityId: string): Promise<boolean>;
113
+ canUnpublish(entityId: string): Promise<boolean>;
114
+ canAction(action: string, entityId: string): Promise<boolean>;
115
+ }
116
+ export type PermissionsTyped<S extends PermissionSchemaConfig> = {
117
+ canAccess(entityId: AllEntityIds<S>, item?: OwnableItem): Promise<boolean>;
118
+ onlyOwnRecords(entityId: AllEntityIds<S>): Promise<boolean>;
119
+ canAction(action: CustomActionNames<S> extends never ? string : CustomActionNames<S>, entityId: AllEntityIds<S>): Promise<boolean>;
120
+ } & ([RwdEntityId<S>] extends [never] ? {
121
+ canRead(entityId: string): Promise<boolean>;
122
+ canCreate(entityId: string): Promise<boolean>;
123
+ canEdit(entityId: string, item?: OwnableItem): Promise<boolean>;
124
+ canDelete(entityId: string, item?: OwnableItem): Promise<boolean>;
125
+ } : {
126
+ canRead(entityId: RwdEntityId<S>): Promise<boolean>;
127
+ canCreate(entityId: RwdEntityId<S>): Promise<boolean>;
128
+ canEdit(entityId: RwdEntityId<S>, item?: OwnableItem): Promise<boolean>;
129
+ canDelete(entityId: RwdEntityId<S>, item?: OwnableItem): Promise<boolean>;
130
+ }) & ([PwEntityId<S>] extends [never] ? {
131
+ canPublish(entityId: string): Promise<boolean>;
132
+ canUnpublish(entityId: string): Promise<boolean>;
133
+ } : {
134
+ canPublish(entityId: PwEntityId<S>): Promise<boolean>;
135
+ canUnpublish(entityId: PwEntityId<S>): Promise<boolean>;
136
+ });
137
+ export {};
@@ -0,0 +1,3 @@
1
+ export {};
2
+
3
+ //# sourceMappingURL=types.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"names":[],"sources":["types.ts"],"sourcesContent":["/**\n * An action definition on an entity.\n *\n * Built-in actions:\n * - `{ name: \"rwd\" }` — read/write/delete (serialized as joined string, e.g. \"rw\")\n * - `{ name: \"pw\" }` — publish/unpublish (serialized as joined string, e.g. \"pu\")\n *\n * Custom actions:\n * - `{ name: \"install\" }` — boolean flag (serialized as `install: true`)\n */\nexport interface ActionDefinition {\n /** Key on the permission object (e.g. \"rwd\", \"pw\", \"install\"). */\n name: string;\n /** Display label for the UI. Required for custom actions; ignored for built-in \"rwd\"/\"pw\". */\n label?: string;\n}\n\n/**\n * Defines an entity within a permission schema.\n */\nexport interface EntityDefinition {\n /** Unique ID, used for form field naming: ${id}AccessScope, ${id}RWD, etc. */\n id: string;\n /** Display title for the UI renderer (e.g. \"Files\", \"Settings\"). */\n title?: string;\n /** Permission name emitted for this entity (e.g. \"fm.file\"). */\n permission: string;\n /** Available access scopes. */\n scopes: readonly (\"full\" | \"own\")[];\n /** Action definitions for this entity. */\n actions?: readonly ActionDefinition[];\n /** Dependency on another entity. */\n dependsOn?: {\n /** ID of parent entity. */\n entity: string;\n /** Required action character (e.g. \"r\"). */\n requires: string;\n };\n}\n\n/**\n * Configuration for creating a permission schema.\n */\nexport interface PermissionSchemaConfig {\n /** Permission prefix — used to filter permissions from the array. */\n prefix: string;\n /**\n * Full access configuration.\n * - `true` — emits `{ name: \"${prefix}.*\" }`.\n * - `{ ...extras }` — emits `{ name: \"${prefix}.*\", ...extras }`.\n */\n fullAccess: boolean | { [key: string]: any };\n /** Entity definitions (optional — simple apps have none). */\n entities?: readonly EntityDefinition[];\n}\n\n/**\n * Item that may have an owner (used for own-scope permission checks).\n */\nexport interface OwnableItem {\n createdBy?: { id: string } | null;\n}\n\n/**\n * Extract the union of entity definitions from a schema config type.\n */\ntype EntitiesOf<S extends PermissionSchemaConfig> = S extends {\n entities: ReadonlyArray<infer E extends EntityDefinition>;\n}\n ? E\n : never;\n\n/**\n * Extract entity IDs whose actions array contains an action with the given name.\n */\ntype EntityIdWithAction<S extends PermissionSchemaConfig, A extends string> = {\n [K in EntitiesOf<S> as K extends { actions: ReadonlyArray<infer Act> }\n ? Act extends { name: A }\n ? K[\"id\"]\n : never\n : never]: never;\n} extends infer M\n ? keyof M & string\n : never;\n\n/**\n * All entity IDs in the schema.\n */\nexport type AllEntityIds<S extends PermissionSchemaConfig> = EntitiesOf<S>[\"id\"];\n\n/**\n * Entity IDs that have the \"rwd\" action.\n */\nexport type RwdEntityId<S extends PermissionSchemaConfig> = EntityIdWithAction<S, \"rwd\">;\n\n/**\n * Entity IDs that have the \"pw\" action.\n */\nexport type PwEntityId<S extends PermissionSchemaConfig> = EntityIdWithAction<S, \"pw\">;\n\n/**\n * Custom (non-builtin) action names across all entities.\n */\nexport type CustomActionNames<S extends PermissionSchemaConfig> = Exclude<\n EntitiesOf<S> extends { actions: ReadonlyArray<infer Act extends ActionDefinition> }\n ? Act[\"name\"]\n : never,\n \"rwd\" | \"pw\"\n>;\n\n/**\n * Typed permissions interface for a given schema.\n *\n * When the schema has literal entity types, methods are narrowed to only accept valid entity IDs.\n * When the schema is dynamically typed, all methods accept `string`.\n */\nexport type Permissions<S extends PermissionSchemaConfig> =\n string extends AllEntityIds<S> ? PermissionsUntyped : PermissionsTyped<S>;\n\nexport interface PermissionsUntyped {\n canAccess(entityId: string, item?: OwnableItem): Promise<boolean>;\n onlyOwnRecords(entityId: string): Promise<boolean>;\n canRead(entityId: string): Promise<boolean>;\n canCreate(entityId: string): Promise<boolean>;\n canEdit(entityId: string, item?: OwnableItem): Promise<boolean>;\n canDelete(entityId: string, item?: OwnableItem): Promise<boolean>;\n canPublish(entityId: string): Promise<boolean>;\n canUnpublish(entityId: string): Promise<boolean>;\n canAction(action: string, entityId: string): Promise<boolean>;\n}\n\nexport type PermissionsTyped<S extends PermissionSchemaConfig> = {\n canAccess(entityId: AllEntityIds<S>, item?: OwnableItem): Promise<boolean>;\n onlyOwnRecords(entityId: AllEntityIds<S>): Promise<boolean>;\n canAction(\n action: CustomActionNames<S> extends never ? string : CustomActionNames<S>,\n entityId: AllEntityIds<S>\n ): Promise<boolean>;\n} & ([RwdEntityId<S>] extends [never]\n ? {\n canRead(entityId: string): Promise<boolean>;\n canCreate(entityId: string): Promise<boolean>;\n canEdit(entityId: string, item?: OwnableItem): Promise<boolean>;\n canDelete(entityId: string, item?: OwnableItem): Promise<boolean>;\n }\n : {\n canRead(entityId: RwdEntityId<S>): Promise<boolean>;\n canCreate(entityId: RwdEntityId<S>): Promise<boolean>;\n canEdit(entityId: RwdEntityId<S>, item?: OwnableItem): Promise<boolean>;\n canDelete(entityId: RwdEntityId<S>, item?: OwnableItem): Promise<boolean>;\n }) &\n ([PwEntityId<S>] extends [never]\n ? {\n canPublish(entityId: string): Promise<boolean>;\n canUnpublish(entityId: string): Promise<boolean>;\n }\n : {\n canPublish(entityId: PwEntityId<S>): Promise<boolean>;\n canUnpublish(entityId: PwEntityId<S>): Promise<boolean>;\n });\n"],"mappings":"","ignoreList":[]}
@@ -1,16 +1,14 @@
1
1
  import { Result } from "@webiny/feature/api";
2
- import { TenantContext } from "../../../../features/tenancy/TenantContext/index.js";
3
2
  import { EventPublisher } from "../../../../features/eventPublisher/index.js";
4
3
  import { CreateRoleUseCase as UseCaseAbstraction } from "./abstractions.js";
5
4
  import { RolesRepository } from "../shared/abstractions.js";
6
5
  import { IdentityContext } from "../../IdentityContext/abstractions.js";
7
6
  import type { Role, CreateRoleInput } from "../shared/types.js";
8
7
  declare class CreateRoleUseCaseImpl implements UseCaseAbstraction.Interface {
9
- private tenantContext;
10
8
  private identityContext;
11
9
  private eventPublisher;
12
10
  private repository;
13
- constructor(tenantContext: TenantContext.Interface, identityContext: IdentityContext.Interface, eventPublisher: EventPublisher.Interface, repository: RolesRepository.Interface);
11
+ constructor(identityContext: IdentityContext.Interface, eventPublisher: EventPublisher.Interface, repository: RolesRepository.Interface);
14
12
  execute(input: CreateRoleInput): Promise<Result<Role, UseCaseAbstraction.Error>>;
15
13
  }
16
14
  export declare const CreateRoleUseCase: import("@webiny/di").Implementation<typeof CreateRoleUseCaseImpl>;
@@ -1,7 +1,6 @@
1
1
  import { mdbid } from "@webiny/utils";
2
2
  import { createImplementation } from "@webiny/feature/api";
3
3
  import { Result } from "@webiny/feature/api";
4
- import { TenantContext } from "../../../tenancy/TenantContext/index.js";
5
4
  import { EventPublisher } from "../../../eventPublisher/index.js";
6
5
  import { CreateRoleUseCase as UseCaseAbstraction } from "./abstractions.js";
7
6
  import { RolesRepository } from "../shared/abstractions.js";
@@ -10,8 +9,7 @@ import { createRoleValidation } from "./schema.js";
10
9
  import { RoleBeforeCreateEvent, RoleAfterCreateEvent } from "./events.js";
11
10
  import { NotAuthorizedError, RoleExistsError, RoleValidationError } from "../shared/errors.js";
12
11
  class CreateRoleUseCaseImpl {
13
- constructor(tenantContext, identityContext, eventPublisher, repository) {
14
- this.tenantContext = tenantContext;
12
+ constructor(identityContext, eventPublisher, repository) {
15
13
  this.identityContext = identityContext;
16
14
  this.eventPublisher = eventPublisher;
17
15
  this.repository = repository;
@@ -23,9 +21,8 @@ class CreateRoleUseCaseImpl {
23
21
  }
24
22
  const validation = createRoleValidation.safeParse(input);
25
23
  if (!validation.success) {
26
- return Result.fail(new RoleValidationError(validation.error.errors[0].message));
24
+ return Result.fail(new RoleValidationError(validation.error.issues[0].message));
27
25
  }
28
- const tenant = this.tenantContext.getTenant();
29
26
  const identity = this.identityContext.getIdentity();
30
27
  const data = validation.data;
31
28
 
@@ -43,7 +40,6 @@ class CreateRoleUseCaseImpl {
43
40
  description: data.description,
44
41
  permissions: data.permissions,
45
42
  system: input.system || false,
46
- tenant: tenant.id,
47
43
  createdOn: new Date().toISOString(),
48
44
  createdBy: {
49
45
  id: identity.id,
@@ -70,7 +66,7 @@ class CreateRoleUseCaseImpl {
70
66
  export const CreateRoleUseCase = createImplementation({
71
67
  abstraction: UseCaseAbstraction,
72
68
  implementation: CreateRoleUseCaseImpl,
73
- dependencies: [TenantContext, IdentityContext, EventPublisher, RolesRepository]
69
+ dependencies: [IdentityContext, EventPublisher, RolesRepository]
74
70
  });
75
71
 
76
72
  //# sourceMappingURL=CreateRoleUseCase.js.map
@@ -1 +1 @@
1
- {"version":3,"names":["mdbid","createImplementation","Result","TenantContext","EventPublisher","CreateRoleUseCase","UseCaseAbstraction","RolesRepository","IdentityContext","createRoleValidation","RoleBeforeCreateEvent","RoleAfterCreateEvent","NotAuthorizedError","RoleExistsError","RoleValidationError","CreateRoleUseCaseImpl","constructor","tenantContext","identityContext","eventPublisher","repository","execute","input","hasPermission","getPermission","fail","validation","safeParse","success","error","errors","message","tenant","getTenant","identity","getIdentity","data","existingRoleResult","get","slug","isOk","role","id","name","description","permissions","system","createdOn","Date","toISOString","createdBy","displayName","type","plugin","publish","result","create","isFail","ok","abstraction","implementation","dependencies"],"sources":["CreateRoleUseCase.ts"],"sourcesContent":["import { mdbid } from \"@webiny/utils\";\nimport { createImplementation } from \"@webiny/feature/api\";\nimport { Result } from \"@webiny/feature/api\";\nimport { TenantContext } from \"~/features/tenancy/TenantContext/index.js\";\nimport { EventPublisher } from \"~/features/eventPublisher/index.js\";\nimport { CreateRoleUseCase as UseCaseAbstraction } from \"./abstractions.js\";\nimport { RolesRepository } from \"../shared/abstractions.js\";\nimport { IdentityContext } from \"../../IdentityContext/abstractions.js\";\nimport { createRoleValidation } from \"./schema.js\";\nimport { RoleBeforeCreateEvent, RoleAfterCreateEvent } from \"./events.js\";\nimport type { Role, CreateRoleInput } from \"../shared/types.js\";\nimport { NotAuthorizedError, RoleExistsError, RoleValidationError } from \"../shared/errors.js\";\n\nclass CreateRoleUseCaseImpl implements UseCaseAbstraction.Interface {\n constructor(\n private tenantContext: TenantContext.Interface,\n private identityContext: IdentityContext.Interface,\n private eventPublisher: EventPublisher.Interface,\n private repository: RolesRepository.Interface\n ) {}\n\n async execute(input: CreateRoleInput): Promise<Result<Role, UseCaseAbstraction.Error>> {\n const hasPermission = await this.identityContext.getPermission(\"security.role\");\n\n if (!hasPermission) {\n return Result.fail(new NotAuthorizedError());\n }\n\n const validation = createRoleValidation.safeParse(input);\n if (!validation.success) {\n return Result.fail(new RoleValidationError(validation.error.errors[0].message));\n }\n\n const tenant = this.tenantContext.getTenant();\n const identity = this.identityContext.getIdentity();\n const data = validation.data;\n\n // Check if role with same slug already exists\n const existingRoleResult = await this.repository.get({ slug: data.slug });\n if (existingRoleResult.isOk()) {\n return Result.fail(new RoleExistsError(data.slug));\n }\n\n const role: Role = {\n id: mdbid(),\n name: data.name,\n slug: data.slug,\n description: data.description,\n permissions: data.permissions,\n system: input.system || false,\n tenant: tenant.id,\n createdOn: new Date().toISOString(),\n createdBy: {\n id: identity.id,\n displayName: identity.displayName,\n type: identity.type\n },\n plugin: false\n };\n\n await this.eventPublisher.publish(\n new RoleBeforeCreateEvent({ role, input: validation.data })\n );\n\n const result = await this.repository.create(role);\n\n if (result.isFail()) {\n return Result.fail(result.error);\n }\n\n await this.eventPublisher.publish(\n new RoleAfterCreateEvent({ role, input: validation.data })\n );\n\n return Result.ok(role);\n }\n}\n\nexport const CreateRoleUseCase = createImplementation({\n abstraction: UseCaseAbstraction,\n implementation: CreateRoleUseCaseImpl,\n dependencies: [TenantContext, IdentityContext, EventPublisher, RolesRepository]\n});\n"],"mappings":"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","ignoreList":[]}
1
+ {"version":3,"names":["mdbid","createImplementation","Result","EventPublisher","CreateRoleUseCase","UseCaseAbstraction","RolesRepository","IdentityContext","createRoleValidation","RoleBeforeCreateEvent","RoleAfterCreateEvent","NotAuthorizedError","RoleExistsError","RoleValidationError","CreateRoleUseCaseImpl","constructor","identityContext","eventPublisher","repository","execute","input","hasPermission","getPermission","fail","validation","safeParse","success","error","issues","message","identity","getIdentity","data","existingRoleResult","get","slug","isOk","role","id","name","description","permissions","system","createdOn","Date","toISOString","createdBy","displayName","type","plugin","publish","result","create","isFail","ok","abstraction","implementation","dependencies"],"sources":["CreateRoleUseCase.ts"],"sourcesContent":["import { mdbid } from \"@webiny/utils\";\nimport { createImplementation } from \"@webiny/feature/api\";\nimport { Result } from \"@webiny/feature/api\";\nimport { EventPublisher } from \"~/features/eventPublisher/index.js\";\nimport { CreateRoleUseCase as UseCaseAbstraction } from \"./abstractions.js\";\nimport { RolesRepository } from \"../shared/abstractions.js\";\nimport { IdentityContext } from \"../../IdentityContext/abstractions.js\";\nimport { createRoleValidation } from \"./schema.js\";\nimport { RoleBeforeCreateEvent, RoleAfterCreateEvent } from \"./events.js\";\nimport type { Role, CreateRoleInput } from \"../shared/types.js\";\nimport { NotAuthorizedError, RoleExistsError, RoleValidationError } from \"../shared/errors.js\";\n\nclass CreateRoleUseCaseImpl implements UseCaseAbstraction.Interface {\n constructor(\n private identityContext: IdentityContext.Interface,\n private eventPublisher: EventPublisher.Interface,\n private repository: RolesRepository.Interface\n ) {}\n\n async execute(input: CreateRoleInput): Promise<Result<Role, UseCaseAbstraction.Error>> {\n const hasPermission = await this.identityContext.getPermission(\"security.role\");\n\n if (!hasPermission) {\n return Result.fail(new NotAuthorizedError());\n }\n\n const validation = createRoleValidation.safeParse(input);\n if (!validation.success) {\n return Result.fail(new RoleValidationError(validation.error.issues[0].message));\n }\n\n const identity = this.identityContext.getIdentity();\n const data = validation.data;\n\n // Check if role with same slug already exists\n const existingRoleResult = await this.repository.get({ slug: data.slug });\n if (existingRoleResult.isOk()) {\n return Result.fail(new RoleExistsError(data.slug));\n }\n\n const role: Role = {\n id: mdbid(),\n name: data.name,\n slug: data.slug,\n description: data.description,\n permissions: data.permissions,\n system: input.system || false,\n createdOn: new Date().toISOString(),\n createdBy: {\n id: identity.id,\n displayName: identity.displayName,\n type: identity.type\n },\n plugin: false\n };\n\n await this.eventPublisher.publish(\n new RoleBeforeCreateEvent({ role, input: validation.data })\n );\n\n const result = await this.repository.create(role);\n\n if (result.isFail()) {\n return Result.fail(result.error);\n }\n\n await this.eventPublisher.publish(\n new RoleAfterCreateEvent({ role, input: validation.data })\n );\n\n return Result.ok(role);\n }\n}\n\nexport const CreateRoleUseCase = createImplementation({\n abstraction: UseCaseAbstraction,\n implementation: CreateRoleUseCaseImpl,\n dependencies: [IdentityContext, EventPublisher, RolesRepository]\n});\n"],"mappings":"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","ignoreList":[]}
@@ -11,6 +11,7 @@ type CreateRoleError = ICreateRoleErrors[keyof ICreateRoleErrors] | RolesReposit
11
11
  export interface ICreateRole {
12
12
  execute(input: CreateRoleInput): Promise<Result<Role, CreateRoleError>>;
13
13
  }
14
+ /** Create a new security role. */
14
15
  export declare const CreateRoleUseCase: import("@webiny/di").Abstraction<ICreateRole>;
15
16
  export declare namespace CreateRoleUseCase {
16
17
  type Interface = ICreateRole;