@webiny/api-website-builder 0.0.0-unstable.e622468070 → 0.0.0-unstable.e6f0dc8ca7

This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
Files changed (388) hide show
  1. package/domain/page/EntryToPageMapper.js +4 -1
  2. package/domain/page/EntryToPageMapper.js.map +1 -1
  3. package/domain/page/PagePath.d.ts +7 -0
  4. package/domain/page/PagePath.js +36 -0
  5. package/domain/page/PagePath.js.map +1 -0
  6. package/domain/page/abstractions.d.ts +22 -3
  7. package/domain/page/abstractions.js.map +1 -1
  8. package/domain/page/errors.d.ts +12 -0
  9. package/domain/page/errors.js +22 -0
  10. package/domain/page/errors.js.map +1 -1
  11. package/domain/permissionsSchema.d.ts +29 -0
  12. package/domain/permissionsSchema.js +32 -0
  13. package/domain/permissionsSchema.js.map +1 -0
  14. package/exports/api/website-builder/page.d.ts +12 -8
  15. package/exports/api/website-builder/page.js +12 -8
  16. package/exports/api/website-builder/page.js.map +1 -1
  17. package/exports/api/website-builder/redirect.d.ts +4 -4
  18. package/exports/api/website-builder/redirect.js +4 -4
  19. package/exports/api/website-builder/redirect.js.map +1 -1
  20. package/features/installer/ApiKeyInstaller.d.ts +1 -1
  21. package/features/installer/ApiKeyInstaller.js +5 -2
  22. package/features/installer/ApiKeyInstaller.js.map +1 -1
  23. package/features/installer/feature.d.ts +4 -1
  24. package/features/nextjs/abstractions.d.ts +1 -0
  25. package/features/nextjs/abstractions.js +1 -0
  26. package/features/nextjs/abstractions.js.map +1 -1
  27. package/features/nextjs/feature.d.ts +4 -1
  28. package/features/pages/CreatePage/CreatePageUseCase.d.ts +4 -2
  29. package/features/pages/CreatePage/CreatePageUseCase.js +11 -3
  30. package/features/pages/CreatePage/CreatePageUseCase.js.map +1 -1
  31. package/features/pages/CreatePage/abstractions.d.ts +10 -6
  32. package/features/pages/CreatePage/abstractions.js +5 -2
  33. package/features/pages/CreatePage/abstractions.js.map +1 -1
  34. package/features/pages/CreatePage/events.d.ts +3 -3
  35. package/features/pages/CreatePage/events.js +4 -4
  36. package/features/pages/CreatePage/events.js.map +1 -1
  37. package/features/pages/CreatePage/feature.d.ts +4 -1
  38. package/features/pages/CreatePage/index.d.ts +1 -1
  39. package/features/pages/CreatePage/index.js +1 -1
  40. package/features/pages/CreatePage/index.js.map +1 -1
  41. package/features/pages/CreatePageRevisionFrom/CreatePageRevisionFromUseCase.d.ts +6 -2
  42. package/features/pages/CreatePageRevisionFrom/CreatePageRevisionFromUseCase.js +19 -3
  43. package/features/pages/CreatePageRevisionFrom/CreatePageRevisionFromUseCase.js.map +1 -1
  44. package/features/pages/CreatePageRevisionFrom/abstractions.d.ts +11 -7
  45. package/features/pages/CreatePageRevisionFrom/abstractions.js +5 -2
  46. package/features/pages/CreatePageRevisionFrom/abstractions.js.map +1 -1
  47. package/features/pages/CreatePageRevisionFrom/events.d.ts +3 -3
  48. package/features/pages/CreatePageRevisionFrom/events.js +4 -4
  49. package/features/pages/CreatePageRevisionFrom/events.js.map +1 -1
  50. package/features/pages/CreatePageRevisionFrom/feature.d.ts +4 -1
  51. package/features/pages/CreatePageRevisionFrom/index.d.ts +1 -1
  52. package/features/pages/CreatePageRevisionFrom/index.js +1 -1
  53. package/features/pages/CreatePageRevisionFrom/index.js.map +1 -1
  54. package/features/pages/DeletePage/DeletePageRepository.d.ts +1 -3
  55. package/features/pages/DeletePage/DeletePageRepository.js +2 -13
  56. package/features/pages/DeletePage/DeletePageRepository.js.map +1 -1
  57. package/features/pages/DeletePage/DeletePageUseCase.d.ts +7 -5
  58. package/features/pages/DeletePage/DeletePageUseCase.js +16 -9
  59. package/features/pages/DeletePage/DeletePageUseCase.js.map +1 -1
  60. package/features/pages/DeletePage/abstractions.d.ts +12 -7
  61. package/features/pages/DeletePage/abstractions.js +5 -2
  62. package/features/pages/DeletePage/abstractions.js.map +1 -1
  63. package/features/pages/DeletePage/events.d.ts +3 -3
  64. package/features/pages/DeletePage/events.js +4 -4
  65. package/features/pages/DeletePage/events.js.map +1 -1
  66. package/features/pages/DeletePage/feature.d.ts +4 -1
  67. package/features/pages/DeletePage/index.d.ts +1 -1
  68. package/features/pages/DeletePage/index.js +1 -1
  69. package/features/pages/DeletePage/index.js.map +1 -1
  70. package/features/pages/DuplicatePage/DuplicatePageRepository.d.ts +2 -2
  71. package/features/pages/DuplicatePage/DuplicatePageRepository.js +9 -1
  72. package/features/pages/DuplicatePage/DuplicatePageRepository.js.map +1 -1
  73. package/features/pages/DuplicatePage/DuplicatePageUseCase.d.ts +4 -2
  74. package/features/pages/DuplicatePage/DuplicatePageUseCase.js +11 -3
  75. package/features/pages/DuplicatePage/DuplicatePageUseCase.js.map +1 -1
  76. package/features/pages/DuplicatePage/abstractions.d.ts +18 -8
  77. package/features/pages/DuplicatePage/abstractions.js +5 -2
  78. package/features/pages/DuplicatePage/abstractions.js.map +1 -1
  79. package/features/pages/DuplicatePage/events.d.ts +3 -3
  80. package/features/pages/DuplicatePage/events.js +4 -4
  81. package/features/pages/DuplicatePage/events.js.map +1 -1
  82. package/features/pages/DuplicatePage/feature.d.ts +4 -1
  83. package/features/pages/DuplicatePage/index.d.ts +2 -1
  84. package/features/pages/DuplicatePage/index.js +1 -1
  85. package/features/pages/DuplicatePage/index.js.map +1 -1
  86. package/features/pages/GetDeletedPageById/GetDeletedPageByIdRepository.d.ts +13 -0
  87. package/features/pages/GetDeletedPageById/GetDeletedPageByIdRepository.js +32 -0
  88. package/features/pages/GetDeletedPageById/GetDeletedPageByIdRepository.js.map +1 -0
  89. package/features/pages/GetDeletedPageById/GetDeletedPageByIdUseCase.d.ts +12 -0
  90. package/features/pages/GetDeletedPageById/GetDeletedPageByIdUseCase.js +31 -0
  91. package/features/pages/GetDeletedPageById/GetDeletedPageByIdUseCase.js.map +1 -0
  92. package/features/pages/GetDeletedPageById/abstractions.d.ts +42 -0
  93. package/features/pages/GetDeletedPageById/abstractions.js +15 -0
  94. package/features/pages/GetDeletedPageById/abstractions.js.map +1 -0
  95. package/features/pages/GetDeletedPageById/feature.d.ts +4 -0
  96. package/features/pages/GetDeletedPageById/feature.js +12 -0
  97. package/features/pages/GetDeletedPageById/feature.js.map +1 -0
  98. package/features/pages/GetDeletedPageById/index.d.ts +1 -0
  99. package/features/pages/GetDeletedPageById/index.js +3 -0
  100. package/features/pages/GetDeletedPageById/index.js.map +1 -0
  101. package/features/pages/GetPageById/GetPageByIdUseCase.d.ts +3 -1
  102. package/features/pages/GetPageById/GetPageByIdUseCase.js +19 -3
  103. package/features/pages/GetPageById/GetPageByIdUseCase.js.map +1 -1
  104. package/features/pages/GetPageById/abstractions.d.ts +3 -1
  105. package/features/pages/GetPageById/abstractions.js +1 -0
  106. package/features/pages/GetPageById/abstractions.js.map +1 -1
  107. package/features/pages/GetPageById/feature.d.ts +4 -1
  108. package/features/pages/GetPageByPath/GetPageByPathUseCase.d.ts +3 -1
  109. package/features/pages/GetPageByPath/GetPageByPathUseCase.js +19 -3
  110. package/features/pages/GetPageByPath/GetPageByPathUseCase.js.map +1 -1
  111. package/features/pages/GetPageByPath/abstractions.d.ts +3 -1
  112. package/features/pages/GetPageByPath/abstractions.js +1 -0
  113. package/features/pages/GetPageByPath/abstractions.js.map +1 -1
  114. package/features/pages/GetPageByPath/feature.d.ts +4 -1
  115. package/features/pages/GetPageLanguagePaths/GetPageLanguagePathsRepository.d.ts +15 -0
  116. package/features/pages/GetPageLanguagePaths/GetPageLanguagePathsRepository.js +61 -0
  117. package/features/pages/GetPageLanguagePaths/GetPageLanguagePathsRepository.js.map +1 -0
  118. package/features/pages/GetPageLanguagePaths/GetPageLanguagePathsUseCase.d.ts +10 -0
  119. package/features/pages/GetPageLanguagePaths/GetPageLanguagePathsUseCase.js +20 -0
  120. package/features/pages/GetPageLanguagePaths/GetPageLanguagePathsUseCase.js.map +1 -0
  121. package/features/pages/GetPageLanguagePaths/abstractions.d.ts +20 -0
  122. package/features/pages/GetPageLanguagePaths/abstractions.js +6 -0
  123. package/features/pages/GetPageLanguagePaths/abstractions.js.map +1 -0
  124. package/features/pages/GetPageLanguagePaths/feature.d.ts +4 -0
  125. package/features/pages/GetPageLanguagePaths/feature.js +12 -0
  126. package/features/pages/GetPageLanguagePaths/feature.js.map +1 -0
  127. package/features/pages/GetPageLanguagePaths/index.d.ts +1 -0
  128. package/features/pages/GetPageLanguagePaths/index.js +3 -0
  129. package/features/pages/GetPageLanguagePaths/index.js.map +1 -0
  130. package/features/pages/GetPageRevisions/GetPageRevisionsUseCase.d.ts +3 -1
  131. package/features/pages/GetPageRevisions/GetPageRevisionsUseCase.js +22 -3
  132. package/features/pages/GetPageRevisions/GetPageRevisionsUseCase.js.map +1 -1
  133. package/features/pages/GetPageRevisions/abstractions.d.ts +3 -1
  134. package/features/pages/GetPageRevisions/abstractions.js +1 -0
  135. package/features/pages/GetPageRevisions/abstractions.js.map +1 -1
  136. package/features/pages/GetPageRevisions/feature.d.ts +4 -1
  137. package/features/pages/ListDeletedPages/ListDeletedPagesRepository.d.ts +17 -0
  138. package/features/pages/ListDeletedPages/ListDeletedPagesRepository.js +49 -0
  139. package/features/pages/ListDeletedPages/ListDeletedPagesRepository.js.map +1 -0
  140. package/features/pages/ListDeletedPages/ListDeletedPagesUseCase.d.ts +14 -0
  141. package/features/pages/ListDeletedPages/ListDeletedPagesUseCase.js +35 -0
  142. package/features/pages/ListDeletedPages/ListDeletedPagesUseCase.js.map +1 -0
  143. package/features/pages/ListDeletedPages/abstractions.d.ts +56 -0
  144. package/features/pages/ListDeletedPages/abstractions.js +15 -0
  145. package/features/pages/ListDeletedPages/abstractions.js.map +1 -0
  146. package/features/pages/ListDeletedPages/feature.d.ts +4 -0
  147. package/features/pages/ListDeletedPages/feature.js +12 -0
  148. package/features/pages/ListDeletedPages/feature.js.map +1 -0
  149. package/features/pages/ListDeletedPages/index.d.ts +1 -0
  150. package/features/pages/ListDeletedPages/index.js +3 -0
  151. package/features/pages/ListDeletedPages/index.js.map +1 -0
  152. package/features/pages/ListPages/ListPagesRepository.d.ts +5 -1
  153. package/features/pages/ListPages/ListPagesRepository.js +14 -4
  154. package/features/pages/ListPages/ListPagesRepository.js.map +1 -1
  155. package/features/pages/ListPages/ListPagesUseCase.d.ts +5 -1
  156. package/features/pages/ListPages/ListPagesUseCase.js +24 -4
  157. package/features/pages/ListPages/ListPagesUseCase.js.map +1 -1
  158. package/features/pages/ListPages/abstractions.d.ts +3 -1
  159. package/features/pages/ListPages/abstractions.js +1 -0
  160. package/features/pages/ListPages/abstractions.js.map +1 -1
  161. package/features/pages/ListPages/feature.d.ts +4 -1
  162. package/features/pages/MovePage/MovePageUseCase.d.ts +4 -2
  163. package/features/pages/MovePage/MovePageUseCase.js +15 -3
  164. package/features/pages/MovePage/MovePageUseCase.js.map +1 -1
  165. package/features/pages/MovePage/abstractions.d.ts +11 -7
  166. package/features/pages/MovePage/abstractions.js +5 -2
  167. package/features/pages/MovePage/abstractions.js.map +1 -1
  168. package/features/pages/MovePage/events.d.ts +3 -3
  169. package/features/pages/MovePage/events.js +4 -4
  170. package/features/pages/MovePage/events.js.map +1 -1
  171. package/features/pages/MovePage/feature.d.ts +4 -1
  172. package/features/pages/MovePage/index.d.ts +1 -1
  173. package/features/pages/MovePage/index.js +1 -1
  174. package/features/pages/MovePage/index.js.map +1 -1
  175. package/features/pages/PublishPage/PublishPageUseCase.d.ts +4 -2
  176. package/features/pages/PublishPage/PublishPageUseCase.js +15 -3
  177. package/features/pages/PublishPage/PublishPageUseCase.js.map +1 -1
  178. package/features/pages/PublishPage/abstractions.d.ts +11 -7
  179. package/features/pages/PublishPage/abstractions.js +5 -2
  180. package/features/pages/PublishPage/abstractions.js.map +1 -1
  181. package/features/pages/PublishPage/events.d.ts +3 -3
  182. package/features/pages/PublishPage/events.js +4 -4
  183. package/features/pages/PublishPage/events.js.map +1 -1
  184. package/features/pages/PublishPage/feature.d.ts +4 -1
  185. package/features/pages/PublishPage/index.d.ts +1 -1
  186. package/features/pages/PublishPage/index.js +1 -1
  187. package/features/pages/PublishPage/index.js.map +1 -1
  188. package/features/pages/RestorePage/RestorePageRepository.d.ts +13 -0
  189. package/features/pages/RestorePage/RestorePageRepository.js +30 -0
  190. package/features/pages/RestorePage/RestorePageRepository.js.map +1 -0
  191. package/features/pages/RestorePage/RestorePageUseCase.d.ts +16 -0
  192. package/features/pages/RestorePage/RestorePageUseCase.js +52 -0
  193. package/features/pages/RestorePage/RestorePageUseCase.js.map +1 -0
  194. package/features/pages/RestorePage/abstractions.d.ts +59 -0
  195. package/features/pages/RestorePage/abstractions.js +30 -0
  196. package/features/pages/RestorePage/abstractions.js.map +1 -0
  197. package/features/pages/RestorePage/events.d.ts +10 -0
  198. package/features/pages/RestorePage/events.js +19 -0
  199. package/features/pages/RestorePage/events.js.map +1 -0
  200. package/features/pages/RestorePage/feature.d.ts +4 -0
  201. package/features/pages/RestorePage/feature.js +12 -0
  202. package/features/pages/RestorePage/feature.js.map +1 -0
  203. package/features/pages/RestorePage/index.d.ts +1 -0
  204. package/features/pages/RestorePage/index.js +3 -0
  205. package/features/pages/RestorePage/index.js.map +1 -0
  206. package/features/pages/TranslatePage/TranslatePageUseCase.d.ts +17 -0
  207. package/features/pages/TranslatePage/TranslatePageUseCase.js +74 -0
  208. package/features/pages/TranslatePage/TranslatePageUseCase.js.map +1 -0
  209. package/features/pages/TranslatePage/abstractions.d.ts +29 -0
  210. package/features/pages/TranslatePage/abstractions.js +14 -0
  211. package/features/pages/TranslatePage/abstractions.js.map +1 -0
  212. package/features/pages/TranslatePage/feature.d.ts +4 -0
  213. package/features/pages/TranslatePage/feature.js +10 -0
  214. package/features/pages/TranslatePage/feature.js.map +1 -0
  215. package/features/pages/TranslatePage/index.d.ts +1 -0
  216. package/features/pages/TranslatePage/index.js +3 -0
  217. package/features/pages/TranslatePage/index.js.map +1 -0
  218. package/features/pages/TrashPage/TrashPageRepository.d.ts +13 -0
  219. package/features/pages/TrashPage/TrashPageRepository.js +30 -0
  220. package/features/pages/TrashPage/TrashPageRepository.js.map +1 -0
  221. package/features/pages/TrashPage/TrashPageUseCase.d.ts +16 -0
  222. package/features/pages/TrashPage/TrashPageUseCase.js +52 -0
  223. package/features/pages/TrashPage/TrashPageUseCase.js.map +1 -0
  224. package/features/pages/TrashPage/abstractions.d.ts +58 -0
  225. package/features/pages/TrashPage/abstractions.js +30 -0
  226. package/features/pages/TrashPage/abstractions.js.map +1 -0
  227. package/features/pages/TrashPage/events.d.ts +10 -0
  228. package/features/pages/TrashPage/events.js +19 -0
  229. package/features/pages/TrashPage/events.js.map +1 -0
  230. package/features/pages/TrashPage/feature.d.ts +4 -0
  231. package/features/pages/TrashPage/feature.js +12 -0
  232. package/features/pages/TrashPage/feature.js.map +1 -0
  233. package/features/pages/TrashPage/index.d.ts +1 -0
  234. package/features/pages/TrashPage/index.js +3 -0
  235. package/features/pages/TrashPage/index.js.map +1 -0
  236. package/features/pages/UnpublishPage/UnpublishPageUseCase.d.ts +4 -2
  237. package/features/pages/UnpublishPage/UnpublishPageUseCase.js +15 -3
  238. package/features/pages/UnpublishPage/UnpublishPageUseCase.js.map +1 -1
  239. package/features/pages/UnpublishPage/abstractions.d.ts +11 -7
  240. package/features/pages/UnpublishPage/abstractions.js +5 -2
  241. package/features/pages/UnpublishPage/abstractions.js.map +1 -1
  242. package/features/pages/UnpublishPage/events.d.ts +3 -3
  243. package/features/pages/UnpublishPage/events.js +4 -4
  244. package/features/pages/UnpublishPage/events.js.map +1 -1
  245. package/features/pages/UnpublishPage/feature.d.ts +4 -1
  246. package/features/pages/UnpublishPage/index.d.ts +1 -1
  247. package/features/pages/UnpublishPage/index.js +1 -1
  248. package/features/pages/UnpublishPage/index.js.map +1 -1
  249. package/features/pages/UpdatePage/UpdatePageUseCase.d.ts +4 -2
  250. package/features/pages/UpdatePage/UpdatePageUseCase.js +15 -3
  251. package/features/pages/UpdatePage/UpdatePageUseCase.js.map +1 -1
  252. package/features/pages/UpdatePage/abstractions.d.ts +12 -9
  253. package/features/pages/UpdatePage/abstractions.js +5 -2
  254. package/features/pages/UpdatePage/abstractions.js.map +1 -1
  255. package/features/pages/UpdatePage/events.d.ts +3 -3
  256. package/features/pages/UpdatePage/events.js +4 -4
  257. package/features/pages/UpdatePage/events.js.map +1 -1
  258. package/features/pages/UpdatePage/feature.d.ts +4 -1
  259. package/features/pages/UpdatePage/index.d.ts +1 -1
  260. package/features/pages/UpdatePage/index.js +1 -1
  261. package/features/pages/UpdatePage/index.js.map +1 -1
  262. package/features/pages/UpdatePageRevisionDescription/UpdatePageRevisionDescriptionRepository.d.ts +15 -0
  263. package/features/pages/UpdatePageRevisionDescription/UpdatePageRevisionDescriptionRepository.js +44 -0
  264. package/features/pages/UpdatePageRevisionDescription/UpdatePageRevisionDescriptionRepository.js.map +1 -0
  265. package/features/pages/UpdatePageRevisionDescription/UpdatePageRevisionDescriptionUseCase.d.ts +16 -0
  266. package/features/pages/UpdatePageRevisionDescription/UpdatePageRevisionDescriptionUseCase.js +66 -0
  267. package/features/pages/UpdatePageRevisionDescription/UpdatePageRevisionDescriptionUseCase.js.map +1 -0
  268. package/features/pages/UpdatePageRevisionDescription/abstractions.d.ts +67 -0
  269. package/features/pages/UpdatePageRevisionDescription/abstractions.js +29 -0
  270. package/features/pages/UpdatePageRevisionDescription/abstractions.js.map +1 -0
  271. package/features/pages/UpdatePageRevisionDescription/events.d.ts +10 -0
  272. package/features/pages/UpdatePageRevisionDescription/events.js +19 -0
  273. package/features/pages/UpdatePageRevisionDescription/events.js.map +1 -0
  274. package/features/pages/UpdatePageRevisionDescription/feature.d.ts +4 -0
  275. package/features/pages/UpdatePageRevisionDescription/feature.js +12 -0
  276. package/features/pages/UpdatePageRevisionDescription/feature.js.map +1 -0
  277. package/features/pages/UpdatePageRevisionDescription/index.d.ts +1 -0
  278. package/features/pages/UpdatePageRevisionDescription/index.js +3 -0
  279. package/features/pages/UpdatePageRevisionDescription/index.js.map +1 -0
  280. package/features/permissions/abstractions.d.ts +34 -0
  281. package/features/permissions/abstractions.js +5 -0
  282. package/features/permissions/abstractions.js.map +1 -0
  283. package/features/permissions/feature.d.ts +4 -0
  284. package/features/permissions/feature.js +6 -0
  285. package/features/permissions/feature.js.map +1 -0
  286. package/features/redirects/CreateRedirect/CreateRedirectUseCase.d.ts +4 -2
  287. package/features/redirects/CreateRedirect/CreateRedirectUseCase.js +11 -3
  288. package/features/redirects/CreateRedirect/CreateRedirectUseCase.js.map +1 -1
  289. package/features/redirects/CreateRedirect/abstractions.d.ts +11 -7
  290. package/features/redirects/CreateRedirect/abstractions.js +5 -2
  291. package/features/redirects/CreateRedirect/abstractions.js.map +1 -1
  292. package/features/redirects/CreateRedirect/events.d.ts +3 -3
  293. package/features/redirects/CreateRedirect/events.js +4 -4
  294. package/features/redirects/CreateRedirect/events.js.map +1 -1
  295. package/features/redirects/CreateRedirect/feature.d.ts +4 -1
  296. package/features/redirects/CreateRedirect/index.d.ts +1 -1
  297. package/features/redirects/CreateRedirect/index.js +1 -1
  298. package/features/redirects/CreateRedirect/index.js.map +1 -1
  299. package/features/redirects/DeleteRedirect/DeleteRedirectUseCase.d.ts +4 -2
  300. package/features/redirects/DeleteRedirect/DeleteRedirectUseCase.js +11 -4
  301. package/features/redirects/DeleteRedirect/DeleteRedirectUseCase.js.map +1 -1
  302. package/features/redirects/DeleteRedirect/abstractions.d.ts +11 -7
  303. package/features/redirects/DeleteRedirect/abstractions.js +5 -2
  304. package/features/redirects/DeleteRedirect/abstractions.js.map +1 -1
  305. package/features/redirects/DeleteRedirect/events.d.ts +3 -3
  306. package/features/redirects/DeleteRedirect/events.js +4 -4
  307. package/features/redirects/DeleteRedirect/events.js.map +1 -1
  308. package/features/redirects/DeleteRedirect/feature.d.ts +4 -1
  309. package/features/redirects/DeleteRedirect/index.d.ts +1 -1
  310. package/features/redirects/DeleteRedirect/index.js +1 -1
  311. package/features/redirects/DeleteRedirect/index.js.map +1 -1
  312. package/features/redirects/GetActiveRedirects/GetActiveRedirectsUseCase.d.ts +3 -1
  313. package/features/redirects/GetActiveRedirects/GetActiveRedirectsUseCase.js +10 -3
  314. package/features/redirects/GetActiveRedirects/GetActiveRedirectsUseCase.js.map +1 -1
  315. package/features/redirects/GetActiveRedirects/abstractions.d.ts +3 -1
  316. package/features/redirects/GetActiveRedirects/abstractions.js +1 -0
  317. package/features/redirects/GetActiveRedirects/abstractions.js.map +1 -1
  318. package/features/redirects/GetActiveRedirects/feature.d.ts +4 -1
  319. package/features/redirects/GetRedirectById/GetRedirectByIdUseCase.d.ts +3 -1
  320. package/features/redirects/GetRedirectById/GetRedirectByIdUseCase.js +19 -4
  321. package/features/redirects/GetRedirectById/GetRedirectByIdUseCase.js.map +1 -1
  322. package/features/redirects/GetRedirectById/abstractions.d.ts +3 -1
  323. package/features/redirects/GetRedirectById/abstractions.js +1 -0
  324. package/features/redirects/GetRedirectById/abstractions.js.map +1 -1
  325. package/features/redirects/GetRedirectById/feature.d.ts +4 -1
  326. package/features/redirects/InvalidateRedirectsCache/RedirectAfterCreateHandler.d.ts +3 -3
  327. package/features/redirects/InvalidateRedirectsCache/RedirectAfterCreateHandler.js +2 -2
  328. package/features/redirects/InvalidateRedirectsCache/RedirectAfterCreateHandler.js.map +1 -1
  329. package/features/redirects/InvalidateRedirectsCache/RedirectAfterDeleteHandler.d.ts +3 -3
  330. package/features/redirects/InvalidateRedirectsCache/RedirectAfterDeleteHandler.js +2 -2
  331. package/features/redirects/InvalidateRedirectsCache/RedirectAfterDeleteHandler.js.map +1 -1
  332. package/features/redirects/InvalidateRedirectsCache/RedirectAfterUpdateHandler.d.ts +3 -3
  333. package/features/redirects/InvalidateRedirectsCache/RedirectAfterUpdateHandler.js +2 -2
  334. package/features/redirects/InvalidateRedirectsCache/RedirectAfterUpdateHandler.js.map +1 -1
  335. package/features/redirects/InvalidateRedirectsCache/abstractions.d.ts +1 -0
  336. package/features/redirects/InvalidateRedirectsCache/abstractions.js +1 -0
  337. package/features/redirects/InvalidateRedirectsCache/abstractions.js.map +1 -1
  338. package/features/redirects/InvalidateRedirectsCache/feature.d.ts +4 -1
  339. package/features/redirects/ListRedirects/ListRedirectsUseCase.d.ts +5 -1
  340. package/features/redirects/ListRedirects/ListRedirectsUseCase.js +23 -4
  341. package/features/redirects/ListRedirects/ListRedirectsUseCase.js.map +1 -1
  342. package/features/redirects/ListRedirects/abstractions.d.ts +4 -1
  343. package/features/redirects/ListRedirects/abstractions.js +1 -0
  344. package/features/redirects/ListRedirects/abstractions.js.map +1 -1
  345. package/features/redirects/ListRedirects/feature.d.ts +4 -1
  346. package/features/redirects/MoveRedirect/MoveRedirectUseCase.d.ts +4 -2
  347. package/features/redirects/MoveRedirect/MoveRedirectUseCase.js +15 -3
  348. package/features/redirects/MoveRedirect/MoveRedirectUseCase.js.map +1 -1
  349. package/features/redirects/MoveRedirect/abstractions.d.ts +11 -7
  350. package/features/redirects/MoveRedirect/abstractions.js +5 -2
  351. package/features/redirects/MoveRedirect/abstractions.js.map +1 -1
  352. package/features/redirects/MoveRedirect/events.d.ts +3 -3
  353. package/features/redirects/MoveRedirect/events.js +4 -4
  354. package/features/redirects/MoveRedirect/events.js.map +1 -1
  355. package/features/redirects/MoveRedirect/feature.d.ts +4 -1
  356. package/features/redirects/MoveRedirect/index.d.ts +1 -1
  357. package/features/redirects/MoveRedirect/index.js +1 -1
  358. package/features/redirects/MoveRedirect/index.js.map +1 -1
  359. package/features/redirects/UpdateRedirect/UpdateRedirectUseCase.d.ts +4 -2
  360. package/features/redirects/UpdateRedirect/UpdateRedirectUseCase.js +15 -3
  361. package/features/redirects/UpdateRedirect/UpdateRedirectUseCase.js.map +1 -1
  362. package/features/redirects/UpdateRedirect/abstractions.d.ts +11 -7
  363. package/features/redirects/UpdateRedirect/abstractions.js +5 -2
  364. package/features/redirects/UpdateRedirect/abstractions.js.map +1 -1
  365. package/features/redirects/UpdateRedirect/events.d.ts +3 -3
  366. package/features/redirects/UpdateRedirect/events.js +4 -4
  367. package/features/redirects/UpdateRedirect/events.js.map +1 -1
  368. package/features/redirects/UpdateRedirect/feature.d.ts +4 -1
  369. package/features/redirects/UpdateRedirect/index.d.ts +1 -1
  370. package/features/redirects/UpdateRedirect/index.js +1 -1
  371. package/features/redirects/UpdateRedirect/index.js.map +1 -1
  372. package/features/tenantManager/TenantModelExtension.js +5 -5
  373. package/features/tenantManager/TenantModelExtension.js.map +1 -1
  374. package/features/tenantManager/feature.d.ts +4 -1
  375. package/graphql/pages/pages.gql.js +96 -3
  376. package/graphql/pages/pages.gql.js.map +1 -1
  377. package/graphql/pages/pages.typeDefs.d.ts +1 -1
  378. package/graphql/pages/pages.typeDefs.js +22 -1
  379. package/graphql/pages/pages.typeDefs.js.map +1 -1
  380. package/index.js +21 -6
  381. package/index.js.map +1 -1
  382. package/package.json +27 -25
  383. package/features/pages/PagePermissions/feature.d.ts +0 -1
  384. package/features/pages/PagePermissions/feature.js +0 -53
  385. package/features/pages/PagePermissions/feature.js.map +0 -1
  386. package/features/redirects/RedirectPermissions/feature.d.ts +0 -1
  387. package/features/redirects/RedirectPermissions/feature.js +0 -45
  388. package/features/redirects/RedirectPermissions/feature.js.map +0 -1
