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

This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
Files changed (786) hide show
  1. package/ApiCoreFeature.js +18 -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.js +1 -3
  27. package/features/ai/Ai.js +100 -117
  28. package/features/ai/Ai.js.map +1 -1
  29. package/features/ai/AiSdkTools.js +23 -19
  30. package/features/ai/AiSdkTools.js.map +1 -1
  31. package/features/ai/AnthropicSdkFactory.js +82 -65
  32. package/features/ai/AnthropicSdkFactory.js.map +1 -1
  33. package/features/ai/OpenAiSdkFactory.js +234 -181
  34. package/features/ai/OpenAiSdkFactory.js.map +1 -1
  35. package/features/ai/abstractions.js +7 -32
  36. package/features/ai/abstractions.js.map +1 -1
  37. package/features/ai/feature.js +9 -8
  38. package/features/ai/feature.js.map +1 -1
  39. package/features/ai/index.js +1 -3
  40. package/features/buildParams/BuildParams.js +20 -14
  41. package/features/buildParams/BuildParams.js.map +1 -1
  42. package/features/buildParams/abstractions.js +3 -4
  43. package/features/buildParams/abstractions.js.map +1 -1
  44. package/features/buildParams/feature.js +6 -5
  45. package/features/buildParams/feature.js.map +1 -1
  46. package/features/buildParams/index.js +0 -2
  47. package/features/encryption/EncryptionService.js +50 -46
  48. package/features/encryption/EncryptionService.js.map +1 -1
  49. package/features/encryption/abstractions.js +2 -2
  50. package/features/encryption/abstractions.js.map +1 -1
  51. package/features/encryption/feature.js +6 -5
  52. package/features/encryption/feature.js.map +1 -1
  53. package/features/encryption/index.js +0 -2
  54. package/features/eventPublisher/EventPublisher.js +9 -15
  55. package/features/eventPublisher/EventPublisher.js.map +1 -1
  56. package/features/eventPublisher/__tests__/EventPublisher.test.js +385 -419
  57. package/features/eventPublisher/__tests__/EventPublisher.test.js.map +1 -1
  58. package/features/eventPublisher/abstractions.js +7 -12
  59. package/features/eventPublisher/abstractions.js.map +1 -1
  60. package/features/eventPublisher/feature.js +8 -7
  61. package/features/eventPublisher/feature.js.map +1 -1
  62. package/features/eventPublisher/index.js +0 -2
  63. package/features/featureFlags/FeatureFlags.js +15 -12
  64. package/features/featureFlags/FeatureFlags.js.map +1 -1
  65. package/features/featureFlags/abstractions.js +2 -1
  66. package/features/featureFlags/abstractions.js.map +1 -1
  67. package/features/featureFlags/feature.js +6 -5
  68. package/features/featureFlags/feature.js.map +1 -1
  69. package/features/keyValueStore/GlobalKeyValueStore.js +28 -23
  70. package/features/keyValueStore/GlobalKeyValueStore.js.map +1 -1
  71. package/features/keyValueStore/KeyValueStore.js +30 -27
  72. package/features/keyValueStore/KeyValueStore.js.map +1 -1
  73. package/features/keyValueStore/KeyValueStoreRepository.d.ts +2 -2
  74. package/features/keyValueStore/KeyValueStoreRepository.js +34 -41
  75. package/features/keyValueStore/KeyValueStoreRepository.js.map +1 -1
  76. package/features/keyValueStore/abstractions.d.ts +6 -2
  77. package/features/keyValueStore/abstractions.js +5 -20
  78. package/features/keyValueStore/abstractions.js.map +1 -1
  79. package/features/keyValueStore/errors.js +16 -17
  80. package/features/keyValueStore/errors.js.map +1 -1
  81. package/features/keyValueStore/feature.js +9 -9
  82. package/features/keyValueStore/feature.js.map +1 -1
  83. package/features/keyValueStore/index.js +1 -3
  84. package/features/logger/LoggerService.js +41 -45
  85. package/features/logger/LoggerService.js.map +1 -1
  86. package/features/logger/abstractions.js +2 -2
  87. package/features/logger/abstractions.js.map +1 -1
  88. package/features/logger/feature.js +6 -5
  89. package/features/logger/feature.js.map +1 -1
  90. package/features/logger/index.js +0 -2
  91. package/features/masker/Masker.js +11 -14
  92. package/features/masker/Masker.js.map +1 -1
  93. package/features/masker/abstractions.js +2 -1
  94. package/features/masker/abstractions.js.map +1 -1
  95. package/features/masker/feature.js +7 -6
  96. package/features/masker/feature.js.map +1 -1
  97. package/features/masker/index.js +0 -2
  98. package/features/security/IdentityContext/AnonymousIdentity.js +12 -16
  99. package/features/security/IdentityContext/AnonymousIdentity.js.map +1 -1
  100. package/features/security/IdentityContext/AuthenticatedIdentity.js +5 -8
  101. package/features/security/IdentityContext/AuthenticatedIdentity.js.map +1 -1
  102. package/features/security/IdentityContext/Identity.js +63 -71
  103. package/features/security/IdentityContext/Identity.js.map +1 -1
  104. package/features/security/IdentityContext/IdentityContext.js +69 -106
  105. package/features/security/IdentityContext/IdentityContext.js.map +1 -1
  106. package/features/security/IdentityContext/abstractions.js +2 -2
  107. package/features/security/IdentityContext/abstractions.js.map +1 -1
  108. package/features/security/IdentityContext/feature.js +6 -5
  109. package/features/security/IdentityContext/feature.js.map +1 -1
  110. package/features/security/IdentityContext/index.js +0 -3
  111. package/features/security/SecurityFeature.js +13 -21
  112. package/features/security/SecurityFeature.js.map +1 -1
  113. package/features/security/apiKeys/CreateApiKey/CreateApiKeyUseCase.js +48 -49
  114. package/features/security/apiKeys/CreateApiKey/CreateApiKeyUseCase.js.map +1 -1
  115. package/features/security/apiKeys/CreateApiKey/abstractions.js +2 -2
  116. package/features/security/apiKeys/CreateApiKey/abstractions.js.map +1 -1
  117. package/features/security/apiKeys/CreateApiKey/events.js +17 -16
  118. package/features/security/apiKeys/CreateApiKey/events.js.map +1 -1
  119. package/features/security/apiKeys/CreateApiKey/feature.js +6 -5
  120. package/features/security/apiKeys/CreateApiKey/feature.js.map +1 -1
  121. package/features/security/apiKeys/CreateApiKey/index.js +0 -2
  122. package/features/security/apiKeys/DeleteApiKey/DeleteApiKeyUseCase.js +29 -30
  123. package/features/security/apiKeys/DeleteApiKey/DeleteApiKeyUseCase.js.map +1 -1
  124. package/features/security/apiKeys/DeleteApiKey/abstractions.js +2 -2
  125. package/features/security/apiKeys/DeleteApiKey/abstractions.js.map +1 -1
  126. package/features/security/apiKeys/DeleteApiKey/events.js +17 -16
  127. package/features/security/apiKeys/DeleteApiKey/events.js.map +1 -1
  128. package/features/security/apiKeys/DeleteApiKey/feature.js +6 -5
  129. package/features/security/apiKeys/DeleteApiKey/feature.js.map +1 -1
  130. package/features/security/apiKeys/DeleteApiKey/index.js +0 -2
  131. package/features/security/apiKeys/GetApiKey/GetApiKeyUseCase.js +16 -14
  132. package/features/security/apiKeys/GetApiKey/GetApiKeyUseCase.js.map +1 -1
  133. package/features/security/apiKeys/GetApiKey/abstractions.js +2 -2
  134. package/features/security/apiKeys/GetApiKey/abstractions.js.map +1 -1
  135. package/features/security/apiKeys/GetApiKey/feature.js +6 -5
  136. package/features/security/apiKeys/GetApiKey/feature.js.map +1 -1
  137. package/features/security/apiKeys/GetApiKey/index.js +0 -2
  138. package/features/security/apiKeys/GetApiKeyBySlug/GetApiKeyBySlugUseCase.js +13 -10
  139. package/features/security/apiKeys/GetApiKeyBySlug/GetApiKeyBySlugUseCase.js.map +1 -1
  140. package/features/security/apiKeys/GetApiKeyBySlug/abstractions.js +2 -2
  141. package/features/security/apiKeys/GetApiKeyBySlug/abstractions.js.map +1 -1
  142. package/features/security/apiKeys/GetApiKeyBySlug/feature.js +6 -5
  143. package/features/security/apiKeys/GetApiKeyBySlug/feature.js.map +1 -1
  144. package/features/security/apiKeys/GetApiKeyBySlug/index.js +0 -2
  145. package/features/security/apiKeys/GetApiKeyByToken/GetApiKeyByTokenUseCase.js +13 -10
  146. package/features/security/apiKeys/GetApiKeyByToken/GetApiKeyByTokenUseCase.js.map +1 -1
  147. package/features/security/apiKeys/GetApiKeyByToken/abstractions.js +2 -2
  148. package/features/security/apiKeys/GetApiKeyByToken/abstractions.js.map +1 -1
  149. package/features/security/apiKeys/GetApiKeyByToken/feature.js +6 -5
  150. package/features/security/apiKeys/GetApiKeyByToken/feature.js.map +1 -1
  151. package/features/security/apiKeys/GetApiKeyByToken/index.js +0 -2
  152. package/features/security/apiKeys/ListApiKeys/ListApiKeysUseCase.js +17 -17
  153. package/features/security/apiKeys/ListApiKeys/ListApiKeysUseCase.js.map +1 -1
  154. package/features/security/apiKeys/ListApiKeys/abstractions.js +2 -2
  155. package/features/security/apiKeys/ListApiKeys/abstractions.js.map +1 -1
  156. package/features/security/apiKeys/ListApiKeys/feature.js +6 -5
  157. package/features/security/apiKeys/ListApiKeys/feature.js.map +1 -1
  158. package/features/security/apiKeys/ListApiKeys/index.js +0 -2
  159. package/features/security/apiKeys/UpdateApiKey/UpdateApiKeyUseCase.js +39 -42
  160. package/features/security/apiKeys/UpdateApiKey/UpdateApiKeyUseCase.js.map +1 -1
  161. package/features/security/apiKeys/UpdateApiKey/abstractions.js +2 -2
  162. package/features/security/apiKeys/UpdateApiKey/abstractions.js.map +1 -1
  163. package/features/security/apiKeys/UpdateApiKey/events.js +17 -16
  164. package/features/security/apiKeys/UpdateApiKey/events.js.map +1 -1
  165. package/features/security/apiKeys/UpdateApiKey/feature.js +6 -5
  166. package/features/security/apiKeys/UpdateApiKey/feature.js.map +1 -1
  167. package/features/security/apiKeys/UpdateApiKey/index.js +0 -2
  168. package/features/security/apiKeys/feature.js +14 -16
  169. package/features/security/apiKeys/feature.js.map +1 -1
  170. package/features/security/apiKeys/shared/ApiKeyProvider.js +42 -42
  171. package/features/security/apiKeys/shared/ApiKeyProvider.js.map +1 -1
  172. package/features/security/apiKeys/shared/ApiKeysRepository.js +108 -135
  173. package/features/security/apiKeys/shared/ApiKeysRepository.js.map +1 -1
  174. package/features/security/apiKeys/shared/abstractions.js +4 -6
  175. package/features/security/apiKeys/shared/abstractions.js.map +1 -1
  176. package/features/security/apiKeys/shared/errors.js +29 -32
  177. package/features/security/apiKeys/shared/errors.js.map +1 -1
  178. package/features/security/apiKeys/shared/generateToken.js +6 -16
  179. package/features/security/apiKeys/shared/generateToken.js.map +1 -1
  180. package/features/security/apiKeys/shared/schemas.js +27 -23
  181. package/features/security/apiKeys/shared/schemas.js.map +1 -1
  182. package/features/security/apiKeys/shared/types.js +0 -3
  183. package/features/security/authentication/AuthenticationContext/AuthenticationContext.js +44 -38
  184. package/features/security/authentication/AuthenticationContext/AuthenticationContext.js.map +1 -1
  185. package/features/security/authentication/AuthenticationContext/SetIdTokenCookie.js +33 -43
  186. package/features/security/authentication/AuthenticationContext/SetIdTokenCookie.js.map +1 -1
  187. package/features/security/authentication/AuthenticationContext/abstractions.js +2 -2
  188. package/features/security/authentication/AuthenticationContext/abstractions.js.map +1 -1
  189. package/features/security/authentication/AuthenticationContext/errors.js +51 -116
  190. package/features/security/authentication/AuthenticationContext/errors.js.map +1 -1
  191. package/features/security/authentication/AuthenticationContext/events.js +17 -16
  192. package/features/security/authentication/AuthenticationContext/events.js.map +1 -1
  193. package/features/security/authentication/AuthenticationContext/feature.js +6 -5
  194. package/features/security/authentication/AuthenticationContext/feature.js.map +1 -1
  195. package/features/security/authentication/AuthenticationContext/index.js +2 -4
  196. package/features/security/authentication/Authenticator/abstractions.js +2 -2
  197. package/features/security/authentication/Authenticator/abstractions.js.map +1 -1
  198. package/features/security/authentication/Authenticator/index.js +0 -2
  199. package/features/security/authorization/AuthorizationContext/AuthorizationContext.js +46 -59
  200. package/features/security/authorization/AuthorizationContext/AuthorizationContext.js.map +1 -1
  201. package/features/security/authorization/AuthorizationContext/abstractions.js +3 -4
  202. package/features/security/authorization/AuthorizationContext/abstractions.js.map +1 -1
  203. package/features/security/authorization/AuthorizationContext/feature.js +10 -9
  204. package/features/security/authorization/AuthorizationContext/feature.js.map +1 -1
  205. package/features/security/authorization/AuthorizationContext/index.js +1 -4
  206. package/features/security/authorization/Authorizer/abstractions.js +2 -2
  207. package/features/security/authorization/Authorizer/abstractions.js.map +1 -1
  208. package/features/security/authorization/Authorizer/index.js +0 -2
  209. package/features/security/authorization/GroupsTeamsAuthorizer/GetPermissionsFromIdentity.js +60 -64
  210. package/features/security/authorization/GroupsTeamsAuthorizer/GetPermissionsFromIdentity.js.map +1 -1
  211. package/features/security/authorization/GroupsTeamsAuthorizer/RolesTeamsAuthorizer.js +26 -40
  212. package/features/security/authorization/GroupsTeamsAuthorizer/RolesTeamsAuthorizer.js.map +1 -1
  213. package/features/security/authorization/GroupsTeamsAuthorizer/abstractions.js +2 -1
  214. package/features/security/authorization/GroupsTeamsAuthorizer/abstractions.js.map +1 -1
  215. package/features/security/authorization/GroupsTeamsAuthorizer/feature.js +7 -6
  216. package/features/security/authorization/GroupsTeamsAuthorizer/feature.js.map +1 -1
  217. package/features/security/login/abstractions.js +9 -8
  218. package/features/security/login/abstractions.js.map +1 -1
  219. package/features/security/login/index.js +0 -2
  220. package/features/security/permissions/createPermissionSchema.js +6 -5
  221. package/features/security/permissions/createPermissionSchema.js.map +1 -1
  222. package/features/security/permissions/createPermissions.js +148 -236
  223. package/features/security/permissions/createPermissions.js.map +1 -1
  224. package/features/security/permissions/index.js +0 -2
  225. package/features/security/permissions/types.js +0 -3
  226. package/features/security/roles/CreateRole/CreateRoleUseCase.js +53 -59
  227. package/features/security/roles/CreateRole/CreateRoleUseCase.js.map +1 -1
  228. package/features/security/roles/CreateRole/abstractions.js +2 -2
  229. package/features/security/roles/CreateRole/abstractions.js.map +1 -1
  230. package/features/security/roles/CreateRole/events.js +17 -16
  231. package/features/security/roles/CreateRole/events.js.map +1 -1
  232. package/features/security/roles/CreateRole/feature.js +6 -5
  233. package/features/security/roles/CreateRole/feature.js.map +1 -1
  234. package/features/security/roles/CreateRole/index.js +0 -2
  235. package/features/security/roles/CreateRole/schema.js +8 -7
  236. package/features/security/roles/CreateRole/schema.js.map +1 -1
  237. package/features/security/roles/DeleteRole/DeleteRoleUseCase.js +35 -41
  238. package/features/security/roles/DeleteRole/DeleteRoleUseCase.js.map +1 -1
  239. package/features/security/roles/DeleteRole/abstractions.js +2 -2
  240. package/features/security/roles/DeleteRole/abstractions.js.map +1 -1
  241. package/features/security/roles/DeleteRole/events.js +17 -16
  242. package/features/security/roles/DeleteRole/events.js.map +1 -1
  243. package/features/security/roles/DeleteRole/feature.js +6 -5
  244. package/features/security/roles/DeleteRole/feature.js.map +1 -1
  245. package/features/security/roles/DeleteRole/index.js +0 -2
  246. package/features/security/roles/GetRole/GetRoleUseCase.js +19 -18
  247. package/features/security/roles/GetRole/GetRoleUseCase.js.map +1 -1
  248. package/features/security/roles/GetRole/abstractions.js +2 -2
  249. package/features/security/roles/GetRole/abstractions.js.map +1 -1
  250. package/features/security/roles/GetRole/feature.js +6 -5
  251. package/features/security/roles/GetRole/feature.js.map +1 -1
  252. package/features/security/roles/GetRole/index.js +0 -2
  253. package/features/security/roles/Installer/RolesInstaller.js +38 -35
  254. package/features/security/roles/Installer/RolesInstaller.js.map +1 -1
  255. package/features/security/roles/ListRoles/ListRolesUseCase.js +18 -17
  256. package/features/security/roles/ListRoles/ListRolesUseCase.js.map +1 -1
  257. package/features/security/roles/ListRoles/abstractions.js +2 -2
  258. package/features/security/roles/ListRoles/abstractions.js.map +1 -1
  259. package/features/security/roles/ListRoles/feature.js +6 -5
  260. package/features/security/roles/ListRoles/feature.js.map +1 -1
  261. package/features/security/roles/ListRoles/index.js +0 -2
  262. package/features/security/roles/UpdateRole/UpdateRoleUseCase.js +43 -50
  263. package/features/security/roles/UpdateRole/UpdateRoleUseCase.js.map +1 -1
  264. package/features/security/roles/UpdateRole/abstractions.js +2 -2
  265. package/features/security/roles/UpdateRole/abstractions.js.map +1 -1
  266. package/features/security/roles/UpdateRole/events.js +17 -16
  267. package/features/security/roles/UpdateRole/events.js.map +1 -1
  268. package/features/security/roles/UpdateRole/feature.js +6 -5
  269. package/features/security/roles/UpdateRole/feature.js.map +1 -1
  270. package/features/security/roles/UpdateRole/index.js +0 -2
  271. package/features/security/roles/UpdateRole/schema.js +7 -6
  272. package/features/security/roles/UpdateRole/schema.js.map +1 -1
  273. package/features/security/roles/feature.js +14 -18
  274. package/features/security/roles/feature.js.map +1 -1
  275. package/features/security/roles/shared/RoleProvider.js +27 -21
  276. package/features/security/roles/shared/RoleProvider.js.map +1 -1
  277. package/features/security/roles/shared/RolesRepository.js +96 -113
  278. package/features/security/roles/shared/RolesRepository.js.map +1 -1
  279. package/features/security/roles/shared/abstractions.js +3 -4
  280. package/features/security/roles/shared/abstractions.js.map +1 -1
  281. package/features/security/roles/shared/decorators/ListCache.js +23 -22
  282. package/features/security/roles/shared/decorators/ListCache.js.map +1 -1
  283. package/features/security/roles/shared/decorators/RolesRepositoryCachingDecorator.js +40 -62
  284. package/features/security/roles/shared/decorators/RolesRepositoryCachingDecorator.js.map +1 -1
  285. package/features/security/roles/shared/errors.js +50 -56
  286. package/features/security/roles/shared/errors.js.map +1 -1
  287. package/features/security/roles/shared/types.js +0 -3
  288. package/features/security/shared/abstractions.js +4 -6
  289. package/features/security/shared/abstractions.js.map +1 -1
  290. package/features/security/shared/errors.js +8 -8
  291. package/features/security/shared/errors.js.map +1 -1
  292. package/features/security/shared/index.js +0 -2
  293. package/features/security/teams/CreateTeam/CreateTeamUseCase.js +53 -59
  294. package/features/security/teams/CreateTeam/CreateTeamUseCase.js.map +1 -1
  295. package/features/security/teams/CreateTeam/abstractions.js +2 -2
  296. package/features/security/teams/CreateTeam/abstractions.js.map +1 -1
  297. package/features/security/teams/CreateTeam/events.js +17 -16
  298. package/features/security/teams/CreateTeam/events.js.map +1 -1
  299. package/features/security/teams/CreateTeam/feature.js +6 -5
  300. package/features/security/teams/CreateTeam/feature.js.map +1 -1
  301. package/features/security/teams/CreateTeam/index.js +0 -2
  302. package/features/security/teams/CreateTeam/schema.js +6 -5
  303. package/features/security/teams/CreateTeam/schema.js.map +1 -1
  304. package/features/security/teams/DeleteTeam/DeleteTeamUseCase.js +36 -46
  305. package/features/security/teams/DeleteTeam/DeleteTeamUseCase.js.map +1 -1
  306. package/features/security/teams/DeleteTeam/abstractions.js +2 -2
  307. package/features/security/teams/DeleteTeam/abstractions.js.map +1 -1
  308. package/features/security/teams/DeleteTeam/events.js +17 -16
  309. package/features/security/teams/DeleteTeam/events.js.map +1 -1
  310. package/features/security/teams/DeleteTeam/feature.js +6 -5
  311. package/features/security/teams/DeleteTeam/feature.js.map +1 -1
  312. package/features/security/teams/DeleteTeam/index.js +0 -2
  313. package/features/security/teams/GetTeam/GetTeamUseCase.js +17 -17
  314. package/features/security/teams/GetTeam/GetTeamUseCase.js.map +1 -1
  315. package/features/security/teams/GetTeam/abstractions.js +2 -2
  316. package/features/security/teams/GetTeam/abstractions.js.map +1 -1
  317. package/features/security/teams/GetTeam/feature.js +6 -5
  318. package/features/security/teams/GetTeam/feature.js.map +1 -1
  319. package/features/security/teams/GetTeam/index.js +0 -2
  320. package/features/security/teams/ListTeams/ListTeamsUseCase.js +20 -21
  321. package/features/security/teams/ListTeams/ListTeamsUseCase.js.map +1 -1
  322. package/features/security/teams/ListTeams/abstractions.js +2 -2
  323. package/features/security/teams/ListTeams/abstractions.js.map +1 -1
  324. package/features/security/teams/ListTeams/feature.js +6 -5
  325. package/features/security/teams/ListTeams/feature.js.map +1 -1
  326. package/features/security/teams/ListTeams/index.js +0 -2
  327. package/features/security/teams/UpdateTeam/UpdateTeamUseCase.js +46 -58
  328. package/features/security/teams/UpdateTeam/UpdateTeamUseCase.js.map +1 -1
  329. package/features/security/teams/UpdateTeam/abstractions.js +2 -2
  330. package/features/security/teams/UpdateTeam/abstractions.js.map +1 -1
  331. package/features/security/teams/UpdateTeam/events.js +17 -16
  332. package/features/security/teams/UpdateTeam/events.js.map +1 -1
  333. package/features/security/teams/UpdateTeam/feature.js +6 -5
  334. package/features/security/teams/UpdateTeam/feature.js.map +1 -1
  335. package/features/security/teams/UpdateTeam/index.js +0 -2
  336. package/features/security/teams/UpdateTeam/schema.js +5 -4
  337. package/features/security/teams/UpdateTeam/schema.js.map +1 -1
  338. package/features/security/teams/feature.js +13 -17
  339. package/features/security/teams/feature.js.map +1 -1
  340. package/features/security/teams/shared/TeamProvider.js +27 -21
  341. package/features/security/teams/shared/TeamProvider.js.map +1 -1
  342. package/features/security/teams/shared/TeamsRepository.js +100 -118
  343. package/features/security/teams/shared/TeamsRepository.js.map +1 -1
  344. package/features/security/teams/shared/abstractions.js +3 -4
  345. package/features/security/teams/shared/abstractions.js.map +1 -1
  346. package/features/security/teams/shared/decorators/TeamsRepositoryCachingDecorator.js +40 -62
  347. package/features/security/teams/shared/decorators/TeamsRepositoryCachingDecorator.js.map +1 -1
  348. package/features/security/teams/shared/errors.js +62 -70
  349. package/features/security/teams/shared/errors.js.map +1 -1
  350. package/features/security/teams/shared/types.js +0 -3
  351. package/features/security/utils/AppPermissions.js +50 -89
  352. package/features/security/utils/AppPermissions.js.map +1 -1
  353. package/features/security/utils/IdentityValue.js +19 -22
  354. package/features/security/utils/IdentityValue.js.map +1 -1
  355. package/features/security/utils/filterOutCustomWbyAppsPermissions.js +24 -27
  356. package/features/security/utils/filterOutCustomWbyAppsPermissions.js.map +1 -1
  357. package/features/security/utils/getPermissionsFromRoles.js +5 -10
  358. package/features/security/utils/getPermissionsFromRoles.js.map +1 -1
  359. package/features/security/utils/isJwt.js +2 -1
  360. package/features/security/utils/isJwt.js.map +1 -1
  361. package/features/security/utils/verifyJwtUsingJwk.js +6 -7
  362. package/features/security/utils/verifyJwtUsingJwk.js.map +1 -1
  363. package/features/system/InstallSystem/InstallSystemUseCase.js +45 -44
  364. package/features/system/InstallSystem/InstallSystemUseCase.js.map +1 -1
  365. package/features/system/InstallSystem/abstractions.js +3 -17
  366. package/features/system/InstallSystem/abstractions.js.map +1 -1
  367. package/features/system/InstallSystem/errors.js +15 -16
  368. package/features/system/InstallSystem/errors.js.map +1 -1
  369. package/features/system/InstallSystem/events.js +8 -5
  370. package/features/system/InstallSystem/events.js.map +1 -1
  371. package/features/system/InstallSystem/feature.js +6 -7
  372. package/features/system/InstallSystem/feature.js.map +1 -1
  373. package/features/system/InstallSystem/index.js +2 -6
  374. package/features/system/SystemFeature.js +6 -5
  375. package/features/system/SystemFeature.js.map +1 -1
  376. package/features/task/TaskController/abstractions.js +2 -10
  377. package/features/task/TaskController/abstractions.js.map +1 -1
  378. package/features/task/TaskController/index.js +0 -2
  379. package/features/task/TaskDefinition/abstractions.js +8 -40
  380. package/features/task/TaskDefinition/abstractions.js.map +1 -1
  381. package/features/task/TaskDefinition/index.js +0 -2
  382. package/features/task/TaskService/abstractions.js +9 -13
  383. package/features/task/TaskService/abstractions.js.map +1 -1
  384. package/features/task/TaskService/index.js +0 -2
  385. package/features/tenancy/CreateTenant/CreateTenantGateway.js +14 -11
  386. package/features/tenancy/CreateTenant/CreateTenantGateway.js.map +1 -1
  387. package/features/tenancy/CreateTenant/CreateTenantRepository.js +18 -15
  388. package/features/tenancy/CreateTenant/CreateTenantRepository.js.map +1 -1
  389. package/features/tenancy/CreateTenant/CreateTenantUseCase.js +44 -41
  390. package/features/tenancy/CreateTenant/CreateTenantUseCase.js.map +1 -1
  391. package/features/tenancy/CreateTenant/abstractions.js +6 -29
  392. package/features/tenancy/CreateTenant/abstractions.js.map +1 -1
  393. package/features/tenancy/CreateTenant/decorators/CreateTenantWithWcpIncrement.js +16 -15
  394. package/features/tenancy/CreateTenant/decorators/CreateTenantWithWcpIncrement.js.map +1 -1
  395. package/features/tenancy/CreateTenant/errors.js +8 -8
  396. package/features/tenancy/CreateTenant/errors.js.map +1 -1
  397. package/features/tenancy/CreateTenant/events.js +16 -11
  398. package/features/tenancy/CreateTenant/events.js.map +1 -1
  399. package/features/tenancy/CreateTenant/feature.js +9 -8
  400. package/features/tenancy/CreateTenant/feature.js.map +1 -1
  401. package/features/tenancy/CreateTenant/index.js +2 -4
  402. package/features/tenancy/DeleteTenant/DeleteTenantGateway.js +15 -12
  403. package/features/tenancy/DeleteTenant/DeleteTenantGateway.js.map +1 -1
  404. package/features/tenancy/DeleteTenant/DeleteTenantRepository.js +22 -19
  405. package/features/tenancy/DeleteTenant/DeleteTenantRepository.js.map +1 -1
  406. package/features/tenancy/DeleteTenant/DeleteTenantUseCase.js +29 -27
  407. package/features/tenancy/DeleteTenant/DeleteTenantUseCase.js.map +1 -1
  408. package/features/tenancy/DeleteTenant/abstractions.js +6 -10
  409. package/features/tenancy/DeleteTenant/abstractions.js.map +1 -1
  410. package/features/tenancy/DeleteTenant/decorators/DeleteTenantWithWcpDecrement.js +16 -13
  411. package/features/tenancy/DeleteTenant/decorators/DeleteTenantWithWcpDecrement.js.map +1 -1
  412. package/features/tenancy/DeleteTenant/events.js +16 -11
  413. package/features/tenancy/DeleteTenant/events.js.map +1 -1
  414. package/features/tenancy/DeleteTenant/feature.js +9 -8
  415. package/features/tenancy/DeleteTenant/feature.js.map +1 -1
  416. package/features/tenancy/DeleteTenant/index.js +2 -4
  417. package/features/tenancy/GetRootTenant/GetRootTenantUseCase.js +15 -12
  418. package/features/tenancy/GetRootTenant/GetRootTenantUseCase.js.map +1 -1
  419. package/features/tenancy/GetRootTenant/abstractions.js +2 -4
  420. package/features/tenancy/GetRootTenant/abstractions.js.map +1 -1
  421. package/features/tenancy/GetRootTenant/feature.js +6 -5
  422. package/features/tenancy/GetRootTenant/feature.js.map +1 -1
  423. package/features/tenancy/GetRootTenant/index.js +0 -2
  424. package/features/tenancy/GetTenantById/GetTenantByIdGateway.js +17 -12
  425. package/features/tenancy/GetTenantById/GetTenantByIdGateway.js.map +1 -1
  426. package/features/tenancy/GetTenantById/GetTenantByIdRepository.js +18 -19
  427. package/features/tenancy/GetTenantById/GetTenantByIdRepository.js.map +1 -1
  428. package/features/tenancy/GetTenantById/GetTenantByIdUseCase.js +17 -17
  429. package/features/tenancy/GetTenantById/GetTenantByIdUseCase.js.map +1 -1
  430. package/features/tenancy/GetTenantById/abstractions.js +4 -6
  431. package/features/tenancy/GetTenantById/abstractions.js.map +1 -1
  432. package/features/tenancy/GetTenantById/feature.js +8 -12
  433. package/features/tenancy/GetTenantById/feature.js.map +1 -1
  434. package/features/tenancy/GetTenantById/index.js +1 -3
  435. package/features/tenancy/InstallTenant/DependencyResolver.js +53 -65
  436. package/features/tenancy/InstallTenant/DependencyResolver.js.map +1 -1
  437. package/features/tenancy/InstallTenant/InstallTenantUseCase.js +95 -113
  438. package/features/tenancy/InstallTenant/InstallTenantUseCase.js.map +1 -1
  439. package/features/tenancy/InstallTenant/abstractions.js +4 -15
  440. package/features/tenancy/InstallTenant/abstractions.js.map +1 -1
  441. package/features/tenancy/InstallTenant/errors.js +15 -16
  442. package/features/tenancy/InstallTenant/errors.js.map +1 -1
  443. package/features/tenancy/InstallTenant/events.js +8 -5
  444. package/features/tenancy/InstallTenant/events.js.map +1 -1
  445. package/features/tenancy/InstallTenant/feature.js +6 -5
  446. package/features/tenancy/InstallTenant/feature.js.map +1 -1
  447. package/features/tenancy/InstallTenant/index.js +1 -3
  448. package/features/tenancy/ListTenants/ListTenantsGateway.js +14 -11
  449. package/features/tenancy/ListTenants/ListTenantsGateway.js.map +1 -1
  450. package/features/tenancy/ListTenants/ListTenantsRepository.js +14 -12
  451. package/features/tenancy/ListTenants/ListTenantsRepository.js.map +1 -1
  452. package/features/tenancy/ListTenants/ListTenantsUseCase.js +16 -14
  453. package/features/tenancy/ListTenants/ListTenantsUseCase.js.map +1 -1
  454. package/features/tenancy/ListTenants/abstractions.js +4 -12
  455. package/features/tenancy/ListTenants/abstractions.js.map +1 -1
  456. package/features/tenancy/ListTenants/feature.js +8 -7
  457. package/features/tenancy/ListTenants/feature.js.map +1 -1
  458. package/features/tenancy/ListTenants/index.js +1 -3
  459. package/features/tenancy/TenancyFeature.js +20 -26
  460. package/features/tenancy/TenancyFeature.js.map +1 -1
  461. package/features/tenancy/TenantContext/TenantContext.js +46 -48
  462. package/features/tenancy/TenantContext/TenantContext.js.map +1 -1
  463. package/features/tenancy/TenantContext/abstractions.js +2 -2
  464. package/features/tenancy/TenantContext/abstractions.js.map +1 -1
  465. package/features/tenancy/TenantContext/errors.js +7 -7
  466. package/features/tenancy/TenantContext/errors.js.map +1 -1
  467. package/features/tenancy/TenantContext/feature.js +6 -5
  468. package/features/tenancy/TenantContext/feature.js.map +1 -1
  469. package/features/tenancy/TenantContext/index.js +0 -2
  470. package/features/tenancy/UpdateTenant/UpdateTenantGateway.js +14 -11
  471. package/features/tenancy/UpdateTenant/UpdateTenantGateway.js.map +1 -1
  472. package/features/tenancy/UpdateTenant/UpdateTenantRepository.js +19 -16
  473. package/features/tenancy/UpdateTenant/UpdateTenantRepository.js.map +1 -1
  474. package/features/tenancy/UpdateTenant/UpdateTenantUseCase.js +37 -36
  475. package/features/tenancy/UpdateTenant/UpdateTenantUseCase.js.map +1 -1
  476. package/features/tenancy/UpdateTenant/abstractions.js +6 -10
  477. package/features/tenancy/UpdateTenant/abstractions.js.map +1 -1
  478. package/features/tenancy/UpdateTenant/events.js +16 -11
  479. package/features/tenancy/UpdateTenant/events.js.map +1 -1
  480. package/features/tenancy/UpdateTenant/feature.js +8 -7
  481. package/features/tenancy/UpdateTenant/feature.js.map +1 -1
  482. package/features/tenancy/UpdateTenant/index.js +2 -4
  483. package/features/tenancy/shared/TenantCache.js +18 -17
  484. package/features/tenancy/shared/TenantCache.js.map +1 -1
  485. package/features/tenancy/shared/abstractions.js +2 -1
  486. package/features/tenancy/shared/abstractions.js.map +1 -1
  487. package/features/tenancy/shared/storageOperations.js +2 -5
  488. package/features/tenancy/shared/storageOperations.js.map +1 -1
  489. package/features/users/AdminUsersFeature.js +15 -19
  490. package/features/users/AdminUsersFeature.js.map +1 -1
  491. package/features/users/CreateUser/CreateUserUseCase.js +65 -100
  492. package/features/users/CreateUser/CreateUserUseCase.js.map +1 -1
  493. package/features/users/CreateUser/abstractions.js +2 -13
  494. package/features/users/CreateUser/abstractions.js.map +1 -1
  495. package/features/users/CreateUser/decorators/CreateUserWithWcpIncrement.js +16 -15
  496. package/features/users/CreateUser/decorators/CreateUserWithWcpIncrement.js.map +1 -1
  497. package/features/users/CreateUser/events.js +17 -18
  498. package/features/users/CreateUser/events.js.map +1 -1
  499. package/features/users/CreateUser/feature.js +7 -6
  500. package/features/users/CreateUser/feature.js.map +1 -1
  501. package/features/users/CreateUser/index.js +0 -2
  502. package/features/users/CreateUser/schema.js +14 -18
  503. package/features/users/CreateUser/schema.js.map +1 -1
  504. package/features/users/DeleteUser/DeleteUserUseCase.js +35 -50
  505. package/features/users/DeleteUser/DeleteUserUseCase.js.map +1 -1
  506. package/features/users/DeleteUser/abstractions.js +2 -13
  507. package/features/users/DeleteUser/abstractions.js.map +1 -1
  508. package/features/users/DeleteUser/decorators/DeleteUserWithWcpDecrement.js +15 -16
  509. package/features/users/DeleteUser/decorators/DeleteUserWithWcpDecrement.js.map +1 -1
  510. package/features/users/DeleteUser/errors.js +7 -7
  511. package/features/users/DeleteUser/errors.js.map +1 -1
  512. package/features/users/DeleteUser/events.js +17 -18
  513. package/features/users/DeleteUser/events.js.map +1 -1
  514. package/features/users/DeleteUser/feature.js +7 -6
  515. package/features/users/DeleteUser/feature.js.map +1 -1
  516. package/features/users/DeleteUser/index.js +0 -2
  517. package/features/users/ExternalIdpUserSync/ExternalIdpUserSyncHandler.js +60 -74
  518. package/features/users/ExternalIdpUserSync/ExternalIdpUserSyncHandler.js.map +1 -1
  519. package/features/users/ExternalIdpUserSync/feature.js +6 -5
  520. package/features/users/ExternalIdpUserSync/feature.js.map +1 -1
  521. package/features/users/ExternalIdpUserSync/index.js +0 -2
  522. package/features/users/GetIdentityProfile/GetIdentityProfileUseCase.js +29 -39
  523. package/features/users/GetIdentityProfile/GetIdentityProfileUseCase.js.map +1 -1
  524. package/features/users/GetIdentityProfile/abstractions.js +2 -11
  525. package/features/users/GetIdentityProfile/abstractions.js.map +1 -1
  526. package/features/users/GetIdentityProfile/feature.js +6 -5
  527. package/features/users/GetIdentityProfile/feature.js.map +1 -1
  528. package/features/users/GetIdentityProfile/index.js +0 -2
  529. package/features/users/GetIdentityProfile/types.js +0 -3
  530. package/features/users/GetUser/GetUserUseCase.js +19 -23
  531. package/features/users/GetUser/GetUserUseCase.js.map +1 -1
  532. package/features/users/GetUser/abstractions.js +2 -11
  533. package/features/users/GetUser/abstractions.js.map +1 -1
  534. package/features/users/GetUser/feature.js +6 -5
  535. package/features/users/GetUser/feature.js.map +1 -1
  536. package/features/users/GetUser/index.js +0 -2
  537. package/features/users/ListUserTeams/ListUserTeamsUseCase.js +33 -42
  538. package/features/users/ListUserTeams/ListUserTeamsUseCase.js.map +1 -1
  539. package/features/users/ListUserTeams/abstractions.js +2 -11
  540. package/features/users/ListUserTeams/abstractions.js.map +1 -1
  541. package/features/users/ListUserTeams/feature.js +6 -5
  542. package/features/users/ListUserTeams/feature.js.map +1 -1
  543. package/features/users/ListUserTeams/index.js +0 -2
  544. package/features/users/ListUsers/ListUsersUseCase.js +19 -23
  545. package/features/users/ListUsers/ListUsersUseCase.js.map +1 -1
  546. package/features/users/ListUsers/abstractions.js +2 -11
  547. package/features/users/ListUsers/abstractions.js.map +1 -1
  548. package/features/users/ListUsers/feature.js +6 -5
  549. package/features/users/ListUsers/feature.js.map +1 -1
  550. package/features/users/ListUsers/index.js +0 -2
  551. package/features/users/UpdateUser/UpdateUserUseCase.js +52 -74
  552. package/features/users/UpdateUser/UpdateUserUseCase.js.map +1 -1
  553. package/features/users/UpdateUser/abstractions.js +2 -13
  554. package/features/users/UpdateUser/abstractions.js.map +1 -1
  555. package/features/users/UpdateUser/events.js +17 -18
  556. package/features/users/UpdateUser/events.js.map +1 -1
  557. package/features/users/UpdateUser/feature.js +6 -5
  558. package/features/users/UpdateUser/feature.js.map +1 -1
  559. package/features/users/UpdateUser/index.js +0 -2
  560. package/features/users/UpdateUser/schema.js +11 -10
  561. package/features/users/UpdateUser/schema.js.map +1 -1
  562. package/features/users/shared/AdminUsersRepository.js +104 -112
  563. package/features/users/shared/AdminUsersRepository.js.map +1 -1
  564. package/features/users/shared/abstractions.js +2 -9
  565. package/features/users/shared/abstractions.js.map +1 -1
  566. package/features/users/shared/errors.js +40 -46
  567. package/features/users/shared/errors.js.map +1 -1
  568. package/features/users/shared/loaders.js +52 -66
  569. package/features/users/shared/loaders.js.map +1 -1
  570. package/features/users/shared/storageAbstractions.js +2 -2
  571. package/features/users/shared/storageAbstractions.js.map +1 -1
  572. package/features/users/shared/types.js +0 -3
  573. package/features/wcp/WcpContext/WcpContext.js +138 -142
  574. package/features/wcp/WcpContext/WcpContext.js.map +1 -1
  575. package/features/wcp/WcpContext/abstractions.js +2 -6
  576. package/features/wcp/WcpContext/abstractions.js.map +1 -1
  577. package/features/wcp/WcpContext/decorators/WcpContextWithFeatureFlagsDecorator.js +135 -134
  578. package/features/wcp/WcpContext/decorators/WcpContextWithFeatureFlagsDecorator.js.map +1 -1
  579. package/features/wcp/WcpContext/feature.js +6 -5
  580. package/features/wcp/WcpContext/feature.js.map +1 -1
  581. package/features/wcp/WcpContext/index.js +0 -2
  582. package/features/wcp/WcpContext/types.js +0 -3
  583. package/features/wcp/WcpContext/utils.js +35 -53
  584. package/features/wcp/WcpContext/utils.js.map +1 -1
  585. package/features/wcp/WcpFeature.js +7 -6
  586. package/features/wcp/WcpFeature.js.map +1 -1
  587. package/graphql/security/NotAuthorizedResponse.js +11 -14
  588. package/graphql/security/NotAuthorizedResponse.js.map +1 -1
  589. package/graphql/security/ProfileMapper.js +12 -11
  590. package/graphql/security/ProfileMapper.js.map +1 -1
  591. package/graphql/security/apiKey.gql.js +38 -47
  592. package/graphql/security/apiKey.gql.js.map +1 -1
  593. package/graphql/security/base.gql.js +11 -10
  594. package/graphql/security/base.gql.js.map +1 -1
  595. package/graphql/security/identity.gql.js +87 -97
  596. package/graphql/security/identity.gql.js.map +1 -1
  597. package/graphql/security/index.js +13 -8
  598. package/graphql/security/index.js.map +1 -1
  599. package/graphql/security/role.gql.js +49 -57
  600. package/graphql/security/role.gql.js.map +1 -1
  601. package/graphql/security/team.gql.js +61 -69
  602. package/graphql/security/team.gql.js.map +1 -1
  603. package/graphql/system/createSystemGraphQL.js +31 -34
  604. package/graphql/system/createSystemGraphQL.js.map +1 -1
  605. package/graphql/users/user.gql.js +87 -105
  606. package/graphql/users/user.gql.js.map +1 -1
  607. package/graphql/wcp/graphql.js +25 -28
  608. package/graphql/wcp/graphql.js.map +1 -1
  609. package/idp/JwksCache.js +22 -28
  610. package/idp/JwksCache.js.map +1 -1
  611. package/idp/JwtAuthenticator.js +34 -46
  612. package/idp/JwtAuthenticator.js.map +1 -1
  613. package/idp/OidcJwtIdentityProvider.js +55 -82
  614. package/idp/OidcJwtIdentityProvider.js.map +1 -1
  615. package/idp/abstractions.js +5 -14
  616. package/idp/abstractions.js.map +1 -1
  617. package/idp/feature.js +8 -7
  618. package/idp/feature.js.map +1 -1
  619. package/idp/index.js +1 -3
  620. package/idp/types.js +0 -3
  621. package/index.js +0 -2
  622. package/legacy/security/LegacyContext.js +133 -186
  623. package/legacy/security/LegacyContext.js.map +1 -1
  624. package/legacy/security/createSecurityContext.js +5 -9
  625. package/legacy/security/createSecurityContext.js.map +1 -1
  626. package/legacy/security/plugins/apiKeyAuthentication.js +15 -24
  627. package/legacy/security/plugins/apiKeyAuthentication.js.map +1 -1
  628. package/legacy/security/plugins/apiKeyAuthorization.js +9 -18
  629. package/legacy/security/plugins/apiKeyAuthorization.js.map +1 -1
  630. package/legacy/security/plugins/authenticateUsingCookie.js +18 -22
  631. package/legacy/security/plugins/authenticateUsingCookie.js.map +1 -1
  632. package/legacy/security/plugins/authenticateUsingHttpHeader.d.ts +1 -1
  633. package/legacy/security/plugins/authenticateUsingHttpHeader.js +15 -18
  634. package/legacy/security/plugins/authenticateUsingHttpHeader.js.map +1 -1
  635. package/legacy/security/plugins/secureHeaders.js +28 -21
  636. package/legacy/security/plugins/secureHeaders.js.map +1 -1
  637. package/legacy/tenancy/LegacyContext.js +45 -52
  638. package/legacy/tenancy/LegacyContext.js.map +1 -1
  639. package/legacy/tenancy/createTenancyContext.js +22 -42
  640. package/legacy/tenancy/createTenancyContext.js.map +1 -1
  641. package/legacy/users/LegacyContext.js +39 -54
  642. package/legacy/users/LegacyContext.js.map +1 -1
  643. package/legacy/users/createAdminUsersContext.js +7 -7
  644. package/legacy/users/createAdminUsersContext.js.map +1 -1
  645. package/legacy/wcp/LegacyWcpContext.js +80 -79
  646. package/legacy/wcp/LegacyWcpContext.js.map +1 -1
  647. package/legacy/wcp/context.d.ts +1 -3
  648. package/legacy/wcp/context.js +33 -37
  649. package/legacy/wcp/context.js.map +1 -1
  650. package/models/base/BaseModel.js +51 -56
  651. package/models/base/BaseModel.js.map +1 -1
  652. package/models/base/ModelBuilder.js +65 -78
  653. package/models/base/ModelBuilder.js.map +1 -1
  654. package/models/base/ModelFactory.js +0 -3
  655. package/models/base/__tests__/ModelBuilder.test.js +437 -454
  656. package/models/base/__tests__/ModelBuilder.test.js.map +1 -1
  657. package/models/base/abstractions.js +0 -3
  658. package/models/cms/FieldBuilder.js +112 -121
  659. package/models/cms/FieldBuilder.js.map +1 -1
  660. package/models/cms/FieldBuilderRegistry.js +13 -12
  661. package/models/cms/FieldBuilderRegistry.js.map +1 -1
  662. package/models/cms/FieldDefinitionsBuilder.js +37 -54
  663. package/models/cms/FieldDefinitionsBuilder.js.map +1 -1
  664. package/models/cms/PrivateCmsModelBuilder.js +84 -89
  665. package/models/cms/PrivateCmsModelBuilder.js.map +1 -1
  666. package/models/cms/PrivatePage/Page.fields.js +7 -6
  667. package/models/cms/PrivatePage/Page.fields.js.map +1 -1
  668. package/models/cms/PrivatePage/PageModelBuilder.js +18 -15
  669. package/models/cms/PrivatePage/PageModelBuilder.js.map +1 -1
  670. package/models/cms/PrivatePage/PageModelFactory.js +20 -25
  671. package/models/cms/PrivatePage/PageModelFactory.js.map +1 -1
  672. package/models/cms/PrivatePage/__tests__/PageModelFactory.test.js +218 -234
  673. package/models/cms/PrivatePage/__tests__/PageModelFactory.test.js.map +1 -1
  674. package/models/cms/PrivatePage/__tests__/PagePublishingDecorator.js +33 -36
  675. package/models/cms/PrivatePage/__tests__/PagePublishingDecorator.js.map +1 -1
  676. package/models/cms/PrivatePage/__tests__/PageSeoDecorator.js +25 -26
  677. package/models/cms/PrivatePage/__tests__/PageSeoDecorator.js.map +1 -1
  678. package/models/cms/PrivatePage/abstractions.js +3 -9
  679. package/models/cms/PrivatePage/abstractions.js.map +1 -1
  680. package/models/cms/__tests__/PrivateCmsModelBuilder.test.js +173 -185
  681. package/models/cms/__tests__/PrivateCmsModelBuilder.test.js.map +1 -1
  682. package/models/cms/abstractions.js +3 -20
  683. package/models/cms/abstractions.js.map +1 -1
  684. package/models/cms/types.js +0 -3
  685. package/models/simple/Page/PageModelBuilder.js +15 -14
  686. package/models/simple/Page/PageModelBuilder.js.map +1 -1
  687. package/models/simple/Page/PageModelFactory.js +16 -15
  688. package/models/simple/Page/PageModelFactory.js.map +1 -1
  689. package/models/simple/Page/__tests__/PageModelBuilderDecorator.js +21 -20
  690. package/models/simple/Page/__tests__/PageModelBuilderDecorator.js.map +1 -1
  691. package/models/simple/Page/__tests__/PageModelBuilderDecorator2.js +17 -16
  692. package/models/simple/Page/__tests__/PageModelBuilderDecorator2.js.map +1 -1
  693. package/models/simple/Page/__tests__/PageModelFactory.test.js +28 -28
  694. package/models/simple/Page/__tests__/PageModelFactory.test.js.map +1 -1
  695. package/models/simple/Page/abstractions.js +9 -8
  696. package/models/simple/Page/abstractions.js.map +1 -1
  697. package/package.json +21 -21
  698. package/types/core.js +0 -3
  699. package/types/security.js +0 -3
  700. package/types/tenancy.js +0 -3
  701. package/types/users.js +0 -3
  702. package/domain/tenancy/errors.js.map +0 -1
  703. package/exports/api/build-params.js.map +0 -1
  704. package/exports/api/event-publisher.js.map +0 -1
  705. package/exports/api/graphql.js.map +0 -1
  706. package/exports/api/key-value-store.js.map +0 -1
  707. package/exports/api/logger.js.map +0 -1
  708. package/exports/api/security/api-key.js.map +0 -1
  709. package/exports/api/security/authentication.js.map +0 -1
  710. package/exports/api/security/role.js.map +0 -1
  711. package/exports/api/security/user.js.map +0 -1
  712. package/exports/api/security.js.map +0 -1
  713. package/exports/api/system.js.map +0 -1
  714. package/exports/api/tasks.js.map +0 -1
  715. package/exports/api/tenancy.js.map +0 -1
  716. package/exports/api.js.map +0 -1
  717. package/features/ai/index.js.map +0 -1
  718. package/features/buildParams/index.js.map +0 -1
  719. package/features/encryption/index.js.map +0 -1
  720. package/features/eventPublisher/index.js.map +0 -1
  721. package/features/keyValueStore/index.js.map +0 -1
  722. package/features/logger/index.js.map +0 -1
  723. package/features/masker/index.js.map +0 -1
  724. package/features/security/IdentityContext/index.js.map +0 -1
  725. package/features/security/apiKeys/CreateApiKey/index.js.map +0 -1
  726. package/features/security/apiKeys/DeleteApiKey/index.js.map +0 -1
  727. package/features/security/apiKeys/GetApiKey/index.js.map +0 -1
  728. package/features/security/apiKeys/GetApiKeyBySlug/index.js.map +0 -1
  729. package/features/security/apiKeys/GetApiKeyByToken/index.js.map +0 -1
  730. package/features/security/apiKeys/ListApiKeys/index.js.map +0 -1
  731. package/features/security/apiKeys/UpdateApiKey/index.js.map +0 -1
  732. package/features/security/apiKeys/shared/types.js.map +0 -1
  733. package/features/security/authentication/AuthenticationContext/index.js.map +0 -1
  734. package/features/security/authentication/Authenticator/index.js.map +0 -1
  735. package/features/security/authorization/AuthorizationContext/index.js.map +0 -1
  736. package/features/security/authorization/Authorizer/index.js.map +0 -1
  737. package/features/security/login/index.js.map +0 -1
  738. package/features/security/permissions/index.js.map +0 -1
  739. package/features/security/permissions/types.js.map +0 -1
  740. package/features/security/roles/CreateRole/index.js.map +0 -1
  741. package/features/security/roles/DeleteRole/index.js.map +0 -1
  742. package/features/security/roles/GetRole/index.js.map +0 -1
  743. package/features/security/roles/ListRoles/index.js.map +0 -1
  744. package/features/security/roles/UpdateRole/index.js.map +0 -1
  745. package/features/security/roles/shared/types.js.map +0 -1
  746. package/features/security/shared/index.js.map +0 -1
  747. package/features/security/teams/CreateTeam/index.js.map +0 -1
  748. package/features/security/teams/DeleteTeam/index.js.map +0 -1
  749. package/features/security/teams/GetTeam/index.js.map +0 -1
  750. package/features/security/teams/ListTeams/index.js.map +0 -1
  751. package/features/security/teams/UpdateTeam/index.js.map +0 -1
  752. package/features/security/teams/shared/types.js.map +0 -1
  753. package/features/system/InstallSystem/index.js.map +0 -1
  754. package/features/task/TaskController/index.js.map +0 -1
  755. package/features/task/TaskDefinition/index.js.map +0 -1
  756. package/features/task/TaskService/index.js.map +0 -1
  757. package/features/tenancy/CreateTenant/index.js.map +0 -1
  758. package/features/tenancy/DeleteTenant/index.js.map +0 -1
  759. package/features/tenancy/GetRootTenant/index.js.map +0 -1
  760. package/features/tenancy/GetTenantById/index.js.map +0 -1
  761. package/features/tenancy/InstallTenant/index.js.map +0 -1
  762. package/features/tenancy/ListTenants/index.js.map +0 -1
  763. package/features/tenancy/TenantContext/index.js.map +0 -1
  764. package/features/tenancy/UpdateTenant/index.js.map +0 -1
  765. package/features/users/CreateUser/index.js.map +0 -1
  766. package/features/users/DeleteUser/index.js.map +0 -1
  767. package/features/users/ExternalIdpUserSync/index.js.map +0 -1
  768. package/features/users/GetIdentityProfile/index.js.map +0 -1
  769. package/features/users/GetIdentityProfile/types.js.map +0 -1
  770. package/features/users/GetUser/index.js.map +0 -1
  771. package/features/users/ListUserTeams/index.js.map +0 -1
  772. package/features/users/ListUsers/index.js.map +0 -1
  773. package/features/users/UpdateUser/index.js.map +0 -1
  774. package/features/users/shared/types.js.map +0 -1
  775. package/features/wcp/WcpContext/index.js.map +0 -1
  776. package/features/wcp/WcpContext/types.js.map +0 -1
  777. package/idp/index.js.map +0 -1
  778. package/idp/types.js.map +0 -1
  779. package/index.js.map +0 -1
  780. package/models/base/ModelFactory.js.map +0 -1
  781. package/models/base/abstractions.js.map +0 -1
  782. package/models/cms/types.js.map +0 -1
  783. package/types/core.js.map +0 -1
  784. package/types/security.js.map +0 -1
  785. package/types/tenancy.js.map +0 -1
  786. package/types/users.js.map +0 -1
