@webiny/api-website-builder 0.0.0-unstable.6f45466a1d → 0.0.0-unstable.7be00a75a9

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 (562) hide show
  1. package/constants.js +4 -3
  2. package/constants.js.map +1 -1
  3. package/domain/page/EntryToPageMapper.js +30 -26
  4. package/domain/page/EntryToPageMapper.js.map +1 -1
  5. package/domain/page/PagePath.d.ts +7 -0
  6. package/domain/page/PagePath.js +26 -0
  7. package/domain/page/PagePath.js.map +1 -0
  8. package/domain/page/abstractions.d.ts +22 -3
  9. package/domain/page/abstractions.js +2 -5
  10. package/domain/page/abstractions.js.map +1 -1
  11. package/domain/page/errors.d.ts +12 -0
  12. package/domain/page/errors.js +48 -31
  13. package/domain/page/errors.js.map +1 -1
  14. package/domain/page/page.model.d.ts +8 -1
  15. package/domain/page/page.model.js +25 -30
  16. package/domain/page/page.model.js.map +1 -1
  17. package/domain/permissionsSchema.d.ts +29 -0
  18. package/domain/permissionsSchema.js +53 -0
  19. package/domain/permissionsSchema.js.map +1 -0
  20. package/domain/redirect/EntryToRedirectMapper.js +21 -20
  21. package/domain/redirect/EntryToRedirectMapper.js.map +1 -1
  22. package/domain/redirect/abstractions.js +2 -9
  23. package/domain/redirect/abstractions.js.map +1 -1
  24. package/domain/redirect/errors.js +28 -31
  25. package/domain/redirect/errors.js.map +1 -1
  26. package/domain/redirect/redirect.model.d.ts +8 -1
  27. package/domain/redirect/redirect.model.js +24 -30
  28. package/domain/redirect/redirect.model.js.map +1 -1
  29. package/domain/shared/abstractions.js +0 -3
  30. package/exports/api/website-builder/nextjs.js +0 -2
  31. package/exports/api/website-builder/page.d.ts +12 -8
  32. package/exports/api/website-builder/page.js +12 -10
  33. package/exports/api/website-builder/redirect.d.ts +4 -4
  34. package/exports/api/website-builder/redirect.js +4 -6
  35. package/features/installer/ApiKeyInstaller.d.ts +1 -1
  36. package/features/installer/ApiKeyInstaller.js +34 -28
  37. package/features/installer/ApiKeyInstaller.js.map +1 -1
  38. package/features/installer/feature.d.ts +4 -1
  39. package/features/installer/feature.js +6 -5
  40. package/features/installer/feature.js.map +1 -1
  41. package/features/nextjs/MarkdownContentBuilder.js +67 -76
  42. package/features/nextjs/MarkdownContentBuilder.js.map +1 -1
  43. package/features/nextjs/MarkdownContentBuilder.test.js +266 -273
  44. package/features/nextjs/MarkdownContentBuilder.test.js.map +1 -1
  45. package/features/nextjs/NextjsConfig.js +43 -46
  46. package/features/nextjs/NextjsConfig.js.map +1 -1
  47. package/features/nextjs/abstractions.d.ts +1 -0
  48. package/features/nextjs/abstractions.js +2 -1
  49. package/features/nextjs/abstractions.js.map +1 -1
  50. package/features/nextjs/feature.d.ts +4 -1
  51. package/features/nextjs/feature.js +6 -5
  52. package/features/nextjs/feature.js.map +1 -1
  53. package/features/nextjs/index.js +0 -2
  54. package/features/pages/CreatePage/CreatePageRepository.js +23 -25
  55. package/features/pages/CreatePage/CreatePageRepository.js.map +1 -1
  56. package/features/pages/CreatePage/CreatePageUseCase.d.ts +4 -2
  57. package/features/pages/CreatePage/CreatePageUseCase.js +33 -30
  58. package/features/pages/CreatePage/CreatePageUseCase.js.map +1 -1
  59. package/features/pages/CreatePage/abstractions.d.ts +10 -6
  60. package/features/pages/CreatePage/abstractions.js +5 -27
  61. package/features/pages/CreatePage/abstractions.js.map +1 -1
  62. package/features/pages/CreatePage/events.d.ts +3 -3
  63. package/features/pages/CreatePage/events.js +17 -15
  64. package/features/pages/CreatePage/events.js.map +1 -1
  65. package/features/pages/CreatePage/feature.d.ts +4 -1
  66. package/features/pages/CreatePage/feature.js +7 -6
  67. package/features/pages/CreatePage/feature.js.map +1 -1
  68. package/features/pages/CreatePage/index.d.ts +1 -1
  69. package/features/pages/CreatePage/index.js +1 -3
  70. package/features/pages/CreatePageRevisionFrom/CreatePageRevisionFromRepository.js +30 -36
  71. package/features/pages/CreatePageRevisionFrom/CreatePageRevisionFromRepository.js.map +1 -1
  72. package/features/pages/CreatePageRevisionFrom/CreatePageRevisionFromUseCase.d.ts +6 -2
  73. package/features/pages/CreatePageRevisionFrom/CreatePageRevisionFromUseCase.js +38 -30
  74. package/features/pages/CreatePageRevisionFrom/CreatePageRevisionFromUseCase.js.map +1 -1
  75. package/features/pages/CreatePageRevisionFrom/abstractions.d.ts +11 -7
  76. package/features/pages/CreatePageRevisionFrom/abstractions.js +5 -27
  77. package/features/pages/CreatePageRevisionFrom/abstractions.js.map +1 -1
  78. package/features/pages/CreatePageRevisionFrom/events.d.ts +3 -3
  79. package/features/pages/CreatePageRevisionFrom/events.js +17 -15
  80. package/features/pages/CreatePageRevisionFrom/events.js.map +1 -1
  81. package/features/pages/CreatePageRevisionFrom/feature.d.ts +4 -1
  82. package/features/pages/CreatePageRevisionFrom/feature.js +7 -6
  83. package/features/pages/CreatePageRevisionFrom/feature.js.map +1 -1
  84. package/features/pages/CreatePageRevisionFrom/index.d.ts +1 -1
  85. package/features/pages/CreatePageRevisionFrom/index.js +1 -3
  86. package/features/pages/DeletePage/DeletePageRepository.d.ts +1 -3
  87. package/features/pages/DeletePage/DeletePageRepository.js +18 -28
  88. package/features/pages/DeletePage/DeletePageRepository.js.map +1 -1
  89. package/features/pages/DeletePage/DeletePageUseCase.d.ts +7 -5
  90. package/features/pages/DeletePage/DeletePageUseCase.js +37 -37
  91. package/features/pages/DeletePage/DeletePageUseCase.js.map +1 -1
  92. package/features/pages/DeletePage/abstractions.d.ts +12 -7
  93. package/features/pages/DeletePage/abstractions.js +5 -27
  94. package/features/pages/DeletePage/abstractions.js.map +1 -1
  95. package/features/pages/DeletePage/events.d.ts +3 -3
  96. package/features/pages/DeletePage/events.js +17 -15
  97. package/features/pages/DeletePage/events.js.map +1 -1
  98. package/features/pages/DeletePage/feature.d.ts +4 -1
  99. package/features/pages/DeletePage/feature.js +7 -6
  100. package/features/pages/DeletePage/feature.js.map +1 -1
  101. package/features/pages/DeletePage/index.d.ts +1 -1
  102. package/features/pages/DeletePage/index.js +1 -3
  103. package/features/pages/DuplicatePage/DuplicatePageRepository.d.ts +2 -2
  104. package/features/pages/DuplicatePage/DuplicatePageRepository.js +50 -45
  105. package/features/pages/DuplicatePage/DuplicatePageRepository.js.map +1 -1
  106. package/features/pages/DuplicatePage/DuplicatePageUseCase.d.ts +4 -2
  107. package/features/pages/DuplicatePage/DuplicatePageUseCase.js +38 -38
  108. package/features/pages/DuplicatePage/DuplicatePageUseCase.js.map +1 -1
  109. package/features/pages/DuplicatePage/abstractions.d.ts +18 -8
  110. package/features/pages/DuplicatePage/abstractions.js +5 -27
  111. package/features/pages/DuplicatePage/abstractions.js.map +1 -1
  112. package/features/pages/DuplicatePage/events.d.ts +3 -3
  113. package/features/pages/DuplicatePage/events.js +17 -15
  114. package/features/pages/DuplicatePage/events.js.map +1 -1
  115. package/features/pages/DuplicatePage/feature.d.ts +4 -1
  116. package/features/pages/DuplicatePage/feature.js +7 -6
  117. package/features/pages/DuplicatePage/feature.js.map +1 -1
  118. package/features/pages/DuplicatePage/index.d.ts +2 -1
  119. package/features/pages/DuplicatePage/index.js +1 -3
  120. package/features/pages/GetDeletedPageById/GetDeletedPageByIdRepository.d.ts +13 -0
  121. package/features/pages/GetDeletedPageById/GetDeletedPageByIdRepository.js +32 -0
  122. package/features/pages/GetDeletedPageById/GetDeletedPageByIdRepository.js.map +1 -0
  123. package/features/pages/GetDeletedPageById/GetDeletedPageByIdUseCase.d.ts +12 -0
  124. package/features/pages/GetDeletedPageById/GetDeletedPageByIdUseCase.js +29 -0
  125. package/features/pages/GetDeletedPageById/GetDeletedPageByIdUseCase.js.map +1 -0
  126. package/features/pages/GetDeletedPageById/abstractions.d.ts +42 -0
  127. package/features/pages/GetDeletedPageById/abstractions.js +6 -0
  128. package/features/pages/GetDeletedPageById/abstractions.js.map +1 -0
  129. package/features/pages/GetDeletedPageById/feature.d.ts +4 -0
  130. package/features/pages/GetDeletedPageById/feature.js +13 -0
  131. package/features/pages/GetDeletedPageById/feature.js.map +1 -0
  132. package/features/pages/GetDeletedPageById/index.d.ts +1 -0
  133. package/features/pages/GetDeletedPageById/index.js +1 -0
  134. package/features/pages/GetPageById/GetPageByIdRepository.js +20 -18
  135. package/features/pages/GetPageById/GetPageByIdRepository.js.map +1 -1
  136. package/features/pages/GetPageById/GetPageByIdUseCase.d.ts +3 -1
  137. package/features/pages/GetPageById/GetPageByIdUseCase.js +24 -10
  138. package/features/pages/GetPageById/GetPageByIdUseCase.js.map +1 -1
  139. package/features/pages/GetPageById/abstractions.d.ts +3 -1
  140. package/features/pages/GetPageById/abstractions.js +3 -12
  141. package/features/pages/GetPageById/abstractions.js.map +1 -1
  142. package/features/pages/GetPageById/feature.d.ts +4 -1
  143. package/features/pages/GetPageById/feature.js +7 -6
  144. package/features/pages/GetPageById/feature.js.map +1 -1
  145. package/features/pages/GetPageById/index.js +0 -2
  146. package/features/pages/GetPageByPath/GetPageByPathRepository.js +26 -26
  147. package/features/pages/GetPageByPath/GetPageByPathRepository.js.map +1 -1
  148. package/features/pages/GetPageByPath/GetPageByPathUseCase.d.ts +3 -1
  149. package/features/pages/GetPageByPath/GetPageByPathUseCase.js +24 -10
  150. package/features/pages/GetPageByPath/GetPageByPathUseCase.js.map +1 -1
  151. package/features/pages/GetPageByPath/abstractions.d.ts +3 -1
  152. package/features/pages/GetPageByPath/abstractions.js +3 -12
  153. package/features/pages/GetPageByPath/abstractions.js.map +1 -1
  154. package/features/pages/GetPageByPath/feature.d.ts +4 -1
  155. package/features/pages/GetPageByPath/feature.js +7 -6
  156. package/features/pages/GetPageByPath/feature.js.map +1 -1
  157. package/features/pages/GetPageByPath/index.js +0 -2
  158. package/features/pages/GetPageLanguagePaths/GetPageLanguagePathsRepository.d.ts +15 -0
  159. package/features/pages/GetPageLanguagePaths/GetPageLanguagePathsRepository.js +55 -0
  160. package/features/pages/GetPageLanguagePaths/GetPageLanguagePathsRepository.js.map +1 -0
  161. package/features/pages/GetPageLanguagePaths/GetPageLanguagePathsUseCase.d.ts +10 -0
  162. package/features/pages/GetPageLanguagePaths/GetPageLanguagePathsUseCase.js +21 -0
  163. package/features/pages/GetPageLanguagePaths/GetPageLanguagePathsUseCase.js.map +1 -0
  164. package/features/pages/GetPageLanguagePaths/abstractions.d.ts +20 -0
  165. package/features/pages/GetPageLanguagePaths/abstractions.js +6 -0
  166. package/features/pages/GetPageLanguagePaths/abstractions.js.map +1 -0
  167. package/features/pages/GetPageLanguagePaths/feature.d.ts +4 -0
  168. package/features/pages/GetPageLanguagePaths/feature.js +13 -0
  169. package/features/pages/GetPageLanguagePaths/feature.js.map +1 -0
  170. package/features/pages/GetPageLanguagePaths/index.d.ts +1 -0
  171. package/features/pages/GetPageLanguagePaths/index.js +1 -0
  172. package/features/pages/GetPageRevisions/GetPageRevisionsRepository.js +17 -15
  173. package/features/pages/GetPageRevisions/GetPageRevisionsRepository.js.map +1 -1
  174. package/features/pages/GetPageRevisions/GetPageRevisionsUseCase.d.ts +3 -1
  175. package/features/pages/GetPageRevisions/GetPageRevisionsUseCase.js +27 -10
  176. package/features/pages/GetPageRevisions/GetPageRevisionsUseCase.js.map +1 -1
  177. package/features/pages/GetPageRevisions/abstractions.d.ts +3 -1
  178. package/features/pages/GetPageRevisions/abstractions.js +3 -12
  179. package/features/pages/GetPageRevisions/abstractions.js.map +1 -1
  180. package/features/pages/GetPageRevisions/feature.d.ts +4 -1
  181. package/features/pages/GetPageRevisions/feature.js +7 -6
  182. package/features/pages/GetPageRevisions/feature.js.map +1 -1
  183. package/features/pages/GetPageRevisions/index.js +0 -2
  184. package/features/pages/ListDeletedPages/ListDeletedPagesRepository.d.ts +17 -0
  185. package/features/pages/ListDeletedPages/ListDeletedPagesRepository.js +50 -0
  186. package/features/pages/ListDeletedPages/ListDeletedPagesRepository.js.map +1 -0
  187. package/features/pages/ListDeletedPages/ListDeletedPagesUseCase.d.ts +14 -0
  188. package/features/pages/ListDeletedPages/ListDeletedPagesUseCase.js +38 -0
  189. package/features/pages/ListDeletedPages/ListDeletedPagesUseCase.js.map +1 -0
  190. package/features/pages/ListDeletedPages/abstractions.d.ts +56 -0
  191. package/features/pages/ListDeletedPages/abstractions.js +6 -0
  192. package/features/pages/ListDeletedPages/abstractions.js.map +1 -0
  193. package/features/pages/ListDeletedPages/feature.d.ts +4 -0
  194. package/features/pages/ListDeletedPages/feature.js +13 -0
  195. package/features/pages/ListDeletedPages/feature.js.map +1 -0
  196. package/features/pages/ListDeletedPages/index.d.ts +1 -0
  197. package/features/pages/ListDeletedPages/index.js +1 -0
  198. package/features/pages/ListPages/ListPagesRepository.d.ts +5 -1
  199. package/features/pages/ListPages/ListPagesRepository.js +39 -28
  200. package/features/pages/ListPages/ListPagesRepository.js.map +1 -1
  201. package/features/pages/ListPages/ListPagesUseCase.d.ts +5 -1
  202. package/features/pages/ListPages/ListPagesUseCase.js +33 -10
  203. package/features/pages/ListPages/ListPagesUseCase.js.map +1 -1
  204. package/features/pages/ListPages/abstractions.d.ts +3 -1
  205. package/features/pages/ListPages/abstractions.js +3 -12
  206. package/features/pages/ListPages/abstractions.js.map +1 -1
  207. package/features/pages/ListPages/feature.d.ts +4 -1
  208. package/features/pages/ListPages/feature.js +7 -6
  209. package/features/pages/ListPages/feature.js.map +1 -1
  210. package/features/pages/ListPages/index.js +0 -2
  211. package/features/pages/MovePage/MovePageRepository.js +25 -27
  212. package/features/pages/MovePage/MovePageRepository.js.map +1 -1
  213. package/features/pages/MovePage/MovePageUseCase.d.ts +4 -2
  214. package/features/pages/MovePage/MovePageUseCase.js +42 -40
  215. package/features/pages/MovePage/MovePageUseCase.js.map +1 -1
  216. package/features/pages/MovePage/abstractions.d.ts +11 -7
  217. package/features/pages/MovePage/abstractions.js +5 -27
  218. package/features/pages/MovePage/abstractions.js.map +1 -1
  219. package/features/pages/MovePage/events.d.ts +3 -3
  220. package/features/pages/MovePage/events.js +17 -15
  221. package/features/pages/MovePage/events.js.map +1 -1
  222. package/features/pages/MovePage/feature.d.ts +4 -1
  223. package/features/pages/MovePage/feature.js +7 -6
  224. package/features/pages/MovePage/feature.js.map +1 -1
  225. package/features/pages/MovePage/index.d.ts +1 -1
  226. package/features/pages/MovePage/index.js +1 -3
  227. package/features/pages/PublishPage/PublishPageRepository.js +26 -28
  228. package/features/pages/PublishPage/PublishPageRepository.js.map +1 -1
  229. package/features/pages/PublishPage/PublishPageUseCase.d.ts +4 -2
  230. package/features/pages/PublishPage/PublishPageUseCase.js +39 -37
  231. package/features/pages/PublishPage/PublishPageUseCase.js.map +1 -1
  232. package/features/pages/PublishPage/abstractions.d.ts +11 -7
  233. package/features/pages/PublishPage/abstractions.js +5 -27
  234. package/features/pages/PublishPage/abstractions.js.map +1 -1
  235. package/features/pages/PublishPage/events.d.ts +3 -3
  236. package/features/pages/PublishPage/events.js +17 -15
  237. package/features/pages/PublishPage/events.js.map +1 -1
  238. package/features/pages/PublishPage/feature.d.ts +4 -1
  239. package/features/pages/PublishPage/feature.js +7 -6
  240. package/features/pages/PublishPage/feature.js.map +1 -1
  241. package/features/pages/PublishPage/index.d.ts +1 -1
  242. package/features/pages/PublishPage/index.js +1 -3
  243. package/features/pages/RestorePage/RestorePageRepository.d.ts +13 -0
  244. package/features/pages/RestorePage/RestorePageRepository.js +31 -0
  245. package/features/pages/RestorePage/RestorePageRepository.js.map +1 -0
  246. package/features/pages/RestorePage/RestorePageUseCase.d.ts +16 -0
  247. package/features/pages/RestorePage/RestorePageUseCase.js +45 -0
  248. package/features/pages/RestorePage/RestorePageUseCase.js.map +1 -0
  249. package/features/pages/RestorePage/abstractions.d.ts +59 -0
  250. package/features/pages/RestorePage/abstractions.js +8 -0
  251. package/features/pages/RestorePage/abstractions.js.map +1 -0
  252. package/features/pages/RestorePage/events.d.ts +10 -0
  253. package/features/pages/RestorePage/events.js +21 -0
  254. package/features/pages/RestorePage/events.js.map +1 -0
  255. package/features/pages/RestorePage/feature.d.ts +4 -0
  256. package/features/pages/RestorePage/feature.js +13 -0
  257. package/features/pages/RestorePage/feature.js.map +1 -0
  258. package/features/pages/RestorePage/index.d.ts +1 -0
  259. package/features/pages/RestorePage/index.js +1 -0
  260. package/features/pages/TranslatePage/TranslatePageUseCase.d.ts +17 -0
  261. package/features/pages/TranslatePage/TranslatePageUseCase.js +58 -0
  262. package/features/pages/TranslatePage/TranslatePageUseCase.js.map +1 -0
  263. package/features/pages/TranslatePage/abstractions.d.ts +29 -0
  264. package/features/pages/TranslatePage/abstractions.js +5 -0
  265. package/features/pages/TranslatePage/abstractions.js.map +1 -0
  266. package/features/pages/TranslatePage/feature.d.ts +4 -0
  267. package/features/pages/TranslatePage/feature.js +11 -0
  268. package/features/pages/TranslatePage/feature.js.map +1 -0
  269. package/features/pages/TranslatePage/index.d.ts +1 -0
  270. package/features/pages/TranslatePage/index.js +1 -0
  271. package/features/pages/TrashPage/TrashPageRepository.d.ts +13 -0
  272. package/features/pages/TrashPage/TrashPageRepository.js +31 -0
  273. package/features/pages/TrashPage/TrashPageRepository.js.map +1 -0
  274. package/features/pages/TrashPage/TrashPageUseCase.d.ts +16 -0
  275. package/features/pages/TrashPage/TrashPageUseCase.js +45 -0
  276. package/features/pages/TrashPage/TrashPageUseCase.js.map +1 -0
  277. package/features/pages/TrashPage/abstractions.d.ts +58 -0
  278. package/features/pages/TrashPage/abstractions.js +8 -0
  279. package/features/pages/TrashPage/abstractions.js.map +1 -0
  280. package/features/pages/TrashPage/events.d.ts +10 -0
  281. package/features/pages/TrashPage/events.js +21 -0
  282. package/features/pages/TrashPage/events.js.map +1 -0
  283. package/features/pages/TrashPage/feature.d.ts +4 -0
  284. package/features/pages/TrashPage/feature.js +13 -0
  285. package/features/pages/TrashPage/feature.js.map +1 -0
  286. package/features/pages/TrashPage/index.d.ts +1 -0
  287. package/features/pages/TrashPage/index.js +1 -0
  288. package/features/pages/UnpublishPage/UnpublishPageRepository.js +26 -28
  289. package/features/pages/UnpublishPage/UnpublishPageRepository.js.map +1 -1
  290. package/features/pages/UnpublishPage/UnpublishPageUseCase.d.ts +4 -2
  291. package/features/pages/UnpublishPage/UnpublishPageUseCase.js +38 -36
  292. package/features/pages/UnpublishPage/UnpublishPageUseCase.js.map +1 -1
  293. package/features/pages/UnpublishPage/abstractions.d.ts +11 -7
  294. package/features/pages/UnpublishPage/abstractions.js +5 -27
  295. package/features/pages/UnpublishPage/abstractions.js.map +1 -1
  296. package/features/pages/UnpublishPage/events.d.ts +3 -3
  297. package/features/pages/UnpublishPage/events.js +17 -15
  298. package/features/pages/UnpublishPage/events.js.map +1 -1
  299. package/features/pages/UnpublishPage/feature.d.ts +4 -1
  300. package/features/pages/UnpublishPage/feature.js +7 -6
  301. package/features/pages/UnpublishPage/feature.js.map +1 -1
  302. package/features/pages/UnpublishPage/index.d.ts +1 -1
  303. package/features/pages/UnpublishPage/index.js +1 -3
  304. package/features/pages/UpdatePage/UpdatePageRepository.js +30 -34
  305. package/features/pages/UpdatePage/UpdatePageRepository.js.map +1 -1
  306. package/features/pages/UpdatePage/UpdatePageUseCase.d.ts +4 -2
  307. package/features/pages/UpdatePage/UpdatePageUseCase.js +47 -45
  308. package/features/pages/UpdatePage/UpdatePageUseCase.js.map +1 -1
  309. package/features/pages/UpdatePage/abstractions.d.ts +12 -9
  310. package/features/pages/UpdatePage/abstractions.js +5 -27
  311. package/features/pages/UpdatePage/abstractions.js.map +1 -1
  312. package/features/pages/UpdatePage/events.d.ts +3 -3
  313. package/features/pages/UpdatePage/events.js +17 -15
  314. package/features/pages/UpdatePage/events.js.map +1 -1
  315. package/features/pages/UpdatePage/feature.d.ts +4 -1
  316. package/features/pages/UpdatePage/feature.js +7 -6
  317. package/features/pages/UpdatePage/feature.js.map +1 -1
  318. package/features/pages/UpdatePage/index.d.ts +1 -1
  319. package/features/pages/UpdatePage/index.js +1 -3
  320. package/features/pages/UpdatePageRevisionDescription/UpdatePageRevisionDescriptionRepository.d.ts +15 -0
  321. package/features/pages/UpdatePageRevisionDescription/UpdatePageRevisionDescriptionRepository.js +40 -0
  322. package/features/pages/UpdatePageRevisionDescription/UpdatePageRevisionDescriptionRepository.js.map +1 -0
  323. package/features/pages/UpdatePageRevisionDescription/UpdatePageRevisionDescriptionUseCase.d.ts +16 -0
  324. package/features/pages/UpdatePageRevisionDescription/UpdatePageRevisionDescriptionUseCase.js +56 -0
  325. package/features/pages/UpdatePageRevisionDescription/UpdatePageRevisionDescriptionUseCase.js.map +1 -0
  326. package/features/pages/UpdatePageRevisionDescription/abstractions.d.ts +67 -0
  327. package/features/pages/UpdatePageRevisionDescription/abstractions.js +8 -0
  328. package/features/pages/UpdatePageRevisionDescription/abstractions.js.map +1 -0
  329. package/features/pages/UpdatePageRevisionDescription/events.d.ts +10 -0
  330. package/features/pages/UpdatePageRevisionDescription/events.js +21 -0
  331. package/features/pages/UpdatePageRevisionDescription/events.js.map +1 -0
  332. package/features/pages/UpdatePageRevisionDescription/feature.d.ts +4 -0
  333. package/features/pages/UpdatePageRevisionDescription/feature.js +13 -0
  334. package/features/pages/UpdatePageRevisionDescription/feature.js.map +1 -0
  335. package/features/pages/UpdatePageRevisionDescription/index.d.ts +1 -0
  336. package/features/pages/UpdatePageRevisionDescription/index.js +1 -0
  337. package/features/permissions/abstractions.d.ts +34 -0
  338. package/features/permissions/abstractions.js +6 -0
  339. package/features/permissions/abstractions.js.map +1 -0
  340. package/features/permissions/feature.d.ts +4 -0
  341. package/features/permissions/feature.js +7 -0
  342. package/features/permissions/feature.js.map +1 -0
  343. package/features/redirects/CreateRedirect/CreateRedirectRepository.js +23 -21
  344. package/features/redirects/CreateRedirect/CreateRedirectRepository.js.map +1 -1
  345. package/features/redirects/CreateRedirect/CreateRedirectUseCase.d.ts +4 -2
  346. package/features/redirects/CreateRedirect/CreateRedirectUseCase.js +33 -30
  347. package/features/redirects/CreateRedirect/CreateRedirectUseCase.js.map +1 -1
  348. package/features/redirects/CreateRedirect/abstractions.d.ts +11 -7
  349. package/features/redirects/CreateRedirect/abstractions.js +5 -27
  350. package/features/redirects/CreateRedirect/abstractions.js.map +1 -1
  351. package/features/redirects/CreateRedirect/events.d.ts +3 -3
  352. package/features/redirects/CreateRedirect/events.js +17 -15
  353. package/features/redirects/CreateRedirect/events.js.map +1 -1
  354. package/features/redirects/CreateRedirect/feature.d.ts +4 -1
  355. package/features/redirects/CreateRedirect/feature.js +7 -6
  356. package/features/redirects/CreateRedirect/feature.js.map +1 -1
  357. package/features/redirects/CreateRedirect/index.d.ts +1 -1
  358. package/features/redirects/CreateRedirect/index.js +1 -3
  359. package/features/redirects/DeleteRedirect/DeleteRedirectRepository.js +19 -17
  360. package/features/redirects/DeleteRedirect/DeleteRedirectRepository.js.map +1 -1
  361. package/features/redirects/DeleteRedirect/DeleteRedirectUseCase.d.ts +4 -2
  362. package/features/redirects/DeleteRedirect/DeleteRedirectUseCase.js +37 -37
  363. package/features/redirects/DeleteRedirect/DeleteRedirectUseCase.js.map +1 -1
  364. package/features/redirects/DeleteRedirect/abstractions.d.ts +11 -7
  365. package/features/redirects/DeleteRedirect/abstractions.js +5 -27
  366. package/features/redirects/DeleteRedirect/abstractions.js.map +1 -1
  367. package/features/redirects/DeleteRedirect/events.d.ts +3 -3
  368. package/features/redirects/DeleteRedirect/events.js +17 -15
  369. package/features/redirects/DeleteRedirect/events.js.map +1 -1
  370. package/features/redirects/DeleteRedirect/feature.d.ts +4 -1
  371. package/features/redirects/DeleteRedirect/feature.js +7 -6
  372. package/features/redirects/DeleteRedirect/feature.js.map +1 -1
  373. package/features/redirects/DeleteRedirect/index.d.ts +1 -1
  374. package/features/redirects/DeleteRedirect/index.js +1 -3
  375. package/features/redirects/GetActiveRedirects/GetActiveRedirectsRepository.js +22 -21
  376. package/features/redirects/GetActiveRedirects/GetActiveRedirectsRepository.js.map +1 -1
  377. package/features/redirects/GetActiveRedirects/GetActiveRedirectsUseCase.d.ts +3 -1
  378. package/features/redirects/GetActiveRedirects/GetActiveRedirectsUseCase.js +21 -12
  379. package/features/redirects/GetActiveRedirects/GetActiveRedirectsUseCase.js.map +1 -1
  380. package/features/redirects/GetActiveRedirects/abstractions.d.ts +3 -1
  381. package/features/redirects/GetActiveRedirects/abstractions.js +3 -12
  382. package/features/redirects/GetActiveRedirects/abstractions.js.map +1 -1
  383. package/features/redirects/GetActiveRedirects/feature.d.ts +4 -1
  384. package/features/redirects/GetActiveRedirects/feature.js +7 -6
  385. package/features/redirects/GetActiveRedirects/feature.js.map +1 -1
  386. package/features/redirects/GetActiveRedirects/index.js +0 -2
  387. package/features/redirects/GetRedirectById/GetRedirectByIdRepository.js +20 -18
  388. package/features/redirects/GetRedirectById/GetRedirectByIdRepository.js.map +1 -1
  389. package/features/redirects/GetRedirectById/GetRedirectByIdUseCase.d.ts +3 -1
  390. package/features/redirects/GetRedirectById/GetRedirectByIdUseCase.js +25 -12
  391. package/features/redirects/GetRedirectById/GetRedirectByIdUseCase.js.map +1 -1
  392. package/features/redirects/GetRedirectById/abstractions.d.ts +3 -1
  393. package/features/redirects/GetRedirectById/abstractions.js +3 -12
  394. package/features/redirects/GetRedirectById/abstractions.js.map +1 -1
  395. package/features/redirects/GetRedirectById/feature.d.ts +4 -1
  396. package/features/redirects/GetRedirectById/feature.js +7 -6
  397. package/features/redirects/GetRedirectById/feature.js.map +1 -1
  398. package/features/redirects/GetRedirectById/index.js +0 -2
  399. package/features/redirects/InvalidateRedirectsCache/InvalidateRedirectsCacheUseCase.js +23 -20
  400. package/features/redirects/InvalidateRedirectsCache/InvalidateRedirectsCacheUseCase.js.map +1 -1
  401. package/features/redirects/InvalidateRedirectsCache/RedirectAfterCreateHandler.d.ts +3 -3
  402. package/features/redirects/InvalidateRedirectsCache/RedirectAfterCreateHandler.js +14 -17
  403. package/features/redirects/InvalidateRedirectsCache/RedirectAfterCreateHandler.js.map +1 -1
  404. package/features/redirects/InvalidateRedirectsCache/RedirectAfterDeleteHandler.d.ts +3 -3
  405. package/features/redirects/InvalidateRedirectsCache/RedirectAfterDeleteHandler.js +14 -17
  406. package/features/redirects/InvalidateRedirectsCache/RedirectAfterDeleteHandler.js.map +1 -1
  407. package/features/redirects/InvalidateRedirectsCache/RedirectAfterUpdateHandler.d.ts +3 -3
  408. package/features/redirects/InvalidateRedirectsCache/RedirectAfterUpdateHandler.js +14 -18
  409. package/features/redirects/InvalidateRedirectsCache/RedirectAfterUpdateHandler.js.map +1 -1
  410. package/features/redirects/InvalidateRedirectsCache/abstractions.d.ts +1 -0
  411. package/features/redirects/InvalidateRedirectsCache/abstractions.js +2 -6
  412. package/features/redirects/InvalidateRedirectsCache/abstractions.js.map +1 -1
  413. package/features/redirects/InvalidateRedirectsCache/feature.d.ts +4 -1
  414. package/features/redirects/InvalidateRedirectsCache/feature.js +9 -8
  415. package/features/redirects/InvalidateRedirectsCache/feature.js.map +1 -1
  416. package/features/redirects/InvalidateRedirectsCache/index.js +0 -2
  417. package/features/redirects/ListRedirects/ListRedirectsRepository.js +35 -34
  418. package/features/redirects/ListRedirects/ListRedirectsRepository.js.map +1 -1
  419. package/features/redirects/ListRedirects/ListRedirectsUseCase.d.ts +5 -1
  420. package/features/redirects/ListRedirects/ListRedirectsUseCase.js +34 -12
  421. package/features/redirects/ListRedirects/ListRedirectsUseCase.js.map +1 -1
  422. package/features/redirects/ListRedirects/abstractions.d.ts +8 -5
  423. package/features/redirects/ListRedirects/abstractions.js +3 -16
  424. package/features/redirects/ListRedirects/abstractions.js.map +1 -1
  425. package/features/redirects/ListRedirects/feature.d.ts +4 -1
  426. package/features/redirects/ListRedirects/feature.js +7 -6
  427. package/features/redirects/ListRedirects/feature.js.map +1 -1
  428. package/features/redirects/ListRedirects/index.js +0 -2
  429. package/features/redirects/MoveRedirect/MoveRedirectRepository.js +25 -27
  430. package/features/redirects/MoveRedirect/MoveRedirectRepository.js.map +1 -1
  431. package/features/redirects/MoveRedirect/MoveRedirectUseCase.d.ts +4 -2
  432. package/features/redirects/MoveRedirect/MoveRedirectUseCase.js +42 -40
  433. package/features/redirects/MoveRedirect/MoveRedirectUseCase.js.map +1 -1
  434. package/features/redirects/MoveRedirect/abstractions.d.ts +11 -7
  435. package/features/redirects/MoveRedirect/abstractions.js +5 -27
  436. package/features/redirects/MoveRedirect/abstractions.js.map +1 -1
  437. package/features/redirects/MoveRedirect/events.d.ts +3 -3
  438. package/features/redirects/MoveRedirect/events.js +17 -15
  439. package/features/redirects/MoveRedirect/events.js.map +1 -1
  440. package/features/redirects/MoveRedirect/feature.d.ts +4 -1
  441. package/features/redirects/MoveRedirect/feature.js +7 -6
  442. package/features/redirects/MoveRedirect/feature.js.map +1 -1
  443. package/features/redirects/MoveRedirect/index.d.ts +1 -1
  444. package/features/redirects/MoveRedirect/index.js +1 -3
  445. package/features/redirects/UpdateRedirect/UpdateRedirectRepository.js +31 -35
  446. package/features/redirects/UpdateRedirect/UpdateRedirectRepository.js.map +1 -1
  447. package/features/redirects/UpdateRedirect/UpdateRedirectUseCase.d.ts +4 -2
  448. package/features/redirects/UpdateRedirect/UpdateRedirectUseCase.js +47 -45
  449. package/features/redirects/UpdateRedirect/UpdateRedirectUseCase.js.map +1 -1
  450. package/features/redirects/UpdateRedirect/abstractions.d.ts +11 -7
  451. package/features/redirects/UpdateRedirect/abstractions.js +5 -27
  452. package/features/redirects/UpdateRedirect/abstractions.js.map +1 -1
  453. package/features/redirects/UpdateRedirect/events.d.ts +3 -3
  454. package/features/redirects/UpdateRedirect/events.js +17 -15
  455. package/features/redirects/UpdateRedirect/events.js.map +1 -1
  456. package/features/redirects/UpdateRedirect/feature.d.ts +4 -1
  457. package/features/redirects/UpdateRedirect/feature.js +7 -6
  458. package/features/redirects/UpdateRedirect/feature.js.map +1 -1
  459. package/features/redirects/UpdateRedirect/index.d.ts +1 -1
  460. package/features/redirects/UpdateRedirect/index.js +1 -3
  461. package/features/tenantManager/TenantModelExtension.js +52 -32
  462. package/features/tenantManager/TenantModelExtension.js.map +1 -1
  463. package/features/tenantManager/feature.d.ts +4 -1
  464. package/features/tenantManager/feature.js +6 -5
  465. package/features/tenantManager/feature.js.map +1 -1
  466. package/features/webhooks/WbWebhookEventProvider.d.ts +8 -0
  467. package/features/webhooks/WbWebhookEventProvider.js +95 -0
  468. package/features/webhooks/WbWebhookEventProvider.js.map +1 -0
  469. package/features/webhooks/constants.d.ts +12 -0
  470. package/features/webhooks/constants.js +16 -0
  471. package/features/webhooks/constants.js.map +1 -0
  472. package/features/webhooks/feature.d.ts +4 -0
  473. package/features/webhooks/feature.js +31 -0
  474. package/features/webhooks/feature.js.map +1 -0
  475. package/features/webhooks/handlers/OnPageCreatedHandler.d.ts +11 -0
  476. package/features/webhooks/handlers/OnPageCreatedHandler.js +22 -0
  477. package/features/webhooks/handlers/OnPageCreatedHandler.js.map +1 -0
  478. package/features/webhooks/handlers/OnPageDeletedHandler.d.ts +11 -0
  479. package/features/webhooks/handlers/OnPageDeletedHandler.js +22 -0
  480. package/features/webhooks/handlers/OnPageDeletedHandler.js.map +1 -0
  481. package/features/webhooks/handlers/OnPagePublishedHandler.d.ts +11 -0
  482. package/features/webhooks/handlers/OnPagePublishedHandler.js +22 -0
  483. package/features/webhooks/handlers/OnPagePublishedHandler.js.map +1 -0
  484. package/features/webhooks/handlers/OnPageRestoredHandler.d.ts +11 -0
  485. package/features/webhooks/handlers/OnPageRestoredHandler.js +22 -0
  486. package/features/webhooks/handlers/OnPageRestoredHandler.js.map +1 -0
  487. package/features/webhooks/handlers/OnPageTrashedHandler.d.ts +11 -0
  488. package/features/webhooks/handlers/OnPageTrashedHandler.js +22 -0
  489. package/features/webhooks/handlers/OnPageTrashedHandler.js.map +1 -0
  490. package/features/webhooks/handlers/OnPageUnpublishedHandler.d.ts +11 -0
  491. package/features/webhooks/handlers/OnPageUnpublishedHandler.js +22 -0
  492. package/features/webhooks/handlers/OnPageUnpublishedHandler.js.map +1 -0
  493. package/features/webhooks/handlers/OnPageUpdatedHandler.d.ts +11 -0
  494. package/features/webhooks/handlers/OnPageUpdatedHandler.js +23 -0
  495. package/features/webhooks/handlers/OnPageUpdatedHandler.js.map +1 -0
  496. package/features/webhooks/handlers/OnRedirectCreatedHandler.d.ts +11 -0
  497. package/features/webhooks/handlers/OnRedirectCreatedHandler.js +22 -0
  498. package/features/webhooks/handlers/OnRedirectCreatedHandler.js.map +1 -0
  499. package/features/webhooks/handlers/OnRedirectDeletedHandler.d.ts +11 -0
  500. package/features/webhooks/handlers/OnRedirectDeletedHandler.js +22 -0
  501. package/features/webhooks/handlers/OnRedirectDeletedHandler.js.map +1 -0
  502. package/features/webhooks/handlers/OnRedirectUpdatedHandler.d.ts +11 -0
  503. package/features/webhooks/handlers/OnRedirectUpdatedHandler.js +23 -0
  504. package/features/webhooks/handlers/OnRedirectUpdatedHandler.js.map +1 -0
  505. package/graphql/createGraphQL.js +15 -12
  506. package/graphql/createGraphQL.js.map +1 -1
  507. package/graphql/nextjs/NextjsGraphQLSchema.js +28 -29
  508. package/graphql/nextjs/NextjsGraphQLSchema.js.map +1 -1
  509. package/graphql/pages/pages.gql.js +226 -254
  510. package/graphql/pages/pages.gql.js.map +1 -1
  511. package/graphql/pages/pages.typeDefs.d.ts +1 -1
  512. package/graphql/pages/pages.typeDefs.js +24 -2
  513. package/graphql/pages/pages.typeDefs.js.map +1 -1
  514. package/graphql/redirects/redirects.gql.js +56 -86
  515. package/graphql/redirects/redirects.gql.js.map +1 -1
  516. package/graphql/redirects/redirects.typeDefs.js +3 -4
  517. package/graphql/redirects/redirects.typeDefs.js.map +1 -1
  518. package/index.d.ts +1 -1
  519. package/index.js +73 -55
  520. package/index.js.map +1 -1
  521. package/package.json +30 -27
  522. package/rest/ActiveRedirectDto.js +0 -3
  523. package/rest/ActiveRedirectRestMapper.js +10 -9
  524. package/rest/ActiveRedirectRestMapper.js.map +1 -1
  525. package/rest/getRedirects.js +19 -26
  526. package/rest/getRedirects.js.map +1 -1
  527. package/utils/ensureAuthentication.js +6 -9
  528. package/utils/ensureAuthentication.js.map +1 -1
  529. package/utils/resolve.js +7 -6
  530. package/utils/resolve.js.map +1 -1
  531. package/domain/shared/abstractions.js.map +0 -1
  532. package/exports/api/website-builder/nextjs.js.map +0 -1
  533. package/exports/api/website-builder/page.js.map +0 -1
  534. package/exports/api/website-builder/redirect.js.map +0 -1
  535. package/features/nextjs/index.js.map +0 -1
  536. package/features/pages/CreatePage/index.js.map +0 -1
  537. package/features/pages/CreatePageRevisionFrom/index.js.map +0 -1
  538. package/features/pages/DeletePage/index.js.map +0 -1
  539. package/features/pages/DuplicatePage/index.js.map +0 -1
  540. package/features/pages/GetPageById/index.js.map +0 -1
  541. package/features/pages/GetPageByPath/index.js.map +0 -1
  542. package/features/pages/GetPageRevisions/index.js.map +0 -1
  543. package/features/pages/ListPages/index.js.map +0 -1
  544. package/features/pages/MovePage/index.js.map +0 -1
  545. package/features/pages/PagePermissions/feature.d.ts +0 -1
  546. package/features/pages/PagePermissions/feature.js +0 -53
  547. package/features/pages/PagePermissions/feature.js.map +0 -1
  548. package/features/pages/PublishPage/index.js.map +0 -1
  549. package/features/pages/UnpublishPage/index.js.map +0 -1
  550. package/features/pages/UpdatePage/index.js.map +0 -1
  551. package/features/redirects/CreateRedirect/index.js.map +0 -1
  552. package/features/redirects/DeleteRedirect/index.js.map +0 -1
  553. package/features/redirects/GetActiveRedirects/index.js.map +0 -1
  554. package/features/redirects/GetRedirectById/index.js.map +0 -1
  555. package/features/redirects/InvalidateRedirectsCache/index.js.map +0 -1
  556. package/features/redirects/ListRedirects/index.js.map +0 -1
  557. package/features/redirects/MoveRedirect/index.js.map +0 -1
  558. package/features/redirects/RedirectPermissions/feature.d.ts +0 -1
  559. package/features/redirects/RedirectPermissions/feature.js +0 -45
  560. package/features/redirects/RedirectPermissions/feature.js.map +0 -1
  561. package/features/redirects/UpdateRedirect/index.js.map +0 -1
  562. package/rest/ActiveRedirectDto.js.map +0 -1
