@webiny/api-core 6.3.0 → 6.4.0-beta.1

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 (816) hide show
  1. package/ApiCoreFeature.js +22 -18
  2. package/ApiCoreFeature.js.map +1 -1
  3. package/createApiCore.d.ts +1 -1
  4. package/createApiCore.js +14 -9
  5. package/createApiCore.js.map +1 -1
  6. package/domain/identity/SystemIdentityValue.js +9 -8
  7. package/domain/identity/SystemIdentityValue.js.map +1 -1
  8. package/domain/security/ApiToken.js +5 -11
  9. package/domain/security/ApiToken.js.map +1 -1
  10. package/domain/tenancy/RootTenantValue.js +9 -8
  11. package/domain/tenancy/RootTenantValue.js.map +1 -1
  12. package/domain/tenancy/errors.js +0 -3
  13. package/exports/api/build-params.js +0 -3
  14. package/exports/api/event-publisher.js +0 -3
  15. package/exports/api/graphql.js +0 -2
  16. package/exports/api/key-value-store.js +0 -3
  17. package/exports/api/logger.js +0 -3
  18. package/exports/api/security/api-key.js +0 -2
  19. package/exports/api/security/authentication.js +0 -2
  20. package/exports/api/security/role.js +1 -3
  21. package/exports/api/security/user.js +0 -2
  22. package/exports/api/security.js +3 -7
  23. package/exports/api/system.js +0 -2
  24. package/exports/api/tasks.js +0 -2
  25. package/exports/api/tenancy.js +4 -6
  26. package/exports/api/webhooks.d.ts +1 -0
  27. package/exports/api/webhooks.js +1 -0
  28. package/exports/api.js +1 -3
  29. package/features/ai/Ai.js +100 -117
  30. package/features/ai/Ai.js.map +1 -1
  31. package/features/ai/AiSdkTools.js +23 -19
  32. package/features/ai/AiSdkTools.js.map +1 -1
  33. package/features/ai/AnthropicSdkFactory.js +82 -65
  34. package/features/ai/AnthropicSdkFactory.js.map +1 -1
  35. package/features/ai/OpenAiSdkFactory.js +234 -181
  36. package/features/ai/OpenAiSdkFactory.js.map +1 -1
  37. package/features/ai/abstractions.js +7 -32
  38. package/features/ai/abstractions.js.map +1 -1
  39. package/features/ai/feature.js +9 -8
  40. package/features/ai/feature.js.map +1 -1
  41. package/features/ai/index.js +1 -3
  42. package/features/buildParams/BuildParams.js +20 -14
  43. package/features/buildParams/BuildParams.js.map +1 -1
  44. package/features/buildParams/abstractions.js +3 -4
  45. package/features/buildParams/abstractions.js.map +1 -1
  46. package/features/buildParams/feature.js +6 -5
  47. package/features/buildParams/feature.js.map +1 -1
  48. package/features/buildParams/index.js +0 -2
  49. package/features/encryption/EncryptionService.js +50 -46
  50. package/features/encryption/EncryptionService.js.map +1 -1
  51. package/features/encryption/abstractions.js +2 -2
  52. package/features/encryption/abstractions.js.map +1 -1
  53. package/features/encryption/feature.js +6 -5
  54. package/features/encryption/feature.js.map +1 -1
  55. package/features/encryption/index.js +0 -2
  56. package/features/eventPublisher/EventPublisher.js +9 -15
  57. package/features/eventPublisher/EventPublisher.js.map +1 -1
  58. package/features/eventPublisher/__tests__/EventPublisher.test.js +385 -419
  59. package/features/eventPublisher/__tests__/EventPublisher.test.js.map +1 -1
  60. package/features/eventPublisher/abstractions.js +7 -12
  61. package/features/eventPublisher/abstractions.js.map +1 -1
  62. package/features/eventPublisher/feature.js +8 -7
  63. package/features/eventPublisher/feature.js.map +1 -1
  64. package/features/eventPublisher/index.js +0 -2
  65. package/features/featureFlags/FeatureFlags.js +15 -12
  66. package/features/featureFlags/FeatureFlags.js.map +1 -1
  67. package/features/featureFlags/abstractions.js +2 -1
  68. package/features/featureFlags/abstractions.js.map +1 -1
  69. package/features/featureFlags/feature.js +6 -5
  70. package/features/featureFlags/feature.js.map +1 -1
  71. package/features/keyValueStore/GlobalKeyValueStore.js +28 -23
  72. package/features/keyValueStore/GlobalKeyValueStore.js.map +1 -1
  73. package/features/keyValueStore/KeyValueStore.js +30 -27
  74. package/features/keyValueStore/KeyValueStore.js.map +1 -1
  75. package/features/keyValueStore/KeyValueStoreRepository.d.ts +2 -2
  76. package/features/keyValueStore/KeyValueStoreRepository.js +34 -41
  77. package/features/keyValueStore/KeyValueStoreRepository.js.map +1 -1
  78. package/features/keyValueStore/abstractions.d.ts +6 -2
  79. package/features/keyValueStore/abstractions.js +5 -20
  80. package/features/keyValueStore/abstractions.js.map +1 -1
  81. package/features/keyValueStore/errors.js +16 -17
  82. package/features/keyValueStore/errors.js.map +1 -1
  83. package/features/keyValueStore/feature.js +9 -9
  84. package/features/keyValueStore/feature.js.map +1 -1
  85. package/features/keyValueStore/index.js +1 -3
  86. package/features/logger/LoggerService.js +41 -45
  87. package/features/logger/LoggerService.js.map +1 -1
  88. package/features/logger/abstractions.js +2 -2
  89. package/features/logger/abstractions.js.map +1 -1
  90. package/features/logger/feature.js +6 -5
  91. package/features/logger/feature.js.map +1 -1
  92. package/features/logger/index.js +0 -2
  93. package/features/masker/Masker.js +11 -14
  94. package/features/masker/Masker.js.map +1 -1
  95. package/features/masker/abstractions.js +2 -1
  96. package/features/masker/abstractions.js.map +1 -1
  97. package/features/masker/feature.js +7 -6
  98. package/features/masker/feature.js.map +1 -1
  99. package/features/masker/index.js +0 -2
  100. package/features/security/IdentityContext/AnonymousIdentity.js +12 -16
  101. package/features/security/IdentityContext/AnonymousIdentity.js.map +1 -1
  102. package/features/security/IdentityContext/AuthenticatedIdentity.js +5 -8
  103. package/features/security/IdentityContext/AuthenticatedIdentity.js.map +1 -1
  104. package/features/security/IdentityContext/Identity.js +63 -71
  105. package/features/security/IdentityContext/Identity.js.map +1 -1
  106. package/features/security/IdentityContext/IdentityContext.js +69 -106
  107. package/features/security/IdentityContext/IdentityContext.js.map +1 -1
  108. package/features/security/IdentityContext/abstractions.js +2 -2
  109. package/features/security/IdentityContext/abstractions.js.map +1 -1
  110. package/features/security/IdentityContext/feature.js +6 -5
  111. package/features/security/IdentityContext/feature.js.map +1 -1
  112. package/features/security/IdentityContext/index.js +0 -3
  113. package/features/security/SecurityFeature.js +13 -21
  114. package/features/security/SecurityFeature.js.map +1 -1
  115. package/features/security/apiKeys/CreateApiKey/CreateApiKeyUseCase.js +48 -49
  116. package/features/security/apiKeys/CreateApiKey/CreateApiKeyUseCase.js.map +1 -1
  117. package/features/security/apiKeys/CreateApiKey/abstractions.js +2 -2
  118. package/features/security/apiKeys/CreateApiKey/abstractions.js.map +1 -1
  119. package/features/security/apiKeys/CreateApiKey/events.js +17 -16
  120. package/features/security/apiKeys/CreateApiKey/events.js.map +1 -1
  121. package/features/security/apiKeys/CreateApiKey/feature.js +6 -5
  122. package/features/security/apiKeys/CreateApiKey/feature.js.map +1 -1
  123. package/features/security/apiKeys/CreateApiKey/index.js +0 -2
  124. package/features/security/apiKeys/DeleteApiKey/DeleteApiKeyUseCase.js +29 -30
  125. package/features/security/apiKeys/DeleteApiKey/DeleteApiKeyUseCase.js.map +1 -1
  126. package/features/security/apiKeys/DeleteApiKey/abstractions.js +2 -2
  127. package/features/security/apiKeys/DeleteApiKey/abstractions.js.map +1 -1
  128. package/features/security/apiKeys/DeleteApiKey/events.js +17 -16
  129. package/features/security/apiKeys/DeleteApiKey/events.js.map +1 -1
  130. package/features/security/apiKeys/DeleteApiKey/feature.js +6 -5
  131. package/features/security/apiKeys/DeleteApiKey/feature.js.map +1 -1
  132. package/features/security/apiKeys/DeleteApiKey/index.js +0 -2
  133. package/features/security/apiKeys/GetApiKey/GetApiKeyUseCase.js +16 -14
  134. package/features/security/apiKeys/GetApiKey/GetApiKeyUseCase.js.map +1 -1
  135. package/features/security/apiKeys/GetApiKey/abstractions.js +2 -2
  136. package/features/security/apiKeys/GetApiKey/abstractions.js.map +1 -1
  137. package/features/security/apiKeys/GetApiKey/feature.js +6 -5
  138. package/features/security/apiKeys/GetApiKey/feature.js.map +1 -1
  139. package/features/security/apiKeys/GetApiKey/index.js +0 -2
  140. package/features/security/apiKeys/GetApiKeyBySlug/GetApiKeyBySlugUseCase.js +13 -10
  141. package/features/security/apiKeys/GetApiKeyBySlug/GetApiKeyBySlugUseCase.js.map +1 -1
  142. package/features/security/apiKeys/GetApiKeyBySlug/abstractions.js +2 -2
  143. package/features/security/apiKeys/GetApiKeyBySlug/abstractions.js.map +1 -1
  144. package/features/security/apiKeys/GetApiKeyBySlug/feature.js +6 -5
  145. package/features/security/apiKeys/GetApiKeyBySlug/feature.js.map +1 -1
  146. package/features/security/apiKeys/GetApiKeyBySlug/index.js +0 -2
  147. package/features/security/apiKeys/GetApiKeyByToken/GetApiKeyByTokenUseCase.js +13 -10
  148. package/features/security/apiKeys/GetApiKeyByToken/GetApiKeyByTokenUseCase.js.map +1 -1
  149. package/features/security/apiKeys/GetApiKeyByToken/abstractions.js +2 -2
  150. package/features/security/apiKeys/GetApiKeyByToken/abstractions.js.map +1 -1
  151. package/features/security/apiKeys/GetApiKeyByToken/feature.js +6 -5
  152. package/features/security/apiKeys/GetApiKeyByToken/feature.js.map +1 -1
  153. package/features/security/apiKeys/GetApiKeyByToken/index.js +0 -2
  154. package/features/security/apiKeys/ListApiKeys/ListApiKeysUseCase.js +17 -17
  155. package/features/security/apiKeys/ListApiKeys/ListApiKeysUseCase.js.map +1 -1
  156. package/features/security/apiKeys/ListApiKeys/abstractions.js +2 -2
  157. package/features/security/apiKeys/ListApiKeys/abstractions.js.map +1 -1
  158. package/features/security/apiKeys/ListApiKeys/feature.js +6 -5
  159. package/features/security/apiKeys/ListApiKeys/feature.js.map +1 -1
  160. package/features/security/apiKeys/ListApiKeys/index.js +0 -2
  161. package/features/security/apiKeys/UpdateApiKey/UpdateApiKeyUseCase.js +39 -42
  162. package/features/security/apiKeys/UpdateApiKey/UpdateApiKeyUseCase.js.map +1 -1
  163. package/features/security/apiKeys/UpdateApiKey/abstractions.js +2 -2
  164. package/features/security/apiKeys/UpdateApiKey/abstractions.js.map +1 -1
  165. package/features/security/apiKeys/UpdateApiKey/events.js +17 -16
  166. package/features/security/apiKeys/UpdateApiKey/events.js.map +1 -1
  167. package/features/security/apiKeys/UpdateApiKey/feature.js +6 -5
  168. package/features/security/apiKeys/UpdateApiKey/feature.js.map +1 -1
  169. package/features/security/apiKeys/UpdateApiKey/index.js +0 -2
  170. package/features/security/apiKeys/feature.js +14 -16
  171. package/features/security/apiKeys/feature.js.map +1 -1
  172. package/features/security/apiKeys/shared/ApiKeyProvider.js +42 -42
  173. package/features/security/apiKeys/shared/ApiKeyProvider.js.map +1 -1
  174. package/features/security/apiKeys/shared/ApiKeysRepository.js +108 -135
  175. package/features/security/apiKeys/shared/ApiKeysRepository.js.map +1 -1
  176. package/features/security/apiKeys/shared/abstractions.js +4 -6
  177. package/features/security/apiKeys/shared/abstractions.js.map +1 -1
  178. package/features/security/apiKeys/shared/errors.js +29 -32
  179. package/features/security/apiKeys/shared/errors.js.map +1 -1
  180. package/features/security/apiKeys/shared/generateToken.js +6 -16
  181. package/features/security/apiKeys/shared/generateToken.js.map +1 -1
  182. package/features/security/apiKeys/shared/schemas.js +27 -23
  183. package/features/security/apiKeys/shared/schemas.js.map +1 -1
  184. package/features/security/apiKeys/shared/types.js +0 -3
  185. package/features/security/authentication/AuthenticationContext/AuthenticationContext.js +44 -38
  186. package/features/security/authentication/AuthenticationContext/AuthenticationContext.js.map +1 -1
  187. package/features/security/authentication/AuthenticationContext/SetIdTokenCookie.js +33 -43
  188. package/features/security/authentication/AuthenticationContext/SetIdTokenCookie.js.map +1 -1
  189. package/features/security/authentication/AuthenticationContext/abstractions.js +2 -2
  190. package/features/security/authentication/AuthenticationContext/abstractions.js.map +1 -1
  191. package/features/security/authentication/AuthenticationContext/errors.js +51 -116
  192. package/features/security/authentication/AuthenticationContext/errors.js.map +1 -1
  193. package/features/security/authentication/AuthenticationContext/events.js +17 -16
  194. package/features/security/authentication/AuthenticationContext/events.js.map +1 -1
  195. package/features/security/authentication/AuthenticationContext/feature.js +6 -5
  196. package/features/security/authentication/AuthenticationContext/feature.js.map +1 -1
  197. package/features/security/authentication/AuthenticationContext/index.js +2 -4
  198. package/features/security/authentication/Authenticator/abstractions.js +2 -2
  199. package/features/security/authentication/Authenticator/abstractions.js.map +1 -1
  200. package/features/security/authentication/Authenticator/index.js +0 -2
  201. package/features/security/authorization/AuthorizationContext/AuthorizationContext.js +46 -59
  202. package/features/security/authorization/AuthorizationContext/AuthorizationContext.js.map +1 -1
  203. package/features/security/authorization/AuthorizationContext/abstractions.js +3 -4
  204. package/features/security/authorization/AuthorizationContext/abstractions.js.map +1 -1
  205. package/features/security/authorization/AuthorizationContext/feature.js +10 -9
  206. package/features/security/authorization/AuthorizationContext/feature.js.map +1 -1
  207. package/features/security/authorization/AuthorizationContext/index.js +1 -4
  208. package/features/security/authorization/Authorizer/abstractions.js +2 -2
  209. package/features/security/authorization/Authorizer/abstractions.js.map +1 -1
  210. package/features/security/authorization/Authorizer/index.js +0 -2
  211. package/features/security/authorization/GroupsTeamsAuthorizer/GetPermissionsFromIdentity.js +60 -64
  212. package/features/security/authorization/GroupsTeamsAuthorizer/GetPermissionsFromIdentity.js.map +1 -1
  213. package/features/security/authorization/GroupsTeamsAuthorizer/RolesTeamsAuthorizer.js +26 -40
  214. package/features/security/authorization/GroupsTeamsAuthorizer/RolesTeamsAuthorizer.js.map +1 -1
  215. package/features/security/authorization/GroupsTeamsAuthorizer/abstractions.js +2 -1
  216. package/features/security/authorization/GroupsTeamsAuthorizer/abstractions.js.map +1 -1
  217. package/features/security/authorization/GroupsTeamsAuthorizer/feature.js +7 -6
  218. package/features/security/authorization/GroupsTeamsAuthorizer/feature.js.map +1 -1
  219. package/features/security/login/abstractions.js +9 -8
  220. package/features/security/login/abstractions.js.map +1 -1
  221. package/features/security/login/index.js +0 -2
  222. package/features/security/permissions/createPermissionSchema.js +6 -5
  223. package/features/security/permissions/createPermissionSchema.js.map +1 -1
  224. package/features/security/permissions/createPermissions.js +148 -236
  225. package/features/security/permissions/createPermissions.js.map +1 -1
  226. package/features/security/permissions/index.js +0 -2
  227. package/features/security/permissions/types.js +0 -3
  228. package/features/security/roles/CreateRole/CreateRoleUseCase.js +53 -59
  229. package/features/security/roles/CreateRole/CreateRoleUseCase.js.map +1 -1
  230. package/features/security/roles/CreateRole/abstractions.js +2 -2
  231. package/features/security/roles/CreateRole/abstractions.js.map +1 -1
  232. package/features/security/roles/CreateRole/events.js +17 -16
  233. package/features/security/roles/CreateRole/events.js.map +1 -1
  234. package/features/security/roles/CreateRole/feature.js +6 -5
  235. package/features/security/roles/CreateRole/feature.js.map +1 -1
  236. package/features/security/roles/CreateRole/index.js +0 -2
  237. package/features/security/roles/CreateRole/schema.js +8 -7
  238. package/features/security/roles/CreateRole/schema.js.map +1 -1
  239. package/features/security/roles/DeleteRole/DeleteRoleUseCase.js +35 -41
  240. package/features/security/roles/DeleteRole/DeleteRoleUseCase.js.map +1 -1
  241. package/features/security/roles/DeleteRole/abstractions.js +2 -2
  242. package/features/security/roles/DeleteRole/abstractions.js.map +1 -1
  243. package/features/security/roles/DeleteRole/events.js +17 -16
  244. package/features/security/roles/DeleteRole/events.js.map +1 -1
  245. package/features/security/roles/DeleteRole/feature.js +6 -5
  246. package/features/security/roles/DeleteRole/feature.js.map +1 -1
  247. package/features/security/roles/DeleteRole/index.js +0 -2
  248. package/features/security/roles/GetRole/GetRoleUseCase.js +19 -18
  249. package/features/security/roles/GetRole/GetRoleUseCase.js.map +1 -1
  250. package/features/security/roles/GetRole/abstractions.js +2 -2
  251. package/features/security/roles/GetRole/abstractions.js.map +1 -1
  252. package/features/security/roles/GetRole/feature.js +6 -5
  253. package/features/security/roles/GetRole/feature.js.map +1 -1
  254. package/features/security/roles/GetRole/index.js +0 -2
  255. package/features/security/roles/Installer/RolesInstaller.js +38 -35
  256. package/features/security/roles/Installer/RolesInstaller.js.map +1 -1
  257. package/features/security/roles/ListRoles/ListRolesUseCase.js +18 -17
  258. package/features/security/roles/ListRoles/ListRolesUseCase.js.map +1 -1
  259. package/features/security/roles/ListRoles/abstractions.js +2 -2
  260. package/features/security/roles/ListRoles/abstractions.js.map +1 -1
  261. package/features/security/roles/ListRoles/feature.js +6 -5
  262. package/features/security/roles/ListRoles/feature.js.map +1 -1
  263. package/features/security/roles/ListRoles/index.js +0 -2
  264. package/features/security/roles/UpdateRole/UpdateRoleUseCase.js +43 -50
  265. package/features/security/roles/UpdateRole/UpdateRoleUseCase.js.map +1 -1
  266. package/features/security/roles/UpdateRole/abstractions.js +2 -2
  267. package/features/security/roles/UpdateRole/abstractions.js.map +1 -1
  268. package/features/security/roles/UpdateRole/events.js +17 -16
  269. package/features/security/roles/UpdateRole/events.js.map +1 -1
  270. package/features/security/roles/UpdateRole/feature.js +6 -5
  271. package/features/security/roles/UpdateRole/feature.js.map +1 -1
  272. package/features/security/roles/UpdateRole/index.js +0 -2
  273. package/features/security/roles/UpdateRole/schema.js +7 -6
  274. package/features/security/roles/UpdateRole/schema.js.map +1 -1
  275. package/features/security/roles/feature.js +14 -18
  276. package/features/security/roles/feature.js.map +1 -1
  277. package/features/security/roles/shared/RoleProvider.js +27 -21
  278. package/features/security/roles/shared/RoleProvider.js.map +1 -1
  279. package/features/security/roles/shared/RolesRepository.js +96 -113
  280. package/features/security/roles/shared/RolesRepository.js.map +1 -1
  281. package/features/security/roles/shared/abstractions.js +3 -4
  282. package/features/security/roles/shared/abstractions.js.map +1 -1
  283. package/features/security/roles/shared/decorators/ListCache.js +23 -22
  284. package/features/security/roles/shared/decorators/ListCache.js.map +1 -1
  285. package/features/security/roles/shared/decorators/RolesRepositoryCachingDecorator.js +40 -62
  286. package/features/security/roles/shared/decorators/RolesRepositoryCachingDecorator.js.map +1 -1
  287. package/features/security/roles/shared/errors.js +50 -56
  288. package/features/security/roles/shared/errors.js.map +1 -1
  289. package/features/security/roles/shared/types.js +0 -3
  290. package/features/security/shared/abstractions.js +4 -6
  291. package/features/security/shared/abstractions.js.map +1 -1
  292. package/features/security/shared/errors.js +8 -8
  293. package/features/security/shared/errors.js.map +1 -1
  294. package/features/security/shared/index.js +0 -2
  295. package/features/security/teams/CreateTeam/CreateTeamUseCase.js +53 -59
  296. package/features/security/teams/CreateTeam/CreateTeamUseCase.js.map +1 -1
  297. package/features/security/teams/CreateTeam/abstractions.js +2 -2
  298. package/features/security/teams/CreateTeam/abstractions.js.map +1 -1
  299. package/features/security/teams/CreateTeam/events.js +17 -16
  300. package/features/security/teams/CreateTeam/events.js.map +1 -1
  301. package/features/security/teams/CreateTeam/feature.js +6 -5
  302. package/features/security/teams/CreateTeam/feature.js.map +1 -1
  303. package/features/security/teams/CreateTeam/index.js +0 -2
  304. package/features/security/teams/CreateTeam/schema.js +6 -5
  305. package/features/security/teams/CreateTeam/schema.js.map +1 -1
  306. package/features/security/teams/DeleteTeam/DeleteTeamUseCase.js +36 -46
  307. package/features/security/teams/DeleteTeam/DeleteTeamUseCase.js.map +1 -1
  308. package/features/security/teams/DeleteTeam/abstractions.js +2 -2
  309. package/features/security/teams/DeleteTeam/abstractions.js.map +1 -1
  310. package/features/security/teams/DeleteTeam/events.js +17 -16
  311. package/features/security/teams/DeleteTeam/events.js.map +1 -1
  312. package/features/security/teams/DeleteTeam/feature.js +6 -5
  313. package/features/security/teams/DeleteTeam/feature.js.map +1 -1
  314. package/features/security/teams/DeleteTeam/index.js +0 -2
  315. package/features/security/teams/GetTeam/GetTeamUseCase.js +17 -17
  316. package/features/security/teams/GetTeam/GetTeamUseCase.js.map +1 -1
  317. package/features/security/teams/GetTeam/abstractions.js +2 -2
  318. package/features/security/teams/GetTeam/abstractions.js.map +1 -1
  319. package/features/security/teams/GetTeam/feature.js +6 -5
  320. package/features/security/teams/GetTeam/feature.js.map +1 -1
  321. package/features/security/teams/GetTeam/index.js +0 -2
  322. package/features/security/teams/ListTeams/ListTeamsUseCase.js +20 -21
  323. package/features/security/teams/ListTeams/ListTeamsUseCase.js.map +1 -1
  324. package/features/security/teams/ListTeams/abstractions.js +2 -2
  325. package/features/security/teams/ListTeams/abstractions.js.map +1 -1
  326. package/features/security/teams/ListTeams/feature.js +6 -5
  327. package/features/security/teams/ListTeams/feature.js.map +1 -1
  328. package/features/security/teams/ListTeams/index.js +0 -2
  329. package/features/security/teams/UpdateTeam/UpdateTeamUseCase.js +46 -58
  330. package/features/security/teams/UpdateTeam/UpdateTeamUseCase.js.map +1 -1
  331. package/features/security/teams/UpdateTeam/abstractions.js +2 -2
  332. package/features/security/teams/UpdateTeam/abstractions.js.map +1 -1
  333. package/features/security/teams/UpdateTeam/events.js +17 -16
  334. package/features/security/teams/UpdateTeam/events.js.map +1 -1
  335. package/features/security/teams/UpdateTeam/feature.js +6 -5
  336. package/features/security/teams/UpdateTeam/feature.js.map +1 -1
  337. package/features/security/teams/UpdateTeam/index.js +0 -2
  338. package/features/security/teams/UpdateTeam/schema.js +5 -4
  339. package/features/security/teams/UpdateTeam/schema.js.map +1 -1
  340. package/features/security/teams/feature.js +13 -17
  341. package/features/security/teams/feature.js.map +1 -1
  342. package/features/security/teams/shared/TeamProvider.js +27 -21
  343. package/features/security/teams/shared/TeamProvider.js.map +1 -1
  344. package/features/security/teams/shared/TeamsRepository.js +100 -118
  345. package/features/security/teams/shared/TeamsRepository.js.map +1 -1
  346. package/features/security/teams/shared/abstractions.js +3 -4
  347. package/features/security/teams/shared/abstractions.js.map +1 -1
  348. package/features/security/teams/shared/decorators/TeamsRepositoryCachingDecorator.js +40 -62
  349. package/features/security/teams/shared/decorators/TeamsRepositoryCachingDecorator.js.map +1 -1
  350. package/features/security/teams/shared/errors.js +62 -70
  351. package/features/security/teams/shared/errors.js.map +1 -1
  352. package/features/security/teams/shared/types.js +0 -3
  353. package/features/security/utils/AppPermissions.js +50 -89
  354. package/features/security/utils/AppPermissions.js.map +1 -1
  355. package/features/security/utils/IdentityValue.js +19 -22
  356. package/features/security/utils/IdentityValue.js.map +1 -1
  357. package/features/security/utils/filterOutCustomWbyAppsPermissions.js +24 -27
  358. package/features/security/utils/filterOutCustomWbyAppsPermissions.js.map +1 -1
  359. package/features/security/utils/getPermissionsFromRoles.js +5 -10
  360. package/features/security/utils/getPermissionsFromRoles.js.map +1 -1
  361. package/features/security/utils/isJwt.js +2 -1
  362. package/features/security/utils/isJwt.js.map +1 -1
  363. package/features/security/utils/verifyJwtUsingJwk.js +6 -7
  364. package/features/security/utils/verifyJwtUsingJwk.js.map +1 -1
  365. package/features/system/InstallSystem/InstallSystemUseCase.js +45 -44
  366. package/features/system/InstallSystem/InstallSystemUseCase.js.map +1 -1
  367. package/features/system/InstallSystem/abstractions.js +3 -17
  368. package/features/system/InstallSystem/abstractions.js.map +1 -1
  369. package/features/system/InstallSystem/errors.js +15 -16
  370. package/features/system/InstallSystem/errors.js.map +1 -1
  371. package/features/system/InstallSystem/events.js +8 -5
  372. package/features/system/InstallSystem/events.js.map +1 -1
  373. package/features/system/InstallSystem/feature.js +6 -7
  374. package/features/system/InstallSystem/feature.js.map +1 -1
  375. package/features/system/InstallSystem/index.js +2 -6
  376. package/features/system/SystemFeature.js +6 -5
  377. package/features/system/SystemFeature.js.map +1 -1
  378. package/features/task/TaskController/abstractions.js +2 -10
  379. package/features/task/TaskController/abstractions.js.map +1 -1
  380. package/features/task/TaskController/index.js +0 -2
  381. package/features/task/TaskDefinition/abstractions.js +8 -40
  382. package/features/task/TaskDefinition/abstractions.js.map +1 -1
  383. package/features/task/TaskDefinition/index.js +0 -2
  384. package/features/task/TaskService/abstractions.js +9 -13
  385. package/features/task/TaskService/abstractions.js.map +1 -1
  386. package/features/task/TaskService/index.js +0 -2
  387. package/features/tenancy/CreateTenant/CreateTenantGateway.js +14 -11
  388. package/features/tenancy/CreateTenant/CreateTenantGateway.js.map +1 -1
  389. package/features/tenancy/CreateTenant/CreateTenantRepository.js +18 -15
  390. package/features/tenancy/CreateTenant/CreateTenantRepository.js.map +1 -1
  391. package/features/tenancy/CreateTenant/CreateTenantUseCase.js +44 -41
  392. package/features/tenancy/CreateTenant/CreateTenantUseCase.js.map +1 -1
  393. package/features/tenancy/CreateTenant/abstractions.js +6 -29
  394. package/features/tenancy/CreateTenant/abstractions.js.map +1 -1
  395. package/features/tenancy/CreateTenant/decorators/CreateTenantWithWcpIncrement.js +16 -15
  396. package/features/tenancy/CreateTenant/decorators/CreateTenantWithWcpIncrement.js.map +1 -1
  397. package/features/tenancy/CreateTenant/errors.js +8 -8
  398. package/features/tenancy/CreateTenant/errors.js.map +1 -1
  399. package/features/tenancy/CreateTenant/events.js +16 -11
  400. package/features/tenancy/CreateTenant/events.js.map +1 -1
  401. package/features/tenancy/CreateTenant/feature.js +9 -8
  402. package/features/tenancy/CreateTenant/feature.js.map +1 -1
  403. package/features/tenancy/CreateTenant/index.js +2 -4
  404. package/features/tenancy/DeleteTenant/DeleteTenantGateway.js +15 -12
  405. package/features/tenancy/DeleteTenant/DeleteTenantGateway.js.map +1 -1
  406. package/features/tenancy/DeleteTenant/DeleteTenantRepository.js +22 -19
  407. package/features/tenancy/DeleteTenant/DeleteTenantRepository.js.map +1 -1
  408. package/features/tenancy/DeleteTenant/DeleteTenantUseCase.js +29 -27
  409. package/features/tenancy/DeleteTenant/DeleteTenantUseCase.js.map +1 -1
  410. package/features/tenancy/DeleteTenant/abstractions.js +6 -10
  411. package/features/tenancy/DeleteTenant/abstractions.js.map +1 -1
  412. package/features/tenancy/DeleteTenant/decorators/DeleteTenantWithWcpDecrement.js +16 -13
  413. package/features/tenancy/DeleteTenant/decorators/DeleteTenantWithWcpDecrement.js.map +1 -1
  414. package/features/tenancy/DeleteTenant/events.js +16 -11
  415. package/features/tenancy/DeleteTenant/events.js.map +1 -1
  416. package/features/tenancy/DeleteTenant/feature.js +9 -8
  417. package/features/tenancy/DeleteTenant/feature.js.map +1 -1
  418. package/features/tenancy/DeleteTenant/index.js +2 -4
  419. package/features/tenancy/GetRootTenant/GetRootTenantUseCase.js +15 -12
  420. package/features/tenancy/GetRootTenant/GetRootTenantUseCase.js.map +1 -1
  421. package/features/tenancy/GetRootTenant/abstractions.js +2 -4
  422. package/features/tenancy/GetRootTenant/abstractions.js.map +1 -1
  423. package/features/tenancy/GetRootTenant/feature.js +6 -5
  424. package/features/tenancy/GetRootTenant/feature.js.map +1 -1
  425. package/features/tenancy/GetRootTenant/index.js +0 -2
  426. package/features/tenancy/GetTenantById/GetTenantByIdGateway.js +17 -12
  427. package/features/tenancy/GetTenantById/GetTenantByIdGateway.js.map +1 -1
  428. package/features/tenancy/GetTenantById/GetTenantByIdRepository.js +18 -19
  429. package/features/tenancy/GetTenantById/GetTenantByIdRepository.js.map +1 -1
  430. package/features/tenancy/GetTenantById/GetTenantByIdUseCase.js +17 -17
  431. package/features/tenancy/GetTenantById/GetTenantByIdUseCase.js.map +1 -1
  432. package/features/tenancy/GetTenantById/abstractions.js +4 -6
  433. package/features/tenancy/GetTenantById/abstractions.js.map +1 -1
  434. package/features/tenancy/GetTenantById/feature.js +8 -12
  435. package/features/tenancy/GetTenantById/feature.js.map +1 -1
  436. package/features/tenancy/GetTenantById/index.js +1 -3
  437. package/features/tenancy/InstallTenant/DependencyResolver.js +53 -65
  438. package/features/tenancy/InstallTenant/DependencyResolver.js.map +1 -1
  439. package/features/tenancy/InstallTenant/InstallTenantUseCase.js +95 -113
  440. package/features/tenancy/InstallTenant/InstallTenantUseCase.js.map +1 -1
  441. package/features/tenancy/InstallTenant/abstractions.js +4 -15
  442. package/features/tenancy/InstallTenant/abstractions.js.map +1 -1
  443. package/features/tenancy/InstallTenant/errors.js +15 -16
  444. package/features/tenancy/InstallTenant/errors.js.map +1 -1
  445. package/features/tenancy/InstallTenant/events.js +8 -5
  446. package/features/tenancy/InstallTenant/events.js.map +1 -1
  447. package/features/tenancy/InstallTenant/feature.js +6 -5
  448. package/features/tenancy/InstallTenant/feature.js.map +1 -1
  449. package/features/tenancy/InstallTenant/index.js +1 -3
  450. package/features/tenancy/ListTenants/ListTenantsGateway.js +14 -11
  451. package/features/tenancy/ListTenants/ListTenantsGateway.js.map +1 -1
  452. package/features/tenancy/ListTenants/ListTenantsRepository.js +14 -12
  453. package/features/tenancy/ListTenants/ListTenantsRepository.js.map +1 -1
  454. package/features/tenancy/ListTenants/ListTenantsUseCase.js +16 -14
  455. package/features/tenancy/ListTenants/ListTenantsUseCase.js.map +1 -1
  456. package/features/tenancy/ListTenants/abstractions.js +4 -12
  457. package/features/tenancy/ListTenants/abstractions.js.map +1 -1
  458. package/features/tenancy/ListTenants/feature.js +8 -7
  459. package/features/tenancy/ListTenants/feature.js.map +1 -1
  460. package/features/tenancy/ListTenants/index.js +1 -3
  461. package/features/tenancy/TenancyFeature.js +20 -26
  462. package/features/tenancy/TenancyFeature.js.map +1 -1
  463. package/features/tenancy/TenantContext/TenantContext.js +46 -48
  464. package/features/tenancy/TenantContext/TenantContext.js.map +1 -1
  465. package/features/tenancy/TenantContext/abstractions.js +2 -2
  466. package/features/tenancy/TenantContext/abstractions.js.map +1 -1
  467. package/features/tenancy/TenantContext/errors.js +7 -7
  468. package/features/tenancy/TenantContext/errors.js.map +1 -1
  469. package/features/tenancy/TenantContext/feature.js +6 -5
  470. package/features/tenancy/TenantContext/feature.js.map +1 -1
  471. package/features/tenancy/TenantContext/index.js +0 -2
  472. package/features/tenancy/UpdateTenant/UpdateTenantGateway.js +14 -11
  473. package/features/tenancy/UpdateTenant/UpdateTenantGateway.js.map +1 -1
  474. package/features/tenancy/UpdateTenant/UpdateTenantRepository.js +19 -16
  475. package/features/tenancy/UpdateTenant/UpdateTenantRepository.js.map +1 -1
  476. package/features/tenancy/UpdateTenant/UpdateTenantUseCase.js +37 -36
  477. package/features/tenancy/UpdateTenant/UpdateTenantUseCase.js.map +1 -1
  478. package/features/tenancy/UpdateTenant/abstractions.js +6 -10
  479. package/features/tenancy/UpdateTenant/abstractions.js.map +1 -1
  480. package/features/tenancy/UpdateTenant/events.js +16 -11
  481. package/features/tenancy/UpdateTenant/events.js.map +1 -1
  482. package/features/tenancy/UpdateTenant/feature.js +8 -7
  483. package/features/tenancy/UpdateTenant/feature.js.map +1 -1
  484. package/features/tenancy/UpdateTenant/index.js +2 -4
  485. package/features/tenancy/shared/TenantCache.js +18 -17
  486. package/features/tenancy/shared/TenantCache.js.map +1 -1
  487. package/features/tenancy/shared/abstractions.js +2 -1
  488. package/features/tenancy/shared/abstractions.js.map +1 -1
  489. package/features/tenancy/shared/storageOperations.js +2 -5
  490. package/features/tenancy/shared/storageOperations.js.map +1 -1
  491. package/features/users/AdminUsersFeature.js +15 -19
  492. package/features/users/AdminUsersFeature.js.map +1 -1
  493. package/features/users/CreateUser/CreateUserUseCase.js +65 -100
  494. package/features/users/CreateUser/CreateUserUseCase.js.map +1 -1
  495. package/features/users/CreateUser/abstractions.js +2 -13
  496. package/features/users/CreateUser/abstractions.js.map +1 -1
  497. package/features/users/CreateUser/decorators/CreateUserWithWcpIncrement.js +16 -15
  498. package/features/users/CreateUser/decorators/CreateUserWithWcpIncrement.js.map +1 -1
  499. package/features/users/CreateUser/events.js +17 -18
  500. package/features/users/CreateUser/events.js.map +1 -1
  501. package/features/users/CreateUser/feature.js +7 -6
  502. package/features/users/CreateUser/feature.js.map +1 -1
  503. package/features/users/CreateUser/index.js +0 -2
  504. package/features/users/CreateUser/schema.js +14 -18
  505. package/features/users/CreateUser/schema.js.map +1 -1
  506. package/features/users/DeleteUser/DeleteUserUseCase.js +35 -50
  507. package/features/users/DeleteUser/DeleteUserUseCase.js.map +1 -1
  508. package/features/users/DeleteUser/abstractions.js +2 -13
  509. package/features/users/DeleteUser/abstractions.js.map +1 -1
  510. package/features/users/DeleteUser/decorators/DeleteUserWithWcpDecrement.js +15 -16
  511. package/features/users/DeleteUser/decorators/DeleteUserWithWcpDecrement.js.map +1 -1
  512. package/features/users/DeleteUser/errors.js +7 -7
  513. package/features/users/DeleteUser/errors.js.map +1 -1
  514. package/features/users/DeleteUser/events.js +17 -18
  515. package/features/users/DeleteUser/events.js.map +1 -1
  516. package/features/users/DeleteUser/feature.js +7 -6
  517. package/features/users/DeleteUser/feature.js.map +1 -1
  518. package/features/users/DeleteUser/index.js +0 -2
  519. package/features/users/ExternalIdpUserSync/ExternalIdpUserSyncHandler.js +60 -74
  520. package/features/users/ExternalIdpUserSync/ExternalIdpUserSyncHandler.js.map +1 -1
  521. package/features/users/ExternalIdpUserSync/feature.js +6 -5
  522. package/features/users/ExternalIdpUserSync/feature.js.map +1 -1
  523. package/features/users/ExternalIdpUserSync/index.js +0 -2
  524. package/features/users/GetIdentityProfile/GetIdentityProfileUseCase.js +29 -39
  525. package/features/users/GetIdentityProfile/GetIdentityProfileUseCase.js.map +1 -1
  526. package/features/users/GetIdentityProfile/abstractions.js +2 -11
  527. package/features/users/GetIdentityProfile/abstractions.js.map +1 -1
  528. package/features/users/GetIdentityProfile/feature.js +6 -5
  529. package/features/users/GetIdentityProfile/feature.js.map +1 -1
  530. package/features/users/GetIdentityProfile/index.js +0 -2
  531. package/features/users/GetIdentityProfile/types.js +0 -3
  532. package/features/users/GetUser/GetUserUseCase.js +19 -23
  533. package/features/users/GetUser/GetUserUseCase.js.map +1 -1
  534. package/features/users/GetUser/abstractions.js +2 -11
  535. package/features/users/GetUser/abstractions.js.map +1 -1
  536. package/features/users/GetUser/feature.js +6 -5
  537. package/features/users/GetUser/feature.js.map +1 -1
  538. package/features/users/GetUser/index.js +0 -2
  539. package/features/users/ListUserTeams/ListUserTeamsUseCase.js +33 -42
  540. package/features/users/ListUserTeams/ListUserTeamsUseCase.js.map +1 -1
  541. package/features/users/ListUserTeams/abstractions.js +2 -11
  542. package/features/users/ListUserTeams/abstractions.js.map +1 -1
  543. package/features/users/ListUserTeams/feature.js +6 -5
  544. package/features/users/ListUserTeams/feature.js.map +1 -1
  545. package/features/users/ListUserTeams/index.js +0 -2
  546. package/features/users/ListUsers/ListUsersUseCase.js +19 -23
  547. package/features/users/ListUsers/ListUsersUseCase.js.map +1 -1
  548. package/features/users/ListUsers/abstractions.js +2 -11
  549. package/features/users/ListUsers/abstractions.js.map +1 -1
  550. package/features/users/ListUsers/feature.js +6 -5
  551. package/features/users/ListUsers/feature.js.map +1 -1
  552. package/features/users/ListUsers/index.js +0 -2
  553. package/features/users/UpdateUser/UpdateUserUseCase.js +52 -74
  554. package/features/users/UpdateUser/UpdateUserUseCase.js.map +1 -1
  555. package/features/users/UpdateUser/abstractions.js +2 -13
  556. package/features/users/UpdateUser/abstractions.js.map +1 -1
  557. package/features/users/UpdateUser/events.js +17 -18
  558. package/features/users/UpdateUser/events.js.map +1 -1
  559. package/features/users/UpdateUser/feature.js +6 -5
  560. package/features/users/UpdateUser/feature.js.map +1 -1
  561. package/features/users/UpdateUser/index.js +0 -2
  562. package/features/users/UpdateUser/schema.js +11 -10
  563. package/features/users/UpdateUser/schema.js.map +1 -1
  564. package/features/users/shared/AdminUsersRepository.js +104 -112
  565. package/features/users/shared/AdminUsersRepository.js.map +1 -1
  566. package/features/users/shared/abstractions.js +2 -9
  567. package/features/users/shared/abstractions.js.map +1 -1
  568. package/features/users/shared/errors.js +40 -46
  569. package/features/users/shared/errors.js.map +1 -1
  570. package/features/users/shared/loaders.js +52 -66
  571. package/features/users/shared/loaders.js.map +1 -1
  572. package/features/users/shared/storageAbstractions.js +2 -2
  573. package/features/users/shared/storageAbstractions.js.map +1 -1
  574. package/features/users/shared/types.js +0 -3
  575. package/features/wcp/WcpContext/WcpContext.js +138 -142
  576. package/features/wcp/WcpContext/WcpContext.js.map +1 -1
  577. package/features/wcp/WcpContext/abstractions.js +2 -6
  578. package/features/wcp/WcpContext/abstractions.js.map +1 -1
  579. package/features/wcp/WcpContext/decorators/WcpContextWithFeatureFlagsDecorator.js +135 -134
  580. package/features/wcp/WcpContext/decorators/WcpContextWithFeatureFlagsDecorator.js.map +1 -1
  581. package/features/wcp/WcpContext/feature.js +6 -5
  582. package/features/wcp/WcpContext/feature.js.map +1 -1
  583. package/features/wcp/WcpContext/index.js +0 -2
  584. package/features/wcp/WcpContext/types.js +0 -3
  585. package/features/wcp/WcpContext/utils.js +35 -53
  586. package/features/wcp/WcpContext/utils.js.map +1 -1
  587. package/features/wcp/WcpFeature.js +7 -6
  588. package/features/wcp/WcpFeature.js.map +1 -1
  589. package/features/webhooks/Webhook/WebhookProvider.d.ts +12 -0
  590. package/features/webhooks/Webhook/WebhookProvider.js +28 -0
  591. package/features/webhooks/Webhook/WebhookProvider.js.map +1 -0
  592. package/features/webhooks/Webhook/abstractions/WebhookFactory.d.ts +14 -0
  593. package/features/webhooks/Webhook/abstractions/WebhookFactory.js +5 -0
  594. package/features/webhooks/Webhook/abstractions/WebhookFactory.js.map +1 -0
  595. package/features/webhooks/Webhook/abstractions/WebhookProvider.d.ts +9 -0
  596. package/features/webhooks/Webhook/abstractions/WebhookProvider.js +5 -0
  597. package/features/webhooks/Webhook/abstractions/WebhookProvider.js.map +1 -0
  598. package/features/webhooks/Webhook/feature.d.ts +4 -0
  599. package/features/webhooks/Webhook/feature.js +11 -0
  600. package/features/webhooks/Webhook/feature.js.map +1 -0
  601. package/features/webhooks/Webhook/index.d.ts +2 -0
  602. package/features/webhooks/Webhook/index.js +2 -0
  603. package/features/webhooks/WebhookDispatcher/NullWebhookDispatcher.d.ts +8 -0
  604. package/features/webhooks/WebhookDispatcher/NullWebhookDispatcher.js +11 -0
  605. package/features/webhooks/WebhookDispatcher/NullWebhookDispatcher.js.map +1 -0
  606. package/features/webhooks/WebhookDispatcher/abstractions.d.ts +12 -0
  607. package/features/webhooks/WebhookDispatcher/abstractions.js +5 -0
  608. package/features/webhooks/WebhookDispatcher/abstractions.js.map +1 -0
  609. package/features/webhooks/WebhookSignPayload/abstractions.d.ts +14 -0
  610. package/features/webhooks/WebhookSignPayload/abstractions.js +5 -0
  611. package/features/webhooks/WebhookSignPayload/abstractions.js.map +1 -0
  612. package/features/webhooks/WebhookVerifyPayload/abstractions.d.ts +11 -0
  613. package/features/webhooks/WebhookVerifyPayload/abstractions.js +5 -0
  614. package/features/webhooks/WebhookVerifyPayload/abstractions.js.map +1 -0
  615. package/features/webhooks/index.d.ts +5 -0
  616. package/features/webhooks/index.js +5 -0
  617. package/graphql/security/NotAuthorizedResponse.js +11 -14
  618. package/graphql/security/NotAuthorizedResponse.js.map +1 -1
  619. package/graphql/security/ProfileMapper.js +12 -11
  620. package/graphql/security/ProfileMapper.js.map +1 -1
  621. package/graphql/security/apiKey.gql.js +38 -47
  622. package/graphql/security/apiKey.gql.js.map +1 -1
  623. package/graphql/security/base.gql.js +11 -10
  624. package/graphql/security/base.gql.js.map +1 -1
  625. package/graphql/security/identity.gql.js +87 -97
  626. package/graphql/security/identity.gql.js.map +1 -1
  627. package/graphql/security/index.js +13 -8
  628. package/graphql/security/index.js.map +1 -1
  629. package/graphql/security/role.gql.js +49 -57
  630. package/graphql/security/role.gql.js.map +1 -1
  631. package/graphql/security/team.gql.js +61 -69
  632. package/graphql/security/team.gql.js.map +1 -1
  633. package/graphql/system/createSystemGraphQL.js +31 -34
  634. package/graphql/system/createSystemGraphQL.js.map +1 -1
  635. package/graphql/users/user.gql.js +87 -105
  636. package/graphql/users/user.gql.js.map +1 -1
  637. package/graphql/wcp/graphql.js +25 -28
  638. package/graphql/wcp/graphql.js.map +1 -1
  639. package/idp/JwksCache.js +22 -28
  640. package/idp/JwksCache.js.map +1 -1
  641. package/idp/JwtAuthenticator.js +34 -46
  642. package/idp/JwtAuthenticator.js.map +1 -1
  643. package/idp/OidcJwtIdentityProvider.js +55 -82
  644. package/idp/OidcJwtIdentityProvider.js.map +1 -1
  645. package/idp/abstractions.js +5 -14
  646. package/idp/abstractions.js.map +1 -1
  647. package/idp/feature.js +8 -7
  648. package/idp/feature.js.map +1 -1
  649. package/idp/index.js +1 -3
  650. package/idp/types.js +0 -3
  651. package/index.js +0 -2
  652. package/legacy/security/LegacyContext.js +133 -186
  653. package/legacy/security/LegacyContext.js.map +1 -1
  654. package/legacy/security/createSecurityContext.js +5 -9
  655. package/legacy/security/createSecurityContext.js.map +1 -1
  656. package/legacy/security/plugins/apiKeyAuthentication.js +15 -24
  657. package/legacy/security/plugins/apiKeyAuthentication.js.map +1 -1
  658. package/legacy/security/plugins/apiKeyAuthorization.js +9 -18
  659. package/legacy/security/plugins/apiKeyAuthorization.js.map +1 -1
  660. package/legacy/security/plugins/authenticateUsingCookie.js +18 -22
  661. package/legacy/security/plugins/authenticateUsingCookie.js.map +1 -1
  662. package/legacy/security/plugins/authenticateUsingHttpHeader.d.ts +1 -1
  663. package/legacy/security/plugins/authenticateUsingHttpHeader.js +15 -18
  664. package/legacy/security/plugins/authenticateUsingHttpHeader.js.map +1 -1
  665. package/legacy/security/plugins/secureHeaders.js +28 -21
  666. package/legacy/security/plugins/secureHeaders.js.map +1 -1
  667. package/legacy/tenancy/LegacyContext.js +45 -52
  668. package/legacy/tenancy/LegacyContext.js.map +1 -1
  669. package/legacy/tenancy/createTenancyContext.js +22 -42
  670. package/legacy/tenancy/createTenancyContext.js.map +1 -1
  671. package/legacy/users/LegacyContext.js +39 -54
  672. package/legacy/users/LegacyContext.js.map +1 -1
  673. package/legacy/users/createAdminUsersContext.js +7 -7
  674. package/legacy/users/createAdminUsersContext.js.map +1 -1
  675. package/legacy/wcp/LegacyWcpContext.js +80 -79
  676. package/legacy/wcp/LegacyWcpContext.js.map +1 -1
  677. package/legacy/wcp/context.d.ts +1 -3
  678. package/legacy/wcp/context.js +33 -37
  679. package/legacy/wcp/context.js.map +1 -1
  680. package/models/base/BaseModel.js +51 -56
  681. package/models/base/BaseModel.js.map +1 -1
  682. package/models/base/ModelBuilder.js +65 -78
  683. package/models/base/ModelBuilder.js.map +1 -1
  684. package/models/base/ModelFactory.js +0 -3
  685. package/models/base/__tests__/ModelBuilder.test.js +437 -454
  686. package/models/base/__tests__/ModelBuilder.test.js.map +1 -1
  687. package/models/base/abstractions.js +0 -3
  688. package/models/cms/FieldBuilder.js +112 -121
  689. package/models/cms/FieldBuilder.js.map +1 -1
  690. package/models/cms/FieldBuilderRegistry.js +13 -12
  691. package/models/cms/FieldBuilderRegistry.js.map +1 -1
  692. package/models/cms/FieldDefinitionsBuilder.js +37 -54
  693. package/models/cms/FieldDefinitionsBuilder.js.map +1 -1
  694. package/models/cms/PrivateCmsModelBuilder.js +84 -89
  695. package/models/cms/PrivateCmsModelBuilder.js.map +1 -1
  696. package/models/cms/PrivatePage/Page.fields.js +7 -6
  697. package/models/cms/PrivatePage/Page.fields.js.map +1 -1
  698. package/models/cms/PrivatePage/PageModelBuilder.js +18 -15
  699. package/models/cms/PrivatePage/PageModelBuilder.js.map +1 -1
  700. package/models/cms/PrivatePage/PageModelFactory.js +20 -25
  701. package/models/cms/PrivatePage/PageModelFactory.js.map +1 -1
  702. package/models/cms/PrivatePage/__tests__/PageModelFactory.test.js +218 -234
  703. package/models/cms/PrivatePage/__tests__/PageModelFactory.test.js.map +1 -1
  704. package/models/cms/PrivatePage/__tests__/PagePublishingDecorator.js +33 -36
  705. package/models/cms/PrivatePage/__tests__/PagePublishingDecorator.js.map +1 -1
  706. package/models/cms/PrivatePage/__tests__/PageSeoDecorator.js +25 -26
  707. package/models/cms/PrivatePage/__tests__/PageSeoDecorator.js.map +1 -1
  708. package/models/cms/PrivatePage/abstractions.js +3 -9
  709. package/models/cms/PrivatePage/abstractions.js.map +1 -1
  710. package/models/cms/__tests__/PrivateCmsModelBuilder.test.js +173 -185
  711. package/models/cms/__tests__/PrivateCmsModelBuilder.test.js.map +1 -1
  712. package/models/cms/abstractions.js +3 -20
  713. package/models/cms/abstractions.js.map +1 -1
  714. package/models/cms/types.js +0 -3
  715. package/models/simple/Page/PageModelBuilder.js +15 -14
  716. package/models/simple/Page/PageModelBuilder.js.map +1 -1
  717. package/models/simple/Page/PageModelFactory.js +16 -15
  718. package/models/simple/Page/PageModelFactory.js.map +1 -1
  719. package/models/simple/Page/__tests__/PageModelBuilderDecorator.js +21 -20
  720. package/models/simple/Page/__tests__/PageModelBuilderDecorator.js.map +1 -1
  721. package/models/simple/Page/__tests__/PageModelBuilderDecorator2.js +17 -16
  722. package/models/simple/Page/__tests__/PageModelBuilderDecorator2.js.map +1 -1
  723. package/models/simple/Page/__tests__/PageModelFactory.test.js +28 -28
  724. package/models/simple/Page/__tests__/PageModelFactory.test.js.map +1 -1
  725. package/models/simple/Page/abstractions.js +9 -8
  726. package/models/simple/Page/abstractions.js.map +1 -1
  727. package/package.json +22 -22
  728. package/types/core.js +0 -3
  729. package/types/security.js +0 -3
  730. package/types/tenancy.js +0 -3
  731. package/types/users.js +0 -3
  732. package/domain/tenancy/errors.js.map +0 -1
  733. package/exports/api/build-params.js.map +0 -1
  734. package/exports/api/event-publisher.js.map +0 -1
  735. package/exports/api/graphql.js.map +0 -1
  736. package/exports/api/key-value-store.js.map +0 -1
  737. package/exports/api/logger.js.map +0 -1
  738. package/exports/api/security/api-key.js.map +0 -1
  739. package/exports/api/security/authentication.js.map +0 -1
  740. package/exports/api/security/role.js.map +0 -1
  741. package/exports/api/security/user.js.map +0 -1
  742. package/exports/api/security.js.map +0 -1
  743. package/exports/api/system.js.map +0 -1
  744. package/exports/api/tasks.js.map +0 -1
  745. package/exports/api/tenancy.js.map +0 -1
  746. package/exports/api.js.map +0 -1
  747. package/features/ai/index.js.map +0 -1
  748. package/features/buildParams/index.js.map +0 -1
  749. package/features/encryption/index.js.map +0 -1
  750. package/features/eventPublisher/index.js.map +0 -1
  751. package/features/keyValueStore/index.js.map +0 -1
  752. package/features/logger/index.js.map +0 -1
  753. package/features/masker/index.js.map +0 -1
  754. package/features/security/IdentityContext/index.js.map +0 -1
  755. package/features/security/apiKeys/CreateApiKey/index.js.map +0 -1
  756. package/features/security/apiKeys/DeleteApiKey/index.js.map +0 -1
  757. package/features/security/apiKeys/GetApiKey/index.js.map +0 -1
  758. package/features/security/apiKeys/GetApiKeyBySlug/index.js.map +0 -1
  759. package/features/security/apiKeys/GetApiKeyByToken/index.js.map +0 -1
  760. package/features/security/apiKeys/ListApiKeys/index.js.map +0 -1
  761. package/features/security/apiKeys/UpdateApiKey/index.js.map +0 -1
  762. package/features/security/apiKeys/shared/types.js.map +0 -1
  763. package/features/security/authentication/AuthenticationContext/index.js.map +0 -1
  764. package/features/security/authentication/Authenticator/index.js.map +0 -1
  765. package/features/security/authorization/AuthorizationContext/index.js.map +0 -1
  766. package/features/security/authorization/Authorizer/index.js.map +0 -1
  767. package/features/security/login/index.js.map +0 -1
  768. package/features/security/permissions/index.js.map +0 -1
  769. package/features/security/permissions/types.js.map +0 -1
  770. package/features/security/roles/CreateRole/index.js.map +0 -1
  771. package/features/security/roles/DeleteRole/index.js.map +0 -1
  772. package/features/security/roles/GetRole/index.js.map +0 -1
  773. package/features/security/roles/ListRoles/index.js.map +0 -1
  774. package/features/security/roles/UpdateRole/index.js.map +0 -1
  775. package/features/security/roles/shared/types.js.map +0 -1
  776. package/features/security/shared/index.js.map +0 -1
  777. package/features/security/teams/CreateTeam/index.js.map +0 -1
  778. package/features/security/teams/DeleteTeam/index.js.map +0 -1
  779. package/features/security/teams/GetTeam/index.js.map +0 -1
  780. package/features/security/teams/ListTeams/index.js.map +0 -1
  781. package/features/security/teams/UpdateTeam/index.js.map +0 -1
  782. package/features/security/teams/shared/types.js.map +0 -1
  783. package/features/system/InstallSystem/index.js.map +0 -1
  784. package/features/task/TaskController/index.js.map +0 -1
  785. package/features/task/TaskDefinition/index.js.map +0 -1
  786. package/features/task/TaskService/index.js.map +0 -1
  787. package/features/tenancy/CreateTenant/index.js.map +0 -1
  788. package/features/tenancy/DeleteTenant/index.js.map +0 -1
  789. package/features/tenancy/GetRootTenant/index.js.map +0 -1
  790. package/features/tenancy/GetTenantById/index.js.map +0 -1
  791. package/features/tenancy/InstallTenant/index.js.map +0 -1
  792. package/features/tenancy/ListTenants/index.js.map +0 -1
  793. package/features/tenancy/TenantContext/index.js.map +0 -1
  794. package/features/tenancy/UpdateTenant/index.js.map +0 -1
  795. package/features/users/CreateUser/index.js.map +0 -1
  796. package/features/users/DeleteUser/index.js.map +0 -1
  797. package/features/users/ExternalIdpUserSync/index.js.map +0 -1
  798. package/features/users/GetIdentityProfile/index.js.map +0 -1
  799. package/features/users/GetIdentityProfile/types.js.map +0 -1
  800. package/features/users/GetUser/index.js.map +0 -1
  801. package/features/users/ListUserTeams/index.js.map +0 -1
  802. package/features/users/ListUsers/index.js.map +0 -1
  803. package/features/users/UpdateUser/index.js.map +0 -1
  804. package/features/users/shared/types.js.map +0 -1
  805. package/features/wcp/WcpContext/index.js.map +0 -1
  806. package/features/wcp/WcpContext/types.js.map +0 -1
  807. package/idp/index.js.map +0 -1
  808. package/idp/types.js.map +0 -1
  809. package/index.js.map +0 -1
  810. package/models/base/ModelFactory.js.map +0 -1
  811. package/models/base/abstractions.js.map +0 -1
  812. package/models/cms/types.js.map +0 -1
  813. package/types/core.js.map +0 -1
  814. package/types/security.js.map +0 -1
  815. package/types/tenancy.js.map +0 -1
  816. package/types/users.js.map +0 -1