@@ -1,51 +1,51 @@
1
1
  import { createImplementation } from "@webiny/feature/api";
2
2
  import { TenantContext } from "../../../tenancy/TenantContext/index.js";
3
- import { ApiKeyFactory } from "./abstractions.js";
4
- import { ApiKeyProvider as ProviderAbstraction } from "./abstractions.js";
3
+ import { ApiKeyFactory, ApiKeyProvider } from "./abstractions.js";
5
4
  import { SystemIdentityValue } from "../../../../domain/identity/SystemIdentityValue.js";
6
5
  class ApiKeyProviderImpl {
7
- constructor(tenantContext, apiKeyFactories) {
8
- this.tenantContext = tenantContext;
9
- this.apiKeyFactories = apiKeyFactories;
10
- }
11
- async getByToken(token) {
12
- const cache = await this.getCache();
13
-
14
- // Search for the API key by token in the cached array
15
- const apiKey = cache.find(key => key.token === token);
16
- return apiKey || null;
17
- }
18
- async getBySlug(slug) {
19
- const cache = await this.getCache();
20
-
21
- // Search for the API key by token in the cached array
22
- const apiKey = cache.find(key => key.slug === slug);
23
- return apiKey || null;
24
- }
25
- async getCache() {
26
- if (this.cache === undefined) {
27
- const results = await Promise.all(this.apiKeyFactories.map(factory => factory.execute()));
28
- this.cache = results.flat().map(codeKey => {
29
- return {
30
- ...codeKey,
31
- id: codeKey.slug,
32
- slug: codeKey.slug,
33
- description: "",
34
- tenant: this.tenantContext.getTenant().id,
35
- createdOn: new Date().toISOString(),
36
- createdBy: SystemIdentityValue.create()
37
- };
38
- });
6
+ constructor(tenantContext, apiKeyFactories){
7
+ this.tenantContext = tenantContext;
8
+ this.apiKeyFactories = apiKeyFactories;
9
+ }
10
+ async getByToken(token) {
11
+ const cache = await this.getCache();
12
+ const apiKey = cache.find((key)=>key.token === token);
13
+ return apiKey || null;
14
+ }
15
+ async getBySlug(slug) {
16
+ const cache = await this.getCache();
17
+ const apiKey = cache.find((key)=>key.slug === slug);
18
+ return apiKey || null;
19
+ }
20
+ async getCache() {
21
+ if (void 0 === this.cache) {
22
+ const results = await Promise.all(this.apiKeyFactories.map((factory)=>factory.execute()));
23
+ this.cache = results.flat().map((codeKey)=>({
24
+ ...codeKey,
25
+ id: codeKey.slug,
26
+ slug: codeKey.slug,
27
+ description: "",
28
+ tenant: this.tenantContext.getTenant().id,
29
+ createdOn: new Date().toISOString(),
30
+ createdBy: SystemIdentityValue.create()
31
+ }));
32
+ }
33
+ return this.cache;
39
34
  }
40
- return this.cache;
41
- }
42
35
  }
43
- export const ApiKeyProvider = createImplementation({
44
- abstraction: ProviderAbstraction,
45
- implementation: ApiKeyProviderImpl,
46
- dependencies: [TenantContext, [ApiKeyFactory, {
47
- multiple: true
48
- }]]
36
+ const ApiKeyProvider_ApiKeyProvider = createImplementation({
37
+ abstraction: ApiKeyProvider,
38
+ implementation: ApiKeyProviderImpl,
39
+ dependencies: [
40
+ TenantContext,
41
+ [
42
+ ApiKeyFactory,
43
+ {
44
+ multiple: true
45
+ }
46
+ ]
47
+ ]
49
48
  });
49
+ export { ApiKeyProvider_ApiKeyProvider as ApiKeyProvider };
50
50
 
51
51
  //# sourceMappingURL=ApiKeyProvider.js.map
@@ -1 +1 @@
1
- {"version":3,"names":["createImplementation","TenantContext","ApiKeyFactory","ApiKeyProvider","ProviderAbstraction","SystemIdentityValue","ApiKeyProviderImpl","constructor","tenantContext","apiKeyFactories","getByToken","token","cache","getCache","apiKey","find","key","getBySlug","slug","undefined","results","Promise","all","map","factory","execute","flat","codeKey","id","description","tenant","getTenant","createdOn","Date","toISOString","createdBy","create","abstraction","implementation","dependencies","multiple"],"sources":["ApiKeyProvider.ts"],"sourcesContent":["import { createImplementation } from \"@webiny/feature/api\";\nimport { TenantContext } from \"~/features/tenancy/TenantContext/index.js\";\nimport { ApiKeyFactory } from \"./abstractions.js\";\nimport { ApiKeyProvider as ProviderAbstraction } from \"./abstractions.js\";\nimport type { ApiKey } from \"./types.js\";\nimport { SystemIdentityValue } from \"~/domain/identity/SystemIdentityValue.js\";\n\nclass ApiKeyProviderImpl implements ProviderAbstraction.Interface {\n private cache: ApiKey[] | undefined;\n\n constructor(\n private tenantContext: TenantContext.Interface,\n private apiKeyFactories: ApiKeyFactory.Interface[]\n ) {}\n\n async getByToken(token: string): Promise<ApiKey | null> {\n const cache = await this.getCache();\n\n // Search for the API key by token in the cached array\n const apiKey = cache.find(key => key.token === token);\n return apiKey || null;\n }\n\n async getBySlug(slug: string): Promise<ApiKey | null> {\n const cache = await this.getCache();\n\n // Search for the API key by token in the cached array\n const apiKey = cache.find(key => key.slug === slug);\n return apiKey || null;\n }\n\n private async getCache(): Promise<ApiKey[]> {\n if (this.cache === undefined) {\n const results = await Promise.all(\n this.apiKeyFactories.map(factory => factory.execute())\n );\n this.cache = results.flat().map<ApiKey>(codeKey => {\n return {\n ...codeKey,\n id: codeKey.slug,\n slug: codeKey.slug,\n description: \"\",\n tenant: this.tenantContext.getTenant().id,\n createdOn: new Date().toISOString(),\n createdBy: SystemIdentityValue.create()\n };\n });\n }\n\n return this.cache;\n }\n}\n\nexport const ApiKeyProvider = createImplementation({\n abstraction: ProviderAbstraction,\n implementation: ApiKeyProviderImpl,\n dependencies: [TenantContext, [ApiKeyFactory, { multiple: true }]]\n});\n"],"mappings":"AAAA,SAASA,oBAAoB,QAAQ,qBAAqB;AAC1D,SAASC,aAAa;AACtB,SAASC,aAAa;AACtB,SAASC,cAAc,IAAIC,mBAAmB;AAE9C,SAASC,mBAAmB;AAE5B,MAAMC,kBAAkB,CAA0C;EAG9DC,WAAWA,CACCC,aAAsC,EACtCC,eAA0C,EACpD;IAAA,KAFUD,aAAsC,GAAtCA,aAAsC;IAAA,KACtCC,eAA0C,GAA1CA,eAA0C;EACnD;EAEH,MAAMC,UAAUA,CAACC,KAAa,EAA0B;IACpD,MAAMC,KAAK,GAAG,MAAM,IAAI,CAACC,QAAQ,CAAC,CAAC;;IAEnC;IACA,MAAMC,MAAM,GAAGF,KAAK,CAACG,IAAI,CAACC,GAAG,IAAIA,GAAG,CAACL,KAAK,KAAKA,KAAK,CAAC;IACrD,OAAOG,MAAM,IAAI,IAAI;EACzB;EAEA,MAAMG,SAASA,CAACC,IAAY,EAA0B;IAClD,MAAMN,KAAK,GAAG,MAAM,IAAI,CAACC,QAAQ,CAAC,CAAC;;IAEnC;IACA,MAAMC,MAAM,GAAGF,KAAK,CAACG,IAAI,CAACC,GAAG,IAAIA,GAAG,CAACE,IAAI,KAAKA,IAAI,CAAC;IACnD,OAAOJ,MAAM,IAAI,IAAI;EACzB;EAEA,MAAcD,QAAQA,CAAA,EAAsB;IACxC,IAAI,IAAI,CAACD,KAAK,KAAKO,SAAS,EAAE;MAC1B,MAAMC,OAAO,GAAG,MAAMC,OAAO,CAACC,GAAG,CAC7B,IAAI,CAACb,eAAe,CAACc,GAAG,CAACC,OAAO,IAAIA,OAAO,CAACC,OAAO,CAAC,CAAC,CACzD,CAAC;MACD,IAAI,CAACb,KAAK,GAAGQ,OAAO,CAACM,IAAI,CAAC,CAAC,CAACH,GAAG,CAASI,OAAO,IAAI;QAC/C,OAAO;UACH,GAAGA,OAAO;UACVC,EAAE,EAAED,OAAO,CAACT,IAAI;UAChBA,IAAI,EAAES,OAAO,CAACT,IAAI;UAClBW,WAAW,EAAE,EAAE;UACfC,MAAM,EAAE,IAAI,CAACtB,aAAa,CAACuB,SAAS,CAAC,CAAC,CAACH,EAAE;UACzCI,SAAS,EAAE,IAAIC,IAAI,CAAC,CAAC,CAACC,WAAW,CAAC,CAAC;UACnCC,SAAS,EAAE9B,mBAAmB,CAAC+B,MAAM,CAAC;QAC1C,CAAC;MACL,CAAC,CAAC;IACN;IAEA,OAAO,IAAI,CAACxB,KAAK;EACrB;AACJ;AAEA,OAAO,MAAMT,cAAc,GAAGH,oBAAoB,CAAC;EAC/CqC,WAAW,EAAEjC,mBAAmB;EAChCkC,cAAc,EAAEhC,kBAAkB;EAClCiC,YAAY,EAAE,CAACtC,aAAa,EAAE,CAACC,aAAa,EAAE;IAAEsC,QAAQ,EAAE;EAAK,CAAC,CAAC;AACrE,CAAC,CAAC","ignoreList":[]}
1
+ {"version":3,"file":"features/security/apiKeys/shared/ApiKeyProvider.js","sources":["../../../../../src/features/security/apiKeys/shared/ApiKeyProvider.ts"],"sourcesContent":["import { createImplementation } from \"@webiny/feature/api\";\nimport { TenantContext } from \"~/features/tenancy/TenantContext/index.js\";\nimport { ApiKeyFactory } from \"./abstractions.js\";\nimport { ApiKeyProvider as ProviderAbstraction } from \"./abstractions.js\";\nimport type { ApiKey } from \"./types.js\";\nimport { SystemIdentityValue } from \"~/domain/identity/SystemIdentityValue.js\";\n\nclass ApiKeyProviderImpl implements ProviderAbstraction.Interface {\n private cache: ApiKey[] | undefined;\n\n constructor(\n private tenantContext: TenantContext.Interface,\n private apiKeyFactories: ApiKeyFactory.Interface[]\n ) {}\n\n async getByToken(token: string): Promise<ApiKey | null> {\n const cache = await this.getCache();\n\n // Search for the API key by token in the cached array\n const apiKey = cache.find(key => key.token === token);\n return apiKey || null;\n }\n\n async getBySlug(slug: string): Promise<ApiKey | null> {\n const cache = await this.getCache();\n\n // Search for the API key by token in the cached array\n const apiKey = cache.find(key => key.slug === slug);\n return apiKey || null;\n }\n\n private async getCache(): Promise<ApiKey[]> {\n if (this.cache === undefined) {\n const results = await Promise.all(\n this.apiKeyFactories.map(factory => factory.execute())\n );\n this.cache = results.flat().map<ApiKey>(codeKey => {\n return {\n ...codeKey,\n id: codeKey.slug,\n slug: codeKey.slug,\n description: \"\",\n tenant: this.tenantContext.getTenant().id,\n createdOn: new Date().toISOString(),\n createdBy: SystemIdentityValue.create()\n };\n });\n }\n\n return this.cache;\n }\n}\n\nexport const ApiKeyProvider = createImplementation({\n abstraction: ProviderAbstraction,\n implementation: ApiKeyProviderImpl,\n dependencies: [TenantContext, [ApiKeyFactory, { multiple: true }]]\n});\n"],"names":["ApiKeyProviderImpl","tenantContext","apiKeyFactories","token","cache","apiKey","key","slug","undefined","results","Promise","factory","codeKey","Date","SystemIdentityValue","ApiKeyProvider","createImplementation","ProviderAbstraction","TenantContext","ApiKeyFactory"],"mappings":";;;;AAOA,MAAMA;IAGF,YACYC,aAAsC,EACtCC,eAA0C,CACpD;aAFUD,aAAa,GAAbA;aACAC,eAAe,GAAfA;IACT;IAEH,MAAM,WAAWC,KAAa,EAA0B;QACpD,MAAMC,QAAQ,MAAM,IAAI,CAAC,QAAQ;QAGjC,MAAMC,SAASD,MAAM,IAAI,CAACE,CAAAA,MAAOA,IAAI,KAAK,KAAKH;QAC/C,OAAOE,UAAU;IACrB;IAEA,MAAM,UAAUE,IAAY,EAA0B;QAClD,MAAMH,QAAQ,MAAM,IAAI,CAAC,QAAQ;QAGjC,MAAMC,SAASD,MAAM,IAAI,CAACE,CAAAA,MAAOA,IAAI,IAAI,KAAKC;QAC9C,OAAOF,UAAU;IACrB;IAEA,MAAc,WAA8B;QACxC,IAAI,AAAeG,WAAf,IAAI,CAAC,KAAK,EAAgB;YAC1B,MAAMC,UAAU,MAAMC,QAAQ,GAAG,CAC7B,IAAI,CAAC,eAAe,CAAC,GAAG,CAACC,CAAAA,UAAWA,QAAQ,OAAO;YAEvD,IAAI,CAAC,KAAK,GAAGF,QAAQ,IAAI,GAAG,GAAG,CAASG,CAAAA,UAC7B;oBACH,GAAGA,OAAO;oBACV,IAAIA,QAAQ,IAAI;oBAChB,MAAMA,QAAQ,IAAI;oBAClB,aAAa;oBACb,QAAQ,IAAI,CAAC,aAAa,CAAC,SAAS,GAAG,EAAE;oBACzC,WAAW,IAAIC,OAAO,WAAW;oBACjC,WAAWC,oBAAoB,MAAM;gBACzC;QAER;QAEA,OAAO,IAAI,CAAC,KAAK;IACrB;AACJ;AAEO,MAAMC,gCAAiBC,qBAAqB;IAC/C,aAAaC;IACb,gBAAgBjB;IAChB,cAAc;QAACkB;QAAe;YAACC;YAAe;gBAAE,UAAU;YAAK;SAAE;KAAC;AACtE"}
@@ -1,153 +1,126 @@
1
- import { createImplementation } from "@webiny/feature/api";
2
- import { Result } from "@webiny/feature/api";
3
- import { ApiKeysRepository as RepositoryAbstraction } from "./abstractions.js";
4
- import { ApiKeyProvider } from "./abstractions.js";
1
+ import { Result, createImplementation } from "@webiny/feature/api";
2
+ import { ApiKeyProvider, ApiKeysRepository } from "./abstractions.js";
5
3
  import { SecurityStorageOperations } from "../../shared/abstractions.js";
6
4
  import { TenantContext } from "../../../tenancy/TenantContext/index.js";
7
5
  import { ApiKeyNotFoundError, ApiKeyPersistenceError, ApiKeyValidationError } from "./errors.js";
8
-
9
- // TODO: create an ApiKeyMapper
10
-
11
6
  class ApiKeysRepositoryImpl {
12
- constructor(tenantContext, storageOperations, apiKeyProvider) {
13
- this.tenantContext = tenantContext;
14
- this.storageOperations = storageOperations;
15
- this.apiKeyProvider = apiKeyProvider;
16
- }
17
- async get(id) {
18
- try {
19
- const tenant = this.tenantContext.getTenant();
20
- const apiKey = await this.storageOperations.getApiKey({
21
- id,
22
- tenant: tenant.id
23
- });
24
- if (apiKey) {
25
- return Result.ok(apiKey);
26
- }
27
- return Result.fail(new ApiKeyNotFoundError());
28
- } catch (error) {
29
- return Result.fail(error);
7
+ constructor(tenantContext, storageOperations, apiKeyProvider){
8
+ this.tenantContext = tenantContext;
9
+ this.storageOperations = storageOperations;
10
+ this.apiKeyProvider = apiKeyProvider;
30
11
  }
31
- }
32
- async getByToken(token) {
33
- try {
34
- // First, check the database (database keys have priority over factory keys)
35
- const tenant = this.tenantContext.getTenant();
36
- const apiKey = await this.storageOperations.getApiKeyByToken({
37
- token,
38
- tenant: tenant.id
39
- });
40
- if (apiKey) {
41
- return Result.ok(apiKey);
42
- }
43
-
44
- // If not found in database, check if the API key is provided by a factory
45
- const factoryApiKey = await this.apiKeyProvider.getByToken(token);
46
- if (factoryApiKey) {
47
- return Result.ok(factoryApiKey);
48
- }
49
- return Result.fail(new ApiKeyNotFoundError());
50
- } catch (error) {
51
- return Result.fail(new ApiKeyPersistenceError(error));
12
+ async get(id) {
13
+ try {
14
+ const tenant = this.tenantContext.getTenant();
15
+ const apiKey = await this.storageOperations.getApiKey({
16
+ id,
17
+ tenant: tenant.id
18
+ });
19
+ if (apiKey) return Result.ok(apiKey);
20
+ return Result.fail(new ApiKeyNotFoundError());
21
+ } catch (error) {
22
+ return Result.fail(error);
23
+ }
52
24
  }
53
- }
54
- async getBySlug(slug) {
55
- try {
56
- // First, check the database (database keys have priority over factory keys)
57
- const tenant = this.tenantContext.getTenant();
58
- const apiKey = await this.storageOperations.getApiKeyBySlug({
59
- slug,
60
- tenant: tenant.id
61
- });
62
- if (apiKey) {
63
- return Result.ok(apiKey);
64
- }
65
-
66
- // If not found in database, check if the API key is provided by a factory
67
- const factoryApiKey = await this.apiKeyProvider.getBySlug(slug);
68
- if (factoryApiKey) {
69
- return Result.ok(factoryApiKey);
70
- }
71
- return Result.fail(new ApiKeyNotFoundError());
72
- } catch (error) {
73
- return Result.fail(new ApiKeyPersistenceError(error));
25
+ async getByToken(token) {
26
+ try {
27
+ const tenant = this.tenantContext.getTenant();
28
+ const apiKey = await this.storageOperations.getApiKeyByToken({
29
+ token,
30
+ tenant: tenant.id
31
+ });
32
+ if (apiKey) return Result.ok(apiKey);
33
+ const factoryApiKey = await this.apiKeyProvider.getByToken(token);
34
+ if (factoryApiKey) return Result.ok(factoryApiKey);
35
+ return Result.fail(new ApiKeyNotFoundError());
36
+ } catch (error) {
37
+ return Result.fail(new ApiKeyPersistenceError(error));
38
+ }
74
39
  }
75
- }
76
- async list(params) {
77
- try {
78
- const tenant = this.tenantContext.getTenant();
79
- const result = await this.storageOperations.listApiKeys({
80
- where: {
81
- tenant: tenant.id
82
- },
83
- ...params
84
- });
85
- return Result.ok(result);
86
- } catch (error) {
87
- return Result.fail(new ApiKeyPersistenceError(error));
40
+ async getBySlug(slug) {
41
+ try {
42
+ const tenant = this.tenantContext.getTenant();
43
+ const apiKey = await this.storageOperations.getApiKeyBySlug({
44
+ slug,
45
+ tenant: tenant.id
46
+ });
47
+ if (apiKey) return Result.ok(apiKey);
48
+ const factoryApiKey = await this.apiKeyProvider.getBySlug(slug);
49
+ if (factoryApiKey) return Result.ok(factoryApiKey);
50
+ return Result.fail(new ApiKeyNotFoundError());
51
+ } catch (error) {
52
+ return Result.fail(new ApiKeyPersistenceError(error));
53
+ }
88
54
  }
89
- }
90
- async create(apiKey) {
91
- try {
92
- // Check if an API key with the same slug already exists
93
- const existingKeyResult = await this.getBySlug(apiKey.slug);
94
-
95
- // If we found a key, it's a duplicate slug - return validation error
96
- if (existingKeyResult.isOk()) {
97
- return Result.fail(new ApiKeyValidationError(`API key with slug "${apiKey.slug}" already exists.`));
98
- }
99
-
100
- // "NotFound" error is ok. Everything else is not ok.
101
- if (existingKeyResult.error.code !== "ApiKey/NotFound") {
102
- return Result.fail(existingKeyResult.error);
103
- }
104
-
105
- // Slug is unique, proceed with creation
106
- const tenant = this.tenantContext.getTenant();
107
- await this.storageOperations.createApiKey({
108
- apiKey: {
109
- ...apiKey,
110
- tenant: tenant.id
55
+ async list(params) {
56
+ try {
57
+ const tenant = this.tenantContext.getTenant();
58
+ const result = await this.storageOperations.listApiKeys({
59
+ where: {
60
+ tenant: tenant.id
61
+ },
62
+ ...params
63
+ });
64
+ return Result.ok(result);
65
+ } catch (error) {
66
+ return Result.fail(new ApiKeyPersistenceError(error));
67
+ }
68
+ }
69
+ async create(apiKey) {
70
+ try {
71
+ const existingKeyResult = await this.getBySlug(apiKey.slug);
72
+ if (existingKeyResult.isOk()) return Result.fail(new ApiKeyValidationError(`API key with slug "${apiKey.slug}" already exists.`));
73
+ if ("ApiKey/NotFound" !== existingKeyResult.error.code) return Result.fail(existingKeyResult.error);
74
+ const tenant = this.tenantContext.getTenant();
75
+ await this.storageOperations.createApiKey({
76
+ apiKey: {
77
+ ...apiKey,
78
+ tenant: tenant.id
79
+ }
80
+ });
81
+ return Result.ok();
82
+ } catch (error) {
83
+ return Result.fail(new ApiKeyPersistenceError(error));
111
84
  }
112
- });
113
- return Result.ok();
114
- } catch (error) {
115
- return Result.fail(new ApiKeyPersistenceError(error));
116
85
  }
117
- }
118
- async update(apiKey) {
119
- try {
120
- const tenant = this.tenantContext.getTenant();
121
- await this.storageOperations.updateApiKey({
122
- apiKey: {
123
- ...apiKey,
124
- tenant: tenant.id
86
+ async update(apiKey) {
87
+ try {
88
+ const tenant = this.tenantContext.getTenant();
89
+ await this.storageOperations.updateApiKey({
90
+ apiKey: {
91
+ ...apiKey,
92
+ tenant: tenant.id
93
+ }
94
+ });
95
+ return Result.ok();
96
+ } catch (error) {
97
+ return Result.fail(new ApiKeyPersistenceError(error));
125
98
  }
126
- });
127
- return Result.ok();
128
- } catch (error) {
129
- return Result.fail(new ApiKeyPersistenceError(error));
130
99
  }
131
- }
132
- async delete(apiKey) {
133
- try {
134
- const tenant = this.tenantContext.getTenant();
135
- await this.storageOperations.deleteApiKey({
136
- apiKey: {
137
- ...apiKey,
138
- tenant: tenant.id
100
+ async delete(apiKey) {
101
+ try {
102
+ const tenant = this.tenantContext.getTenant();
103
+ await this.storageOperations.deleteApiKey({
104
+ apiKey: {
105
+ ...apiKey,
106
+ tenant: tenant.id
107
+ }
108
+ });
109
+ return Result.ok();
110
+ } catch (error) {
111
+ return Result.fail(new ApiKeyPersistenceError(error));
139
112
  }
140
- });
141
- return Result.ok();
142
- } catch (error) {
143
- return Result.fail(new ApiKeyPersistenceError(error));
144
113
  }
145
- }
146
114
  }
147
- export const ApiKeysRepository = createImplementation({
148
- abstraction: RepositoryAbstraction,
149
- implementation: ApiKeysRepositoryImpl,
150
- dependencies: [TenantContext, SecurityStorageOperations, ApiKeyProvider]
115
+ const ApiKeysRepository_ApiKeysRepository = createImplementation({
116
+ abstraction: ApiKeysRepository,
117
+ implementation: ApiKeysRepositoryImpl,
118
+ dependencies: [
119
+ TenantContext,
120
+ SecurityStorageOperations,
121
+ ApiKeyProvider
122
+ ]
151
123
  });
124
+ export { ApiKeysRepository_ApiKeysRepository as ApiKeysRepository };
152
125
 
153
126
  //# sourceMappingURL=ApiKeysRepository.js.map
@@ -1 +1 @@
1
- {"version":3,"names":["createImplementation","Result","ApiKeysRepository","RepositoryAbstraction","ApiKeyProvider","SecurityStorageOperations","TenantContext","ApiKeyNotFoundError","ApiKeyPersistenceError","ApiKeyValidationError","ApiKeysRepositoryImpl","constructor","tenantContext","storageOperations","apiKeyProvider","get","id","tenant","getTenant","apiKey","getApiKey","ok","fail","error","getByToken","token","getApiKeyByToken","factoryApiKey","getBySlug","slug","getApiKeyBySlug","list","params","result","listApiKeys","where","create","existingKeyResult","isOk","code","createApiKey","update","updateApiKey","delete","deleteApiKey","abstraction","implementation","dependencies"],"sources":["ApiKeysRepository.ts"],"sourcesContent":["import { createImplementation } from \"@webiny/feature/api\";\nimport { Result } from \"@webiny/feature/api\";\nimport { ApiKeysRepository as RepositoryAbstraction } from \"./abstractions.js\";\nimport { ApiKeyProvider } from \"./abstractions.js\";\nimport type { ApiKey, ListApiKeysInput } from \"./types.js\";\nimport { SecurityStorageOperations } from \"~/features/security/shared/abstractions.js\";\nimport { TenantContext } from \"~/features/tenancy/TenantContext/index.js\";\nimport { ApiKeyNotFoundError, ApiKeyPersistenceError, ApiKeyValidationError } from \"./errors.js\";\n\n// TODO: create an ApiKeyMapper\n\nclass ApiKeysRepositoryImpl implements RepositoryAbstraction.Interface {\n constructor(\n private tenantContext: TenantContext.Interface,\n private storageOperations: SecurityStorageOperations.Interface,\n private apiKeyProvider: ApiKeyProvider.Interface\n ) {}\n\n async get(id: string): Promise<Result<ApiKey, RepositoryAbstraction.Error>> {\n try {\n const tenant = this.tenantContext.getTenant();\n const apiKey = await this.storageOperations.getApiKey({ id, tenant: tenant.id });\n if (apiKey) {\n return Result.ok(apiKey);\n }\n\n return Result.fail(new ApiKeyNotFoundError());\n } catch (error) {\n return Result.fail(error);\n }\n }\n\n async getByToken(token: string): Promise<Result<ApiKey, RepositoryAbstraction.Error>> {\n try {\n // First, check the database (database keys have priority over factory keys)\n const tenant = this.tenantContext.getTenant();\n const apiKey = await this.storageOperations.getApiKeyByToken({\n token,\n tenant: tenant.id\n });\n\n if (apiKey) {\n return Result.ok(apiKey);\n }\n\n // If not found in database, check if the API key is provided by a factory\n const factoryApiKey = await this.apiKeyProvider.getByToken(token);\n if (factoryApiKey) {\n return Result.ok(factoryApiKey);\n }\n\n return Result.fail(new ApiKeyNotFoundError());\n } catch (error) {\n return Result.fail(new ApiKeyPersistenceError(error));\n }\n }\n\n async getBySlug(slug: string): Promise<Result<ApiKey, RepositoryAbstraction.Error>> {\n try {\n // First, check the database (database keys have priority over factory keys)\n const tenant = this.tenantContext.getTenant();\n const apiKey = await this.storageOperations.getApiKeyBySlug({\n slug,\n tenant: tenant.id\n });\n\n if (apiKey) {\n return Result.ok(apiKey);\n }\n\n // If not found in database, check if the API key is provided by a factory\n const factoryApiKey = await this.apiKeyProvider.getBySlug(slug);\n if (factoryApiKey) {\n return Result.ok(factoryApiKey);\n }\n\n return Result.fail(new ApiKeyNotFoundError());\n } catch (error) {\n return Result.fail(new ApiKeyPersistenceError(error));\n }\n }\n\n async list(params: ListApiKeysInput): Promise<Result<ApiKey[], RepositoryAbstraction.Error>> {\n try {\n const tenant = this.tenantContext.getTenant();\n const result = await this.storageOperations.listApiKeys({\n where: { tenant: tenant.id },\n ...params\n });\n return Result.ok(result);\n } catch (error) {\n return Result.fail(new ApiKeyPersistenceError(error));\n }\n }\n\n async create(apiKey: ApiKey): Promise<Result<void, RepositoryAbstraction.Error>> {\n try {\n // Check if an API key with the same slug already exists\n const existingKeyResult = await this.getBySlug(apiKey.slug);\n\n // If we found a key, it's a duplicate slug - return validation error\n if (existingKeyResult.isOk()) {\n return Result.fail(\n new ApiKeyValidationError(`API key with slug \"${apiKey.slug}\" already exists.`)\n );\n }\n\n // \"NotFound\" error is ok. Everything else is not ok.\n if (existingKeyResult.error.code !== \"ApiKey/NotFound\") {\n return Result.fail(existingKeyResult.error);\n }\n\n // Slug is unique, proceed with creation\n const tenant = this.tenantContext.getTenant();\n await this.storageOperations.createApiKey({ apiKey: { ...apiKey, tenant: tenant.id } });\n return Result.ok();\n } catch (error) {\n return Result.fail(new ApiKeyPersistenceError(error));\n }\n }\n\n async update(apiKey: ApiKey): Promise<Result<void, RepositoryAbstraction.Error>> {\n try {\n const tenant = this.tenantContext.getTenant();\n await this.storageOperations.updateApiKey({ apiKey: { ...apiKey, tenant: tenant.id } });\n\n return Result.ok();\n } catch (error) {\n return Result.fail(new ApiKeyPersistenceError(error));\n }\n }\n\n async delete(apiKey: ApiKey): Promise<Result<void, RepositoryAbstraction.Error>> {\n try {\n const tenant = this.tenantContext.getTenant();\n await this.storageOperations.deleteApiKey({ apiKey: { ...apiKey, tenant: tenant.id } });\n\n return Result.ok();\n } catch (error) {\n return Result.fail(new ApiKeyPersistenceError(error));\n }\n }\n}\n\nexport const ApiKeysRepository = createImplementation({\n abstraction: RepositoryAbstraction,\n implementation: ApiKeysRepositoryImpl,\n dependencies: [TenantContext, SecurityStorageOperations, ApiKeyProvider]\n});\n"],"mappings":"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","ignoreList":[]}
1
+ {"version":3,"file":"features/security/apiKeys/shared/ApiKeysRepository.js","sources":["../../../../../src/features/security/apiKeys/shared/ApiKeysRepository.ts"],"sourcesContent":["import { createImplementation } from \"@webiny/feature/api\";\nimport { Result } from \"@webiny/feature/api\";\nimport { ApiKeysRepository as RepositoryAbstraction } from \"./abstractions.js\";\nimport { ApiKeyProvider } from \"./abstractions.js\";\nimport type { ApiKey, ListApiKeysInput } from \"./types.js\";\nimport { SecurityStorageOperations } from \"~/features/security/shared/abstractions.js\";\nimport { TenantContext } from \"~/features/tenancy/TenantContext/index.js\";\nimport { ApiKeyNotFoundError, ApiKeyPersistenceError, ApiKeyValidationError } from \"./errors.js\";\n\n// TODO: create an ApiKeyMapper\n\nclass ApiKeysRepositoryImpl implements RepositoryAbstraction.Interface {\n constructor(\n private tenantContext: TenantContext.Interface,\n private storageOperations: SecurityStorageOperations.Interface,\n private apiKeyProvider: ApiKeyProvider.Interface\n ) {}\n\n async get(id: string): Promise<Result<ApiKey, RepositoryAbstraction.Error>> {\n try {\n const tenant = this.tenantContext.getTenant();\n const apiKey = await this.storageOperations.getApiKey({ id, tenant: tenant.id });\n if (apiKey) {\n return Result.ok(apiKey);\n }\n\n return Result.fail(new ApiKeyNotFoundError());\n } catch (error) {\n return Result.fail(error);\n }\n }\n\n async getByToken(token: string): Promise<Result<ApiKey, RepositoryAbstraction.Error>> {\n try {\n // First, check the database (database keys have priority over factory keys)\n const tenant = this.tenantContext.getTenant();\n const apiKey = await this.storageOperations.getApiKeyByToken({\n token,\n tenant: tenant.id\n });\n\n if (apiKey) {\n return Result.ok(apiKey);\n }\n\n // If not found in database, check if the API key is provided by a factory\n const factoryApiKey = await this.apiKeyProvider.getByToken(token);\n if (factoryApiKey) {\n return Result.ok(factoryApiKey);\n }\n\n return Result.fail(new ApiKeyNotFoundError());\n } catch (error) {\n return Result.fail(new ApiKeyPersistenceError(error));\n }\n }\n\n async getBySlug(slug: string): Promise<Result<ApiKey, RepositoryAbstraction.Error>> {\n try {\n // First, check the database (database keys have priority over factory keys)\n const tenant = this.tenantContext.getTenant();\n const apiKey = await this.storageOperations.getApiKeyBySlug({\n slug,\n tenant: tenant.id\n });\n\n if (apiKey) {\n return Result.ok(apiKey);\n }\n\n // If not found in database, check if the API key is provided by a factory\n const factoryApiKey = await this.apiKeyProvider.getBySlug(slug);\n if (factoryApiKey) {\n return Result.ok(factoryApiKey);\n }\n\n return Result.fail(new ApiKeyNotFoundError());\n } catch (error) {\n return Result.fail(new ApiKeyPersistenceError(error));\n }\n }\n\n async list(params: ListApiKeysInput): Promise<Result<ApiKey[], RepositoryAbstraction.Error>> {\n try {\n const tenant = this.tenantContext.getTenant();\n const result = await this.storageOperations.listApiKeys({\n where: { tenant: tenant.id },\n ...params\n });\n return Result.ok(result);\n } catch (error) {\n return Result.fail(new ApiKeyPersistenceError(error));\n }\n }\n\n async create(apiKey: ApiKey): Promise<Result<void, RepositoryAbstraction.Error>> {\n try {\n // Check if an API key with the same slug already exists\n const existingKeyResult = await this.getBySlug(apiKey.slug);\n\n // If we found a key, it's a duplicate slug - return validation error\n if (existingKeyResult.isOk()) {\n return Result.fail(\n new ApiKeyValidationError(`API key with slug \"${apiKey.slug}\" already exists.`)\n );\n }\n\n // \"NotFound\" error is ok. Everything else is not ok.\n if (existingKeyResult.error.code !== \"ApiKey/NotFound\") {\n return Result.fail(existingKeyResult.error);\n }\n\n // Slug is unique, proceed with creation\n const tenant = this.tenantContext.getTenant();\n await this.storageOperations.createApiKey({ apiKey: { ...apiKey, tenant: tenant.id } });\n return Result.ok();\n } catch (error) {\n return Result.fail(new ApiKeyPersistenceError(error));\n }\n }\n\n async update(apiKey: ApiKey): Promise<Result<void, RepositoryAbstraction.Error>> {\n try {\n const tenant = this.tenantContext.getTenant();\n await this.storageOperations.updateApiKey({ apiKey: { ...apiKey, tenant: tenant.id } });\n\n return Result.ok();\n } catch (error) {\n return Result.fail(new ApiKeyPersistenceError(error));\n }\n }\n\n async delete(apiKey: ApiKey): Promise<Result<void, RepositoryAbstraction.Error>> {\n try {\n const tenant = this.tenantContext.getTenant();\n await this.storageOperations.deleteApiKey({ apiKey: { ...apiKey, tenant: tenant.id } });\n\n return Result.ok();\n } catch (error) {\n return Result.fail(new ApiKeyPersistenceError(error));\n }\n }\n}\n\nexport const ApiKeysRepository = createImplementation({\n abstraction: RepositoryAbstraction,\n implementation: ApiKeysRepositoryImpl,\n dependencies: [TenantContext, SecurityStorageOperations, ApiKeyProvider]\n});\n"],"names":["ApiKeysRepositoryImpl","tenantContext","storageOperations","apiKeyProvider","id","tenant","apiKey","Result","ApiKeyNotFoundError","error","token","factoryApiKey","ApiKeyPersistenceError","slug","params","result","existingKeyResult","ApiKeyValidationError","ApiKeysRepository","createImplementation","RepositoryAbstraction","TenantContext","SecurityStorageOperations","ApiKeyProvider"],"mappings":"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"}
@@ -1,9 +1,7 @@
1
1
  import { createAbstraction } from "@webiny/feature/api";
2
- /** Persist and retrieve API keys. */
3
- export const ApiKeysRepository = createAbstraction("ApiKeysRepository");
4
- /** Provide code-defined API keys. */
5
- export const ApiKeyFactory = createAbstraction("ApiKeyFactory");
6
- /** Retrieve API keys by token or slug. */
7
- export const ApiKeyProvider = createAbstraction("ApiKeyProvider");
2
+ const ApiKeysRepository = createAbstraction("ApiKeysRepository");
3
+ const ApiKeyFactory = createAbstraction("ApiKeyFactory");
4
+ const ApiKeyProvider = createAbstraction("ApiKeyProvider");
5
+ export { ApiKeyFactory, ApiKeyProvider, ApiKeysRepository };
8
6
 
9
7
  //# sourceMappingURL=abstractions.js.map
@@ -1 +1 @@
1
- {"version":3,"names":["createAbstraction","ApiKeysRepository","ApiKeyFactory","ApiKeyProvider"],"sources":["abstractions.ts"],"sourcesContent":["import { createAbstraction } from \"@webiny/feature/api\";\nimport { Result } from \"@webiny/feature/api\";\nimport type { ApiKey, ListApiKeysInput } from \"./types.js\";\nimport {\n type ApiKeyNotFoundError,\n ApiKeyPersistenceError,\n ApiKeyValidationError\n} from \"./errors.js\";\n\nexport interface IApiKeysRepositoryErrors {\n base: ApiKeyNotFoundError | ApiKeyPersistenceError | ApiKeyValidationError;\n}\n\ntype RepositoryError = IApiKeysRepositoryErrors[keyof IApiKeysRepositoryErrors];\n\nexport interface IApiKeysRepository {\n get(id: string): Promise<Result<ApiKey, RepositoryError>>;\n getByToken(token: string): Promise<Result<ApiKey, RepositoryError>>;\n getBySlug(token: string): Promise<Result<ApiKey, RepositoryError>>;\n list(params: ListApiKeysInput): Promise<Result<ApiKey[], RepositoryError>>;\n create(data: ApiKey): Promise<Result<void, RepositoryError>>;\n update(data: ApiKey): Promise<Result<void, RepositoryError>>;\n delete(apiKey: ApiKey): Promise<Result<void, RepositoryError>>;\n}\n\n/** Persist and retrieve API keys. */\nexport const ApiKeysRepository = createAbstraction<IApiKeysRepository>(\"ApiKeysRepository\");\n\nexport namespace ApiKeysRepository {\n export type Interface = IApiKeysRepository;\n export type Error = RepositoryError;\n}\n\nexport type CodeApiKey = Pick<ApiKey, \"name\" | \"permissions\" | \"slug\"> & {\n token: `wat_${string}`;\n};\n\nexport interface IApiKeyFactory {\n execute(): Promise<CodeApiKey[]>;\n}\n\n/** Provide code-defined API keys. */\nexport const ApiKeyFactory = createAbstraction<IApiKeyFactory>(\"ApiKeyFactory\");\n\nexport namespace ApiKeyFactory {\n export type Interface = IApiKeyFactory;\n export type Return = Promise<CodeApiKey[]>;\n export type ApiKey = CodeApiKey;\n}\n\nexport interface IApiKeyProvider {\n getByToken(token: string): Promise<ApiKey | null>;\n getBySlug(slug: string): Promise<ApiKey | null>;\n}\n\n/** Retrieve API keys by token or slug. */\nexport const ApiKeyProvider = createAbstraction<IApiKeyProvider>(\"ApiKeyProvider\");\n\nexport namespace ApiKeyProvider {\n export type Interface = IApiKeyProvider;\n}\n"],"mappings":"AAAA,SAASA,iBAAiB,QAAQ,qBAAqB;AAyBvD;AACA,OAAO,MAAMC,iBAAiB,GAAGD,iBAAiB,CAAqB,mBAAmB,CAAC;AAe3F;AACA,OAAO,MAAME,aAAa,GAAGF,iBAAiB,CAAiB,eAAe,CAAC;AAa/E;AACA,OAAO,MAAMG,cAAc,GAAGH,iBAAiB,CAAkB,gBAAgB,CAAC","ignoreList":[]}
1
+ {"version":3,"file":"features/security/apiKeys/shared/abstractions.js","sources":["../../../../../src/features/security/apiKeys/shared/abstractions.ts"],"sourcesContent":["import { createAbstraction } from \"@webiny/feature/api\";\nimport { Result } from \"@webiny/feature/api\";\nimport type { ApiKey, ListApiKeysInput } from \"./types.js\";\nimport {\n type ApiKeyNotFoundError,\n ApiKeyPersistenceError,\n ApiKeyValidationError\n} from \"./errors.js\";\n\nexport interface IApiKeysRepositoryErrors {\n base: ApiKeyNotFoundError | ApiKeyPersistenceError | ApiKeyValidationError;\n}\n\ntype RepositoryError = IApiKeysRepositoryErrors[keyof IApiKeysRepositoryErrors];\n\nexport interface IApiKeysRepository {\n get(id: string): Promise<Result<ApiKey, RepositoryError>>;\n getByToken(token: string): Promise<Result<ApiKey, RepositoryError>>;\n getBySlug(token: string): Promise<Result<ApiKey, RepositoryError>>;\n list(params: ListApiKeysInput): Promise<Result<ApiKey[], RepositoryError>>;\n create(data: ApiKey): Promise<Result<void, RepositoryError>>;\n update(data: ApiKey): Promise<Result<void, RepositoryError>>;\n delete(apiKey: ApiKey): Promise<Result<void, RepositoryError>>;\n}\n\n/** Persist and retrieve API keys. */\nexport const ApiKeysRepository = createAbstraction<IApiKeysRepository>(\"ApiKeysRepository\");\n\nexport namespace ApiKeysRepository {\n export type Interface = IApiKeysRepository;\n export type Error = RepositoryError;\n}\n\nexport type CodeApiKey = Pick<ApiKey, \"name\" | \"permissions\" | \"slug\"> & {\n token: `wat_${string}`;\n};\n\nexport interface IApiKeyFactory {\n execute(): Promise<CodeApiKey[]>;\n}\n\n/** Provide code-defined API keys. */\nexport const ApiKeyFactory = createAbstraction<IApiKeyFactory>(\"ApiKeyFactory\");\n\nexport namespace ApiKeyFactory {\n export type Interface = IApiKeyFactory;\n export type Return = Promise<CodeApiKey[]>;\n export type ApiKey = CodeApiKey;\n}\n\nexport interface IApiKeyProvider {\n getByToken(token: string): Promise<ApiKey | null>;\n getBySlug(slug: string): Promise<ApiKey | null>;\n}\n\n/** Retrieve API keys by token or slug. */\nexport const ApiKeyProvider = createAbstraction<IApiKeyProvider>(\"ApiKeyProvider\");\n\nexport namespace ApiKeyProvider {\n export type Interface = IApiKeyProvider;\n}\n"],"names":["ApiKeysRepository","createAbstraction","ApiKeyFactory","ApiKeyProvider"],"mappings":";AA0BO,MAAMA,oBAAoBC,kBAAsC;AAgBhE,MAAMC,gBAAgBD,kBAAkC;AAcxD,MAAME,iBAAiBF,kBAAmC"}
@@ -1,39 +1,36 @@
1
1
  import { BaseError } from "@webiny/feature/api";
2
- export class ApiKeyPersistenceError extends BaseError {
3
- code = "ApiKey/Persistence";
4
- constructor(error) {
5
- super({
6
- message: error.message
7
- });
8
- }
2
+ class ApiKeyPersistenceError extends BaseError {
3
+ constructor(error){
4
+ super({
5
+ message: error.message
6
+ }), this.code = "ApiKey/Persistence";
7
+ }
9
8
  }
10
- export class ApiKeyNotFoundError extends BaseError {
11
- code = "ApiKey/NotFound";
12
- constructor() {
13
- super({
14
- message: `API key was not found!`
15
- });
16
- }
9
+ class ApiKeyNotFoundError extends BaseError {
10
+ constructor(){
11
+ super({
12
+ message: "API key was not found!"
13
+ }), this.code = "ApiKey/NotFound";
14
+ }
17
15
  }
18
- export class ApiKeyNotAuthorizedError extends BaseError {
19
- code = "ApiKey/NotAuthorized";
20
- constructor(data = {}) {
21
- super({
22
- message: data.message || "Not authorized!",
23
- data
24
- });
25
- }
16
+ class ApiKeyNotAuthorizedError extends BaseError {
17
+ constructor(data = {}){
18
+ super({
19
+ message: data.message || "Not authorized!",
20
+ data
21
+ }), this.code = "ApiKey/NotAuthorized";
22
+ }
26
23
  }
27
- export class ApiKeyValidationError extends BaseError {
28
- code = "ApiKey/Validation";
29
- constructor(message) {
30
- super({
31
- message,
32
- data: {
33
- message
34
- }
35
- });
36
- }
24
+ class ApiKeyValidationError extends BaseError {
25
+ constructor(message){
26
+ super({
27
+ message,
28
+ data: {
29
+ message
30
+ }
31
+ }), this.code = "ApiKey/Validation";
32
+ }
37
33
  }
34
+ export { ApiKeyNotAuthorizedError, ApiKeyNotFoundError, ApiKeyPersistenceError, ApiKeyValidationError };
38
35
 
39
36
  //# sourceMappingURL=errors.js.map
@@ -1 +1 @@
1
- {"version":3,"names":["BaseError","ApiKeyPersistenceError","code","constructor","error","message","ApiKeyNotFoundError","ApiKeyNotAuthorizedError","data","ApiKeyValidationError"],"sources":["errors.ts"],"sourcesContent":["import { BaseError } from \"@webiny/feature/api\";\n\nexport class ApiKeyPersistenceError extends BaseError {\n override readonly code = \"ApiKey/Persistence\" as const;\n\n constructor(error: Error) {\n super({\n message: error.message\n });\n }\n}\n\nexport class ApiKeyNotFoundError extends BaseError {\n override readonly code = \"ApiKey/NotFound\" as const;\n\n constructor() {\n super({\n message: `API key was not found!`\n });\n }\n}\n\ntype NotAuthorizedErrorData = {\n message?: string;\n};\n\nexport class ApiKeyNotAuthorizedError extends BaseError<NotAuthorizedErrorData> {\n override readonly code = \"ApiKey/NotAuthorized\" as const;\n\n constructor(data: NotAuthorizedErrorData = {}) {\n super({\n message: data.message || \"Not authorized!\",\n data\n });\n }\n}\n\ntype ApiKeyValidationErrorData = {\n message: string;\n};\n\nexport class ApiKeyValidationError extends BaseError<ApiKeyValidationErrorData> {\n override readonly code = \"ApiKey/Validation\" 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,sBAAsB,SAASD,SAAS,CAAC;EAChCE,IAAI,GAAG,oBAAoB;EAE7CC,WAAWA,CAACC,KAAY,EAAE;IACtB,KAAK,CAAC;MACFC,OAAO,EAAED,KAAK,CAACC;IACnB,CAAC,CAAC;EACN;AACJ;AAEA,OAAO,MAAMC,mBAAmB,SAASN,SAAS,CAAC;EAC7BE,IAAI,GAAG,iBAAiB;EAE1CC,WAAWA,CAAA,EAAG;IACV,KAAK,CAAC;MACFE,OAAO,EAAE;IACb,CAAC,CAAC;EACN;AACJ;AAMA,OAAO,MAAME,wBAAwB,SAASP,SAAS,CAAyB;EAC1DE,IAAI,GAAG,sBAAsB;EAE/CC,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,qBAAqB,SAAST,SAAS,CAA4B;EAC1DE,IAAI,GAAG,mBAAmB;EAE5CC,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/apiKeys/shared/errors.js","sources":["../../../../../src/features/security/apiKeys/shared/errors.ts"],"sourcesContent":["import { BaseError } from \"@webiny/feature/api\";\n\nexport class ApiKeyPersistenceError extends BaseError {\n override readonly code = \"ApiKey/Persistence\" as const;\n\n constructor(error: Error) {\n super({\n message: error.message\n });\n }\n}\n\nexport class ApiKeyNotFoundError extends BaseError {\n override readonly code = \"ApiKey/NotFound\" as const;\n\n constructor() {\n super({\n message: `API key was not found!`\n });\n }\n}\n\ntype NotAuthorizedErrorData = {\n message?: string;\n};\n\nexport class ApiKeyNotAuthorizedError extends BaseError<NotAuthorizedErrorData> {\n override readonly code = \"ApiKey/NotAuthorized\" as const;\n\n constructor(data: NotAuthorizedErrorData = {}) {\n super({\n message: data.message || \"Not authorized!\",\n data\n });\n }\n}\n\ntype ApiKeyValidationErrorData = {\n message: string;\n};\n\nexport class ApiKeyValidationError extends BaseError<ApiKeyValidationErrorData> {\n override readonly code = \"ApiKey/Validation\" as const;\n\n constructor(message: string) {\n super({\n message,\n data: { message }\n });\n }\n}\n"],"names":["ApiKeyPersistenceError","BaseError","error","ApiKeyNotFoundError","ApiKeyNotAuthorizedError","data","ApiKeyValidationError","message"],"mappings":";AAEO,MAAMA,+BAA+BC;IAGxC,YAAYC,KAAY,CAAE;QACtB,KAAK,CAAC;YACF,SAASA,MAAM,OAAO;QAC1B,SALc,IAAI,GAAG;IAMzB;AACJ;AAEO,MAAMC,4BAA4BF;IAGrC,aAAc;QACV,KAAK,CAAC;YACF,SAAS;QACb,SALc,IAAI,GAAG;IAMzB;AACJ;AAMO,MAAMG,iCAAiCH;IAG1C,YAAYI,OAA+B,CAAC,CAAC,CAAE;QAC3C,KAAK,CAAC;YACF,SAASA,KAAK,OAAO,IAAI;YACzBA;QACJ,SANc,IAAI,GAAG;IAOzB;AACJ;AAMO,MAAMC,8BAA8BL;IAGvC,YAAYM,OAAe,CAAE;QACzB,KAAK,CAAC;YACFA;YACA,MAAM;gBAAEA;YAAQ;QACpB,SANc,IAAI,GAAG;IAOzB;AACJ"}
@@ -1,19 +1,9 @@
1
- import crypto from "crypto";
2
-
3
- /**
4
- * Generates a random token for API keys.
5
- * API Keys are prefixed with letter "wat_" to make token verification easier.
6
- * When authentication plugins kick in, they will be able to tell if they should handle
7
- * the token by checking the first letter.
8
- */
9
- export const generateToken = (tokenLength = 40) => {
10
- const token = crypto.randomBytes(Math.ceil(tokenLength / 2)).toString("hex");
11
-
12
- // API Keys are prefixed with letters "wat_" to make token verification easier
13
- if (token.startsWith("wat_")) {
14
- return token;
15
- }
16
- return `wat_${token.slice(0, tokenLength - 4)}`;
1
+ import crypto_0 from "crypto";
2
+ const generateToken = (tokenLength = 40)=>{
3
+ const token = crypto_0.randomBytes(Math.ceil(tokenLength / 2)).toString("hex");
4
+ if (token.startsWith("wat_")) return token;
5
+ return `wat_${token.slice(0, tokenLength - 4)}`;
17
6
  };
7
+ export { generateToken };
18
8
 
19
9
  //# sourceMappingURL=generateToken.js.map
@@ -1 +1 @@
1
- {"version":3,"names":["crypto","generateToken","tokenLength","token","randomBytes","Math","ceil","toString","startsWith","slice"],"sources":["generateToken.ts"],"sourcesContent":["import crypto from \"crypto\";\n\n/**\n * Generates a random token for API keys.\n * API Keys are prefixed with letter \"wat_\" to make token verification easier.\n * When authentication plugins kick in, they will be able to tell if they should handle\n * the token by checking the first letter.\n */\nexport const generateToken = (tokenLength = 40): string => {\n const token = crypto.randomBytes(Math.ceil(tokenLength / 2)).toString(\"hex\");\n\n // API Keys are prefixed with letters \"wat_\" to make token verification easier\n if (token.startsWith(\"wat_\")) {\n return token;\n }\n\n return `wat_${token.slice(0, tokenLength - 4)}`;\n};\n"],"mappings":"AAAA,OAAOA,MAAM,MAAM,QAAQ;;AAE3B;AACA;AACA;AACA;AACA;AACA;AACA,OAAO,MAAMC,aAAa,GAAGA,CAACC,WAAW,GAAG,EAAE,KAAa;EACvD,MAAMC,KAAK,GAAGH,MAAM,CAACI,WAAW,CAACC,IAAI,CAACC,IAAI,CAACJ,WAAW,GAAG,CAAC,CAAC,CAAC,CAACK,QAAQ,CAAC,KAAK,CAAC;;EAE5E;EACA,IAAIJ,KAAK,CAACK,UAAU,CAAC,MAAM,CAAC,EAAE;IAC1B,OAAOL,KAAK;EAChB;EAEA,OAAO,OAAOA,KAAK,CAACM,KAAK,CAAC,CAAC,EAAEP,WAAW,GAAG,CAAC,CAAC,EAAE;AACnD,CAAC","ignoreList":[]}
1
+ {"version":3,"file":"features/security/apiKeys/shared/generateToken.js","sources":["../../../../../src/features/security/apiKeys/shared/generateToken.ts"],"sourcesContent":["import crypto from \"crypto\";\n\n/**\n * Generates a random token for API keys.\n * API Keys are prefixed with letter \"wat_\" to make token verification easier.\n * When authentication plugins kick in, they will be able to tell if they should handle\n * the token by checking the first letter.\n */\nexport const generateToken = (tokenLength = 40): string => {\n const token = crypto.randomBytes(Math.ceil(tokenLength / 2)).toString(\"hex\");\n\n // API Keys are prefixed with letters \"wat_\" to make token verification easier\n if (token.startsWith(\"wat_\")) {\n return token;\n }\n\n return `wat_${token.slice(0, tokenLength - 4)}`;\n};\n"],"names":["generateToken","tokenLength","token","crypto","Math"],"mappings":";AAQO,MAAMA,gBAAgB,CAACC,cAAc,EAAE;IAC1C,MAAMC,QAAQC,SAAAA,WAAkB,CAACC,KAAK,IAAI,CAACH,cAAc,IAAI,QAAQ,CAAC;IAGtE,IAAIC,MAAM,UAAU,CAAC,SACjB,OAAOA;IAGX,OAAO,CAAC,IAAI,EAAEA,MAAM,KAAK,CAAC,GAAGD,cAAc,IAAI;AACnD"}