sitero 0.1.0 → 0.1.2

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 (401) hide show
  1. package/dist/export/cms/client/components/editor/index.js +3 -0
  2. package/dist/export/cms/client/components/index.js +24 -21
  3. package/dist/export/cms/client/i18n/index.js +1 -0
  4. package/dist/export/cms/client/index.js +10 -0
  5. package/dist/export/cms/client/pages/index.js +10 -8
  6. package/dist/export/core/server/index.js +8 -1
  7. package/dist/export/index.js +2 -1
  8. package/dist/export/web/server/index.js +1 -0
  9. package/dist/src/cms/client/applications/create-applications.js +3 -1
  10. package/dist/src/cms/client/applications/ui/use-nav-items.js +202 -0
  11. package/dist/src/cms/client/infrastructure/i18n/intor-config.js +8 -5
  12. package/dist/src/cms/client/infrastructure/i18n/messages/en-US/resources/admin.js +1 -1
  13. package/dist/src/cms/client/infrastructure/i18n/messages/en-US/resources/index.js +1 -0
  14. package/dist/src/cms/client/infrastructure/i18n/messages/index.js +9 -0
  15. package/dist/src/cms/client/infrastructure/i18n/messages/zh-TW/resources/admin.js +1 -1
  16. package/dist/src/cms/client/infrastructure/i18n/messages/zh-TW/resources/index.js +1 -0
  17. package/dist/src/cms/client/interfaces/components/create-components.js +25 -24
  18. package/dist/src/cms/client/interfaces/components/create-post-contents.js +85 -0
  19. package/dist/src/cms/client/interfaces/components/resources/admin/admin-card.js +6 -2
  20. package/dist/src/cms/client/interfaces/components/resources/admin/admin-refresh-tokens/admin-refresh-token-card.js +3 -0
  21. package/dist/src/cms/client/interfaces/components/resources/admin/admin-relations-section.js +2 -3
  22. package/dist/src/cms/client/interfaces/components/resources/admin/admin-table.js +3 -2
  23. package/dist/src/cms/client/interfaces/components/resources/config/config-edit-content.js +19 -2
  24. package/dist/src/cms/client/interfaces/components/resources/file/file-card.js +3 -0
  25. package/dist/src/cms/client/interfaces/components/resources/file/file-relations-section.js +2 -3
  26. package/dist/src/cms/client/interfaces/components/resources/file/file-state-icons.js +1 -2
  27. package/dist/src/cms/client/interfaces/components/resources/file/file-table.js +0 -1
  28. package/dist/src/cms/client/interfaces/components/resources/file/search/is-locked-buttons.js +6 -0
  29. package/dist/src/cms/client/interfaces/components/resources/file/search/type-buttons.js +6 -0
  30. package/dist/src/cms/client/interfaces/components/resources/folder/file-manager/file-manager-header.js +1 -2
  31. package/dist/src/cms/client/interfaces/components/resources/folder/file-manager/file-manager-list.js +0 -1
  32. package/dist/src/cms/client/interfaces/components/resources/folder/folder-card.js +3 -0
  33. package/dist/src/cms/client/interfaces/components/resources/folder/folder-list.js +0 -1
  34. package/dist/src/cms/client/interfaces/components/resources/folder/folder-relations-section.js +0 -1
  35. package/dist/src/cms/client/interfaces/components/resources/folder/folder-state-icons.js +1 -2
  36. package/dist/src/cms/client/interfaces/components/resources/folder/folder-table.js +0 -1
  37. package/dist/src/cms/client/interfaces/components/resources/inquiry/inquiry-card.js +3 -0
  38. package/dist/src/cms/client/interfaces/components/resources/{category → post/category}/category-card.js +25 -19
  39. package/dist/src/cms/client/interfaces/components/resources/{category → post/category}/category-relations-section.js +25 -18
  40. package/dist/src/cms/client/interfaces/components/resources/{category → post/category}/category-table.js +27 -21
  41. package/dist/src/cms/client/interfaces/components/resources/post/content/post-create-content.js +462 -0
  42. package/dist/src/cms/client/interfaces/components/resources/post/content/post-edit-content.js +460 -0
  43. package/dist/src/cms/client/interfaces/components/resources/post/content/post-show-content.js +217 -0
  44. package/dist/src/cms/client/interfaces/components/resources/post/content/types.js +12 -0
  45. package/dist/src/cms/client/interfaces/components/resources/post/post-card.js +16 -71
  46. package/dist/src/cms/client/interfaces/components/resources/post/post-list.js +3 -6
  47. package/dist/src/cms/client/interfaces/components/resources/post/post-relations-section.js +0 -1
  48. package/dist/src/cms/client/interfaces/components/resources/post/post-table.js +0 -1
  49. package/dist/src/cms/client/interfaces/components/resources/post/search/control-fields-buttons.js +9 -50
  50. package/dist/src/cms/client/interfaces/components/resources/{tag → post/tag}/tag-card.js +18 -17
  51. package/dist/src/cms/client/interfaces/components/resources/{tag → post/tag}/tag-relations-section.js +13 -14
  52. package/dist/src/cms/client/interfaces/components/resources/{tag → post/tag}/tag-table.js +19 -17
  53. package/dist/src/cms/client/interfaces/components/resources/{topic → post/topic}/topic-card.js +28 -22
  54. package/dist/src/cms/client/interfaces/components/resources/{topic → post/topic}/topic-table.js +31 -24
  55. package/dist/src/cms/client/interfaces/components/resources/seo-metadata/seo-form/fields/basic-tags.js +1 -2
  56. package/dist/src/cms/client/interfaces/components/resources/seo-metadata/seo-form/fields/json-ld-tags.js +1 -2
  57. package/dist/src/cms/client/interfaces/components/resources/seo-metadata/seo-form/fields/open-graph-tags.js +1 -2
  58. package/dist/src/cms/client/interfaces/components/resources/seo-metadata/seo-form/fields/twitter-tags.js +1 -2
  59. package/dist/src/cms/client/interfaces/components/resources/seo-metadata/seo-metadata-dialog.js +5 -0
  60. package/dist/src/cms/client/interfaces/components/ui/blocks/list-container/list-container.js +5 -0
  61. package/dist/src/cms/client/interfaces/components/ui/blocks/list-container/page-size-selector.js +5 -0
  62. package/dist/src/cms/client/interfaces/components/ui/blocks/page-header/page-header.js +6 -1
  63. package/dist/src/cms/client/interfaces/components/ui/blocks/page-header/presets/index.js +11 -0
  64. package/dist/src/cms/client/interfaces/components/ui/buttons/return-button.js +6 -0
  65. package/dist/src/cms/client/interfaces/components/ui/features/external-link.js +6 -0
  66. package/dist/src/cms/client/interfaces/components/ui/features/file/file-info/file-info.js +4 -1
  67. package/dist/src/cms/client/interfaces/components/ui/features/file/file-preview/file-preview-list.js +6 -0
  68. package/dist/src/cms/client/interfaces/components/ui/features/file/uploader.js +0 -1
  69. package/dist/src/cms/client/interfaces/components/ui/features/pick-modal/pick-modal-body.js +7 -4
  70. package/dist/src/cms/client/interfaces/components/ui/features/pick-modal/pick-modal-trigger.js +5 -0
  71. package/dist/src/cms/client/interfaces/components/ui/features/pick-modal/pick-modal.js +5 -0
  72. package/dist/src/cms/client/interfaces/components/ui/form/index-field.js +1 -0
  73. package/dist/src/cms/client/interfaces/components/ui/i18n/display/i18n-array-display.js +4 -1
  74. package/dist/src/cms/client/interfaces/components/ui/i18n/display/i18n-display.js +4 -1
  75. package/dist/src/cms/client/interfaces/components/ui/i18n/display/i18n-object-array-display.js +4 -1
  76. package/dist/src/cms/client/interfaces/components/ui/i18n/inputs/i18n-array-input.js +5 -0
  77. package/dist/src/cms/client/interfaces/components/ui/i18n/inputs/i18n-date-input.js +5 -0
  78. package/dist/src/cms/client/interfaces/components/ui/i18n/inputs/i18n-input.js +5 -0
  79. package/dist/src/cms/client/interfaces/components/ui/i18n/inputs/i18n-json-input.js +6 -1
  80. package/dist/src/cms/client/interfaces/components/ui/i18n/inputs/i18n-number-input.js +5 -0
  81. package/dist/src/cms/client/interfaces/components/ui/i18n/inputs/i18n-object-array-input.js +5 -0
  82. package/dist/src/cms/client/interfaces/components/ui/i18n/inputs/i18n-textarea.js +5 -0
  83. package/dist/src/cms/client/interfaces/components/ui/inputs/array-input.js +5 -0
  84. package/dist/src/cms/client/interfaces/components/ui/inputs/editor/base/built-in-plugins.js +1 -2
  85. package/dist/src/cms/client/interfaces/components/ui/inputs/editor/editor.js +0 -1
  86. package/dist/src/cms/client/interfaces/components/ui/inputs/editor/plugins/file-repository/upload-adapter.js +1 -2
  87. package/dist/src/cms/client/interfaces/components/ui/layouts/navbar/i18n-selector.js +4 -0
  88. package/dist/src/cms/client/interfaces/components/ui/layouts/navbar/theme-selector.js +5 -0
  89. package/dist/src/cms/client/interfaces/pages/dashboard/content/content-management/_topicSlug_/category/_id_/edit/page.js +19 -4
  90. package/dist/src/cms/client/interfaces/pages/dashboard/content/content-management/_topicSlug_/category/_id_/page.js +42 -4
  91. package/dist/src/cms/client/interfaces/pages/dashboard/content/content-management/_topicSlug_/category/create/page.js +20 -5
  92. package/dist/src/cms/client/interfaces/pages/dashboard/content/content-management/_topicSlug_/page.js +97 -40
  93. package/dist/src/cms/client/interfaces/pages/dashboard/content/content-management/_topicSlug_/post/_id_/edit/page.js +33 -5
  94. package/dist/src/cms/client/interfaces/pages/dashboard/content/content-management/_topicSlug_/post/_id_/page.js +34 -4
  95. package/dist/src/cms/client/interfaces/pages/dashboard/content/content-management/_topicSlug_/post/create/page.js +33 -5
  96. package/dist/src/cms/client/interfaces/pages/dashboard/content/content-management/_topicSlug_/subcategory/_id_/edit/page.js +114 -0
  97. package/dist/src/cms/client/interfaces/pages/dashboard/content/content-management/_topicSlug_/subcategory/_id_/page.js +169 -0
  98. package/dist/src/cms/client/interfaces/pages/dashboard/content/content-management/_topicSlug_/subcategory/create/page.js +116 -0
  99. package/dist/src/cms/client/interfaces/pages/dashboard/content/content-management/page.js +7 -1
  100. package/dist/src/cms/client/interfaces/pages/dashboard/content/content-management/tag/_id_/edit/page.js +99 -0
  101. package/dist/src/cms/client/interfaces/pages/dashboard/content/{tag → content-management/tag}/_id_/page.js +39 -22
  102. package/dist/src/cms/client/interfaces/pages/dashboard/content/{tag/_id_/edit → content-management/tag/create}/page.js +23 -26
  103. package/dist/src/cms/client/interfaces/pages/dashboard/content/{tag/create → content-management/tag}/page.js +42 -27
  104. package/dist/src/cms/client/interfaces/pages/dashboard/content/{topic → content-management/topic}/_id_/edit/page.js +31 -15
  105. package/dist/src/cms/client/interfaces/pages/dashboard/content/{topic → content-management/topic}/_id_/page.js +35 -36
  106. package/dist/src/cms/client/interfaces/pages/dashboard/content/{topic/create → content-management/topic}/page.js +40 -15
  107. package/dist/src/cms/client/interfaces/pages/dashboard/system/access/admin/_id_/admin-refresh-token/page.js +0 -1
  108. package/dist/src/cms/client/interfaces/pages/dashboard/system/access/admin/_id_/edit/page.js +3 -2
  109. package/dist/src/cms/client/interfaces/pages/dashboard/system/access/admin/_id_/page.js +3 -2
  110. package/dist/src/cms/client/interfaces/pages/dashboard/system/access/admin/create/page.js +3 -2
  111. package/dist/src/cms/client/interfaces/pages/dashboard/system/access/page.js +2 -2
  112. package/dist/src/cms/client/interfaces/pages/dashboard/system/storage/file/_id_/edit/page.js +0 -1
  113. package/dist/src/cms/client/interfaces/pages/dashboard/system/storage/file/_id_/page.js +0 -1
  114. package/dist/src/cms/client/interfaces/pages/dashboard/system/storage/file/create/page.js +0 -1
  115. package/dist/src/cms/client/interfaces/pages/dashboard/system/storage/file/create-many/page.js +0 -1
  116. package/dist/src/cms/client/interfaces/pages/dashboard/system/storage/file/delete-many/page.js +0 -1
  117. package/dist/src/cms/client/interfaces/pages/dashboard/system/storage/folder/_id_/edit/page.js +0 -1
  118. package/dist/src/cms/client/interfaces/pages/dashboard/system/storage/folder/_id_/page.js +0 -1
  119. package/dist/src/cms/client/interfaces/pages/dashboard/system/storage/folder/create/page.js +0 -1
  120. package/dist/src/cms/client/interfaces/pages/dashboard/system/storage/page.js +2 -2
  121. package/dist/src/cms/client/interfaces/pages/dashboard/system/storage/trash/page.js +1 -2
  122. package/dist/src/cms/client/interfaces/pages/dashboard/website/website-page/_slug_/page.js +0 -1
  123. package/dist/src/constants/paths/cms-paths.js +7 -4
  124. package/dist/src/core/domain/static/topics.js +29 -0
  125. package/dist/src/core/server/create-core-server.js +0 -1
  126. package/dist/src/core/server/infrastructure/database/file/query/file-query-repository.js +1 -1
  127. package/dist/src/core/server/infrastructure/database/folder/query/folder-query-repository.js +1 -1
  128. package/dist/src/core/server/infrastructure/database/post/command/post-command-repository.js +6 -151
  129. package/dist/src/core/server/infrastructure/database/post/command/post-create-data.js +81 -0
  130. package/dist/src/core/server/infrastructure/database/post/command/post-update-data.js +86 -0
  131. package/dist/src/core/server/infrastructure/i18n/messages/index.js +9 -0
  132. package/dist/src/core/server/interfaces/actions/resources/file/commands/purge-many/file-purge-many-action.js +1 -1
  133. package/dist/src/core/server/interfaces/actions/resources/file/commands/soft-delete/file-soft-delete-action.js +1 -1
  134. package/dist/src/core/server/interfaces/actions/resources/file/commands/soft-delete-many/file-soft-delete-many-action.js +1 -1
  135. package/dist/src/core/server/interfaces/actions/resources/folder/commands/delete/folder-delete-action.js +1 -1
  136. package/dist/src/core/server/interfaces/actions/resources/folder/queries/folder-find-full-action.js +1 -1
  137. package/dist/src/core/server/seeders/folder/seeder.js +1 -1
  138. package/dist/src/web/server/applications/sitemap/get-post-items.js +46 -6
  139. package/dist/src/web/server/applications/sitemap/get-subcategory-items.js +34 -0
  140. package/dist/src/web/server/create-web-server.js +0 -1
  141. package/dist/src/web/server/interfaces/actions/resources/config/queries/config-find-action.js +0 -1
  142. package/dist/src/web/server/interfaces/actions/resources/post/queries/post-find-full-action.js +0 -1
  143. package/dist/src/web/server/interfaces/create-web-interfaces.js +4 -0
  144. package/dist/src/web/server/interfaces/loaders/load-categories.js +6 -4
  145. package/dist/src/web/server/interfaces/loaders/load-category.js +8 -2
  146. package/dist/src/web/server/interfaces/loaders/load-post.js +8 -2
  147. package/dist/src/web/server/interfaces/loaders/load-posts.js +7 -3
  148. package/dist/src/web/server/interfaces/loaders/load-subcategories.js +60 -0
  149. package/dist/src/web/server/interfaces/loaders/load-subcategory.js +27 -0
  150. package/dist/types/export/cms/client/components/index.d.ts +4 -1
  151. package/dist/types/export/cms/client/components/index.d.ts.map +1 -1
  152. package/dist/types/export/cms/client/i18n/index.d.ts +1 -1
  153. package/dist/types/export/cms/client/i18n/index.d.ts.map +1 -1
  154. package/dist/types/export/cms/client/index.d.ts +1 -1
  155. package/dist/types/export/cms/client/index.d.ts.map +1 -1
  156. package/dist/types/export/cms/client/pages/index.d.ts +1 -1
  157. package/dist/types/export/cms/client/pages/index.d.ts.map +1 -1
  158. package/dist/types/export/core/server/index.d.ts +6 -1
  159. package/dist/types/export/core/server/index.d.ts.map +1 -1
  160. package/dist/types/export/index.d.ts +2 -2
  161. package/dist/types/export/index.d.ts.map +1 -1
  162. package/dist/types/export/web/server/index.d.ts +1 -1
  163. package/dist/types/export/web/server/index.d.ts.map +1 -1
  164. package/dist/types/src/cms/client/applications/create-applications.d.ts.map +1 -1
  165. package/dist/types/src/cms/client/applications/resources/post/use-create-form-data.d.ts +1 -1
  166. package/dist/types/src/cms/client/applications/resources/post/use-create-form-data.d.ts.map +1 -1
  167. package/dist/types/src/cms/client/applications/types.d.ts +2 -1
  168. package/dist/types/src/cms/client/applications/types.d.ts.map +1 -1
  169. package/dist/types/src/cms/client/applications/ui/index.d.ts +1 -0
  170. package/dist/types/src/cms/client/applications/ui/index.d.ts.map +1 -1
  171. package/dist/types/src/cms/client/applications/ui/use-nav-items.d.ts +20 -0
  172. package/dist/types/src/cms/client/applications/ui/use-nav-items.d.ts.map +1 -0
  173. package/dist/types/src/cms/client/infrastructure/i18n/index.d.ts +1 -0
  174. package/dist/types/src/cms/client/infrastructure/i18n/index.d.ts.map +1 -1
  175. package/dist/types/src/cms/client/infrastructure/i18n/intor-config.d.ts.map +1 -1
  176. package/dist/types/src/cms/client/infrastructure/i18n/messages/en-US/index.d.ts +4 -1
  177. package/dist/types/src/cms/client/infrastructure/i18n/messages/en-US/index.d.ts.map +1 -1
  178. package/dist/types/src/cms/client/infrastructure/i18n/messages/en-US/resources/admin.d.ts +1 -1
  179. package/dist/types/src/cms/client/infrastructure/i18n/messages/en-US/resources/index.d.ts +4 -1
  180. package/dist/types/src/cms/client/infrastructure/i18n/messages/en-US/resources/index.d.ts.map +1 -1
  181. package/dist/types/src/cms/client/infrastructure/i18n/messages/index.d.ts +1347 -0
  182. package/dist/types/src/cms/client/infrastructure/i18n/messages/index.d.ts.map +1 -0
  183. package/dist/types/src/cms/client/infrastructure/i18n/messages/zh-TW/index.d.ts +4 -1
  184. package/dist/types/src/cms/client/infrastructure/i18n/messages/zh-TW/index.d.ts.map +1 -1
  185. package/dist/types/src/cms/client/infrastructure/i18n/messages/zh-TW/resources/admin.d.ts +1 -1
  186. package/dist/types/src/cms/client/infrastructure/i18n/messages/zh-TW/resources/index.d.ts +4 -1
  187. package/dist/types/src/cms/client/infrastructure/i18n/messages/zh-TW/resources/index.d.ts.map +1 -1
  188. package/dist/types/src/cms/client/interfaces/components/create-components.d.ts +10 -5
  189. package/dist/types/src/cms/client/interfaces/components/create-components.d.ts.map +1 -1
  190. package/dist/types/src/cms/client/interfaces/components/create-post-contents.d.ts +38 -0
  191. package/dist/types/src/cms/client/interfaces/components/create-post-contents.d.ts.map +1 -0
  192. package/dist/types/src/cms/client/interfaces/components/resources/admin/admin-card.d.ts.map +1 -1
  193. package/dist/types/src/cms/client/interfaces/components/resources/admin/admin-relations-section.d.ts +1 -2
  194. package/dist/types/src/cms/client/interfaces/components/resources/admin/admin-relations-section.d.ts.map +1 -1
  195. package/dist/types/src/cms/client/interfaces/components/resources/admin/admin-table.d.ts.map +1 -1
  196. package/dist/types/src/cms/client/interfaces/components/resources/config/config-edit-content.d.ts +1 -1
  197. package/dist/types/src/cms/client/interfaces/components/resources/config/config-edit-content.d.ts.map +1 -1
  198. package/dist/types/src/cms/client/interfaces/components/resources/file/file-relations-section.d.ts +1 -2
  199. package/dist/types/src/cms/client/interfaces/components/resources/file/file-relations-section.d.ts.map +1 -1
  200. package/dist/types/src/cms/client/interfaces/components/resources/index.d.ts +5 -4
  201. package/dist/types/src/cms/client/interfaces/components/resources/index.d.ts.map +1 -1
  202. package/dist/types/src/cms/client/interfaces/components/resources/post/category/category-card.d.ts +8 -0
  203. package/dist/types/src/cms/client/interfaces/components/resources/post/category/category-card.d.ts.map +1 -0
  204. package/dist/types/src/cms/client/interfaces/components/resources/{category → post/category}/category-relations-section.d.ts +4 -4
  205. package/dist/types/src/cms/client/interfaces/components/resources/post/category/category-relations-section.d.ts.map +1 -0
  206. package/dist/types/src/cms/client/interfaces/components/resources/post/category/category-table.d.ts +8 -0
  207. package/dist/types/src/cms/client/interfaces/components/resources/post/category/category-table.d.ts.map +1 -0
  208. package/dist/types/src/cms/client/interfaces/components/resources/post/category/index.d.ts.map +1 -0
  209. package/dist/types/src/cms/client/interfaces/components/resources/post/content/index.d.ts +6 -0
  210. package/dist/types/src/cms/client/interfaces/components/resources/post/content/index.d.ts.map +1 -0
  211. package/dist/types/src/cms/client/interfaces/components/resources/post/content/post-create-content.d.ts +46 -0
  212. package/dist/types/src/cms/client/interfaces/components/resources/post/content/post-create-content.d.ts.map +1 -0
  213. package/dist/types/src/cms/client/interfaces/components/resources/post/content/post-edit-content.d.ts +45 -0
  214. package/dist/types/src/cms/client/interfaces/components/resources/post/content/post-edit-content.d.ts.map +1 -0
  215. package/dist/types/src/cms/client/interfaces/components/resources/post/content/post-show-content.d.ts +26 -0
  216. package/dist/types/src/cms/client/interfaces/components/resources/post/content/post-show-content.d.ts.map +1 -0
  217. package/dist/types/src/cms/client/interfaces/components/resources/post/content/types.d.ts +19 -0
  218. package/dist/types/src/cms/client/interfaces/components/resources/post/content/types.d.ts.map +1 -0
  219. package/dist/types/src/cms/client/interfaces/components/resources/post/index.d.ts +2 -0
  220. package/dist/types/src/cms/client/interfaces/components/resources/post/index.d.ts.map +1 -1
  221. package/dist/types/src/cms/client/interfaces/components/resources/post/post-card.d.ts +1 -8
  222. package/dist/types/src/cms/client/interfaces/components/resources/post/post-card.d.ts.map +1 -1
  223. package/dist/types/src/cms/client/interfaces/components/resources/post/post-list.d.ts +4 -3
  224. package/dist/types/src/cms/client/interfaces/components/resources/post/post-list.d.ts.map +1 -1
  225. package/dist/types/src/cms/client/interfaces/components/resources/post/post-relations-section.d.ts +1 -1
  226. package/dist/types/src/cms/client/interfaces/components/resources/post/post-relations-section.d.ts.map +1 -1
  227. package/dist/types/src/cms/client/interfaces/components/resources/post/search/control-fields-buttons.d.ts +0 -2
  228. package/dist/types/src/cms/client/interfaces/components/resources/post/search/control-fields-buttons.d.ts.map +1 -1
  229. package/dist/types/src/cms/client/interfaces/components/resources/post/tag/index.d.ts.map +1 -0
  230. package/dist/types/src/cms/client/interfaces/components/resources/{tag → post/tag}/tag-card.d.ts +1 -1
  231. package/dist/types/src/cms/client/interfaces/components/resources/post/tag/tag-card.d.ts.map +1 -0
  232. package/dist/types/src/cms/client/interfaces/components/resources/{tag → post/tag}/tag-relations-section.d.ts +4 -4
  233. package/dist/types/src/cms/client/interfaces/components/resources/post/tag/tag-relations-section.d.ts.map +1 -0
  234. package/dist/types/src/cms/client/interfaces/components/resources/{tag → post/tag}/tag-table.d.ts +1 -1
  235. package/dist/types/src/cms/client/interfaces/components/resources/post/tag/tag-table.d.ts.map +1 -0
  236. package/dist/types/src/cms/client/interfaces/components/resources/post/topic/index.d.ts.map +1 -0
  237. package/dist/types/src/cms/client/interfaces/components/resources/{topic → post/topic}/topic-card.d.ts +2 -2
  238. package/dist/types/src/cms/client/interfaces/components/resources/post/topic/topic-card.d.ts.map +1 -0
  239. package/dist/types/src/cms/client/interfaces/components/resources/{topic → post/topic}/topic-table.d.ts +2 -2
  240. package/dist/types/src/cms/client/interfaces/components/resources/post/topic/topic-table.d.ts.map +1 -0
  241. package/dist/types/src/cms/client/interfaces/components/ui/blocks/page-header/presets/index.d.ts.map +1 -1
  242. package/dist/types/src/cms/client/interfaces/components/ui/blocks/page-header/types.d.ts +1 -0
  243. package/dist/types/src/cms/client/interfaces/components/ui/blocks/page-header/types.d.ts.map +1 -1
  244. package/dist/types/src/cms/client/interfaces/components/ui/features/pick-modal/pick-modal.d.ts +2 -1
  245. package/dist/types/src/cms/client/interfaces/components/ui/features/pick-modal/pick-modal.d.ts.map +1 -1
  246. package/dist/types/src/cms/client/interfaces/components/ui/form/index-field.d.ts.map +1 -1
  247. package/dist/types/src/cms/client/interfaces/components/ui/i18n/display/i18n-array-display.d.ts.map +1 -1
  248. package/dist/types/src/cms/client/interfaces/components/ui/i18n/display/i18n-display.d.ts.map +1 -1
  249. package/dist/types/src/cms/client/interfaces/components/ui/i18n/display/i18n-object-array-display.d.ts.map +1 -1
  250. package/dist/types/src/cms/client/interfaces/components/ui/i18n/inputs/i18n-json-input.d.ts.map +1 -1
  251. package/dist/types/src/cms/client/interfaces/components/ui/inputs/editor/base/built-in-plugins.d.ts.map +1 -1
  252. package/dist/types/src/cms/client/interfaces/components/ui/layouts/content-container.d.ts +1 -1
  253. package/dist/types/src/cms/client/interfaces/components/ui/layouts/content-container.d.ts.map +1 -1
  254. package/dist/types/src/cms/client/interfaces/components/ui/layouts/sidebar/nav-main.d.ts +1 -1
  255. package/dist/types/src/cms/client/interfaces/components/ui/layouts/sidebar/nav-main.d.ts.map +1 -1
  256. package/dist/types/src/cms/client/interfaces/pages/dashboard/content/content-management/[topicSlug]/category/[id]/edit/page.d.ts +6 -2
  257. package/dist/types/src/cms/client/interfaces/pages/dashboard/content/content-management/[topicSlug]/category/[id]/edit/page.d.ts.map +1 -1
  258. package/dist/types/src/cms/client/interfaces/pages/dashboard/content/content-management/[topicSlug]/category/[id]/page.d.ts +6 -3
  259. package/dist/types/src/cms/client/interfaces/pages/dashboard/content/content-management/[topicSlug]/category/[id]/page.d.ts.map +1 -1
  260. package/dist/types/src/cms/client/interfaces/pages/dashboard/content/content-management/[topicSlug]/category/create/page.d.ts +6 -2
  261. package/dist/types/src/cms/client/interfaces/pages/dashboard/content/content-management/[topicSlug]/category/create/page.d.ts.map +1 -1
  262. package/dist/types/src/cms/client/interfaces/pages/dashboard/content/content-management/[topicSlug]/page.d.ts +3 -3
  263. package/dist/types/src/cms/client/interfaces/pages/dashboard/content/content-management/[topicSlug]/page.d.ts.map +1 -1
  264. package/dist/types/src/cms/client/interfaces/pages/dashboard/content/content-management/[topicSlug]/post/[id]/edit/page.d.ts +6 -2
  265. package/dist/types/src/cms/client/interfaces/pages/dashboard/content/content-management/[topicSlug]/post/[id]/edit/page.d.ts.map +1 -1
  266. package/dist/types/src/cms/client/interfaces/pages/dashboard/content/content-management/[topicSlug]/post/[id]/page.d.ts +7 -3
  267. package/dist/types/src/cms/client/interfaces/pages/dashboard/content/content-management/[topicSlug]/post/[id]/page.d.ts.map +1 -1
  268. package/dist/types/src/cms/client/interfaces/pages/dashboard/content/content-management/[topicSlug]/post/create/page.d.ts +6 -2
  269. package/dist/types/src/cms/client/interfaces/pages/dashboard/content/content-management/[topicSlug]/post/create/page.d.ts.map +1 -1
  270. package/dist/types/src/cms/client/interfaces/pages/dashboard/content/content-management/[topicSlug]/subcategory/[id]/edit/page.d.ts +24 -0
  271. package/dist/types/src/cms/client/interfaces/pages/dashboard/content/content-management/[topicSlug]/subcategory/[id]/edit/page.d.ts.map +1 -0
  272. package/dist/types/src/cms/client/interfaces/pages/dashboard/content/content-management/[topicSlug]/subcategory/[id]/page.d.ts +27 -0
  273. package/dist/types/src/cms/client/interfaces/pages/dashboard/content/content-management/[topicSlug]/subcategory/[id]/page.d.ts.map +1 -0
  274. package/dist/types/src/cms/client/interfaces/pages/dashboard/content/content-management/[topicSlug]/subcategory/create/page.d.ts +24 -0
  275. package/dist/types/src/cms/client/interfaces/pages/dashboard/content/content-management/[topicSlug]/subcategory/create/page.d.ts.map +1 -0
  276. package/dist/types/src/cms/client/interfaces/pages/dashboard/content/content-management/[topicSlug]/subcategory/index.d.ts +4 -0
  277. package/dist/types/src/cms/client/interfaces/pages/dashboard/content/content-management/[topicSlug]/subcategory/index.d.ts.map +1 -0
  278. package/dist/types/src/cms/client/interfaces/pages/dashboard/content/content-management/page.d.ts +3 -1
  279. package/dist/types/src/cms/client/interfaces/pages/dashboard/content/content-management/page.d.ts.map +1 -1
  280. package/dist/types/src/cms/client/interfaces/pages/dashboard/content/content-management/tag/[id]/edit/page.d.ts +20 -0
  281. package/dist/types/src/cms/client/interfaces/pages/dashboard/content/content-management/tag/[id]/edit/page.d.ts.map +1 -0
  282. package/dist/types/src/cms/client/interfaces/pages/dashboard/content/content-management/tag/[id]/page.d.ts +23 -0
  283. package/dist/types/src/cms/client/interfaces/pages/dashboard/content/content-management/tag/[id]/page.d.ts.map +1 -0
  284. package/dist/types/src/cms/client/interfaces/pages/dashboard/content/content-management/tag/create/page.d.ts +16 -0
  285. package/dist/types/src/cms/client/interfaces/pages/dashboard/content/content-management/tag/create/page.d.ts.map +1 -0
  286. package/dist/types/src/cms/client/interfaces/pages/dashboard/content/content-management/tag/index.d.ts.map +1 -0
  287. package/dist/types/src/cms/client/interfaces/pages/dashboard/content/content-management/tag/page.d.ts +14 -0
  288. package/dist/types/src/cms/client/interfaces/pages/dashboard/content/content-management/tag/page.d.ts.map +1 -0
  289. package/dist/types/src/cms/client/interfaces/pages/dashboard/content/content-management/topic/[id]/edit/page.d.ts +20 -0
  290. package/dist/types/src/cms/client/interfaces/pages/dashboard/content/content-management/topic/[id]/edit/page.d.ts.map +1 -0
  291. package/dist/types/src/cms/client/interfaces/pages/dashboard/content/content-management/topic/[id]/page.d.ts +20 -0
  292. package/dist/types/src/cms/client/interfaces/pages/dashboard/content/content-management/topic/[id]/page.d.ts.map +1 -0
  293. package/dist/types/src/cms/client/interfaces/pages/dashboard/content/{topic → content-management/topic}/index.d.ts +0 -1
  294. package/dist/types/src/cms/client/interfaces/pages/dashboard/content/content-management/topic/index.d.ts.map +1 -0
  295. package/dist/types/src/cms/client/interfaces/pages/dashboard/content/content-management/topic/page.d.ts +14 -0
  296. package/dist/types/src/cms/client/interfaces/pages/dashboard/content/content-management/topic/page.d.ts.map +1 -0
  297. package/dist/types/src/cms/client/interfaces/pages/dashboard/system/access/admin/[id]/edit/page.d.ts.map +1 -1
  298. package/dist/types/src/cms/client/interfaces/pages/dashboard/system/access/admin/[id]/page.d.ts.map +1 -1
  299. package/dist/types/src/cms/client/interfaces/pages/dashboard/system/access/admin/create/page.d.ts.map +1 -1
  300. package/dist/types/src/cms/client/interfaces/pages/index.d.ts +3 -2
  301. package/dist/types/src/cms/client/interfaces/pages/index.d.ts.map +1 -1
  302. package/dist/types/src/constants/paths/cms-paths.d.ts +9 -6
  303. package/dist/types/src/constants/paths/cms-paths.d.ts.map +1 -1
  304. package/dist/types/src/core/domain/index.d.ts +2 -2
  305. package/dist/types/src/core/domain/index.d.ts.map +1 -1
  306. package/dist/types/src/core/domain/resources/admin/index.d.ts +0 -1
  307. package/dist/types/src/core/domain/resources/admin/index.d.ts.map +1 -1
  308. package/dist/types/src/core/domain/resources/index.d.ts +1 -1
  309. package/dist/types/src/core/domain/resources/index.d.ts.map +1 -1
  310. package/dist/types/src/core/domain/static/index.d.ts +1 -1
  311. package/dist/types/src/core/domain/static/index.d.ts.map +1 -1
  312. package/dist/types/src/core/domain/static/post.d.ts +1 -1
  313. package/dist/types/src/core/domain/static/post.d.ts.map +1 -1
  314. package/dist/types/src/core/domain/static/topics.d.ts +36 -3
  315. package/dist/types/src/core/domain/static/topics.d.ts.map +1 -1
  316. package/dist/types/src/core/server/infrastructure/database/index.d.ts +1 -1
  317. package/dist/types/src/core/server/infrastructure/database/index.d.ts.map +1 -1
  318. package/dist/types/src/core/server/infrastructure/database/post/command/index.d.ts +2 -0
  319. package/dist/types/src/core/server/infrastructure/database/post/command/index.d.ts.map +1 -1
  320. package/dist/types/src/core/server/infrastructure/database/post/command/post-command-repository.d.ts +2 -2
  321. package/dist/types/src/core/server/infrastructure/database/post/command/post-command-repository.d.ts.map +1 -1
  322. package/dist/types/src/core/server/infrastructure/database/post/command/post-create-data.d.ts +160 -0
  323. package/dist/types/src/core/server/infrastructure/database/post/command/post-create-data.d.ts.map +1 -0
  324. package/dist/types/src/core/server/infrastructure/database/post/command/post-update-data.d.ts +207 -0
  325. package/dist/types/src/core/server/infrastructure/database/post/command/post-update-data.d.ts.map +1 -0
  326. package/dist/types/src/core/server/infrastructure/database/post/index.d.ts +1 -1
  327. package/dist/types/src/core/server/infrastructure/database/post/index.d.ts.map +1 -1
  328. package/dist/types/src/core/server/infrastructure/i18n/index.d.ts +1 -0
  329. package/dist/types/src/core/server/infrastructure/i18n/index.d.ts.map +1 -1
  330. package/dist/types/src/core/server/infrastructure/i18n/messages/index.d.ts +105 -0
  331. package/dist/types/src/core/server/infrastructure/i18n/messages/index.d.ts.map +1 -0
  332. package/dist/types/src/core/server/infrastructure/index.d.ts +1 -1
  333. package/dist/types/src/core/server/infrastructure/index.d.ts.map +1 -1
  334. package/dist/types/src/shared/form/types.d.ts +2 -2
  335. package/dist/types/src/shared/form/types.d.ts.map +1 -1
  336. package/dist/types/src/web/server/applications/index.d.ts +1 -1
  337. package/dist/types/src/web/server/applications/index.d.ts.map +1 -1
  338. package/dist/types/src/web/server/applications/sitemap/get-post-items.d.ts +3 -1
  339. package/dist/types/src/web/server/applications/sitemap/get-post-items.d.ts.map +1 -1
  340. package/dist/types/src/web/server/applications/sitemap/get-subcategory-items.d.ts +18 -0
  341. package/dist/types/src/web/server/applications/sitemap/get-subcategory-items.d.ts.map +1 -0
  342. package/dist/types/src/web/server/applications/sitemap/index.d.ts +1 -0
  343. package/dist/types/src/web/server/applications/sitemap/index.d.ts.map +1 -1
  344. package/dist/types/src/web/server/index.d.ts +1 -0
  345. package/dist/types/src/web/server/index.d.ts.map +1 -1
  346. package/dist/types/src/web/server/interfaces/create-web-interfaces.d.ts.map +1 -1
  347. package/dist/types/src/web/server/interfaces/loaders/index.d.ts +2 -0
  348. package/dist/types/src/web/server/interfaces/loaders/index.d.ts.map +1 -1
  349. package/dist/types/src/web/server/interfaces/loaders/load-categories.d.ts.map +1 -1
  350. package/dist/types/src/web/server/interfaces/loaders/load-category.d.ts.map +1 -1
  351. package/dist/types/src/web/server/interfaces/loaders/load-post.d.ts.map +1 -1
  352. package/dist/types/src/web/server/interfaces/loaders/load-posts.d.ts.map +1 -1
  353. package/dist/types/src/web/server/interfaces/loaders/load-subcategories.d.ts +10 -0
  354. package/dist/types/src/web/server/interfaces/loaders/load-subcategories.d.ts.map +1 -0
  355. package/dist/types/src/web/server/interfaces/loaders/load-subcategory.d.ts +8 -0
  356. package/dist/types/src/web/server/interfaces/loaders/load-subcategory.d.ts.map +1 -0
  357. package/dist/types/src/web/server/interfaces/types.d.ts +3 -1
  358. package/dist/types/src/web/server/interfaces/types.d.ts.map +1 -1
  359. package/package.json +3 -3
  360. package/dist/src/cms/client/interfaces/pages/dashboard/content/tag/page.js +0 -81
  361. package/dist/src/cms/client/interfaces/pages/dashboard/content/topic/page.js +0 -79
  362. package/dist/src/core/domain/resources/admin/constants.js +0 -9
  363. package/dist/types/src/cms/client/interfaces/components/resources/category/category-card.d.ts +0 -3
  364. package/dist/types/src/cms/client/interfaces/components/resources/category/category-card.d.ts.map +0 -1
  365. package/dist/types/src/cms/client/interfaces/components/resources/category/category-relations-section.d.ts.map +0 -1
  366. package/dist/types/src/cms/client/interfaces/components/resources/category/category-table.d.ts +0 -3
  367. package/dist/types/src/cms/client/interfaces/components/resources/category/category-table.d.ts.map +0 -1
  368. package/dist/types/src/cms/client/interfaces/components/resources/category/index.d.ts.map +0 -1
  369. package/dist/types/src/cms/client/interfaces/components/resources/tag/index.d.ts.map +0 -1
  370. package/dist/types/src/cms/client/interfaces/components/resources/tag/tag-card.d.ts.map +0 -1
  371. package/dist/types/src/cms/client/interfaces/components/resources/tag/tag-relations-section.d.ts.map +0 -1
  372. package/dist/types/src/cms/client/interfaces/components/resources/tag/tag-table.d.ts.map +0 -1
  373. package/dist/types/src/cms/client/interfaces/components/resources/topic/index.d.ts.map +0 -1
  374. package/dist/types/src/cms/client/interfaces/components/resources/topic/topic-card.d.ts.map +0 -1
  375. package/dist/types/src/cms/client/interfaces/components/resources/topic/topic-table.d.ts.map +0 -1
  376. package/dist/types/src/cms/client/interfaces/pages/dashboard/content/tag/[id]/edit/page.d.ts +0 -15
  377. package/dist/types/src/cms/client/interfaces/pages/dashboard/content/tag/[id]/edit/page.d.ts.map +0 -1
  378. package/dist/types/src/cms/client/interfaces/pages/dashboard/content/tag/[id]/page.d.ts +0 -17
  379. package/dist/types/src/cms/client/interfaces/pages/dashboard/content/tag/[id]/page.d.ts.map +0 -1
  380. package/dist/types/src/cms/client/interfaces/pages/dashboard/content/tag/create/page.d.ts +0 -11
  381. package/dist/types/src/cms/client/interfaces/pages/dashboard/content/tag/create/page.d.ts.map +0 -1
  382. package/dist/types/src/cms/client/interfaces/pages/dashboard/content/tag/index.d.ts.map +0 -1
  383. package/dist/types/src/cms/client/interfaces/pages/dashboard/content/tag/page.d.ts +0 -8
  384. package/dist/types/src/cms/client/interfaces/pages/dashboard/content/tag/page.d.ts.map +0 -1
  385. package/dist/types/src/cms/client/interfaces/pages/dashboard/content/topic/[id]/edit/page.d.ts +0 -15
  386. package/dist/types/src/cms/client/interfaces/pages/dashboard/content/topic/[id]/edit/page.d.ts.map +0 -1
  387. package/dist/types/src/cms/client/interfaces/pages/dashboard/content/topic/[id]/page.d.ts +0 -17
  388. package/dist/types/src/cms/client/interfaces/pages/dashboard/content/topic/[id]/page.d.ts.map +0 -1
  389. package/dist/types/src/cms/client/interfaces/pages/dashboard/content/topic/create/page.d.ts +0 -11
  390. package/dist/types/src/cms/client/interfaces/pages/dashboard/content/topic/create/page.d.ts.map +0 -1
  391. package/dist/types/src/cms/client/interfaces/pages/dashboard/content/topic/index.d.ts.map +0 -1
  392. package/dist/types/src/cms/client/interfaces/pages/dashboard/content/topic/page.d.ts +0 -12
  393. package/dist/types/src/cms/client/interfaces/pages/dashboard/content/topic/page.d.ts.map +0 -1
  394. package/dist/types/src/core/domain/resources/admin/constants.d.ts +0 -4
  395. package/dist/types/src/core/domain/resources/admin/constants.d.ts.map +0 -1
  396. package/dist/types/src/core/domain/translation.d.ts +0 -7
  397. package/dist/types/src/core/domain/translation.d.ts.map +0 -1
  398. /package/dist/types/src/cms/client/interfaces/components/resources/{category → post/category}/index.d.ts +0 -0
  399. /package/dist/types/src/cms/client/interfaces/components/resources/{tag → post/tag}/index.d.ts +0 -0
  400. /package/dist/types/src/cms/client/interfaces/components/resources/{topic → post/topic}/index.d.ts +0 -0
  401. /package/dist/types/src/cms/client/interfaces/pages/dashboard/content/{tag → content-management/tag}/index.d.ts +0 -0