@@ -2,75 +2,53 @@ import { Result } from "@webiny/feature/api";
2
2
  import { TeamsRepository } from "../abstractions.js";
3
3
  import { ListCache } from "../../../roles/shared/decorators/ListCache.js";
4
4
  class TeamsRepositoryCachingDecoratorImpl {
5
- cache = new ListCache();
6
- constructor(decoratee) {
7
- this.decoratee = decoratee;
8
- }
9
- async get(params) {
10
- // Check cache first
11
- if (this.cache.hasItems()) {
12
- const cachedTeam = this.cache.getItems().find(t => {
13
- if (params.id && t.id === params.id) {
14
- return true;
15
- }
16
- if (params.slug && t.slug === params.slug) {
17
- return true;
5
+ constructor(decoratee){
6
+ this.decoratee = decoratee;
7
+ this.cache = new ListCache();
8
+ }
9
+ async get(params) {
10
+ if (this.cache.hasItems()) {
11
+ const cachedTeam = this.cache.getItems().find((t)=>{
12
+ if (params.id && t.id === params.id) return true;
13
+ if (params.slug && t.slug === params.slug) return true;
14
+ return false;
15
+ });
16
+ if (cachedTeam) return Result.ok(cachedTeam);
18
17
  }
19
- return false;
20
- });
21
- if (cachedTeam) {
22
- return Result.ok(cachedTeam);
23
- }
18
+ const result = await this.decoratee.get(params);
19
+ if (result.isOk()) this.cache.addItems([
20
+ result.value
21
+ ]);
22
+ return result;
24
23
  }
25
-
26
- // Delegate to decoratee
27
- const result = await this.decoratee.get(params);
28
-
29
- // Add to cache on success
30
- if (result.isOk()) {
31
- this.cache.addItems([result.value]);
24
+ async list(params) {
25
+ return this.decoratee.list(params);
32
26
  }
33
- return result;
34
- }
35
- async list(params) {
36
- return this.decoratee.list(params);
37
- }
38
- async create(team) {
39
- const result = await this.decoratee.create(team);
40
-
41
- // Add to cache on success
42
- if (result.isOk()) {
43
- this.cache.addItems([team]);
27
+ async create(team) {
28
+ const result = await this.decoratee.create(team);
29
+ if (result.isOk()) this.cache.addItems([
30
+ team
31
+ ]);
32
+ return result;
44
33
  }
45
- return result;
46
- }
47
- async update(team) {
48
- const result = await this.decoratee.update(team);
49
-
50
- // Update in cache on success
51
- if (result.isOk()) {
52
- this.cache.updateItems(item => {
53
- if (item.id === team.id) {
54
- return team;
55
- }
56
- return item;
57
- });
34
+ async update(team) {
35
+ const result = await this.decoratee.update(team);
36
+ if (result.isOk()) this.cache.updateItems((item)=>{
37
+ if (item.id === team.id) return team;
38
+ return item;
39
+ });
40
+ return result;
58
41
  }
59
- return result;
60
- }
61
- async delete(team) {
62
- const result = await this.decoratee.delete(team);
63
-
64
- // Remove from cache on success
65
- if (result.isOk()) {
66
- this.cache.removeItems(item => item.id === team.id);
42
+ async delete(team) {
43
+ const result = await this.decoratee.delete(team);
44
+ if (result.isOk()) this.cache.removeItems((item)=>item.id === team.id);
45
+ return result;
67
46
  }
68
- return result;
69
- }
70
47
  }
71
- export const TeamsRepositoryCachingDecorator = TeamsRepository.createDecorator({
72
- decorator: TeamsRepositoryCachingDecoratorImpl,
73
- dependencies: []
48
+ const TeamsRepositoryCachingDecorator = TeamsRepository.createDecorator({
49
+ decorator: TeamsRepositoryCachingDecoratorImpl,
50
+ dependencies: []
74
51
  });
52
+ export { TeamsRepositoryCachingDecorator };
75
53
 
76
54
  //# sourceMappingURL=TeamsRepositoryCachingDecorator.js.map
@@ -1 +1 @@
1
- {"version":3,"names":["Result","TeamsRepository","ListCache","TeamsRepositoryCachingDecoratorImpl","cache","constructor","decoratee","get","params","hasItems","cachedTeam","getItems","find","t","id","slug","ok","result","isOk","addItems","value","list","create","team","update","updateItems","item","delete","removeItems","TeamsRepositoryCachingDecorator","createDecorator","decorator","dependencies"],"sources":["TeamsRepositoryCachingDecorator.ts"],"sourcesContent":["import { Result } from \"@webiny/feature/api\";\nimport { TeamsRepository } from \"../abstractions.js\";\nimport type { Team, GetTeamInput, ListTeamsInput } from \"../types.js\";\nimport { ListCache } from \"~/features/security/roles/shared/decorators/ListCache.js\";\n\nclass TeamsRepositoryCachingDecoratorImpl implements TeamsRepository.Interface {\n private readonly cache = new ListCache<Team>();\n\n constructor(private decoratee: TeamsRepository.Interface) {}\n\n async get(params: GetTeamInput): Promise<Result<Team, TeamsRepository.Error>> {\n // Check cache first\n if (this.cache.hasItems()) {\n const cachedTeam = this.cache.getItems().find(t => {\n if (params.id && t.id === params.id) {\n return true;\n }\n if (params.slug && t.slug === params.slug) {\n return true;\n }\n return false;\n });\n\n if (cachedTeam) {\n return Result.ok(cachedTeam);\n }\n }\n\n // Delegate to decoratee\n const result = await this.decoratee.get(params);\n\n // Add to cache on success\n if (result.isOk()) {\n this.cache.addItems([result.value]);\n }\n\n return result;\n }\n\n async list(params: ListTeamsInput): Promise<Result<Team[], TeamsRepository.Error>> {\n return this.decoratee.list(params);\n }\n\n async create(team: Team): Promise<Result<void, TeamsRepository.Error>> {\n const result = await this.decoratee.create(team);\n\n // Add to cache on success\n if (result.isOk()) {\n this.cache.addItems([team]);\n }\n\n return result;\n }\n\n async update(team: Team): Promise<Result<void, TeamsRepository.Error>> {\n const result = await this.decoratee.update(team);\n\n // Update in cache on success\n if (result.isOk()) {\n this.cache.updateItems(item => {\n if (item.id === team.id) {\n return team;\n }\n return item;\n });\n }\n\n return result;\n }\n\n async delete(team: Team): Promise<Result<void, TeamsRepository.Error>> {\n const result = await this.decoratee.delete(team);\n\n // Remove from cache on success\n if (result.isOk()) {\n this.cache.removeItems(item => item.id === team.id);\n }\n\n return result;\n }\n}\n\nexport const TeamsRepositoryCachingDecorator = TeamsRepository.createDecorator({\n decorator: TeamsRepositoryCachingDecoratorImpl,\n dependencies: []\n});\n"],"mappings":"AAAA,SAASA,MAAM,QAAQ,qBAAqB;AAC5C,SAASC,eAAe;AAExB,SAASC,SAAS;AAElB,MAAMC,mCAAmC,CAAsC;EAC1DC,KAAK,GAAG,IAAIF,SAAS,CAAO,CAAC;EAE9CG,WAAWA,CAASC,SAAoC,EAAE;IAAA,KAAtCA,SAAoC,GAApCA,SAAoC;EAAG;EAE3D,MAAMC,GAAGA,CAACC,MAAoB,EAAgD;IAC1E;IACA,IAAI,IAAI,CAACJ,KAAK,CAACK,QAAQ,CAAC,CAAC,EAAE;MACvB,MAAMC,UAAU,GAAG,IAAI,CAACN,KAAK,CAACO,QAAQ,CAAC,CAAC,CAACC,IAAI,CAACC,CAAC,IAAI;QAC/C,IAAIL,MAAM,CAACM,EAAE,IAAID,CAAC,CAACC,EAAE,KAAKN,MAAM,CAACM,EAAE,EAAE;UACjC,OAAO,IAAI;QACf;QACA,IAAIN,MAAM,CAACO,IAAI,IAAIF,CAAC,CAACE,IAAI,KAAKP,MAAM,CAACO,IAAI,EAAE;UACvC,OAAO,IAAI;QACf;QACA,OAAO,KAAK;MAChB,CAAC,CAAC;MAEF,IAAIL,UAAU,EAAE;QACZ,OAAOV,MAAM,CAACgB,EAAE,CAACN,UAAU,CAAC;MAChC;IACJ;;IAEA;IACA,MAAMO,MAAM,GAAG,MAAM,IAAI,CAACX,SAAS,CAACC,GAAG,CAACC,MAAM,CAAC;;IAE/C;IACA,IAAIS,MAAM,CAACC,IAAI,CAAC,CAAC,EAAE;MACf,IAAI,CAACd,KAAK,CAACe,QAAQ,CAAC,CAACF,MAAM,CAACG,KAAK,CAAC,CAAC;IACvC;IAEA,OAAOH,MAAM;EACjB;EAEA,MAAMI,IAAIA,CAACb,MAAsB,EAAkD;IAC/E,OAAO,IAAI,CAACF,SAAS,CAACe,IAAI,CAACb,MAAM,CAAC;EACtC;EAEA,MAAMc,MAAMA,CAACC,IAAU,EAAgD;IACnE,MAAMN,MAAM,GAAG,MAAM,IAAI,CAACX,SAAS,CAACgB,MAAM,CAACC,IAAI,CAAC;;IAEhD;IACA,IAAIN,MAAM,CAACC,IAAI,CAAC,CAAC,EAAE;MACf,IAAI,CAACd,KAAK,CAACe,QAAQ,CAAC,CAACI,IAAI,CAAC,CAAC;IAC/B;IAEA,OAAON,MAAM;EACjB;EAEA,MAAMO,MAAMA,CAACD,IAAU,EAAgD;IACnE,MAAMN,MAAM,GAAG,MAAM,IAAI,CAACX,SAAS,CAACkB,MAAM,CAACD,IAAI,CAAC;;IAEhD;IACA,IAAIN,MAAM,CAACC,IAAI,CAAC,CAAC,EAAE;MACf,IAAI,CAACd,KAAK,CAACqB,WAAW,CAACC,IAAI,IAAI;QAC3B,IAAIA,IAAI,CAACZ,EAAE,KAAKS,IAAI,CAACT,EAAE,EAAE;UACrB,OAAOS,IAAI;QACf;QACA,OAAOG,IAAI;MACf,CAAC,CAAC;IACN;IAEA,OAAOT,MAAM;EACjB;EAEA,MAAMU,MAAMA,CAACJ,IAAU,EAAgD;IACnE,MAAMN,MAAM,GAAG,MAAM,IAAI,CAACX,SAAS,CAACqB,MAAM,CAACJ,IAAI,CAAC;;IAEhD;IACA,IAAIN,MAAM,CAACC,IAAI,CAAC,CAAC,EAAE;MACf,IAAI,CAACd,KAAK,CAACwB,WAAW,CAACF,IAAI,IAAIA,IAAI,CAACZ,EAAE,KAAKS,IAAI,CAACT,EAAE,CAAC;IACvD;IAEA,OAAOG,MAAM;EACjB;AACJ;AAEA,OAAO,MAAMY,+BAA+B,GAAG5B,eAAe,CAAC6B,eAAe,CAAC;EAC3EC,SAAS,EAAE5B,mCAAmC;EAC9C6B,YAAY,EAAE;AAClB,CAAC,CAAC","ignoreList":[]}
1
+ {"version":3,"file":"features/security/teams/shared/decorators/TeamsRepositoryCachingDecorator.js","sources":["../../../../../../src/features/security/teams/shared/decorators/TeamsRepositoryCachingDecorator.ts"],"sourcesContent":["import { Result } from \"@webiny/feature/api\";\nimport { TeamsRepository } from \"../abstractions.js\";\nimport type { Team, GetTeamInput, ListTeamsInput } from \"../types.js\";\nimport { ListCache } from \"~/features/security/roles/shared/decorators/ListCache.js\";\n\nclass TeamsRepositoryCachingDecoratorImpl implements TeamsRepository.Interface {\n private readonly cache = new ListCache<Team>();\n\n constructor(private decoratee: TeamsRepository.Interface) {}\n\n async get(params: GetTeamInput): Promise<Result<Team, TeamsRepository.Error>> {\n // Check cache first\n if (this.cache.hasItems()) {\n const cachedTeam = this.cache.getItems().find(t => {\n if (params.id && t.id === params.id) {\n return true;\n }\n if (params.slug && t.slug === params.slug) {\n return true;\n }\n return false;\n });\n\n if (cachedTeam) {\n return Result.ok(cachedTeam);\n }\n }\n\n // Delegate to decoratee\n const result = await this.decoratee.get(params);\n\n // Add to cache on success\n if (result.isOk()) {\n this.cache.addItems([result.value]);\n }\n\n return result;\n }\n\n async list(params: ListTeamsInput): Promise<Result<Team[], TeamsRepository.Error>> {\n return this.decoratee.list(params);\n }\n\n async create(team: Team): Promise<Result<void, TeamsRepository.Error>> {\n const result = await this.decoratee.create(team);\n\n // Add to cache on success\n if (result.isOk()) {\n this.cache.addItems([team]);\n }\n\n return result;\n }\n\n async update(team: Team): Promise<Result<void, TeamsRepository.Error>> {\n const result = await this.decoratee.update(team);\n\n // Update in cache on success\n if (result.isOk()) {\n this.cache.updateItems(item => {\n if (item.id === team.id) {\n return team;\n }\n return item;\n });\n }\n\n return result;\n }\n\n async delete(team: Team): Promise<Result<void, TeamsRepository.Error>> {\n const result = await this.decoratee.delete(team);\n\n // Remove from cache on success\n if (result.isOk()) {\n this.cache.removeItems(item => item.id === team.id);\n }\n\n return result;\n }\n}\n\nexport const TeamsRepositoryCachingDecorator = TeamsRepository.createDecorator({\n decorator: TeamsRepositoryCachingDecoratorImpl,\n dependencies: []\n});\n"],"names":["TeamsRepositoryCachingDecoratorImpl","decoratee","ListCache","params","cachedTeam","t","Result","result","team","item","TeamsRepositoryCachingDecorator","TeamsRepository"],"mappings":";;;AAKA,MAAMA;IAGF,YAAoBC,SAAoC,CAAE;aAAtCA,SAAS,GAATA;aAFH,KAAK,GAAG,IAAIC;IAE8B;IAE3D,MAAM,IAAIC,MAAoB,EAAgD;QAE1E,IAAI,IAAI,CAAC,KAAK,CAAC,QAAQ,IAAI;YACvB,MAAMC,aAAa,IAAI,CAAC,KAAK,CAAC,QAAQ,GAAG,IAAI,CAACC,CAAAA;gBAC1C,IAAIF,OAAO,EAAE,IAAIE,EAAE,EAAE,KAAKF,OAAO,EAAE,EAC/B,OAAO;gBAEX,IAAIA,OAAO,IAAI,IAAIE,EAAE,IAAI,KAAKF,OAAO,IAAI,EACrC,OAAO;gBAEX,OAAO;YACX;YAEA,IAAIC,YACA,OAAOE,OAAO,EAAE,CAACF;QAEzB;QAGA,MAAMG,SAAS,MAAM,IAAI,CAAC,SAAS,CAAC,GAAG,CAACJ;QAGxC,IAAII,OAAO,IAAI,IACX,IAAI,CAAC,KAAK,CAAC,QAAQ,CAAC;YAACA,OAAO,KAAK;SAAC;QAGtC,OAAOA;IACX;IAEA,MAAM,KAAKJ,MAAsB,EAAkD;QAC/E,OAAO,IAAI,CAAC,SAAS,CAAC,IAAI,CAACA;IAC/B;IAEA,MAAM,OAAOK,IAAU,EAAgD;QACnE,MAAMD,SAAS,MAAM,IAAI,CAAC,SAAS,CAAC,MAAM,CAACC;QAG3C,IAAID,OAAO,IAAI,IACX,IAAI,CAAC,KAAK,CAAC,QAAQ,CAAC;YAACC;SAAK;QAG9B,OAAOD;IACX;IAEA,MAAM,OAAOC,IAAU,EAAgD;QACnE,MAAMD,SAAS,MAAM,IAAI,CAAC,SAAS,CAAC,MAAM,CAACC;QAG3C,IAAID,OAAO,IAAI,IACX,IAAI,CAAC,KAAK,CAAC,WAAW,CAACE,CAAAA;YACnB,IAAIA,KAAK,EAAE,KAAKD,KAAK,EAAE,EACnB,OAAOA;YAEX,OAAOC;QACX;QAGJ,OAAOF;IACX;IAEA,MAAM,OAAOC,IAAU,EAAgD;QACnE,MAAMD,SAAS,MAAM,IAAI,CAAC,SAAS,CAAC,MAAM,CAACC;QAG3C,IAAID,OAAO,IAAI,IACX,IAAI,CAAC,KAAK,CAAC,WAAW,CAACE,CAAAA,OAAQA,KAAK,EAAE,KAAKD,KAAK,EAAE;QAGtD,OAAOD;IACX;AACJ;AAEO,MAAMG,kCAAkCC,gBAAgB,eAAe,CAAC;IAC3E,WAAWX;IACX,cAAc,EAAE;AACpB"}
@@ -1,82 +1,74 @@
1
1
  import { BaseError } from "@webiny/feature/api";
2
- export class TeamStorageError extends BaseError {
3
- code = "TEAM_STORAGE_ERROR";
4
- constructor(error) {
5
- super({
6
- message: error.message
7
- });
8
- }
2
+ class TeamStorageError extends BaseError {
3
+ constructor(error){
4
+ super({
5
+ message: error.message
6
+ }), this.code = "TEAM_STORAGE_ERROR";
7
+ }
9
8
  }
10
- export class TeamNotFoundError extends BaseError {
11
- code = "TEAM_NOT_FOUND";
12
- constructor() {
13
- super({
14
- message: `Team was not found!`
15
- });
16
- }
9
+ class TeamNotFoundError extends BaseError {
10
+ constructor(){
11
+ super({
12
+ message: "Team was not found!"
13
+ }), this.code = "TEAM_NOT_FOUND";
14
+ }
17
15
  }
18
- export class NotAuthorizedError extends BaseError {
19
- code = "NOT_AUTHORIZED";
20
- constructor(data = {}) {
21
- super({
22
- message: data.message || "Not authorized!",
23
- data
24
- });
25
- }
16
+ class NotAuthorizedError extends BaseError {
17
+ constructor(data = {}){
18
+ super({
19
+ message: data.message || "Not authorized!",
20
+ data
21
+ }), this.code = "NOT_AUTHORIZED";
22
+ }
26
23
  }
27
- export class TeamExistsError extends BaseError {
28
- code = "TEAM_EXISTS";
29
- constructor(slug) {
30
- super({
31
- message: `Team with slug "${slug}" already exists.`,
32
- data: {
33
- slug
34
- }
35
- });
36
- }
24
+ class TeamExistsError extends BaseError {
25
+ constructor(slug){
26
+ super({
27
+ message: `Team with slug "${slug}" already exists.`,
28
+ data: {
29
+ slug
30
+ }
31
+ }), this.code = "TEAM_EXISTS";
32
+ }
37
33
  }
38
- export class CannotUpdatePluginTeamsError extends BaseError {
39
- code = "CANNOT_UPDATE_PLUGIN_TEAMS";
40
- constructor() {
41
- super({
42
- message: "Cannot update teams created via plugins."
43
- });
44
- }
34
+ class CannotUpdatePluginTeamsError extends BaseError {
35
+ constructor(){
36
+ super({
37
+ message: "Cannot update teams created via plugins."
38
+ }), this.code = "CANNOT_UPDATE_PLUGIN_TEAMS";
39
+ }
45
40
  }
46
- export class CannotDeletePluginTeamsError extends BaseError {
47
- code = "CANNOT_DELETE_PLUGIN_TEAMS";
48
- constructor() {
49
- super({
50
- message: "Cannot delete teams created via plugins."
51
- });
52
- }
41
+ class CannotDeletePluginTeamsError extends BaseError {
42
+ constructor(){
43
+ super({
44
+ message: "Cannot delete teams created via plugins."
45
+ }), this.code = "CANNOT_DELETE_PLUGIN_TEAMS";
46
+ }
53
47
  }
54
- export class CannotUpdateSystemTeamsError extends BaseError {
55
- code = "CANNOT_UPDATE_SYSTEM_TEAMS";
56
- constructor() {
57
- super({
58
- message: "Cannot update system teams."
59
- });
60
- }
48
+ class CannotUpdateSystemTeamsError extends BaseError {
49
+ constructor(){
50
+ super({
51
+ message: "Cannot update system teams."
52
+ }), this.code = "CANNOT_UPDATE_SYSTEM_TEAMS";
53
+ }
61
54
  }
62
- export class CannotDeleteSystemTeamsError extends BaseError {
63
- code = "CANNOT_DELETE_SYSTEM_TEAMS";
64
- constructor() {
65
- super({
66
- message: "Cannot delete system teams."
67
- });
68
- }
55
+ class CannotDeleteSystemTeamsError extends BaseError {
56
+ constructor(){
57
+ super({
58
+ message: "Cannot delete system teams."
59
+ }), this.code = "CANNOT_DELETE_SYSTEM_TEAMS";
60
+ }
69
61
  }
70
- export class TeamValidationError extends BaseError {
71
- code = "TEAM_VALIDATION_ERROR";
72
- constructor(message) {
73
- super({
74
- message,
75
- data: {
76
- message
77
- }
78
- });
79
- }
62
+ class TeamValidationError extends BaseError {
63
+ constructor(message){
64
+ super({
65
+ message,
66
+ data: {
67
+ message
68
+ }
69
+ }), this.code = "TEAM_VALIDATION_ERROR";
70
+ }
80
71
  }
72
+ export { CannotDeletePluginTeamsError, CannotDeleteSystemTeamsError, CannotUpdatePluginTeamsError, CannotUpdateSystemTeamsError, NotAuthorizedError, TeamExistsError, TeamNotFoundError, TeamStorageError, TeamValidationError };
81
73
 
82
74
  //# sourceMappingURL=errors.js.map
@@ -1 +1 @@
1
- {"version":3,"names":["BaseError","TeamStorageError","code","constructor","error","message","TeamNotFoundError","NotAuthorizedError","data","TeamExistsError","slug","CannotUpdatePluginTeamsError","CannotDeletePluginTeamsError","CannotUpdateSystemTeamsError","CannotDeleteSystemTeamsError","TeamValidationError"],"sources":["errors.ts"],"sourcesContent":["import { BaseError } from \"@webiny/feature/api\";\n\nexport class TeamStorageError extends BaseError {\n override readonly code = \"TEAM_STORAGE_ERROR\" as const;\n\n constructor(error: Error) {\n super({\n message: error.message\n });\n }\n}\n\nexport class TeamNotFoundError extends BaseError {\n override readonly code = \"TEAM_NOT_FOUND\" as const;\n\n constructor() {\n super({\n message: `Team was not found!`\n });\n }\n}\n\ntype NotAuthorizedErrorData = {\n message?: string;\n};\n\nexport class NotAuthorizedError extends BaseError<NotAuthorizedErrorData> {\n override readonly code = \"NOT_AUTHORIZED\" as const;\n\n constructor(data: NotAuthorizedErrorData = {}) {\n super({\n message: data.message || \"Not authorized!\",\n data\n });\n }\n}\n\ntype TeamExistsErrorData = {\n slug: string;\n};\n\nexport class TeamExistsError extends BaseError<TeamExistsErrorData> {\n override readonly code = \"TEAM_EXISTS\" as const;\n\n constructor(slug: string) {\n super({\n message: `Team with slug \"${slug}\" already exists.`,\n data: { slug }\n });\n }\n}\n\nexport class CannotUpdatePluginTeamsError extends BaseError {\n override readonly code = \"CANNOT_UPDATE_PLUGIN_TEAMS\" as const;\n\n constructor() {\n super({\n message: \"Cannot update teams created via plugins.\"\n });\n }\n}\n\nexport class CannotDeletePluginTeamsError extends BaseError {\n override readonly code = \"CANNOT_DELETE_PLUGIN_TEAMS\" as const;\n\n constructor() {\n super({\n message: \"Cannot delete teams created via plugins.\"\n });\n }\n}\n\nexport class CannotUpdateSystemTeamsError extends BaseError {\n override readonly code = \"CANNOT_UPDATE_SYSTEM_TEAMS\" as const;\n\n constructor() {\n super({\n message: \"Cannot update system teams.\"\n });\n }\n}\n\nexport class CannotDeleteSystemTeamsError extends BaseError {\n override readonly code = \"CANNOT_DELETE_SYSTEM_TEAMS\" as const;\n\n constructor() {\n super({\n message: \"Cannot delete system teams.\"\n });\n }\n}\n\ntype TeamValidationErrorData = {\n message: string;\n};\n\nexport class TeamValidationError extends BaseError<TeamValidationErrorData> {\n override readonly code = \"TEAM_VALIDATION_ERROR\" as const;\n\n constructor(message: string) {\n super({\n message,\n data: { message }\n });\n }\n}\n"],"mappings":"AAAA,SAASA,SAAS,QAAQ,qBAAqB;AAE/C,OAAO,MAAMC,gBAAgB,SAASD,SAAS,CAAC;EAC1BE,IAAI,GAAG,oBAAoB;EAE7CC,WAAWA,CAACC,KAAY,EAAE;IACtB,KAAK,CAAC;MACFC,OAAO,EAAED,KAAK,CAACC;IACnB,CAAC,CAAC;EACN;AACJ;AAEA,OAAO,MAAMC,iBAAiB,SAASN,SAAS,CAAC;EAC3BE,IAAI,GAAG,gBAAgB;EAEzCC,WAAWA,CAAA,EAAG;IACV,KAAK,CAAC;MACFE,OAAO,EAAE;IACb,CAAC,CAAC;EACN;AACJ;AAMA,OAAO,MAAME,kBAAkB,SAASP,SAAS,CAAyB;EACpDE,IAAI,GAAG,gBAAgB;EAEzCC,WAAWA,CAACK,IAA4B,GAAG,CAAC,CAAC,EAAE;IAC3C,KAAK,CAAC;MACFH,OAAO,EAAEG,IAAI,CAACH,OAAO,IAAI,iBAAiB;MAC1CG;IACJ,CAAC,CAAC;EACN;AACJ;AAMA,OAAO,MAAMC,eAAe,SAAST,SAAS,CAAsB;EAC9CE,IAAI,GAAG,aAAa;EAEtCC,WAAWA,CAACO,IAAY,EAAE;IACtB,KAAK,CAAC;MACFL,OAAO,EAAE,mBAAmBK,IAAI,mBAAmB;MACnDF,IAAI,EAAE;QAAEE;MAAK;IACjB,CAAC,CAAC;EACN;AACJ;AAEA,OAAO,MAAMC,4BAA4B,SAASX,SAAS,CAAC;EACtCE,IAAI,GAAG,4BAA4B;EAErDC,WAAWA,CAAA,EAAG;IACV,KAAK,CAAC;MACFE,OAAO,EAAE;IACb,CAAC,CAAC;EACN;AACJ;AAEA,OAAO,MAAMO,4BAA4B,SAASZ,SAAS,CAAC;EACtCE,IAAI,GAAG,4BAA4B;EAErDC,WAAWA,CAAA,EAAG;IACV,KAAK,CAAC;MACFE,OAAO,EAAE;IACb,CAAC,CAAC;EACN;AACJ;AAEA,OAAO,MAAMQ,4BAA4B,SAASb,SAAS,CAAC;EACtCE,IAAI,GAAG,4BAA4B;EAErDC,WAAWA,CAAA,EAAG;IACV,KAAK,CAAC;MACFE,OAAO,EAAE;IACb,CAAC,CAAC;EACN;AACJ;AAEA,OAAO,MAAMS,4BAA4B,SAASd,SAAS,CAAC;EACtCE,IAAI,GAAG,4BAA4B;EAErDC,WAAWA,CAAA,EAAG;IACV,KAAK,CAAC;MACFE,OAAO,EAAE;IACb,CAAC,CAAC;EACN;AACJ;AAMA,OAAO,MAAMU,mBAAmB,SAASf,SAAS,CAA0B;EACtDE,IAAI,GAAG,uBAAuB;EAEhDC,WAAWA,CAACE,OAAe,EAAE;IACzB,KAAK,CAAC;MACFA,OAAO;MACPG,IAAI,EAAE;QAAEH;MAAQ;IACpB,CAAC,CAAC;EACN;AACJ","ignoreList":[]}
1
+ {"version":3,"file":"features/security/teams/shared/errors.js","sources":["../../../../../src/features/security/teams/shared/errors.ts"],"sourcesContent":["import { BaseError } from \"@webiny/feature/api\";\n\nexport class TeamStorageError extends BaseError {\n override readonly code = \"TEAM_STORAGE_ERROR\" as const;\n\n constructor(error: Error) {\n super({\n message: error.message\n });\n }\n}\n\nexport class TeamNotFoundError extends BaseError {\n override readonly code = \"TEAM_NOT_FOUND\" as const;\n\n constructor() {\n super({\n message: `Team was not found!`\n });\n }\n}\n\ntype NotAuthorizedErrorData = {\n message?: string;\n};\n\nexport class NotAuthorizedError extends BaseError<NotAuthorizedErrorData> {\n override readonly code = \"NOT_AUTHORIZED\" as const;\n\n constructor(data: NotAuthorizedErrorData = {}) {\n super({\n message: data.message || \"Not authorized!\",\n data\n });\n }\n}\n\ntype TeamExistsErrorData = {\n slug: string;\n};\n\nexport class TeamExistsError extends BaseError<TeamExistsErrorData> {\n override readonly code = \"TEAM_EXISTS\" as const;\n\n constructor(slug: string) {\n super({\n message: `Team with slug \"${slug}\" already exists.`,\n data: { slug }\n });\n }\n}\n\nexport class CannotUpdatePluginTeamsError extends BaseError {\n override readonly code = \"CANNOT_UPDATE_PLUGIN_TEAMS\" as const;\n\n constructor() {\n super({\n message: \"Cannot update teams created via plugins.\"\n });\n }\n}\n\nexport class CannotDeletePluginTeamsError extends BaseError {\n override readonly code = \"CANNOT_DELETE_PLUGIN_TEAMS\" as const;\n\n constructor() {\n super({\n message: \"Cannot delete teams created via plugins.\"\n });\n }\n}\n\nexport class CannotUpdateSystemTeamsError extends BaseError {\n override readonly code = \"CANNOT_UPDATE_SYSTEM_TEAMS\" as const;\n\n constructor() {\n super({\n message: \"Cannot update system teams.\"\n });\n }\n}\n\nexport class CannotDeleteSystemTeamsError extends BaseError {\n override readonly code = \"CANNOT_DELETE_SYSTEM_TEAMS\" as const;\n\n constructor() {\n super({\n message: \"Cannot delete system teams.\"\n });\n }\n}\n\ntype TeamValidationErrorData = {\n message: string;\n};\n\nexport class TeamValidationError extends BaseError<TeamValidationErrorData> {\n override readonly code = \"TEAM_VALIDATION_ERROR\" as const;\n\n constructor(message: string) {\n super({\n message,\n data: { message }\n });\n }\n}\n"],"names":["TeamStorageError","BaseError","error","TeamNotFoundError","NotAuthorizedError","data","TeamExistsError","slug","CannotUpdatePluginTeamsError","CannotDeletePluginTeamsError","CannotUpdateSystemTeamsError","CannotDeleteSystemTeamsError","TeamValidationError","message"],"mappings":";AAEO,MAAMA,yBAAyBC;IAGlC,YAAYC,KAAY,CAAE;QACtB,KAAK,CAAC;YACF,SAASA,MAAM,OAAO;QAC1B,SALc,IAAI,GAAG;IAMzB;AACJ;AAEO,MAAMC,0BAA0BF;IAGnC,aAAc;QACV,KAAK,CAAC;YACF,SAAS;QACb,SALc,IAAI,GAAG;IAMzB;AACJ;AAMO,MAAMG,2BAA2BH;IAGpC,YAAYI,OAA+B,CAAC,CAAC,CAAE;QAC3C,KAAK,CAAC;YACF,SAASA,KAAK,OAAO,IAAI;YACzBA;QACJ,SANc,IAAI,GAAG;IAOzB;AACJ;AAMO,MAAMC,wBAAwBL;IAGjC,YAAYM,IAAY,CAAE;QACtB,KAAK,CAAC;YACF,SAAS,CAAC,gBAAgB,EAAEA,KAAK,iBAAiB,CAAC;YACnD,MAAM;gBAAEA;YAAK;QACjB,SANc,IAAI,GAAG;IAOzB;AACJ;AAEO,MAAMC,qCAAqCP;IAG9C,aAAc;QACV,KAAK,CAAC;YACF,SAAS;QACb,SALc,IAAI,GAAG;IAMzB;AACJ;AAEO,MAAMQ,qCAAqCR;IAG9C,aAAc;QACV,KAAK,CAAC;YACF,SAAS;QACb,SALc,IAAI,GAAG;IAMzB;AACJ;AAEO,MAAMS,qCAAqCT;IAG9C,aAAc;QACV,KAAK,CAAC;YACF,SAAS;QACb,SALc,IAAI,GAAG;IAMzB;AACJ;AAEO,MAAMU,qCAAqCV;IAG9C,aAAc;QACV,KAAK,CAAC;YACF,SAAS;QACb,SALc,IAAI,GAAG;IAMzB;AACJ;AAMO,MAAMW,4BAA4BX;IAGrC,YAAYY,OAAe,CAAE;QACzB,KAAK,CAAC;YACFA;YACA,MAAM;gBAAEA;YAAQ;QACpB,SANc,IAAI,GAAG;IAOzB;AACJ"}
@@ -1,3 +0,0 @@
1
- export {};
2
-
3
- //# sourceMappingURL=types.js.map
@@ -1,99 +1,60 @@
1
1
  const FULL_ACCESS_PERMISSION_NAME = "*";
2
- export class AppPermissions {
3
- constructor({
4
- getIdentity,
5
- getPermissions,
6
- fullAccessPermissionName
7
- }) {
8
- this.getIdentity = getIdentity;
9
- this.getPermissions = getPermissions;
10
- this.fullAccessPermissions = [FULL_ACCESS_PERMISSION_NAME, fullAccessPermissionName || ""].filter(Boolean);
11
- }
12
- async ensure(params = {}) {
13
- if (await this.hasFullAccess()) {
14
- return true;
2
+ class AppPermissions {
3
+ constructor({ getIdentity, getPermissions, fullAccessPermissionName }){
4
+ this.getIdentity = getIdentity;
5
+ this.getPermissions = getPermissions;
6
+ this.fullAccessPermissions = [
7
+ FULL_ACCESS_PERMISSION_NAME,
8
+ fullAccessPermissionName || ""
9
+ ].filter(Boolean);
15
10
  }
16
- if (params.owns) {
17
- if (await this.canAccessNonOwnedRecords()) {
18
- return true;
19
- }
20
-
21
- // If we got here, that means we didn't encounter a permission object
22
- // that gives us the ability to access non-owned records.
23
- const identity = await this.getIdentity();
24
- if (identity.id === params.owns.id) {
25
- return true;
26
- }
27
- return false;
11
+ async ensure(params = {}) {
12
+ if (await this.hasFullAccess()) return true;
13
+ if (params.owns) {
14
+ if (await this.canAccessNonOwnedRecords()) return true;
15
+ const identity = await this.getIdentity();
16
+ if (identity.id === params.owns.id) return true;
17
+ return false;
18
+ }
19
+ const permissions = await this.getPermissions();
20
+ const hasPermission = permissions.some((current)=>{
21
+ if (params.rwd && !this.hasRwd(current, params.rwd)) return false;
22
+ if (params.pw && !this.hasPw(current, params.pw)) return false;
23
+ return true;
24
+ });
25
+ return hasPermission;
28
26
  }
29
- const permissions = await this.getPermissions();
30
- const hasPermission = permissions.some(current => {
31
- if (params.rwd && !this.hasRwd(current, params.rwd)) {
32
- return false;
33
- }
34
- if (params.pw && !this.hasPw(current, params.pw)) {
35
- return false;
36
- }
37
- return true;
38
- });
39
- return hasPermission;
40
- }
41
- async hasFullAccess() {
42
- const permissions = await this.getPermissions();
43
- return permissions.some(p => this.fullAccessPermissions.filter(Boolean).includes(p.name));
44
- }
45
- async canAccessNonOwnedRecords() {
46
- // First pass - check if we have full access.
47
- if (await this.hasFullAccess()) {
48
- return true;
27
+ async hasFullAccess() {
28
+ const permissions = await this.getPermissions();
29
+ return permissions.some((p)=>this.fullAccessPermissions.filter(Boolean).includes(p.name));
49
30
  }
50
-
51
- // Second pass - if there's at least one permission that doesn't
52
- // prevent us from accessing non-owned records, then we grant access.
53
- const permissions = await this.getPermissions();
54
- return permissions.some(p => !p.own);
55
- }
56
- async canAccessOnlyOwnRecords() {
57
- // First pass - check if we have full access to Page Builder.
58
- if (await this.hasFullAccess()) {
59
- return false;
31
+ async canAccessNonOwnedRecords() {
32
+ if (await this.hasFullAccess()) return true;
33
+ const permissions = await this.getPermissions();
34
+ return permissions.some((p)=>!p.own);
60
35
  }
61
-
62
- // Second pass - if there's at least one permission that doesn't
63
- // prevent us from accessing non-owned records, then we grant access.
64
- const permissions = await this.getPermissions();
65
- return !permissions.some(p => !p.own);
66
- }
67
- hasRwd(permission, rwd) {
68
- return typeof permission.rwd !== "string" || permission.rwd.includes(rwd);
69
- }
70
-
71
- // Has publishing workflow permissions?
72
- hasPw(permission, pw) {
73
- // `name` and `_src` properties are always present.
74
- const permissionWithoutSystemProperties = this.filterOutSystemPermissionsObjectProperties(permission);
75
- const isCustom = Object.keys(permissionWithoutSystemProperties).length > 0;
76
- if (!isCustom) {
77
- // Means it's a "full-access" permission.
78
- return true;
36
+ async canAccessOnlyOwnRecords() {
37
+ if (await this.hasFullAccess()) return false;
38
+ const permissions = await this.getPermissions();
39
+ return !permissions.some((p)=>!p.own);
79
40
  }
80
- if (typeof permission["pw"] !== "string") {
81
- return false;
41
+ hasRwd(permission, rwd) {
42
+ return "string" != typeof permission.rwd || permission.rwd.includes(rwd);
43
+ }
44
+ hasPw(permission, pw) {
45
+ const permissionWithoutSystemProperties = this.filterOutSystemPermissionsObjectProperties(permission);
46
+ const isCustom = Object.keys(permissionWithoutSystemProperties).length > 0;
47
+ if (!isCustom) return true;
48
+ if ("string" != typeof permission["pw"]) return false;
49
+ return permission["pw"].includes(pw);
50
+ }
51
+ filterOutSystemPermissionsObjectProperties(permission) {
52
+ return Object.keys(permission).reduce((acc, key)=>{
53
+ if ("name" !== key && "_src" !== key) acc[key] = permission[key];
54
+ return acc;
55
+ }, {});
82
56
  }
83
- return permission["pw"].includes(pw);
84
- }
85
-
86
- /**
87
- * Filters out base `name` and `_src` properties from the permission object.
88
- */
89
- filterOutSystemPermissionsObjectProperties(permission) {
90
- return Object.keys(permission).reduce((acc, key) => {
91
- if (key !== "name" && key !== "_src") {
92
- acc[key] = permission[key];
93
- }
94
- return acc;
95
- }, {});
96
- }
97
57
  }
58
+ export { AppPermissions };
98
59
 
99
60
  //# sourceMappingURL=AppPermissions.js.map
@@ -1 +1 @@
1
- {"version":3,"names":["FULL_ACCESS_PERMISSION_NAME","AppPermissions","constructor","getIdentity","getPermissions","fullAccessPermissionName","fullAccessPermissions","filter","Boolean","ensure","params","hasFullAccess","owns","canAccessNonOwnedRecords","identity","id","permissions","hasPermission","some","current","rwd","hasRwd","pw","hasPw","p","includes","name","own","canAccessOnlyOwnRecords","permission","permissionWithoutSystemProperties","filterOutSystemPermissionsObjectProperties","isCustom","Object","keys","length","reduce","acc","key"],"sources":["AppPermissions.ts"],"sourcesContent":["import type { SecurityPermission, SecurityIdentity, CreatedBy } from \"~/types/security.js\";\n\nconst FULL_ACCESS_PERMISSION_NAME = \"*\";\n\nexport interface AppPermissionsParams<TPermission extends SecurityPermission = SecurityPermission> {\n getIdentity: () => SecurityIdentity | Promise<SecurityIdentity>;\n getPermissions: () => TPermission[] | Promise<TPermission[]>;\n fullAccessPermissionName?: string;\n}\n\nexport type EnsureParams = Partial<{\n rwd: string;\n pw: string;\n owns: CreatedBy;\n}>;\n\nexport class AppPermissions<TPermission extends SecurityPermission = SecurityPermission> {\n getIdentity: () => SecurityIdentity | Promise<SecurityIdentity>;\n getPermissions: () => TPermission[] | Promise<TPermission[]>;\n private fullAccessPermissions: string[];\n\n constructor({\n getIdentity,\n getPermissions,\n fullAccessPermissionName\n }: AppPermissionsParams<TPermission>) {\n this.getIdentity = getIdentity;\n this.getPermissions = getPermissions;\n this.fullAccessPermissions = [\n FULL_ACCESS_PERMISSION_NAME,\n fullAccessPermissionName || \"\"\n ].filter(Boolean);\n }\n\n async ensure(params: EnsureParams = {}): Promise<boolean> {\n if (await this.hasFullAccess()) {\n return true;\n }\n\n if (params.owns) {\n if (await this.canAccessNonOwnedRecords()) {\n return true;\n }\n\n // If we got here, that means we didn't encounter a permission object\n // that gives us the ability to access non-owned records.\n const identity = await this.getIdentity();\n if (identity.id === params.owns.id) {\n return true;\n }\n\n return false;\n }\n\n const permissions = await this.getPermissions();\n const hasPermission = permissions.some(current => {\n if (params.rwd && !this.hasRwd(current, params.rwd)) {\n return false;\n }\n\n if (params.pw && !this.hasPw(current, params.pw)) {\n return false;\n }\n\n return true;\n });\n\n return hasPermission;\n }\n\n async hasFullAccess() {\n const permissions = await this.getPermissions();\n return permissions.some(p => this.fullAccessPermissions.filter(Boolean).includes(p.name));\n }\n\n async canAccessNonOwnedRecords() {\n // First pass - check if we have full access.\n if (await this.hasFullAccess()) {\n return true;\n }\n\n // Second pass - if there's at least one permission that doesn't\n // prevent us from accessing non-owned records, then we grant access.\n const permissions = await this.getPermissions();\n return permissions.some(p => !p.own);\n }\n\n async canAccessOnlyOwnRecords() {\n // First pass - check if we have full access to Page Builder.\n if (await this.hasFullAccess()) {\n return false;\n }\n\n // Second pass - if there's at least one permission that doesn't\n // prevent us from accessing non-owned records, then we grant access.\n const permissions = await this.getPermissions();\n return !permissions.some(p => !p.own);\n }\n\n private hasRwd(permission: TPermission, rwd: string) {\n return typeof permission.rwd !== \"string\" || permission.rwd.includes(rwd);\n }\n\n // Has publishing workflow permissions?\n private hasPw(permission: TPermission, pw: string) {\n // `name` and `_src` properties are always present.\n const permissionWithoutSystemProperties =\n this.filterOutSystemPermissionsObjectProperties(permission);\n\n const isCustom = Object.keys(permissionWithoutSystemProperties).length > 0;\n\n if (!isCustom) {\n // Means it's a \"full-access\" permission.\n return true;\n }\n\n if (typeof permission[\"pw\"] !== \"string\") {\n return false;\n }\n\n return permission[\"pw\"].includes(pw);\n }\n\n /**\n * Filters out base `name` and `_src` properties from the permission object.\n */\n private filterOutSystemPermissionsObjectProperties(permission: SecurityPermission) {\n return Object.keys(permission).reduce(\n (acc, key) => {\n if (key !== \"name\" && key !== \"_src\") {\n acc[key] = permission[key];\n }\n return acc;\n },\n {} as Record<string, any>\n );\n }\n}\n"],"mappings":"AAEA,MAAMA,2BAA2B,GAAG,GAAG;AAcvC,OAAO,MAAMC,cAAc,CAA8D;EAKrFC,WAAWA,CAAC;IACRC,WAAW;IACXC,cAAc;IACdC;EAC+B,CAAC,EAAE;IAClC,IAAI,CAACF,WAAW,GAAGA,WAAW;IAC9B,IAAI,CAACC,cAAc,GAAGA,cAAc;IACpC,IAAI,CAACE,qBAAqB,GAAG,CACzBN,2BAA2B,EAC3BK,wBAAwB,IAAI,EAAE,CACjC,CAACE,MAAM,CAACC,OAAO,CAAC;EACrB;EAEA,MAAMC,MAAMA,CAACC,MAAoB,GAAG,CAAC,CAAC,EAAoB;IACtD,IAAI,MAAM,IAAI,CAACC,aAAa,CAAC,CAAC,EAAE;MAC5B,OAAO,IAAI;IACf;IAEA,IAAID,MAAM,CAACE,IAAI,EAAE;MACb,IAAI,MAAM,IAAI,CAACC,wBAAwB,CAAC,CAAC,EAAE;QACvC,OAAO,IAAI;MACf;;MAEA;MACA;MACA,MAAMC,QAAQ,GAAG,MAAM,IAAI,CAACX,WAAW,CAAC,CAAC;MACzC,IAAIW,QAAQ,CAACC,EAAE,KAAKL,MAAM,CAACE,IAAI,CAACG,EAAE,EAAE;QAChC,OAAO,IAAI;MACf;MAEA,OAAO,KAAK;IAChB;IAEA,MAAMC,WAAW,GAAG,MAAM,IAAI,CAACZ,cAAc,CAAC,CAAC;IAC/C,MAAMa,aAAa,GAAGD,WAAW,CAACE,IAAI,CAACC,OAAO,IAAI;MAC9C,IAAIT,MAAM,CAACU,GAAG,IAAI,CAAC,IAAI,CAACC,MAAM,CAACF,OAAO,EAAET,MAAM,CAACU,GAAG,CAAC,EAAE;QACjD,OAAO,KAAK;MAChB;MAEA,IAAIV,MAAM,CAACY,EAAE,IAAI,CAAC,IAAI,CAACC,KAAK,CAACJ,OAAO,EAAET,MAAM,CAACY,EAAE,CAAC,EAAE;QAC9C,OAAO,KAAK;MAChB;MAEA,OAAO,IAAI;IACf,CAAC,CAAC;IAEF,OAAOL,aAAa;EACxB;EAEA,MAAMN,aAAaA,CAAA,EAAG;IAClB,MAAMK,WAAW,GAAG,MAAM,IAAI,CAACZ,cAAc,CAAC,CAAC;IAC/C,OAAOY,WAAW,CAACE,IAAI,CAACM,CAAC,IAAI,IAAI,CAAClB,qBAAqB,CAACC,MAAM,CAACC,OAAO,CAAC,CAACiB,QAAQ,CAACD,CAAC,CAACE,IAAI,CAAC,CAAC;EAC7F;EAEA,MAAMb,wBAAwBA,CAAA,EAAG;IAC7B;IACA,IAAI,MAAM,IAAI,CAACF,aAAa,CAAC,CAAC,EAAE;MAC5B,OAAO,IAAI;IACf;;IAEA;IACA;IACA,MAAMK,WAAW,GAAG,MAAM,IAAI,CAACZ,cAAc,CAAC,CAAC;IAC/C,OAAOY,WAAW,CAACE,IAAI,CAACM,CAAC,IAAI,CAACA,CAAC,CAACG,GAAG,CAAC;EACxC;EAEA,MAAMC,uBAAuBA,CAAA,EAAG;IAC5B;IACA,IAAI,MAAM,IAAI,CAACjB,aAAa,CAAC,CAAC,EAAE;MAC5B,OAAO,KAAK;IAChB;;IAEA;IACA;IACA,MAAMK,WAAW,GAAG,MAAM,IAAI,CAACZ,cAAc,CAAC,CAAC;IAC/C,OAAO,CAACY,WAAW,CAACE,IAAI,CAACM,CAAC,IAAI,CAACA,CAAC,CAACG,GAAG,CAAC;EACzC;EAEQN,MAAMA,CAACQ,UAAuB,EAAET,GAAW,EAAE;IACjD,OAAO,OAAOS,UAAU,CAACT,GAAG,KAAK,QAAQ,IAAIS,UAAU,CAACT,GAAG,CAACK,QAAQ,CAACL,GAAG,CAAC;EAC7E;;EAEA;EACQG,KAAKA,CAACM,UAAuB,EAAEP,EAAU,EAAE;IAC/C;IACA,MAAMQ,iCAAiC,GACnC,IAAI,CAACC,0CAA0C,CAACF,UAAU,CAAC;IAE/D,MAAMG,QAAQ,GAAGC,MAAM,CAACC,IAAI,CAACJ,iCAAiC,CAAC,CAACK,MAAM,GAAG,CAAC;IAE1E,IAAI,CAACH,QAAQ,EAAE;MACX;MACA,OAAO,IAAI;IACf;IAEA,IAAI,OAAOH,UAAU,CAAC,IAAI,CAAC,KAAK,QAAQ,EAAE;MACtC,OAAO,KAAK;IAChB;IAEA,OAAOA,UAAU,CAAC,IAAI,CAAC,CAACJ,QAAQ,CAACH,EAAE,CAAC;EACxC;;EAEA;AACJ;AACA;EACYS,0CAA0CA,CAACF,UAA8B,EAAE;IAC/E,OAAOI,MAAM,CAACC,IAAI,CAACL,UAAU,CAAC,CAACO,MAAM,CACjC,CAACC,GAAG,EAAEC,GAAG,KAAK;MACV,IAAIA,GAAG,KAAK,MAAM,IAAIA,GAAG,KAAK,MAAM,EAAE;QAClCD,GAAG,CAACC,GAAG,CAAC,GAAGT,UAAU,CAACS,GAAG,CAAC;MAC9B;MACA,OAAOD,GAAG;IACd,CAAC,EACD,CAAC,CACL,CAAC;EACL;AACJ","ignoreList":[]}
1
+ {"version":3,"file":"features/security/utils/AppPermissions.js","sources":["../../../../src/features/security/utils/AppPermissions.ts"],"sourcesContent":["import type { SecurityPermission, SecurityIdentity, CreatedBy } from \"~/types/security.js\";\n\nconst FULL_ACCESS_PERMISSION_NAME = \"*\";\n\nexport interface AppPermissionsParams<TPermission extends SecurityPermission = SecurityPermission> {\n getIdentity: () => SecurityIdentity | Promise<SecurityIdentity>;\n getPermissions: () => TPermission[] | Promise<TPermission[]>;\n fullAccessPermissionName?: string;\n}\n\nexport type EnsureParams = Partial<{\n rwd: string;\n pw: string;\n owns: CreatedBy;\n}>;\n\nexport class AppPermissions<TPermission extends SecurityPermission = SecurityPermission> {\n getIdentity: () => SecurityIdentity | Promise<SecurityIdentity>;\n getPermissions: () => TPermission[] | Promise<TPermission[]>;\n private fullAccessPermissions: string[];\n\n constructor({\n getIdentity,\n getPermissions,\n fullAccessPermissionName\n }: AppPermissionsParams<TPermission>) {\n this.getIdentity = getIdentity;\n this.getPermissions = getPermissions;\n this.fullAccessPermissions = [\n FULL_ACCESS_PERMISSION_NAME,\n fullAccessPermissionName || \"\"\n ].filter(Boolean);\n }\n\n async ensure(params: EnsureParams = {}): Promise<boolean> {\n if (await this.hasFullAccess()) {\n return true;\n }\n\n if (params.owns) {\n if (await this.canAccessNonOwnedRecords()) {\n return true;\n }\n\n // If we got here, that means we didn't encounter a permission object\n // that gives us the ability to access non-owned records.\n const identity = await this.getIdentity();\n if (identity.id === params.owns.id) {\n return true;\n }\n\n return false;\n }\n\n const permissions = await this.getPermissions();\n const hasPermission = permissions.some(current => {\n if (params.rwd && !this.hasRwd(current, params.rwd)) {\n return false;\n }\n\n if (params.pw && !this.hasPw(current, params.pw)) {\n return false;\n }\n\n return true;\n });\n\n return hasPermission;\n }\n\n async hasFullAccess() {\n const permissions = await this.getPermissions();\n return permissions.some(p => this.fullAccessPermissions.filter(Boolean).includes(p.name));\n }\n\n async canAccessNonOwnedRecords() {\n // First pass - check if we have full access.\n if (await this.hasFullAccess()) {\n return true;\n }\n\n // Second pass - if there's at least one permission that doesn't\n // prevent us from accessing non-owned records, then we grant access.\n const permissions = await this.getPermissions();\n return permissions.some(p => !p.own);\n }\n\n async canAccessOnlyOwnRecords() {\n // First pass - check if we have full access to Page Builder.\n if (await this.hasFullAccess()) {\n return false;\n }\n\n // Second pass - if there's at least one permission that doesn't\n // prevent us from accessing non-owned records, then we grant access.\n const permissions = await this.getPermissions();\n return !permissions.some(p => !p.own);\n }\n\n private hasRwd(permission: TPermission, rwd: string) {\n return typeof permission.rwd !== \"string\" || permission.rwd.includes(rwd);\n }\n\n // Has publishing workflow permissions?\n private hasPw(permission: TPermission, pw: string) {\n // `name` and `_src` properties are always present.\n const permissionWithoutSystemProperties =\n this.filterOutSystemPermissionsObjectProperties(permission);\n\n const isCustom = Object.keys(permissionWithoutSystemProperties).length > 0;\n\n if (!isCustom) {\n // Means it's a \"full-access\" permission.\n return true;\n }\n\n if (typeof permission[\"pw\"] !== \"string\") {\n return false;\n }\n\n return permission[\"pw\"].includes(pw);\n }\n\n /**\n * Filters out base `name` and `_src` properties from the permission object.\n */\n private filterOutSystemPermissionsObjectProperties(permission: SecurityPermission) {\n return Object.keys(permission).reduce(\n (acc, key) => {\n if (key !== \"name\" && key !== \"_src\") {\n acc[key] = permission[key];\n }\n return acc;\n },\n {} as Record<string, any>\n );\n }\n}\n"],"names":["FULL_ACCESS_PERMISSION_NAME","AppPermissions","getIdentity","getPermissions","fullAccessPermissionName","Boolean","params","identity","permissions","hasPermission","current","p","permission","rwd","pw","permissionWithoutSystemProperties","isCustom","Object","acc","key"],"mappings":"AAEA,MAAMA,8BAA8B;AAc7B,MAAMC;IAKT,YAAY,EACRC,WAAW,EACXC,cAAc,EACdC,wBAAwB,EACQ,CAAE;QAClC,IAAI,CAAC,WAAW,GAAGF;QACnB,IAAI,CAAC,cAAc,GAAGC;QACtB,IAAI,CAAC,qBAAqB,GAAG;YACzBH;YACAI,4BAA4B;SAC/B,CAAC,MAAM,CAACC;IACb;IAEA,MAAM,OAAOC,SAAuB,CAAC,CAAC,EAAoB;QACtD,IAAI,MAAM,IAAI,CAAC,aAAa,IACxB,OAAO;QAGX,IAAIA,OAAO,IAAI,EAAE;YACb,IAAI,MAAM,IAAI,CAAC,wBAAwB,IACnC,OAAO;YAKX,MAAMC,WAAW,MAAM,IAAI,CAAC,WAAW;YACvC,IAAIA,SAAS,EAAE,KAAKD,OAAO,IAAI,CAAC,EAAE,EAC9B,OAAO;YAGX,OAAO;QACX;QAEA,MAAME,cAAc,MAAM,IAAI,CAAC,cAAc;QAC7C,MAAMC,gBAAgBD,YAAY,IAAI,CAACE,CAAAA;YACnC,IAAIJ,OAAO,GAAG,IAAI,CAAC,IAAI,CAAC,MAAM,CAACI,SAASJ,OAAO,GAAG,GAC9C,OAAO;YAGX,IAAIA,OAAO,EAAE,IAAI,CAAC,IAAI,CAAC,KAAK,CAACI,SAASJ,OAAO,EAAE,GAC3C,OAAO;YAGX,OAAO;QACX;QAEA,OAAOG;IACX;IAEA,MAAM,gBAAgB;QAClB,MAAMD,cAAc,MAAM,IAAI,CAAC,cAAc;QAC7C,OAAOA,YAAY,IAAI,CAACG,CAAAA,IAAK,IAAI,CAAC,qBAAqB,CAAC,MAAM,CAACN,SAAS,QAAQ,CAACM,EAAE,IAAI;IAC3F;IAEA,MAAM,2BAA2B;QAE7B,IAAI,MAAM,IAAI,CAAC,aAAa,IACxB,OAAO;QAKX,MAAMH,cAAc,MAAM,IAAI,CAAC,cAAc;QAC7C,OAAOA,YAAY,IAAI,CAACG,CAAAA,IAAK,CAACA,EAAE,GAAG;IACvC;IAEA,MAAM,0BAA0B;QAE5B,IAAI,MAAM,IAAI,CAAC,aAAa,IACxB,OAAO;QAKX,MAAMH,cAAc,MAAM,IAAI,CAAC,cAAc;QAC7C,OAAO,CAACA,YAAY,IAAI,CAACG,CAAAA,IAAK,CAACA,EAAE,GAAG;IACxC;IAEQ,OAAOC,UAAuB,EAAEC,GAAW,EAAE;QACjD,OAAO,AAA0B,YAA1B,OAAOD,WAAW,GAAG,IAAiBA,WAAW,GAAG,CAAC,QAAQ,CAACC;IACzE;IAGQ,MAAMD,UAAuB,EAAEE,EAAU,EAAE;QAE/C,MAAMC,oCACF,IAAI,CAAC,0CAA0C,CAACH;QAEpD,MAAMI,WAAWC,OAAO,IAAI,CAACF,mCAAmC,MAAM,GAAG;QAEzE,IAAI,CAACC,UAED,OAAO;QAGX,IAAI,AAA4B,YAA5B,OAAOJ,UAAU,CAAC,KAAK,EACvB,OAAO;QAGX,OAAOA,UAAU,CAAC,KAAK,CAAC,QAAQ,CAACE;IACrC;IAKQ,2CAA2CF,UAA8B,EAAE;QAC/E,OAAOK,OAAO,IAAI,CAACL,YAAY,MAAM,CACjC,CAACM,KAAKC;YACF,IAAIA,AAAQ,WAARA,OAAkBA,AAAQ,WAARA,KAClBD,GAAG,CAACC,IAAI,GAAGP,UAAU,CAACO,IAAI;YAE9B,OAAOD;QACX,GACA,CAAC;IAET;AACJ"}
@@ -1,27 +1,24 @@
1
- export class IdentityValue {
2
- constructor(value) {
3
- this.value = value;
4
- }
5
- static create(identity) {
6
- return new IdentityValue(identity);
7
- }
8
- getValue() {
9
- if (!this.value) {
10
- return null;
1
+ class IdentityValue {
2
+ constructor(value){
3
+ this.value = value;
11
4
  }
12
- return {
13
- id: this.value.id,
14
- displayName: this.value.displayName,
15
- type: this.value.type
16
- };
17
- }
18
- getValueOrFallback(fallback) {
19
- const value = this.getValue();
20
- if (value) {
21
- return value;
5
+ static create(identity) {
6
+ return new IdentityValue(identity);
7
+ }
8
+ getValue() {
9
+ if (!this.value) return null;
10
+ return {
11
+ id: this.value.id,
12
+ displayName: this.value.displayName,
13
+ type: this.value.type
14
+ };
15
+ }
16
+ getValueOrFallback(fallback) {
17
+ const value = this.getValue();
18
+ if (value) return value;
19
+ return IdentityValue.create(fallback).getValue();
22
20
  }
23
- return IdentityValue.create(fallback).getValue();
24
- }
25
21
  }
22
+ export { IdentityValue };
26
23
 
27
24
  //# sourceMappingURL=IdentityValue.js.map
@@ -1 +1 @@
1
- {"version":3,"names":["IdentityValue","constructor","value","create","identity","getValue","id","displayName","type","getValueOrFallback","fallback"],"sources":["IdentityValue.ts"],"sourcesContent":["import type { SecurityIdentity } from \"~/types/security.js\";\n\ntype IdentityInput = SecurityIdentity | null | undefined;\n\nexport class IdentityValue {\n private readonly value: IdentityInput;\n\n private constructor(value: IdentityInput) {\n this.value = value;\n }\n\n static create(identity: IdentityInput) {\n return new IdentityValue(identity);\n }\n\n getValue() {\n if (!this.value) {\n return null;\n }\n\n return {\n id: this.value.id,\n displayName: this.value.displayName,\n type: this.value.type\n };\n }\n\n getValueOrFallback(fallback: IdentityInput) {\n const value = this.getValue();\n\n if (value) {\n return value;\n }\n\n return IdentityValue.create(fallback).getValue();\n }\n}\n"],"mappings":"AAIA,OAAO,MAAMA,aAAa,CAAC;EAGfC,WAAWA,CAACC,KAAoB,EAAE;IACtC,IAAI,CAACA,KAAK,GAAGA,KAAK;EACtB;EAEA,OAAOC,MAAMA,CAACC,QAAuB,EAAE;IACnC,OAAO,IAAIJ,aAAa,CAACI,QAAQ,CAAC;EACtC;EAEAC,QAAQA,CAAA,EAAG;IACP,IAAI,CAAC,IAAI,CAACH,KAAK,EAAE;MACb,OAAO,IAAI;IACf;IAEA,OAAO;MACHI,EAAE,EAAE,IAAI,CAACJ,KAAK,CAACI,EAAE;MACjBC,WAAW,EAAE,IAAI,CAACL,KAAK,CAACK,WAAW;MACnCC,IAAI,EAAE,IAAI,CAACN,KAAK,CAACM;IACrB,CAAC;EACL;EAEAC,kBAAkBA,CAACC,QAAuB,EAAE;IACxC,MAAMR,KAAK,GAAG,IAAI,CAACG,QAAQ,CAAC,CAAC;IAE7B,IAAIH,KAAK,EAAE;MACP,OAAOA,KAAK;IAChB;IAEA,OAAOF,aAAa,CAACG,MAAM,CAACO,QAAQ,CAAC,CAACL,QAAQ,CAAC,CAAC;EACpD;AACJ","ignoreList":[]}
1
+ {"version":3,"file":"features/security/utils/IdentityValue.js","sources":["../../../../src/features/security/utils/IdentityValue.ts"],"sourcesContent":["import type { SecurityIdentity } from \"~/types/security.js\";\n\ntype IdentityInput = SecurityIdentity | null | undefined;\n\nexport class IdentityValue {\n private readonly value: IdentityInput;\n\n private constructor(value: IdentityInput) {\n this.value = value;\n }\n\n static create(identity: IdentityInput) {\n return new IdentityValue(identity);\n }\n\n getValue() {\n if (!this.value) {\n return null;\n }\n\n return {\n id: this.value.id,\n displayName: this.value.displayName,\n type: this.value.type\n };\n }\n\n getValueOrFallback(fallback: IdentityInput) {\n const value = this.getValue();\n\n if (value) {\n return value;\n }\n\n return IdentityValue.create(fallback).getValue();\n }\n}\n"],"names":["IdentityValue","value","identity","fallback"],"mappings":"AAIO,MAAMA;IAGT,YAAoBC,KAAoB,CAAE;QACtC,IAAI,CAAC,KAAK,GAAGA;IACjB;IAEA,OAAO,OAAOC,QAAuB,EAAE;QACnC,OAAO,IAAIF,cAAcE;IAC7B;IAEA,WAAW;QACP,IAAI,CAAC,IAAI,CAAC,KAAK,EACX,OAAO;QAGX,OAAO;YACH,IAAI,IAAI,CAAC,KAAK,CAAC,EAAE;YACjB,aAAa,IAAI,CAAC,KAAK,CAAC,WAAW;YACnC,MAAM,IAAI,CAAC,KAAK,CAAC,IAAI;QACzB;IACJ;IAEA,mBAAmBC,QAAuB,EAAE;QACxC,MAAMF,QAAQ,IAAI,CAAC,QAAQ;QAE3B,IAAIA,OACA,OAAOA;QAGX,OAAOD,cAAc,MAAM,CAACG,UAAU,QAAQ;IAClD;AACJ"}