@@ -1,278 +1,271 @@
1
- import { describe, it, expect, beforeEach, vi } from "vitest";
1
+ import { beforeEach, describe, expect, it, vi } from "vitest";
2
2
  import { MarkdownContentBuilder } from "./MarkdownContentBuilder.js";
3
- describe("MarkdownContentBuilder", () => {
4
- let builder;
5
- beforeEach(() => {
6
- builder = new MarkdownContentBuilder();
7
- });
8
- describe("add", () => {
9
- it("should add sections to the end by default", () => {
10
- builder.add("section1", "First section").add("section2", "Second section");
11
- expect(builder.build()).toBe("First section\nSecond section");
3
+ describe("MarkdownContentBuilder", ()=>{
4
+ let builder;
5
+ beforeEach(()=>{
6
+ builder = new MarkdownContentBuilder();
7
+ });
8
+ describe("add", ()=>{
9
+ it("should add sections to the end by default", ()=>{
10
+ builder.add("section1", "First section").add("section2", "Second section");
11
+ expect(builder.build()).toBe("First section\nSecond section");
12
+ });
13
+ it("should add section before specified id", ()=>{
14
+ builder.add("section1", "First").add("section2", "Second").add("section-middle", "Middle", {
15
+ before: "section2"
16
+ });
17
+ expect(builder.build()).toBe("First\nMiddle\nSecond");
18
+ });
19
+ it("should add section after specified id", ()=>{
20
+ builder.add("section1", "First").add("section2", "Second").add("section-middle", "Middle", {
21
+ after: "section1"
22
+ });
23
+ expect(builder.build()).toBe("First\nMiddle\nSecond");
24
+ });
25
+ it("should append to end if before id not found", ()=>{
26
+ builder.add("section1", "First").add("section2", "Second", {
27
+ before: "non-existent"
28
+ });
29
+ expect(builder.build()).toBe("First\nSecond");
30
+ });
31
+ it("should append to end if after id not found", ()=>{
32
+ builder.add("section1", "First").add("section2", "Second", {
33
+ after: "non-existent"
34
+ });
35
+ expect(builder.build()).toBe("First\nSecond");
36
+ });
37
+ });
38
+ describe("remove", ()=>{
39
+ it("should remove section by id", ()=>{
40
+ builder.add("section1", "First").add("section2", "Second").add("section3", "Third").remove("section2");
41
+ expect(builder.build()).toBe("First\nThird");
42
+ });
43
+ it("should handle removing non-existent id gracefully", ()=>{
44
+ builder.add("section1", "First").remove("non-existent");
45
+ expect(builder.build()).toBe("First");
46
+ });
47
+ it("should handle removing from empty builder", ()=>{
48
+ builder.remove("section1");
49
+ expect(builder.build()).toBe("");
50
+ });
51
+ });
52
+ describe("replace", ()=>{
53
+ it("should replace section content with string", ()=>{
54
+ builder.add("section1", "Original content").replace("section1", "Replaced content");
55
+ expect(builder.build()).toBe("Replaced content");
56
+ });
57
+ it("should replace section content with callback", ()=>{
58
+ builder.add("section1", "Original content").replace("section1", (current)=>current.toUpperCase());
59
+ expect(builder.build()).toBe("ORIGINAL CONTENT");
60
+ });
61
+ it("should pass current content to callback", ()=>{
62
+ builder.add("section1", "Hello").replace("section1", (current)=>`${current} World`);
63
+ expect(builder.build()).toBe("Hello World");
64
+ });
65
+ it("should handle callback that transforms content", ()=>{
66
+ builder.add("code", '```bash\necho "test"\n```').replace("code", (current)=>current.replace("bash", "javascript"));
67
+ expect(builder.build()).toBe('```javascript\necho "test"\n```');
68
+ });
69
+ it("should handle callback returning empty string", ()=>{
70
+ builder.add("section1", "Original").replace("section1", ()=>"");
71
+ expect(builder.build()).toBe("");
72
+ });
73
+ it("should handle replacing non-existent id with callback gracefully", ()=>{
74
+ builder.add("section1", "First").replace("non-existent", (current)=>current + " modified");
75
+ expect(builder.build()).toBe("First");
76
+ });
77
+ it("should maintain section position when replacing with callback", ()=>{
78
+ builder.add("section1", "First").add("section2", "Second").add("section3", "Third").replace("section2", (current)=>current.toUpperCase());
79
+ expect(builder.build()).toBe("First\nSECOND\nThird");
80
+ });
81
+ });
82
+ describe("complex scenarios with callbacks", ()=>{
83
+ it("should support plugin decoration with transformations", ()=>{
84
+ builder.setVariable("API_KEY", "wat_12345").add("section1", "Key: {API_KEY}").add("code", "```bash\nAPI_KEY={API_KEY}\n```");
85
+ builder.replace("code", (current)=>`⚠️ **Security Warning**: Keep this private!\n\n${current}`);
86
+ const result = builder.build();
87
+ expect(result).toContain("Security Warning");
88
+ expect(result).toContain("```bash");
89
+ });
90
+ it("should chain multiple replace operations", ()=>{
91
+ builder.add("text", "hello world").replace("text", (s)=>s.toUpperCase()).replace("text", (s)=>`**${s}**`).replace("text", (s)=>`${s}!!!`);
92
+ expect(builder.build()).toBe("**HELLO WORLD**!!!");
93
+ });
94
+ });
95
+ describe("variables", ()=>{
96
+ it("should set and substitute single variable", ()=>{
97
+ builder.setVariable("API_KEY", "wat_12345").add("section1", "Your API key is {API_KEY}");
98
+ expect(builder.build()).toBe("Your API key is wat_12345");
99
+ });
100
+ it("should set and substitute multiple variables", ()=>{
101
+ builder.setVariables({
102
+ API_KEY: "wat_12345",
103
+ HOST: "https://api.example.com",
104
+ TENANT: "root"
105
+ }).add("section1", "Key: {API_KEY}, Host: {HOST}, Tenant: {TENANT}");
106
+ expect(builder.build()).toBe("Key: wat_12345, Host: https://api.example.com, Tenant: root");
107
+ });
108
+ it("should substitute variables in multiple sections", ()=>{
109
+ builder.setVariable("API_KEY", "wat_12345").add("section1", "Section 1: {API_KEY}").add("section2", "Section 2: {API_KEY}");
110
+ expect(builder.build()).toBe("Section 1: wat_12345\nSection 2: wat_12345");
111
+ });
112
+ it("should handle variable replacement in code blocks", ()=>{
113
+ builder.setVariables({
114
+ API_KEY: "wat_12345",
115
+ HOST: "https://api.example.com"
116
+ }).add("code", "```bash\nAPI_KEY={API_KEY}\nHOST={HOST}\n```");
117
+ expect(builder.build()).toBe("```bash\nAPI_KEY=wat_12345\nHOST=https://api.example.com\n```");
118
+ });
119
+ it("should leave unmatched variables unchanged", ()=>{
120
+ builder.setVariable("API_KEY", "wat_12345").add("section1", "Key: {API_KEY}, Unknown: {UNKNOWN}");
121
+ expect(builder.build()).toBe("Key: wat_12345, Unknown: {UNKNOWN}");
122
+ });
123
+ it("should handle variables with special regex characters", ()=>{
124
+ builder.setVariable("VAR.NAME", "value1").setVariable("VAR$NAME", "value2").add("section1", "{VAR.NAME} and {VAR$NAME}");
125
+ expect(builder.build()).toBe("value1 and value2");
126
+ });
127
+ it("should get variable value", ()=>{
128
+ builder.setVariable("API_KEY", "wat_12345");
129
+ expect(builder.getVariable("API_KEY")).toBe("wat_12345");
130
+ });
131
+ it("should return undefined for non-existent variable", ()=>{
132
+ expect(builder.getVariable("NON_EXISTENT")).toBeUndefined();
133
+ });
134
+ it("should override variable when set multiple times", ()=>{
135
+ builder.setVariable("API_KEY", "old_value").setVariable("API_KEY", "new_value").add("section1", "{API_KEY}");
136
+ expect(builder.build()).toBe("new_value");
137
+ });
138
+ it("should handle multiple occurrences of same variable", ()=>{
139
+ builder.setVariable("NAME", "John").add("section1", "Hello {NAME}, welcome {NAME}!");
140
+ expect(builder.build()).toBe("Hello John, welcome John!");
141
+ });
142
+ });
143
+ describe("build", ()=>{
144
+ it("should use default newline separator", ()=>{
145
+ builder.add("section1", "First").add("section2", "Second");
146
+ expect(builder.build()).toBe("First\nSecond");
147
+ });
148
+ it("should use custom separator", ()=>{
149
+ builder.add("section1", "First").add("section2", "Second");
150
+ expect(builder.build("\n\n")).toBe("First\n\nSecond");
151
+ });
152
+ it("should return empty string for empty builder", ()=>{
153
+ expect(builder.build()).toBe("");
154
+ });
155
+ it("should handle single section", ()=>{
156
+ builder.add("section1", "Only section");
157
+ expect(builder.build()).toBe("Only section");
158
+ });
159
+ });
160
+ describe("method chaining", ()=>{
161
+ it("should support fluent interface", ()=>{
162
+ const result = builder.setVariable("NAME", "Test").add("section1", "Hello {NAME}").add("section2", "Second").remove("section2").add("section3", "Third").replace("section3", "Replaced").build();
163
+ expect(result).toBe("Hello Test\nReplaced");
164
+ });
165
+ });
166
+ describe("complex scenarios", ()=>{
167
+ it("should handle Next.js config example", ()=>{
168
+ const result = builder.setVariables({
169
+ API_KEY: "wat_12345678",
170
+ API_HOST: "https://example.cloudfront.net",
171
+ TENANT: "root"
172
+ }).add("description", "This is a configuration for **Webiny Next.js starter kit**:").add("env-vars", "```bash\nNEXT_PUBLIC_WEBSITE_BUILDER_API_KEY={API_KEY}\nNEXT_PUBLIC_WEBSITE_BUILDER_API_HOST={API_HOST}\nNEXT_PUBLIC_WEBSITE_BUILDER_API_TENANT={TENANT}\n```").build();
173
+ expect(result).toContain("wat_12345678");
174
+ expect(result).toContain("https://example.cloudfront.net");
175
+ expect(result).toContain("root");
176
+ expect(result).toContain("Webiny Next.js starter kit");
177
+ });
178
+ it("should support plugin decoration pattern", ()=>{
179
+ builder.setVariable("API_KEY", "original_key").add("section1", "Key: {API_KEY}");
180
+ builder.setVariable("API_KEY", "plugin_key").add("plugin-section", "Added by plugin: {API_KEY}", {
181
+ after: "section1"
182
+ });
183
+ const result = builder.build();
184
+ expect(result).toBe("Key: plugin_key\nAdded by plugin: plugin_key");
185
+ });
186
+ });
187
+ describe("deep variable interpolation", ()=>{
188
+ it("should handle single level nested variables", ()=>{
189
+ builder.setVariables({
190
+ LINK: "https://example.com",
191
+ DESCRIPTION: "Visit {LINK} for more info"
192
+ }).add("section1", "{DESCRIPTION}");
193
+ expect(builder.build()).toBe("Visit https://example.com for more info");
194
+ });
195
+ it("should handle multiple levels of nested variables", ()=>{
196
+ builder.setVariables({
197
+ BASE_URL: "https://example.com",
198
+ API_PATH: "{BASE_URL}/api",
199
+ FULL_ENDPOINT: "{API_PATH}/v1/users"
200
+ }).add("section1", "Endpoint: {FULL_ENDPOINT}");
201
+ expect(builder.build()).toBe("Endpoint: https://example.com/api/v1/users");
202
+ });
203
+ it("should handle variables in HTML links", ()=>{
204
+ builder.setVariables({
205
+ STARTER_KIT_LINK: "https://github.com/webiny/website-builder-nextjs",
206
+ DESCRIPTION: '<a href="{STARTER_KIT_LINK}" target="_blank">Webiny Next.js starter kit</a>'
207
+ }).add("section1", "{DESCRIPTION}");
208
+ expect(builder.build()).toBe('<a href="https://github.com/webiny/website-builder-nextjs" target="_blank">Webiny Next.js starter kit</a>');
209
+ });
210
+ it("should handle complex nested scenario from example", ()=>{
211
+ builder.setVariables({
212
+ DESCRIPTION: 'This is a configuration for <a href="{STARTER_KIT_LINK}" target="_blank">Webiny Next.js starter kit:</a>',
213
+ STARTER_KIT_LINK: "https://github.com/webiny/website-builder-nextjs",
214
+ API_TOKEN: "wat_12345",
215
+ API_HOST: "https://api.example.com",
216
+ ADMIN_HOST: "https://admin.example.com",
217
+ TENANT_ID: "root"
218
+ }).add("description", "{DESCRIPTION}");
219
+ const result = builder.build();
220
+ expect(result).toContain("https://github.com/webiny/website-builder-nextjs");
221
+ expect(result).toContain("Webiny Next.js starter kit");
222
+ expect(result).not.toContain("{STARTER_KIT_LINK}");
223
+ });
224
+ it("should handle variable that references another variable multiple times", ()=>{
225
+ builder.setVariables({
226
+ NAME: "John",
227
+ GREETING: "Hello {NAME}, welcome {NAME}!"
228
+ }).add("section1", "{GREETING}");
229
+ expect(builder.build()).toBe("Hello John, welcome John!");
230
+ });
231
+ it("should handle deep nesting (3+ levels)", ()=>{
232
+ builder.setVariables({
233
+ LEVEL_1: "base",
234
+ LEVEL_2: "{LEVEL_1}/path",
235
+ LEVEL_3: "{LEVEL_2}/more",
236
+ LEVEL_4: "{LEVEL_3}/final"
237
+ }).add("section1", "{LEVEL_4}");
238
+ expect(builder.build()).toBe("base/path/more/final");
239
+ });
240
+ it("should handle circular references gracefully", ()=>{
241
+ const consoleSpy = vi.spyOn(console, "warn").mockImplementation(()=>{});
242
+ builder.setVariables({
243
+ VAR_A: "Start {VAR_B}",
244
+ VAR_B: "{VAR_A} End"
245
+ }).add("section1", "{VAR_A}");
246
+ builder.build();
247
+ expect(consoleSpy).toHaveBeenCalledWith(expect.stringContaining("Maximum interpolation depth reached"));
248
+ consoleSpy.mockRestore();
249
+ });
250
+ it("should stop at undefined variables and leave them as-is", ()=>{
251
+ builder.setVariables({
252
+ DEFINED: "value",
253
+ HAS_UNDEFINED: "{DEFINED} and {UNDEFINED}"
254
+ }).add("section1", "{HAS_UNDEFINED}");
255
+ expect(builder.build()).toBe("value and {UNDEFINED}");
256
+ });
257
+ it("should handle mixed defined and nested variables", ()=>{
258
+ builder.setVariables({
259
+ API_KEY: "key123",
260
+ HOST: "example.com",
261
+ CONFIG: "API_KEY={API_KEY}\nHOST={HOST}\nUNDEFINED={UNKNOWN}"
262
+ }).add("section1", "{CONFIG}");
263
+ const result = builder.build();
264
+ expect(result).toContain("API_KEY=key123");
265
+ expect(result).toContain("HOST=example.com");
266
+ expect(result).toContain("UNDEFINED={UNKNOWN}");
267
+ });
12
268
  });
13
- it("should add section before specified id", () => {
14
- builder.add("section1", "First").add("section2", "Second").add("section-middle", "Middle", {
15
- before: "section2"
16
- });
17
- expect(builder.build()).toBe("First\nMiddle\nSecond");
18
- });
19
- it("should add section after specified id", () => {
20
- builder.add("section1", "First").add("section2", "Second").add("section-middle", "Middle", {
21
- after: "section1"
22
- });
23
- expect(builder.build()).toBe("First\nMiddle\nSecond");
24
- });
25
- it("should append to end if before id not found", () => {
26
- builder.add("section1", "First").add("section2", "Second", {
27
- before: "non-existent"
28
- });
29
- expect(builder.build()).toBe("First\nSecond");
30
- });
31
- it("should append to end if after id not found", () => {
32
- builder.add("section1", "First").add("section2", "Second", {
33
- after: "non-existent"
34
- });
35
- expect(builder.build()).toBe("First\nSecond");
36
- });
37
- });
38
- describe("remove", () => {
39
- it("should remove section by id", () => {
40
- builder.add("section1", "First").add("section2", "Second").add("section3", "Third").remove("section2");
41
- expect(builder.build()).toBe("First\nThird");
42
- });
43
- it("should handle removing non-existent id gracefully", () => {
44
- builder.add("section1", "First").remove("non-existent");
45
- expect(builder.build()).toBe("First");
46
- });
47
- it("should handle removing from empty builder", () => {
48
- builder.remove("section1");
49
- expect(builder.build()).toBe("");
50
- });
51
- });
52
- describe("replace", () => {
53
- it("should replace section content with string", () => {
54
- builder.add("section1", "Original content").replace("section1", "Replaced content");
55
- expect(builder.build()).toBe("Replaced content");
56
- });
57
- it("should replace section content with callback", () => {
58
- builder.add("section1", "Original content").replace("section1", current => current.toUpperCase());
59
- expect(builder.build()).toBe("ORIGINAL CONTENT");
60
- });
61
- it("should pass current content to callback", () => {
62
- builder.add("section1", "Hello").replace("section1", current => `${current} World`);
63
- expect(builder.build()).toBe("Hello World");
64
- });
65
- it("should handle callback that transforms content", () => {
66
- builder.add("code", '```bash\necho "test"\n```').replace("code", current => current.replace("bash", "javascript"));
67
- expect(builder.build()).toBe('```javascript\necho "test"\n```');
68
- });
69
- it("should handle callback returning empty string", () => {
70
- builder.add("section1", "Original").replace("section1", () => "");
71
- expect(builder.build()).toBe("");
72
- });
73
- it("should handle replacing non-existent id with callback gracefully", () => {
74
- builder.add("section1", "First").replace("non-existent", current => current + " modified");
75
- expect(builder.build()).toBe("First");
76
- });
77
- it("should maintain section position when replacing with callback", () => {
78
- builder.add("section1", "First").add("section2", "Second").add("section3", "Third").replace("section2", current => current.toUpperCase());
79
- expect(builder.build()).toBe("First\nSECOND\nThird");
80
- });
81
- });
82
- describe("complex scenarios with callbacks", () => {
83
- it("should support plugin decoration with transformations", () => {
84
- builder.setVariable("API_KEY", "wat_12345").add("section1", "Key: {API_KEY}").add("code", "```bash\nAPI_KEY={API_KEY}\n```");
85
-
86
- // Plugin adds warning to code section
87
- builder.replace("code", current => {
88
- return `⚠️ **Security Warning**: Keep this private!\n\n${current}`;
89
- });
90
- const result = builder.build();
91
- expect(result).toContain("Security Warning");
92
- expect(result).toContain("```bash");
93
- });
94
- it("should chain multiple replace operations", () => {
95
- builder.add("text", "hello world").replace("text", s => s.toUpperCase()).replace("text", s => `**${s}**`).replace("text", s => `${s}!!!`);
96
- expect(builder.build()).toBe("**HELLO WORLD**!!!");
97
- });
98
- });
99
- describe("variables", () => {
100
- it("should set and substitute single variable", () => {
101
- builder.setVariable("API_KEY", "wat_12345").add("section1", "Your API key is {API_KEY}");
102
- expect(builder.build()).toBe("Your API key is wat_12345");
103
- });
104
- it("should set and substitute multiple variables", () => {
105
- builder.setVariables({
106
- API_KEY: "wat_12345",
107
- HOST: "https://api.example.com",
108
- TENANT: "root"
109
- }).add("section1", "Key: {API_KEY}, Host: {HOST}, Tenant: {TENANT}");
110
- expect(builder.build()).toBe("Key: wat_12345, Host: https://api.example.com, Tenant: root");
111
- });
112
- it("should substitute variables in multiple sections", () => {
113
- builder.setVariable("API_KEY", "wat_12345").add("section1", "Section 1: {API_KEY}").add("section2", "Section 2: {API_KEY}");
114
- expect(builder.build()).toBe("Section 1: wat_12345\nSection 2: wat_12345");
115
- });
116
- it("should handle variable replacement in code blocks", () => {
117
- builder.setVariables({
118
- API_KEY: "wat_12345",
119
- HOST: "https://api.example.com"
120
- }).add("code", "```bash\nAPI_KEY={API_KEY}\nHOST={HOST}\n```");
121
- expect(builder.build()).toBe("```bash\nAPI_KEY=wat_12345\nHOST=https://api.example.com\n```");
122
- });
123
- it("should leave unmatched variables unchanged", () => {
124
- builder.setVariable("API_KEY", "wat_12345").add("section1", "Key: {API_KEY}, Unknown: {UNKNOWN}");
125
- expect(builder.build()).toBe("Key: wat_12345, Unknown: {UNKNOWN}");
126
- });
127
- it("should handle variables with special regex characters", () => {
128
- builder.setVariable("VAR.NAME", "value1").setVariable("VAR$NAME", "value2").add("section1", "{VAR.NAME} and {VAR$NAME}");
129
- expect(builder.build()).toBe("value1 and value2");
130
- });
131
- it("should get variable value", () => {
132
- builder.setVariable("API_KEY", "wat_12345");
133
- expect(builder.getVariable("API_KEY")).toBe("wat_12345");
134
- });
135
- it("should return undefined for non-existent variable", () => {
136
- expect(builder.getVariable("NON_EXISTENT")).toBeUndefined();
137
- });
138
- it("should override variable when set multiple times", () => {
139
- builder.setVariable("API_KEY", "old_value").setVariable("API_KEY", "new_value").add("section1", "{API_KEY}");
140
- expect(builder.build()).toBe("new_value");
141
- });
142
- it("should handle multiple occurrences of same variable", () => {
143
- builder.setVariable("NAME", "John").add("section1", "Hello {NAME}, welcome {NAME}!");
144
- expect(builder.build()).toBe("Hello John, welcome John!");
145
- });
146
- });
147
- describe("build", () => {
148
- it("should use default newline separator", () => {
149
- builder.add("section1", "First").add("section2", "Second");
150
- expect(builder.build()).toBe("First\nSecond");
151
- });
152
- it("should use custom separator", () => {
153
- builder.add("section1", "First").add("section2", "Second");
154
- expect(builder.build("\n\n")).toBe("First\n\nSecond");
155
- });
156
- it("should return empty string for empty builder", () => {
157
- expect(builder.build()).toBe("");
158
- });
159
- it("should handle single section", () => {
160
- builder.add("section1", "Only section");
161
- expect(builder.build()).toBe("Only section");
162
- });
163
- });
164
- describe("method chaining", () => {
165
- it("should support fluent interface", () => {
166
- const result = builder.setVariable("NAME", "Test").add("section1", "Hello {NAME}").add("section2", "Second").remove("section2").add("section3", "Third").replace("section3", "Replaced").build();
167
- expect(result).toBe("Hello Test\nReplaced");
168
- });
169
- });
170
- describe("complex scenarios", () => {
171
- it("should handle Next.js config example", () => {
172
- const result = builder.setVariables({
173
- API_KEY: "wat_12345678",
174
- API_HOST: "https://example.cloudfront.net",
175
- TENANT: "root"
176
- }).add("description", "This is a configuration for **Webiny Next.js starter kit**:").add("env-vars", "```bash\nNEXT_PUBLIC_WEBSITE_BUILDER_API_KEY={API_KEY}\nNEXT_PUBLIC_WEBSITE_BUILDER_API_HOST={API_HOST}\nNEXT_PUBLIC_WEBSITE_BUILDER_API_TENANT={TENANT}\n```").build();
177
- expect(result).toContain("wat_12345678");
178
- expect(result).toContain("https://example.cloudfront.net");
179
- expect(result).toContain("root");
180
- expect(result).toContain("Webiny Next.js starter kit");
181
- });
182
- it("should support plugin decoration pattern", () => {
183
- // Initial builder
184
- builder.setVariable("API_KEY", "original_key").add("section1", "Key: {API_KEY}");
185
-
186
- // Plugin modifies
187
- builder.setVariable("API_KEY", "plugin_key").add("plugin-section", "Added by plugin: {API_KEY}", {
188
- after: "section1"
189
- });
190
- const result = builder.build();
191
- expect(result).toBe("Key: plugin_key\nAdded by plugin: plugin_key");
192
- });
193
- });
194
- describe("deep variable interpolation", () => {
195
- it("should handle single level nested variables", () => {
196
- builder.setVariables({
197
- LINK: "https://example.com",
198
- DESCRIPTION: "Visit {LINK} for more info"
199
- }).add("section1", "{DESCRIPTION}");
200
- expect(builder.build()).toBe("Visit https://example.com for more info");
201
- });
202
- it("should handle multiple levels of nested variables", () => {
203
- builder.setVariables({
204
- BASE_URL: "https://example.com",
205
- API_PATH: "{BASE_URL}/api",
206
- FULL_ENDPOINT: "{API_PATH}/v1/users"
207
- }).add("section1", "Endpoint: {FULL_ENDPOINT}");
208
- expect(builder.build()).toBe("Endpoint: https://example.com/api/v1/users");
209
- });
210
- it("should handle variables in HTML links", () => {
211
- builder.setVariables({
212
- STARTER_KIT_LINK: "https://github.com/webiny/website-builder-nextjs",
213
- DESCRIPTION: '<a href="{STARTER_KIT_LINK}" target="_blank">Webiny Next.js starter kit</a>'
214
- }).add("section1", "{DESCRIPTION}");
215
- expect(builder.build()).toBe('<a href="https://github.com/webiny/website-builder-nextjs" target="_blank">Webiny Next.js starter kit</a>');
216
- });
217
- it("should handle complex nested scenario from example", () => {
218
- builder.setVariables({
219
- DESCRIPTION: 'This is a configuration for <a href="{STARTER_KIT_LINK}" target="_blank">Webiny Next.js starter kit:</a>',
220
- STARTER_KIT_LINK: "https://github.com/webiny/website-builder-nextjs",
221
- API_TOKEN: "wat_12345",
222
- API_HOST: "https://api.example.com",
223
- ADMIN_HOST: "https://admin.example.com",
224
- TENANT_ID: "root"
225
- }).add("description", "{DESCRIPTION}");
226
- const result = builder.build();
227
- expect(result).toContain("https://github.com/webiny/website-builder-nextjs");
228
- expect(result).toContain("Webiny Next.js starter kit");
229
- expect(result).not.toContain("{STARTER_KIT_LINK}");
230
- });
231
- it("should handle variable that references another variable multiple times", () => {
232
- builder.setVariables({
233
- NAME: "John",
234
- GREETING: "Hello {NAME}, welcome {NAME}!"
235
- }).add("section1", "{GREETING}");
236
- expect(builder.build()).toBe("Hello John, welcome John!");
237
- });
238
- it("should handle deep nesting (3+ levels)", () => {
239
- builder.setVariables({
240
- LEVEL_1: "base",
241
- LEVEL_2: "{LEVEL_1}/path",
242
- LEVEL_3: "{LEVEL_2}/more",
243
- LEVEL_4: "{LEVEL_3}/final"
244
- }).add("section1", "{LEVEL_4}");
245
- expect(builder.build()).toBe("base/path/more/final");
246
- });
247
- it("should handle circular references gracefully", () => {
248
- const consoleSpy = vi.spyOn(console, "warn").mockImplementation(() => {});
249
- builder.setVariables({
250
- VAR_A: "Start {VAR_B}",
251
- VAR_B: "{VAR_A} End"
252
- }).add("section1", "{VAR_A}");
253
- builder.build();
254
- expect(consoleSpy).toHaveBeenCalledWith(expect.stringContaining("Maximum interpolation depth reached"));
255
- consoleSpy.mockRestore();
256
- });
257
- it("should stop at undefined variables and leave them as-is", () => {
258
- builder.setVariables({
259
- DEFINED: "value",
260
- HAS_UNDEFINED: "{DEFINED} and {UNDEFINED}"
261
- }).add("section1", "{HAS_UNDEFINED}");
262
- expect(builder.build()).toBe("value and {UNDEFINED}");
263
- });
264
- it("should handle mixed defined and nested variables", () => {
265
- builder.setVariables({
266
- API_KEY: "key123",
267
- HOST: "example.com",
268
- CONFIG: "API_KEY={API_KEY}\nHOST={HOST}\nUNDEFINED={UNKNOWN}"
269
- }).add("section1", "{CONFIG}");
270
- const result = builder.build();
271
- expect(result).toContain("API_KEY=key123");
272
- expect(result).toContain("HOST=example.com");
273
- expect(result).toContain("UNDEFINED={UNKNOWN}");
274
- });
275
- });
276
269
  });
277
270
 
278
271
  //# sourceMappingURL=MarkdownContentBuilder.test.js.map