@@ -51,10 +51,13 @@ const CMS_PATHS = {
51
51
  },
52
52
  category: {
53
53
  pathname: (topicSlug = "") => `${DB}/content/content-management/${topicSlug}/category`
54
- }
55
- },
56
- topic: { pathname: `${DB}/content/topic` },
57
- tag: { pathname: `${DB}/content/tag` }
54
+ },
55
+ subcategory: {
56
+ pathname: (topicSlug = "") => `${DB}/content/content-management/${topicSlug}/subcategory`
57
+ },
58
+ topic: { pathname: `${DB}/content/content-management/topic` },
59
+ tag: { pathname: `${DB}/content/content-management/tag` }
60
+ }
58
61
  }
59
62
  };
60
63
 
@@ -0,0 +1,29 @@
1
+ import { POST_TYPES } from 'sitero-domain';
2
+
3
+ function getTopicItemsByRole(topics, slug, items, role) {
4
+ if (!slug || !hasTopicRole(topics, slug, role)) return [];
5
+ return (items ?? []).filter((item) => item.type === role);
6
+ }
7
+ function hasTopicRole(topics, slug, role) {
8
+ return topics[slug]?.roles.includes(role) ?? false;
9
+ }
10
+ function isContentTopic(topics, slug) {
11
+ return hasTopicRole(topics, slug, POST_TYPES.POST) && !hasTopicRole(topics, slug, POST_TYPES.PRODUCT);
12
+ }
13
+ function isProductTopic(topics, slug) {
14
+ return hasTopicRole(topics, slug, POST_TYPES.PRODUCT);
15
+ }
16
+ function getTopicCategories(topics, slug, items) {
17
+ return getTopicItemsByRole(topics, slug, items, POST_TYPES.CATEGORY);
18
+ }
19
+ function getTopicSubcategories(topics, slug, items) {
20
+ return getTopicItemsByRole(topics, slug, items, POST_TYPES.SUBCATEGORY);
21
+ }
22
+ function getTopicPosts(topics, slug, items) {
23
+ return getTopicItemsByRole(topics, slug, items, POST_TYPES.POST);
24
+ }
25
+ function getTopicProducts(topics, slug, items) {
26
+ return getTopicItemsByRole(topics, slug, items, POST_TYPES.PRODUCT);
27
+ }
28
+
29
+ export { getTopicCategories, getTopicPosts, getTopicProducts, getTopicSubcategories, hasTopicRole, isContentTopic, isProductTopic };
@@ -16,7 +16,6 @@ import '@keyv/redis';
16
16
  import 'keyv';