@@ -1,6 +1,6 @@
1
1
  import type { Result } from "@webiny/feature/api";
2
2
  import type { WbRedirect } from "../../../domain/redirect/abstractions.js";
3
- import type { RedirectNotFoundError, RedirectPersistenceError } from "../../../domain/redirect/errors.js";
3
+ import type { RedirectNotFoundError, RedirectPersistenceError, RedirectNotAuthorizedError } from "../../../domain/redirect/errors.js";
4
4
  /**
5
5
  * GetRedirectById repository interface
6
6
  */
@@ -26,10 +26,12 @@ export interface IGetRedirectByIdUseCase {
26
26
  execute(id: string): Promise<Result<WbRedirect, UseCaseError>>;
27
27
  }
28
28
  export interface IGetRedirectByIdUseCaseErrors {
29
+ notAuthorized: RedirectNotAuthorizedError;
29
30
  notFound: RedirectNotFoundError;
30
31
  persistence: RedirectPersistenceError;
31
32
  }
32
33
  type UseCaseError = IGetRedirectByIdUseCaseErrors[keyof IGetRedirectByIdUseCaseErrors];
34
+ /** Retrieve a URL redirect by ID. */
33
35
  export declare const GetRedirectByIdUseCase: import("@webiny/di").Abstraction<IGetRedirectByIdUseCase>;
