strapi-plugin-navigation 2.3.2 → 2.5.0

This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
Files changed (407) hide show
  1. package/LICENSE.md +7 -0
  2. package/README.md +855 -0
  3. package/admin/src/components/AdditionalFieldInput/index.d.ts +2 -2
  4. package/admin/src/components/AdditionalFieldInput/index.js +36 -8
  5. package/admin/src/components/AdditionalFieldInput/types.d.ts +1 -1
  6. package/admin/src/components/DragButton/index.d.ts +3 -1
  7. package/admin/src/components/DragButton/index.js +2 -1
  8. package/admin/src/components/Item/ItemCardHeader/index.d.ts +1 -0
  9. package/admin/src/components/Item/ItemCardHeader/index.js +10 -5
  10. package/admin/src/components/Item/index.js +24 -4
  11. package/admin/src/components/NavigationItemList/index.js +1 -1
  12. package/admin/src/components/Search/index.d.ts +10 -4
  13. package/admin/src/components/Search/index.js +45 -6
  14. package/admin/src/components/TextArrayInput/index.d.ts +2 -1
  15. package/admin/src/pages/DataManagerProvider/actions.d.ts +2 -0
  16. package/admin/src/pages/DataManagerProvider/actions.js +3 -1
  17. package/admin/src/pages/DataManagerProvider/index.js +28 -0
  18. package/admin/src/pages/DataManagerProvider/reducer.js +8 -0
  19. package/admin/src/pages/SettingsPage/common/const.d.ts +2 -0
  20. package/admin/src/pages/SettingsPage/common/const.js +5 -0
  21. package/admin/src/pages/SettingsPage/common/index.d.ts +2 -0
  22. package/admin/src/pages/SettingsPage/common/index.js +18 -0
  23. package/admin/src/pages/SettingsPage/components/CustomFieldForm/index.js +27 -12
  24. package/admin/src/pages/SettingsPage/components/CustomFieldTable/index.js +1 -1
  25. package/admin/src/pages/SettingsPage/components/DisableI18nModal/index.d.ts +2 -3
  26. package/admin/src/pages/SettingsPage/components/DisableI18nModal/index.js +12 -14
  27. package/admin/src/pages/SettingsPage/index.js +22 -9
  28. package/admin/src/pages/SettingsPage/types.d.ts +2 -1
  29. package/admin/src/pages/SettingsPage/utils/form.js +2 -1
  30. package/admin/src/pages/View/components/NavigationHeader/index.d.ts +2 -1
  31. package/admin/src/pages/View/components/NavigationHeader/index.js +5 -3
  32. package/admin/src/pages/View/components/NavigationItemForm/index.js +49 -19
  33. package/admin/src/pages/View/components/NavigationItemForm/types.d.ts +2 -1
  34. package/admin/src/pages/View/components/NavigationItemForm/utils/form.js +2 -0
  35. package/admin/src/pages/View/components/NavigationManager/AllNavigations/icons.d.ts +1 -0
  36. package/admin/src/pages/View/components/NavigationManager/AllNavigations/icons.js +2 -1
  37. package/admin/src/pages/View/components/NavigationManager/AllNavigations/index.js +16 -4
  38. package/admin/src/pages/View/components/NavigationManager/PurgeCacheConfirm/index.d.ts +8 -0
  39. package/admin/src/pages/View/components/NavigationManager/PurgeCacheConfirm/index.js +34 -0
  40. package/admin/src/pages/View/components/NavigationManager/index.js +15 -2
  41. package/admin/src/pages/View/components/NavigationManager/types.d.ts +5 -1
  42. package/admin/src/pages/View/index.js +25 -12
  43. package/admin/src/pages/View/utils/form.d.ts +1 -1
  44. package/admin/src/pages/View/utils/types.d.ts +3 -0
  45. package/admin/src/pages/View/utils/types.js +3 -0
  46. package/admin/src/translations/ca.json +1 -0
  47. package/admin/src/translations/en.json +10 -0
  48. package/admin/src/translations/fr.json +1 -0
  49. package/admin/src/utils/api.js +1 -1
  50. package/package.json +76 -101
  51. package/server/bootstrap/index.js +3 -0
  52. package/server/cache/index.d.ts +2 -0
  53. package/server/cache/index.js +18 -0
  54. package/server/cache/serviceEnhancers.d.ts +3 -0
  55. package/server/cache/serviceEnhancers.js +16 -0
  56. package/server/cache/setupStrategy.d.ts +3 -0
  57. package/server/cache/setupStrategy.js +38 -0
  58. package/server/cache/types.d.ts +11 -0
  59. package/server/cache/types.js +3 -0
  60. package/server/cache/utils.d.ts +11 -0
  61. package/server/cache/utils.js +19 -0
  62. package/server/config/index.js +1 -0
  63. package/server/config/setupStrategy.js +1 -0
  64. package/server/content-types/index.d.ts +2 -0
  65. package/server/content-types/navigation/index.d.ts +1 -0
  66. package/server/content-types/navigation/index.js +3 -1
  67. package/server/content-types/navigation/lifecycles.d.ts +3 -0
  68. package/server/content-types/navigation/lifecycles.js +7 -0
  69. package/server/content-types/navigation-item/index.d.ts +1 -0
  70. package/server/content-types/navigation-item/index.js +3 -1
  71. package/server/content-types/navigation-item/lifecycles.d.ts +3 -0
  72. package/server/content-types/navigation-item/lifecycles.js +7 -0
  73. package/server/controllers/admin.js +37 -16
  74. package/server/controllers/client.js +2 -2
  75. package/server/graphql/queries/render-navigation-child.d.ts +1 -1
  76. package/server/graphql/queries/render-navigation.d.ts +1 -1
  77. package/server/graphql/types/index.js +1 -0
  78. package/server/graphql/types/navigation-item-additional-field-media.d.ts +5 -0
  79. package/server/graphql/types/navigation-item-additional-field-media.js +13 -0
  80. package/server/graphql/types/navigation-item.js +3 -0
  81. package/server/i18n/navigationSetupStrategy.js +1 -1
  82. package/server/i18n/utils.d.ts +1 -0
  83. package/server/i18n/utils.js +4 -0
  84. package/server/index.d.ts +2 -0
  85. package/server/routes/admin.js +20 -0
  86. package/server/services/admin.js +59 -15
  87. package/server/services/client.js +42 -11
  88. package/server/services/common.js +16 -0
  89. package/server/utils/constant.d.ts +3 -0
  90. package/server/utils/constant.js +21 -1
  91. package/server/utils/functions.d.ts +11 -3
  92. package/server/utils/functions.js +21 -3
  93. package/strapi-server.d.ts +2 -0
  94. package/tsconfig.tsbuildinfo +1 -1
  95. package/types/bootstrap.d.ts +3 -0
  96. package/types/config.d.ts +1 -0
  97. package/types/contentTypes.d.ts +7 -2
  98. package/types/controllers.d.ts +14 -3
  99. package/types/index.d.ts +1 -0
  100. package/types/index.js +1 -0
  101. package/types/lifecycle.d.ts +22 -0
  102. package/types/lifecycle.js +3 -0
  103. package/types/services.d.ts +20 -2
  104. package/__mocks__/strapi.d.ts +0 -3
  105. package/__mocks__/strapi.d.ts.map +0 -1
  106. package/__mocks__/strapi.js +0 -206
  107. package/__mocks__/strapi.js.map +0 -1
  108. package/admin/src/components/AdditionalFieldInput/index.d.ts.map +0 -1
  109. package/admin/src/components/AdditionalFieldInput/index.js.map +0 -1
  110. package/admin/src/components/AdditionalFieldInput/types.d.ts.map +0 -1
  111. package/admin/src/components/AdditionalFieldInput/types.js.map +0 -1
  112. package/admin/src/components/Alert/styles.d.ts.map +0 -1
  113. package/admin/src/components/Alert/styles.js.map +0 -1
  114. package/admin/src/components/CollapseButton/index.d.ts.map +0 -1
  115. package/admin/src/components/CollapseButton/index.js.map +0 -1
  116. package/admin/src/components/ConfirmationDialog/index.d.ts.map +0 -1
  117. package/admin/src/components/ConfirmationDialog/index.js.map +0 -1
  118. package/admin/src/components/DragButton/index.d.ts.map +0 -1
  119. package/admin/src/components/DragButton/index.js.map +0 -1
  120. package/admin/src/components/EmptyView/index.d.ts.map +0 -1
  121. package/admin/src/components/EmptyView/index.js.map +0 -1
  122. package/admin/src/components/Item/ItemCardBadge/index.d.ts.map +0 -1
  123. package/admin/src/components/Item/ItemCardBadge/index.js.map +0 -1
  124. package/admin/src/components/Item/ItemCardHeader/Wrapper.d.ts.map +0 -1
  125. package/admin/src/components/Item/ItemCardHeader/Wrapper.js.map +0 -1
  126. package/admin/src/components/Item/ItemCardHeader/icons.d.ts.map +0 -1
  127. package/admin/src/components/Item/ItemCardHeader/icons.js.map +0 -1
  128. package/admin/src/components/Item/ItemCardHeader/index.d.ts.map +0 -1
  129. package/admin/src/components/Item/ItemCardHeader/index.js.map +0 -1
  130. package/admin/src/components/Item/ItemCardRemovedOverlay/index.d.ts.map +0 -1
  131. package/admin/src/components/Item/ItemCardRemovedOverlay/index.js.map +0 -1
  132. package/admin/src/components/Item/Wrapper.d.ts.map +0 -1
  133. package/admin/src/components/Item/Wrapper.js.map +0 -1
  134. package/admin/src/components/Item/index.d.ts.map +0 -1
  135. package/admin/src/components/Item/index.js.map +0 -1
  136. package/admin/src/components/NavigationItemList/Wrapper.d.ts.map +0 -1
  137. package/admin/src/components/NavigationItemList/Wrapper.js.map +0 -1
  138. package/admin/src/components/NavigationItemList/index.d.ts.map +0 -1
  139. package/admin/src/components/NavigationItemList/index.js.map +0 -1
  140. package/admin/src/components/RestartAlert/index.d.ts.map +0 -1
  141. package/admin/src/components/RestartAlert/index.js.map +0 -1
  142. package/admin/src/components/Search/index.d.ts.map +0 -1
  143. package/admin/src/components/Search/index.js.map +0 -1
  144. package/admin/src/components/TextArrayInput/index.d.ts.map +0 -1
  145. package/admin/src/components/TextArrayInput/index.js.map +0 -1
  146. package/admin/src/components/icons/navigation.d.ts.map +0 -1
  147. package/admin/src/components/icons/navigation.js.map +0 -1
  148. package/admin/src/contexts/DataManagerContext.d.ts.map +0 -1
  149. package/admin/src/contexts/DataManagerContext.js.map +0 -1
  150. package/admin/src/hooks/useAllContentTypes.d.ts.map +0 -1
  151. package/admin/src/hooks/useAllContentTypes.js.map +0 -1
  152. package/admin/src/hooks/useDataManager.d.ts.map +0 -1
  153. package/admin/src/hooks/useDataManager.js.map +0 -1
  154. package/admin/src/hooks/useI18nCopyNavigationItemsModal.d.ts.map +0 -1
  155. package/admin/src/hooks/useI18nCopyNavigationItemsModal.js.map +0 -1
  156. package/admin/src/hooks/useNavigationConfig.d.ts.map +0 -1
  157. package/admin/src/hooks/useNavigationConfig.js.map +0 -1
  158. package/admin/src/hooks/useNavigationManager.d.ts.map +0 -1
  159. package/admin/src/hooks/useNavigationManager.js.map +0 -1
  160. package/admin/src/index.d.ts.map +0 -1
  161. package/admin/src/index.js.map +0 -1
  162. package/admin/src/pages/App/index.d.ts.map +0 -1
  163. package/admin/src/pages/App/index.js.map +0 -1
  164. package/admin/src/pages/DataManagerProvider/actions.d.ts.map +0 -1
  165. package/admin/src/pages/DataManagerProvider/actions.js.map +0 -1
  166. package/admin/src/pages/DataManagerProvider/index.d.ts.map +0 -1
  167. package/admin/src/pages/DataManagerProvider/index.js.map +0 -1
  168. package/admin/src/pages/DataManagerProvider/init.d.ts.map +0 -1
  169. package/admin/src/pages/DataManagerProvider/init.js.map +0 -1
  170. package/admin/src/pages/DataManagerProvider/reducer.d.ts.map +0 -1
  171. package/admin/src/pages/DataManagerProvider/reducer.js.map +0 -1
  172. package/admin/src/pages/NoAccessPage/index.d.ts.map +0 -1
  173. package/admin/src/pages/NoAccessPage/index.js.map +0 -1
  174. package/admin/src/pages/SettingsPage/components/CustomFieldForm/index.d.ts.map +0 -1
  175. package/admin/src/pages/SettingsPage/components/CustomFieldForm/index.js.map +0 -1
  176. package/admin/src/pages/SettingsPage/components/CustomFieldModal/index.d.ts.map +0 -1
  177. package/admin/src/pages/SettingsPage/components/CustomFieldModal/index.js.map +0 -1
  178. package/admin/src/pages/SettingsPage/components/CustomFieldTable/index.d.ts.map +0 -1
  179. package/admin/src/pages/SettingsPage/components/CustomFieldTable/index.js.map +0 -1
  180. package/admin/src/pages/SettingsPage/components/DisableI18nModal/index.d.ts.map +0 -1
  181. package/admin/src/pages/SettingsPage/components/DisableI18nModal/index.js.map +0 -1
  182. package/admin/src/pages/SettingsPage/index.d.ts.map +0 -1
  183. package/admin/src/pages/SettingsPage/index.js.map +0 -1
  184. package/admin/src/pages/SettingsPage/types.d.ts.map +0 -1
  185. package/admin/src/pages/SettingsPage/types.js.map +0 -1
  186. package/admin/src/pages/SettingsPage/utils/form.d.ts.map +0 -1
  187. package/admin/src/pages/SettingsPage/utils/form.js.map +0 -1
  188. package/admin/src/pages/SettingsPage/utils/functions.d.ts.map +0 -1
  189. package/admin/src/pages/SettingsPage/utils/functions.js.map +0 -1
  190. package/admin/src/pages/View/components/I18nCopyNavigationItems/index.d.ts.map +0 -1
  191. package/admin/src/pages/View/components/I18nCopyNavigationItems/index.js.map +0 -1
  192. package/admin/src/pages/View/components/NavigationContentHeader/index.d.ts.map +0 -1
  193. package/admin/src/pages/View/components/NavigationContentHeader/index.js.map +0 -1
  194. package/admin/src/pages/View/components/NavigationHeader/index.d.ts.map +0 -1
  195. package/admin/src/pages/View/components/NavigationHeader/index.js.map +0 -1
  196. package/admin/src/pages/View/components/NavigationHeader/styles.d.ts.map +0 -1
  197. package/admin/src/pages/View/components/NavigationHeader/styles.js.map +0 -1
  198. package/admin/src/pages/View/components/NavigationItemForm/index.d.ts.map +0 -1
  199. package/admin/src/pages/View/components/NavigationItemForm/index.js.map +0 -1
  200. package/admin/src/pages/View/components/NavigationItemForm/types.d.ts.map +0 -1
  201. package/admin/src/pages/View/components/NavigationItemForm/types.js.map +0 -1
  202. package/admin/src/pages/View/components/NavigationItemForm/utils/form.d.ts.map +0 -1
  203. package/admin/src/pages/View/components/NavigationItemForm/utils/form.js.map +0 -1
  204. package/admin/src/pages/View/components/NavigationItemPopup/NavigationItemPopupFooter.d.ts.map +0 -1
  205. package/admin/src/pages/View/components/NavigationItemPopup/NavigationItemPopupFooter.js.map +0 -1
  206. package/admin/src/pages/View/components/NavigationItemPopup/NavigationItemPopupHeader.d.ts.map +0 -1
  207. package/admin/src/pages/View/components/NavigationItemPopup/NavigationItemPopupHeader.js.map +0 -1
  208. package/admin/src/pages/View/components/NavigationItemPopup/index.d.ts.map +0 -1
  209. package/admin/src/pages/View/components/NavigationItemPopup/index.js.map +0 -1
  210. package/admin/src/pages/View/components/NavigationManager/AllNavigations/icons.d.ts.map +0 -1
  211. package/admin/src/pages/View/components/NavigationManager/AllNavigations/icons.js.map +0 -1
  212. package/admin/src/pages/View/components/NavigationManager/AllNavigations/index.d.ts.map +0 -1
  213. package/admin/src/pages/View/components/NavigationManager/AllNavigations/index.js.map +0 -1
  214. package/admin/src/pages/View/components/NavigationManager/DeletionConfirm/index.d.ts.map +0 -1
  215. package/admin/src/pages/View/components/NavigationManager/DeletionConfirm/index.js.map +0 -1
  216. package/admin/src/pages/View/components/NavigationManager/ErrorDetails/index.d.ts.map +0 -1
  217. package/admin/src/pages/View/components/NavigationManager/ErrorDetails/index.js.map +0 -1
  218. package/admin/src/pages/View/components/NavigationManager/Footer/index.d.ts.map +0 -1
  219. package/admin/src/pages/View/components/NavigationManager/Footer/index.js.map +0 -1
  220. package/admin/src/pages/View/components/NavigationManager/Form/index.d.ts.map +0 -1
  221. package/admin/src/pages/View/components/NavigationManager/Form/index.js.map +0 -1
  222. package/admin/src/pages/View/components/NavigationManager/NavigationUpdate/index.d.ts.map +0 -1
  223. package/admin/src/pages/View/components/NavigationManager/NavigationUpdate/index.js.map +0 -1
  224. package/admin/src/pages/View/components/NavigationManager/NewNavigation/index.d.ts.map +0 -1
  225. package/admin/src/pages/View/components/NavigationManager/NewNavigation/index.js.map +0 -1
  226. package/admin/src/pages/View/components/NavigationManager/index.d.ts.map +0 -1
  227. package/admin/src/pages/View/components/NavigationManager/index.js.map +0 -1
  228. package/admin/src/pages/View/components/NavigationManager/types.d.ts.map +0 -1
  229. package/admin/src/pages/View/components/NavigationManager/types.js.map +0 -1
  230. package/admin/src/pages/View/index.d.ts.map +0 -1
  231. package/admin/src/pages/View/index.js.map +0 -1
  232. package/admin/src/pages/View/utils/form.d.ts.map +0 -1
  233. package/admin/src/pages/View/utils/form.js.map +0 -1
  234. package/admin/src/pages/View/utils/index.d.ts.map +0 -1
  235. package/admin/src/pages/View/utils/index.js.map +0 -1
  236. package/admin/src/pages/View/utils/parsers.d.ts.map +0 -1
  237. package/admin/src/pages/View/utils/parsers.js.map +0 -1
  238. package/admin/src/permissions.d.ts.map +0 -1
  239. package/admin/src/permissions.js.map +0 -1
  240. package/admin/src/pluginId.d.ts.map +0 -1
  241. package/admin/src/pluginId.js.map +0 -1
  242. package/admin/src/translations/index.d.ts.map +0 -1
  243. package/admin/src/translations/index.js.map +0 -1
  244. package/admin/src/utils/api.d.ts.map +0 -1
  245. package/admin/src/utils/api.js.map +0 -1
  246. package/admin/src/utils/enums.d.ts.map +0 -1
  247. package/admin/src/utils/enums.js.map +0 -1
  248. package/admin/src/utils/functions.d.ts.map +0 -1
  249. package/admin/src/utils/functions.js.map +0 -1
  250. package/admin/src/utils/index.d.ts.map +0 -1
  251. package/admin/src/utils/index.js.map +0 -1
  252. package/permissions.d.ts.map +0 -1
  253. package/permissions.js.map +0 -1
  254. package/server/bootstrap/index.d.ts.map +0 -1
  255. package/server/bootstrap/index.js.map +0 -1
  256. package/server/config/index.d.ts.map +0 -1
  257. package/server/config/index.js.map +0 -1
  258. package/server/config/setupStrategy.d.ts.map +0 -1
  259. package/server/config/setupStrategy.js.map +0 -1
  260. package/server/content-types/audience/index.d.ts.map +0 -1
  261. package/server/content-types/audience/index.js.map +0 -1
  262. package/server/content-types/audience/schema.d.ts.map +0 -1
  263. package/server/content-types/audience/schema.js.map +0 -1
  264. package/server/content-types/index.d.ts.map +0 -1
  265. package/server/content-types/index.js.map +0 -1
  266. package/server/content-types/navigation/index.d.ts.map +0 -1
  267. package/server/content-types/navigation/index.js.map +0 -1
  268. package/server/content-types/navigation/schema.d.ts.map +0 -1
  269. package/server/content-types/navigation/schema.js.map +0 -1
  270. package/server/content-types/navigation-item/index.d.ts.map +0 -1
  271. package/server/content-types/navigation-item/index.js.map +0 -1
  272. package/server/content-types/navigation-item/schema.d.ts.map +0 -1
  273. package/server/content-types/navigation-item/schema.js.map +0 -1
  274. package/server/content-types/navigations-items-related/index.d.ts.map +0 -1
  275. package/server/content-types/navigations-items-related/index.js.map +0 -1
  276. package/server/content-types/navigations-items-related/schema.d.ts.map +0 -1
  277. package/server/content-types/navigations-items-related/schema.js.map +0 -1
  278. package/server/controllers/admin.d.ts.map +0 -1
  279. package/server/controllers/admin.js.map +0 -1
  280. package/server/controllers/client.d.ts.map +0 -1
  281. package/server/controllers/client.js.map +0 -1
  282. package/server/controllers/index.d.ts.map +0 -1
  283. package/server/controllers/index.js.map +0 -1
  284. package/server/destroy.d.ts.map +0 -1
  285. package/server/destroy.js.map +0 -1
  286. package/server/graphql/config.d.ts.map +0 -1
  287. package/server/graphql/config.js.map +0 -1
  288. package/server/graphql/index.d.ts.map +0 -1
  289. package/server/graphql/index.js.map +0 -1
  290. package/server/graphql/queries/index.d.ts.map +0 -1
  291. package/server/graphql/queries/index.js.map +0 -1
  292. package/server/graphql/queries/render-navigation-child.d.ts.map +0 -1
  293. package/server/graphql/queries/render-navigation-child.js.map +0 -1
  294. package/server/graphql/queries/render-navigation.d.ts.map +0 -1
  295. package/server/graphql/queries/render-navigation.js.map +0 -1
  296. package/server/graphql/resolvers-config.d.ts.map +0 -1
  297. package/server/graphql/resolvers-config.js.map +0 -1
  298. package/server/graphql/setupStrategy.d.ts.map +0 -1
  299. package/server/graphql/setupStrategy.js.map +0 -1
  300. package/server/graphql/types/content-types-name-fields.d.ts.map +0 -1
  301. package/server/graphql/types/content-types-name-fields.js.map +0 -1
  302. package/server/graphql/types/content-types.d.ts.map +0 -1
  303. package/server/graphql/types/content-types.js.map +0 -1
  304. package/server/graphql/types/create-navigation-item.d.ts.map +0 -1
  305. package/server/graphql/types/create-navigation-item.js.map +0 -1
  306. package/server/graphql/types/create-navigation-related.d.ts.map +0 -1
  307. package/server/graphql/types/create-navigation-related.js.map +0 -1
  308. package/server/graphql/types/create-navigation.d.ts.map +0 -1
  309. package/server/graphql/types/create-navigation.js.map +0 -1
  310. package/server/graphql/types/index.d.ts.map +0 -1
  311. package/server/graphql/types/index.js.map +0 -1
  312. package/server/graphql/types/navigation-config.d.ts.map +0 -1
  313. package/server/graphql/types/navigation-config.js.map +0 -1
  314. package/server/graphql/types/navigation-details.d.ts.map +0 -1
  315. package/server/graphql/types/navigation-details.js.map +0 -1
  316. package/server/graphql/types/navigation-item-related-data.d.ts.map +0 -1
  317. package/server/graphql/types/navigation-item-related-data.js.map +0 -1
  318. package/server/graphql/types/navigation-item-related.d.ts.map +0 -1
  319. package/server/graphql/types/navigation-item-related.js.map +0 -1
  320. package/server/graphql/types/navigation-item.d.ts.map +0 -1
  321. package/server/graphql/types/navigation-item.js.map +0 -1
  322. package/server/graphql/types/navigation-render-type.d.ts.map +0 -1
  323. package/server/graphql/types/navigation-render-type.js.map +0 -1
  324. package/server/graphql/types/navigation.d.ts.map +0 -1
  325. package/server/graphql/types/navigation.js.map +0 -1
  326. package/server/i18n/constant.d.ts.map +0 -1
  327. package/server/i18n/constant.js.map +0 -1
  328. package/server/i18n/errors.d.ts.map +0 -1
  329. package/server/i18n/errors.js.map +0 -1
  330. package/server/i18n/graphQLEnhancers.d.ts.map +0 -1
  331. package/server/i18n/graphQLEnhancers.js.map +0 -1
  332. package/server/i18n/index.d.ts.map +0 -1
  333. package/server/i18n/index.js.map +0 -1
  334. package/server/i18n/navigationSetupStrategy.d.ts.map +0 -1
  335. package/server/i18n/navigationSetupStrategy.js.map +0 -1
  336. package/server/i18n/serviceEnhancers.d.ts.map +0 -1
  337. package/server/i18n/serviceEnhancers.js.map +0 -1
  338. package/server/i18n/types.d.ts.map +0 -1
  339. package/server/i18n/types.js.map +0 -1
  340. package/server/i18n/utils.d.ts.map +0 -1
  341. package/server/i18n/utils.js.map +0 -1
  342. package/server/index.d.ts.map +0 -1
  343. package/server/index.js.map +0 -1
  344. package/server/navigation/index.d.ts.map +0 -1
  345. package/server/navigation/index.js.map +0 -1
  346. package/server/navigation/setupStrategy.d.ts.map +0 -1
  347. package/server/navigation/setupStrategy.js.map +0 -1
  348. package/server/register/index.d.ts.map +0 -1
  349. package/server/register/index.js.map +0 -1
  350. package/server/routes/admin.d.ts.map +0 -1
  351. package/server/routes/admin.js.map +0 -1
  352. package/server/routes/client.d.ts.map +0 -1
  353. package/server/routes/client.js.map +0 -1
  354. package/server/routes/index.d.ts.map +0 -1
  355. package/server/routes/index.js.map +0 -1
  356. package/server/services/__tests__/service.test.d.ts +0 -2
  357. package/server/services/__tests__/service.test.d.ts.map +0 -1
  358. package/server/services/__tests__/service.test.js +0 -131
  359. package/server/services/__tests__/service.test.js.map +0 -1
  360. package/server/services/admin.d.ts.map +0 -1
  361. package/server/services/admin.js.map +0 -1
  362. package/server/services/client.d.ts.map +0 -1
  363. package/server/services/client.js.map +0 -1
  364. package/server/services/common.d.ts.map +0 -1
  365. package/server/services/common.js.map +0 -1
  366. package/server/services/index.d.ts.map +0 -1
  367. package/server/services/index.js.map +0 -1
  368. package/server/utils/__tests__/functions.test.d.ts +0 -2
  369. package/server/utils/__tests__/functions.test.d.ts.map +0 -1
  370. package/server/utils/__tests__/functions.test.js +0 -153
  371. package/server/utils/__tests__/functions.test.js.map +0 -1
  372. package/server/utils/constant.d.ts.map +0 -1
  373. package/server/utils/constant.js.map +0 -1
  374. package/server/utils/functions.d.ts.map +0 -1
  375. package/server/utils/functions.js.map +0 -1
  376. package/server/utils/index.d.ts.map +0 -1
  377. package/server/utils/index.js.map +0 -1
  378. package/setup-package.d.ts +0 -2
  379. package/setup-package.d.ts.map +0 -1
  380. package/setup-package.js +0 -19
  381. package/setup-package.js.map +0 -1
  382. package/strapi-admin.d.ts.map +0 -1
  383. package/strapi-admin.js.map +0 -1
  384. package/strapi-server.d.ts.map +0 -1
  385. package/strapi-server.js.map +0 -1
  386. package/types/bootstrap.d.ts.map +0 -1
  387. package/types/bootstrap.js.map +0 -1
  388. package/types/config.d.ts.map +0 -1
  389. package/types/config.js.map +0 -1
  390. package/types/contentTypes.d.ts.map +0 -1
  391. package/types/contentTypes.js.map +0 -1
  392. package/types/controllers.d.ts.map +0 -1
  393. package/types/controllers.js.map +0 -1
  394. package/types/graphQL.d.ts.map +0 -1
  395. package/types/graphQL.js.map +0 -1
  396. package/types/i18n.d.ts.map +0 -1
  397. package/types/i18n.js.map +0 -1
  398. package/types/index.d.ts.map +0 -1
  399. package/types/index.js.map +0 -1
  400. package/types/services.d.ts.map +0 -1
  401. package/types/services.js.map +0 -1
  402. package/types/utils.d.ts.map +0 -1
  403. package/types/utils.js.map +0 -1
  404. package/utils/InvalidParamNavigationError.d.ts.map +0 -1
  405. package/utils/InvalidParamNavigationError.js.map +0 -1
  406. package/utils/NavigationError.d.ts.map +0 -1
  407. package/utils/NavigationError.js.map +0 -1