17
17
  import 'nodemailer';
18
18
  import './infrastructure/email/template/render-email-template.js';
19
- import '../domain/resources/admin/constants.js';
20
19
  import 'ulid';
21
20
  import { createCoreInterfaces } from './interfaces/create-core-interfaces.js';
22
21
  import 'next/dist/client/components/redirect-error';
@@ -1,5 +1,5 @@
1
- import '../../../../../domain/resources/admin/constants.js';
2
1
  import { ROOT_FOLDER_ID } from '../../../../../domain/resources/constants.js';
2
+ import 'sitero-domain';
3
3
  import { ORDER_BY } from '../../constants.js';
4
4
  import { buildFileUsage } from '../../utils/build-file-usage.js';
5
5
  import { createPagination } from '../../utils/create-pagination.js';
@@ -1,5 +1,5 @@
1
- import '../../../../../domain/resources/admin/constants.js';
2
1
  import { ROOT_FOLDER_ID } from '../../../../../domain/resources/constants.js';
2
+ import 'sitero-domain';
3
3
  import { ORDER_BY } from '../../constants.js';
4
4
  import { createPagination } from '../../utils/create-pagination.js';
5
5
  import { FOLDER_FULL_INCLUDE } from '../include.js';
@@ -1,165 +1,20 @@
1
1
  import { ulid } from 'ulid';