34
36
  export declare namespace GetRedirectByIdUseCase {
35
37
  type Interface = IGetRedirectByIdUseCase;
@@ -10,6 +10,7 @@ export const GetRedirectByIdRepository = createAbstraction("Wb/GetRedirectByIdRe
10
10
  * GetRedirectById use case interface
11
11
  */
12
12
 
13
+ /** Retrieve a URL redirect by ID. */
13
14
  export const GetRedirectByIdUseCase = createAbstraction("Wb/GetRedirectByIdUseCase");
14
15
 
15
16
  //# sourceMappingURL=abstractions.js.map
@@ -1 +1 @@
1
- {"version":3,"names":["createAbstraction","GetRedirectByIdRepository","GetRedirectByIdUseCase"],"sources":["abstractions.ts"],"sourcesContent":["import { createAbstraction } from \"@webiny/feature/api\";\nimport type { Result } from \"@webiny/feature/api\";\nimport type { WbRedirect } from \"~/domain/redirect/abstractions.js\";\nimport type { RedirectNotFoundError, RedirectPersistenceError } from \"~/domain/redirect/errors.js\";\n\n/**\n * GetRedirectById repository interface\n */\nexport interface IGetRedirectByIdRepository {\n execute(id: string): Promise<Result<WbRedirect, RepositoryError>>;\n}\n\nexport interface IGetRedirectByIdRepositoryErrors {\n notFound: RedirectNotFoundError;\n persistence: RedirectPersistenceError;\n}\n\ntype RepositoryError = IGetRedirectByIdRepositoryErrors[keyof IGetRedirectByIdRepositoryErrors];\n\nexport const GetRedirectByIdRepository = createAbstraction<IGetRedirectByIdRepository>(\n \"Wb/GetRedirectByIdRepository\"\n);\n\nexport namespace GetRedirectByIdRepository {\n export type Interface = IGetRedirectByIdRepository;\n export type Error = RepositoryError;\n export type Return = Promise<Result<WbRedirect, RepositoryError>>;\n export type Redirect = WbRedirect;\n}\n\n/**\n * GetRedirectById use case interface\n */\nexport interface IGetRedirectByIdUseCase {\n execute(id: string): Promise<Result<WbRedirect, UseCaseError>>;\n}\n\nexport interface IGetRedirectByIdUseCaseErrors {\n notFound: RedirectNotFoundError;\n persistence: RedirectPersistenceError;\n}\n\ntype UseCaseError = IGetRedirectByIdUseCaseErrors[keyof IGetRedirectByIdUseCaseErrors];\n\nexport const GetRedirectByIdUseCase = createAbstraction<IGetRedirectByIdUseCase>(\n \"Wb/GetRedirectByIdUseCase\"\n);\n\nexport namespace GetRedirectByIdUseCase {\n export type Interface = IGetRedirectByIdUseCase;\n export type Return = Promise<Result<WbRedirect, UseCaseError>>;\n export type Error = UseCaseError;\n export type Redirect = WbRedirect;\n}\n"],"mappings":"AAAA,SAASA,iBAAiB,QAAQ,qBAAqB;;AAKvD;AACA;AACA;;AAYA,OAAO,MAAMC,yBAAyB,GAAGD,iBAAiB,CACtD,8BACJ,CAAC;;AASD;AACA;AACA;;AAYA,OAAO,MAAME,sBAAsB,GAAGF,iBAAiB,CACnD,2BACJ,CAAC","ignoreList":[]}
1
+ {"version":3,"names":["createAbstraction","GetRedirectByIdRepository","GetRedirectByIdUseCase"],"sources":["abstractions.ts"],"sourcesContent":["import { createAbstraction } from \"@webiny/feature/api\";\nimport type { Result } from \"@webiny/feature/api\";\nimport type { WbRedirect } from \"~/domain/redirect/abstractions.js\";\nimport type {\n RedirectNotFoundError,\n RedirectPersistenceError,\n RedirectNotAuthorizedError\n} from \"~/domain/redirect/errors.js\";\n\n/**\n * GetRedirectById repository interface\n */\nexport interface IGetRedirectByIdRepository {\n execute(id: string): Promise<Result<WbRedirect, RepositoryError>>;\n}\n\nexport interface IGetRedirectByIdRepositoryErrors {\n notFound: RedirectNotFoundError;\n persistence: RedirectPersistenceError;\n}\n\ntype RepositoryError = IGetRedirectByIdRepositoryErrors[keyof IGetRedirectByIdRepositoryErrors];\n\nexport const GetRedirectByIdRepository = createAbstraction<IGetRedirectByIdRepository>(\n \"Wb/GetRedirectByIdRepository\"\n);\n\nexport namespace GetRedirectByIdRepository {\n export type Interface = IGetRedirectByIdRepository;\n export type Error = RepositoryError;\n export type Return = Promise<Result<WbRedirect, RepositoryError>>;\n export type Redirect = WbRedirect;\n}\n\n/**\n * GetRedirectById use case interface\n */\nexport interface IGetRedirectByIdUseCase {\n execute(id: string): Promise<Result<WbRedirect, UseCaseError>>;\n}\n\nexport interface IGetRedirectByIdUseCaseErrors {\n notAuthorized: RedirectNotAuthorizedError;\n notFound: RedirectNotFoundError;\n persistence: RedirectPersistenceError;\n}\n\ntype UseCaseError = IGetRedirectByIdUseCaseErrors[keyof IGetRedirectByIdUseCaseErrors];\n\n/** Retrieve a URL redirect by ID. */\nexport const GetRedirectByIdUseCase = createAbstraction<IGetRedirectByIdUseCase>(\n \"Wb/GetRedirectByIdUseCase\"\n);\n\nexport namespace GetRedirectByIdUseCase {\n export type Interface = IGetRedirectByIdUseCase;\n export type Return = Promise<Result<WbRedirect, UseCaseError>>;\n export type Error = UseCaseError;\n export type Redirect = WbRedirect;\n}\n"],"mappings":"AAAA,SAASA,iBAAiB,QAAQ,qBAAqB;;AASvD;AACA;AACA;;AAYA,OAAO,MAAMC,yBAAyB,GAAGD,iBAAiB,CACtD,8BACJ,CAAC;;AASD;AACA;AACA;;AAaA;AACA,OAAO,MAAME,sBAAsB,GAAGF,iBAAiB,CACnD,2BACJ,CAAC","ignoreList":[]}
@@ -1 +1,4 @@
1
- export declare const GetRedirectByIdFeature: import("@webiny/feature/api/createFeature.js").FeatureDefinition<unknown>;
1
+ export declare const GetRedirectByIdFeature: {
2
+ name: string;
3
+ register(container: import("@webiny/di").Container): void;
4
+ };
@@ -1,9 +1,9 @@
1
- import { RedirectAfterCreateHandler } from "../../../features/redirects/CreateRedirect/index.js";
1
+ import { RedirectAfterCreateEventHandler } from "../../../features/redirects/CreateRedirect/index.js";
2
2
  import { InvalidateRedirectsCacheUseCase } from "./abstractions.js";
3
- declare class RedirectAfterCreateHandlerImpl implements RedirectAfterCreateHandler.Interface {
3
+ declare class RedirectAfterCreateHandlerImpl implements RedirectAfterCreateEventHandler.Interface {
4
4
  private invalidateCache;
5
5
  constructor(invalidateCache: InvalidateRedirectsCacheUseCase.Interface);
6
- handle(event: RedirectAfterCreateHandler.Event): Promise<void>;
6
+ handle(event: RedirectAfterCreateEventHandler.Event): Promise<void>;
7
7
  }
8
8
  export declare const RedirectAfterCreateCacheHandler: import("@webiny/di").Implementation<typeof RedirectAfterCreateHandlerImpl>;
9
9
  export {};
@@ -1,5 +1,5 @@
1
1
  import { createImplementation } from "@webiny/feature/api";
2
- import { RedirectAfterCreateHandler } from "../CreateRedirect/index.js";
2
+ import { RedirectAfterCreateEventHandler } from "../CreateRedirect/index.js";
3
3
  import { InvalidateRedirectsCacheUseCase } from "./abstractions.js";
4
4
  class RedirectAfterCreateHandlerImpl {
5
5
  constructor(invalidateCache) {
@@ -17,7 +17,7 @@ class RedirectAfterCreateHandlerImpl {
17
17
  }
18
18
  }
19
19
  export const RedirectAfterCreateCacheHandler = createImplementation({
20
- abstraction: RedirectAfterCreateHandler,
20
+ abstraction: RedirectAfterCreateEventHandler,
21
21
  implementation: RedirectAfterCreateHandlerImpl,
22
22
  dependencies: [InvalidateRedirectsCacheUseCase]
23
23
  });
@@ -1 +1 @@
1
- {"version":3,"names":["createImplementation","RedirectAfterCreateHandler","InvalidateRedirectsCacheUseCase","RedirectAfterCreateHandlerImpl","constructor","invalidateCache","handle","event","redirect","payload","isEnabled","execute","RedirectAfterCreateCacheHandler","abstraction","implementation","dependencies"],"sources":["RedirectAfterCreateHandler.ts"],"sourcesContent":["import { createImplementation } from \"@webiny/feature/api\";\nimport { RedirectAfterCreateHandler } from \"~/features/redirects/CreateRedirect/index.js\";\nimport { InvalidateRedirectsCacheUseCase } from \"./abstractions.js\";\n\nclass RedirectAfterCreateHandlerImpl implements RedirectAfterCreateHandler.Interface {\n constructor(private invalidateCache: InvalidateRedirectsCacheUseCase.Interface) {}\n\n async handle(event: RedirectAfterCreateHandler.Event): Promise<void> {\n const { redirect } = event.payload;\n\n // Only invalidate cache if the redirect is enabled\n if (redirect.isEnabled) {\n await this.invalidateCache.execute();\n }\n }\n}\n\nexport const RedirectAfterCreateCacheHandler = createImplementation({\n abstraction: RedirectAfterCreateHandler,\n implementation: RedirectAfterCreateHandlerImpl,\n dependencies: [InvalidateRedirectsCacheUseCase]\n});\n"],"mappings":"AAAA,SAASA,oBAAoB,QAAQ,qBAAqB;AAC1D,SAASC,0BAA0B;AACnC,SAASC,+BAA+B;AAExC,MAAMC,8BAA8B,CAAiD;EACjFC,WAAWA,CAASC,eAA0D,EAAE;IAAA,KAA5DA,eAA0D,GAA1DA,eAA0D;EAAG;EAEjF,MAAMC,MAAMA,CAACC,KAAuC,EAAiB;IACjE,MAAM;MAAEC;IAAS,CAAC,GAAGD,KAAK,CAACE,OAAO;;IAElC;IACA,IAAID,QAAQ,CAACE,SAAS,EAAE;MACpB,MAAM,IAAI,CAACL,eAAe,CAACM,OAAO,CAAC,CAAC;IACxC;EACJ;AACJ;AAEA,OAAO,MAAMC,+BAA+B,GAAGZ,oBAAoB,CAAC;EAChEa,WAAW,EAAEZ,0BAA0B;EACvCa,cAAc,EAAEX,8BAA8B;EAC9CY,YAAY,EAAE,CAACb,+BAA+B;AAClD,CAAC,CAAC","ignoreList":[]}
1
+ {"version":3,"names":["createImplementation","RedirectAfterCreateEventHandler","InvalidateRedirectsCacheUseCase","RedirectAfterCreateHandlerImpl","constructor","invalidateCache","handle","event","redirect","payload","isEnabled","execute","RedirectAfterCreateCacheHandler","abstraction","implementation","dependencies"],"sources":["RedirectAfterCreateHandler.ts"],"sourcesContent":["import { createImplementation } from \"@webiny/feature/api\";\nimport { RedirectAfterCreateEventHandler } from \"~/features/redirects/CreateRedirect/index.js\";\nimport { InvalidateRedirectsCacheUseCase } from \"./abstractions.js\";\n\nclass RedirectAfterCreateHandlerImpl implements RedirectAfterCreateEventHandler.Interface {\n constructor(private invalidateCache: InvalidateRedirectsCacheUseCase.Interface) {}\n\n async handle(event: RedirectAfterCreateEventHandler.Event): Promise<void> {\n const { redirect } = event.payload;\n\n // Only invalidate cache if the redirect is enabled\n if (redirect.isEnabled) {\n await this.invalidateCache.execute();\n }\n }\n}\n\nexport const RedirectAfterCreateCacheHandler = createImplementation({\n abstraction: RedirectAfterCreateEventHandler,\n implementation: RedirectAfterCreateHandlerImpl,\n dependencies: [InvalidateRedirectsCacheUseCase]\n});\n"],"mappings":"AAAA,SAASA,oBAAoB,QAAQ,qBAAqB;AAC1D,SAASC,+BAA+B;AACxC,SAASC,+BAA+B;AAExC,MAAMC,8BAA8B,CAAsD;EACtFC,WAAWA,CAASC,eAA0D,EAAE;IAAA,KAA5DA,eAA0D,GAA1DA,eAA0D;EAAG;EAEjF,MAAMC,MAAMA,CAACC,KAA4C,EAAiB;IACtE,MAAM;MAAEC;IAAS,CAAC,GAAGD,KAAK,CAACE,OAAO;;IAElC;IACA,IAAID,QAAQ,CAACE,SAAS,EAAE;MACpB,MAAM,IAAI,CAACL,eAAe,CAACM,OAAO,CAAC,CAAC;IACxC;EACJ;AACJ;AAEA,OAAO,MAAMC,+BAA+B,GAAGZ,oBAAoB,CAAC;EAChEa,WAAW,EAAEZ,+BAA+B;EAC5Ca,cAAc,EAAEX,8BAA8B;EAC9CY,YAAY,EAAE,CAACb,+BAA+B;AAClD,CAAC,CAAC","ignoreList":[]}
@@ -1,9 +1,9 @@
1
- import { RedirectAfterDeleteHandler } from "../../../features/redirects/DeleteRedirect/index.js";
1
+ import { RedirectAfterDeleteEventHandler } from "../../../features/redirects/DeleteRedirect/index.js";
2
2
  import { InvalidateRedirectsCacheUseCase } from "./abstractions.js";
3
- declare class RedirectAfterDeleteHandlerImpl implements RedirectAfterDeleteHandler.Interface {
3
+ declare class RedirectAfterDeleteHandlerImpl implements RedirectAfterDeleteEventHandler.Interface {
4
4
  private invalidateCache;
5
5
  constructor(invalidateCache: InvalidateRedirectsCacheUseCase.Interface);
6
- handle(event: RedirectAfterDeleteHandler.Event): Promise<void>;
6
+ handle(event: RedirectAfterDeleteEventHandler.Event): Promise<void>;
7
7
  }
8
8
  export declare const RedirectAfterDeleteCacheHandler: import("@webiny/di").Implementation<typeof RedirectAfterDeleteHandlerImpl>;
9
9
  export {};
@@ -1,5 +1,5 @@
1
1
  import { createImplementation } from "@webiny/feature/api";
2
- import { RedirectAfterDeleteHandler } from "../DeleteRedirect/index.js";
2
+ import { RedirectAfterDeleteEventHandler } from "../DeleteRedirect/index.js";
3
3
  import { InvalidateRedirectsCacheUseCase } from "./abstractions.js";
4
4
  class RedirectAfterDeleteHandlerImpl {
5
5
  constructor(invalidateCache) {
@@ -17,7 +17,7 @@ class RedirectAfterDeleteHandlerImpl {
17
17
  }
18
18
  }
19
19
  export const RedirectAfterDeleteCacheHandler = createImplementation({
20
- abstraction: RedirectAfterDeleteHandler,
20
+ abstraction: RedirectAfterDeleteEventHandler,
21
21
  implementation: RedirectAfterDeleteHandlerImpl,
22
22
  dependencies: [InvalidateRedirectsCacheUseCase]
23
23
  });
@@ -1 +1 @@
1
- {"version":3,"names":["createImplementation","RedirectAfterDeleteHandler","InvalidateRedirectsCacheUseCase","RedirectAfterDeleteHandlerImpl","constructor","invalidateCache","handle","event","redirect","payload","isEnabled","execute","RedirectAfterDeleteCacheHandler","abstraction","implementation","dependencies"],"sources":["RedirectAfterDeleteHandler.ts"],"sourcesContent":["import { createImplementation } from \"@webiny/feature/api\";\nimport { RedirectAfterDeleteHandler } from \"~/features/redirects/DeleteRedirect/index.js\";\nimport { InvalidateRedirectsCacheUseCase } from \"./abstractions.js\";\n\nclass RedirectAfterDeleteHandlerImpl implements RedirectAfterDeleteHandler.Interface {\n constructor(private invalidateCache: InvalidateRedirectsCacheUseCase.Interface) {}\n\n async handle(event: RedirectAfterDeleteHandler.Event): Promise<void> {\n const { redirect } = event.payload;\n\n // Only invalidate cache if the redirect was enabled\n if (redirect.isEnabled) {\n await this.invalidateCache.execute();\n }\n }\n}\n\nexport const RedirectAfterDeleteCacheHandler = createImplementation({\n abstraction: RedirectAfterDeleteHandler,\n implementation: RedirectAfterDeleteHandlerImpl,\n dependencies: [InvalidateRedirectsCacheUseCase]\n});\n"],"mappings":"AAAA,SAASA,oBAAoB,QAAQ,qBAAqB;AAC1D,SAASC,0BAA0B;AACnC,SAASC,+BAA+B;AAExC,MAAMC,8BAA8B,CAAiD;EACjFC,WAAWA,CAASC,eAA0D,EAAE;IAAA,KAA5DA,eAA0D,GAA1DA,eAA0D;EAAG;EAEjF,MAAMC,MAAMA,CAACC,KAAuC,EAAiB;IACjE,MAAM;MAAEC;IAAS,CAAC,GAAGD,KAAK,CAACE,OAAO;;IAElC;IACA,IAAID,QAAQ,CAACE,SAAS,EAAE;MACpB,MAAM,IAAI,CAACL,eAAe,CAACM,OAAO,CAAC,CAAC;IACxC;EACJ;AACJ;AAEA,OAAO,MAAMC,+BAA+B,GAAGZ,oBAAoB,CAAC;EAChEa,WAAW,EAAEZ,0BAA0B;EACvCa,cAAc,EAAEX,8BAA8B;EAC9CY,YAAY,EAAE,CAACb,+BAA+B;AAClD,CAAC,CAAC","ignoreList":[]}
1
+ {"version":3,"names":["createImplementation","RedirectAfterDeleteEventHandler","InvalidateRedirectsCacheUseCase","RedirectAfterDeleteHandlerImpl","constructor","invalidateCache","handle","event","redirect","payload","isEnabled","execute","RedirectAfterDeleteCacheHandler","abstraction","implementation","dependencies"],"sources":["RedirectAfterDeleteHandler.ts"],"sourcesContent":["import { createImplementation } from \"@webiny/feature/api\";\nimport { RedirectAfterDeleteEventHandler } from \"~/features/redirects/DeleteRedirect/index.js\";\nimport { InvalidateRedirectsCacheUseCase } from \"./abstractions.js\";\n\nclass RedirectAfterDeleteHandlerImpl implements RedirectAfterDeleteEventHandler.Interface {\n constructor(private invalidateCache: InvalidateRedirectsCacheUseCase.Interface) {}\n\n async handle(event: RedirectAfterDeleteEventHandler.Event): Promise<void> {\n const { redirect } = event.payload;\n\n // Only invalidate cache if the redirect was enabled\n if (redirect.isEnabled) {\n await this.invalidateCache.execute();\n }\n }\n}\n\nexport const RedirectAfterDeleteCacheHandler = createImplementation({\n abstraction: RedirectAfterDeleteEventHandler,\n implementation: RedirectAfterDeleteHandlerImpl,\n dependencies: [InvalidateRedirectsCacheUseCase]\n});\n"],"mappings":"AAAA,SAASA,oBAAoB,QAAQ,qBAAqB;AAC1D,SAASC,+BAA+B;AACxC,SAASC,+BAA+B;AAExC,MAAMC,8BAA8B,CAAsD;EACtFC,WAAWA,CAASC,eAA0D,EAAE;IAAA,KAA5DA,eAA0D,GAA1DA,eAA0D;EAAG;EAEjF,MAAMC,MAAMA,CAACC,KAA4C,EAAiB;IACtE,MAAM;MAAEC;IAAS,CAAC,GAAGD,KAAK,CAACE,OAAO;;IAElC;IACA,IAAID,QAAQ,CAACE,SAAS,EAAE;MACpB,MAAM,IAAI,CAACL,eAAe,CAACM,OAAO,CAAC,CAAC;IACxC;EACJ;AACJ;AAEA,OAAO,MAAMC,+BAA+B,GAAGZ,oBAAoB,CAAC;EAChEa,WAAW,EAAEZ,+BAA+B;EAC5Ca,cAAc,EAAEX,8BAA8B;EAC9CY,YAAY,EAAE,CAACb,+BAA+B;AAClD,CAAC,CAAC","ignoreList":[]}
@@ -1,9 +1,9 @@
1
- import { RedirectAfterUpdateHandler } from "../../../features/redirects/UpdateRedirect/index.js";
1
+ import { RedirectAfterUpdateEventHandler } from "../../../features/redirects/UpdateRedirect/index.js";
2
2
  import { InvalidateRedirectsCacheUseCase } from "./abstractions.js";
3
- declare class RedirectAfterUpdateHandlerImpl implements RedirectAfterUpdateHandler.Interface {
3
+ declare class RedirectAfterUpdateHandlerImpl implements RedirectAfterUpdateEventHandler.Interface {
4
4
  private invalidateCache;
5
5
  constructor(invalidateCache: InvalidateRedirectsCacheUseCase.Interface);
6
- handle(event: RedirectAfterUpdateHandler.Event): Promise<void>;
6
+ handle(event: RedirectAfterUpdateEventHandler.Event): Promise<void>;
7
7
  }
8
8
  export declare const RedirectAfterUpdateCacheHandler: import("@webiny/di").Implementation<typeof RedirectAfterUpdateHandlerImpl>;
9
9
  export {};
@@ -1,5 +1,5 @@
1
1
  import { createImplementation } from "@webiny/feature/api";
2
- import { RedirectAfterUpdateHandler } from "../UpdateRedirect/index.js";
2
+ import { RedirectAfterUpdateEventHandler } from "../UpdateRedirect/index.js";
3
3
  import { InvalidateRedirectsCacheUseCase } from "./abstractions.js";
4
4
  class RedirectAfterUpdateHandlerImpl {
5
5
  constructor(invalidateCache) {
@@ -18,7 +18,7 @@ class RedirectAfterUpdateHandlerImpl {
18
18
  }
19
19
  }
20
20
  export const RedirectAfterUpdateCacheHandler = createImplementation({
21
- abstraction: RedirectAfterUpdateHandler,
21
+ abstraction: RedirectAfterUpdateEventHandler,
22
22
  implementation: RedirectAfterUpdateHandlerImpl,
23
23
  dependencies: [InvalidateRedirectsCacheUseCase]
24
24
  });
@@ -1 +1 @@
1
- {"version":3,"names":["createImplementation","RedirectAfterUpdateHandler","InvalidateRedirectsCacheUseCase","RedirectAfterUpdateHandlerImpl","constructor","invalidateCache","handle","event","redirect","original","payload","redirectFrom","redirectTo","isEnabled","execute","RedirectAfterUpdateCacheHandler","abstraction","implementation","dependencies"],"sources":["RedirectAfterUpdateHandler.ts"],"sourcesContent":["import { createImplementation } from \"@webiny/feature/api\";\nimport { RedirectAfterUpdateHandler } from \"~/features/redirects/UpdateRedirect/index.js\";\nimport { InvalidateRedirectsCacheUseCase } from \"./abstractions.js\";\n\nclass RedirectAfterUpdateHandlerImpl implements RedirectAfterUpdateHandler.Interface {\n constructor(private invalidateCache: InvalidateRedirectsCacheUseCase.Interface) {}\n\n async handle(event: RedirectAfterUpdateHandler.Event): Promise<void> {\n const { redirect, original } = event.payload;\n\n // Invalidate cache if any redirect-related field changed or isEnabled changed\n if (\n redirect.redirectFrom !== original.redirectFrom ||\n redirect.redirectTo !== original.redirectTo ||\n redirect.isEnabled !== original.isEnabled\n ) {\n await this.invalidateCache.execute();\n }\n }\n}\n\nexport const RedirectAfterUpdateCacheHandler = createImplementation({\n abstraction: RedirectAfterUpdateHandler,\n implementation: RedirectAfterUpdateHandlerImpl,\n dependencies: [InvalidateRedirectsCacheUseCase]\n});\n"],"mappings":"AAAA,SAASA,oBAAoB,QAAQ,qBAAqB;AAC1D,SAASC,0BAA0B;AACnC,SAASC,+BAA+B;AAExC,MAAMC,8BAA8B,CAAiD;EACjFC,WAAWA,CAASC,eAA0D,EAAE;IAAA,KAA5DA,eAA0D,GAA1DA,eAA0D;EAAG;EAEjF,MAAMC,MAAMA,CAACC,KAAuC,EAAiB;IACjE,MAAM;MAAEC,QAAQ;MAAEC;IAAS,CAAC,GAAGF,KAAK,CAACG,OAAO;;IAE5C;IACA,IACIF,QAAQ,CAACG,YAAY,KAAKF,QAAQ,CAACE,YAAY,IAC/CH,QAAQ,CAACI,UAAU,KAAKH,QAAQ,CAACG,UAAU,IAC3CJ,QAAQ,CAACK,SAAS,KAAKJ,QAAQ,CAACI,SAAS,EAC3C;MACE,MAAM,IAAI,CAACR,eAAe,CAACS,OAAO,CAAC,CAAC;IACxC;EACJ;AACJ;AAEA,OAAO,MAAMC,+BAA+B,GAAGf,oBAAoB,CAAC;EAChEgB,WAAW,EAAEf,0BAA0B;EACvCgB,cAAc,EAAEd,8BAA8B;EAC9Ce,YAAY,EAAE,CAAChB,+BAA+B;AAClD,CAAC,CAAC","ignoreList":[]}
1
+ {"version":3,"names":["createImplementation","RedirectAfterUpdateEventHandler","InvalidateRedirectsCacheUseCase","RedirectAfterUpdateHandlerImpl","constructor","invalidateCache","handle","event","redirect","original","payload","redirectFrom","redirectTo","isEnabled","execute","RedirectAfterUpdateCacheHandler","abstraction","implementation","dependencies"],"sources":["RedirectAfterUpdateHandler.ts"],"sourcesContent":["import { createImplementation } from \"@webiny/feature/api\";\nimport { RedirectAfterUpdateEventHandler } from \"~/features/redirects/UpdateRedirect/index.js\";\nimport { InvalidateRedirectsCacheUseCase } from \"./abstractions.js\";\n\nclass RedirectAfterUpdateHandlerImpl implements RedirectAfterUpdateEventHandler.Interface {\n constructor(private invalidateCache: InvalidateRedirectsCacheUseCase.Interface) {}\n\n async handle(event: RedirectAfterUpdateEventHandler.Event): Promise<void> {\n const { redirect, original } = event.payload;\n\n // Invalidate cache if any redirect-related field changed or isEnabled changed\n if (\n redirect.redirectFrom !== original.redirectFrom ||\n redirect.redirectTo !== original.redirectTo ||\n redirect.isEnabled !== original.isEnabled\n ) {\n await this.invalidateCache.execute();\n }\n }\n}\n\nexport const RedirectAfterUpdateCacheHandler = createImplementation({\n abstraction: RedirectAfterUpdateEventHandler,\n implementation: RedirectAfterUpdateHandlerImpl,\n dependencies: [InvalidateRedirectsCacheUseCase]\n});\n"],"mappings":"AAAA,SAASA,oBAAoB,QAAQ,qBAAqB;AAC1D,SAASC,+BAA+B;AACxC,SAASC,+BAA+B;AAExC,MAAMC,8BAA8B,CAAsD;EACtFC,WAAWA,CAASC,eAA0D,EAAE;IAAA,KAA5DA,eAA0D,GAA1DA,eAA0D;EAAG;EAEjF,MAAMC,MAAMA,CAACC,KAA4C,EAAiB;IACtE,MAAM;MAAEC,QAAQ;MAAEC;IAAS,CAAC,GAAGF,KAAK,CAACG,OAAO;;IAE5C;IACA,IACIF,QAAQ,CAACG,YAAY,KAAKF,QAAQ,CAACE,YAAY,IAC/CH,QAAQ,CAACI,UAAU,KAAKH,QAAQ,CAACG,UAAU,IAC3CJ,QAAQ,CAACK,SAAS,KAAKJ,QAAQ,CAACI,SAAS,EAC3C;MACE,MAAM,IAAI,CAACR,eAAe,CAACS,OAAO,CAAC,CAAC;IACxC;EACJ;AACJ;AAEA,OAAO,MAAMC,+BAA+B,GAAGf,oBAAoB,CAAC;EAChEgB,WAAW,EAAEf,+BAA+B;EAC5CgB,cAAc,EAAEd,8BAA8B;EAC9Ce,YAAY,EAAE,CAAChB,+BAA+B;AAClD,CAAC,CAAC","ignoreList":[]}
@@ -6,6 +6,7 @@ export interface IInvalidateRedirectsCacheUseCaseErrors {
6
6
  taskError: BaseError;
7
7
  }
8
8
  type UseCaseError = IInvalidateRedirectsCacheUseCaseErrors[keyof IInvalidateRedirectsCacheUseCaseErrors];
9
+ /** Invalidate the redirects cache. */
9
10
  export declare const InvalidateRedirectsCacheUseCase: import("@webiny/di").Abstraction<IInvalidateRedirectsCacheUseCase>;
10
11
  export declare namespace InvalidateRedirectsCacheUseCase {
11
12
  type Interface = IInvalidateRedirectsCacheUseCase;
@@ -4,6 +4,7 @@ import { createAbstraction } from "@webiny/feature/api";
4
4
  // Use Case Abstraction
5
5
  // ============================================================================
6
6
 
7
+ /** Invalidate the redirects cache. */
7
8
  export const InvalidateRedirectsCacheUseCase = createAbstraction("Wb/InvalidateRedirectsCacheUseCase");
8
9
 
9
10
  //# sourceMappingURL=abstractions.js.map
@@ -1 +1 @@
1
- {"version":3,"names":["createAbstraction","InvalidateRedirectsCacheUseCase"],"sources":["abstractions.ts"],"sourcesContent":["import { createAbstraction } from \"@webiny/feature/api\";\nimport type { BaseError, Result } from \"@webiny/feature/api\";\n\n// ============================================================================\n// Use Case Abstraction\n// ============================================================================\n\nexport interface IInvalidateRedirectsCacheUseCase {\n execute(): Promise<Result<void, UseCaseError>>;\n}\n\nexport interface IInvalidateRedirectsCacheUseCaseErrors {\n // Task service errors will be captured as generic errors\n taskError: BaseError;\n}\n\ntype UseCaseError =\n IInvalidateRedirectsCacheUseCaseErrors[keyof IInvalidateRedirectsCacheUseCaseErrors];\n\nexport const InvalidateRedirectsCacheUseCase = createAbstraction<IInvalidateRedirectsCacheUseCase>(\n \"Wb/InvalidateRedirectsCacheUseCase\"\n);\n\nexport namespace InvalidateRedirectsCacheUseCase {\n export type Interface = IInvalidateRedirectsCacheUseCase;\n export type Return = Promise<Result<void, UseCaseError>>;\n export type Error = UseCaseError;\n}\n"],"mappings":"AAAA,SAASA,iBAAiB,QAAQ,qBAAqB;;AAGvD;AACA;AACA;;AAcA,OAAO,MAAMC,+BAA+B,GAAGD,iBAAiB,CAC5D,oCACJ,CAAC","ignoreList":[]}
1
+ {"version":3,"names":["createAbstraction","InvalidateRedirectsCacheUseCase"],"sources":["abstractions.ts"],"sourcesContent":["import { createAbstraction } from \"@webiny/feature/api\";\nimport type { BaseError, Result } from \"@webiny/feature/api\";\n\n// ============================================================================\n// Use Case Abstraction\n// ============================================================================\n\nexport interface IInvalidateRedirectsCacheUseCase {\n execute(): Promise<Result<void, UseCaseError>>;\n}\n\nexport interface IInvalidateRedirectsCacheUseCaseErrors {\n // Task service errors will be captured as generic errors\n taskError: BaseError;\n}\n\ntype UseCaseError =\n IInvalidateRedirectsCacheUseCaseErrors[keyof IInvalidateRedirectsCacheUseCaseErrors];\n\n/** Invalidate the redirects cache. */\nexport const InvalidateRedirectsCacheUseCase = createAbstraction<IInvalidateRedirectsCacheUseCase>(\n \"Wb/InvalidateRedirectsCacheUseCase\"\n);\n\nexport namespace InvalidateRedirectsCacheUseCase {\n export type Interface = IInvalidateRedirectsCacheUseCase;\n export type Return = Promise<Result<void, UseCaseError>>;\n export type Error = UseCaseError;\n}\n"],"mappings":"AAAA,SAASA,iBAAiB,QAAQ,qBAAqB;;AAGvD;AACA;AACA;;AAcA;AACA,OAAO,MAAMC,+BAA+B,GAAGD,iBAAiB,CAC5D,oCACJ,CAAC","ignoreList":[]}
@@ -1 +1,4 @@
1
- export declare const InvalidateRedirectsCacheFeature: import("@webiny/feature/api/createFeature.js").FeatureDefinition<unknown>;
1
+ export declare const InvalidateRedirectsCacheFeature: {
2
+ name: string;
3
+ register(container: import("@webiny/di").Container): void;
4
+ };
@@ -1,7 +1,11 @@
1
1
  import { ListRedirectsUseCase as UseCaseAbstraction, ListRedirectsRepository } from "./abstractions.js";
2
+ import { WbPermissions } from "../../../features/permissions/abstractions.js";
3
+ import { IdentityContext } from "@webiny/api-core/features/security/IdentityContext/index.js";
2
4
  declare class ListRedirectsUseCaseImpl implements UseCaseAbstraction.Interface {
5
+ private permissions;
6
+ private identityContext;
3
7
  private repository;
4
- constructor(repository: ListRedirectsRepository.Interface);
8
+ constructor(permissions: WbPermissions.Interface, identityContext: IdentityContext.Interface, repository: ListRedirectsRepository.Interface);
5
9
  execute(params: UseCaseAbstraction.Params): UseCaseAbstraction.Return;
6
10
  }
7
11
  export declare const ListRedirectsUseCase: import("@webiny/di").Implementation<typeof ListRedirectsUseCaseImpl>;
@@ -1,17 +1,36 @@
1
- import { createImplementation } from "@webiny/feature/api";
1
+ import { Result, createImplementation } from "@webiny/feature/api";
2
2
  import { ListRedirectsUseCase as UseCaseAbstraction, ListRedirectsRepository } from "./abstractions.js";
3
+ import { WbPermissions } from "../../permissions/abstractions.js";
4
+ import { RedirectNotAuthorizedError } from "../../../domain/redirect/errors.js";
5
+ import { IdentityContext } from "@webiny/api-core/features/security/IdentityContext/index.js";
3
6
  class ListRedirectsUseCaseImpl {
4
- constructor(repository) {
7
+ constructor(permissions, identityContext, repository) {
8
+ this.permissions = permissions;
9
+ this.identityContext = identityContext;
5
10
  this.repository = repository;
6
11
  }
7
12
  async execute(params) {
8
- return await this.repository.execute(params);
13
+ const hasPermission = await this.permissions.canRead("redirect");
14
+ if (!hasPermission) {
15
+ return Result.fail(new RedirectNotAuthorizedError());
16
+ }
17
+ const where = {
18
+ ...params.where
19
+ };
20
+ if (await this.permissions.onlyOwnRecords("redirect")) {
21
+ const identity = this.identityContext.getIdentity();
22
+ where.createdBy = identity.id;
23
+ }
24
+ return await this.repository.execute({
25
+ ...params,
26
+ where
27
+ });
9
28
  }
10
29
  }
11
30
  export const ListRedirectsUseCase = createImplementation({
12
31
  abstraction: UseCaseAbstraction,
13
32
  implementation: ListRedirectsUseCaseImpl,
14
- dependencies: [ListRedirectsRepository]
33
+ dependencies: [WbPermissions, IdentityContext, ListRedirectsRepository]
15
34
  });
16
35
 
17
36
  //# sourceMappingURL=ListRedirectsUseCase.js.map
@@ -1 +1 @@
1
- {"version":3,"names":["createImplementation","ListRedirectsUseCase","UseCaseAbstraction","ListRedirectsRepository","ListRedirectsUseCaseImpl","constructor","repository","execute","params","abstraction","implementation","dependencies"],"sources":["ListRedirectsUseCase.ts"],"sourcesContent":["import { createImplementation } from \"@webiny/feature/api\";\nimport {\n ListRedirectsUseCase as UseCaseAbstraction,\n ListRedirectsRepository\n} from \"./abstractions.js\";\n\nclass ListRedirectsUseCaseImpl implements UseCaseAbstraction.Interface {\n constructor(private repository: ListRedirectsRepository.Interface) {}\n\n async execute(params: UseCaseAbstraction.Params): UseCaseAbstraction.Return {\n return await this.repository.execute(params);\n }\n}\n\nexport const ListRedirectsUseCase = createImplementation({\n abstraction: UseCaseAbstraction,\n implementation: ListRedirectsUseCaseImpl,\n dependencies: [ListRedirectsRepository]\n});\n"],"mappings":"AAAA,SAASA,oBAAoB,QAAQ,qBAAqB;AAC1D,SACIC,oBAAoB,IAAIC,kBAAkB,EAC1CC,uBAAuB;AAG3B,MAAMC,wBAAwB,CAAyC;EACnEC,WAAWA,CAASC,UAA6C,EAAE;IAAA,KAA/CA,UAA6C,GAA7CA,UAA6C;EAAG;EAEpE,MAAMC,OAAOA,CAACC,MAAiC,EAA6B;IACxE,OAAO,MAAM,IAAI,CAACF,UAAU,CAACC,OAAO,CAACC,MAAM,CAAC;EAChD;AACJ;AAEA,OAAO,MAAMP,oBAAoB,GAAGD,oBAAoB,CAAC;EACrDS,WAAW,EAAEP,kBAAkB;EAC/BQ,cAAc,EAAEN,wBAAwB;EACxCO,YAAY,EAAE,CAACR,uBAAuB;AAC1C,CAAC,CAAC","ignoreList":[]}
1
+ {"version":3,"names":["Result","createImplementation","ListRedirectsUseCase","UseCaseAbstraction","ListRedirectsRepository","WbPermissions","RedirectNotAuthorizedError","IdentityContext","ListRedirectsUseCaseImpl","constructor","permissions","identityContext","repository","execute","params","hasPermission","canRead","fail","where","onlyOwnRecords","identity","getIdentity","createdBy","id","abstraction","implementation","dependencies"],"sources":["ListRedirectsUseCase.ts"],"sourcesContent":["import { Result, createImplementation } from \"@webiny/feature/api\";\nimport {\n ListRedirectsUseCase as UseCaseAbstraction,\n ListRedirectsRepository\n} from \"./abstractions.js\";\nimport { WbPermissions } from \"~/features/permissions/abstractions.js\";\nimport { RedirectNotAuthorizedError } from \"~/domain/redirect/errors.js\";\nimport { IdentityContext } from \"@webiny/api-core/features/security/IdentityContext/index.js\";\n\nclass ListRedirectsUseCaseImpl implements UseCaseAbstraction.Interface {\n constructor(\n private permissions: WbPermissions.Interface,\n private identityContext: IdentityContext.Interface,\n private repository: ListRedirectsRepository.Interface\n ) {}\n\n async execute(params: UseCaseAbstraction.Params): UseCaseAbstraction.Return {\n const hasPermission = await this.permissions.canRead(\"redirect\");\n if (!hasPermission) {\n return Result.fail(new RedirectNotAuthorizedError());\n }\n\n const where = { ...params.where };\n\n if (await this.permissions.onlyOwnRecords(\"redirect\")) {\n const identity = this.identityContext.getIdentity();\n where.createdBy = identity.id;\n }\n\n return await this.repository.execute({ ...params, where });\n }\n}\n\nexport const ListRedirectsUseCase = createImplementation({\n abstraction: UseCaseAbstraction,\n implementation: ListRedirectsUseCaseImpl,\n dependencies: [WbPermissions, IdentityContext, ListRedirectsRepository]\n});\n"],"mappings":"AAAA,SAASA,MAAM,EAAEC,oBAAoB,QAAQ,qBAAqB;AAClE,SACIC,oBAAoB,IAAIC,kBAAkB,EAC1CC,uBAAuB;AAE3B,SAASC,aAAa;AACtB,SAASC,0BAA0B;AACnC,SAASC,eAAe,QAAQ,6DAA6D;AAE7F,MAAMC,wBAAwB,CAAyC;EACnEC,WAAWA,CACCC,WAAoC,EACpCC,eAA0C,EAC1CC,UAA6C,EACvD;IAAA,KAHUF,WAAoC,GAApCA,WAAoC;IAAA,KACpCC,eAA0C,GAA1CA,eAA0C;IAAA,KAC1CC,UAA6C,GAA7CA,UAA6C;EACtD;EAEH,MAAMC,OAAOA,CAACC,MAAiC,EAA6B;IACxE,MAAMC,aAAa,GAAG,MAAM,IAAI,CAACL,WAAW,CAACM,OAAO,CAAC,UAAU,CAAC;IAChE,IAAI,CAACD,aAAa,EAAE;MAChB,OAAOf,MAAM,CAACiB,IAAI,CAAC,IAAIX,0BAA0B,CAAC,CAAC,CAAC;IACxD;IAEA,MAAMY,KAAK,GAAG;MAAE,GAAGJ,MAAM,CAACI;IAAM,CAAC;IAEjC,IAAI,MAAM,IAAI,CAACR,WAAW,CAACS,cAAc,CAAC,UAAU,CAAC,EAAE;MACnD,MAAMC,QAAQ,GAAG,IAAI,CAACT,eAAe,CAACU,WAAW,CAAC,CAAC;MACnDH,KAAK,CAACI,SAAS,GAAGF,QAAQ,CAACG,EAAE;IACjC;IAEA,OAAO,MAAM,IAAI,CAACX,UAAU,CAACC,OAAO,CAAC;MAAE,GAAGC,MAAM;MAAEI;IAAM,CAAC,CAAC;EAC9D;AACJ;AAEA,OAAO,MAAMhB,oBAAoB,GAAGD,oBAAoB,CAAC;EACrDuB,WAAW,EAAErB,kBAAkB;EAC/BsB,cAAc,EAAEjB,wBAAwB;EACxCkB,YAAY,EAAE,CAACrB,aAAa,EAAEE,eAAe,EAAEH,uBAAuB;AAC1E,CAAC,CAAC","ignoreList":[]}
@@ -1,9 +1,10 @@
1
1
  import type { Result } from "@webiny/feature/api";
2
2
  import type { CmsEntryListSort } from "@webiny/api-headless-cms/types/index.js";
3
3
  import type { WbRedirect } from "../../../domain/redirect/abstractions.js";
4
- import type { RedirectPersistenceError } from "../../../domain/redirect/errors.js";
4
+ import type { RedirectPersistenceError, RedirectNotAuthorizedError } from "../../../domain/redirect/errors.js";
5
5
  export interface IListWbRedirectsWhere {
6
6
  latest?: boolean;
7
+ createdBy?: string;
7
8
  redirectFrom?: string;
8
9
  redirectFrom_not?: string;
9
10
  redirectFrom_in?: string[];
@@ -53,9 +54,11 @@ export interface IListRedirectsUseCase {
53
54
  execute(params: ListWbRedirectsParams): Promise<Result<ListRedirectsResult, UseCaseError>>;
54
55
  }
55
56
  export interface IListRedirectsUseCaseErrors {
57
+ notAuthorized: RedirectNotAuthorizedError;
56
58
  persistence: RedirectPersistenceError;
57
59
  }
58
60
  type UseCaseError = IListRedirectsUseCaseErrors[keyof IListRedirectsUseCaseErrors];
61
+ /** List URL redirects with filtering. */
59
62
  export declare const ListRedirectsUseCase: import("@webiny/di").Abstraction<IListRedirectsUseCase>;
60
63
  export declare namespace ListRedirectsUseCase {
61
64
  type Interface = IListRedirectsUseCase;
@@ -14,6 +14,7 @@ export const ListRedirectsRepository = createAbstraction("Wb/ListRedirectsReposi
14
14
  // Use Case Abstraction
15
15
  // ============================================================================
16
16
 
17
+ /** List URL redirects with filtering. */
17
18
  export const ListRedirectsUseCase = createAbstraction("Wb/ListRedirectsUseCase");
18
19
 
19
20
  //# sourceMappingURL=abstractions.js.map
@@ -1 +1 @@
1
- {"version":3,"names":["createAbstraction","ListRedirectsRepository","ListRedirectsUseCase"],"sources":["abstractions.ts"],"sourcesContent":["import type { Result } from \"@webiny/feature/api\";\nimport { createAbstraction } from \"@webiny/feature/api\";\nimport type { CmsEntryListSort } from \"@webiny/api-headless-cms/types/index.js\";\nimport type { WbRedirect } from \"~/domain/redirect/abstractions.js\";\nimport type { RedirectPersistenceError } from \"~/domain/redirect/errors.js\";\n\n// ============================================================================\n// Type Definitions\n// ============================================================================\n\nexport interface IListWbRedirectsWhere {\n latest?: boolean;\n redirectFrom?: string;\n redirectFrom_not?: string;\n redirectFrom_in?: string[];\n redirectFrom_not_in?: string[];\n\n redirectTo?: string;\n redirectTo_not?: string;\n redirectTo_in?: string[];\n redirectTo_not_in?: string[];\n\n redirectType?: string;\n redirectType_not?: string;\n redirectType_in?: string[];\n redirectType_not_in?: string[];\n\n isEnabled?: boolean;\n}\n\nexport interface ListWbRedirectsParams {\n where?: IListWbRedirectsWhere;\n sort?: CmsEntryListSort;\n limit?: number;\n after?: string | null;\n search?: string;\n}\n\nexport interface WbListMeta {\n hasMoreItems: boolean;\n totalCount: number;\n cursor: string | null;\n}\n\nexport type ListRedirectsResult = { redirects: WbRedirect[]; meta: WbListMeta };\n\n// ============================================================================\n// Repository Abstraction\n// ============================================================================\n\nexport interface IListRedirectsRepository {\n execute(params: ListWbRedirectsParams): Promise<Result<ListRedirectsResult, RepositoryError>>;\n}\n\nexport interface IListRedirectsRepositoryErrors {\n persistence: RedirectPersistenceError;\n}\n\ntype RepositoryError = IListRedirectsRepositoryErrors[keyof IListRedirectsRepositoryErrors];\n\nexport const ListRedirectsRepository = createAbstraction<IListRedirectsRepository>(\n \"Wb/ListRedirectsRepository\"\n);\n\nexport namespace ListRedirectsRepository {\n export type Interface = IListRedirectsRepository;\n export type Params = ListWbRedirectsParams;\n export type Return = Promise<Result<ListRedirectsResult, RepositoryError>>;\n export type Error = RepositoryError;\n export type Redirect = WbRedirect;\n}\n\n// ============================================================================\n// Use Case Abstraction\n// ============================================================================\n\nexport interface IListRedirectsUseCase {\n execute(params: ListWbRedirectsParams): Promise<Result<ListRedirectsResult, UseCaseError>>;\n}\n\nexport interface IListRedirectsUseCaseErrors {\n persistence: RedirectPersistenceError;\n}\n\ntype UseCaseError = IListRedirectsUseCaseErrors[keyof IListRedirectsUseCaseErrors];\n\nexport const ListRedirectsUseCase =\n createAbstraction<IListRedirectsUseCase>(\"Wb/ListRedirectsUseCase\");\n\nexport namespace ListRedirectsUseCase {\n export type Interface = IListRedirectsUseCase;\n export type Params = ListWbRedirectsParams;\n export type Return = Promise<Result<ListRedirectsResult, UseCaseError>>;\n export type Error = UseCaseError;\n export type Redirect = WbRedirect;\n}\n"],"mappings":"AACA,SAASA,iBAAiB,QAAQ,qBAAqB;;AAKvD;AACA;AACA;;AAsCA;AACA;AACA;;AAYA,OAAO,MAAMC,uBAAuB,GAAGD,iBAAiB,CACpD,4BACJ,CAAC;;AAUD;AACA;AACA;;AAYA,OAAO,MAAME,oBAAoB,GAC7BF,iBAAiB,CAAwB,yBAAyB,CAAC","ignoreList":[]}
1
+ {"version":3,"names":["createAbstraction","ListRedirectsRepository","ListRedirectsUseCase"],"sources":["abstractions.ts"],"sourcesContent":["import type { Result } from \"@webiny/feature/api\";\nimport { createAbstraction } from \"@webiny/feature/api\";\nimport type { CmsEntryListSort } from \"@webiny/api-headless-cms/types/index.js\";\nimport type { WbRedirect } from \"~/domain/redirect/abstractions.js\";\nimport type {\n RedirectPersistenceError,\n RedirectNotAuthorizedError\n} from \"~/domain/redirect/errors.js\";\n\n// ============================================================================\n// Type Definitions\n// ============================================================================\n\nexport interface IListWbRedirectsWhere {\n latest?: boolean;\n createdBy?: string;\n redirectFrom?: string;\n redirectFrom_not?: string;\n redirectFrom_in?: string[];\n redirectFrom_not_in?: string[];\n\n redirectTo?: string;\n redirectTo_not?: string;\n redirectTo_in?: string[];\n redirectTo_not_in?: string[];\n\n redirectType?: string;\n redirectType_not?: string;\n redirectType_in?: string[];\n redirectType_not_in?: string[];\n\n isEnabled?: boolean;\n}\n\nexport interface ListWbRedirectsParams {\n where?: IListWbRedirectsWhere;\n sort?: CmsEntryListSort;\n limit?: number;\n after?: string | null;\n search?: string;\n}\n\nexport interface WbListMeta {\n hasMoreItems: boolean;\n totalCount: number;\n cursor: string | null;\n}\n\nexport type ListRedirectsResult = { redirects: WbRedirect[]; meta: WbListMeta };\n\n// ============================================================================\n// Repository Abstraction\n// ============================================================================\n\nexport interface IListRedirectsRepository {\n execute(params: ListWbRedirectsParams): Promise<Result<ListRedirectsResult, RepositoryError>>;\n}\n\nexport interface IListRedirectsRepositoryErrors {\n persistence: RedirectPersistenceError;\n}\n\ntype RepositoryError = IListRedirectsRepositoryErrors[keyof IListRedirectsRepositoryErrors];\n\nexport const ListRedirectsRepository = createAbstraction<IListRedirectsRepository>(\n \"Wb/ListRedirectsRepository\"\n);\n\nexport namespace ListRedirectsRepository {\n export type Interface = IListRedirectsRepository;\n export type Params = ListWbRedirectsParams;\n export type Return = Promise<Result<ListRedirectsResult, RepositoryError>>;\n export type Error = RepositoryError;\n export type Redirect = WbRedirect;\n}\n\n// ============================================================================\n// Use Case Abstraction\n// ============================================================================\n\nexport interface IListRedirectsUseCase {\n execute(params: ListWbRedirectsParams): Promise<Result<ListRedirectsResult, UseCaseError>>;\n}\n\nexport interface IListRedirectsUseCaseErrors {\n notAuthorized: RedirectNotAuthorizedError;\n persistence: RedirectPersistenceError;\n}\n\ntype UseCaseError = IListRedirectsUseCaseErrors[keyof IListRedirectsUseCaseErrors];\n\n/** List URL redirects with filtering. */\nexport const ListRedirectsUseCase =\n createAbstraction<IListRedirectsUseCase>(\"Wb/ListRedirectsUseCase\");\n\nexport namespace ListRedirectsUseCase {\n export type Interface = IListRedirectsUseCase;\n export type Params = ListWbRedirectsParams;\n export type Return = Promise<Result<ListRedirectsResult, UseCaseError>>;\n export type Error = UseCaseError;\n export type Redirect = WbRedirect;\n}\n"],"mappings":"AACA,SAASA,iBAAiB,QAAQ,qBAAqB;;AAQvD;AACA;AACA;;AAuCA;AACA;AACA;;AAYA,OAAO,MAAMC,uBAAuB,GAAGD,iBAAiB,CACpD,4BACJ,CAAC;;AAUD;AACA;AACA;;AAaA;AACA,OAAO,MAAME,oBAAoB,GAC7BF,iBAAiB,CAAwB,yBAAyB,CAAC","ignoreList":[]}
@@ -1 +1,4 @@
1
- export declare const ListRedirectsFeature: import("@webiny/feature/api/createFeature.js").FeatureDefinition<unknown>;
1
+ export declare const ListRedirectsFeature: {
2
+ name: string;
3
+ register(container: import("@webiny/di").Container): void;
4
+ };
@@ -1,11 +1,13 @@
1
- import { EventPublisher as EventPublisherAbstraction } from "@webiny/api-core/features/EventPublisher";
1
+ import { EventPublisher as EventPublisherAbstraction } from "@webiny/api-core/features/eventPublisher/index.js";
2
2
  import { MoveRedirectUseCase as UseCaseAbstraction, MoveRedirectRepository } from "./abstractions.js";
3
3
  import { GetRedirectByIdUseCase } from "../../../features/redirects/GetRedirectById/index.js";
4
+ import { WbPermissions } from "../../../features/permissions/abstractions.js";
4
5
  declare class MoveRedirectUseCaseImpl implements UseCaseAbstraction.Interface {
6
+ private permissions;
5
7
  private eventPublisher;
6
8
  private getRedirectById;
7
9
  private repository;
8
- constructor(eventPublisher: EventPublisherAbstraction.Interface, getRedirectById: GetRedirectByIdUseCase.Interface, repository: MoveRedirectRepository.Interface);
10
+ constructor(permissions: WbPermissions.Interface, eventPublisher: EventPublisherAbstraction.Interface, getRedirectById: GetRedirectByIdUseCase.Interface, repository: MoveRedirectRepository.Interface);
9
11
  execute(params: UseCaseAbstraction.Params): UseCaseAbstraction.Return;
10
12
  }
11
13
  export declare const MoveRedirectUseCase: import("@webiny/di").Implementation<typeof MoveRedirectUseCaseImpl>;
@@ -1,21 +1,33 @@
1
1
  import { Result, createImplementation } from "@webiny/feature/api";
2
- import { EventPublisher } from "@webiny/api-core/features/EventPublisher";
2
+ import { EventPublisher } from "@webiny/api-core/features/eventPublisher/index.js";
3
3
  import { MoveRedirectUseCase as UseCaseAbstraction, MoveRedirectRepository } from "./abstractions.js";
4
4
  import { RedirectBeforeMoveEvent, RedirectAfterMoveEvent } from "./events.js";
5
5
  import { GetRedirectByIdUseCase } from "../GetRedirectById/index.js";
6
+ import { WbPermissions } from "../../permissions/abstractions.js";
7
+ import { RedirectNotAuthorizedError } from "../../../domain/redirect/errors.js";
6
8
  class MoveRedirectUseCaseImpl {
7
- constructor(eventPublisher, getRedirectById, repository) {
9
+ constructor(permissions, eventPublisher, getRedirectById, repository) {
10
+ this.permissions = permissions;
8
11
  this.eventPublisher = eventPublisher;
9
12
  this.getRedirectById = getRedirectById;
10
13
  this.repository = repository;
11
14
  }
12
15
  async execute(params) {
16
+ const hasPermission = await this.permissions.canEdit("redirect");
17
+ if (!hasPermission) {
18
+ return Result.fail(new RedirectNotAuthorizedError());
19
+ }
20
+
13
21
  // Get the original redirect for events
14
22
  const getResult = await this.getRedirectById.execute(params.id);
15
23
  if (getResult.isFail()) {
16
24
  return getResult;
17
25
  }
18
26
  const original = getResult.value;
27
+ const canEdit = await this.permissions.canEdit("redirect", original);
28
+ if (!canEdit) {
29
+ return Result.fail(new RedirectNotAuthorizedError());
30
+ }
19
31
 
20
32
  // Publish before move event
21
33
  const beforeEvent = new RedirectBeforeMoveEvent({
@@ -43,7 +55,7 @@ class MoveRedirectUseCaseImpl {
43
55
  export const MoveRedirectUseCase = createImplementation({
44
56
  abstraction: UseCaseAbstraction,
45
57
  implementation: MoveRedirectUseCaseImpl,
46
- dependencies: [EventPublisher, GetRedirectByIdUseCase, MoveRedirectRepository]
58
+ dependencies: [WbPermissions, EventPublisher, GetRedirectByIdUseCase, MoveRedirectRepository]
47
59
  });
48
60
 
49
61
  //# sourceMappingURL=MoveRedirectUseCase.js.map
@@ -1 +1 @@
1
- {"version":3,"names":["Result","createImplementation","EventPublisher","MoveRedirectUseCase","UseCaseAbstraction","MoveRedirectRepository","RedirectBeforeMoveEvent","RedirectAfterMoveEvent","GetRedirectByIdUseCase","MoveRedirectUseCaseImpl","constructor","eventPublisher","getRedirectById","repository","execute","params","getResult","id","isFail","original","value","beforeEvent","input","publish","result","afterEvent","redirect","ok","abstraction","implementation","dependencies"],"sources":["MoveRedirectUseCase.ts"],"sourcesContent":["import { Result, createImplementation } from \"@webiny/feature/api\";\nimport {\n EventPublisher,\n EventPublisher as EventPublisherAbstraction\n} from \"@webiny/api-core/features/EventPublisher\";\nimport {\n MoveRedirectUseCase as UseCaseAbstraction,\n MoveRedirectRepository\n} from \"./abstractions.js\";\nimport { RedirectBeforeMoveEvent, RedirectAfterMoveEvent } from \"./events.js\";\nimport { GetRedirectByIdUseCase } from \"~/features/redirects/GetRedirectById/index.js\";\n\nclass MoveRedirectUseCaseImpl implements UseCaseAbstraction.Interface {\n constructor(\n private eventPublisher: EventPublisherAbstraction.Interface,\n private getRedirectById: GetRedirectByIdUseCase.Interface,\n private repository: MoveRedirectRepository.Interface\n ) {}\n\n async execute(params: UseCaseAbstraction.Params): UseCaseAbstraction.Return {\n // Get the original redirect for events\n const getResult = await this.getRedirectById.execute(params.id);\n\n if (getResult.isFail()) {\n return getResult;\n }\n\n const original = getResult.value;\n\n // Publish before move event\n const beforeEvent = new RedirectBeforeMoveEvent({\n original,\n input: params\n });\n\n await this.eventPublisher.publish(beforeEvent);\n\n // Execute the move operation\n const result = await this.repository.execute(params);\n\n if (result.isFail()) {\n return result;\n }\n\n // Publish after move event\n const afterEvent = new RedirectAfterMoveEvent({\n original,\n input: params,\n redirect: result.value\n });\n\n await this.eventPublisher.publish(afterEvent);\n\n return Result.ok(result.value);\n }\n}\n\nexport const MoveRedirectUseCase = createImplementation({\n abstraction: UseCaseAbstraction,\n implementation: MoveRedirectUseCaseImpl,\n dependencies: [EventPublisher, GetRedirectByIdUseCase, MoveRedirectRepository]\n});\n"],"mappings":"AAAA,SAASA,MAAM,EAAEC,oBAAoB,QAAQ,qBAAqB;AAClE,SACIC,cAAc,QAEX,0CAA0C;AACjD,SACIC,mBAAmB,IAAIC,kBAAkB,EACzCC,sBAAsB;AAE1B,SAASC,uBAAuB,EAAEC,sBAAsB;AACxD,SAASC,sBAAsB;AAE/B,MAAMC,uBAAuB,CAAyC;EAClEC,WAAWA,CACCC,cAAmD,EACnDC,eAAiD,EACjDC,UAA4C,EACtD;IAAA,KAHUF,cAAmD,GAAnDA,cAAmD;IAAA,KACnDC,eAAiD,GAAjDA,eAAiD;IAAA,KACjDC,UAA4C,GAA5CA,UAA4C;EACrD;EAEH,MAAMC,OAAOA,CAACC,MAAiC,EAA6B;IACxE;IACA,MAAMC,SAAS,GAAG,MAAM,IAAI,CAACJ,eAAe,CAACE,OAAO,CAACC,MAAM,CAACE,EAAE,CAAC;IAE/D,IAAID,SAAS,CAACE,MAAM,CAAC,CAAC,EAAE;MACpB,OAAOF,SAAS;IACpB;IAEA,MAAMG,QAAQ,GAAGH,SAAS,CAACI,KAAK;;IAEhC;IACA,MAAMC,WAAW,GAAG,IAAIf,uBAAuB,CAAC;MAC5Ca,QAAQ;MACRG,KAAK,EAAEP;IACX,CAAC,CAAC;IAEF,MAAM,IAAI,CAACJ,cAAc,CAACY,OAAO,CAACF,WAAW,CAAC;;IAE9C;IACA,MAAMG,MAAM,GAAG,MAAM,IAAI,CAACX,UAAU,CAACC,OAAO,CAACC,MAAM,CAAC;IAEpD,IAAIS,MAAM,CAACN,MAAM,CAAC,CAAC,EAAE;MACjB,OAAOM,MAAM;IACjB;;IAEA;IACA,MAAMC,UAAU,GAAG,IAAIlB,sBAAsB,CAAC;MAC1CY,QAAQ;MACRG,KAAK,EAAEP,MAAM;MACbW,QAAQ,EAAEF,MAAM,CAACJ;IACrB,CAAC,CAAC;IAEF,MAAM,IAAI,CAACT,cAAc,CAACY,OAAO,CAACE,UAAU,CAAC;IAE7C,OAAOzB,MAAM,CAAC2B,EAAE,CAACH,MAAM,CAACJ,KAAK,CAAC;EAClC;AACJ;AAEA,OAAO,MAAMjB,mBAAmB,GAAGF,oBAAoB,CAAC;EACpD2B,WAAW,EAAExB,kBAAkB;EAC/ByB,cAAc,EAAEpB,uBAAuB;EACvCqB,YAAY,EAAE,CAAC5B,cAAc,EAAEM,sBAAsB,EAAEH,sBAAsB;AACjF,CAAC,CAAC","ignoreList":[]}
1
+ {"version":3,"names":["Result","createImplementation","EventPublisher","MoveRedirectUseCase","UseCaseAbstraction","MoveRedirectRepository","RedirectBeforeMoveEvent","RedirectAfterMoveEvent","GetRedirectByIdUseCase","WbPermissions","RedirectNotAuthorizedError","MoveRedirectUseCaseImpl","constructor","permissions","eventPublisher","getRedirectById","repository","execute","params","hasPermission","canEdit","fail","getResult","id","isFail","original","value","beforeEvent","input","publish","result","afterEvent","redirect","ok","abstraction","implementation","dependencies"],"sources":["MoveRedirectUseCase.ts"],"sourcesContent":["import { Result, createImplementation } from \"@webiny/feature/api\";\nimport {\n EventPublisher,\n EventPublisher as EventPublisherAbstraction\n} from \"@webiny/api-core/features/eventPublisher/index.js\";\nimport {\n MoveRedirectUseCase as UseCaseAbstraction,\n MoveRedirectRepository\n} from \"./abstractions.js\";\nimport { RedirectBeforeMoveEvent, RedirectAfterMoveEvent } from \"./events.js\";\nimport { GetRedirectByIdUseCase } from \"~/features/redirects/GetRedirectById/index.js\";\nimport { WbPermissions } from \"~/features/permissions/abstractions.js\";\nimport { RedirectNotAuthorizedError } from \"~/domain/redirect/errors.js\";\n\nclass MoveRedirectUseCaseImpl implements UseCaseAbstraction.Interface {\n constructor(\n private permissions: WbPermissions.Interface,\n private eventPublisher: EventPublisherAbstraction.Interface,\n private getRedirectById: GetRedirectByIdUseCase.Interface,\n private repository: MoveRedirectRepository.Interface\n ) {}\n\n async execute(params: UseCaseAbstraction.Params): UseCaseAbstraction.Return {\n const hasPermission = await this.permissions.canEdit(\"redirect\");\n if (!hasPermission) {\n return Result.fail(new RedirectNotAuthorizedError());\n }\n\n // Get the original redirect for events\n const getResult = await this.getRedirectById.execute(params.id);\n\n if (getResult.isFail()) {\n return getResult;\n }\n\n const original = getResult.value;\n\n const canEdit = await this.permissions.canEdit(\"redirect\", original);\n if (!canEdit) {\n return Result.fail(new RedirectNotAuthorizedError());\n }\n\n // Publish before move event\n const beforeEvent = new RedirectBeforeMoveEvent({\n original,\n input: params\n });\n\n await this.eventPublisher.publish(beforeEvent);\n\n // Execute the move operation\n const result = await this.repository.execute(params);\n\n if (result.isFail()) {\n return result;\n }\n\n // Publish after move event\n const afterEvent = new RedirectAfterMoveEvent({\n original,\n input: params,\n redirect: result.value\n });\n\n await this.eventPublisher.publish(afterEvent);\n\n return Result.ok(result.value);\n }\n}\n\nexport const MoveRedirectUseCase = createImplementation({\n abstraction: UseCaseAbstraction,\n implementation: MoveRedirectUseCaseImpl,\n dependencies: [WbPermissions, EventPublisher, GetRedirectByIdUseCase, MoveRedirectRepository]\n});\n"],"mappings":"AAAA,SAASA,MAAM,EAAEC,oBAAoB,QAAQ,qBAAqB;AAClE,SACIC,cAAc,QAEX,mDAAmD;AAC1D,SACIC,mBAAmB,IAAIC,kBAAkB,EACzCC,sBAAsB;AAE1B,SAASC,uBAAuB,EAAEC,sBAAsB;AACxD,SAASC,sBAAsB;AAC/B,SAASC,aAAa;AACtB,SAASC,0BAA0B;AAEnC,MAAMC,uBAAuB,CAAyC;EAClEC,WAAWA,CACCC,WAAoC,EACpCC,cAAmD,EACnDC,eAAiD,EACjDC,UAA4C,EACtD;IAAA,KAJUH,WAAoC,GAApCA,WAAoC;IAAA,KACpCC,cAAmD,GAAnDA,cAAmD;IAAA,KACnDC,eAAiD,GAAjDA,eAAiD;IAAA,KACjDC,UAA4C,GAA5CA,UAA4C;EACrD;EAEH,MAAMC,OAAOA,CAACC,MAAiC,EAA6B;IACxE,MAAMC,aAAa,GAAG,MAAM,IAAI,CAACN,WAAW,CAACO,OAAO,CAAC,UAAU,CAAC;IAChE,IAAI,CAACD,aAAa,EAAE;MAChB,OAAOnB,MAAM,CAACqB,IAAI,CAAC,IAAIX,0BAA0B,CAAC,CAAC,CAAC;IACxD;;IAEA;IACA,MAAMY,SAAS,GAAG,MAAM,IAAI,CAACP,eAAe,CAACE,OAAO,CAACC,MAAM,CAACK,EAAE,CAAC;IAE/D,IAAID,SAAS,CAACE,MAAM,CAAC,CAAC,EAAE;MACpB,OAAOF,SAAS;IACpB;IAEA,MAAMG,QAAQ,GAAGH,SAAS,CAACI,KAAK;IAEhC,MAAMN,OAAO,GAAG,MAAM,IAAI,CAACP,WAAW,CAACO,OAAO,CAAC,UAAU,EAAEK,QAAQ,CAAC;IACpE,IAAI,CAACL,OAAO,EAAE;MACV,OAAOpB,MAAM,CAACqB,IAAI,CAAC,IAAIX,0BAA0B,CAAC,CAAC,CAAC;IACxD;;IAEA;IACA,MAAMiB,WAAW,GAAG,IAAIrB,uBAAuB,CAAC;MAC5CmB,QAAQ;MACRG,KAAK,EAAEV;IACX,CAAC,CAAC;IAEF,MAAM,IAAI,CAACJ,cAAc,CAACe,OAAO,CAACF,WAAW,CAAC;;IAE9C;IACA,MAAMG,MAAM,GAAG,MAAM,IAAI,CAACd,UAAU,CAACC,OAAO,CAACC,MAAM,CAAC;IAEpD,IAAIY,MAAM,CAACN,MAAM,CAAC,CAAC,EAAE;MACjB,OAAOM,MAAM;IACjB;;IAEA;IACA,MAAMC,UAAU,GAAG,IAAIxB,sBAAsB,CAAC;MAC1CkB,QAAQ;MACRG,KAAK,EAAEV,MAAM;MACbc,QAAQ,EAAEF,MAAM,CAACJ;IACrB,CAAC,CAAC;IAEF,MAAM,IAAI,CAACZ,cAAc,CAACe,OAAO,CAACE,UAAU,CAAC;IAE7C,OAAO/B,MAAM,CAACiC,EAAE,CAACH,MAAM,CAACJ,KAAK,CAAC;EAClC;AACJ;AAEA,OAAO,MAAMvB,mBAAmB,GAAGF,oBAAoB,CAAC;EACpDiC,WAAW,EAAE9B,kBAAkB;EAC/B+B,cAAc,EAAExB,uBAAuB;EACvCyB,YAAY,EAAE,CAAC3B,aAAa,EAAEP,cAAc,EAAEM,sBAAsB,EAAEH,sBAAsB;AAChG,CAAC,CAAC","ignoreList":[]}
@@ -1,8 +1,8 @@
1
1
  import { type Result } from "@webiny/feature/api";
2
- import type { IEventHandler } from "@webiny/api-core/features/EventPublisher";
3
- import type { DomainEvent } from "@webiny/api-core/features/EventPublisher";
2
+ import type { IEventHandler } from "@webiny/api-core/features/eventPublisher/index.js";
3
+ import type { DomainEvent } from "@webiny/api-core/features/eventPublisher/index.js";
4
4
  import type { WbRedirect } from "../../../domain/redirect/abstractions.js";
5
- import { RedirectNotFoundError, RedirectPersistenceError } from "../../../domain/redirect/errors.js";
5
+ import { RedirectNotFoundError, RedirectPersistenceError, RedirectNotAuthorizedError } from "../../../domain/redirect/errors.js";
6
6
  export interface IMoveWbRedirectParams {
7
7
  id: string;
8
8
  folderId: string;
@@ -27,10 +27,12 @@ export interface IMoveRedirectUseCase {
27
27
  execute(params: IMoveWbRedirectParams): Promise<Result<WbRedirect, UseCaseError>>;
28
28
  }
29
29
  export interface IMoveRedirectUseCaseErrors {
30
+ notAuthorized: RedirectNotAuthorizedError;
30
31
  notFound: RedirectNotFoundError;
31
32
  persistence: RedirectPersistenceError;
32
33
  }
33
34
  type UseCaseError = IMoveRedirectUseCaseErrors[keyof IMoveRedirectUseCaseErrors];
35
+ /** Move a URL redirect to a different folder. */
34
36
  export declare const MoveRedirectUseCase: import("@webiny/di").Abstraction<IMoveRedirectUseCase>;
35
37
  export declare namespace MoveRedirectUseCase {
36
38
  type Interface = IMoveRedirectUseCase;
@@ -48,14 +50,16 @@ export interface RedirectAfterMovePayload {
48
50
  input: IMoveWbRedirectParams;
49
51
  redirect: WbRedirect;
50
52
  }
51
- export declare const RedirectBeforeMoveHandler: import("@webiny/di").Abstraction<IEventHandler<DomainEvent<RedirectBeforeMovePayload>>>;
52
- export declare namespace RedirectBeforeMoveHandler {
53
+ /** Hook into redirect lifecycle before a redirect is moved. */
54
+ export declare const RedirectBeforeMoveEventHandler: import("@webiny/di").Abstraction<IEventHandler<DomainEvent<RedirectBeforeMovePayload>>>;
55
+ export declare namespace RedirectBeforeMoveEventHandler {
53
56
  type Interface = IEventHandler<DomainEvent<RedirectBeforeMovePayload>>;
54
57
  type Event = DomainEvent<RedirectBeforeMovePayload>;
55
58
  type Redirect = WbRedirect;
56
59
  }
57
- export declare const RedirectAfterMoveHandler: import("@webiny/di").Abstraction<IEventHandler<DomainEvent<RedirectAfterMovePayload>>>;
58
- export declare namespace RedirectAfterMoveHandler {
60
+ /** Hook into redirect lifecycle after a redirect is moved. */
61
+ export declare const RedirectAfterMoveEventHandler: import("@webiny/di").Abstraction<IEventHandler<DomainEvent<RedirectAfterMovePayload>>>;
62
+ export declare namespace RedirectAfterMoveEventHandler {
59
63
  type Interface = IEventHandler<DomainEvent<RedirectAfterMovePayload>>;
60
64
  type Event = DomainEvent<RedirectAfterMovePayload>;
61
65
  type Redirect = WbRedirect;
@@ -14,6 +14,7 @@ export const MoveRedirectRepository = createAbstraction("Wb/MoveRedirectReposito
14
14
  // Use Case Abstraction
15
15
  // ============================================================================
16
16
 
17
+ /** Move a URL redirect to a different folder. */
17
18
  export const MoveRedirectUseCase = createAbstraction("Wb/MoveRedirectUseCase");
18
19
 
19
20
  // ============================================================================
@@ -24,7 +25,9 @@ export const MoveRedirectUseCase = createAbstraction("Wb/MoveRedirectUseCase");
24
25
  // Event Handler Abstractions
25
26
  // ============================================================================
26
27
 
27
- export const RedirectBeforeMoveHandler = createAbstraction("Wb/RedirectBeforeMoveHandler");
28
- export const RedirectAfterMoveHandler = createAbstraction("Wb/RedirectAfterMoveHandler");
28
+ /** Hook into redirect lifecycle before a redirect is moved. */
29
+ export const RedirectBeforeMoveEventHandler = createAbstraction("Wb/RedirectBeforeMoveEventHandler");
30
+ /** Hook into redirect lifecycle after a redirect is moved. */
31
+ export const RedirectAfterMoveEventHandler = createAbstraction("Wb/RedirectAfterMoveEventHandler");
29
32
 
30
33
  //# sourceMappingURL=abstractions.js.map
@@ -1 +1 @@
1
- {"version":3,"names":["createAbstraction","MoveRedirectRepository","MoveRedirectUseCase","RedirectBeforeMoveHandler","RedirectAfterMoveHandler"],"sources":["abstractions.ts"],"sourcesContent":["import { createAbstraction, type Result } from \"@webiny/feature/api\";\nimport type { IEventHandler } from \"@webiny/api-core/features/EventPublisher\";\nimport type { DomainEvent } from \"@webiny/api-core/features/EventPublisher\";\nimport type { WbRedirect } from \"~/domain/redirect/abstractions.js\";\nimport { RedirectNotFoundError, RedirectPersistenceError } from \"~/domain/redirect/errors.js\";\n\n// ============================================================================\n// Type Definitions\n// ============================================================================\n\nexport interface IMoveWbRedirectParams {\n id: string;\n folderId: string;\n}\n\n// ============================================================================\n// Repository Abstraction\n// ============================================================================\n\nexport interface IMoveRedirectRepository {\n execute(params: IMoveWbRedirectParams): Promise<Result<WbRedirect, RepositoryError>>;\n}\n\nexport interface IMoveRedirectRepositoryErrors {\n notFound: RedirectNotFoundError;\n persistence: RedirectPersistenceError;\n}\n\ntype RepositoryError = IMoveRedirectRepositoryErrors[keyof IMoveRedirectRepositoryErrors];\n\nexport const MoveRedirectRepository = createAbstraction<IMoveRedirectRepository>(\n \"Wb/MoveRedirectRepository\"\n);\n\nexport namespace MoveRedirectRepository {\n export type Interface = IMoveRedirectRepository;\n export type Params = IMoveWbRedirectParams;\n export type Return = Promise<Result<WbRedirect, RepositoryError>>;\n export type Error = RepositoryError;\n export type Redirect = WbRedirect;\n}\n\n// ============================================================================\n// Use Case Abstraction\n// ============================================================================\n\nexport interface IMoveRedirectUseCase {\n execute(params: IMoveWbRedirectParams): Promise<Result<WbRedirect, UseCaseError>>;\n}\n\nexport interface IMoveRedirectUseCaseErrors {\n notFound: RedirectNotFoundError;\n persistence: RedirectPersistenceError;\n}\n\ntype UseCaseError = IMoveRedirectUseCaseErrors[keyof IMoveRedirectUseCaseErrors];\n\nexport const MoveRedirectUseCase =\n createAbstraction<IMoveRedirectUseCase>(\"Wb/MoveRedirectUseCase\");\n\nexport namespace MoveRedirectUseCase {\n export type Interface = IMoveRedirectUseCase;\n export type Params = IMoveWbRedirectParams;\n export type Return = Promise<Result<WbRedirect, UseCaseError>>;\n export type Error = UseCaseError;\n export type Redirect = WbRedirect;\n}\n\n// ============================================================================\n// Event Payload Types\n// ============================================================================\n\nexport interface RedirectBeforeMovePayload {\n original: WbRedirect;\n input: IMoveWbRedirectParams;\n}\n\nexport interface RedirectAfterMovePayload {\n original: WbRedirect;\n input: IMoveWbRedirectParams;\n redirect: WbRedirect;\n}\n\n// ============================================================================\n// Event Handler Abstractions\n// ============================================================================\n\nexport const RedirectBeforeMoveHandler = createAbstraction<\n IEventHandler<DomainEvent<RedirectBeforeMovePayload>>\n>(\"Wb/RedirectBeforeMoveHandler\");\n\nexport namespace RedirectBeforeMoveHandler {\n export type Interface = IEventHandler<DomainEvent<RedirectBeforeMovePayload>>;\n export type Event = DomainEvent<RedirectBeforeMovePayload>;\n export type Redirect = WbRedirect;\n}\n\nexport const RedirectAfterMoveHandler = createAbstraction<\n IEventHandler<DomainEvent<RedirectAfterMovePayload>>\n>(\"Wb/RedirectAfterMoveHandler\");\n\nexport namespace RedirectAfterMoveHandler {\n export type Interface = IEventHandler<DomainEvent<RedirectAfterMovePayload>>;\n export type Event = DomainEvent<RedirectAfterMovePayload>;\n export type Redirect = WbRedirect;\n}\n"],"mappings":"AAAA,SAASA,iBAAiB,QAAqB,qBAAqB;;AAMpE;AACA;AACA;;AAOA;AACA;AACA;;AAaA,OAAO,MAAMC,sBAAsB,GAAGD,iBAAiB,CACnD,2BACJ,CAAC;;AAUD;AACA;AACA;;AAaA,OAAO,MAAME,mBAAmB,GAC5BF,iBAAiB,CAAuB,wBAAwB,CAAC;;AAUrE;AACA;AACA;;AAaA;AACA;AACA;;AAEA,OAAO,MAAMG,yBAAyB,GAAGH,iBAAiB,CAExD,8BAA8B,CAAC;AAQjC,OAAO,MAAMI,wBAAwB,GAAGJ,iBAAiB,CAEvD,6BAA6B,CAAC","ignoreList":[]}
1
+ {"version":3,"names":["createAbstraction","MoveRedirectRepository","MoveRedirectUseCase","RedirectBeforeMoveEventHandler","RedirectAfterMoveEventHandler"],"sources":["abstractions.ts"],"sourcesContent":["import { createAbstraction, type Result } from \"@webiny/feature/api\";\nimport type { IEventHandler } from \"@webiny/api-core/features/eventPublisher/index.js\";\nimport type { DomainEvent } from \"@webiny/api-core/features/eventPublisher/index.js\";\nimport type { WbRedirect } from \"~/domain/redirect/abstractions.js\";\nimport {\n RedirectNotFoundError,\n RedirectPersistenceError,\n RedirectNotAuthorizedError\n} from \"~/domain/redirect/errors.js\";\n\n// ============================================================================\n// Type Definitions\n// ============================================================================\n\nexport interface IMoveWbRedirectParams {\n id: string;\n folderId: string;\n}\n\n// ============================================================================\n// Repository Abstraction\n// ============================================================================\n\nexport interface IMoveRedirectRepository {\n execute(params: IMoveWbRedirectParams): Promise<Result<WbRedirect, RepositoryError>>;\n}\n\nexport interface IMoveRedirectRepositoryErrors {\n notFound: RedirectNotFoundError;\n persistence: RedirectPersistenceError;\n}\n\ntype RepositoryError = IMoveRedirectRepositoryErrors[keyof IMoveRedirectRepositoryErrors];\n\nexport const MoveRedirectRepository = createAbstraction<IMoveRedirectRepository>(\n \"Wb/MoveRedirectRepository\"\n);\n\nexport namespace MoveRedirectRepository {\n export type Interface = IMoveRedirectRepository;\n export type Params = IMoveWbRedirectParams;\n export type Return = Promise<Result<WbRedirect, RepositoryError>>;\n export type Error = RepositoryError;\n export type Redirect = WbRedirect;\n}\n\n// ============================================================================\n// Use Case Abstraction\n// ============================================================================\n\nexport interface IMoveRedirectUseCase {\n execute(params: IMoveWbRedirectParams): Promise<Result<WbRedirect, UseCaseError>>;\n}\n\nexport interface IMoveRedirectUseCaseErrors {\n notAuthorized: RedirectNotAuthorizedError;\n notFound: RedirectNotFoundError;\n persistence: RedirectPersistenceError;\n}\n\ntype UseCaseError = IMoveRedirectUseCaseErrors[keyof IMoveRedirectUseCaseErrors];\n\n/** Move a URL redirect to a different folder. */\nexport const MoveRedirectUseCase =\n createAbstraction<IMoveRedirectUseCase>(\"Wb/MoveRedirectUseCase\");\n\nexport namespace MoveRedirectUseCase {\n export type Interface = IMoveRedirectUseCase;\n export type Params = IMoveWbRedirectParams;\n export type Return = Promise<Result<WbRedirect, UseCaseError>>;\n export type Error = UseCaseError;\n export type Redirect = WbRedirect;\n}\n\n// ============================================================================\n// Event Payload Types\n// ============================================================================\n\nexport interface RedirectBeforeMovePayload {\n original: WbRedirect;\n input: IMoveWbRedirectParams;\n}\n\nexport interface RedirectAfterMovePayload {\n original: WbRedirect;\n input: IMoveWbRedirectParams;\n redirect: WbRedirect;\n}\n\n// ============================================================================\n// Event Handler Abstractions\n// ============================================================================\n\n/** Hook into redirect lifecycle before a redirect is moved. */\nexport const RedirectBeforeMoveEventHandler = createAbstraction<\n IEventHandler<DomainEvent<RedirectBeforeMovePayload>>\n>(\"Wb/RedirectBeforeMoveEventHandler\");\n\nexport namespace RedirectBeforeMoveEventHandler {\n export type Interface = IEventHandler<DomainEvent<RedirectBeforeMovePayload>>;\n export type Event = DomainEvent<RedirectBeforeMovePayload>;\n export type Redirect = WbRedirect;\n}\n\n/** Hook into redirect lifecycle after a redirect is moved. */\nexport const RedirectAfterMoveEventHandler = createAbstraction<\n IEventHandler<DomainEvent<RedirectAfterMovePayload>>\n>(\"Wb/RedirectAfterMoveEventHandler\");\n\nexport namespace RedirectAfterMoveEventHandler {\n export type Interface = IEventHandler<DomainEvent<RedirectAfterMovePayload>>;\n export type Event = DomainEvent<RedirectAfterMovePayload>;\n export type Redirect = WbRedirect;\n}\n"],"mappings":"AAAA,SAASA,iBAAiB,QAAqB,qBAAqB;;AAUpE;AACA;AACA;;AAOA;AACA;AACA;;AAaA,OAAO,MAAMC,sBAAsB,GAAGD,iBAAiB,CACnD,2BACJ,CAAC;;AAUD;AACA;AACA;;AAcA;AACA,OAAO,MAAME,mBAAmB,GAC5BF,iBAAiB,CAAuB,wBAAwB,CAAC;;AAUrE;AACA;AACA;;AAaA;AACA;AACA;;AAEA;AACA,OAAO,MAAMG,8BAA8B,GAAGH,iBAAiB,CAE7D,mCAAmC,CAAC;AAQtC;AACA,OAAO,MAAMI,6BAA6B,GAAGJ,iBAAiB,CAE5D,kCAAkC,CAAC","ignoreList":[]}
@@ -1,10 +1,10 @@
1
- import { DomainEvent } from "@webiny/api-core/features/EventPublisher";
1
+ import { DomainEvent } from "@webiny/api-core/features/eventPublisher/index.js";
2
2
  import type { RedirectBeforeMovePayload, RedirectAfterMovePayload } from "./abstractions.js";
3
3
  export declare class RedirectBeforeMoveEvent extends DomainEvent<RedirectBeforeMovePayload> {
4
4
  eventType: "redirect.beforeMove";
5
- getHandlerAbstraction(): import("@webiny/di").Abstraction<import("@webiny/api-core/features/EventPublisher").IEventHandler<DomainEvent<RedirectBeforeMovePayload>>>;
5
+ getHandlerAbstraction(): import("@webiny/di").Abstraction<import("@webiny/api-core/features/eventPublisher/abstractions.js").IEventHandler<DomainEvent<RedirectBeforeMovePayload>>>;
6
6
  }
7
7
  export declare class RedirectAfterMoveEvent extends DomainEvent<RedirectAfterMovePayload> {
8
8
  eventType: "redirect.afterMove";
9
- getHandlerAbstraction(): import("@webiny/di").Abstraction<import("@webiny/api-core/features/EventPublisher").IEventHandler<DomainEvent<RedirectAfterMovePayload>>>;
9
+ getHandlerAbstraction(): import("@webiny/di").Abstraction<import("@webiny/api-core/features/eventPublisher/abstractions.js").IEventHandler<DomainEvent<RedirectAfterMovePayload>>>;
10
10
  }
@@ -1,10 +1,10 @@
1
- import { DomainEvent } from "@webiny/api-core/features/EventPublisher";
2
- import { RedirectBeforeMoveHandler, RedirectAfterMoveHandler } from "./abstractions.js";
1
+ import { DomainEvent } from "@webiny/api-core/features/eventPublisher/index.js";
2
+ import { RedirectBeforeMoveEventHandler, RedirectAfterMoveEventHandler } from "./abstractions.js";
3
3
  // RedirectBeforeMove Event
4
4
  export class RedirectBeforeMoveEvent extends DomainEvent {
5
5
  eventType = "redirect.beforeMove";
6
6
  getHandlerAbstraction() {
7
- return RedirectBeforeMoveHandler;
7
+ return RedirectBeforeMoveEventHandler;
8
8
  }
9
9
  }
10
10
 
@@ -12,7 +12,7 @@ export class RedirectBeforeMoveEvent extends DomainEvent {
12
12
  export class RedirectAfterMoveEvent extends DomainEvent {
13
13
  eventType = "redirect.afterMove";
14
14
  getHandlerAbstraction() {
15
- return RedirectAfterMoveHandler;
15
+ return RedirectAfterMoveEventHandler;
16
16
  }
17
17
  }
18
18
 
@@ -1 +1 @@
1
- {"version":3,"names":["DomainEvent","RedirectBeforeMoveHandler","RedirectAfterMoveHandler","RedirectBeforeMoveEvent","eventType","getHandlerAbstraction","RedirectAfterMoveEvent"],"sources":["events.ts"],"sourcesContent":["import { DomainEvent } from \"@webiny/api-core/features/EventPublisher\";\nimport { RedirectBeforeMoveHandler, RedirectAfterMoveHandler } from \"./abstractions.js\";\nimport type { RedirectBeforeMovePayload, RedirectAfterMovePayload } from \"./abstractions.js\";\n\n// RedirectBeforeMove Event\nexport class RedirectBeforeMoveEvent extends DomainEvent<RedirectBeforeMovePayload> {\n eventType = \"redirect.beforeMove\" as const;\n\n getHandlerAbstraction() {\n return RedirectBeforeMoveHandler;\n }\n}\n\n// RedirectAfterMove Event\nexport class RedirectAfterMoveEvent extends DomainEvent<RedirectAfterMovePayload> {\n eventType = \"redirect.afterMove\" as const;\n\n getHandlerAbstraction() {\n return RedirectAfterMoveHandler;\n }\n}\n"],"mappings":"AAAA,SAASA,WAAW,QAAQ,0CAA0C;AACtE,SAASC,yBAAyB,EAAEC,wBAAwB;AAG5D;AACA,OAAO,MAAMC,uBAAuB,SAASH,WAAW,CAA4B;EAChFI,SAAS,GAAG,qBAAqB;EAEjCC,qBAAqBA,CAAA,EAAG;IACpB,OAAOJ,yBAAyB;EACpC;AACJ;;AAEA;AACA,OAAO,MAAMK,sBAAsB,SAASN,WAAW,CAA2B;EAC9EI,SAAS,GAAG,oBAAoB;EAEhCC,qBAAqBA,CAAA,EAAG;IACpB,OAAOH,wBAAwB;EACnC;AACJ","ignoreList":[]}
1
+ {"version":3,"names":["DomainEvent","RedirectBeforeMoveEventHandler","RedirectAfterMoveEventHandler","RedirectBeforeMoveEvent","eventType","getHandlerAbstraction","RedirectAfterMoveEvent"],"sources":["events.ts"],"sourcesContent":["import { DomainEvent } from \"@webiny/api-core/features/eventPublisher/index.js\";\nimport { RedirectBeforeMoveEventHandler, RedirectAfterMoveEventHandler } from \"./abstractions.js\";\nimport type { RedirectBeforeMovePayload, RedirectAfterMovePayload } from \"./abstractions.js\";\n\n// RedirectBeforeMove Event\nexport class RedirectBeforeMoveEvent extends DomainEvent<RedirectBeforeMovePayload> {\n eventType = \"redirect.beforeMove\" as const;\n\n getHandlerAbstraction() {\n return RedirectBeforeMoveEventHandler;\n }\n}\n\n// RedirectAfterMove Event\nexport class RedirectAfterMoveEvent extends DomainEvent<RedirectAfterMovePayload> {\n eventType = \"redirect.afterMove\" as const;\n\n getHandlerAbstraction() {\n return RedirectAfterMoveEventHandler;\n }\n}\n"],"mappings":"AAAA,SAASA,WAAW,QAAQ,mDAAmD;AAC/E,SAASC,8BAA8B,EAAEC,6BAA6B;AAGtE;AACA,OAAO,MAAMC,uBAAuB,SAASH,WAAW,CAA4B;EAChFI,SAAS,GAAG,qBAAqB;EAEjCC,qBAAqBA,CAAA,EAAG;IACpB,OAAOJ,8BAA8B;EACzC;AACJ;;AAEA;AACA,OAAO,MAAMK,sBAAsB,SAASN,WAAW,CAA2B;EAC9EI,SAAS,GAAG,oBAAoB;EAEhCC,qBAAqBA,CAAA,EAAG;IACpB,OAAOH,6BAA6B;EACxC;AACJ","ignoreList":[]}