adminizer 4.7.0-build.224 → 5.0.0-build.1

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 (307) hide show
  1. package/Readme.md +2 -1
  2. package/assets/add-De0wyF0A.js +1 -0
  3. package/assets/add-group-CMWybgIR.js +1 -0
  4. package/assets/add-user-BxP23daH.js +1 -0
  5. package/assets/app-CtWuWD5N.css +1 -0
  6. package/assets/app-layout-GYMU2HO1.js +1 -0
  7. package/assets/app.js +45 -50
  8. package/assets/catalog-tImW1BnS.js +6 -0
  9. package/assets/controls/chunks/_commonjsHelpers-C6fGbg64.js +6 -0
  10. package/assets/controls/chunks/index-CjiZ2FIa.js +93 -0
  11. package/assets/controls/chunks/jsx-runtime-jIxVPx5o.js +31 -0
  12. package/assets/controls/chunks/use-appearance-CFLOwiSX.js +38 -0
  13. package/assets/controls/chunks/use-window-size-BXgBKW65.js +19 -0
  14. package/assets/controls/chunks/vanilla-picker-Dg97NL4h.js +529 -0
  15. package/assets/controls/ckeditor.es.js +83683 -0
  16. package/assets/controls/handsontable.css +1 -0
  17. package/assets/controls/handsontable.es.js +70585 -0
  18. package/assets/controls/jsoneditor.css +1 -0
  19. package/assets/controls/jsoneditor.es.js +42082 -0
  20. package/assets/controls/leaflet.css +1 -0
  21. package/assets/controls/leaflet.es.js +10299 -0
  22. package/assets/controls/monaco.es.js +618 -0
  23. package/assets/controls/toast-ui.css +1 -0
  24. package/assets/controls/toast-ui.es.js +41797 -0
  25. package/assets/dashboard-CQ4atH3N.js +3 -0
  26. package/assets/debounce-BMmXVQ06.js +1 -0
  27. package/assets/history-BileQPEi.js +1 -0
  28. package/assets/init-user-8aUohVDq.js +1 -0
  29. package/assets/list-Pz_5mfSq.js +4 -0
  30. package/assets/login-CO4laf6m.js +1 -0
  31. package/assets/manifest.json +66 -602
  32. package/assets/media-manager-BDbpSSjH.js +6 -0
  33. package/assets/media-manager-BZPjl98I.css +1 -0
  34. package/assets/module-CQiOdgZN.js +1 -0
  35. package/assets/notification-BIyv1smE.js +20 -0
  36. package/assets/register-DBYIMXGQ.js +1 -0
  37. package/assets/ru-rYKdQbWF.js +1 -0
  38. package/assets/use-appearance-_EbbjHTh.js +1 -0
  39. package/assets/user-filters-list-Aq8CvCeh.js +1 -0
  40. package/assets/welcome-DxhWYzUL.js +1 -0
  41. package/controllers/add.d.ts +1 -1
  42. package/controllers/addGroup.js +3 -3
  43. package/controllers/addUser.js +3 -3
  44. package/controllers/catalog/Catalog.d.ts +1 -1
  45. package/controllers/catalog/Catalog.js +2 -1
  46. package/controllers/catalog/FrontendCatalogAdapter.d.ts +2 -12
  47. package/controllers/catalog/FrontendCatalogAdapter.js +3 -16
  48. package/controllers/catalog/FrontentCatalogAdapter.d.ts +2 -12
  49. package/controllers/catalog/FrontentCatalogAdapter.js +0 -16
  50. package/controllers/edit.js +6 -11
  51. package/controllers/editGroup.d.ts +1 -1
  52. package/controllers/editGroup.js +3 -3
  53. package/controllers/editUser.d.ts +1 -1
  54. package/controllers/editUser.js +3 -3
  55. package/controllers/feed.js +1 -1
  56. package/controllers/filter-fields/columns.js +1 -1
  57. package/controllers/filter-fields/getAllUserFilters.js +2 -2
  58. package/controllers/filter-fields/groups.js +2 -2
  59. package/controllers/filter-fields/savedFilters.js +1 -1
  60. package/controllers/history-actions/HistoryController.js +1 -1
  61. package/controllers/initUser.js +2 -2
  62. package/controllers/list.d.ts +1 -1
  63. package/controllers/login.d.ts +1 -1
  64. package/controllers/login.js +3 -3
  65. package/controllers/media-manager/ThumbController.js +2 -2
  66. package/controllers/media-manager/mediaManagerApi.js +13 -15
  67. package/controllers/register.d.ts +1 -1
  68. package/controllers/register.js +5 -5
  69. package/controllers/remove.d.ts +1 -1
  70. package/controllers/userApiKey.js +2 -2
  71. package/controllers/view.d.ts +1 -1
  72. package/controllers/view.js +5 -5
  73. package/controllers/widgets/Action.js +5 -2
  74. package/controllers/widgets/filterInfo.js +1 -1
  75. package/files/favicon.png +0 -0
  76. package/helpers/accessRightsHelper.d.ts +6 -4
  77. package/helpers/accessRightsHelper.js +13 -0
  78. package/helpers/diffHelpers.js +1 -1
  79. package/helpers/fieldsHelper.d.ts +1 -1
  80. package/helpers/fieldsHelper.js +8 -4
  81. package/helpers/filterDatetimeHelper.d.ts +1 -1
  82. package/helpers/inertiaAddHelper.d.ts +6 -5
  83. package/helpers/inertiaAddHelper.js +45 -37
  84. package/helpers/inertiaAutHelper.js +5 -5
  85. package/helpers/inertiaGroupHelper.d.ts +4 -4
  86. package/helpers/inertiaMenuHelper.js +1 -1
  87. package/helpers/inertiaUserHelper.d.ts +3 -3
  88. package/helpers/inertiaUserHelper.js +1 -1
  89. package/helpers/menuHelper.d.ts +2 -2
  90. package/index.d.ts +19 -6
  91. package/index.js +19 -6
  92. package/interfaces/adminpanelConfig.d.ts +10 -33
  93. package/interfaces/global.d.ts +10 -15
  94. package/interfaces/listQueryBuilder.d.ts +1 -1
  95. package/lib/Adminizer.d.ts +25 -2
  96. package/lib/Adminizer.js +124 -50
  97. package/lib/DataAccessor.d.ts +9 -5
  98. package/lib/DataAccessor.js +89 -42
  99. package/lib/access-rights/AccessRightsHandler.d.ts +17 -0
  100. package/lib/access-rights/AccessRightsHandler.js +63 -0
  101. package/lib/ai-assistant/AbstractAiModelService.d.ts +5 -8
  102. package/lib/ai-assistant/AbstractAiModelService.js +3 -14
  103. package/lib/ai-assistant/AiAssistantHandler.d.ts +2 -2
  104. package/lib/app-manager/AdminizerApp.d.ts +228 -0
  105. package/lib/app-manager/AdminizerApp.js +17 -0
  106. package/lib/app-manager/AppManager.d.ts +18 -0
  107. package/lib/app-manager/AppManager.js +537 -0
  108. package/lib/app-manager/AssetHandler.d.ts +17 -0
  109. package/lib/app-manager/AssetHandler.js +67 -0
  110. package/lib/app-manager/ConfigLayerHandler.d.ts +18 -0
  111. package/lib/app-manager/ConfigLayerHandler.js +119 -0
  112. package/lib/app-manager/ControllerHandler.d.ts +25 -0
  113. package/lib/app-manager/ControllerHandler.js +140 -0
  114. package/lib/catalog/AbstractCatalog.d.ts +28 -19
  115. package/lib/catalog/AbstractCatalog.js +41 -10
  116. package/lib/catalog/CatalogHandler.d.ts +13 -0
  117. package/lib/catalog/CatalogHandler.js +48 -2
  118. package/lib/catalog/CatalogTemplateComponentHandler.d.ts +23 -0
  119. package/lib/catalog/CatalogTemplateComponentHandler.js +59 -0
  120. package/lib/controls/Control.d.ts +17 -0
  121. package/lib/controls/Control.js +1 -0
  122. package/lib/controls/ControlsHandler.d.ts +5 -6
  123. package/lib/controls/ControlsHandler.js +0 -13
  124. package/lib/controls/codeEditor/MonacoEditor.d.ts +3 -4
  125. package/lib/controls/codeEditor/MonacoEditor.js +13 -8
  126. package/lib/controls/geojsoneditor/GeoEditor.d.ts +3 -4
  127. package/lib/controls/geojsoneditor/GeoEditor.js +14 -9
  128. package/lib/controls/jsoneditor/JsonEditor.d.ts +5 -6
  129. package/lib/controls/jsoneditor/JsonEditor.js +14 -13
  130. package/lib/controls/markdown/ToastUiEditor.d.ts +5 -6
  131. package/lib/controls/markdown/ToastUiEditor.js +14 -13
  132. package/lib/controls/table/Handsontable.d.ts +5 -6
  133. package/lib/controls/table/Handsontable.js +14 -13
  134. package/lib/controls/wysiwyg/CKeditor.d.ts +5 -6
  135. package/lib/controls/wysiwyg/CKeditor.js +14 -13
  136. package/lib/filters/ConditionValidator.d.ts +1 -1
  137. package/lib/filters/FilterService.d.ts +18 -18
  138. package/lib/filters/FilterService.js +11 -11
  139. package/lib/history-actions/AbstractHistoryAdapter.d.ts +14 -14
  140. package/lib/history-actions/AbstractHistoryAdapter.js +5 -6
  141. package/lib/history-actions/DefaultHistoryAdapter.d.ts +7 -7
  142. package/lib/history-actions/DefaultHistoryAdapter.js +2 -2
  143. package/lib/list-query-builder/ListQueryBuilder.d.ts +1 -1
  144. package/lib/media-manager/AbstractMediaManager.d.ts +14 -3
  145. package/lib/media-manager/AbstractMediaManager.js +16 -5
  146. package/lib/media-manager/MediaManagerHandler.d.ts +3 -0
  147. package/lib/media-manager/MediaManagerHandler.js +30 -5
  148. package/lib/media-manager/Thumb.js +7 -13
  149. package/lib/media-manager/helpers/MediaManagerHelper.d.ts +6 -4
  150. package/lib/media-manager/helpers/MediaManagerHelper.js +18 -18
  151. package/lib/model/AbstractModel.d.ts +9 -5
  152. package/lib/model/AbstractModel.js +9 -13
  153. package/lib/model/InternalModelAccessFactory.js +9 -10
  154. package/lib/model/ModelHandler.d.ts +45 -7
  155. package/lib/model/ModelHandler.js +168 -11
  156. package/lib/model/adapter/sequelize.d.ts +2 -4
  157. package/lib/model/adapter/sequelize.js +16 -193
  158. package/lib/model/adapter/typeorm.d.ts +2 -4
  159. package/lib/model/adapter/typeorm.js +2 -35
  160. package/lib/notifications/AbstractNotificationService.d.ts +9 -9
  161. package/lib/notifications/AbstractNotificationService.js +8 -8
  162. package/lib/notifications/GeneralNotificationService.js +1 -1
  163. package/lib/notifications/SystemNotificationService.js +1 -1
  164. package/lib/ui-i18n/uiTranslationKeys.d.ts +1 -1
  165. package/lib/ui-i18n/uiTranslationKeys.js +1 -0
  166. package/lib/widgets/abstractCustom.d.ts +5 -2
  167. package/lib/widgets/abstractCustom.js +4 -0
  168. package/lib/widgets/widgetHandler.d.ts +5 -2
  169. package/lib/widgets/widgetHandler.js +60 -14
  170. package/models/{FilterAP.d.ts → Filter.d.ts} +4 -70
  171. package/models/Filter.js +1 -0
  172. package/models/FilterColumn.d.ts +10 -0
  173. package/models/FilterColumn.js +1 -0
  174. package/models/Group.d.ts +8 -0
  175. package/models/Group.js +1 -0
  176. package/models/HistoryActions.d.ts +14 -0
  177. package/models/HistoryActions.js +1 -0
  178. package/models/MediaManagerAP.d.ts +2 -54
  179. package/models/MediaManagerAP.js +1 -51
  180. package/models/MediaManagerAssociationsAP.d.ts +1 -35
  181. package/models/MediaManagerAssociationsAP.js +1 -33
  182. package/models/MediaManagerMetaAP.d.ts +2 -30
  183. package/models/MediaManagerMetaAP.js +1 -27
  184. package/models/Notification.d.ts +13 -0
  185. package/models/Notification.js +1 -0
  186. package/models/User.d.ts +23 -0
  187. package/models/User.js +1 -0
  188. package/models/UserNotification.d.ts +7 -0
  189. package/models/UserNotification.js +1 -0
  190. package/package.json +25 -30
  191. package/services/FeedService.d.ts +5 -5
  192. package/services/FeedService.js +1 -1
  193. package/system/Router.js +2 -10
  194. package/system/bindAccessRights.js +1 -1
  195. package/system/bindAuthorization.js +2 -2
  196. package/system/bindControls.js +7 -6
  197. package/system/bindDashboardWidgets.js +3 -2
  198. package/system/bindDev.js +1 -1
  199. package/system/bindHistory.d.ts +1 -1
  200. package/system/bindHistory.js +1 -1
  201. package/system/bindInertia.js +0 -6
  202. package/system/bindMediaManager.js +4 -17
  203. package/system/bindNotifications.d.ts +1 -1
  204. package/system/bindNotifications.js +1 -1
  205. package/system/bindReqFunctions.d.ts +1 -0
  206. package/system/bindReqFunctions.js +20 -3
  207. package/system/buildInternalModelAccess.js +2 -15
  208. package/system/defaults.js +5 -10
  209. package/system/systemModelContracts.d.ts +22 -0
  210. package/system/systemModelContracts.js +155 -0
  211. package/system/validateSystemModels.d.ts +2 -0
  212. package/system/validateSystemModels.js +101 -0
  213. package/translations/ar.json +2 -1
  214. package/translations/cn.json +2 -1
  215. package/translations/de.json +2 -1
  216. package/translations/en.json +1 -0
  217. package/translations/es.json +2 -1
  218. package/translations/fr.json +2 -1
  219. package/translations/hi.json +2 -1
  220. package/translations/jp.json +2 -1
  221. package/translations/ko.json +2 -1
  222. package/translations/pt.json +2 -1
  223. package/translations/ru.json +2 -1
  224. package/translations/ua.json +2 -1
  225. package/translations/uz.json +2 -1
  226. package/translations/vi.json +2 -1
  227. package/assets/RelationDialogStack-DhThUMep.js +0 -20
  228. package/assets/add-group-L8lMigab.js +0 -1
  229. package/assets/add-group-form-o7F6t6qW.js +0 -1
  230. package/assets/add-user-BE4-TNJw.js +0 -1
  231. package/assets/add-user-form-BP_8TjxN.js +0 -1
  232. package/assets/add-w398ZkhF.js +0 -1
  233. package/assets/app-C7J5ccrI.css +0 -1
  234. package/assets/app-layout-Bg455MIY.js +0 -1
  235. package/assets/app-shell-BT2kF0We.js +0 -1
  236. package/assets/app-sidebar-CZfPUXck.js +0 -1
  237. package/assets/app-sidebar-header-UVcKhNm6.js +0 -1
  238. package/assets/breadcrumbs-CrqIBT84.js +0 -1
  239. package/assets/catalog-btkCCwiv.js +0 -6
  240. package/assets/dashboard-Bvasc1cr.js +0 -3
  241. package/assets/date-picker-kxQWOxHk.js +0 -1
  242. package/assets/del-modal-C39LR5aQ.js +0 -1
  243. package/assets/dynamic-controls-DyPP5sTC.js +0 -1
  244. package/assets/geo-json-CGNQFl6J.js +0 -1
  245. package/assets/handsontable-Dv59QFH5.js +0 -336
  246. package/assets/history-DwKR8MPu.js +0 -1
  247. package/assets/home-BrtAkCRj.js +0 -2
  248. package/assets/icon-DpUVVHmK.js +0 -1
  249. package/assets/init-user-8PiKR1zX.js +0 -1
  250. package/assets/input-error-Cbt-Y3Fj.js +0 -1
  251. package/assets/jsoneditor-CiPXPMho.js +0 -3869
  252. package/assets/list-DGsL_qii.js +0 -4
  253. package/assets/login-Br_FcBU_.js +0 -1
  254. package/assets/material-icon-DOkM71fv.js +0 -1
  255. package/assets/module-EgfgIEhF.js +0 -1
  256. package/assets/monaco-ompgKQ3_.js +0 -11
  257. package/assets/nav-footer-DzLwfBAE.js +0 -1
  258. package/assets/nav-main-CSEbjYgs.js +0 -1
  259. package/assets/nav-user-DJ0hfhfH.js +0 -1
  260. package/assets/notification-B19ZLro7.js +0 -20
  261. package/assets/pagination-render-8GvJxq55.js +0 -1
  262. package/assets/register-CZzIeT2G.js +0 -1
  263. package/assets/ru-1NdRIQNV.js +0 -1
  264. package/assets/theme-switcher-CBbEj1u-.js +0 -1
  265. package/assets/toast-editor-DwVqd1rz.js +0 -668
  266. package/assets/user-filters-list-7Im79QyS.js +0 -1
  267. package/assets/user-info-YiU17Mmy.js +0 -1
  268. package/assets/user-menu-content-gdpNF5-8.js +0 -1
  269. package/assets/vanilla-picker-B3LgXoKV.js +0 -2
  270. package/assets/vendor-l0sNRNKZ.js +0 -1
  271. package/assets/welcome-nT0eFWHb.js +0 -1
  272. package/controllers/navigation/edit.d.ts +0 -1
  273. package/controllers/navigation/edit.js +0 -8
  274. package/lib/ai-assistant/DummyAiModelService.d.ts +0 -8
  275. package/lib/ai-assistant/DummyAiModelService.js +0 -14
  276. package/lib/ai-assistant/OpenAiModelService.d.ts +0 -24
  277. package/lib/ai-assistant/OpenAiModelService.js +0 -184
  278. package/lib/catalog/Navigation.d.ts +0 -49
  279. package/lib/catalog/Navigation.js +0 -492
  280. package/lib/controls/AbstractControls.d.ts +0 -30
  281. package/lib/controls/AbstractControls.js +0 -14
  282. package/lib/media-manager/DefaultMediaManager.d.ts +0 -20
  283. package/lib/media-manager/DefaultMediaManager.js +0 -127
  284. package/lib/media-manager/Items.d.ts +0 -50
  285. package/lib/media-manager/Items.js +0 -296
  286. package/models/FilterAP.js +0 -68
  287. package/models/FilterColumnAP.d.ts +0 -32
  288. package/models/FilterColumnAP.js +0 -21
  289. package/models/GroupAP.d.ts +0 -31
  290. package/models/GroupAP.js +0 -22
  291. package/models/HistoryActionsAP.d.ts +0 -56
  292. package/models/HistoryActionsAP.js +0 -42
  293. package/models/NavigationAP.d.ts +0 -22
  294. package/models/NavigationAP.js +0 -16
  295. package/models/NotificationAP.d.ts +0 -44
  296. package/models/NotificationAP.js +0 -30
  297. package/models/UserAP.d.ts +0 -81
  298. package/models/UserAP.js +0 -57
  299. package/models/UserNotificationAP.d.ts +0 -26
  300. package/models/UserNotificationAP.js +0 -18
  301. package/system/bindAiAssistant.d.ts +0 -2
  302. package/system/bindAiAssistant.js +0 -30
  303. package/system/bindModels.d.ts +0 -2
  304. package/system/bindModels.js +0 -48
  305. package/system/bindNavigation.d.ts +0 -2
  306. package/system/bindNavigation.js +0 -38
  307. /package/assets/{RelationDialogStack-B00Ot5qS.css → controls/ckeditor.css} +0 -0