2
- import { updateOne, updateMany, connectOne, connectMany } from '../../utils/connect.js';
3
2
  import { postToDomain } from '../utils/post-to-domain.js';
3
+ import { createPostCreateData } from './post-create-data.js';
4
+ import { createPostUpdateData } from './post-update-data.js';
4
5
 
5
6
  function createPostCommandRepository(prisma) {
6
- async function create({
7
- slug,
8
- type,
9
- // ------------------------------------
10
- // relations
11
- // ------------------------------------
12
- // Admin
13
- author,
14
- // Post
15
- topicId,
16
- parents,
17
- tags,
18
- relatedPosts,
19
- // File
20
- coverImage,
21
- contentImageIds,
22
- // ------------------------------------
23
- // --- custom fields
24
- // ------------------------------------
25
- // multi images
26
- files1,
27
- files2,
28
- // single images
29
- file1,
30
- file2,
31
- file3,
32
- file4,
33
- // ------------------------------------
34
- // translation
35
- // ------------------------------------
36
- translations,
37
- // rest
38
- ...params
39
- }) {
7
+ async function create({ type, ...params }) {
40
8
  const id = ulid();
41
9
  const created = await prisma.post.create({
42
- data: {
43
- ...params,
44
- id,
45
- type,
46
- // ------------------------------------------------------------------------
47
- // states
48
- // ------------------------------------------------------------------------
49
- slug: slug?.trim() || id,
50
- // Use id when slug is null or empty string
51
- // ------------------------------------------------------------------------
52
- // relations
53
- // ------------------------------------------------------------------------
54
- // Admin
55
- author: connectOne(author),
56
- // Post
57
- topic: connectOne(topicId ? { id: topicId } : null),
58
- parents: connectMany(parents),
59
- tags: connectMany(tags),
60
- relatedPosts: connectMany(relatedPosts),
61
- // File
62
- coverImage: connectOne(coverImage),
63
- contentImages: connectMany(contentImageIds.map((id2) => ({ id: id2 }))),
64
- // ------------------------------------------------------------------------
65
- // --- custom fields
66
- // ------------------------------------------------------------------------
67
- // multi images
68
- files1: connectMany(files1),
69
- files2: connectMany(files2),
70
- // single images
71
- file1: connectOne(file1),
72
- file2: connectOne(file2),
73
- file3: connectOne(file3),
74
- file4: connectOne(file4),
75
- // ------------------------------------------------------------------------
76
- // translation
77
- // ------------------------------------------------------------------------
78
- translations: { create: translations }
79
- }
10
+ data: createPostCreateData({ id, type, params })
80
11
  });
81
12
  return postToDomain(created);
82
13
  }
83
- async function update({
84
- id,
85
- slug,
86
- type,
87
- // ------------------------------------
88
- // relations
89
- // ------------------------------------
90
- // Admin
91
- author,
92
- // Post
93
- topicId,
94
- parents,
95
- tags,
96
- relatedPosts,
97
- // File
98
- coverImage,
99
- contentImageIds,
100
- // ------------------------------------
101
- // --- custom fields
102
- // ------------------------------------
103
- // multi images
104
- files1,
105
- files2,
106
- // single images
107
- file1,
108
- file2,
109
- file3,
110
- file4,
111
- // ------------------------------------
112
- // translation
113
- // ------------------------------------
114
- translations,
115
- // rest
116
- ...params
117
- }) {
14
+ async function update({ id, type, ...params }) {
118
15
  const updated = await prisma.post.update({
119
16
  where: { id },
120
- data: {
121
- ...params,
122
- type,
123
- // ------------------------------------------------------------------------
124
- // states
125
- // ------------------------------------------------------------------------
126
- slug: slug?.trim() || id,
127
- // Use id when slug is null or empty string
128
- // ------------------------------------------------------------------------
129
- // relations
130
- // ------------------------------------------------------------------------
131
- // Admin
132
- author: updateOne(author),
133
- // Post
134
- topic: updateOne(topicId ? { id: topicId } : null),
135
- parents: updateMany(parents),
136
- tags: updateMany(tags),
137
- relatedPosts: updateMany(relatedPosts),
138
- // File
139
- coverImage: updateOne(coverImage),
140
- contentImages: updateMany(contentImageIds.map((id2) => ({ id: id2 }))),
141
- // ------------------------------------------------------------------------
142
- // --- custom fields
143
- // ------------------------------------------------------------------------
144
- // multi images
145
- files1: updateMany(files1),
146
- files2: updateMany(files2),
147
- // single images
148
- file1: updateOne(file1),
149
- file2: updateOne(file2),
150
- file3: updateOne(file3),
151
- file4: updateOne(file4),
152
- // ------------------------------------------------------------------------
153
- // translation
154
- // ------------------------------------------------------------------------
155
- translations: {
156
- upsert: translations.map((t) => ({
157
- where: { postId_locale: { postId: id, locale: t.locale } },
158
- update: t,
159
- create: t
160
- }))
161
- }
162
- }
17
+ data: createPostUpdateData({ id, type, params })
163
18
  });
164
19
  return postToDomain(updated);
165
20
  }
@@ -0,0 +1,81 @@
1
+ import { connectOne, connectMany } from '../../utils/connect.js';
2
+
3
+ function createPostCreateData({
4
+ id,
5
+ type,
6
+ params
7
+ }) {
8
+ const {
9
+ slug,
10
+ // ------------------------------------
11
+ // relations
12
+ // ------------------------------------
13
+ // Admin
14
+ author,
15
+ // Post
16
+ topicId,
17
+ parents,
18
+ tags,
19
+ relatedPosts,
20
+ // File
21
+ coverImage,
22
+ contentImageIds,
23
+ // ------------------------------------
24
+ // --- custom fields
25
+ // ------------------------------------
26
+ // multi images
27
+ files1,
28
+ files2,
29
+ // single images
30
+ file1,
31
+ file2,
32
+ file3,
33
+ file4,
34
+ // ------------------------------------
35
+ // translation
36
+ // ------------------------------------
37
+ translations,
38
+ // rest
39
+ ...rest
40
+ } = params;
41
+ return {
42
+ ...rest,
43
+ id,
44
+ type,
45
+ // ------------------------------------------------------------------------
46
+ // states
47
+ // ------------------------------------------------------------------------
48
+ slug: slug?.trim() || id,
49
+ // Use id when slug is null or empty string
50
+ // ------------------------------------------------------------------------
51
+ // relations
52
+ // ------------------------------------------------------------------------
53
+ // Admin
54
+ author: connectOne(author),
55
+ // Post
56
+ topic: connectOne(topicId ? { id: topicId } : null),
57
+ parents: connectMany(parents),
58
+ tags: connectMany(tags),
59
+ relatedPosts: connectMany(relatedPosts),
60
+ // File
61
+ coverImage: connectOne(coverImage),
62
+ contentImages: connectMany(contentImageIds.map((id2) => ({ id: id2 }))),
63
+ // ------------------------------------------------------------------------
64
+ // --- custom fields
65
+ // ------------------------------------------------------------------------
66
+ // multi images
67
+ files1: connectMany(files1),
68
+ files2: connectMany(files2),
69
+ // single images
70
+ file1: connectOne(file1),
71
+ file2: connectOne(file2),
72
+ file3: connectOne(file3),
73
+ file4: connectOne(file4),
74
+ // ------------------------------------------------------------------------
75
+ // translation
76
+ // ------------------------------------------------------------------------
77
+ translations: { create: translations }
78
+ };
79
+ }
80
+
81
+ export { createPostCreateData };
@@ -0,0 +1,86 @@
1
+ import { updateOne, updateMany } from '../../utils/connect.js';
2
+
3
+ function createPostUpdateData({
4
+ id,
5
+ type,
6
+ params
7
+ }) {
8
+ const {
9
+ slug,
10
+ // ------------------------------------
11
+ // relations
12
+ // ------------------------------------
13
+ // Admin
14
+ author,
15
+ // Post
16
+ topicId,
17
+ parents,
18
+ tags,
19
+ relatedPosts,
20
+ // File
21
+ coverImage,
22
+ contentImageIds,
23
+ // ------------------------------------
24
+ // --- custom fields
25
+ // ------------------------------------
26
+ // multi images
27
+ files1,
28
+ files2,
29
+ // single images
30
+ file1,
31
+ file2,
32
+ file3,
33
+ file4,
34
+ // ------------------------------------
35
+ // translation
36
+ // ------------------------------------
37
+ translations,
38
+ // rest
39
+ ...rest
40
+ } = params;
41
+ return {
42
+ ...rest,
43
+ type,
44
+ // ------------------------------------------------------------------------
45
+ // states
46
+ // ------------------------------------------------------------------------
47
+ slug: slug?.trim() || id,
48
+ // Use id when slug is null or empty string
49
+ // ------------------------------------------------------------------------
50
+ // relations
51
+ // ------------------------------------------------------------------------
52
+ // Admin
53
+ author: updateOne(author),
54
+ // Post
55
+ topic: updateOne(topicId ? { id: topicId } : null),
56
+ parents: updateMany(parents),
57
+ tags: updateMany(tags),
58
+ relatedPosts: updateMany(relatedPosts),
59
+ // File
60
+ coverImage: updateOne(coverImage),
61
+ contentImages: updateMany(contentImageIds.map((id2) => ({ id: id2 }))),
62
+ // ------------------------------------------------------------------------
63
+ // --- custom fields
64
+ // ------------------------------------------------------------------------
65
+ // multi images
66
+ files1: updateMany(files1),
67
+ files2: updateMany(files2),
68
+ // single images
69
+ file1: updateOne(file1),
70
+ file2: updateOne(file2),
71
+ file3: updateOne(file3),
72
+ file4: updateOne(file4),
73
+ // ------------------------------------------------------------------------
74
+ // translation
75
+ // ------------------------------------------------------------------------
76
+ translations: {
77
+ upsert: translations.map((t) => ({
78
+ where: { postId_locale: { postId: id, locale: t.locale } },
79
+ update: t,
80
+ create: t
81
+ }))
82
+ }
83
+ };
84
+ }
85
+
86
+ export { createPostUpdateData };
@@ -0,0 +1,9 @@
1
+ import { EN_US } from './en-US/index.js';
2
+ import { ZH_TW } from './zh-TW/index.js';
3
+
4
+ const coreServerMessages = {
5
+ "en-US": EN_US,
6
+ "zh-TW": ZH_TW
7
+ };
8
+
9
+ export { coreServerMessages };
@@ -1,7 +1,7 @@
1
1
  import { getTranslator } from 'intor/next/server';
2
2
  import pLimit from 'p-limit';
3
- import '../../../../../../../domain/resources/admin/constants.js';
4
3
  import { isFileLocked } from '../../../../../../../domain/resources/file/utils/is-file-locked.js';
4
+ import 'sitero-domain';
5
5
  import { ServerError } from '../../../../../../server-error.js';
6
6
  import { filePurgeManyValidator } from './file-purge-many-validator.js';
7
7
 
@@ -1,6 +1,6 @@
1
1
  import { getTranslator } from 'intor/next/server';
2
- import '../../../../../../../domain/resources/admin/constants.js';
3
2
  import { isFileLocked } from '../../../../../../../domain/resources/file/utils/is-file-locked.js';
3
+ import 'sitero-domain';
4
4
  import { ServerError } from '../../../../../../server-error.js';
5
5
 
6
6
  function createFileSoftDeleteAction(ctx) {
@@ -1,6 +1,6 @@
1
1
  import { getTranslator } from 'intor/next/server';
2
- import '../../../../../../../domain/resources/admin/constants.js';
3
2
  import { isFileLocked } from '../../../../../../../domain/resources/file/utils/is-file-locked.js';
3
+ import 'sitero-domain';
4
4
  import { ServerError } from '../../../../../../server-error.js';
5
5
  import { fileSoftDeleteManyValidator } from './file-soft-delete-many-validator.js';
6
6
 
@@ -1,6 +1,6 @@
1
1
  import { getTranslator } from 'intor/next/server';
2
- import '../../../../../../../domain/resources/admin/constants.js';
3
2
  import { isFolderLocked } from '../../../../../../../domain/resources/folder/utils/is-folder-locked.js';
3
+ import 'sitero-domain';
4
4
  import { ServerError } from '../../../../../../server-error.js';
5
5
 
6
6
  function createFolderDeleteAction(ctx) {
@@ -1,6 +1,6 @@
1
1
  import { getTranslator } from 'intor/next/server';
2
- import '../../../../../../domain/resources/admin/constants.js';
3
2
  import { ROOT_FOLDER_ID, ROOT_FOLDER } from '../../../../../../domain/resources/constants.js';
3
+ import 'sitero-domain';
4
4
  import { ServerError } from '../../../../../server-error.js';
5
5
 
6
6
  function createFolderFindFullAction(ctx) {
@@ -1,5 +1,5 @@
1
- import '../../../domain/resources/admin/constants.js';
2
1
  import { SIMPLE_UPLOAD_FOLDER_NAME, SIMPLE_UPLOAD_FOLDER_KEY } from '../../../domain/resources/constants.js';
2
+ import 'sitero-domain';
3
3
 
4
4
  function folderSeeder({ prisma }) {
5
5
  async function checkExistence() {
@@ -1,24 +1,64 @@
1
+ import { POST_TYPES } from 'sitero-domain';
1
2
  import 'mime-types';
2
- import 'sitero-domain';
3
3
  import 'clsx';
4
4
  import 'tailwind-merge';
5
5
  import { joinUrl } from '../../../../shared/utils/join-url.js';
6
6
  import 'zod';
7
7
 
8
+ function getCategorySlug(post) {
9
+ return post.parents?.[0]?.slug;
10
+ }
11
+ function getSubcategorySlugs(post) {
12
+ const subcategorySlug = post.parents?.[0]?.slug;
13
+ const categorySlug = post.parents?.[0]?.parents?.[0]?.slug;
14
+ return {
15
+ categorySlug,
16
+ subcategorySlug
17
+ };
18
+ }
8
19
  function createGetPostItems({
9
20
  loadPosts,
10
21
  buildUrlsFromPathname
11
22
  }) {
12
- return async function getPostItems({ topicSlug }) {
23
+ return async function getPostItems({
24
+ topicSlug,
25
+ topics
26
+ }) {
27
+ const topic = topics?.[topicSlug];
28
+ const hasCategory = topic?.roles.includes(POST_TYPES.CATEGORY) ?? false;
29
+ const hasSubcategory = topic?.roles.includes(POST_TYPES.SUBCATEGORY) ?? false;
13
30
  const { posts } = await loadPosts({
14
31
  locale: "",
15
32
  // locale not important here
16
33
  topicSlug,
17
- include: { parents: true }
34
+ include: hasSubcategory ? { parents: { include: { parents: true } } } : { parents: true }
18
35
  });
19
- return posts.filter((p) => p.parents?.[0]?.slug).map((p) => {
20
- const categorySlug = p.parents?.[0]?.slug ?? "";
21
- const pathname = joinUrl("/", topicSlug, categorySlug, p.slug);
36
+ return posts.filter((p) => {
37
+ if (!topic) return getCategorySlug(p);
38
+ if (!hasCategory) return true;
39
+ if (!hasSubcategory) return getCategorySlug(p);
40
+ const { categorySlug, subcategorySlug } = getSubcategorySlugs(p);
41
+ return categorySlug && subcategorySlug;
42
+ }).map((p) => {
43
+ const pathname = (() => {
44
+ if (!topic) {
45
+ return joinUrl("/", topicSlug, getCategorySlug(p) ?? "", p.slug);
46
+ }
47
+ if (!hasCategory) {
48
+ return joinUrl("/", topicSlug, p.slug);
49
+ }
50
+ if (!hasSubcategory) {
51
+ return joinUrl("/", topicSlug, getCategorySlug(p) ?? "", p.slug);
52
+ }
53
+ const { categorySlug, subcategorySlug } = getSubcategorySlugs(p);
54
+ return joinUrl(
55
+ "/",
56
+ topicSlug,
57
+ categorySlug ?? "",
58
+ subcategorySlug ?? "",
59
+ p.slug
60
+ );
61
+ })();
22
62
  const entry = buildUrlsFromPathname(pathname);
23
63
  return {
24
64
  ...entry,
@@ -0,0 +1,34 @@
1
+ import 'mime-types';
2
+ import 'sitero-domain';
3
+ import 'clsx';
4
+ import 'tailwind-merge';
5
+ import { joinUrl } from '../../../../shared/utils/join-url.js';
6
+ import 'zod';
7
+
8
+ function createGetSubcategoryItems({
9
+ loadSubcategories,
10
+ buildUrlsFromPathname
11
+ }) {
12
+ return async function getSubcategoryItems({
13
+ topicSlug,
14
+ categorySlug
15
+ }) {
16
+ const { subcategories } = await loadSubcategories({
17
+ locale: "",
18
+ // locale not important here
19
+ topicSlug,
20
+ ...categorySlug && { categorySlug }
21
+ });
22
+ return subcategories.filter((s) => categorySlug || s.parents?.[0]?.slug).map((s) => {
23
+ const parentSlug = categorySlug ?? s.parents?.[0]?.slug ?? "";
24
+ const url = joinUrl("/", topicSlug, parentSlug, s.slug);
25
+ const entry = buildUrlsFromPathname(url);
26
+ return {
27
+ ...entry,
28
+ lastModified: new Date(s.updatedAt)
29
+ };
30
+ });
31
+ };
32
+ }
33
+
34
+ export { createGetSubcategoryItems };
@@ -14,7 +14,6 @@ import '@keyv/redis';
14
14
  import 'keyv';
15
15
  import '../../core/server/infrastructure/cookie/cookie-service.js';
16
16
  import 'node:crypto';
17
- import '../../core/domain/resources/admin/constants.js';
18
17
  import 'ulid';
19
18
  import 'nodemailer';
20
19
  import '../../core/server/infrastructure/email/template/render-email-template.js';
@@ -12,7 +12,6 @@ import '@keyv/redis';
12
12
  import 'keyv';
13
13
  import '../../../../../../../core/server/infrastructure/cookie/cookie-service.js';
14
14
  import 'node:crypto';
15
- import '../../../../../../../core/domain/resources/admin/constants.js';
16
15
  import 'ulid';
17
16
  import 'nodemailer';
18
17
  import '../../../../../../../core/server/infrastructure/email/template/render-email-template.js';
@@ -12,7 +12,6 @@ import '@keyv/redis';
12
12
  import 'keyv';
13
13
  import '../../../../../../../core/server/infrastructure/cookie/cookie-service.js';
14
14
  import 'node:crypto';
15
- import '../../../../../../../core/domain/resources/admin/constants.js';
16
15
  import 'ulid';
17
16
  import 'nodemailer';
18
17
  import '../../../../../../../core/server/infrastructure/email/template/render-email-template.js';
@@ -5,6 +5,8 @@ import { createInquiryCreateAction } from './actions/resources/inquiry/commands/
5
5
  import { createLoadPage } from './loaders/load-page.js';
6
6
  import { createLoadCategories } from './loaders/load-categories.js';
7
7
  import { createLoadCategory } from './loaders/load-category.js';
8
+ import { createLoadSubcategories } from './loaders/load-subcategories.js';
9
+ import { createLoadSubcategory } from './loaders/load-subcategory.js';
8
10
  import { createLoadPosts } from './loaders/load-posts.js';
9
11
  import { createLoadPost } from './loaders/load-post.js';
10
12
  import { createLoadConfig } from './loaders/load-config.js';
@@ -38,6 +40,8 @@ function createWebInterfaces(input) {
38
40
  loadPage: createLoadPage(ctx),
39
41
  loadCategories: createLoadCategories(ctx),
40
42
  loadCategory: createLoadCategory(ctx),
43
+ loadSubcategories: createLoadSubcategories(ctx),
44
+ loadSubcategory: createLoadSubcategory(ctx),
41
45
  loadPosts: createLoadPosts(ctx),
42
46
  loadPost: createLoadPost(ctx),
43
47
  loadConfig: createLoadConfig(ctx)
@@ -1,3 +1,4 @@
1
+ import { POST_TYPES } from 'sitero-domain';
1
2
  import '../../../../core/server/infrastructure/argon2/argon2-service.js';
2
3
  import '@keyv/redis';
3
4
  import 'keyv';
@@ -5,13 +6,11 @@ import 'intor/next/server';
5
6
  import '../../../../core/server/infrastructure/cookie/cookie-service.js';
6
7
  import 'node:crypto';
7
8
  import { POST_ORDER_BY } from '../../../../core/server/infrastructure/database/constants.js';
8
- import 'sitero-domain';
9
9
  import 'mime-types';
10
10
  import 'clsx';
11
11
  import 'tailwind-merge';
12
12
  import { ensureArray } from '../../../../shared/utils/ensure-array.js';
13
13
  import 'zod';
14
- import '../../../../core/domain/resources/admin/constants.js';
15
14
  import 'ulid';
16
15
  import { POST_LIST_CARD_INCLUDE } from '../../../../core/server/infrastructure/database/post/include.js';
17
16
  import 'nodemailer';
@@ -28,7 +27,10 @@ function createLoadCategories(ctx) {
28
27
  topicSlug,
29
28
  childrenCount
30
29
  }) {
31
- const categoryType = constants.staticTopics[topicSlug]?.categoryType;
30
+ const topic = constants.staticTopics[topicSlug];
31
+ if (!topic?.roles.includes(POST_TYPES.CATEGORY)) {
32
+ return { categories: [] };
33
+ }
32
34
  const include = {
33
35
  children: {
34
36
  where: { isActive: true },
@@ -40,7 +42,7 @@ function createLoadCategories(ctx) {
40
42
  const { items: categories } = await coreServer.interfaces.executions.runAction(
41
43
  () => interfaces.actions.resources.post.findListCards({
42
44
  locale,
43
- type: categoryType ?? null,
45
+ type: POST_TYPES.CATEGORY,
44
46
  topicSlug,
45
47
  isActive: true,
46
48
  // extra children posts