@@ -0,0 +1,7 @@
1
+ "use strict";
2
+ Object.defineProperty(exports, "__esModule", { value: true });
3
+ const utils_1 = require("../../utils");
4
+ exports.default = (0, utils_1.buildAllHookListeners)("navigation-item", {
5
+ strapi,
6
+ });
7
+ //# sourceMappingURL=lifecycles.js.map
@@ -6,30 +6,34 @@ const utils_2 = require("../utils");
6
6
  const utils_3 = require("../utils");
7
7
  const InvalidParamNavigationError_1 = require("../../utils/InvalidParamNavigationError");
8
8
  const NavigationError_1 = require("../../utils/NavigationError");
9
+ const utils_4 = require("../cache/utils");
9
10
  const adminControllers = {
10
- getService(name = "admin") {
11
- return (0, utils_2.getPluginService)(name);
11
+ getAdminService() {
12
+ return (0, utils_2.getPluginService)("admin");
13
+ },
14
+ getCommonService() {
15
+ return (0, utils_2.getPluginService)("common");
12
16
  },
13
17
  async get() {
14
- return await this.getService().get();
18
+ return await this.getAdminService().get();
15
19
  },
16
20
  post(ctx) {
17
21
  const { auditLog } = ctx;
18
22
  const { body = {} } = ctx.request;
19
- return this.getService().post(body, auditLog);
23
+ return this.getAdminService().post(body, auditLog);
20
24
  },
21
25
  put(ctx) {
22
26
  const { params, auditLog } = ctx;
23
27
  const { id } = (0, utils_2.parseParams)(params);
24
28
  const { body = {} } = ctx.request;
25
- return this.getService().put(id, body, auditLog).catch((0, utils_3.errorHandler)(ctx));
29
+ return this.getAdminService().put(id, body, auditLog).catch((0, utils_3.errorHandler)(ctx));
26
30
  },
27
31
  async delete(ctx) {
28
32
  const { params, auditLog } = ctx;
29
33
  const { id } = (0, utils_2.parseParams)(params);
30
34
  try {
31
35
  (0, types_1.assertNotEmpty)(id, new InvalidParamNavigationError_1.InvalidParamNavigationError("Navigation's id is not a id"));
32
- await this.getService().delete(id, auditLog);
36
+ await this.getAdminService().delete(id, auditLog);
33
37
  return {};
34
38
  }
35
39
  catch (error) {
@@ -41,11 +45,11 @@ const adminControllers = {
41
45
  }
42
46
  },
43
47
  async config() {
44
- return this.getService().config();
48
+ return this.getAdminService().config();
45
49
  },
46
50
  async updateConfig(ctx) {
47
51
  try {
48
- await this.getService().updateConfig(ctx.request.body);
52
+ await this.getAdminService().updateConfig(ctx.request.body);
49
53
  }
50
54
  catch (e) {
51
55
  (0, utils_3.errorHandler)(ctx)(e);
@@ -54,7 +58,7 @@ const adminControllers = {
54
58
  },
55
59
  async restoreConfig(ctx) {
56
60
  try {
57
- await this.getService().restoreConfig();
61
+ await this.getAdminService().restoreConfig();
58
62
  }
59
63
  catch (e) {
60
64
  (0, utils_3.errorHandler)(ctx)(e);
@@ -62,11 +66,11 @@ const adminControllers = {
62
66
  return ctx.send({ status: 200 });
63
67
  },
64
68
  async settingsConfig() {
65
- return this.getService().config(true);
69
+ return this.getAdminService().config(true);
66
70
  },
67
71
  async settingsRestart(ctx) {
68
72
  try {
69
- await this.getService().restart();
73
+ await this.getAdminService().restart();
70
74
  return ctx.send({ status: 200 });
71
75
  }
72
76
  catch (e) {
@@ -76,19 +80,19 @@ const adminControllers = {
76
80
  async getById(ctx) {
77
81
  const { params } = ctx;
78
82
  const { id } = (0, utils_2.parseParams)(params);
79
- return this.getService().getById(id);
83
+ return this.getAdminService().getById(id);
80
84
  },
81
85
  async getContentTypeItems(ctx) {
82
86
  const { params, query = {} } = ctx;
83
87
  const { model } = (0, utils_2.parseParams)(params);
84
- return this.getService("common").getContentTypeItems(model, query);
88
+ return this.getCommonService().getContentTypeItems(model, query);
85
89
  },
86
90
  fillFromOtherLocale(ctx) {
87
91
  const { params, auditLog } = ctx;
88
92
  const { source, target } = (0, utils_2.parseParams)(params);
89
93
  try {
90
94
  assertCopyParams(source, target);
91
- return this.getService().fillFromOtherLocale({ source, target, auditLog });
95
+ return this.getAdminService().fillFromOtherLocale({ source, target, auditLog });
92
96
  }
93
97
  catch (error) {
94
98
  if (error instanceof Error) {
@@ -103,7 +107,7 @@ const adminControllers = {
103
107
  try {
104
108
  assertCopyParams(source, target);
105
109
  (0, types_1.assertNotEmpty)(path, new InvalidParamNavigationError_1.InvalidParamNavigationError("Path is missing"));
106
- return await this.getService().readNavigationItemFromLocale({
110
+ return await this.getAdminService().readNavigationItemFromLocale({
107
111
  path,
108
112
  source,
109
113
  target,
@@ -125,7 +129,7 @@ const adminControllers = {
125
129
  const { query: { q } } = ctx;
126
130
  try {
127
131
  (0, types_1.assertNotEmpty)(q);
128
- return this.getService("common").getSlug(q).then((slug) => ({ slug }));
132
+ return this.getCommonService().getSlug(q).then((slug) => ({ slug }));
129
133
  }
130
134
  catch (error) {
131
135
  if (error instanceof Error) {
@@ -134,6 +138,23 @@ const adminControllers = {
134
138
  throw error;
135
139
  }
136
140
  },
141
+ async purgeNavigationsCache() {
142
+ const mappedStrapi = strapi;
143
+ const { enabled } = await (0, utils_4.getCacheStatus)({ strapi: mappedStrapi });
144
+ if (!enabled) {
145
+ return { success: false };
146
+ }
147
+ return await this.getAdminService().purgeNavigationsCache();
148
+ },
149
+ async purgeNavigationCache(ctx) {
150
+ const { params: { id }, query: { clearLocalisations = 'false' } } = ctx;
151
+ const mappedStrapi = strapi;
152
+ const { enabled } = await (0, utils_4.getCacheStatus)({ strapi: mappedStrapi });
153
+ if (!enabled) {
154
+ return { success: false };
155
+ }
156
+ return await this.getAdminService().purgeNavigationCache(id, JSON.parse(clearLocalisations));
157
+ }
137
158
  };
138
159
  const assertCopyParams = (source, target) => {
139
160
  (0, types_1.assertIsNumber)(source, new InvalidParamNavigationError_1.InvalidParamNavigationError("Source's id is not a number"));
@@ -3,8 +3,8 @@ Object.defineProperty(exports, "__esModule", { value: true });
3
3
  const utils_1 = require("@strapi/utils");
4
4
  const utils_2 = require("../utils");
5
5
  const clientControllers = {
6
- getService(name = "client") {
7
- return (0, utils_2.getPluginService)(name);
6
+ getService() {
7
+ return (0, utils_2.getPluginService)("client");
8
8
  },
9
9
  async readAll(ctx) {
10
10
  const { query = {} } = ctx;
@@ -9,7 +9,7 @@ declare function _exports({ strapi, nexus }: {
9
9
  type: string;
10
10
  menuOnly: any;
11
11
  };
12
- resolve(obj: any, args: any): any;
12
+ resolve(obj: any, args: any): Promise<any>;
13
13
  };
14
14
  export = _exports;
15
15
  //# sourceMappingURL=render-navigation-child.d.ts.map
@@ -15,7 +15,7 @@ declare function _exports({ strapi, nexus }: {
15
15
  menuOnly: any;
16
16
  path: any;
17
17
  locale: any;
18
- }): any;
18
+ }): Promise<any>;
19
19
  };
20
20
  export = _exports;
21
21
  //# sourceMappingURL=render-navigation.d.ts.map
@@ -1,5 +1,6 @@
1
1
  "use strict";
2
2
  const typesFactories = [
3
+ require('./navigation-item-additional-field-media'),
3
4
  require('./navigation-item-related'),
4
5
  require('./navigation-item-related-data'),
5
6
  require('./navigation-item'),
@@ -0,0 +1,5 @@
1
+ declare function _exports({ nexus }: {
2
+ nexus: any;
3
+ }): any;
4
+ export = _exports;
5
+ //# sourceMappingURL=navigation-item-additional-field-media.d.ts.map
@@ -0,0 +1,13 @@
1
+ "use strict";
2
+ module.exports = ({ nexus }) => nexus.objectType({
3
+ name: "NavigationItemAdditionalFieldMedia",
4
+ definition(t) {
5
+ t.nonNull.string("name");
6
+ t.nonNull.string("url");
7
+ t.nonNull.string("mime");
8
+ t.nonNull.int("width");
9
+ t.nonNull.int("height");
10
+ t.string("previewUrl");
11
+ }
12
+ });
13
+ //# sourceMappingURL=navigation-item-additional-field-media.js.map
@@ -26,6 +26,9 @@ module.exports = ({ nexus, config }) => nexus.objectType({
26
26
  if (field !== 'audience') {
27
27
  if (field.enabled) {
28
28
  switch (field.type) {
29
+ case 'media':
30
+ t.field(field.name, { type: "NavigationItemAdditionalFieldMedia" });
31
+ break;
29
32
  case 'string':
30
33
  t.string(field.name);
31
34
  break;
@@ -104,7 +104,7 @@ const i18nNavigationSetupStrategy = async ({ strapi, }) => {
104
104
  return getCurrentNavigations(strapi);
105
105
  };
106
106
  exports.i18nNavigationSetupStrategy = i18nNavigationSetupStrategy;
107
- const getCurrentNavigations = (strapi, ids) => strapi.plugin("navigation").service("admin").get(ids);
107
+ const getCurrentNavigations = (strapi, ids) => strapi.plugin("navigation").service("admin").get(ids, true);
108
108
  const createNavigation = ({ strapi, payload, populate, }) => strapi.query("plugin::navigation.navigation").create({
109
109
  data: {
110
110
  ...payload,
@@ -6,6 +6,7 @@ type I18NStatus = {
6
6
  hasI18NPlugin: boolean;
7
7
  enabled: boolean;
8
8
  defaultLocale?: string | null;
9
+ locales?: string[] | undefined;
9
10
  };
10
11
  export declare const getI18nStatus: ({ strapi, }: GetI18nStatusInput) => Promise<I18NStatus>;
11
12
  export {};
@@ -1,6 +1,7 @@
1
1
  "use strict";
2
2
  Object.defineProperty(exports, "__esModule", { value: true });
3
3
  exports.getI18nStatus = void 0;
4
+ const fp_1 = require("lodash/fp");
4
5
  const getI18nStatus = async ({ strapi, }) => {
5
6
  const i18nPlugin = strapi.plugin("i18n");
6
7
  const hasI18NPlugin = !!i18nPlugin;
@@ -13,16 +14,19 @@ const getI18nStatus = async ({ strapi, }) => {
13
14
  });
14
15
  const localeService = i18nPlugin ? i18nPlugin.service("locales") : null;
15
16
  const defaultLocale = await localeService?.getDefaultLocale();
17
+ const locales = (await localeService?.find({}))?.map((0, fp_1.prop)("code"));
16
18
  return hasI18NPlugin
17
19
  ? {
18
20
  hasI18NPlugin,
19
21
  enabled: config.i18nEnabled,
20
22
  defaultLocale,
23
+ locales,
21
24
  }
22
25
  : {
23
26
  hasI18NPlugin,
24
27
  enabled: false,
25
28
  defaultLocale: undefined,
29
+ locales: undefined
26
30
  };
27
31
  };
28
32
  exports.getI18nStatus = getI18nStatus;
package/server/index.d.ts CHANGED
@@ -82,6 +82,7 @@ declare const _default: {
82
82
  };
83
83
  };
84
84
  };
85
+ lifecycles: Record<import("../types").LifeCycleHookName, import("../types").Effect<import("../types").LifeCycleEvent<import("../types").LifeCycleHookName, unknown, Record<string, unknown>>>>;
85
86
  };
86
87
  "navigation-item": {
87
88
  schema: {
@@ -185,6 +186,7 @@ declare const _default: {
185
186
  };
186
187
  };
187
188
  };
189
+ lifecycles: Record<import("../types").LifeCycleHookName, import("../types").Effect<import("../types").LifeCycleEvent<import("../types").LifeCycleHookName, unknown, Record<string, unknown>>>>;
188
190
  };
189
191
  "navigations-items-related": {
190
192
  schema: {
@@ -72,6 +72,26 @@ const routes = {
72
72
  }]
73
73
  }
74
74
  },
75
+ {
76
+ method: 'DELETE',
77
+ path: '/cache/purge/:id',
78
+ handler: 'admin.purgeNavigationCache',
79
+ config: {
80
+ policies: [
81
+ 'admin::isAuthenticatedAdmin'
82
+ ]
83
+ }
84
+ },
85
+ {
86
+ method: 'DELETE',
87
+ path: '/cache/purge',
88
+ handler: 'admin.purgeNavigationsCache',
89
+ config: {
90
+ policies: [
91
+ 'admin::isAuthenticatedAdmin'
92
+ ]
93
+ }
94
+ },
75
95
  {
76
96
  method: 'GET',
77
97
  path: '/slug',
@@ -5,6 +5,7 @@ const lodash_1 = require("lodash");
5
5
  const utils_2 = require("../utils");
6
6
  const i18n_1 = require("../i18n");
7
7
  const NavigationError_1 = require("../../utils/NavigationError");
8
+ const serviceEnhancers_1 = require("../cache/serviceEnhancers");
8
9
  const adminService = ({ strapi, }) => ({
9
10
  async config(viaSettingsPage = false) {
10
11
  const commonService = (0, utils_2.getPluginService)("common");
@@ -50,6 +51,7 @@ const adminService = ({ strapi, }) => ({
50
51
  viaSettingsPage,
51
52
  previousConfig: {},
52
53
  });
54
+ const cacheConfig = await (0, serviceEnhancers_1.addCacheConfigFields)({ strapi, previousConfig: {} });
53
55
  if (additionalFields.includes("audience")) {
54
56
  const audienceItems = await strapi
55
57
  .query(audienceModel.uid)
@@ -65,21 +67,32 @@ const adminService = ({ strapi, }) => ({
65
67
  ...result,
66
68
  ...extendedResult,
67
69
  ...i18nConfig,
70
+ ...cacheConfig,
68
71
  };
69
72
  },
70
- async get(ids) {
73
+ async get(ids, ignoreLocale = false) {
71
74
  const { masterModel } = (0, utils_2.getPluginModels)();
72
- const entities = await strapi.query(masterModel.uid).findMany({
75
+ const { enabled: i18nEnabled, locales } = await (0, i18n_1.getI18nStatus)({ strapi });
76
+ const whereClause = {};
77
+ if (ids) {
78
+ whereClause.id = { $in: ids };
79
+ }
80
+ let entities = await strapi.query(masterModel.uid).findMany({
73
81
  limit: Number.MAX_SAFE_INTEGER,
74
82
  populate: utils_2.DEFAULT_POPULATE,
75
- where: ids
76
- ? {
77
- id: {
78
- $in: ids,
79
- },
80
- }
81
- : undefined,
83
+ where: whereClause,
82
84
  });
85
+ if (i18nEnabled && !ignoreLocale) {
86
+ entities = entities.reduce((acc, entity) => {
87
+ if (entity.localeCode && locales?.includes(entity.localeCode)) {
88
+ acc.push({
89
+ ...entity,
90
+ localizations: entity.localizations?.filter(({ localeCode }) => localeCode && locales?.includes(localeCode)),
91
+ });
92
+ }
93
+ return acc;
94
+ }, []);
95
+ }
83
96
  return entities;
84
97
  },
85
98
  async getById(id) {
@@ -116,11 +129,12 @@ const adminService = ({ strapi, }) => ({
116
129
  name,
117
130
  slug: await commonService.getSlug(name),
118
131
  visible,
132
+ localeCode: i18nEnabled && defaultLocale ? defaultLocale : null
119
133
  };
120
134
  const existingEntity = await strapi
121
135
  .query(masterModel.uid)
122
136
  .create({ data });
123
- const result = commonService
137
+ const result = await commonService
124
138
  .createBranch(payload.items, existingEntity, null, {})
125
139
  .then(() => adminService.getById(existingEntity.id))
126
140
  .then((newEntity) => {
@@ -197,19 +211,21 @@ const adminService = ({ strapi, }) => ({
197
211
  },
198
212
  async delete(id, auditLog) {
199
213
  const { masterModel, itemModel } = (0, utils_2.getPluginModels)();
200
- const adminService = (0, utils_2.getPluginService)("admin");
201
- const entity = await adminService.getById(id);
214
+ const entity = await this.getById(id);
202
215
  const { enabled: i18nEnabled } = await (0, i18n_1.getI18nStatus)({ strapi });
203
216
  const cleanNavigationItems = async (masterIds) => {
217
+ if (masterIds.length < 1) {
218
+ return;
219
+ }
204
220
  const navigationItems = await strapi.query(itemModel.uid).findMany({
205
221
  where: {
206
- $or: masterIds.map((id) => ({ master: id }))
222
+ $or: masterIds.map((id) => ({ master: id })),
207
223
  },
208
224
  limit: Number.MAX_SAFE_INTEGER,
209
225
  });
210
226
  await strapi.query(itemModel.uid).deleteMany({
211
227
  where: {
212
- $or: navigationItems.map(({ id }) => ({ id }))
228
+ id: navigationItems.map(({ id }) => (id)),
213
229
  },
214
230
  });
215
231
  };
@@ -238,7 +254,7 @@ const adminService = ({ strapi, }) => ({
238
254
  setImmediate(() => strapi.reload());
239
255
  },
240
256
  async restoreConfig() {
241
- const commonService = (0, utils_2.getPluginService)("common");
257
+ const commonService = (0, utils_2.getPluginService)("common", strapi);
242
258
  const pluginStore = await commonService.getPluginStore();
243
259
  await pluginStore.delete({ key: "config" });
244
260
  await commonService.setDefaultConfig();
@@ -296,6 +312,34 @@ const adminService = ({ strapi, }) => ({
296
312
  strapi,
297
313
  });
298
314
  },
315
+ async purgeNavigationCache(id, clearLocalisations) {
316
+ const entity = await this.getById(id);
317
+ const regexps = [];
318
+ const mapToRegExp = (id) => new RegExp(`/api/navigation/render/${id}`);
319
+ if (!entity) {
320
+ throw new utils_1.errors.NotFoundError("Navigation is not defined");
321
+ }
322
+ if (clearLocalisations) {
323
+ const { enabled: isI18nEnabled } = await (0, i18n_1.getI18nStatus)({ strapi });
324
+ if (isI18nEnabled) {
325
+ entity.localizations?.forEach((navigation) => {
326
+ regexps.push(mapToRegExp(navigation.id));
327
+ });
328
+ }
329
+ }
330
+ const restCachePlugin = strapi.plugin("rest-cache");
331
+ const cacheStore = restCachePlugin.service("cacheStore");
332
+ regexps.push(mapToRegExp(id));
333
+ await cacheStore.clearByRegexp(regexps);
334
+ return { success: true };
335
+ },
336
+ async purgeNavigationsCache() {
337
+ const restCachePlugin = strapi.plugin("rest-cache");
338
+ const cacheStore = restCachePlugin.service("cacheStore");
339
+ const regex = new RegExp("/api/navigation/render(.*)");
340
+ await cacheStore.clearByRegexp([regex]);
341
+ return { success: true };
342
+ }
299
343
  });
300
344
  exports.default = adminService;
301
345
  //# sourceMappingURL=admin.js.map
@@ -7,10 +7,12 @@ const utils_1 = require("../utils");
7
7
  const utils_2 = require("@strapi/utils");
8
8
  const i18n_1 = require("../i18n");
9
9
  const NavigationError_1 = require("../../utils/NavigationError");
10
+ const fp_1 = require("lodash/fp");
10
11
  const clientService = ({ strapi }) => ({
11
12
  async readAll({ locale, orderBy = 'createdAt', orderDirection = "DESC" }) {
12
13
  const { masterModel } = (0, utils_1.getPluginModels)();
13
- const navigations = await strapi
14
+ const { enabled: i18nEnabled, locales } = await (0, i18n_1.getI18nStatus)({ strapi });
15
+ let navigations = await strapi
14
16
  .query(masterModel.uid)
15
17
  .findMany({
16
18
  where: locale
@@ -22,6 +24,17 @@ const clientService = ({ strapi }) => ({
22
24
  limit: Number.MAX_SAFE_INTEGER,
23
25
  populate: false
24
26
  });
27
+ if (i18nEnabled) {
28
+ navigations = navigations.reduce((acc, navigation) => {
29
+ if (navigation.localeCode && locales?.includes(navigation.localeCode)) {
30
+ acc.push({
31
+ ...navigation,
32
+ localizations: navigation.localizations?.filter(({ localeCode }) => localeCode && locales?.includes(localeCode)),
33
+ });
34
+ }
35
+ return acc;
36
+ }, []);
37
+ }
25
38
  return navigations;
26
39
  },
27
40
  async render({ idOrSlug, type = utils_1.RENDER_TYPES.FLAT, menuOnly = false, rootPath = null, wrapRelated = false, locale, populate, }) {
@@ -223,6 +236,8 @@ const clientService = ({ strapi }) => ({
223
236
  id: itemContentType.id,
224
237
  attributes: { ...itemContentType }
225
238
  } : itemContentType;
239
+ const pickMediaFields = (0, fp_1.pick)(["name", "url", "mime", "width", "height", "previewUrl"]);
240
+ const customFieldsDefinitions = additionalFields.filter(_ => typeof _ !== "string");
226
241
  switch (type) {
227
242
  case utils_1.RENDER_TYPES.TREE:
228
243
  case utils_1.RENDER_TYPES.RFR:
@@ -235,6 +250,13 @@ const clientService = ({ strapi }) => ({
235
250
  const slug = (0, lodash_1.isString)(parentPath) ? await commonService.getSlug(((0, lodash_1.first)(parentPath) === '/' ? parentPath.substring(1) : parentPath).replace(/\//g, '-')) : undefined;
236
251
  const lastRelated = (0, lodash_1.isArray)(item.related) ? (0, lodash_1.last)(item.related) : item.related;
237
252
  const relatedContentType = wrapContentType(lastRelated);
253
+ const customFields = enabledCustomFieldsNames.reduce((acc, field) => {
254
+ const mapper = customFieldsDefinitions.find(({ name }) => name === field)?.type === "media"
255
+ ? (_) => pickMediaFields(JSON.parse(_))
256
+ : fp_1.identity;
257
+ const content = (0, lodash_1.get)(item, `additionalFields.${field}`);
258
+ return { ...acc, [field]: content ? mapper(content) : content };
259
+ }, {});
238
260
  return {
239
261
  id: item.id,
240
262
  title: (0, utils_1.composeItemTitle)(item, contentTypesNameFields, contentTypes),
@@ -251,11 +273,11 @@ const clientService = ({ strapi }) => ({
251
273
  },
252
274
  audience: !(0, lodash_1.isEmpty)(item.audience) ? item.audience.map(({ key }) => key) : undefined,
253
275
  items: isExternal ? undefined : await clientService.renderTree(items, item.id, field, parentPath, itemParser),
254
- ...enabledCustomFieldsNames.reduce((acc, field) => ({ ...acc, [field]: (0, lodash_1.get)(item, `additionalFields.${field}`) }), {}),
276
+ ...customFields
255
277
  };
256
278
  };
257
279
  const { items: itemsFilteredByPath, root: rootElement, } = (0, utils_1.filterByPath)(items, rootPath);
258
- const treeStructure = await clientService.renderTree((0, lodash_1.isNil)(rootPath) ? items : itemsFilteredByPath, (0, lodash_1.get)(rootElement, 'parent.id'), 'parent', (0, lodash_1.get)(rootElement, 'parent.path'), itemParser);
280
+ const treeStructure = await clientService.renderTree((0, lodash_1.isNil)(rootPath) ? items : itemsFilteredByPath, (0, lodash_1.get)(rootElement, 'parent.id') ?? null, 'parent', (0, lodash_1.get)(rootElement, 'parent.path'), itemParser);
259
281
  const filteredStructure = filter
260
282
  ? treeStructure.filter((item) => item.uiRouterKey === filter)
261
283
  : treeStructure;
@@ -286,14 +308,23 @@ const clientService = ({ strapi }) => ({
286
308
  return nestedOrders;
287
309
  };
288
310
  return result
289
- .map(({ additionalFields, ...item }) => ({
290
- ...item,
291
- audience: item.audience?.map(_ => (_).key),
292
- title: (0, utils_1.composeItemTitle)({ ...item, additionalFields }, contentTypesNameFields, contentTypes) || '',
293
- related: wrapContentType(item.related),
294
- items: null,
295
- ...enabledCustomFieldsNames.reduce((acc, name) => ({ ...acc, [name]: (0, lodash_1.get)(additionalFields, name, undefined) }), {}),
296
- }))
311
+ .map(({ additionalFields, ...item }) => {
312
+ const customFields = enabledCustomFieldsNames.reduce((acc, field) => {
313
+ const mapper = customFieldsDefinitions.find(({ name }) => name === field)?.type === "media"
314
+ ? (_) => pickMediaFields(JSON.parse(_.toString()))
315
+ : fp_1.identity;
316
+ const content = (0, lodash_1.get)(additionalFields, field);
317
+ return { ...acc, [field]: content ? mapper(content) : content };
318
+ }, {});
319
+ return ({
320
+ ...item,
321
+ audience: item.audience?.map(_ => (_).key),
322
+ title: (0, utils_1.composeItemTitle)({ ...item, additionalFields }, contentTypesNameFields, contentTypes) || '',
323
+ related: wrapContentType(item.related),
324
+ items: null,
325
+ ...customFields,
326
+ });
327
+ })
297
328
  .sort((a, b) => (0, utils_1.compareArraysOfNumbers)(getNestedOrders(a.id), getNestedOrders(b.id)));
298
329
  }
299
330
  }
@@ -10,6 +10,10 @@ const config_1 = require("../config");
10
10
  const i18n_1 = require("../i18n");
11
11
  const utils_2 = require("../utils");
12
12
  const slugify_1 = __importDefault(require("@sindresorhus/slugify"));
13
+ const lifecycleHookListeners = {
14
+ navigation: {},
15
+ "navigation-item": {}
16
+ };
13
17
  const commonService = ({ strapi }) => ({
14
18
  analyzeBranch(items = [], masterEntity = null, parentItem = null, prevOperations = {}) {
15
19
  const commonService = (0, utils_2.getPluginService)('common');
@@ -364,6 +368,18 @@ const commonService = ({ strapi }) => ({
364
368
  }
365
369
  return slug.toLowerCase();
366
370
  },
371
+ registerLifecycleHook({ callback, contentTypeName, hookName }) {
372
+ if (!lifecycleHookListeners[contentTypeName][hookName]) {
373
+ lifecycleHookListeners[contentTypeName][hookName] = [];
374
+ }
375
+ lifecycleHookListeners[contentTypeName][hookName]?.push(callback);
376
+ },
377
+ async runLifecycleHook({ contentTypeName, event, hookName }) {
378
+ const hookListeners = lifecycleHookListeners[contentTypeName][hookName] ?? [];
379
+ for (const listener of hookListeners) {
380
+ await listener(event);
381
+ }
382
+ },
367
383
  });
368
384
  exports.default = commonService;
369
385
  //# sourceMappingURL=common.js.map
@@ -1,3 +1,4 @@
1
+ import { LifeCycleHookName } from "../../types";
1
2
  export declare const TEMPLATE_DEFAULT: "Generic";
2
3
  export declare const MODEL_TYPES: {
3
4
  readonly CONTENT_TYPE: "contentType";
@@ -21,4 +22,6 @@ export declare const RENDER_TYPES: Readonly<{
21
22
  TREE: "TREE";
22
23
  RFR: "RFR";
23
24
  }>;
25
+ export type ContentType = "navigation" | "navigation-item";
26
+ export declare const allLifecycleHooks: ReadonlyArray<LifeCycleHookName>;
24
27
  //# sourceMappingURL=constant.d.ts.map
@@ -1,6 +1,6 @@
1
1
  "use strict";
2
2
  Object.defineProperty(exports, "__esModule", { value: true });
3
- exports.RENDER_TYPES = exports.DEFAULT_NAVIGATION_ITEM = exports.DEFAULT_POPULATE = exports.CONTENT_TYPES_NAME_FIELDS_DEFAULTS = exports.EXCLUDED_CONTENT_TYPES = exports.RESTRICTED_CONTENT_TYPES = exports.ALLOWED_CONTENT_TYPES = exports.KIND_TYPES = exports.MODEL_TYPES = exports.TEMPLATE_DEFAULT = void 0;
3
+ exports.allLifecycleHooks = exports.RENDER_TYPES = exports.DEFAULT_NAVIGATION_ITEM = exports.DEFAULT_POPULATE = exports.CONTENT_TYPES_NAME_FIELDS_DEFAULTS = exports.EXCLUDED_CONTENT_TYPES = exports.RESTRICTED_CONTENT_TYPES = exports.ALLOWED_CONTENT_TYPES = exports.KIND_TYPES = exports.MODEL_TYPES = exports.TEMPLATE_DEFAULT = void 0;
4
4
  const i18n_1 = require("../i18n");
5
5
  exports.TEMPLATE_DEFAULT = 'Generic';
6
6
  exports.MODEL_TYPES = { CONTENT_TYPE: 'contentType' };
@@ -20,4 +20,24 @@ exports.RENDER_TYPES = {
20
20
  TREE: 'TREE',
21
21
  RFR: 'RFR'
22
22
  };
23
+ exports.allLifecycleHooks = [
24
+ "beforeCreate",
25
+ "beforeCreateMany",
26
+ "afterCreate",
27
+ "afterCreateMany",
28
+ "beforeUpdate",
29
+ "beforeUpdateMany",
30
+ "afterUpdate",
31
+ "afterUpdateMany",
32
+ "beforeDelete",
33
+ "beforeDeleteMany",
34
+ "afterDelete",
35
+ "afterDeleteMany",
36
+ "beforeCount",
37
+ "afterCount",
38
+ "beforeFindOne",
39
+ "afterFindOne",
40
+ "beforeFindMany",
41
+ "afterFindMany",
42
+ ];
23
43
  //# sourceMappingURL=constant.js.map