@@ -1,50 +0,0 @@
1
- import { File, MediaFileType, MediaManagerItem, SortCriteria, UploaderFile } from "./AbstractMediaManager";
2
- import sharp from "sharp";
3
- import { Adminizer } from "../Adminizer";
4
- export declare class ImageItem extends File<MediaManagerItem> {
5
- type: MediaFileType;
6
- model: string;
7
- metaModel: string;
8
- modelAssoc: string;
9
- imageSizes: any;
10
- protected readonly adminizer: Adminizer;
11
- constructor(adminizer: Adminizer, urlPathPrefix: string, fileStoragePath: string);
12
- protected mediaModel(): import("../..").InternalModelRepository<MediaManagerItem>;
13
- protected metaRepository(): import("../..").InternalModelRepository<any>;
14
- protected associationModel(): import("../..").InternalModelRepository<any>;
15
- getItems(limit: number, skip: number, sort: SortCriteria, group: string): Promise<{
16
- data: MediaManagerItem[];
17
- next: boolean;
18
- }>;
19
- search(s: string, group: string): Promise<MediaManagerItem[]>;
20
- upload(file: UploaderFile, filename: string, origFileName: string, group: string): Promise<MediaManagerItem[]>;
21
- getVariants(id: string): Promise<MediaManagerItem[]>;
22
- protected createVariants(file: UploaderFile, parent: MediaManagerItem, filename: string, group: string): Promise<void>;
23
- getOrigin(id: string): Promise<string>;
24
- getFile(id: number | string): Promise<MediaManagerItem>;
25
- protected createMeta(id: string): Promise<void>;
26
- protected addFileMeta(file: string, id: string): Promise<void>;
27
- getMeta(id: string): Promise<{
28
- key: string;
29
- value: string;
30
- }[]>;
31
- setMeta(id: string, data: {
32
- [p: string]: string;
33
- }): Promise<void>;
34
- protected resizeImage(input: string, output: string, width: number, height: number): Promise<sharp.OutputInfo>;
35
- uploadVariant(parent: MediaManagerItem, file: UploaderFile, filename: string, group: string, localeId: string): Promise<MediaManagerItem>;
36
- delete(id: string): Promise<boolean>;
37
- }
38
- export declare class TextItem extends ImageItem {
39
- type: MediaFileType;
40
- upload(file: UploaderFile, filename: string, origFileName: string, group: string): Promise<MediaManagerItem[]>;
41
- getvariants(): Promise<MediaManagerItem[]>;
42
- uploadVariant(parent: MediaManagerItem, file: UploaderFile, filename: string, group: string, localeId: string): Promise<MediaManagerItem>;
43
- getVariants(id: string): Promise<MediaManagerItem[]>;
44
- }
45
- export declare class ApplicationItem extends TextItem {
46
- type: MediaFileType;
47
- }
48
- export declare class VideoItem extends TextItem {
49
- type: MediaFileType;
50
- }
@@ -1,296 +0,0 @@
1
- import { File } from "./AbstractMediaManager.js";
2
- import { populateVariants, randomFileName } from "./helpers/MediaManagerHelper.js";
3
- import sizeOf from "image-size";
4
- import sharp from "sharp";
5
- import * as fs from 'fs';
6
- import * as path from 'path';
7
- import * as process from "node:process";
8
- export class ImageItem extends File {
9
- type = "image";
10
- model = "mediamanagerap";
11
- metaModel = "mediamanagermetaap";
12
- modelAssoc = "mediamanagerassociationsap";
13
- imageSizes;
14
- adminizer;
15
- constructor(adminizer, urlPathPrefix, fileStoragePath) {
16
- super(urlPathPrefix, fileStoragePath);
17
- this.imageSizes = adminizer.config.mediamanager.imageSizes || {};
18
- this.adminizer = adminizer;
19
- }
20
- mediaModel() {
21
- return this.adminizer.modelHandler.internal("media-manager").get(this.model);
22
- }
23
- metaRepository() {
24
- return this.adminizer.modelHandler.internal("media-manager").get(this.metaModel);
25
- }
26
- associationModel() {
27
- return this.adminizer.modelHandler.internal("media-manager").get(this.modelAssoc);
28
- }
29
- async getItems(limit, skip, sort, group) {
30
- let data = await this.mediaModel().find({
31
- where: { parent: null, mimeType: { contains: this.type }, group: group },
32
- limit: limit,
33
- skip: skip,
34
- sort: sort,
35
- populate: {
36
- variants: { sort: sort },
37
- meta: true
38
- }
39
- });
40
- let next = await this.mediaModel().find({
41
- where: { parent: null, mimeType: { contains: this.type }, group: group },
42
- limit: limit,
43
- skip: skip === 0 ? limit : skip + limit,
44
- sort: sort,
45
- });
46
- for (let elem of data) {
47
- elem.variants = await populateVariants(this.adminizer, elem.variants, this.model);
48
- }
49
- return {
50
- data: data,
51
- next: !!next.length,
52
- };
53
- }
54
- async search(s, group) {
55
- let data = await this.mediaModel().find({
56
- where: { filename: { contains: s }, mimeType: { contains: this.type }, parent: null, group: group },
57
- sort: "createdAt DESC",
58
- populate: {
59
- variants: { sort: "createdAt DESC" }
60
- }
61
- });
62
- for (let elem of data) {
63
- elem.variants = await populateVariants(this.adminizer, elem.variants, this.model);
64
- }
65
- return data;
66
- }
67
- async upload(file, filename, origFileName, group) {
68
- let parent = await this.mediaModel().create({
69
- parent: null,
70
- mimeType: file.mimetype,
71
- size: file.size,
72
- path: `${this.fileStoragePath}/${this.urlPathPrefix}/${filename}`,
73
- group: group,
74
- tag: "origin",
75
- filename: origFileName,
76
- url: `/${this.urlPathPrefix}/${filename}`,
77
- });
78
- await this.createMeta(parent.id);
79
- await this.addFileMeta(file.path, parent.id);
80
- // create file variants
81
- if (Object.keys(this.imageSizes).length && file.mimetype !== 'image/svg+xml') {
82
- await this.createVariants(file, parent, filename, group);
83
- }
84
- const item = await this.mediaModel().findOne({ where: { id: parent.id } });
85
- item.variants = await populateVariants(this.adminizer, item.variants, this.model);
86
- return [item];
87
- }
88
- async getVariants(id) {
89
- let items = ((await this.mediaModel().find({
90
- where: { id: id },
91
- populate: {
92
- variants: { sort: "createdAt DESC" }
93
- }
94
- }))[0]).variants;
95
- return (await populateVariants(this.adminizer, items, this.model));
96
- }
97
- async createVariants(file, parent, filename, group) {
98
- for (const sizeKey of Object.keys(this.imageSizes)) {
99
- let sizeName = randomFileName(filename, sizeKey, false);
100
- let { width, height } = this.imageSizes[sizeKey];
101
- const buffer = fs.readFileSync(file.path);
102
- const image = sizeOf(buffer);
103
- if (image.width < width || image.height < height)
104
- continue;
105
- const output = `${this.fileStoragePath}/${this.urlPathPrefix}/${sizeName}`;
106
- let newFile = await this.resizeImage(file.path, output, width, height);
107
- let newSize = await this.mediaModel().create({
108
- parent: parent.id,
109
- mimeType: parent.mimeType,
110
- size: newFile.size,
111
- filename: parent.filename,
112
- group: group,
113
- path: output,
114
- tag: `saze:${sizeKey}`,
115
- url: `/${this.urlPathPrefix}/${sizeName}`,
116
- });
117
- await this.addFileMeta(output, newSize.id);
118
- }
119
- }
120
- async getOrigin(id) {
121
- return (await this.mediaModel().findOne({ where: { id: id } })).path;
122
- }
123
- async getFile(id) {
124
- let item = await this.mediaModel().findOne({ where: { id: String(id) } });
125
- item.variants = await populateVariants(this.adminizer, item.variants, this.model);
126
- return item;
127
- }
128
- async createMeta(id) {
129
- //create empty meta
130
- let metaData = {
131
- author: "",
132
- description: "",
133
- title: "",
134
- };
135
- for (const key of Object.keys(metaData)) {
136
- await this.metaRepository().create({
137
- key: key,
138
- value: metaData[key],
139
- parent: id,
140
- isPublic: true
141
- });
142
- }
143
- }
144
- async addFileMeta(file, id) {
145
- const metaBuffer = fs.readFileSync(file);
146
- await this.metaRepository().create({
147
- key: 'imageSizes',
148
- value: sizeOf(metaBuffer),
149
- parent: id,
150
- isPublic: false
151
- });
152
- }
153
- // TODO {where: {isPublic: true}, sort: "id ASC"} ???
154
- async getMeta(id) {
155
- return ((await this.mediaModel().find({
156
- where: { id: id },
157
- populate: {
158
- meta: { where: { isPublic: true } }
159
- }
160
- }))[0]).meta;
161
- }
162
- async setMeta(id, data) {
163
- for (const key of Object.keys(data)) {
164
- await this.metaRepository().update({ where: { parent: id, key: key } }, { value: data[key] });
165
- }
166
- }
167
- async resizeImage(input, output, width, height) {
168
- // Get the directory from the output path
169
- const outputDir = `${process.cwd()}/${path.dirname(output)}`;
170
- // Check if the directory exists, and create it if it doesn't
171
- if (!fs.existsSync(outputDir)) {
172
- fs.mkdirSync(outputDir, { recursive: true });
173
- }
174
- // Resize the image and save it to the output path
175
- return await sharp(input)
176
- .resize({ width: width, height: height })
177
- .toFile(output);
178
- }
179
- async uploadVariant(parent, file, filename, group, localeId) {
180
- const variantBuffer = fs.readFileSync(file.path);
181
- const { width, height } = sizeOf(variantBuffer);
182
- let item = await this.mediaModel().create({
183
- parent: parent.id,
184
- mimeType: file.mimetype,
185
- size: file.size,
186
- path: file.path,
187
- group: group,
188
- tag: localeId ? `loc:${localeId}` : `size:${width}x${height}`,
189
- filename: parent.filename,
190
- url: `/${this.urlPathPrefix}/${filename}`,
191
- });
192
- await this.addFileMeta(file.path, item.id);
193
- return (await this.mediaModel().findOne({ where: { id: item.id } }));
194
- }
195
- async delete(id) {
196
- const fieldName = this.adminizer.ormAdapters[0].ormType === 'sequelize' ? 'fileId' : 'file';
197
- const assoc = await this.associationModel().find({ where: { [fieldName]: id } });
198
- if (assoc.length) {
199
- return Promise.resolve(false);
200
- }
201
- const criteria = { where: { id: id } };
202
- let record = await this.mediaModel().findOne(criteria);
203
- await beforeDestroy(this.adminizer, criteria);
204
- await this.mediaModel().destroy({ where: { id: id } });
205
- await deleteFile(record.path);
206
- // Delete all variants
207
- if (record.variants.length) {
208
- for (const variant of record.variants) {
209
- await deleteFile(variant.path);
210
- }
211
- }
212
- return Promise.resolve(true);
213
- }
214
- }
215
- /*
216
- * Text item
217
- */
218
- export class TextItem extends ImageItem {
219
- type = "text";
220
- async upload(file, filename, origFileName, group) {
221
- let parent = await this.mediaModel().create({
222
- parent: null,
223
- mimeType: file.mimetype,
224
- size: file.size,
225
- path: `${this.fileStoragePath}/${filename}`,
226
- group: group,
227
- filename: origFileName,
228
- tag: "origin",
229
- url: `/${this.urlPathPrefix}/${filename}`,
230
- });
231
- await this.createMeta(parent.id);
232
- const item = await this.mediaModel().findOne({ where: { id: parent.id } });
233
- item.variants = await populateVariants(this.adminizer, item.variants, this.model);
234
- return [item];
235
- }
236
- getvariants() {
237
- return Promise.resolve([]);
238
- }
239
- async uploadVariant(parent, file, filename, group, localeId) {
240
- let variants = parent.variants.filter(e => /^loc:/.test(e.tag) === false);
241
- let item = await this.mediaModel().create({
242
- parent: parent.id,
243
- mimeType: file.mimetype,
244
- size: file.size,
245
- path: file.path,
246
- group: group,
247
- tag: localeId ? `loc:${localeId}` : `ver: ${variants.length + 1}`,
248
- filename: parent.filename,
249
- url: `/${this.urlPathPrefix}/${filename}`,
250
- });
251
- return (await this.mediaModel().findOne({ where: { id: item.id } }));
252
- }
253
- async getVariants(id) {
254
- let items = ((await this.mediaModel().find({
255
- where: { id: id },
256
- populate: {
257
- variants: { sort: "createdAt DESC" }
258
- }
259
- }))[0]).variants;
260
- return (await populateVariants(this.adminizer, items, this.model));
261
- }
262
- }
263
- export class ApplicationItem extends TextItem {
264
- type = "application";
265
- }
266
- export class VideoItem extends TextItem {
267
- type = "video";
268
- }
269
- async function beforeDestroy(adminizer, criteria) {
270
- const mediaModel = adminizer.modelHandler.internal("media-manager").get("MediaManagerAP");
271
- const metaModel = adminizer.modelHandler.internal("media-manager").get("MediaManagerMetaAP");
272
- let parent = (await mediaModel.find(criteria))[0];
273
- let meta = parent.meta;
274
- for (const metaElement of meta) {
275
- await metaModel.destroy({ where: { id: metaElement.id } });
276
- }
277
- let variants = (await mediaModel.find(criteria))[0].variants;
278
- for (const child of variants) {
279
- await mediaModel.destroy({ where: { id: child.id } });
280
- }
281
- }
282
- async function deleteFile(file) {
283
- try {
284
- await fs.promises.access(file);
285
- await fs.promises.unlink(file);
286
- }
287
- catch (err) {
288
- if (err.code === 'ENOENT') {
289
- }
290
- else if (err.code === 'EPERM') {
291
- }
292
- else {
293
- console.error(`An error occurred: ${err}`);
294
- }
295
- }
296
- }
@@ -1,68 +0,0 @@
1
- /**
2
- * Filter model schema
3
- */
4
- export default {
5
- id: {
6
- type: "string",
7
- primaryKey: true
8
- // UUID will be generated before create
9
- },
10
- name: {
11
- type: "string",
12
- required: true
13
- },
14
- description: {
15
- type: "string"
16
- },
17
- modelName: {
18
- type: "string",
19
- required: true
20
- },
21
- conditions: {
22
- type: "json"
23
- },
24
- sortField: {
25
- type: "string"
26
- },
27
- sortDirection: {
28
- type: "string"
29
- // 'ASC' or 'DESC'
30
- },
31
- visibility: {
32
- type: "string"
33
- // 'private' | 'public' | 'groups' | 'system'
34
- },
35
- ownerId: {
36
- type: "number"
37
- },
38
- groupIds: {
39
- type: "json"
40
- },
41
- apiEnabled: {
42
- type: "boolean"
43
- },
44
- apiKey: {
45
- type: "string"
46
- },
47
- icon: {
48
- type: "string"
49
- },
50
- color: {
51
- type: "string"
52
- },
53
- version: {
54
- type: "number"
55
- },
56
- columns: {
57
- collection: "FilterColumnAP",
58
- via: "filter"
59
- },
60
- createdAt: {
61
- type: 'datetime',
62
- autoCreatedAt: true
63
- },
64
- updatedAt: {
65
- type: 'datetime',
66
- autoUpdatedAt: true
67
- }
68
- };
@@ -1,32 +0,0 @@
1
- import { FilterAP } from "./FilterAP";
2
- /**
3
- * FilterColumnAP model schema
4
- * Represents column configuration for a filter
5
- */
6
- declare const _default: {
7
- id: {
8
- type: string;
9
- autoIncrement: boolean;
10
- primaryKey: boolean;
11
- };
12
- filter: {
13
- model: string;
14
- };
15
- fieldName: {
16
- type: string;
17
- required: boolean;
18
- };
19
- order: {
20
- type: string;
21
- };
22
- };
23
- export default _default;
24
- /**
25
- * FilterColumnAP interface for TypeScript
26
- */
27
- export interface FilterColumnAP {
28
- id?: number;
29
- filter: string | FilterAP;
30
- fieldName: string;
31
- order: number;
32
- }
@@ -1,21 +0,0 @@
1
- /**
2
- * FilterColumnAP model schema
3
- * Represents column configuration for a filter
4
- */
5
- export default {
6
- id: {
7
- type: "number",
8
- autoIncrement: true,
9
- primaryKey: true
10
- },
11
- filter: {
12
- model: 'FilterAP'
13
- },
14
- fieldName: {
15
- type: "string",
16
- required: true
17
- },
18
- order: {
19
- type: "number"
20
- }
21
- };
@@ -1,31 +0,0 @@
1
- import { UserAP } from "./UserAP";
2
- declare const _default: {
3
- id: {
4
- type: string;
5
- autoIncrement: boolean;
6
- primaryKey: boolean;
7
- };
8
- name: {
9
- type: string;
10
- required: boolean;
11
- unique: boolean;
12
- };
13
- description: {
14
- type: string;
15
- };
16
- tokens: {
17
- type: string;
18
- };
19
- users: {
20
- collection: string;
21
- via: string;
22
- };
23
- };
24
- export default _default;
25
- export interface GroupAP {
26
- id?: number;
27
- name: string;
28
- description?: string;
29
- tokens?: string[];
30
- users?: UserAP[];
31
- }
package/models/GroupAP.js DELETED
@@ -1,22 +0,0 @@
1
- export default {
2
- id: {
3
- type: "number",
4
- autoIncrement: true,
5
- primaryKey: true
6
- },
7
- name: {
8
- type: "string",
9
- required: true,
10
- unique: true
11
- },
12
- description: {
13
- type: "string"
14
- },
15
- tokens: {
16
- type: "json"
17
- },
18
- users: {
19
- collection: "UserAP",
20
- via: "groups"
21
- }
22
- };
@@ -1,56 +0,0 @@
1
- import { UserAP } from "./UserAP";
2
- declare const _default: {
3
- id: {
4
- type: string;
5
- autoIncrement: boolean;
6
- primaryKey: boolean;
7
- };
8
- modelId: {
9
- type: string;
10
- required: boolean;
11
- };
12
- modelName: {
13
- type: string;
14
- required: boolean;
15
- };
16
- action: {
17
- type: string;
18
- };
19
- data: {
20
- type: string;
21
- };
22
- diff: {
23
- type: string;
24
- };
25
- user: {
26
- model: string;
27
- };
28
- isCurrent: {
29
- type: string;
30
- };
31
- createdAt: {
32
- type: string;
33
- autoCreatedAt: boolean;
34
- };
35
- updatedAt: {
36
- type: string;
37
- autoUpdatedAt: boolean;
38
- };
39
- preview: {
40
- type: string;
41
- };
42
- };
43
- export default _default;
44
- export interface HistoryActionsAP {
45
- id?: number;
46
- modelId: number | string;
47
- modelName: string;
48
- action: string;
49
- data: any;
50
- diff: any;
51
- user: UserAP;
52
- isCurrent: boolean;
53
- createdAt?: number;
54
- updatedAt?: number;
55
- preview: boolean;
56
- }
@@ -1,42 +0,0 @@
1
- export default {
2
- id: {
3
- type: "number",
4
- autoIncrement: true,
5
- primaryKey: true
6
- },
7
- modelId: {
8
- type: "string",
9
- required: true
10
- },
11
- modelName: {
12
- type: "string",
13
- required: true
14
- },
15
- action: {
16
- type: "string",
17
- },
18
- // here stored raw data foreach history-action better to store as incremental binary data
19
- data: {
20
- type: "json",
21
- },
22
- diff: {
23
- type: "json",
24
- },
25
- user: {
26
- model: 'UserAP'
27
- },
28
- isCurrent: {
29
- type: 'boolean',
30
- },
31
- createdAt: {
32
- type: 'datetime',
33
- autoCreatedAt: true
34
- },
35
- updatedAt: {
36
- type: 'datetime',
37
- autoUpdatedAt: true
38
- },
39
- preview: {
40
- type: 'boolean'
41
- }
42
- };
@@ -1,22 +0,0 @@
1
- declare const _default: {
2
- id: {
3
- type: string;
4
- autoIncrement: boolean;
5
- primaryKey: boolean;
6
- };
7
- label: {
8
- type: string;
9
- required: boolean;
10
- unique: boolean;
11
- };
12
- tree: {
13
- type: string;
14
- required: boolean;
15
- };
16
- };
17
- export default _default;
18
- export interface NavigationAP {
19
- id?: string;
20
- label: string;
21
- tree: Record<string, unknown>;
22
- }
@@ -1,16 +0,0 @@
1
- export default {
2
- id: {
3
- type: "number",
4
- autoIncrement: true,
5
- primaryKey: true
6
- },
7
- label: {
8
- type: "string",
9
- required: true,
10
- unique: true
11
- },
12
- tree: {
13
- type: "json",
14
- required: true
15
- }
16
- };