@sync-in/server 1.10.1 → 2.0.0
This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
- package/CHANGELOG.md +47 -0
- package/LICENSE +1 -1
- package/README.md +3 -11
- package/environment/environment.dist.min.yaml +1 -1
- package/environment/environment.dist.yaml +173 -28
- package/package.json +18 -17
- package/server/app.bootstrap.js +1 -5
- package/server/app.bootstrap.js.map +1 -1
- package/server/app.constants.js +1 -5
- package/server/app.constants.js.map +1 -1
- package/server/app.e2e-spec.js +1 -5
- package/server/app.e2e-spec.js.map +1 -1
- package/server/app.functions.js +1 -5
- package/server/app.functions.js.map +1 -1
- package/server/app.module.js +1 -5
- package/server/app.module.js.map +1 -1
- package/server/app.service.js +1 -5
- package/server/app.service.js.map +1 -1
- package/server/app.service.spec.js +2 -6
- package/server/app.service.spec.js.map +1 -1
- package/server/applications/admin/admin.module.js +1 -5
- package/server/applications/admin/admin.module.js.map +1 -1
- package/server/applications/admin/constants/routes.js +1 -5
- package/server/applications/admin/constants/routes.js.map +1 -1
- package/server/applications/admin/interfaces/check-update.interfaces.js +1 -5
- package/server/applications/admin/interfaces/check-update.interfaces.js.map +1 -1
- package/server/applications/admin/services/admin-scheduler.service.js +1 -5
- package/server/applications/admin/services/admin-scheduler.service.js.map +1 -1
- package/server/applications/admin/services/admin.service.js +13 -8
- package/server/applications/admin/services/admin.service.js.map +1 -1
- package/server/applications/admin/services/admin.service.spec.js +1 -5
- package/server/applications/admin/services/admin.service.spec.js.map +1 -1
- package/server/applications/admin/utils/check-update.js +1 -5
- package/server/applications/admin/utils/check-update.js.map +1 -1
- package/server/applications/applications.config.js +1 -5
- package/server/applications/applications.config.js.map +1 -1
- package/server/applications/applications.constants.js +5 -5
- package/server/applications/applications.constants.js.map +1 -1
- package/server/applications/applications.module.js +1 -5
- package/server/applications/applications.module.js.map +1 -1
- package/server/applications/comments/comments.controller.js +1 -5
- package/server/applications/comments/comments.controller.js.map +1 -1
- package/server/applications/comments/comments.controller.spec.js +1 -5
- package/server/applications/comments/comments.controller.spec.js.map +1 -1
- package/server/applications/comments/comments.module.js +1 -5
- package/server/applications/comments/comments.module.js.map +1 -1
- package/server/applications/comments/constants/routes.js +1 -5
- package/server/applications/comments/constants/routes.js.map +1 -1
- package/server/applications/comments/dto/comment.dto.js +1 -5
- package/server/applications/comments/dto/comment.dto.js.map +1 -1
- package/server/applications/comments/interfaces/comment-recent.interface.js +1 -5
- package/server/applications/comments/interfaces/comment-recent.interface.js.map +1 -1
- package/server/applications/comments/schemas/comment.interface.js +1 -5
- package/server/applications/comments/schemas/comment.interface.js.map +1 -1
- package/server/applications/comments/schemas/comments.schema.js +1 -5
- package/server/applications/comments/schemas/comments.schema.js.map +1 -1
- package/server/applications/comments/services/comments-manager.service.js +9 -7
- package/server/applications/comments/services/comments-manager.service.js.map +1 -1
- package/server/applications/comments/services/comments-manager.service.spec.js +10 -8
- package/server/applications/comments/services/comments-manager.service.spec.js.map +1 -1
- package/server/applications/comments/services/comments-queries.service.js +1 -5
- package/server/applications/comments/services/comments-queries.service.js.map +1 -1
- package/server/applications/files/adapters/files-indexer-mysql.service.js +29 -12
- package/server/applications/files/adapters/files-indexer-mysql.service.js.map +1 -1
- package/server/applications/files/adapters/files-indexer-mysql.service.spec.js +1 -5
- package/server/applications/files/adapters/files-indexer-mysql.service.spec.js.map +1 -1
- package/server/applications/files/constants/cache.js +1 -5
- package/server/applications/files/constants/cache.js.map +1 -1
- package/server/applications/files/constants/compress.js +1 -5
- package/server/applications/files/constants/compress.js.map +1 -1
- package/server/applications/files/constants/files.js +1 -5
- package/server/applications/files/constants/files.js.map +1 -1
- package/server/applications/files/constants/indexing.js +1 -5
- package/server/applications/files/constants/indexing.js.map +1 -1
- package/server/applications/files/constants/operations.js +1 -5
- package/server/applications/files/constants/operations.js.map +1 -1
- package/server/applications/files/constants/routes.js +1 -5
- package/server/applications/files/constants/routes.js.map +1 -1
- package/server/applications/files/constants/samples.js +1 -5
- package/server/applications/files/constants/samples.js.map +1 -1
- package/server/applications/files/dto/file-operations.dto.js +1 -5
- package/server/applications/files/dto/file-operations.dto.js.map +1 -1
- package/server/applications/files/events/file-task-event.js +1 -5
- package/server/applications/files/events/file-task-event.js.map +1 -1
- package/server/applications/files/files-tasks.controller.js +1 -5
- package/server/applications/files/files-tasks.controller.js.map +1 -1
- package/server/applications/files/files-tasks.controller.spec.js +1 -5
- package/server/applications/files/files-tasks.controller.spec.js.map +1 -1
- package/server/applications/files/files.config.js +1 -5
- package/server/applications/files/files.config.js.map +1 -1
- package/server/applications/files/files.controller.js +1 -5
- package/server/applications/files/files.controller.js.map +1 -1
- package/server/applications/files/files.controller.spec.js +1 -5
- package/server/applications/files/files.controller.spec.js.map +1 -1
- package/server/applications/files/files.module.js +1 -5
- package/server/applications/files/files.module.js.map +1 -1
- package/server/applications/files/interfaces/file-db-props.interface.js +1 -5
- package/server/applications/files/interfaces/file-db-props.interface.js.map +1 -1
- package/server/applications/files/interfaces/file-lock.interface.js +1 -5
- package/server/applications/files/interfaces/file-lock.interface.js.map +1 -1
- package/server/applications/files/interfaces/file-parse-index.js +1 -5
- package/server/applications/files/interfaces/file-parse-index.js.map +1 -1
- package/server/applications/files/interfaces/file-props.interface.js +1 -5
- package/server/applications/files/interfaces/file-props.interface.js.map +1 -1
- package/server/applications/files/interfaces/file-recent-location.interface.js +1 -5
- package/server/applications/files/interfaces/file-recent-location.interface.js.map +1 -1
- package/server/applications/files/interfaces/file-space.interface.js +1 -5
- package/server/applications/files/interfaces/file-space.interface.js.map +1 -1
- package/server/applications/files/interfaces/file-tree.interface.js +1 -5
- package/server/applications/files/interfaces/file-tree.interface.js.map +1 -1
- package/server/applications/files/models/file-error.js +1 -5
- package/server/applications/files/models/file-error.js.map +1 -1
- package/server/applications/files/models/file-lock-error.js +1 -5
- package/server/applications/files/models/file-lock-error.js.map +1 -1
- package/server/applications/files/models/file-task.js +1 -5
- package/server/applications/files/models/file-task.js.map +1 -1
- package/server/applications/files/models/files-indexer.js +1 -5
- package/server/applications/files/models/files-indexer.js.map +1 -1
- package/server/applications/files/modules/collabora-online/collabora-online-environment.decorator.js +1 -5
- package/server/applications/files/modules/collabora-online/collabora-online-environment.decorator.js.map +1 -1
- package/server/applications/files/modules/collabora-online/collabora-online-manager.service.js +21 -10
- package/server/applications/files/modules/collabora-online/collabora-online-manager.service.js.map +1 -1
- package/server/applications/files/modules/collabora-online/collabora-online-manager.service.spec.js +1 -5
- package/server/applications/files/modules/collabora-online/collabora-online-manager.service.spec.js.map +1 -1
- package/server/applications/files/modules/collabora-online/collabora-online.config.js +1 -5
- package/server/applications/files/modules/collabora-online/collabora-online.config.js.map +1 -1
- package/server/applications/files/modules/collabora-online/collabora-online.constants.js +1 -5
- package/server/applications/files/modules/collabora-online/collabora-online.constants.js.map +1 -1
- package/server/applications/files/modules/collabora-online/collabora-online.controller.js +1 -5
- package/server/applications/files/modules/collabora-online/collabora-online.controller.js.map +1 -1
- package/server/applications/files/modules/collabora-online/collabora-online.controller.spec.js +1 -5
- package/server/applications/files/modules/collabora-online/collabora-online.controller.spec.js.map +1 -1
- package/server/applications/files/modules/collabora-online/collabora-online.dtos.js +1 -5
- package/server/applications/files/modules/collabora-online/collabora-online.dtos.js.map +1 -1
- package/server/applications/files/modules/collabora-online/collabora-online.guard.js +1 -5
- package/server/applications/files/modules/collabora-online/collabora-online.guard.js.map +1 -1
- package/server/applications/files/modules/collabora-online/collabora-online.guard.spec.js +1 -5
- package/server/applications/files/modules/collabora-online/collabora-online.guard.spec.js.map +1 -1
- package/server/applications/files/modules/collabora-online/collabora-online.interface.js +1 -5
- package/server/applications/files/modules/collabora-online/collabora-online.interface.js.map +1 -1
- package/server/applications/files/modules/collabora-online/collabora-online.module.js +1 -5
- package/server/applications/files/modules/collabora-online/collabora-online.module.js.map +1 -1
- package/server/applications/files/modules/collabora-online/collabora-online.routes.js +1 -5
- package/server/applications/files/modules/collabora-online/collabora-online.routes.js.map +1 -1
- package/server/applications/files/modules/collabora-online/collabora-online.strategy.js +1 -5
- package/server/applications/files/modules/collabora-online/collabora-online.strategy.js.map +1 -1
- package/server/applications/files/modules/collabora-online/collabora-online.utils.js +1 -5
- package/server/applications/files/modules/collabora-online/collabora-online.utils.js.map +1 -1
- package/server/applications/files/modules/file-editor-providers.interface.js +6 -0
- package/server/applications/files/modules/file-editor-providers.interface.js.map +1 -0
- package/server/applications/files/modules/only-office/only-office-environment.decorator.js +1 -5
- package/server/applications/files/modules/only-office/only-office-environment.decorator.js.map +1 -1
- package/server/applications/files/modules/only-office/only-office-manager.service.js +57 -19
- package/server/applications/files/modules/only-office/only-office-manager.service.js.map +1 -1
- package/server/applications/files/modules/only-office/only-office-manager.service.spec.js +1 -5
- package/server/applications/files/modules/only-office/only-office-manager.service.spec.js.map +1 -1
- package/server/applications/files/modules/only-office/only-office.config.js +1 -5
- package/server/applications/files/modules/only-office/only-office.config.js.map +1 -1
- package/server/applications/files/modules/only-office/only-office.constants.js +1 -5
- package/server/applications/files/modules/only-office/only-office.constants.js.map +1 -1
- package/server/applications/files/modules/only-office/only-office.controller.js +1 -5
- package/server/applications/files/modules/only-office/only-office.controller.js.map +1 -1
- package/server/applications/files/modules/only-office/only-office.controller.spec.js +1 -5
- package/server/applications/files/modules/only-office/only-office.controller.spec.js.map +1 -1
- package/server/applications/files/modules/only-office/only-office.dtos.js +1 -5
- package/server/applications/files/modules/only-office/only-office.dtos.js.map +1 -1
- package/server/applications/files/modules/only-office/only-office.guard.js +1 -5
- package/server/applications/files/modules/only-office/only-office.guard.js.map +1 -1
- package/server/applications/files/modules/only-office/only-office.guard.spec.js +1 -5
- package/server/applications/files/modules/only-office/only-office.guard.spec.js.map +1 -1
- package/server/applications/files/modules/only-office/only-office.interface.js +1 -5
- package/server/applications/files/modules/only-office/only-office.interface.js.map +1 -1
- package/server/applications/files/modules/only-office/only-office.module.js +1 -5
- package/server/applications/files/modules/only-office/only-office.module.js.map +1 -1
- package/server/applications/files/modules/only-office/only-office.routes.js +1 -5
- package/server/applications/files/modules/only-office/only-office.routes.js.map +1 -1
- package/server/applications/files/modules/only-office/only-office.strategy.js +1 -5
- package/server/applications/files/modules/only-office/only-office.strategy.js.map +1 -1
- package/server/applications/files/schemas/file-content.interface.js +1 -5
- package/server/applications/files/schemas/file-content.interface.js.map +1 -1
- package/server/applications/files/schemas/file-recent.interface.js +1 -5
- package/server/applications/files/schemas/file-recent.interface.js.map +1 -1
- package/server/applications/files/schemas/file.interface.js +1 -5
- package/server/applications/files/schemas/file.interface.js.map +1 -1
- package/server/applications/files/schemas/files-content.schema.js +1 -5
- package/server/applications/files/schemas/files-content.schema.js.map +1 -1
- package/server/applications/files/schemas/files-recents.schema.js +1 -5
- package/server/applications/files/schemas/files-recents.schema.js.map +1 -1
- package/server/applications/files/schemas/files.schema.js +1 -5
- package/server/applications/files/schemas/files.schema.js.map +1 -1
- package/server/applications/files/services/files-content-manager.service.js +45 -16
- package/server/applications/files/services/files-content-manager.service.js.map +1 -1
- package/server/applications/files/services/files-lock-manager.service.js +53 -18
- package/server/applications/files/services/files-lock-manager.service.js.map +1 -1
- package/server/applications/files/services/files-lock-manager.service.spec.js +1 -5
- package/server/applications/files/services/files-lock-manager.service.spec.js.map +1 -1
- package/server/applications/files/services/files-manager.service.js +77 -24
- package/server/applications/files/services/files-manager.service.js.map +1 -1
- package/server/applications/files/services/files-manager.service.spec.js +1 -5
- package/server/applications/files/services/files-manager.service.spec.js.map +1 -1
- package/server/applications/files/services/files-methods.service.js +5 -6
- package/server/applications/files/services/files-methods.service.js.map +1 -1
- package/server/applications/files/services/files-methods.service.spec.js +1 -5
- package/server/applications/files/services/files-methods.service.spec.js.map +1 -1
- package/server/applications/files/services/files-parser.service.js +13 -8
- package/server/applications/files/services/files-parser.service.js.map +1 -1
- package/server/applications/files/services/files-parser.service.spec.js +1 -5
- package/server/applications/files/services/files-parser.service.spec.js.map +1 -1
- package/server/applications/files/services/files-queries.service.js +29 -12
- package/server/applications/files/services/files-queries.service.js.map +1 -1
- package/server/applications/files/services/files-recents.service.js +1 -5
- package/server/applications/files/services/files-recents.service.js.map +1 -1
- package/server/applications/files/services/files-recents.service.spec.js +1 -5
- package/server/applications/files/services/files-recents.service.spec.js.map +1 -1
- package/server/applications/files/services/files-scheduler.service.js +77 -24
- package/server/applications/files/services/files-scheduler.service.js.map +1 -1
- package/server/applications/files/services/files-search-manager.service.js +9 -7
- package/server/applications/files/services/files-search-manager.service.js.map +1 -1
- package/server/applications/files/services/files-search-manager.service.spec.js +1 -5
- package/server/applications/files/services/files-search-manager.service.spec.js.map +1 -1
- package/server/applications/files/services/files-tasks-manager.service.js +77 -24
- package/server/applications/files/services/files-tasks-manager.service.js.map +1 -1
- package/server/applications/files/services/files-tasks-manager.service.spec.js +1 -5
- package/server/applications/files/services/files-tasks-manager.service.spec.js.map +1 -1
- package/server/applications/files/utils/doc-textify/adapters/excel.js +1 -5
- package/server/applications/files/utils/doc-textify/adapters/excel.js.map +1 -1
- package/server/applications/files/utils/doc-textify/adapters/html.js +1 -5
- package/server/applications/files/utils/doc-textify/adapters/html.js.map +1 -1
- package/server/applications/files/utils/doc-textify/adapters/open-office.js +1 -5
- package/server/applications/files/utils/doc-textify/adapters/open-office.js.map +1 -1
- package/server/applications/files/utils/doc-textify/adapters/pdf.js +1 -5
- package/server/applications/files/utils/doc-textify/adapters/pdf.js.map +1 -1
- package/server/applications/files/utils/doc-textify/adapters/power-point.js +1 -5
- package/server/applications/files/utils/doc-textify/adapters/power-point.js.map +1 -1
- package/server/applications/files/utils/doc-textify/adapters/text.js +1 -5
- package/server/applications/files/utils/doc-textify/adapters/text.js.map +1 -1
- package/server/applications/files/utils/doc-textify/adapters/word.js +1 -5
- package/server/applications/files/utils/doc-textify/adapters/word.js.map +1 -1
- package/server/applications/files/utils/doc-textify/doc-textify.js +1 -5
- package/server/applications/files/utils/doc-textify/doc-textify.js.map +1 -1
- package/server/applications/files/utils/doc-textify/interfaces/doc-textify.interfaces.js +1 -5
- package/server/applications/files/utils/doc-textify/interfaces/doc-textify.interfaces.js.map +1 -1
- package/server/applications/files/utils/doc-textify/utils/clean.js +1 -5
- package/server/applications/files/utils/doc-textify/utils/clean.js.map +1 -1
- package/server/applications/files/utils/files-search.js +1 -5
- package/server/applications/files/utils/files-search.js.map +1 -1
- package/server/applications/files/utils/files-tree.js +1 -5
- package/server/applications/files/utils/files-tree.js.map +1 -1
- package/server/applications/files/utils/files.js +1 -5
- package/server/applications/files/utils/files.js.map +1 -1
- package/server/applications/files/utils/send-file.js +1 -5
- package/server/applications/files/utils/send-file.js.map +1 -1
- package/server/applications/files/utils/unzip-file.js +1 -5
- package/server/applications/files/utils/unzip-file.js.map +1 -1
- package/server/applications/files/utils/url-file.js +1 -5
- package/server/applications/files/utils/url-file.js.map +1 -1
- package/server/applications/links/constants/cache.js +1 -5
- package/server/applications/links/constants/cache.js.map +1 -1
- package/server/applications/links/constants/links.js +1 -5
- package/server/applications/links/constants/links.js.map +1 -1
- package/server/applications/links/constants/routes.js +1 -5
- package/server/applications/links/constants/routes.js.map +1 -1
- package/server/applications/links/dto/create-or-update-link.dto.js +1 -5
- package/server/applications/links/dto/create-or-update-link.dto.js.map +1 -1
- package/server/applications/links/interfaces/link-guest.interface.js +1 -5
- package/server/applications/links/interfaces/link-guest.interface.js.map +1 -1
- package/server/applications/links/interfaces/link-space.interface.js +1 -5
- package/server/applications/links/interfaces/link-space.interface.js.map +1 -1
- package/server/applications/links/links.controller.js +1 -5
- package/server/applications/links/links.controller.js.map +1 -1
- package/server/applications/links/links.controller.spec.js +1 -5
- package/server/applications/links/links.controller.spec.js.map +1 -1
- package/server/applications/links/schemas/link.interface.js +1 -5
- package/server/applications/links/schemas/link.interface.js.map +1 -1
- package/server/applications/links/schemas/links.schema.js +1 -5
- package/server/applications/links/schemas/links.schema.js.map +1 -1
- package/server/applications/links/services/links-manager.service.js +55 -20
- package/server/applications/links/services/links-manager.service.js.map +1 -1
- package/server/applications/links/services/links-manager.service.spec.js +3 -7
- package/server/applications/links/services/links-manager.service.spec.js.map +1 -1
- package/server/applications/links/services/links-queries.service.js +1 -5
- package/server/applications/links/services/links-queries.service.js.map +1 -1
- package/server/applications/notifications/constants/notifications.js +1 -5
- package/server/applications/notifications/constants/notifications.js.map +1 -1
- package/server/applications/notifications/constants/routes.js +1 -5
- package/server/applications/notifications/constants/routes.js.map +1 -1
- package/server/applications/notifications/constants/websocket.js +1 -5
- package/server/applications/notifications/constants/websocket.js.map +1 -1
- package/server/applications/notifications/i18n/de.js +1 -9
- package/server/applications/notifications/i18n/de.js.map +1 -1
- package/server/applications/notifications/i18n/es.js +1 -5
- package/server/applications/notifications/i18n/es.js.map +1 -1
- package/server/applications/notifications/i18n/fr.js +1 -5
- package/server/applications/notifications/i18n/fr.js.map +1 -1
- package/server/applications/notifications/i18n/hi.js +1 -5
- package/server/applications/notifications/i18n/hi.js.map +1 -1
- package/server/applications/notifications/i18n/index.js +1 -5
- package/server/applications/notifications/i18n/index.js.map +1 -1
- package/server/applications/notifications/i18n/it.js +1 -5
- package/server/applications/notifications/i18n/it.js.map +1 -1
- package/server/applications/notifications/i18n/ja.js +1 -5
- package/server/applications/notifications/i18n/ja.js.map +1 -1
- package/server/applications/notifications/i18n/ko.js +1 -5
- package/server/applications/notifications/i18n/ko.js.map +1 -1
- package/server/applications/notifications/i18n/pl.js +1 -5
- package/server/applications/notifications/i18n/pl.js.map +1 -1
- package/server/applications/notifications/i18n/pt.js +1 -5
- package/server/applications/notifications/i18n/pt.js.map +1 -1
- package/server/applications/notifications/i18n/pt_br.js +1 -5
- package/server/applications/notifications/i18n/pt_br.js.map +1 -1
- package/server/applications/notifications/i18n/ru.js +1 -5
- package/server/applications/notifications/i18n/ru.js.map +1 -1
- package/server/applications/notifications/i18n/tr.js +1 -5
- package/server/applications/notifications/i18n/tr.js.map +1 -1
- package/server/applications/notifications/i18n/zh.js +1 -5
- package/server/applications/notifications/i18n/zh.js.map +1 -1
- package/server/applications/notifications/interfaces/notification-properties.interface.js +1 -5
- package/server/applications/notifications/interfaces/notification-properties.interface.js.map +1 -1
- package/server/applications/notifications/interfaces/user-mail-notification.interface.js +1 -5
- package/server/applications/notifications/interfaces/user-mail-notification.interface.js.map +1 -1
- package/server/applications/notifications/mails/models.js +1 -5
- package/server/applications/notifications/mails/models.js.map +1 -1
- package/server/applications/notifications/mails/templates.js +1 -5
- package/server/applications/notifications/mails/templates.js.map +1 -1
- package/server/applications/notifications/mails/urls.js +1 -5
- package/server/applications/notifications/mails/urls.js.map +1 -1
- package/server/applications/notifications/notifications.controller.js +1 -5
- package/server/applications/notifications/notifications.controller.js.map +1 -1
- package/server/applications/notifications/notifications.controller.spec.js +1 -5
- package/server/applications/notifications/notifications.controller.spec.js.map +1 -1
- package/server/applications/notifications/notifications.gateway.js +1 -5
- package/server/applications/notifications/notifications.gateway.js.map +1 -1
- package/server/applications/notifications/notifications.module.js +1 -5
- package/server/applications/notifications/notifications.module.js.map +1 -1
- package/server/applications/notifications/schemas/notification.interface.js +1 -5
- package/server/applications/notifications/schemas/notification.interface.js.map +1 -1
- package/server/applications/notifications/schemas/notifications.schema.js +1 -5
- package/server/applications/notifications/schemas/notifications.schema.js.map +1 -1
- package/server/applications/notifications/services/notifications-manager.service.js +25 -11
- package/server/applications/notifications/services/notifications-manager.service.js.map +1 -1
- package/server/applications/notifications/services/notifications-manager.service.spec.js +20 -11
- package/server/applications/notifications/services/notifications-manager.service.spec.js.map +1 -1
- package/server/applications/notifications/services/notifications-queries.service.js +1 -5
- package/server/applications/notifications/services/notifications-queries.service.js.map +1 -1
- package/server/applications/shares/constants/routes.js +1 -5
- package/server/applications/shares/constants/routes.js.map +1 -1
- package/server/applications/shares/constants/shares.js +1 -5
- package/server/applications/shares/constants/shares.js.map +1 -1
- package/server/applications/shares/dto/create-or-update-share.dto.js +1 -5
- package/server/applications/shares/dto/create-or-update-share.dto.js.map +1 -1
- package/server/applications/shares/interfaces/share-child.interface.js +1 -5
- package/server/applications/shares/interfaces/share-child.interface.js.map +1 -1
- package/server/applications/shares/interfaces/share-env.interface.js +1 -5
- package/server/applications/shares/interfaces/share-env.interface.js.map +1 -1
- package/server/applications/shares/interfaces/share-file.interface.js +1 -5
- package/server/applications/shares/interfaces/share-file.interface.js.map +1 -1
- package/server/applications/shares/interfaces/share-link.interface.js +1 -5
- package/server/applications/shares/interfaces/share-link.interface.js.map +1 -1
- package/server/applications/shares/interfaces/share-props.interface.js +1 -5
- package/server/applications/shares/interfaces/share-props.interface.js.map +1 -1
- package/server/applications/shares/models/share-child.model.js +1 -5
- package/server/applications/shares/models/share-child.model.js.map +1 -1
- package/server/applications/shares/schemas/share-members.interface.js +1 -5
- package/server/applications/shares/schemas/share-members.interface.js.map +1 -1
- package/server/applications/shares/schemas/share.interface.js +1 -5
- package/server/applications/shares/schemas/share.interface.js.map +1 -1
- package/server/applications/shares/schemas/shares-members.schema.js +1 -5
- package/server/applications/shares/schemas/shares-members.schema.js.map +1 -1
- package/server/applications/shares/schemas/shares.schema.js +1 -5
- package/server/applications/shares/schemas/shares.schema.js.map +1 -1
- package/server/applications/shares/services/shares-manager.service.js +214 -68
- package/server/applications/shares/services/shares-manager.service.js.map +1 -1
- package/server/applications/shares/services/shares-manager.service.spec.js +1 -5
- package/server/applications/shares/services/shares-manager.service.spec.js.map +1 -1
- package/server/applications/shares/services/shares-queries.service.js +49 -17
- package/server/applications/shares/services/shares-queries.service.js.map +1 -1
- package/server/applications/shares/shares.controller.js +1 -5
- package/server/applications/shares/shares.controller.js.map +1 -1
- package/server/applications/shares/shares.controller.spec.js +1 -5
- package/server/applications/shares/shares.controller.spec.js.map +1 -1
- package/server/applications/shares/shares.module.js +1 -5
- package/server/applications/shares/shares.module.js.map +1 -1
- package/server/applications/spaces/constants/cache.js +1 -5
- package/server/applications/spaces/constants/cache.js.map +1 -1
- package/server/applications/spaces/constants/routes.js +1 -5
- package/server/applications/spaces/constants/routes.js.map +1 -1
- package/server/applications/spaces/constants/spaces.js +1 -5
- package/server/applications/spaces/constants/spaces.js.map +1 -1
- package/server/applications/spaces/decorators/space-override-permission.decorator.js +1 -5
- package/server/applications/spaces/decorators/space-override-permission.decorator.js.map +1 -1
- package/server/applications/spaces/decorators/space-skip-guard.decorator.js +1 -5
- package/server/applications/spaces/decorators/space-skip-guard.decorator.js.map +1 -1
- package/server/applications/spaces/decorators/space-skip-permissions.decorator.js +1 -5
- package/server/applications/spaces/decorators/space-skip-permissions.decorator.js.map +1 -1
- package/server/applications/spaces/decorators/space.decorator.js +1 -5
- package/server/applications/spaces/decorators/space.decorator.js.map +1 -1
- package/server/applications/spaces/dto/create-or-update-space.dto.js +1 -5
- package/server/applications/spaces/dto/create-or-update-space.dto.js.map +1 -1
- package/server/applications/spaces/dto/delete-space.dto.js +1 -5
- package/server/applications/spaces/dto/delete-space.dto.js.map +1 -1
- package/server/applications/spaces/dto/search-space.dto.js +1 -5
- package/server/applications/spaces/dto/search-space.dto.js.map +1 -1
- package/server/applications/spaces/dto/space-roots.dto.js +1 -5
- package/server/applications/spaces/dto/space-roots.dto.js.map +1 -1
- package/server/applications/spaces/guards/space.guard.js +17 -9
- package/server/applications/spaces/guards/space.guard.js.map +1 -1
- package/server/applications/spaces/guards/space.guard.spec.js +1 -5
- package/server/applications/spaces/guards/space.guard.spec.js.map +1 -1
- package/server/applications/spaces/interfaces/space-diff.interface.js +1 -5
- package/server/applications/spaces/interfaces/space-diff.interface.js.map +1 -1
- package/server/applications/spaces/interfaces/space-files.interface.js +1 -5
- package/server/applications/spaces/interfaces/space-files.interface.js.map +1 -1
- package/server/applications/spaces/interfaces/space-request.interface.js +1 -5
- package/server/applications/spaces/interfaces/space-request.interface.js.map +1 -1
- package/server/applications/spaces/interfaces/space-trash.interface.js +1 -5
- package/server/applications/spaces/interfaces/space-trash.interface.js.map +1 -1
- package/server/applications/spaces/models/space-env.model.js +1 -5
- package/server/applications/spaces/models/space-env.model.js.map +1 -1
- package/server/applications/spaces/models/space-props.model.js +1 -5
- package/server/applications/spaces/models/space-props.model.js.map +1 -1
- package/server/applications/spaces/models/space-root-props.model.js +1 -5
- package/server/applications/spaces/models/space-root-props.model.js.map +1 -1
- package/server/applications/spaces/models/space.model.js +1 -5
- package/server/applications/spaces/models/space.model.js.map +1 -1
- package/server/applications/spaces/schemas/space-members.interface.js +1 -5
- package/server/applications/spaces/schemas/space-members.interface.js.map +1 -1
- package/server/applications/spaces/schemas/space-root.interface.js +1 -5
- package/server/applications/spaces/schemas/space-root.interface.js.map +1 -1
- package/server/applications/spaces/schemas/space.interface.js +1 -5
- package/server/applications/spaces/schemas/space.interface.js.map +1 -1
- package/server/applications/spaces/schemas/spaces-members.schema.js +1 -5
- package/server/applications/spaces/schemas/spaces-members.schema.js.map +1 -1
- package/server/applications/spaces/schemas/spaces-roots.schema.js +1 -5
- package/server/applications/spaces/schemas/spaces-roots.schema.js.map +1 -1
- package/server/applications/spaces/schemas/spaces.schema.js +1 -5
- package/server/applications/spaces/schemas/spaces.schema.js.map +1 -1
- package/server/applications/spaces/services/spaces-browser.service.js +77 -24
- package/server/applications/spaces/services/spaces-browser.service.js.map +1 -1
- package/server/applications/spaces/services/spaces-browser.service.spec.js +1 -5
- package/server/applications/spaces/services/spaces-browser.service.spec.js.map +1 -1
- package/server/applications/spaces/services/spaces-manager.service.js +193 -53
- package/server/applications/spaces/services/spaces-manager.service.js.map +1 -1
- package/server/applications/spaces/services/spaces-manager.service.spec.js +1 -5
- package/server/applications/spaces/services/spaces-manager.service.spec.js.map +1 -1
- package/server/applications/spaces/services/spaces-queries.service.js +65 -21
- package/server/applications/spaces/services/spaces-queries.service.js.map +1 -1
- package/server/applications/spaces/services/spaces-scheduler.service.js +49 -17
- package/server/applications/spaces/services/spaces-scheduler.service.js.map +1 -1
- package/server/applications/spaces/spaces.controller.js +1 -5
- package/server/applications/spaces/spaces.controller.js.map +1 -1
- package/server/applications/spaces/spaces.controller.spec.js +1 -5
- package/server/applications/spaces/spaces.controller.spec.js.map +1 -1
- package/server/applications/spaces/spaces.module.js +1 -5
- package/server/applications/spaces/spaces.module.js.map +1 -1
- package/server/applications/spaces/utils/paths.js +1 -5
- package/server/applications/spaces/utils/paths.js.map +1 -1
- package/server/applications/spaces/utils/permissions.js +1 -5
- package/server/applications/spaces/utils/permissions.js.map +1 -1
- package/server/applications/spaces/utils/routes.js +1 -5
- package/server/applications/spaces/utils/routes.js.map +1 -1
- package/server/applications/sync/constants/auth.js +1 -5
- package/server/applications/sync/constants/auth.js.map +1 -1
- package/server/applications/sync/constants/routes.js +6 -5
- package/server/applications/sync/constants/routes.js.map +1 -1
- package/server/applications/sync/constants/store.js +1 -9
- package/server/applications/sync/constants/store.js.map +1 -1
- package/server/applications/sync/constants/sync.js +2 -6
- package/server/applications/sync/constants/sync.js.map +1 -1
- package/server/applications/sync/decorators/sync-context.decorator.js +1 -5
- package/server/applications/sync/decorators/sync-context.decorator.js.map +1 -1
- package/server/applications/sync/decorators/sync-environment.decorator.js +1 -5
- package/server/applications/sync/decorators/sync-environment.decorator.js.map +1 -1
- package/server/applications/sync/dtos/sync-client-auth.dto.js +12 -8
- package/server/applications/sync/dtos/sync-client-auth.dto.js.map +1 -1
- package/server/applications/sync/dtos/sync-client-info.dto.js +49 -0
- package/server/applications/sync/dtos/sync-client-info.dto.js.map +1 -0
- package/server/applications/sync/dtos/sync-client-registration.dto.js +34 -11
- package/server/applications/sync/dtos/sync-client-registration.dto.js.map +1 -1
- package/server/applications/sync/dtos/sync-operations.dto.js +1 -5
- package/server/applications/sync/dtos/sync-operations.dto.js.map +1 -1
- package/server/applications/sync/dtos/sync-path.dto.js +1 -5
- package/server/applications/sync/dtos/sync-path.dto.js.map +1 -1
- package/server/applications/sync/dtos/sync-upload.dto.js +1 -5
- package/server/applications/sync/dtos/sync-upload.dto.js.map +1 -1
- package/server/applications/sync/interceptors/sync-diff-gzip-body.interceptor.js +1 -5
- package/server/applications/sync/interceptors/sync-diff-gzip-body.interceptor.js.map +1 -1
- package/server/applications/sync/interceptors/sync-diff-gzip-body.interceptor.spec.js +1 -5
- package/server/applications/sync/interceptors/sync-diff-gzip-body.interceptor.spec.js.map +1 -1
- package/server/applications/sync/interfaces/store-manifest.interface.js +1 -5
- package/server/applications/sync/interfaces/store-manifest.interface.js.map +1 -1
- package/server/applications/sync/interfaces/sync-client-auth.interface.js +1 -25
- package/server/applications/sync/interfaces/sync-client-auth.interface.js.map +1 -1
- package/server/applications/sync/interfaces/sync-client-paths.interface.js +1 -5
- package/server/applications/sync/interfaces/sync-client-paths.interface.js.map +1 -1
- package/server/applications/sync/interfaces/sync-client.interface.js +1 -5
- package/server/applications/sync/interfaces/sync-client.interface.js.map +1 -1
- package/server/applications/sync/interfaces/sync-diff.interface.js +1 -5
- package/server/applications/sync/interfaces/sync-diff.interface.js.map +1 -1
- package/server/applications/sync/interfaces/sync-path.interface.js +1 -5
- package/server/applications/sync/interfaces/sync-path.interface.js.map +1 -1
- package/server/applications/sync/schemas/sync-client.interface.js +1 -5
- package/server/applications/sync/schemas/sync-client.interface.js.map +1 -1
- package/server/applications/sync/schemas/sync-clients.schema.js +1 -5
- package/server/applications/sync/schemas/sync-clients.schema.js.map +1 -1
- package/server/applications/sync/schemas/sync-path.interface.js +1 -5
- package/server/applications/sync/schemas/sync-path.interface.js.map +1 -1
- package/server/applications/sync/schemas/sync-paths.schema.js +1 -5
- package/server/applications/sync/schemas/sync-paths.schema.js.map +1 -1
- package/server/applications/sync/services/sync-clients-manager.service.js +108 -44
- package/server/applications/sync/services/sync-clients-manager.service.js.map +1 -1
- package/server/applications/sync/services/sync-clients-manager.service.spec.js +14 -17
- package/server/applications/sync/services/sync-clients-manager.service.spec.js.map +1 -1
- package/server/applications/sync/services/sync-manager.service.js +29 -12
- package/server/applications/sync/services/sync-manager.service.js.map +1 -1
- package/server/applications/sync/services/sync-manager.service.spec.js +1 -5
- package/server/applications/sync/services/sync-manager.service.spec.js.map +1 -1
- package/server/applications/sync/services/sync-paths-manager.service.js +27 -17
- package/server/applications/sync/services/sync-paths-manager.service.js.map +1 -1
- package/server/applications/sync/services/sync-paths-manager.service.spec.js +11 -15
- package/server/applications/sync/services/sync-paths-manager.service.spec.js.map +1 -1
- package/server/applications/sync/services/sync-queries.service.js +1 -5
- package/server/applications/sync/services/sync-queries.service.js.map +1 -1
- package/server/applications/sync/sync.config.js +1 -5
- package/server/applications/sync/sync.config.js.map +1 -1
- package/server/applications/sync/sync.controller.js +21 -6
- package/server/applications/sync/sync.controller.js.map +1 -1
- package/server/applications/sync/sync.controller.spec.js +1 -5
- package/server/applications/sync/sync.controller.spec.js.map +1 -1
- package/server/applications/sync/sync.module.js +1 -5
- package/server/applications/sync/sync.module.js.map +1 -1
- package/server/applications/sync/utils/functions.js +1 -5
- package/server/applications/sync/utils/functions.js.map +1 -1
- package/server/applications/sync/utils/normalizedMap.js +1 -5
- package/server/applications/sync/utils/normalizedMap.js.map +1 -1
- package/server/applications/sync/utils/routes.js +1 -5
- package/server/applications/sync/utils/routes.js.map +1 -1
- package/server/applications/users/admin-users.controller.js +2 -6
- package/server/applications/users/admin-users.controller.js.map +1 -1
- package/server/applications/users/admin-users.controller.spec.js +6 -10
- package/server/applications/users/admin-users.controller.spec.js.map +1 -1
- package/server/applications/users/constants/group.js +1 -5
- package/server/applications/users/constants/group.js.map +1 -1
- package/server/applications/users/constants/member.js +1 -5
- package/server/applications/users/constants/member.js.map +1 -1
- package/server/applications/users/constants/routes.js +1 -5
- package/server/applications/users/constants/routes.js.map +1 -1
- package/server/applications/users/constants/user.js +1 -5
- package/server/applications/users/constants/user.js.map +1 -1
- package/server/applications/users/constants/websocket.js +1 -5
- package/server/applications/users/constants/websocket.js.map +1 -1
- package/server/applications/users/decorators/permissions.decorator.js +1 -5
- package/server/applications/users/decorators/permissions.decorator.js.map +1 -1
- package/server/applications/users/decorators/roles.decorator.js +1 -5
- package/server/applications/users/decorators/roles.decorator.js.map +1 -1
- package/server/applications/users/decorators/user.decorator.js +1 -5
- package/server/applications/users/decorators/user.decorator.js.map +1 -1
- package/server/applications/users/dto/create-or-update-group.dto.js +1 -5
- package/server/applications/users/dto/create-or-update-group.dto.js.map +1 -1
- package/server/applications/users/dto/create-or-update-user.dto.js +1 -5
- package/server/applications/users/dto/create-or-update-user.dto.js.map +1 -1
- package/server/applications/users/dto/delete-user.dto.js +1 -5
- package/server/applications/users/dto/delete-user.dto.js.map +1 -1
- package/server/applications/users/dto/search-members.dto.js +1 -5
- package/server/applications/users/dto/search-members.dto.js.map +1 -1
- package/server/applications/users/dto/user-properties.dto.js +1 -5
- package/server/applications/users/dto/user-properties.dto.js.map +1 -1
- package/server/applications/users/guards/permissions.guard.js +1 -5
- package/server/applications/users/guards/permissions.guard.js.map +1 -1
- package/server/applications/users/guards/permissions.guard.spec.js +1 -5
- package/server/applications/users/guards/permissions.guard.spec.js.map +1 -1
- package/server/applications/users/guards/roles.guard.js +1 -5
- package/server/applications/users/guards/roles.guard.js.map +1 -1
- package/server/applications/users/guards/roles.guard.spec.js +1 -5
- package/server/applications/users/guards/roles.guard.spec.js.map +1 -1
- package/server/applications/users/interfaces/admin-group.interface.js +1 -5
- package/server/applications/users/interfaces/admin-group.interface.js.map +1 -1
- package/server/applications/users/interfaces/admin-user.interface.js +1 -5
- package/server/applications/users/interfaces/admin-user.interface.js.map +1 -1
- package/server/applications/users/interfaces/group-browse.interface.js +1 -5
- package/server/applications/users/interfaces/group-browse.interface.js.map +1 -1
- package/server/applications/users/interfaces/group-member.js +1 -5
- package/server/applications/users/interfaces/group-member.js.map +1 -1
- package/server/applications/users/interfaces/guest-user.interface.js +1 -5
- package/server/applications/users/interfaces/guest-user.interface.js.map +1 -1
- package/server/applications/users/interfaces/member.interface.js +1 -5
- package/server/applications/users/interfaces/member.interface.js.map +1 -1
- package/server/applications/users/interfaces/owner.interface.js +1 -5
- package/server/applications/users/interfaces/owner.interface.js.map +1 -1
- package/server/applications/users/interfaces/user-secrets.interface.js +1 -5
- package/server/applications/users/interfaces/user-secrets.interface.js.map +1 -1
- package/server/applications/users/interfaces/websocket.interface.js +1 -5
- package/server/applications/users/interfaces/websocket.interface.js.map +1 -1
- package/server/applications/users/models/user.model.js +1 -5
- package/server/applications/users/models/user.model.js.map +1 -1
- package/server/applications/users/schemas/group.interface.js +1 -5
- package/server/applications/users/schemas/group.interface.js.map +1 -1
- package/server/applications/users/schemas/groups.schema.js +1 -5
- package/server/applications/users/schemas/groups.schema.js.map +1 -1
- package/server/applications/users/schemas/user-group.interface.js +1 -5
- package/server/applications/users/schemas/user-group.interface.js.map +1 -1
- package/server/applications/users/schemas/user.interface.js +1 -5
- package/server/applications/users/schemas/user.interface.js.map +1 -1
- package/server/applications/users/schemas/users-groups.schema.js +1 -5
- package/server/applications/users/schemas/users-groups.schema.js.map +1 -1
- package/server/applications/users/schemas/users-guests.schema.js +1 -5
- package/server/applications/users/schemas/users-guests.schema.js.map +1 -1
- package/server/applications/users/schemas/users.schema.js +1 -5
- package/server/applications/users/schemas/users.schema.js.map +1 -1
- package/server/applications/users/services/admin-users-manager.service.js +67 -23
- package/server/applications/users/services/admin-users-manager.service.js.map +1 -1
- package/server/applications/users/services/admin-users-manager.service.spec.js +3 -7
- package/server/applications/users/services/admin-users-manager.service.spec.js.map +1 -1
- package/server/applications/users/services/admin-users-queries.service.js +65 -21
- package/server/applications/users/services/admin-users-queries.service.js.map +1 -1
- package/server/applications/users/services/users-manager.service.js +81 -25
- package/server/applications/users/services/users-manager.service.js.map +1 -1
- package/server/applications/users/services/users-manager.service.spec.js +14 -12
- package/server/applications/users/services/users-manager.service.spec.js.map +1 -1
- package/server/applications/users/services/users-queries.service.js +49 -17
- package/server/applications/users/services/users-queries.service.js.map +1 -1
- package/server/applications/users/users.controller.js +2 -6
- package/server/applications/users/users.controller.js.map +1 -1
- package/server/applications/users/users.controller.spec.js +5 -9
- package/server/applications/users/users.controller.spec.js.map +1 -1
- package/server/applications/users/users.e2e-spec.js +3 -7
- package/server/applications/users/users.e2e-spec.js.map +1 -1
- package/server/applications/users/users.gateway.js +29 -12
- package/server/applications/users/users.gateway.js.map +1 -1
- package/server/applications/users/users.gateway.spec.js +1 -5
- package/server/applications/users/users.gateway.spec.js.map +1 -1
- package/server/applications/users/users.module.js +1 -5
- package/server/applications/users/users.module.js.map +1 -1
- package/server/applications/users/utils/avatar.js +1 -5
- package/server/applications/users/utils/avatar.js.map +1 -1
- package/server/applications/users/utils/test.js +1 -5
- package/server/applications/users/utils/test.js.map +1 -1
- package/server/applications/webdav/constants/routes.js +1 -5
- package/server/applications/webdav/constants/routes.js.map +1 -1
- package/server/applications/webdav/constants/webdav.js +1 -5
- package/server/applications/webdav/constants/webdav.js.map +1 -1
- package/server/applications/webdav/decorators/if-header.decorator.js +1 -5
- package/server/applications/webdav/decorators/if-header.decorator.js.map +1 -1
- package/server/applications/webdav/decorators/webdav-context.decorator.js +1 -5
- package/server/applications/webdav/decorators/webdav-context.decorator.js.map +1 -1
- package/server/applications/webdav/filters/webdav.filter.js +1 -5
- package/server/applications/webdav/filters/webdav.filter.js.map +1 -1
- package/server/applications/webdav/filters/webdav.filter.spec.js +1 -5
- package/server/applications/webdav/filters/webdav.filter.spec.js.map +1 -1
- package/server/applications/webdav/guards/webdav-protocol.guard.js +54 -20
- package/server/applications/webdav/guards/webdav-protocol.guard.js.map +1 -1
- package/server/applications/webdav/guards/webdav-protocol.guard.spec.js +54 -0
- package/server/applications/webdav/guards/webdav-protocol.guard.spec.js.map +1 -1
- package/server/applications/webdav/interfaces/if-header.interface.js +1 -5
- package/server/applications/webdav/interfaces/if-header.interface.js.map +1 -1
- package/server/applications/webdav/interfaces/webdav.interface.js +1 -5
- package/server/applications/webdav/interfaces/webdav.interface.js.map +1 -1
- package/server/applications/webdav/models/webdav-file.model.js +1 -5
- package/server/applications/webdav/models/webdav-file.model.js.map +1 -1
- package/server/applications/webdav/services/webdav-methods.service.js +74 -26
- package/server/applications/webdav/services/webdav-methods.service.js.map +1 -1
- package/server/applications/webdav/services/webdav-methods.service.spec.js +15 -18
- package/server/applications/webdav/services/webdav-methods.service.spec.js.map +1 -1
- package/server/applications/webdav/services/webdav-spaces.service.js +17 -9
- package/server/applications/webdav/services/webdav-spaces.service.js.map +1 -1
- package/server/applications/webdav/services/webdav-spaces.service.spec.js +1 -5
- package/server/applications/webdav/services/webdav-spaces.service.spec.js.map +1 -1
- package/server/applications/webdav/utils/bootstrap.js +1 -5
- package/server/applications/webdav/utils/bootstrap.js.map +1 -1
- package/server/applications/webdav/utils/if-header.js +1 -5
- package/server/applications/webdav/utils/if-header.js.map +1 -1
- package/server/applications/webdav/utils/routes.js +1 -5
- package/server/applications/webdav/utils/routes.js.map +1 -1
- package/server/applications/webdav/utils/webdav.js +1 -5
- package/server/applications/webdav/utils/webdav.js.map +1 -1
- package/server/applications/webdav/utils/xml.js +1 -5
- package/server/applications/webdav/utils/xml.js.map +1 -1
- package/server/applications/webdav/webdav.controller.js +1 -5
- package/server/applications/webdav/webdav.controller.js.map +1 -1
- package/server/applications/webdav/webdav.controller.spec.js +1 -5
- package/server/applications/webdav/webdav.controller.spec.js.map +1 -1
- package/server/applications/webdav/webdav.e2e-spec.js +1 -5
- package/server/applications/webdav/webdav.e2e-spec.js.map +1 -1
- package/server/applications/webdav/webdav.module.js +1 -5
- package/server/applications/webdav/webdav.module.js.map +1 -1
- package/server/authentication/auth.config.js +23 -123
- package/server/authentication/auth.config.js.map +1 -1
- package/server/authentication/auth.controller.js +27 -21
- package/server/authentication/auth.controller.js.map +1 -1
- package/server/authentication/auth.controller.spec.js +6 -10
- package/server/authentication/auth.controller.spec.js.map +1 -1
- package/server/authentication/auth.e2e-spec.js +1 -5
- package/server/authentication/auth.e2e-spec.js.map +1 -1
- package/server/authentication/auth.module.js +17 -20
- package/server/authentication/auth.module.js.map +1 -1
- package/server/authentication/{services/auth-manager.service.js → auth.service.js} +41 -18
- package/server/authentication/auth.service.js.map +1 -0
- package/server/authentication/{services/auth-manager.service.spec.js → auth.service.spec.js} +6 -10
- package/server/authentication/auth.service.spec.js.map +1 -0
- package/server/authentication/constants/auth.js +1 -5
- package/server/authentication/constants/auth.js.map +1 -1
- package/server/authentication/constants/routes.js +41 -30
- package/server/authentication/constants/routes.js.map +1 -1
- package/server/authentication/constants/scope.js +2 -5
- package/server/authentication/constants/scope.js.map +1 -1
- package/server/authentication/decorators/auth-token-optional.decorator.js +1 -5
- package/server/authentication/decorators/auth-token-optional.decorator.js.map +1 -1
- package/server/authentication/decorators/auth-token-skip.decorator.js +1 -5
- package/server/authentication/decorators/auth-token-skip.decorator.js.map +1 -1
- package/server/authentication/dto/login-response.dto.js +1 -10
- package/server/authentication/dto/login-response.dto.js.map +1 -1
- package/server/authentication/dto/token-response.dto.js +1 -5
- package/server/authentication/dto/token-response.dto.js.map +1 -1
- package/server/authentication/guards/auth-anonymous.guard.js +1 -5
- package/server/authentication/guards/auth-anonymous.guard.js.map +1 -1
- package/server/authentication/guards/auth-anonymous.guard.spec.js +1 -5
- package/server/authentication/guards/auth-anonymous.guard.spec.js.map +1 -1
- package/server/authentication/guards/auth-anonymous.strategy.js +1 -5
- package/server/authentication/guards/auth-anonymous.strategy.js.map +1 -1
- package/server/authentication/guards/auth-basic.guard.js +1 -5
- package/server/authentication/guards/auth-basic.guard.js.map +1 -1
- package/server/authentication/guards/auth-basic.guard.spec.js +13 -14
- package/server/authentication/guards/auth-basic.guard.spec.js.map +1 -1
- package/server/authentication/guards/auth-basic.strategy.js +10 -11
- package/server/authentication/guards/auth-basic.strategy.js.map +1 -1
- package/server/authentication/guards/auth-digest.guard.js +1 -5
- package/server/authentication/guards/auth-digest.guard.js.map +1 -1
- package/server/authentication/guards/auth-digest.strategy.js +1 -5
- package/server/authentication/guards/auth-digest.strategy.js.map +1 -1
- package/server/authentication/guards/auth-local.guard.js +1 -5
- package/server/authentication/guards/auth-local.guard.js.map +1 -1
- package/server/authentication/guards/auth-local.guard.spec.js +9 -13
- package/server/authentication/guards/auth-local.guard.spec.js.map +1 -1
- package/server/authentication/guards/auth-local.strategy.js +6 -10
- package/server/authentication/guards/auth-local.strategy.js.map +1 -1
- package/server/authentication/guards/auth-token-access.guard.js +1 -5
- package/server/authentication/guards/auth-token-access.guard.js.map +1 -1
- package/server/authentication/guards/auth-token-access.guard.spec.js +3 -7
- package/server/authentication/guards/auth-token-access.guard.spec.js.map +1 -1
- package/server/authentication/guards/auth-token-access.strategy.js +3 -7
- package/server/authentication/guards/auth-token-access.strategy.js.map +1 -1
- package/server/authentication/guards/auth-token-refresh.guard.js +1 -5
- package/server/authentication/guards/auth-token-refresh.guard.js.map +1 -1
- package/server/authentication/guards/auth-token-refresh.guard.spec.js +3 -7
- package/server/authentication/guards/auth-token-refresh.guard.spec.js.map +1 -1
- package/server/authentication/guards/auth-token-refresh.strategy.js +3 -7
- package/server/authentication/guards/auth-token-refresh.strategy.js.map +1 -1
- package/server/authentication/guards/implementations/http-basic.strategy.js +1 -5
- package/server/authentication/guards/implementations/http-basic.strategy.js.map +1 -1
- package/server/authentication/guards/implementations/http-digest.strategy.js +1 -5
- package/server/authentication/guards/implementations/http-digest.strategy.js.map +1 -1
- package/server/authentication/interfaces/auth-request.interface.js +1 -5
- package/server/authentication/interfaces/auth-request.interface.js.map +1 -1
- package/server/authentication/interfaces/jwt-payload.interface.js +1 -5
- package/server/authentication/interfaces/jwt-payload.interface.js.map +1 -1
- package/server/authentication/interfaces/token.interface.js +1 -5
- package/server/authentication/interfaces/token.interface.js.map +1 -1
- package/server/authentication/providers/auth-providers.constants.js +18 -0
- package/server/authentication/providers/auth-providers.constants.js.map +1 -0
- package/server/authentication/providers/auth-providers.models.js +14 -0
- package/server/authentication/providers/auth-providers.models.js.map +1 -0
- package/server/authentication/providers/auth-providers.utils.js +42 -0
- package/server/authentication/providers/auth-providers.utils.js.map +1 -0
- package/server/authentication/providers/ldap/auth-ldap.config.js +143 -0
- package/server/authentication/providers/ldap/auth-ldap.config.js.map +1 -0
- package/server/authentication/{constants/auth-ldap.js → providers/ldap/auth-ldap.constants.js} +12 -6
- package/server/authentication/providers/ldap/auth-ldap.constants.js.map +1 -0
- package/server/authentication/providers/ldap/auth-provider-ldap.service.js +506 -0
- package/server/authentication/providers/ldap/auth-provider-ldap.service.js.map +1 -0
- package/server/authentication/providers/ldap/auth-provider-ldap.service.spec.js +674 -0
- package/server/authentication/providers/ldap/auth-provider-ldap.service.spec.js.map +1 -0
- package/server/authentication/{services/auth-methods/auth-method-database.service.js → providers/mysql/auth-provider-mysql.service.js} +16 -14
- package/server/authentication/providers/mysql/auth-provider-mysql.service.js.map +1 -0
- package/server/authentication/{services/auth-methods/auth-method-database.service.spec.js → providers/mysql/auth-provider-mysql.service.spec.js} +15 -19
- package/server/authentication/providers/mysql/auth-provider-mysql.service.spec.js.map +1 -0
- package/server/authentication/providers/oidc/auth-oidc-desktop.constants.js +30 -0
- package/server/authentication/providers/oidc/auth-oidc-desktop.constants.js.map +1 -0
- package/server/authentication/providers/oidc/auth-oidc.config.js +149 -0
- package/server/authentication/providers/oidc/auth-oidc.config.js.map +1 -0
- package/server/authentication/providers/oidc/auth-oidc.constants.js +39 -0
- package/server/authentication/providers/oidc/auth-oidc.constants.js.map +1 -0
- package/server/authentication/providers/oidc/auth-oidc.controller.js +83 -0
- package/server/authentication/providers/oidc/auth-oidc.controller.js.map +1 -0
- package/server/authentication/providers/oidc/auth-oidc.interfaces.js +6 -0
- package/server/authentication/providers/oidc/auth-oidc.interfaces.js.map +1 -0
- package/server/authentication/providers/oidc/auth-provider-oidc.module.js +36 -0
- package/server/authentication/providers/oidc/auth-provider-oidc.module.js.map +1 -0
- package/server/authentication/providers/oidc/auth-provider-oidc.service.js +373 -0
- package/server/authentication/providers/oidc/auth-provider-oidc.service.js.map +1 -0
- package/server/authentication/providers/oidc/auth-provider-oidc.service.spec.js +270 -0
- package/server/authentication/providers/oidc/auth-provider-oidc.service.spec.js.map +1 -0
- package/server/authentication/{services/auth-methods/auth-method-two-fa.service.js → providers/two-fa/auth-provider-two-fa.service.js} +56 -38
- package/server/authentication/providers/two-fa/auth-provider-two-fa.service.js.map +1 -0
- package/server/authentication/{services/auth-methods/auth-method-two-fa.service.spec.js → providers/two-fa/auth-provider-two-fa.service.spec.js} +6 -10
- package/server/authentication/providers/two-fa/auth-provider-two-fa.service.spec.js.map +1 -0
- package/server/authentication/{guards → providers/two-fa}/auth-two-fa-guard.js +10 -14
- package/server/authentication/providers/two-fa/auth-two-fa-guard.js.map +1 -0
- package/server/authentication/providers/two-fa/auth-two-fa.config.js +57 -0
- package/server/authentication/providers/two-fa/auth-two-fa.config.js.map +1 -0
- package/server/authentication/{dto/two-fa-verify.dto.js → providers/two-fa/auth-two-fa.dtos.js} +8 -6
- package/server/authentication/providers/two-fa/auth-two-fa.dtos.js.map +1 -0
- package/server/authentication/providers/two-fa/auth-two-fa.interfaces.js +6 -0
- package/server/authentication/providers/two-fa/auth-two-fa.interfaces.js.map +1 -0
- package/server/authentication/utils/crypt-secret.js +1 -5
- package/server/authentication/utils/crypt-secret.js.map +1 -1
- package/server/common/constants.js +1 -5
- package/server/common/constants.js.map +1 -1
- package/server/common/decorators.js +1 -5
- package/server/common/decorators.js.map +1 -1
- package/server/common/functions.js +25 -9
- package/server/common/functions.js.map +1 -1
- package/server/common/i18n.js +1 -5
- package/server/common/i18n.js.map +1 -1
- package/server/common/image.js +1 -5
- package/server/common/image.js.map +1 -1
- package/server/common/interfaces.js +1 -5
- package/server/common/interfaces.js.map +1 -1
- package/server/common/qrcode.js +1 -5
- package/server/common/qrcode.js.map +1 -1
- package/server/common/shared.js +6 -6
- package/server/common/shared.js.map +1 -1
- package/server/configuration/config.constants.js +1 -5
- package/server/configuration/config.constants.js.map +1 -1
- package/server/configuration/config.environment.js +2 -6
- package/server/configuration/config.environment.js.map +1 -1
- package/server/configuration/config.interfaces.js +1 -5
- package/server/configuration/config.interfaces.js.map +1 -1
- package/server/configuration/config.loader.js +1 -5
- package/server/configuration/config.loader.js.map +1 -1
- package/server/configuration/config.logger.js +4 -8
- package/server/configuration/config.logger.js.map +1 -1
- package/server/configuration/config.validation.js +7 -5
- package/server/configuration/config.validation.js.map +1 -1
- package/server/infrastructure/cache/adapters/mysql-cache.adapter.js +9 -7
- package/server/infrastructure/cache/adapters/mysql-cache.adapter.js.map +1 -1
- package/server/infrastructure/cache/adapters/redis-cache.adapter.js +1 -5
- package/server/infrastructure/cache/adapters/redis-cache.adapter.js.map +1 -1
- package/server/infrastructure/cache/cache.config.js +1 -5
- package/server/infrastructure/cache/cache.config.js.map +1 -1
- package/server/infrastructure/cache/cache.decorator.js +9 -7
- package/server/infrastructure/cache/cache.decorator.js.map +1 -1
- package/server/infrastructure/cache/cache.e2e-spec.js +1 -5
- package/server/infrastructure/cache/cache.e2e-spec.js.map +1 -1
- package/server/infrastructure/cache/cache.module.js +1 -5
- package/server/infrastructure/cache/cache.module.js.map +1 -1
- package/server/infrastructure/cache/schemas/mysql-cache.interface.js +1 -5
- package/server/infrastructure/cache/schemas/mysql-cache.interface.js.map +1 -1
- package/server/infrastructure/cache/schemas/mysql-cache.schema.js +1 -5
- package/server/infrastructure/cache/schemas/mysql-cache.schema.js.map +1 -1
- package/server/infrastructure/cache/services/cache.service.js +1 -5
- package/server/infrastructure/cache/services/cache.service.js.map +1 -1
- package/server/infrastructure/context/context.module.js +1 -5
- package/server/infrastructure/context/context.module.js.map +1 -1
- package/server/infrastructure/context/interceptors/context.interceptor.js +1 -5
- package/server/infrastructure/context/interceptors/context.interceptor.js.map +1 -1
- package/server/infrastructure/context/interceptors/context.interceptor.spec.js +2 -6
- package/server/infrastructure/context/interceptors/context.interceptor.spec.js.map +1 -1
- package/server/infrastructure/context/interfaces/context-store.interface.js +1 -5
- package/server/infrastructure/context/interfaces/context-store.interface.js.map +1 -1
- package/server/infrastructure/context/services/context-manager.service.js +1 -5
- package/server/infrastructure/context/services/context-manager.service.js.map +1 -1
- package/server/infrastructure/context/services/context-manager.service.spec.js +1 -5
- package/server/infrastructure/context/services/context-manager.service.spec.js.map +1 -1
- package/server/infrastructure/database/columns.js +1 -5
- package/server/infrastructure/database/columns.js.map +1 -1
- package/server/infrastructure/database/configuration.js +1 -5
- package/server/infrastructure/database/configuration.js.map +1 -1
- package/server/infrastructure/database/constants.js +2 -6
- package/server/infrastructure/database/constants.js.map +1 -1
- package/server/infrastructure/database/database.config.js +1 -5
- package/server/infrastructure/database/database.config.js.map +1 -1
- package/server/infrastructure/database/database.logger.js +1 -5
- package/server/infrastructure/database/database.logger.js.map +1 -1
- package/server/infrastructure/database/database.module.js +1 -5
- package/server/infrastructure/database/database.module.js.map +1 -1
- package/server/infrastructure/database/interfaces/database.interface.js +1 -5
- package/server/infrastructure/database/interfaces/database.interface.js.map +1 -1
- package/server/infrastructure/database/schema.js +1 -5
- package/server/infrastructure/database/schema.js.map +1 -1
- package/server/infrastructure/database/scripts/create-user.js +1 -5
- package/server/infrastructure/database/scripts/create-user.js.map +1 -1
- package/server/infrastructure/database/scripts/db.js +1 -5
- package/server/infrastructure/database/scripts/db.js.map +1 -1
- package/server/infrastructure/database/scripts/seed/main.js +1 -5
- package/server/infrastructure/database/scripts/seed/main.js.map +1 -1
- package/server/infrastructure/database/scripts/seed/usersgroups.js +1 -5
- package/server/infrastructure/database/scripts/seed/usersgroups.js.map +1 -1
- package/server/infrastructure/database/utils.js +1 -5
- package/server/infrastructure/database/utils.js.map +1 -1
- package/server/infrastructure/mailer/interfaces/mail.interface.js +1 -5
- package/server/infrastructure/mailer/interfaces/mail.interface.js.map +1 -1
- package/server/infrastructure/mailer/mailer.config.js +1 -5
- package/server/infrastructure/mailer/mailer.config.js.map +1 -1
- package/server/infrastructure/mailer/mailer.module.js +1 -5
- package/server/infrastructure/mailer/mailer.module.js.map +1 -1
- package/server/infrastructure/mailer/mailer.service.js +1 -5
- package/server/infrastructure/mailer/mailer.service.js.map +1 -1
- package/server/infrastructure/mailer/mailer.service.spec.js +2 -6
- package/server/infrastructure/mailer/mailer.service.spec.js.map +1 -1
- package/server/infrastructure/scheduler/scheduler.constants.js +1 -5
- package/server/infrastructure/scheduler/scheduler.constants.js.map +1 -1
- package/server/infrastructure/scheduler/scheduler.module.js +1 -5
- package/server/infrastructure/scheduler/scheduler.module.js.map +1 -1
- package/server/infrastructure/websocket/adapters/cluster.adapter.js +1 -5
- package/server/infrastructure/websocket/adapters/cluster.adapter.js.map +1 -1
- package/server/infrastructure/websocket/adapters/redis.adapter.js +1 -5
- package/server/infrastructure/websocket/adapters/redis.adapter.js.map +1 -1
- package/server/infrastructure/websocket/adapters/web-socket.adapter.js +1 -5
- package/server/infrastructure/websocket/adapters/web-socket.adapter.js.map +1 -1
- package/server/infrastructure/websocket/decorators/web-socket-user.decorator.js +1 -5
- package/server/infrastructure/websocket/decorators/web-socket-user.decorator.js.map +1 -1
- package/server/infrastructure/websocket/interfaces/auth-socket-io.interface.js +1 -5
- package/server/infrastructure/websocket/interfaces/auth-socket-io.interface.js.map +1 -1
- package/server/infrastructure/websocket/utils.js +1 -5
- package/server/infrastructure/websocket/utils.js.map +1 -1
- package/server/infrastructure/websocket/web-socket.config.js +1 -5
- package/server/infrastructure/websocket/web-socket.config.js.map +1 -1
- package/server/main.js +5 -0
- package/server/main.js.map +1 -1
- package/static/assets/pdfjs/build/pdf.mjs +724 -745
- package/static/assets/pdfjs/build/pdf.mjs.map +1 -1
- package/static/assets/pdfjs/build/pdf.sandbox.mjs +2 -2
- package/static/assets/pdfjs/build/pdf.worker.mjs +706 -193
- package/static/assets/pdfjs/build/pdf.worker.mjs.map +1 -1
- package/static/assets/pdfjs/version +1 -1
- package/static/assets/pdfjs/web/locale/dsb/viewer.ftl +5 -5
- package/static/assets/pdfjs/web/locale/en-US/viewer.ftl +1 -0
- package/static/assets/pdfjs/web/locale/fur/viewer.ftl +5 -0
- package/static/assets/pdfjs/web/locale/kk/viewer.ftl +28 -0
- package/static/assets/pdfjs/web/locale/ml/viewer.ftl +4 -0
- package/static/assets/pdfjs/web/locale/ru/viewer.ftl +3 -3
- package/static/assets/pdfjs/web/viewer.css +207 -65
- package/static/assets/pdfjs/web/viewer.html +11 -10
- package/static/assets/pdfjs/web/viewer.mjs +850 -270
- package/static/assets/pdfjs/web/viewer.mjs.map +1 -1
- package/static/assets/pdfjs/web/wasm/LICENSE_JBIG2 +196 -0
- package/static/assets/pdfjs/web/wasm/LICENSE_PDFJS_JBIG2 +13 -0
- package/static/assets/pdfjs/web/wasm/jbig2.wasm +0 -0
- package/static/chunk-22TZP6HW.js +1 -0
- package/static/{chunk-U5E5H2DD.js → chunk-27ATUHBH.js} +1 -1
- package/static/{chunk-HZAB6F4Q.js → chunk-2CKLZ3FM.js} +1 -1
- package/static/{chunk-XZHWESIY.js → chunk-2QZPX7LO.js} +1 -1
- package/static/{chunk-UOK3LKSX.js → chunk-2R6IBBPZ.js} +1 -1
- package/static/{chunk-DVCN3P7Q.js → chunk-4FIGEBNL.js} +1 -1
- package/static/chunk-4P3JABAP.js +13 -0
- package/static/chunk-5CZOSAMZ.js +1 -0
- package/static/{chunk-RBTLSPYJ.js → chunk-677WUBCT.js} +1 -1
- package/static/{chunk-KEZNIIFH.js → chunk-74CAHBFM.js} +1 -1
- package/static/{chunk-WRK2FTKU.js → chunk-7GWW6MJO.js} +1 -1
- package/static/{chunk-EKWB5W72.js → chunk-7WOPGQXB.js} +1 -1
- package/static/{chunk-IMFO2MI7.js → chunk-A4UGPSWX.js} +1 -1
- package/static/{chunk-KDUAB76O.js → chunk-AHO37FKW.js} +1 -1
- package/static/chunk-AQCXMKP3.js +1 -0
- package/static/chunk-B6PDYCRO.js +3 -0
- package/static/{chunk-PPJCVBJH.js → chunk-CU76ATCF.js} +1 -1
- package/static/{chunk-ARS47O5X.js → chunk-CWYHOPOP.js} +1 -1
- package/static/{chunk-CSVPAZHK.js → chunk-E5WI5725.js} +1 -1
- package/static/{chunk-XX3JPJUM.js → chunk-FC5HTKVM.js} +1 -1
- package/static/{chunk-QGHNJVJ6.js → chunk-FOSM7EYI.js} +1 -1
- package/static/{chunk-JAJ7VXMB.js → chunk-GAZO25PI.js} +1 -1
- package/static/{chunk-IHS5LSJJ.js → chunk-GB7ABR5N.js} +1 -1
- package/static/{chunk-27V66YJV.js → chunk-GEHFKZQ5.js} +2 -2
- package/static/{chunk-3QTROEHV.js → chunk-GQFMWVFD.js} +1 -1
- package/static/{chunk-FWQJ4ZCD.js → chunk-GVNTC564.js} +1 -1
- package/static/{chunk-4NIYCYRS.js → chunk-HGL3NYP2.js} +2 -2
- package/static/chunk-HLIWPWRA.js +1 -0
- package/static/{chunk-3VRUIWQG.js → chunk-HNYB3M4S.js} +1 -1
- package/static/{chunk-7HJFIMNF.js → chunk-HUXAUQMN.js} +1 -1
- package/static/chunk-I2XA6PPK.js +1 -0
- package/static/{chunk-RJULB733.js → chunk-ISV3BO6R.js} +1 -1
- package/static/{chunk-R4VYKZVJ.js → chunk-IWWBV6EM.js} +1 -1
- package/static/{chunk-TTWMFWEC.js → chunk-JV3AGU5B.js} +1 -1
- package/static/{chunk-X7NHX5C7.js → chunk-K25E7YGG.js} +1 -1
- package/static/chunk-K46PUTZB.js +1 -0
- package/static/{chunk-D2MLAO5N.js → chunk-KERFLJ56.js} +1 -7
- package/static/{chunk-LZUHREOF.js → chunk-KJD3KFF3.js} +1 -1
- package/static/chunk-KPKSI23S.js +1 -0
- package/static/{chunk-CMNMPG6Z.js → chunk-KZS7CTNR.js} +1 -1
- package/static/{chunk-RNVPQQKT.js → chunk-L5IHUVXL.js} +1 -1
- package/static/{chunk-2GXOVGTD.js → chunk-L7RRX2M3.js} +1 -1
- package/static/{chunk-WFMEUST4.js → chunk-LGWJ2WKU.js} +1 -1
- package/static/{chunk-ZOMRIN3G.js → chunk-MLC7JK2H.js} +2 -2
- package/static/{chunk-76REYAEA.js → chunk-MOHNYW2A.js} +1 -1
- package/static/{chunk-ZHUBWKA2.js → chunk-MTRXBVWZ.js} +1 -1
- package/static/{chunk-QJ22N76V.js → chunk-MZQK6LNV.js} +1 -1
- package/static/{chunk-SDJNZULP.js → chunk-NCDUOVMW.js} +1 -1
- package/static/chunk-NGUAJIGI.js +1 -0
- package/static/chunk-NIPP6JDI.js +1 -0
- package/static/{chunk-VD5JHSDS.js → chunk-NMTBMHUL.js} +1 -1
- package/static/chunk-O4XXMZFX.js +4 -0
- package/static/{chunk-WZPF4LS2.js → chunk-OANZITPM.js} +1 -1
- package/static/{chunk-JNTNMIUH.js → chunk-OGE4SAHU.js} +1 -1
- package/static/{chunk-S6H2ELRY.js → chunk-OI3ME22C.js} +1 -1
- package/static/{chunk-7KAYOR3A.js → chunk-Q3EGCMF5.js} +1 -1
- package/static/chunk-QF2NSHZA.js +1 -0
- package/static/{chunk-3ZBAQTHJ.js → chunk-QIGUDEZF.js} +1 -1
- package/static/{chunk-76M3BMK6.js → chunk-QJVC3SRJ.js} +11 -11
- package/static/{chunk-VBTZDHZ3.js → chunk-QKN6LAAA.js} +1 -1
- package/static/{chunk-JRXG43AA.js → chunk-QRFESU5O.js} +2 -2
- package/static/chunk-QVRVFYJH.js +1 -0
- package/static/{chunk-BCN4T5DO.js → chunk-RFJIPIOK.js} +2 -2
- package/static/{chunk-2RWLNKZH.js → chunk-RLL634K4.js} +1 -1
- package/static/{chunk-D5FQ72R4.js → chunk-RS2OFKWP.js} +1 -1
- package/static/{chunk-CN5YVRFT.js → chunk-RWAAC3A4.js} +1 -1
- package/static/{chunk-LWSCODLD.js → chunk-RWCNTCU5.js} +1 -1
- package/static/{chunk-FTFEQDWH.js → chunk-S5Y64DDS.js} +1 -1
- package/static/{chunk-J7474P3L.js → chunk-SLG5KDU6.js} +1 -1
- package/static/chunk-TJ4CVFEL.js +1 -0
- package/static/{chunk-KAUCN24H.js → chunk-TWCGKSYE.js} +1 -1
- package/static/{chunk-PDG7DOEF.js → chunk-UMDRE4S7.js} +1 -1
- package/static/chunk-VRIOLRYR.js +5 -0
- package/static/chunk-VS4O2XDP.js +1 -0
- package/static/{chunk-ZEJLIGAY.js → chunk-VSBFNFOM.js} +1 -1
- package/static/{chunk-XSURUW7C.js → chunk-WN4WXCVK.js} +1 -1
- package/static/{chunk-S44QIK3G.js → chunk-WX7RXW7K.js} +1 -1
- package/static/{chunk-3ZLBVUCX.js → chunk-XC4POKR3.js} +2 -2
- package/static/{chunk-TNCKNU6I.js → chunk-Y4AUYQTG.js} +1 -1
- package/static/{chunk-3MVPXC3U.js → chunk-Y67J3BOL.js} +1 -1
- package/static/{chunk-QTPIEEZW.js → chunk-YMIXHRJQ.js} +1 -7
- package/static/{chunk-VZFZUI6D.js → chunk-ZUNKFAKP.js} +1 -1
- package/static/index.html +3 -3
- package/static/main-QN4UCOC5.js +5 -0
- package/static/{styles-XLLEY5Y3.css → styles-46GLIE7Y.css} +1 -1
- package/server/authentication/constants/auth-ldap.js.map +0 -1
- package/server/authentication/dto/two-fa-verify.dto.js.map +0 -1
- package/server/authentication/guards/auth-two-fa-guard.js.map +0 -1
- package/server/authentication/interfaces/two-fa-setup.interface.js +0 -10
- package/server/authentication/interfaces/two-fa-setup.interface.js.map +0 -1
- package/server/authentication/models/auth-method.js +0 -18
- package/server/authentication/models/auth-method.js.map +0 -1
- package/server/authentication/services/auth-manager.service.js.map +0 -1
- package/server/authentication/services/auth-manager.service.spec.js.map +0 -1
- package/server/authentication/services/auth-methods/auth-method-database.service.js.map +0 -1
- package/server/authentication/services/auth-methods/auth-method-database.service.spec.js.map +0 -1
- package/server/authentication/services/auth-methods/auth-method-ldap.service.js +0 -326
- package/server/authentication/services/auth-methods/auth-method-ldap.service.js.map +0 -1
- package/server/authentication/services/auth-methods/auth-method-ldap.service.spec.js +0 -534
- package/server/authentication/services/auth-methods/auth-method-ldap.service.spec.js.map +0 -1
- package/server/authentication/services/auth-methods/auth-method-two-fa.service.js.map +0 -1
- package/server/authentication/services/auth-methods/auth-method-two-fa.service.spec.js.map +0 -1
- package/static/chunk-2YQ4SX3A.js +0 -13
- package/static/chunk-46TJLPJY.js +0 -1
- package/static/chunk-6OEOADR6.js +0 -1
- package/static/chunk-AALPWGPB.js +0 -3
- package/static/chunk-CVXLHSO5.js +0 -1
- package/static/chunk-G7RZN7HN.js +0 -1
- package/static/chunk-LTJNLOX2.js +0 -1
- package/static/chunk-NIKNG2FX.js +0 -1
- package/static/chunk-NNZWSNAW.js +0 -1
- package/static/chunk-NWKBB7J4.js +0 -1
- package/static/chunk-PVYVY3GD.js +0 -1
- package/static/chunk-Q5X5TPAG.js +0 -1
- package/static/chunk-R4VMWCM5.js +0 -1
- package/static/chunk-SNOOCDJD.js +0 -1
- package/static/chunk-SPQH3ATC.js +0 -5
- package/static/chunk-ZCSHU3D7.js +0 -1
- package/static/chunk-ZU5MQTFN.js +0 -4
- package/static/main-5O3KLGIR.js +0 -11
|
@@ -1,8 +1,4 @@
|
|
|
1
|
-
|
|
2
|
-
* Copyright (C) 2012-2025 Johan Legrand <johan.legrand@sync-in.com>
|
|
3
|
-
* This file is part of Sync-in | The open source file sync and share solution
|
|
4
|
-
* See the LICENSE file for licensing details
|
|
5
|
-
*/ "use strict";
|
|
1
|
+
"use strict";
|
|
6
2
|
Object.defineProperty(exports, "__esModule", {
|
|
7
3
|
value: true
|
|
8
4
|
});
|
|
@@ -210,10 +206,16 @@ let SpacesQueries = class SpacesQueries {
|
|
|
210
206
|
async updateSpace(id, set) {
|
|
211
207
|
try {
|
|
212
208
|
(0, _utils.dbCheckAffectedRows)(await this.db.update(_spacesschema.spaces).set(set).where((0, _drizzleorm.eq)(_spacesschema.spaces.id, id)), 1);
|
|
213
|
-
this.logger.debug(
|
|
209
|
+
this.logger.debug({
|
|
210
|
+
tag: this.updateSpace.name,
|
|
211
|
+
msg: `space (${id}) was updated : ${JSON.stringify(set)}`
|
|
212
|
+
});
|
|
214
213
|
return true;
|
|
215
214
|
} catch (e) {
|
|
216
|
-
this.logger.error(
|
|
215
|
+
this.logger.error({
|
|
216
|
+
tag: this.updateSpace.name,
|
|
217
|
+
msg: `space (${id}) was not updated : ${JSON.stringify(set)} : ${e}`
|
|
218
|
+
});
|
|
217
219
|
return false;
|
|
218
220
|
}
|
|
219
221
|
}
|
|
@@ -336,9 +338,15 @@ let SpacesQueries = class SpacesQueries {
|
|
|
336
338
|
permissions: m.permissions
|
|
337
339
|
}), 1);
|
|
338
340
|
status[_constants.ACTION.ADD][`${m.type === _member.MEMBER_TYPE.USER || m.type === _member.MEMBER_TYPE.GUEST ? 'userIds' : 'groupIds'}`].push(m.id);
|
|
339
|
-
this.logger.debug(
|
|
341
|
+
this.logger.debug({
|
|
342
|
+
tag: this.updateMembers.name,
|
|
343
|
+
msg: `${m.type} (${m.id}) added to the space (${spaceId})`
|
|
344
|
+
});
|
|
340
345
|
} catch (e) {
|
|
341
|
-
this.logger.error(
|
|
346
|
+
this.logger.error({
|
|
347
|
+
tag: this.updateMembers.name,
|
|
348
|
+
msg: `${m.type} (${m.id}) was not added to the space ${spaceId} -> : ${e}`
|
|
349
|
+
});
|
|
342
350
|
}
|
|
343
351
|
}
|
|
344
352
|
// update
|
|
@@ -351,9 +359,15 @@ let SpacesQueries = class SpacesQueries {
|
|
|
351
359
|
try {
|
|
352
360
|
(0, _utils.dbCheckAffectedRows)(await this.db.update(_spacesmembersschema.spacesMembers).set(props).where((0, _drizzleorm.and)((0, _drizzleorm.eq)(_spacesmembersschema.spacesMembers.spaceId, spaceId), (0, _drizzleorm.eq)(m.type === _member.MEMBER_TYPE.USER || m.type === _member.MEMBER_TYPE.GUEST ? _spacesmembersschema.spacesMembers.userId : _spacesmembersschema.spacesMembers.groupId, m.id))).limit(1), 1);
|
|
353
361
|
status[_constants.ACTION.UPDATE][`${m.type === _member.MEMBER_TYPE.USER || m.type === _member.MEMBER_TYPE.GUEST ? 'userIds' : 'groupIds'}`].push(m.id);
|
|
354
|
-
this.logger.debug(
|
|
362
|
+
this.logger.debug({
|
|
363
|
+
tag: this.updateMembers.name,
|
|
364
|
+
msg: `${m.type} (${m.id}) was updated on space (${spaceId}) : ${JSON.stringify(props)}`
|
|
365
|
+
});
|
|
355
366
|
} catch (e) {
|
|
356
|
-
this.logger.error(
|
|
367
|
+
this.logger.error({
|
|
368
|
+
tag: this.updateMembers.name,
|
|
369
|
+
msg: `${m.type} (${m.id}) was not updated on space (${spaceId}) : ${JSON.stringify(props)} : ${e}`
|
|
370
|
+
});
|
|
357
371
|
}
|
|
358
372
|
}
|
|
359
373
|
// remove
|
|
@@ -361,9 +375,15 @@ let SpacesQueries = class SpacesQueries {
|
|
|
361
375
|
try {
|
|
362
376
|
(0, _utils.dbCheckAffectedRows)(await this.db.delete(_spacesmembersschema.spacesMembers).where((0, _drizzleorm.and)((0, _drizzleorm.eq)(_spacesmembersschema.spacesMembers.spaceId, spaceId), (0, _drizzleorm.eq)(m.type === _member.MEMBER_TYPE.USER || m.type === _member.MEMBER_TYPE.GUEST ? _spacesmembersschema.spacesMembers.userId : _spacesmembersschema.spacesMembers.groupId, m.id))), 1);
|
|
363
377
|
status[_constants.ACTION.DELETE][`${m.type === _member.MEMBER_TYPE.USER || m.type === _member.MEMBER_TYPE.GUEST ? 'userIds' : 'groupIds'}`].push(m.id);
|
|
364
|
-
this.logger.debug(
|
|
378
|
+
this.logger.debug({
|
|
379
|
+
tag: this.updateMembers.name,
|
|
380
|
+
msg: `${m.type} (${m.id}) removed from space (${spaceId})`
|
|
381
|
+
});
|
|
365
382
|
} catch (e) {
|
|
366
|
-
this.logger.error(
|
|
383
|
+
this.logger.error({
|
|
384
|
+
tag: this.updateMembers.name,
|
|
385
|
+
msg: `${m.type} (${m.id}) was not removed from space (${spaceId}) : ${e}`
|
|
386
|
+
});
|
|
367
387
|
}
|
|
368
388
|
}
|
|
369
389
|
return status;
|
|
@@ -539,10 +559,16 @@ let SpacesQueries = class SpacesQueries {
|
|
|
539
559
|
}
|
|
540
560
|
try {
|
|
541
561
|
(0, _utils.dbCheckAffectedRows)(await this.db.insert(_spacesrootsschema.spacesRoots).values(r), 1);
|
|
542
|
-
this.logger.debug(
|
|
562
|
+
this.logger.debug({
|
|
563
|
+
tag: this.addRoot.name,
|
|
564
|
+
msg: `*${root.alias}* (${root.id}) added`
|
|
565
|
+
});
|
|
543
566
|
return true;
|
|
544
567
|
} catch (e) {
|
|
545
|
-
this.logger.error(
|
|
568
|
+
this.logger.error({
|
|
569
|
+
tag: this.addRoot.name,
|
|
570
|
+
msg: `*${root.alias}* (${root.id}) was not added : ${JSON.stringify(root)} : ${e}`
|
|
571
|
+
});
|
|
546
572
|
return false;
|
|
547
573
|
}
|
|
548
574
|
}
|
|
@@ -550,10 +576,16 @@ let SpacesQueries = class SpacesQueries {
|
|
|
550
576
|
const where = (0, _utils.convertToWhere)(_spacesrootsschema.spacesRoots, filters);
|
|
551
577
|
try {
|
|
552
578
|
(0, _utils.dbCheckAffectedRows)(await this.db.update(_spacesrootsschema.spacesRoots).set(set).where((0, _drizzleorm.and)(...where)).limit(1), 1);
|
|
553
|
-
this.logger.debug(
|
|
579
|
+
this.logger.debug({
|
|
580
|
+
tag: this.updateRoot.name,
|
|
581
|
+
msg: `${JSON.stringify(filters)} was updated : ${JSON.stringify(set)}`
|
|
582
|
+
});
|
|
554
583
|
return true;
|
|
555
584
|
} catch (e) {
|
|
556
|
-
this.logger.error(
|
|
585
|
+
this.logger.error({
|
|
586
|
+
tag: this.updateRoot.name,
|
|
587
|
+
msg: `${JSON.stringify(filters)} was not updated : ${JSON.stringify(set)} : ${e}`
|
|
588
|
+
});
|
|
557
589
|
return false;
|
|
558
590
|
}
|
|
559
591
|
}
|
|
@@ -595,8 +627,14 @@ let SpacesQueries = class SpacesQueries {
|
|
|
595
627
|
for (const p of patterns){
|
|
596
628
|
const keys = await this.cache.keys(p);
|
|
597
629
|
if (keys.length) {
|
|
598
|
-
this.logger.verbose(
|
|
599
|
-
|
|
630
|
+
this.logger.verbose({
|
|
631
|
+
tag: this.clearCachePermissions.name,
|
|
632
|
+
msg: `${JSON.stringify(keys)}`
|
|
633
|
+
});
|
|
634
|
+
this.cache.mdel(keys).catch((e)=>this.logger.error({
|
|
635
|
+
tag: this.clearCachePermissions.name,
|
|
636
|
+
msg: `${e}`
|
|
637
|
+
}));
|
|
600
638
|
}
|
|
601
639
|
}
|
|
602
640
|
}
|
|
@@ -604,10 +642,16 @@ let SpacesQueries = class SpacesQueries {
|
|
|
604
642
|
async removeRoot(id) {
|
|
605
643
|
try {
|
|
606
644
|
(0, _utils.dbCheckAffectedRows)(await this.db.delete(_spacesrootsschema.spacesRoots).where((0, _drizzleorm.eq)(_spacesrootsschema.spacesRoots.id, id)), 1);
|
|
607
|
-
this.logger.debug(
|
|
645
|
+
this.logger.debug({
|
|
646
|
+
tag: this.removeRoot.name,
|
|
647
|
+
msg: `root (${id}) removed`
|
|
648
|
+
});
|
|
608
649
|
return true;
|
|
609
650
|
} catch (e) {
|
|
610
|
-
this.logger.error(
|
|
651
|
+
this.logger.error({
|
|
652
|
+
tag: this.removeRoot.name,
|
|
653
|
+
msg: `root (${id}) was not deleted : ${e}`
|
|
654
|
+
});
|
|
611
655
|
return false;
|
|
612
656
|
}
|
|
613
657
|
}
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"sources":["../../../../../backend/src/applications/spaces/services/spaces-queries.service.ts"],"sourcesContent":["/*\n * Copyright (C) 2012-2025 Johan Legrand <johan.legrand@sync-in.com>\n * This file is part of Sync-in | The open source file sync and share solution\n * See the LICENSE file for licensing details\n */\n\nimport { Inject, Injectable, Logger } from '@nestjs/common'\nimport { and, countDistinct, eq, isNotNull, isNull, max, SelectedFields, SQL, sql } from 'drizzle-orm'\nimport { alias, union } from 'drizzle-orm/mysql-core'\nimport { MySql2PreparedQuery, MySqlQueryResult } from 'drizzle-orm/mysql2'\nimport { ACTION } from '../../../common/constants'\nimport { popFromObject } from '../../../common/shared'\nimport { CacheDecorator } from '../../../infrastructure/cache/cache.decorator'\nimport { Cache } from '../../../infrastructure/cache/services/cache.service'\nimport { DB_TOKEN_PROVIDER } from '../../../infrastructure/database/constants'\nimport { DBSchema } from '../../../infrastructure/database/interfaces/database.interface'\nimport {\n concatDistinctObjectsInArray,\n convertToSelect,\n convertToWhere,\n dateTimeUTC,\n dbCheckAffectedRows,\n dbGetInsertedId\n} from '../../../infrastructure/database/utils'\nimport { fileHasCommentsSubquerySQL } from '../../comments/schemas/comments.schema'\nimport { FileDBProps } from '../../files/interfaces/file-db-props.interface'\nimport { FileProps } from '../../files/interfaces/file-props.interface'\nimport { File } from '../../files/schemas/file.interface'\nimport { filePathSQL, files } from '../../files/schemas/files.schema'\nimport { FilesQueries } from '../../files/services/files-queries.service'\nimport { links } from '../../links/schemas/links.schema'\nimport { shares } from '../../shares/schemas/shares.schema'\nimport { syncClients } from '../../sync/schemas/sync-clients.schema'\nimport { syncPaths } from '../../sync/schemas/sync-paths.schema'\nimport { GROUP_TYPE } from '../../users/constants/group'\nimport { MEMBER_TYPE } from '../../users/constants/member'\nimport { USER_ROLE } from '../../users/constants/user'\nimport { Member } from '../../users/interfaces/member.interface'\nimport { groups } from '../../users/schemas/groups.schema'\nimport { usersGroups } from '../../users/schemas/users-groups.schema'\nimport { userFullNameSQL, users } from '../../users/schemas/users.schema'\nimport { SPACE_ROLE } from '../constants/spaces'\nimport { SpaceMemberDto } from '../dto/create-or-update-space.dto'\nimport { SpaceEnv } from '../models/space-env.model'\nimport { SpaceProps } from '../models/space-props.model'\nimport { SpaceRootProps } from '../models/space-root-props.model'\nimport { SpaceMembers } from '../schemas/space-members.interface'\nimport { SpaceRoot } from '../schemas/space-root.interface'\nimport { Space } from '../schemas/space.interface'\nimport { spacesMembers } from '../schemas/spaces-members.schema'\nimport { spacesRoots } from '../schemas/spaces-roots.schema'\nimport { spaceGroupConcatPermissions, spaces } from '../schemas/spaces.schema'\n\n@Injectable()\nexport class SpacesQueries {\n private readonly logger = new Logger(SpacesQueries.name)\n private spacePermissionsQuery: MySql2PreparedQuery<any> = null\n private spaceAndRootPermissionsQuery: MySql2PreparedQuery<any> = null\n private spacesWithDetailsQuery: MySql2PreparedQuery<any> = null\n private spacesQuery: MySql2PreparedQuery<any> = null\n private spaceIdsQuery: MySql2PreparedQuery<any> = null\n private spaceQuery: MySql2PreparedQuery<any> = null\n private spacesWithPermissionsQuery: MySql2PreparedQuery<any> = null\n private spaceFromIdWithPermissionsQuery: MySql2PreparedQuery<any> = null\n private spaceRootFilesQuery: MySql2PreparedQuery<any> = null\n\n constructor(\n @Inject(DB_TOKEN_PROVIDER) private readonly db: DBSchema,\n public readonly cache: Cache,\n private readonly filesQueries: FilesQueries\n ) {}\n\n spaceExistsForAlias(alias: string): any | undefined {\n return this.db.query.spaces.findFirst({ columns: { id: true }, where: eq(spaces.alias, alias) })\n }\n\n spaceRootExistsForAlias(spaceId: number, rootAlias: string): any | undefined {\n return this.db.query.spacesRoots.findFirst({\n columns: { id: true },\n where: and(eq(spacesRoots.spaceId, spaceId), eq(spacesRoots.alias, rootAlias))\n })\n }\n\n selectSpaces(fields: Partial<keyof Space>[] = ['id', 'alias', 'name'], where: SQL[]): Promise<Partial<Space>[]> {\n const select: Record<keyof Space, any> = convertToSelect(spaces, fields)\n return this.db\n .select(select)\n .from(spaces)\n .where(and(...where))\n }\n\n spacesQuotaPaths(spaceId?: number): Promise<(Partial<Space> & { externalPaths: string[] })[]> {\n return this.db\n .select({\n id: spaces.id,\n alias: spaces.alias,\n storageUsage: spaces.storageUsage,\n storageQuota: spaces.storageQuota,\n externalPaths: sql<string[]>`JSON_ARRAYAGG(${spacesRoots.externalPath})`.mapWith(JSON.parse).as('externalPaths')\n })\n .from(spaces)\n .leftJoin(spacesRoots, and(eq(spacesRoots.spaceId, spaces.id), isNotNull(spacesRoots.externalPath)))\n .where(and(...[...(spaceId ? [eq(spaces.id, spaceId)] : [])]))\n .groupBy(spaces.id)\n }\n\n async userIsSpaceManager(userId: number, spaceId: number, shareId?: number): Promise<boolean> {\n /* Check if user is a space manager */\n const q = this.db\n .select({\n userId: spacesMembers.userId,\n spaceId: spacesMembers.spaceId,\n ...(shareId && { shareId: shares.id })\n })\n .from(spacesMembers)\n if (shareId) {\n q.innerJoin(shares, and(eq(shares.id, shareId), eq(shares.spaceId, spaceId)))\n }\n const [r] = await q\n .where(and(eq(spacesMembers.spaceId, spaceId), eq(spacesMembers.userId, userId), eq(spacesMembers.role, SPACE_ROLE.IS_MANAGER)))\n .limit(1)\n return r && r.userId === userId && r.spaceId === spaceId && (shareId ? r.shareId === shareId : true)\n }\n\n async getSpaceAsManager(userId: number, spaceId: number): Promise<SpaceProps> {\n /* User must be the manager of the space */\n // todo: make a condition if current user is an admin\n if (!this.spaceQuery) {\n const otherMembers: any = alias(spacesMembers, 'otherMembers')\n const rootOwner: any = alias(users, 'rootOwner')\n // fileOwner: avoid providing file path information for roots not owned by the current user\n const fileOwner: any = alias(files, 'fileOwner')\n const linkUsers: any = alias(users, 'linkUsers')\n this.spaceQuery = this.db\n .select({\n id: spaces.id,\n name: spaces.name,\n alias: spaces.alias,\n description: spaces.description,\n enabled: spaces.enabled,\n storageUsage: spaces.storageUsage,\n storageQuota: spaces.storageQuota,\n storageIndexing: spaces.storageIndexing,\n createdAt: spaces.createdAt,\n modifiedAt: spaces.modifiedAt,\n disabledAt: spaces.disabledAt,\n roots: concatDistinctObjectsInArray(spacesRoots.id, {\n id: spacesRoots.id,\n name: spacesRoots.name,\n alias: spacesRoots.alias,\n externalPath: spacesRoots.externalPath,\n permissions: spacesRoots.permissions,\n createdAt: dateTimeUTC(spacesRoots.createdAt),\n owner: { id: rootOwner.id, login: rootOwner.login, fullName: userFullNameSQL(rootOwner), email: rootOwner.email },\n // fileOwner: (hide if not owner), files: allow fields\n file: { id: fileOwner.id, path: filePathSQL(fileOwner), mime: files.mime }\n }),\n users: concatDistinctObjectsInArray(users.id, {\n id: users.id,\n login: users.login,\n name: userFullNameSQL(users),\n type: sql`IF (${users.role} = ${USER_ROLE.GUEST}, ${MEMBER_TYPE.GUEST}, ${MEMBER_TYPE.USER})`,\n spaceRole: otherMembers.role,\n description: users.email,\n permissions: otherMembers.permissions,\n createdAt: dateTimeUTC(otherMembers.createdAt)\n }),\n groups: concatDistinctObjectsInArray(groups.id, {\n id: groups.id,\n name: groups.name,\n type: sql`IF (${groups.type} = ${GROUP_TYPE.PERSONAL}, ${MEMBER_TYPE.PGROUP}, ${MEMBER_TYPE.GROUP})`,\n spaceRole: sql`${SPACE_ROLE.IS_MEMBER}`,\n description: groups.description,\n permissions: otherMembers.permissions,\n createdAt: dateTimeUTC(otherMembers.createdAt)\n }),\n links: concatDistinctObjectsInArray(linkUsers.id, {\n id: linkUsers.id,\n linkId: links.id,\n name: links.name,\n type: sql.raw(`'${MEMBER_TYPE.USER}'`),\n spaceRole: sql`${SPACE_ROLE.IS_MEMBER}`,\n description: links.email,\n permissions: otherMembers.permissions,\n createdAt: dateTimeUTC(otherMembers.createdAt)\n })\n } satisfies SpaceProps | SelectedFields<any, any>)\n .from(spacesMembers)\n .innerJoin(\n spaces,\n and(\n eq(spaces.id, spacesMembers.spaceId),\n eq(spacesMembers.spaceId, sql.placeholder('spaceId')),\n eq(spacesMembers.userId, sql.placeholder('userId')),\n eq(spacesMembers.role, SPACE_ROLE.IS_MANAGER)\n )\n )\n .innerJoin(otherMembers, eq(otherMembers.spaceId, spaces.id))\n .leftJoin(users, and(isNull(otherMembers.linkId), eq(otherMembers.userId, users.id)))\n .leftJoin(linkUsers, and(isNotNull(otherMembers.linkId), eq(linkUsers.id, otherMembers.userId)))\n .leftJoin(links, and(eq(links.userId, linkUsers.id), eq(links.id, otherMembers.linkId)))\n .leftJoin(groups, eq(otherMembers.groupId, groups.id))\n .leftJoin(spacesRoots, eq(spacesRoots.spaceId, spaces.id))\n .leftJoin(files, eq(spacesRoots.fileId, files.id))\n .leftJoin(rootOwner, eq(rootOwner.id, files.ownerId))\n .leftJoin(fileOwner, and(eq(fileOwner.id, files.id), eq(fileOwner.ownerId, sql.placeholder('userId'))))\n .groupBy(spaces.id)\n .limit(1)\n .prepare()\n }\n const [space] = await this.spaceQuery.execute({ userId, spaceId })\n if (!space) {\n return null\n }\n // merge members\n space.members = [...popFromObject('users', space), ...popFromObject('groups', space), ...popFromObject('links', space)]\n return new SpaceProps(space, userId)\n }\n\n async createSpace(space: SpaceProps): Promise<number> {\n return dbGetInsertedId(await this.db.insert(spaces).values(space))\n }\n\n async deleteSpace(spaceId: number, deleteNow = false): Promise<boolean> {\n let r: MySqlQueryResult\n if (deleteNow) {\n r = await this.db.delete(spaces).where(eq(spaces.id, spaceId))\n } else {\n r = await this.db\n .update(spaces)\n .set({ enabled: false, disabledAt: new Date() } as Space)\n .where(eq(spaces.id, spaceId))\n }\n return dbCheckAffectedRows(r, 1)\n }\n\n async updateSpace(id: number, set: Partial<Record<keyof Space, any>>): Promise<boolean> {\n try {\n dbCheckAffectedRows(await this.db.update(spaces).set(set).where(eq(spaces.id, id)), 1)\n this.logger.debug(`${this.updateSpace.name} - space (${id}) was updated : ${JSON.stringify(set)}`)\n return true\n } catch (e) {\n this.logger.error(`${this.updateSpace.name} - space (${id}) was not updated : ${JSON.stringify(set)} : ${e}`)\n return false\n }\n }\n\n async spaceRootFiles(\n userId: number,\n spaceId: number,\n options: {\n withShares?: boolean\n withHasComments?: boolean\n withSyncs?: boolean\n }\n ): Promise<FileProps[]> {\n if (!this.spaceRootFilesQuery) {\n const select: FileProps | SelectedFields<any, any> = {\n id: files.id,\n path: filePathSQL(files),\n isDir: files.isDir,\n inTrash: files.inTrash,\n size: files.size,\n ctime: files.ctime,\n mtime: files.mtime,\n mime: files.mime,\n root: {\n id: spacesRoots.id,\n alias: spacesRoots.alias,\n name: spacesRoots.name,\n externalPath: spacesRoots.externalPath,\n permissions: spacesRoots.permissions,\n owner: { id: users.id, login: users.login, email: users.email, fullName: userFullNameSQL(users) }\n },\n shares: sql`IF (${sql.placeholder('withShares')}, ${concatDistinctObjectsInArray(shares.id, {\n id: shares.id,\n alias: shares.alias,\n name: shares.name,\n type: shares.type\n })}, '[]')`.mapWith(JSON.parse),\n syncs: sql`IF (${sql.placeholder('withSyncs')}, ${concatDistinctObjectsInArray(syncPaths.id, {\n id: syncPaths.id,\n clientId: syncClients.id,\n clientName: sql`JSON_VALUE(${syncClients.info}, '$.node')`\n })}, '[]')`.mapWith(JSON.parse),\n hasComments: sql<boolean>`IF (${sql.placeholder('withHasComments')}, ${fileHasCommentsSubquerySQL(files.id)}, 0)`.mapWith(Boolean)\n }\n this.spaceRootFilesQuery = this.db\n .select(select)\n .from(spacesRoots)\n .leftJoin(files, eq(files.id, spacesRoots.fileId))\n .leftJoin(users, eq(users.id, files.ownerId))\n .leftJoin(\n shares,\n and(\n eq(sql.placeholder('withShares'), sql.raw('1')),\n eq(shares.ownerId, sql.placeholder('userId')),\n isNull(shares.fileId),\n isNull(shares.parentId),\n eq(shares.spaceRootId, spacesRoots.id)\n )\n )\n .leftJoin(syncClients, and(eq(sql.placeholder('withSyncs'), sql.raw('1')), eq(syncClients.ownerId, sql.placeholder('userId'))))\n .leftJoin(\n syncPaths,\n and(\n eq(sql.placeholder('withSyncs'), sql.raw('1')),\n eq(syncPaths.clientId, syncClients.id),\n eq(syncPaths.spaceId, sql.placeholder('spaceId')),\n eq(syncPaths.spaceRootId, spacesRoots.id),\n isNull(syncPaths.fileId)\n )\n )\n .where(eq(spacesRoots.spaceId, sql.placeholder('spaceId')))\n .groupBy(files.id, spacesRoots.id)\n .prepare()\n }\n return this.spaceRootFilesQuery.execute({\n userId,\n spaceId,\n withHasComments: +!!options.withHasComments,\n withShares: +!!options.withShares,\n withSyncs: +!!options.withSyncs\n })\n }\n\n async getSpaceRoots(spaceId: number, userId?: number): Promise<SpaceRootProps[]> {\n const where: SQL<any>[] = [eq(spacesRoots.spaceId, spaceId)]\n if (userId) {\n where.push(eq(files.ownerId, userId))\n }\n return (await this.db\n .select({\n id: spacesRoots.id,\n alias: spacesRoots.alias,\n name: spacesRoots.name,\n permissions: spacesRoots.permissions,\n createdAt: spacesRoots.createdAt,\n ...(!userId && { owner: { id: files.ownerId } }),\n file: {\n id: files.id,\n path: filePathSQL(files),\n mime: files.mime\n }\n })\n .from(spacesRoots)\n .leftJoin(files, eq(files.id, spacesRoots.fileId))\n .where(and(...where))) as SpaceRootProps[]\n }\n\n async getSpaceMemberIds(spaceId: number): Promise<{ groupIds: number[]; userIds: number[] }> {\n const members = { userIds: [], groupIds: [] }\n for (const m of await this.db\n .select({\n userId: spacesMembers.userId,\n groupId: spacesMembers.groupId\n })\n .from(spacesMembers)\n .where(eq(spacesMembers.spaceId, spaceId))) {\n if (m.userId) {\n members.userIds.push(m.userId)\n } else {\n members.groupIds.push(m.groupId)\n }\n }\n return members\n }\n\n async updateMembers(\n spaceId: number,\n add: SpaceMemberDto[],\n update: Record<string | 'object', Partial<SpaceMembers> | SpaceMemberDto>[],\n remove: SpaceMemberDto[]\n ): Promise<Record<Exclude<ACTION, ACTION.DELETE_PERMANENTLY>, { userIds: number[]; groupIds: number[] }>> {\n // store status\n const status: Record<Exclude<ACTION, ACTION.DELETE_PERMANENTLY>, { userIds: number[]; groupIds: number[] }> = {\n [ACTION.ADD]: { userIds: [], groupIds: [] },\n [ACTION.UPDATE]: { userIds: [], groupIds: [] },\n [ACTION.DELETE]: { userIds: [], groupIds: [] }\n }\n // add\n for (const m of add) {\n try {\n dbCheckAffectedRows(\n await this.db.insert(spacesMembers).values({\n spaceId: spaceId,\n ...(m.type === MEMBER_TYPE.USER || m.type === MEMBER_TYPE.GUEST ? { userId: m.id } : { groupId: m.id }),\n role: m.spaceRole,\n permissions: m.permissions\n } as SpaceMembers),\n 1\n )\n status[ACTION.ADD][`${m.type === MEMBER_TYPE.USER || m.type === MEMBER_TYPE.GUEST ? 'userIds' : 'groupIds'}`].push(m.id)\n this.logger.debug(`${this.updateMembers.name} - ${m.type} (${m.id}) added to the space (${spaceId})`)\n } catch (e) {\n this.logger.error(`${this.updateMembers.name} - ${m.type} (${m.id}) was not added to the space ${spaceId} -> : ${e}`)\n }\n }\n // update\n for (const props of update) {\n const m: SpaceMemberDto = popFromObject('object', props)\n const spaceRole = popFromObject('spaceRole', props)\n if (Number.isInteger(spaceRole)) {\n props.role = spaceRole\n }\n try {\n dbCheckAffectedRows(\n await this.db\n .update(spacesMembers)\n .set(props)\n .where(\n and(\n eq(spacesMembers.spaceId, spaceId),\n eq(m.type === MEMBER_TYPE.USER || m.type === MEMBER_TYPE.GUEST ? spacesMembers.userId : spacesMembers.groupId, m.id)\n )\n )\n .limit(1),\n 1\n )\n status[ACTION.UPDATE][`${m.type === MEMBER_TYPE.USER || m.type === MEMBER_TYPE.GUEST ? 'userIds' : 'groupIds'}`].push(m.id)\n this.logger.debug(`${this.updateMembers.name} - ${m.type} (${m.id}) was updated on space (${spaceId}) : ${JSON.stringify(props)}`)\n } catch (e) {\n this.logger.error(`${this.updateMembers.name} - ${m.type} (${m.id}) was not updated on space (${spaceId}) : ${JSON.stringify(props)} : ${e}`)\n }\n }\n // remove\n for (const m of remove) {\n try {\n dbCheckAffectedRows(\n await this.db\n .delete(spacesMembers)\n .where(\n and(\n eq(spacesMembers.spaceId, spaceId),\n eq(m.type === MEMBER_TYPE.USER || m.type === MEMBER_TYPE.GUEST ? spacesMembers.userId : spacesMembers.groupId, m.id)\n )\n ),\n 1\n )\n status[ACTION.DELETE][`${m.type === MEMBER_TYPE.USER || m.type === MEMBER_TYPE.GUEST ? 'userIds' : 'groupIds'}`].push(m.id)\n this.logger.debug(`${this.updateMembers.name} - ${m.type} (${m.id}) removed from space (${spaceId})`)\n } catch (e) {\n this.logger.error(`${this.updateMembers.name} - ${m.type} (${m.id}) was not removed from space (${spaceId}) : ${e}`)\n }\n }\n return status\n }\n\n async updateSpaceRoots(\n userId: number,\n spaceId: number,\n add: SpaceRootProps[],\n update: Record<string | 'object', Partial<SpaceRootProps> | SpaceRootProps>[],\n remove: SpaceRootProps[]\n ): Promise<Record<Exclude<ACTION, ACTION.DELETE_PERMANENTLY>, SpaceRootProps[]>> {\n // store status\n const status = {} as Record<Exclude<ACTION, ACTION.DELETE_PERMANENTLY>, SpaceRootProps[]>\n // add\n for (const r of add) {\n if (await this.addRoot(userId, spaceId, r)) {\n ;(status[ACTION.ADD] ||= []).push(r)\n }\n }\n // update\n for (const props of update) {\n const r: SpaceRootProps = popFromObject('object', props)\n if (await this.updateRoot(props, { id: r.id })) {\n ;(status[ACTION.UPDATE] ||= []).push(r)\n }\n }\n // delete\n for (const r of remove) {\n if (await this.removeRoot(r.id)) {\n ;(status[ACTION.DELETE] ||= []).push(r)\n }\n }\n return status\n }\n\n @CacheDecorator()\n async spaceIds(userId: number): Promise<number[]> {\n if (!this.spaceIdsQuery) {\n const unionAlias = this.fromUserAndGroups({ id: spaces.id })\n this.spaceIdsQuery = this.db.select({ id: unionAlias.id }).from(unionAlias).groupBy(unionAlias.id).prepare()\n }\n // `userId` is used in `fromUserAndGroups` function\n return (await this.spaceIdsQuery.execute({ userId })).map((r: { id: number }) => r.id)\n }\n\n @CacheDecorator()\n async spaces(userId: number, withPermissions = false, fromId?: number): Promise<SpaceProps[]> {\n let pQuery: MySql2PreparedQuery<any>\n if (fromId) {\n pQuery = this.spaceFromIdWithPermissionsQuery\n } else if (withPermissions) {\n pQuery = this.spacesWithPermissionsQuery\n } else {\n pQuery = this.spacesQuery\n }\n if (!pQuery) {\n const selectUnion: Space | SelectedFields<any, any> = {\n id: spaces.id,\n alias: spaces.alias,\n name: spaces.name,\n description: spaces.description,\n enabled: spaces.enabled,\n createdAt: spaces.createdAt,\n modifiedAt: spaces.modifiedAt,\n ...(withPermissions && { permissions: spacesMembers.permissions, role: spacesMembers.role })\n }\n const unionAlias = this.fromUserAndGroups(selectUnion)\n const select: Space | SelectedFields<any, any> = {\n id: unionAlias.id,\n alias: unionAlias.alias,\n name: unionAlias.name,\n description: unionAlias.description,\n enabled: unionAlias.enabled,\n createdAt: unionAlias.createdAt,\n modifiedAt: unionAlias.modifiedAt,\n ...(withPermissions && {\n permissions: spaceGroupConcatPermissions(unionAlias.permissions),\n role: max(unionAlias.role)\n })\n }\n if (fromId) {\n pQuery = this.db\n .select(select)\n .from(unionAlias)\n .where(eq(unionAlias.id, sql.placeholder('fromId')))\n .limit(1)\n .prepare()\n this.spaceFromIdWithPermissionsQuery = pQuery\n } else {\n pQuery = this.db.select(select).from(unionAlias).groupBy(unionAlias.id).prepare()\n if (withPermissions) {\n this.spacesWithPermissionsQuery = pQuery\n } else {\n this.spacesQuery = pQuery\n }\n }\n }\n // SpaceProps instance is required, if the user is a space manager, he must have all permissions\n // `userId` is used in `fromUserAndGroups` function\n return (await pQuery.execute({ userId, fromId })).map((s: Partial<SpaceProps>) => new SpaceProps(s))\n }\n\n async spacesWithDetails(userId: number): Promise<SpaceProps[]> {\n if (!this.spacesWithDetailsQuery) {\n const selectUnion: Space | SelectedFields<any, any> = {\n id: spaces.id,\n alias: spaces.alias,\n name: spaces.name,\n description: spaces.description,\n enabled: spaces.enabled,\n permissions: spacesMembers.permissions,\n role: spacesMembers.role,\n createdAt: spaces.createdAt,\n modifiedAt: spaces.modifiedAt,\n disabledAt: spaces.disabledAt\n }\n const unionAlias = this.fromUserAndGroups(selectUnion)\n const managers: any = alias(users, 'managers')\n const select: Space | SelectedFields<any, any> = {\n id: unionAlias.id,\n alias: unionAlias.alias,\n name: unionAlias.name,\n description: unionAlias.description,\n enabled: unionAlias.enabled,\n permissions: spaceGroupConcatPermissions(unionAlias.permissions),\n role: max(unionAlias.role),\n modifiedAt: unionAlias.modifiedAt,\n createdAt: unionAlias.createdAt,\n disabledAt: unionAlias.disabledAt,\n members: concatDistinctObjectsInArray(managers.id, {\n id: managers.id,\n login: managers.login,\n name: userFullNameSQL(managers),\n description: managers.email,\n type: sql.raw(`'${MEMBER_TYPE.USER}'`),\n spaceRole: spacesMembers.role,\n permissions: sql<string>`''`,\n createdAt: dateTimeUTC(spacesMembers.createdAt)\n } satisfies Record<keyof Pick<Member, 'id' | 'name' | 'login' | 'description' | 'type' | 'permissions' | 'spaceRole' | 'createdAt'>, any>),\n counts: {\n users: sql`COUNT(DISTINCT(CASE WHEN ${spacesMembers.userId} IS NOT NULL AND ${spacesMembers.linkId} IS NULL THEN ${spacesMembers.userId} END))`,\n groups: countDistinct(spacesMembers.groupId),\n links: sql`COUNT(DISTINCT(CASE WHEN ${spacesMembers.linkId} IS NOT NULL THEN ${spacesMembers.linkId} END))`,\n roots: countDistinct(files.id),\n shares: sql`COUNT(DISTINCT(CASE WHEN ${shares.id} IS NOT NULL THEN ${shares.id} END))`\n }\n }\n this.spacesWithDetailsQuery = this.db\n .select(select)\n .from(unionAlias)\n .leftJoin(spacesMembers, eq(spacesMembers.spaceId, unionAlias.id))\n .leftJoin(users, eq(users.id, spacesMembers.userId))\n .leftJoin(groups, eq(groups.id, spacesMembers.groupId))\n .leftJoin(managers, and(eq(spacesMembers.userId, managers.id), eq(spacesMembers.role, SPACE_ROLE.IS_MANAGER)))\n .leftJoin(spacesRoots, eq(spacesRoots.spaceId, unionAlias.id))\n .leftJoin(files, and(eq(files.id, spacesRoots.fileId), eq(files.ownerId, sql.placeholder('userId'))))\n .leftJoin(shares, and(eq(unionAlias.role, 1), eq(shares.spaceId, unionAlias.id), isNotNull(shares.spaceId)))\n .groupBy(unionAlias.id)\n .prepare()\n }\n const r: MySqlQueryResult = await this.spacesWithDetailsQuery.execute({ userId })\n return r.length ? r.map((s: Partial<SpaceProps>) => new SpaceProps(s)) : []\n }\n\n @CacheDecorator()\n async permissions(userId: number, spaceAlias: string, rootAlias: string): Promise<Partial<SpaceEnv>> {\n if (rootAlias) {\n return await this.spaceAndRootPermissions(userId, spaceAlias, rootAlias)\n }\n return await this.spacePermissions(userId, spaceAlias)\n }\n\n async addRoot(userId: number, spaceId: number, root: SpaceRootProps): Promise<boolean> {\n const r: Partial<SpaceRoot> = { name: root.name, alias: root.alias, permissions: root.permissions, spaceId: spaceId }\n if (root.externalPath) {\n r.externalPath = root.externalPath\n } else {\n r.fileId = await this.getOrCreateUserFile(userId, root.file)\n }\n try {\n dbCheckAffectedRows(await this.db.insert(spacesRoots).values(r as SpaceRoot), 1)\n this.logger.debug(`${this.addRoot.name} - *${root.alias}* (${root.id}) added`)\n return true\n } catch (e) {\n this.logger.error(`${this.addRoot.name} - *${root.alias}* (${root.id}) was not added : ${JSON.stringify(root)} : ${e}`)\n return false\n }\n }\n\n async updateRoot(set: Partial<Record<keyof SpaceRoot, any>>, filters: Partial<Record<keyof SpaceRoot, any>>): Promise<boolean> {\n const where: SQL[] = convertToWhere(spacesRoots, filters)\n try {\n dbCheckAffectedRows(\n await this.db\n .update(spacesRoots)\n .set(set)\n .where(and(...where))\n .limit(1),\n 1\n )\n this.logger.debug(`${this.updateRoot.name} - ${JSON.stringify(filters)} was updated : ${JSON.stringify(set)}`)\n return true\n } catch (e) {\n this.logger.error(`${this.updateRoot.name} - ${JSON.stringify(filters)} was not updated : ${JSON.stringify(set)} : ${e}`)\n return false\n }\n }\n\n getUserFile(userId: number, fileId: number): Promise<Pick<File, 'id' | 'path'>> {\n return this.filesQueries.getUserFile(userId, fileId)\n }\n\n getOrCreateUserFile(userId: number, file: FileProps): Promise<number> {\n return this.filesQueries.getOrCreateUserFile(userId, file)\n }\n\n getOrCreateSpaceFile(fileId: number, file: FileProps, dbFile: FileDBProps): Promise<number> {\n return this.filesQueries.getOrCreateSpaceFile(fileId, file, dbFile)\n }\n\n async clearCachePermissions(spaceAlias: string, rootAliases?: string[], userIds?: number[]) {\n const uIds = userIds ?? ['*']\n for (const uid of uIds) {\n const basePattern = [this.constructor.name, this.permissions.name, uid, spaceAlias]\n const patterns: string[] = []\n if (rootAliases?.length) {\n // clear cache on space root\n rootAliases.forEach((rAlias: string) => patterns.push(this.cache.genSlugKey(...basePattern, rAlias)))\n } else {\n // clear cache on spaces list\n patterns.push(this.cache.genSlugKey(...[this.constructor.name, this.spaces.name, uid, '*']))\n // clear cache on spaces and roots\n patterns.push(this.cache.genSlugKey(...basePattern), this.cache.genSlugKey(...basePattern, '*'))\n }\n for (const p of patterns) {\n const keys = await this.cache.keys(p)\n if (keys.length) {\n this.logger.verbose(`${this.clearCachePermissions.name} - ${JSON.stringify(keys)}`)\n this.cache.mdel(keys).catch((e: Error) => this.logger.error(`${this.clearCachePermissions.name} - ${e}`))\n }\n }\n }\n }\n\n private async removeRoot(id: number): Promise<boolean> {\n try {\n dbCheckAffectedRows(await this.db.delete(spacesRoots).where(eq(spacesRoots.id, id)), 1)\n this.logger.debug(`${this.removeRoot.name} - root (${id}) removed`)\n return true\n } catch (e) {\n this.logger.error(`${this.removeRoot.name} - root (${id}) was not deleted : ${e}`)\n return false\n }\n }\n\n private async spacePermissions(userId: number, spaceAlias: string): Promise<Partial<SpaceEnv>> {\n if (!this.spacePermissionsQuery) {\n const selectUnion: SpaceEnv | SelectedFields<any, any> = {\n id: spaces.id,\n alias: spaces.alias,\n name: spaces.name,\n enabled: spaces.enabled,\n permissions: spacesMembers.permissions,\n role: spacesMembers.role\n }\n const filters: SQL[] = [eq(spaces.alias, sql.placeholder('spaceAlias'))]\n const unionAlias = this.fromUserAndGroups(selectUnion, filters)\n const select: SpaceEnv | SelectedFields<any, any> = {\n id: unionAlias.id,\n alias: unionAlias.alias,\n name: unionAlias.name,\n enabled: unionAlias.enabled,\n permissions: spaceGroupConcatPermissions(unionAlias.permissions),\n role: max(unionAlias.role)\n }\n this.spacePermissionsQuery = this.db.select(select).from(unionAlias).groupBy(unionAlias.id).limit(1).prepare()\n }\n // `userId` is used in `fromUserAndGroups` function\n const r: MySqlQueryResult = await this.spacePermissionsQuery.execute({ userId, spaceAlias })\n return r.length ? r.at(0) : null\n }\n\n private async spaceAndRootPermissions(userId: number, spaceAlias: string, rootAlias: string): Promise<Partial<SpaceEnv>> {\n if (!this.spaceAndRootPermissionsQuery) {\n const selectUnion: SpaceEnv | SelectedFields<any, any> = {\n id: spaces.id,\n alias: spaces.alias,\n name: spaces.name,\n enabled: spaces.enabled,\n permissions: spacesMembers.permissions,\n role: spacesMembers.role,\n rootId: sql`${spacesRoots.id}`.as('rootId'),\n rootAlias: sql`${spacesRoots.alias}`.as('rootAlias'),\n rootName: sql`${spacesRoots.name}`.as('rootName'),\n rootPermissions: sql`${spacesRoots.permissions}`.as('rootPermissions'),\n rootOwnerId: files.ownerId,\n rootOwnerLogin: users.login,\n rootFileId: sql`${files.id}`.as('rootFileId'),\n rootFilePath: filePathSQL(files).as('rootFilePath'),\n rootFileInTrash: files.inTrash,\n rootExternalPath: spacesRoots.externalPath\n }\n const filters: SQL[] = [eq(spaces.alias, sql.placeholder('spaceAlias'))]\n const fromUser = this.fromUserQuery(selectUnion, filters).$dynamic()\n const fromGroups = this.fromGroupsQuery(selectUnion, filters).$dynamic()\n for (const q of [fromUser, fromGroups]) {\n q.leftJoin(spacesRoots, and(eq(spacesRoots.spaceId, spacesMembers.spaceId), eq(spacesRoots.alias, sql.placeholder('rootAlias'))))\n .leftJoin(files, eq(files.id, spacesRoots.fileId))\n .leftJoin(users, eq(users.id, files.ownerId))\n }\n const unionAlias = union(fromUser, fromGroups).as('union_alias')\n const select: SpaceEnv | SelectedFields<any, any> = {\n id: unionAlias.id,\n alias: unionAlias.alias,\n name: unionAlias.name,\n enabled: unionAlias.enabled,\n permissions: spaceGroupConcatPermissions(unionAlias.permissions),\n role: sql<SPACE_ROLE>`MAX(${unionAlias.role})`,\n root: {\n id: unionAlias.rootId,\n alias: unionAlias.rootAlias,\n name: unionAlias.rootName,\n permissions: unionAlias.rootPermissions,\n owner: { id: unionAlias.rootOwnerId, login: unionAlias.rootOwnerLogin },\n file: { id: unionAlias.rootFileId, path: unionAlias.rootFilePath, inTrash: unionAlias.rootFileInTrash },\n externalPath: unionAlias.rootExternalPath\n }\n }\n this.spaceAndRootPermissionsQuery = this.db.select(select).from(unionAlias).groupBy(unionAlias.id).limit(1).prepare()\n }\n // `userId` is used in `fromUserQuery` and `fromGroupsQuery` function\n const r: MySqlQueryResult = await this.spaceAndRootPermissionsQuery.execute({ userId, spaceAlias, rootAlias })\n return r.length ? r.at(0) : null\n }\n\n private fromUserAndGroups(select: SelectedFields<any, any>, filters: SQL[] = []) {\n return union(this.fromUserQuery(select, filters), this.fromGroupsQuery(select, filters)).as('union_alias')\n }\n\n private fromUserQuery(select: SelectedFields<any, any>, filters: SQL[] = []) {\n const where = [eq(spacesMembers.userId, sql.placeholder('userId')), ...filters]\n return this.db\n .select(select)\n .from(spacesMembers)\n .innerJoin(spaces, eq(spacesMembers.spaceId, spaces.id))\n .where(and(...where))\n }\n\n private fromGroupsQuery(select: SelectedFields<any, any>, filters: SQL[] = []) {\n const where = [eq(spacesMembers.groupId, usersGroups.groupId), ...filters]\n return this.db\n .select(select)\n .from(spacesMembers)\n .innerJoin(usersGroups, eq(usersGroups.userId, sql.placeholder('userId')))\n .innerJoin(spaces, eq(spacesMembers.spaceId, spaces.id))\n .where(and(...where))\n }\n}\n"],"names":["SpacesQueries","spaceExistsForAlias","alias","db","query","spaces","findFirst","columns","id","where","eq","spaceRootExistsForAlias","spaceId","rootAlias","spacesRoots","and","selectSpaces","fields","select","convertToSelect","from","spacesQuotaPaths","storageUsage","storageQuota","externalPaths","sql","externalPath","mapWith","JSON","parse","as","leftJoin","isNotNull","groupBy","userIsSpaceManager","userId","shareId","q","spacesMembers","shares","innerJoin","r","role","SPACE_ROLE","IS_MANAGER","limit","getSpaceAsManager","spaceQuery","otherMembers","rootOwner","users","fileOwner","files","linkUsers","name","description","enabled","storageIndexing","createdAt","modifiedAt","disabledAt","roots","concatDistinctObjectsInArray","permissions","dateTimeUTC","owner","login","fullName","userFullNameSQL","email","file","path","filePathSQL","mime","type","USER_ROLE","GUEST","MEMBER_TYPE","USER","spaceRole","groups","GROUP_TYPE","PERSONAL","PGROUP","GROUP","IS_MEMBER","links","linkId","raw","placeholder","isNull","groupId","fileId","ownerId","prepare","space","execute","members","popFromObject","SpaceProps","createSpace","dbGetInsertedId","insert","values","deleteSpace","deleteNow","delete","update","set","Date","dbCheckAffectedRows","updateSpace","logger","debug","stringify","e","error","spaceRootFiles","options","spaceRootFilesQuery","isDir","inTrash","size","ctime","mtime","root","syncs","syncPaths","clientId","syncClients","clientName","info","hasComments","fileHasCommentsSubquerySQL","Boolean","parentId","spaceRootId","withHasComments","withShares","withSyncs","getSpaceRoots","push","getSpaceMemberIds","userIds","groupIds","m","updateMembers","add","remove","status","ACTION","ADD","UPDATE","DELETE","props","Number","isInteger","updateSpaceRoots","addRoot","updateRoot","removeRoot","spaceIds","spaceIdsQuery","unionAlias","fromUserAndGroups","map","withPermissions","fromId","pQuery","spaceFromIdWithPermissionsQuery","spacesWithPermissionsQuery","spacesQuery","selectUnion","spaceGroupConcatPermissions","max","s","spacesWithDetails","spacesWithDetailsQuery","managers","counts","countDistinct","length","spaceAlias","spaceAndRootPermissions","spacePermissions","getOrCreateUserFile","filters","convertToWhere","getUserFile","filesQueries","getOrCreateSpaceFile","dbFile","clearCachePermissions","rootAliases","uIds","uid","basePattern","patterns","forEach","rAlias","cache","genSlugKey","p","keys","verbose","mdel","catch","spacePermissionsQuery","at","spaceAndRootPermissionsQuery","rootId","rootName","rootPermissions","rootOwnerId","rootOwnerLogin","rootFileId","rootFilePath","rootFileInTrash","rootExternalPath","fromUser","fromUserQuery","$dynamic","fromGroups","fromGroupsQuery","union","usersGroups","Logger"],"mappings":"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"}
|
|
1
|
+
{"version":3,"sources":["../../../../../backend/src/applications/spaces/services/spaces-queries.service.ts"],"sourcesContent":["import { Inject, Injectable, Logger } from '@nestjs/common'\nimport { and, countDistinct, eq, isNotNull, isNull, max, SelectedFields, SQL, sql } from 'drizzle-orm'\nimport { alias, union } from 'drizzle-orm/mysql-core'\nimport { MySql2PreparedQuery, MySqlQueryResult } from 'drizzle-orm/mysql2'\nimport { ACTION } from '../../../common/constants'\nimport { popFromObject } from '../../../common/shared'\nimport { CacheDecorator } from '../../../infrastructure/cache/cache.decorator'\nimport { Cache } from '../../../infrastructure/cache/services/cache.service'\nimport { DB_TOKEN_PROVIDER } from '../../../infrastructure/database/constants'\nimport { DBSchema } from '../../../infrastructure/database/interfaces/database.interface'\nimport {\n concatDistinctObjectsInArray,\n convertToSelect,\n convertToWhere,\n dateTimeUTC,\n dbCheckAffectedRows,\n dbGetInsertedId\n} from '../../../infrastructure/database/utils'\nimport { fileHasCommentsSubquerySQL } from '../../comments/schemas/comments.schema'\nimport { FileDBProps } from '../../files/interfaces/file-db-props.interface'\nimport { FileProps } from '../../files/interfaces/file-props.interface'\nimport { File } from '../../files/schemas/file.interface'\nimport { filePathSQL, files } from '../../files/schemas/files.schema'\nimport { FilesQueries } from '../../files/services/files-queries.service'\nimport { links } from '../../links/schemas/links.schema'\nimport { shares } from '../../shares/schemas/shares.schema'\nimport { syncClients } from '../../sync/schemas/sync-clients.schema'\nimport { syncPaths } from '../../sync/schemas/sync-paths.schema'\nimport { GROUP_TYPE } from '../../users/constants/group'\nimport { MEMBER_TYPE } from '../../users/constants/member'\nimport { USER_ROLE } from '../../users/constants/user'\nimport { Member } from '../../users/interfaces/member.interface'\nimport { groups } from '../../users/schemas/groups.schema'\nimport { usersGroups } from '../../users/schemas/users-groups.schema'\nimport { userFullNameSQL, users } from '../../users/schemas/users.schema'\nimport { SPACE_ROLE } from '../constants/spaces'\nimport { SpaceMemberDto } from '../dto/create-or-update-space.dto'\nimport { SpaceEnv } from '../models/space-env.model'\nimport { SpaceProps } from '../models/space-props.model'\nimport { SpaceRootProps } from '../models/space-root-props.model'\nimport { SpaceMembers } from '../schemas/space-members.interface'\nimport { SpaceRoot } from '../schemas/space-root.interface'\nimport { Space } from '../schemas/space.interface'\nimport { spacesMembers } from '../schemas/spaces-members.schema'\nimport { spacesRoots } from '../schemas/spaces-roots.schema'\nimport { spaceGroupConcatPermissions, spaces } from '../schemas/spaces.schema'\n\n@Injectable()\nexport class SpacesQueries {\n private readonly logger = new Logger(SpacesQueries.name)\n private spacePermissionsQuery: MySql2PreparedQuery<any> = null\n private spaceAndRootPermissionsQuery: MySql2PreparedQuery<any> = null\n private spacesWithDetailsQuery: MySql2PreparedQuery<any> = null\n private spacesQuery: MySql2PreparedQuery<any> = null\n private spaceIdsQuery: MySql2PreparedQuery<any> = null\n private spaceQuery: MySql2PreparedQuery<any> = null\n private spacesWithPermissionsQuery: MySql2PreparedQuery<any> = null\n private spaceFromIdWithPermissionsQuery: MySql2PreparedQuery<any> = null\n private spaceRootFilesQuery: MySql2PreparedQuery<any> = null\n\n constructor(\n @Inject(DB_TOKEN_PROVIDER) private readonly db: DBSchema,\n public readonly cache: Cache,\n private readonly filesQueries: FilesQueries\n ) {}\n\n spaceExistsForAlias(alias: string): any | undefined {\n return this.db.query.spaces.findFirst({ columns: { id: true }, where: eq(spaces.alias, alias) })\n }\n\n spaceRootExistsForAlias(spaceId: number, rootAlias: string): any | undefined {\n return this.db.query.spacesRoots.findFirst({\n columns: { id: true },\n where: and(eq(spacesRoots.spaceId, spaceId), eq(spacesRoots.alias, rootAlias))\n })\n }\n\n selectSpaces(fields: Partial<keyof Space>[] = ['id', 'alias', 'name'], where: SQL[]): Promise<Partial<Space>[]> {\n const select: Record<keyof Space, any> = convertToSelect(spaces, fields)\n return this.db\n .select(select)\n .from(spaces)\n .where(and(...where))\n }\n\n spacesQuotaPaths(spaceId?: number): Promise<(Partial<Space> & { externalPaths: string[] })[]> {\n return this.db\n .select({\n id: spaces.id,\n alias: spaces.alias,\n storageUsage: spaces.storageUsage,\n storageQuota: spaces.storageQuota,\n externalPaths: sql<string[]>`JSON_ARRAYAGG(${spacesRoots.externalPath})`.mapWith(JSON.parse).as('externalPaths')\n })\n .from(spaces)\n .leftJoin(spacesRoots, and(eq(spacesRoots.spaceId, spaces.id), isNotNull(spacesRoots.externalPath)))\n .where(and(...[...(spaceId ? [eq(spaces.id, spaceId)] : [])]))\n .groupBy(spaces.id)\n }\n\n async userIsSpaceManager(userId: number, spaceId: number, shareId?: number): Promise<boolean> {\n /* Check if user is a space manager */\n const q = this.db\n .select({\n userId: spacesMembers.userId,\n spaceId: spacesMembers.spaceId,\n ...(shareId && { shareId: shares.id })\n })\n .from(spacesMembers)\n if (shareId) {\n q.innerJoin(shares, and(eq(shares.id, shareId), eq(shares.spaceId, spaceId)))\n }\n const [r] = await q\n .where(and(eq(spacesMembers.spaceId, spaceId), eq(spacesMembers.userId, userId), eq(spacesMembers.role, SPACE_ROLE.IS_MANAGER)))\n .limit(1)\n return r && r.userId === userId && r.spaceId === spaceId && (shareId ? r.shareId === shareId : true)\n }\n\n async getSpaceAsManager(userId: number, spaceId: number): Promise<SpaceProps> {\n /* User must be the manager of the space */\n // todo: make a condition if current user is an admin\n if (!this.spaceQuery) {\n const otherMembers: any = alias(spacesMembers, 'otherMembers')\n const rootOwner: any = alias(users, 'rootOwner')\n // fileOwner: avoid providing file path information for roots not owned by the current user\n const fileOwner: any = alias(files, 'fileOwner')\n const linkUsers: any = alias(users, 'linkUsers')\n this.spaceQuery = this.db\n .select({\n id: spaces.id,\n name: spaces.name,\n alias: spaces.alias,\n description: spaces.description,\n enabled: spaces.enabled,\n storageUsage: spaces.storageUsage,\n storageQuota: spaces.storageQuota,\n storageIndexing: spaces.storageIndexing,\n createdAt: spaces.createdAt,\n modifiedAt: spaces.modifiedAt,\n disabledAt: spaces.disabledAt,\n roots: concatDistinctObjectsInArray(spacesRoots.id, {\n id: spacesRoots.id,\n name: spacesRoots.name,\n alias: spacesRoots.alias,\n externalPath: spacesRoots.externalPath,\n permissions: spacesRoots.permissions,\n createdAt: dateTimeUTC(spacesRoots.createdAt),\n owner: { id: rootOwner.id, login: rootOwner.login, fullName: userFullNameSQL(rootOwner), email: rootOwner.email },\n // fileOwner: (hide if not owner), files: allow fields\n file: { id: fileOwner.id, path: filePathSQL(fileOwner), mime: files.mime }\n }),\n users: concatDistinctObjectsInArray(users.id, {\n id: users.id,\n login: users.login,\n name: userFullNameSQL(users),\n type: sql`IF (${users.role} = ${USER_ROLE.GUEST}, ${MEMBER_TYPE.GUEST}, ${MEMBER_TYPE.USER})`,\n spaceRole: otherMembers.role,\n description: users.email,\n permissions: otherMembers.permissions,\n createdAt: dateTimeUTC(otherMembers.createdAt)\n }),\n groups: concatDistinctObjectsInArray(groups.id, {\n id: groups.id,\n name: groups.name,\n type: sql`IF (${groups.type} = ${GROUP_TYPE.PERSONAL}, ${MEMBER_TYPE.PGROUP}, ${MEMBER_TYPE.GROUP})`,\n spaceRole: sql`${SPACE_ROLE.IS_MEMBER}`,\n description: groups.description,\n permissions: otherMembers.permissions,\n createdAt: dateTimeUTC(otherMembers.createdAt)\n }),\n links: concatDistinctObjectsInArray(linkUsers.id, {\n id: linkUsers.id,\n linkId: links.id,\n name: links.name,\n type: sql.raw(`'${MEMBER_TYPE.USER}'`),\n spaceRole: sql`${SPACE_ROLE.IS_MEMBER}`,\n description: links.email,\n permissions: otherMembers.permissions,\n createdAt: dateTimeUTC(otherMembers.createdAt)\n })\n } satisfies SpaceProps | SelectedFields<any, any>)\n .from(spacesMembers)\n .innerJoin(\n spaces,\n and(\n eq(spaces.id, spacesMembers.spaceId),\n eq(spacesMembers.spaceId, sql.placeholder('spaceId')),\n eq(spacesMembers.userId, sql.placeholder('userId')),\n eq(spacesMembers.role, SPACE_ROLE.IS_MANAGER)\n )\n )\n .innerJoin(otherMembers, eq(otherMembers.spaceId, spaces.id))\n .leftJoin(users, and(isNull(otherMembers.linkId), eq(otherMembers.userId, users.id)))\n .leftJoin(linkUsers, and(isNotNull(otherMembers.linkId), eq(linkUsers.id, otherMembers.userId)))\n .leftJoin(links, and(eq(links.userId, linkUsers.id), eq(links.id, otherMembers.linkId)))\n .leftJoin(groups, eq(otherMembers.groupId, groups.id))\n .leftJoin(spacesRoots, eq(spacesRoots.spaceId, spaces.id))\n .leftJoin(files, eq(spacesRoots.fileId, files.id))\n .leftJoin(rootOwner, eq(rootOwner.id, files.ownerId))\n .leftJoin(fileOwner, and(eq(fileOwner.id, files.id), eq(fileOwner.ownerId, sql.placeholder('userId'))))\n .groupBy(spaces.id)\n .limit(1)\n .prepare()\n }\n const [space] = await this.spaceQuery.execute({ userId, spaceId })\n if (!space) {\n return null\n }\n // merge members\n space.members = [...popFromObject('users', space), ...popFromObject('groups', space), ...popFromObject('links', space)]\n return new SpaceProps(space, userId)\n }\n\n async createSpace(space: SpaceProps): Promise<number> {\n return dbGetInsertedId(await this.db.insert(spaces).values(space))\n }\n\n async deleteSpace(spaceId: number, deleteNow = false): Promise<boolean> {\n let r: MySqlQueryResult\n if (deleteNow) {\n r = await this.db.delete(spaces).where(eq(spaces.id, spaceId))\n } else {\n r = await this.db\n .update(spaces)\n .set({ enabled: false, disabledAt: new Date() } as Space)\n .where(eq(spaces.id, spaceId))\n }\n return dbCheckAffectedRows(r, 1)\n }\n\n async updateSpace(id: number, set: Partial<Record<keyof Space, any>>): Promise<boolean> {\n try {\n dbCheckAffectedRows(await this.db.update(spaces).set(set).where(eq(spaces.id, id)), 1)\n this.logger.debug({ tag: this.updateSpace.name, msg: `space (${id}) was updated : ${JSON.stringify(set)}` })\n return true\n } catch (e) {\n this.logger.error({ tag: this.updateSpace.name, msg: `space (${id}) was not updated : ${JSON.stringify(set)} : ${e}` })\n return false\n }\n }\n\n async spaceRootFiles(\n userId: number,\n spaceId: number,\n options: {\n withShares?: boolean\n withHasComments?: boolean\n withSyncs?: boolean\n }\n ): Promise<FileProps[]> {\n if (!this.spaceRootFilesQuery) {\n const select: FileProps | SelectedFields<any, any> = {\n id: files.id,\n path: filePathSQL(files),\n isDir: files.isDir,\n inTrash: files.inTrash,\n size: files.size,\n ctime: files.ctime,\n mtime: files.mtime,\n mime: files.mime,\n root: {\n id: spacesRoots.id,\n alias: spacesRoots.alias,\n name: spacesRoots.name,\n externalPath: spacesRoots.externalPath,\n permissions: spacesRoots.permissions,\n owner: { id: users.id, login: users.login, email: users.email, fullName: userFullNameSQL(users) }\n },\n shares: sql`IF (${sql.placeholder('withShares')}, ${concatDistinctObjectsInArray(shares.id, {\n id: shares.id,\n alias: shares.alias,\n name: shares.name,\n type: shares.type\n })}, '[]')`.mapWith(JSON.parse),\n syncs: sql`IF (${sql.placeholder('withSyncs')}, ${concatDistinctObjectsInArray(syncPaths.id, {\n id: syncPaths.id,\n clientId: syncClients.id,\n clientName: sql`JSON_VALUE(${syncClients.info}, '$.node')`\n })}, '[]')`.mapWith(JSON.parse),\n hasComments: sql<boolean>`IF (${sql.placeholder('withHasComments')}, ${fileHasCommentsSubquerySQL(files.id)}, 0)`.mapWith(Boolean)\n }\n this.spaceRootFilesQuery = this.db\n .select(select)\n .from(spacesRoots)\n .leftJoin(files, eq(files.id, spacesRoots.fileId))\n .leftJoin(users, eq(users.id, files.ownerId))\n .leftJoin(\n shares,\n and(\n eq(sql.placeholder('withShares'), sql.raw('1')),\n eq(shares.ownerId, sql.placeholder('userId')),\n isNull(shares.fileId),\n isNull(shares.parentId),\n eq(shares.spaceRootId, spacesRoots.id)\n )\n )\n .leftJoin(syncClients, and(eq(sql.placeholder('withSyncs'), sql.raw('1')), eq(syncClients.ownerId, sql.placeholder('userId'))))\n .leftJoin(\n syncPaths,\n and(\n eq(sql.placeholder('withSyncs'), sql.raw('1')),\n eq(syncPaths.clientId, syncClients.id),\n eq(syncPaths.spaceId, sql.placeholder('spaceId')),\n eq(syncPaths.spaceRootId, spacesRoots.id),\n isNull(syncPaths.fileId)\n )\n )\n .where(eq(spacesRoots.spaceId, sql.placeholder('spaceId')))\n .groupBy(files.id, spacesRoots.id)\n .prepare()\n }\n return this.spaceRootFilesQuery.execute({\n userId,\n spaceId,\n withHasComments: +!!options.withHasComments,\n withShares: +!!options.withShares,\n withSyncs: +!!options.withSyncs\n })\n }\n\n async getSpaceRoots(spaceId: number, userId?: number): Promise<SpaceRootProps[]> {\n const where: SQL<any>[] = [eq(spacesRoots.spaceId, spaceId)]\n if (userId) {\n where.push(eq(files.ownerId, userId))\n }\n return (await this.db\n .select({\n id: spacesRoots.id,\n alias: spacesRoots.alias,\n name: spacesRoots.name,\n permissions: spacesRoots.permissions,\n createdAt: spacesRoots.createdAt,\n ...(!userId && { owner: { id: files.ownerId } }),\n file: {\n id: files.id,\n path: filePathSQL(files),\n mime: files.mime\n }\n })\n .from(spacesRoots)\n .leftJoin(files, eq(files.id, spacesRoots.fileId))\n .where(and(...where))) as SpaceRootProps[]\n }\n\n async getSpaceMemberIds(spaceId: number): Promise<{ groupIds: number[]; userIds: number[] }> {\n const members = { userIds: [], groupIds: [] }\n for (const m of await this.db\n .select({\n userId: spacesMembers.userId,\n groupId: spacesMembers.groupId\n })\n .from(spacesMembers)\n .where(eq(spacesMembers.spaceId, spaceId))) {\n if (m.userId) {\n members.userIds.push(m.userId)\n } else {\n members.groupIds.push(m.groupId)\n }\n }\n return members\n }\n\n async updateMembers(\n spaceId: number,\n add: SpaceMemberDto[],\n update: Record<string | 'object', Partial<SpaceMembers> | SpaceMemberDto>[],\n remove: SpaceMemberDto[]\n ): Promise<Record<Exclude<ACTION, ACTION.DELETE_PERMANENTLY>, { userIds: number[]; groupIds: number[] }>> {\n // store status\n const status: Record<Exclude<ACTION, ACTION.DELETE_PERMANENTLY>, { userIds: number[]; groupIds: number[] }> = {\n [ACTION.ADD]: { userIds: [], groupIds: [] },\n [ACTION.UPDATE]: { userIds: [], groupIds: [] },\n [ACTION.DELETE]: { userIds: [], groupIds: [] }\n }\n // add\n for (const m of add) {\n try {\n dbCheckAffectedRows(\n await this.db.insert(spacesMembers).values({\n spaceId: spaceId,\n ...(m.type === MEMBER_TYPE.USER || m.type === MEMBER_TYPE.GUEST ? { userId: m.id } : { groupId: m.id }),\n role: m.spaceRole,\n permissions: m.permissions\n } as SpaceMembers),\n 1\n )\n status[ACTION.ADD][`${m.type === MEMBER_TYPE.USER || m.type === MEMBER_TYPE.GUEST ? 'userIds' : 'groupIds'}`].push(m.id)\n this.logger.debug({ tag: this.updateMembers.name, msg: `${m.type} (${m.id}) added to the space (${spaceId})` })\n } catch (e) {\n this.logger.error({ tag: this.updateMembers.name, msg: `${m.type} (${m.id}) was not added to the space ${spaceId} -> : ${e}` })\n }\n }\n // update\n for (const props of update) {\n const m: SpaceMemberDto = popFromObject('object', props)\n const spaceRole = popFromObject('spaceRole', props)\n if (Number.isInteger(spaceRole)) {\n props.role = spaceRole\n }\n try {\n dbCheckAffectedRows(\n await this.db\n .update(spacesMembers)\n .set(props)\n .where(\n and(\n eq(spacesMembers.spaceId, spaceId),\n eq(m.type === MEMBER_TYPE.USER || m.type === MEMBER_TYPE.GUEST ? spacesMembers.userId : spacesMembers.groupId, m.id)\n )\n )\n .limit(1),\n 1\n )\n status[ACTION.UPDATE][`${m.type === MEMBER_TYPE.USER || m.type === MEMBER_TYPE.GUEST ? 'userIds' : 'groupIds'}`].push(m.id)\n this.logger.debug({ tag: this.updateMembers.name, msg: `${m.type} (${m.id}) was updated on space (${spaceId}) : ${JSON.stringify(props)}` })\n } catch (e) {\n this.logger.error({\n tag: this.updateMembers.name,\n msg: `${m.type} (${m.id}) was not updated on space (${spaceId}) : ${JSON.stringify(props)} : ${e}`\n })\n }\n }\n // remove\n for (const m of remove) {\n try {\n dbCheckAffectedRows(\n await this.db\n .delete(spacesMembers)\n .where(\n and(\n eq(spacesMembers.spaceId, spaceId),\n eq(m.type === MEMBER_TYPE.USER || m.type === MEMBER_TYPE.GUEST ? spacesMembers.userId : spacesMembers.groupId, m.id)\n )\n ),\n 1\n )\n status[ACTION.DELETE][`${m.type === MEMBER_TYPE.USER || m.type === MEMBER_TYPE.GUEST ? 'userIds' : 'groupIds'}`].push(m.id)\n this.logger.debug({ tag: this.updateMembers.name, msg: `${m.type} (${m.id}) removed from space (${spaceId})` })\n } catch (e) {\n this.logger.error({ tag: this.updateMembers.name, msg: `${m.type} (${m.id}) was not removed from space (${spaceId}) : ${e}` })\n }\n }\n return status\n }\n\n async updateSpaceRoots(\n userId: number,\n spaceId: number,\n add: SpaceRootProps[],\n update: Record<string | 'object', Partial<SpaceRootProps> | SpaceRootProps>[],\n remove: SpaceRootProps[]\n ): Promise<Record<Exclude<ACTION, ACTION.DELETE_PERMANENTLY>, SpaceRootProps[]>> {\n // store status\n const status = {} as Record<Exclude<ACTION, ACTION.DELETE_PERMANENTLY>, SpaceRootProps[]>\n // add\n for (const r of add) {\n if (await this.addRoot(userId, spaceId, r)) {\n ;(status[ACTION.ADD] ||= []).push(r)\n }\n }\n // update\n for (const props of update) {\n const r: SpaceRootProps = popFromObject('object', props)\n if (await this.updateRoot(props, { id: r.id })) {\n ;(status[ACTION.UPDATE] ||= []).push(r)\n }\n }\n // delete\n for (const r of remove) {\n if (await this.removeRoot(r.id)) {\n ;(status[ACTION.DELETE] ||= []).push(r)\n }\n }\n return status\n }\n\n @CacheDecorator()\n async spaceIds(userId: number): Promise<number[]> {\n if (!this.spaceIdsQuery) {\n const unionAlias = this.fromUserAndGroups({ id: spaces.id })\n this.spaceIdsQuery = this.db.select({ id: unionAlias.id }).from(unionAlias).groupBy(unionAlias.id).prepare()\n }\n // `userId` is used in `fromUserAndGroups` function\n return (await this.spaceIdsQuery.execute({ userId })).map((r: { id: number }) => r.id)\n }\n\n @CacheDecorator()\n async spaces(userId: number, withPermissions = false, fromId?: number): Promise<SpaceProps[]> {\n let pQuery: MySql2PreparedQuery<any>\n if (fromId) {\n pQuery = this.spaceFromIdWithPermissionsQuery\n } else if (withPermissions) {\n pQuery = this.spacesWithPermissionsQuery\n } else {\n pQuery = this.spacesQuery\n }\n if (!pQuery) {\n const selectUnion: Space | SelectedFields<any, any> = {\n id: spaces.id,\n alias: spaces.alias,\n name: spaces.name,\n description: spaces.description,\n enabled: spaces.enabled,\n createdAt: spaces.createdAt,\n modifiedAt: spaces.modifiedAt,\n ...(withPermissions && { permissions: spacesMembers.permissions, role: spacesMembers.role })\n }\n const unionAlias = this.fromUserAndGroups(selectUnion)\n const select: Space | SelectedFields<any, any> = {\n id: unionAlias.id,\n alias: unionAlias.alias,\n name: unionAlias.name,\n description: unionAlias.description,\n enabled: unionAlias.enabled,\n createdAt: unionAlias.createdAt,\n modifiedAt: unionAlias.modifiedAt,\n ...(withPermissions && {\n permissions: spaceGroupConcatPermissions(unionAlias.permissions),\n role: max(unionAlias.role)\n })\n }\n if (fromId) {\n pQuery = this.db\n .select(select)\n .from(unionAlias)\n .where(eq(unionAlias.id, sql.placeholder('fromId')))\n .limit(1)\n .prepare()\n this.spaceFromIdWithPermissionsQuery = pQuery\n } else {\n pQuery = this.db.select(select).from(unionAlias).groupBy(unionAlias.id).prepare()\n if (withPermissions) {\n this.spacesWithPermissionsQuery = pQuery\n } else {\n this.spacesQuery = pQuery\n }\n }\n }\n // SpaceProps instance is required, if the user is a space manager, he must have all permissions\n // `userId` is used in `fromUserAndGroups` function\n return (await pQuery.execute({ userId, fromId })).map((s: Partial<SpaceProps>) => new SpaceProps(s))\n }\n\n async spacesWithDetails(userId: number): Promise<SpaceProps[]> {\n if (!this.spacesWithDetailsQuery) {\n const selectUnion: Space | SelectedFields<any, any> = {\n id: spaces.id,\n alias: spaces.alias,\n name: spaces.name,\n description: spaces.description,\n enabled: spaces.enabled,\n permissions: spacesMembers.permissions,\n role: spacesMembers.role,\n createdAt: spaces.createdAt,\n modifiedAt: spaces.modifiedAt,\n disabledAt: spaces.disabledAt\n }\n const unionAlias = this.fromUserAndGroups(selectUnion)\n const managers: any = alias(users, 'managers')\n const select: Space | SelectedFields<any, any> = {\n id: unionAlias.id,\n alias: unionAlias.alias,\n name: unionAlias.name,\n description: unionAlias.description,\n enabled: unionAlias.enabled,\n permissions: spaceGroupConcatPermissions(unionAlias.permissions),\n role: max(unionAlias.role),\n modifiedAt: unionAlias.modifiedAt,\n createdAt: unionAlias.createdAt,\n disabledAt: unionAlias.disabledAt,\n members: concatDistinctObjectsInArray(managers.id, {\n id: managers.id,\n login: managers.login,\n name: userFullNameSQL(managers),\n description: managers.email,\n type: sql.raw(`'${MEMBER_TYPE.USER}'`),\n spaceRole: spacesMembers.role,\n permissions: sql<string>`''`,\n createdAt: dateTimeUTC(spacesMembers.createdAt)\n } satisfies Record<keyof Pick<Member, 'id' | 'name' | 'login' | 'description' | 'type' | 'permissions' | 'spaceRole' | 'createdAt'>, any>),\n counts: {\n users: sql`COUNT(DISTINCT(CASE WHEN ${spacesMembers.userId} IS NOT NULL AND ${spacesMembers.linkId} IS NULL THEN ${spacesMembers.userId} END))`,\n groups: countDistinct(spacesMembers.groupId),\n links: sql`COUNT(DISTINCT(CASE WHEN ${spacesMembers.linkId} IS NOT NULL THEN ${spacesMembers.linkId} END))`,\n roots: countDistinct(files.id),\n shares: sql`COUNT(DISTINCT(CASE WHEN ${shares.id} IS NOT NULL THEN ${shares.id} END))`\n }\n }\n this.spacesWithDetailsQuery = this.db\n .select(select)\n .from(unionAlias)\n .leftJoin(spacesMembers, eq(spacesMembers.spaceId, unionAlias.id))\n .leftJoin(users, eq(users.id, spacesMembers.userId))\n .leftJoin(groups, eq(groups.id, spacesMembers.groupId))\n .leftJoin(managers, and(eq(spacesMembers.userId, managers.id), eq(spacesMembers.role, SPACE_ROLE.IS_MANAGER)))\n .leftJoin(spacesRoots, eq(spacesRoots.spaceId, unionAlias.id))\n .leftJoin(files, and(eq(files.id, spacesRoots.fileId), eq(files.ownerId, sql.placeholder('userId'))))\n .leftJoin(shares, and(eq(unionAlias.role, 1), eq(shares.spaceId, unionAlias.id), isNotNull(shares.spaceId)))\n .groupBy(unionAlias.id)\n .prepare()\n }\n const r: MySqlQueryResult = await this.spacesWithDetailsQuery.execute({ userId })\n return r.length ? r.map((s: Partial<SpaceProps>) => new SpaceProps(s)) : []\n }\n\n @CacheDecorator()\n async permissions(userId: number, spaceAlias: string, rootAlias: string): Promise<Partial<SpaceEnv>> {\n if (rootAlias) {\n return await this.spaceAndRootPermissions(userId, spaceAlias, rootAlias)\n }\n return await this.spacePermissions(userId, spaceAlias)\n }\n\n async addRoot(userId: number, spaceId: number, root: SpaceRootProps): Promise<boolean> {\n const r: Partial<SpaceRoot> = { name: root.name, alias: root.alias, permissions: root.permissions, spaceId: spaceId }\n if (root.externalPath) {\n r.externalPath = root.externalPath\n } else {\n r.fileId = await this.getOrCreateUserFile(userId, root.file)\n }\n try {\n dbCheckAffectedRows(await this.db.insert(spacesRoots).values(r as SpaceRoot), 1)\n this.logger.debug({ tag: this.addRoot.name, msg: `*${root.alias}* (${root.id}) added` })\n return true\n } catch (e) {\n this.logger.error({ tag: this.addRoot.name, msg: `*${root.alias}* (${root.id}) was not added : ${JSON.stringify(root)} : ${e}` })\n return false\n }\n }\n\n async updateRoot(set: Partial<Record<keyof SpaceRoot, any>>, filters: Partial<Record<keyof SpaceRoot, any>>): Promise<boolean> {\n const where: SQL[] = convertToWhere(spacesRoots, filters)\n try {\n dbCheckAffectedRows(\n await this.db\n .update(spacesRoots)\n .set(set)\n .where(and(...where))\n .limit(1),\n 1\n )\n this.logger.debug({ tag: this.updateRoot.name, msg: `${JSON.stringify(filters)} was updated : ${JSON.stringify(set)}` })\n return true\n } catch (e) {\n this.logger.error({ tag: this.updateRoot.name, msg: `${JSON.stringify(filters)} was not updated : ${JSON.stringify(set)} : ${e}` })\n return false\n }\n }\n\n getUserFile(userId: number, fileId: number): Promise<Pick<File, 'id' | 'path'>> {\n return this.filesQueries.getUserFile(userId, fileId)\n }\n\n getOrCreateUserFile(userId: number, file: FileProps): Promise<number> {\n return this.filesQueries.getOrCreateUserFile(userId, file)\n }\n\n getOrCreateSpaceFile(fileId: number, file: FileProps, dbFile: FileDBProps): Promise<number> {\n return this.filesQueries.getOrCreateSpaceFile(fileId, file, dbFile)\n }\n\n async clearCachePermissions(spaceAlias: string, rootAliases?: string[], userIds?: number[]) {\n const uIds = userIds ?? ['*']\n for (const uid of uIds) {\n const basePattern = [this.constructor.name, this.permissions.name, uid, spaceAlias]\n const patterns: string[] = []\n if (rootAliases?.length) {\n // clear cache on space root\n rootAliases.forEach((rAlias: string) => patterns.push(this.cache.genSlugKey(...basePattern, rAlias)))\n } else {\n // clear cache on spaces list\n patterns.push(this.cache.genSlugKey(...[this.constructor.name, this.spaces.name, uid, '*']))\n // clear cache on spaces and roots\n patterns.push(this.cache.genSlugKey(...basePattern), this.cache.genSlugKey(...basePattern, '*'))\n }\n for (const p of patterns) {\n const keys = await this.cache.keys(p)\n if (keys.length) {\n this.logger.verbose({ tag: this.clearCachePermissions.name, msg: `${JSON.stringify(keys)}` })\n this.cache.mdel(keys).catch((e: Error) => this.logger.error({ tag: this.clearCachePermissions.name, msg: `${e}` }))\n }\n }\n }\n }\n\n private async removeRoot(id: number): Promise<boolean> {\n try {\n dbCheckAffectedRows(await this.db.delete(spacesRoots).where(eq(spacesRoots.id, id)), 1)\n this.logger.debug({ tag: this.removeRoot.name, msg: `root (${id}) removed` })\n return true\n } catch (e) {\n this.logger.error({ tag: this.removeRoot.name, msg: `root (${id}) was not deleted : ${e}` })\n return false\n }\n }\n\n private async spacePermissions(userId: number, spaceAlias: string): Promise<Partial<SpaceEnv>> {\n if (!this.spacePermissionsQuery) {\n const selectUnion: SpaceEnv | SelectedFields<any, any> = {\n id: spaces.id,\n alias: spaces.alias,\n name: spaces.name,\n enabled: spaces.enabled,\n permissions: spacesMembers.permissions,\n role: spacesMembers.role\n }\n const filters: SQL[] = [eq(spaces.alias, sql.placeholder('spaceAlias'))]\n const unionAlias = this.fromUserAndGroups(selectUnion, filters)\n const select: SpaceEnv | SelectedFields<any, any> = {\n id: unionAlias.id,\n alias: unionAlias.alias,\n name: unionAlias.name,\n enabled: unionAlias.enabled,\n permissions: spaceGroupConcatPermissions(unionAlias.permissions),\n role: max(unionAlias.role)\n }\n this.spacePermissionsQuery = this.db.select(select).from(unionAlias).groupBy(unionAlias.id).limit(1).prepare()\n }\n // `userId` is used in `fromUserAndGroups` function\n const r: MySqlQueryResult = await this.spacePermissionsQuery.execute({ userId, spaceAlias })\n return r.length ? r.at(0) : null\n }\n\n private async spaceAndRootPermissions(userId: number, spaceAlias: string, rootAlias: string): Promise<Partial<SpaceEnv>> {\n if (!this.spaceAndRootPermissionsQuery) {\n const selectUnion: SpaceEnv | SelectedFields<any, any> = {\n id: spaces.id,\n alias: spaces.alias,\n name: spaces.name,\n enabled: spaces.enabled,\n permissions: spacesMembers.permissions,\n role: spacesMembers.role,\n rootId: sql`${spacesRoots.id}`.as('rootId'),\n rootAlias: sql`${spacesRoots.alias}`.as('rootAlias'),\n rootName: sql`${spacesRoots.name}`.as('rootName'),\n rootPermissions: sql`${spacesRoots.permissions}`.as('rootPermissions'),\n rootOwnerId: files.ownerId,\n rootOwnerLogin: users.login,\n rootFileId: sql`${files.id}`.as('rootFileId'),\n rootFilePath: filePathSQL(files).as('rootFilePath'),\n rootFileInTrash: files.inTrash,\n rootExternalPath: spacesRoots.externalPath\n }\n const filters: SQL[] = [eq(spaces.alias, sql.placeholder('spaceAlias'))]\n const fromUser = this.fromUserQuery(selectUnion, filters).$dynamic()\n const fromGroups = this.fromGroupsQuery(selectUnion, filters).$dynamic()\n for (const q of [fromUser, fromGroups]) {\n q.leftJoin(spacesRoots, and(eq(spacesRoots.spaceId, spacesMembers.spaceId), eq(spacesRoots.alias, sql.placeholder('rootAlias'))))\n .leftJoin(files, eq(files.id, spacesRoots.fileId))\n .leftJoin(users, eq(users.id, files.ownerId))\n }\n const unionAlias = union(fromUser, fromGroups).as('union_alias')\n const select: SpaceEnv | SelectedFields<any, any> = {\n id: unionAlias.id,\n alias: unionAlias.alias,\n name: unionAlias.name,\n enabled: unionAlias.enabled,\n permissions: spaceGroupConcatPermissions(unionAlias.permissions),\n role: sql<SPACE_ROLE>`MAX(${unionAlias.role})`,\n root: {\n id: unionAlias.rootId,\n alias: unionAlias.rootAlias,\n name: unionAlias.rootName,\n permissions: unionAlias.rootPermissions,\n owner: { id: unionAlias.rootOwnerId, login: unionAlias.rootOwnerLogin },\n file: { id: unionAlias.rootFileId, path: unionAlias.rootFilePath, inTrash: unionAlias.rootFileInTrash },\n externalPath: unionAlias.rootExternalPath\n }\n }\n this.spaceAndRootPermissionsQuery = this.db.select(select).from(unionAlias).groupBy(unionAlias.id).limit(1).prepare()\n }\n // `userId` is used in `fromUserQuery` and `fromGroupsQuery` function\n const r: MySqlQueryResult = await this.spaceAndRootPermissionsQuery.execute({ userId, spaceAlias, rootAlias })\n return r.length ? r.at(0) : null\n }\n\n private fromUserAndGroups(select: SelectedFields<any, any>, filters: SQL[] = []) {\n return union(this.fromUserQuery(select, filters), this.fromGroupsQuery(select, filters)).as('union_alias')\n }\n\n private fromUserQuery(select: SelectedFields<any, any>, filters: SQL[] = []) {\n const where = [eq(spacesMembers.userId, sql.placeholder('userId')), ...filters]\n return this.db\n .select(select)\n .from(spacesMembers)\n .innerJoin(spaces, eq(spacesMembers.spaceId, spaces.id))\n .where(and(...where))\n }\n\n private fromGroupsQuery(select: SelectedFields<any, any>, filters: SQL[] = []) {\n const where = [eq(spacesMembers.groupId, usersGroups.groupId), ...filters]\n return this.db\n .select(select)\n .from(spacesMembers)\n .innerJoin(usersGroups, eq(usersGroups.userId, sql.placeholder('userId')))\n .innerJoin(spaces, eq(spacesMembers.spaceId, spaces.id))\n .where(and(...where))\n }\n}\n"],"names":["SpacesQueries","spaceExistsForAlias","alias","db","query","spaces","findFirst","columns","id","where","eq","spaceRootExistsForAlias","spaceId","rootAlias","spacesRoots","and","selectSpaces","fields","select","convertToSelect","from","spacesQuotaPaths","storageUsage","storageQuota","externalPaths","sql","externalPath","mapWith","JSON","parse","as","leftJoin","isNotNull","groupBy","userIsSpaceManager","userId","shareId","q","spacesMembers","shares","innerJoin","r","role","SPACE_ROLE","IS_MANAGER","limit","getSpaceAsManager","spaceQuery","otherMembers","rootOwner","users","fileOwner","files","linkUsers","name","description","enabled","storageIndexing","createdAt","modifiedAt","disabledAt","roots","concatDistinctObjectsInArray","permissions","dateTimeUTC","owner","login","fullName","userFullNameSQL","email","file","path","filePathSQL","mime","type","USER_ROLE","GUEST","MEMBER_TYPE","USER","spaceRole","groups","GROUP_TYPE","PERSONAL","PGROUP","GROUP","IS_MEMBER","links","linkId","raw","placeholder","isNull","groupId","fileId","ownerId","prepare","space","execute","members","popFromObject","SpaceProps","createSpace","dbGetInsertedId","insert","values","deleteSpace","deleteNow","delete","update","set","Date","dbCheckAffectedRows","updateSpace","logger","debug","tag","msg","stringify","e","error","spaceRootFiles","options","spaceRootFilesQuery","isDir","inTrash","size","ctime","mtime","root","syncs","syncPaths","clientId","syncClients","clientName","info","hasComments","fileHasCommentsSubquerySQL","Boolean","parentId","spaceRootId","withHasComments","withShares","withSyncs","getSpaceRoots","push","getSpaceMemberIds","userIds","groupIds","m","updateMembers","add","remove","status","ACTION","ADD","UPDATE","DELETE","props","Number","isInteger","updateSpaceRoots","addRoot","updateRoot","removeRoot","spaceIds","spaceIdsQuery","unionAlias","fromUserAndGroups","map","withPermissions","fromId","pQuery","spaceFromIdWithPermissionsQuery","spacesWithPermissionsQuery","spacesQuery","selectUnion","spaceGroupConcatPermissions","max","s","spacesWithDetails","spacesWithDetailsQuery","managers","counts","countDistinct","length","spaceAlias","spaceAndRootPermissions","spacePermissions","getOrCreateUserFile","filters","convertToWhere","getUserFile","filesQueries","getOrCreateSpaceFile","dbFile","clearCachePermissions","rootAliases","uIds","uid","basePattern","patterns","forEach","rAlias","cache","genSlugKey","p","keys","verbose","mdel","catch","spacePermissionsQuery","at","spaceAndRootPermissionsQuery","rootId","rootName","rootPermissions","rootOwnerId","rootOwnerLogin","rootFileId","rootFilePath","rootFileInTrash","rootExternalPath","fromUser","fromUserQuery","$dynamic","fromGroups","fromGroupsQuery","union","usersGroups","Logger"],"mappings":"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"}
|
|
@@ -1,8 +1,4 @@
|
|
|
1
|
-
|
|
2
|
-
* Copyright (C) 2012-2025 Johan Legrand <johan.legrand@sync-in.com>
|
|
3
|
-
* This file is part of Sync-in | The open source file sync and share solution
|
|
4
|
-
* See the LICENSE file for licensing details
|
|
5
|
-
*/ "use strict";
|
|
1
|
+
"use strict";
|
|
6
2
|
Object.defineProperty(exports, "__esModule", {
|
|
7
3
|
value: true
|
|
8
4
|
});
|
|
@@ -30,36 +26,72 @@ let SpacesScheduler = class SpacesScheduler {
|
|
|
30
26
|
await this.updateQuotas();
|
|
31
27
|
}
|
|
32
28
|
async updateQuotas() {
|
|
33
|
-
this.logger.log(
|
|
29
|
+
this.logger.log({
|
|
30
|
+
tag: this.updateQuotas.name,
|
|
31
|
+
msg: 'Personals - START'
|
|
32
|
+
});
|
|
34
33
|
try {
|
|
35
34
|
await this.spacesManager.updatePersonalSpacesQuota();
|
|
36
35
|
} catch (e) {
|
|
37
|
-
this.logger.error(
|
|
36
|
+
this.logger.error({
|
|
37
|
+
tag: this.updateQuotas.name,
|
|
38
|
+
msg: `Personals} - ${e}`
|
|
39
|
+
});
|
|
38
40
|
}
|
|
39
|
-
this.logger.log(
|
|
40
|
-
|
|
41
|
+
this.logger.log({
|
|
42
|
+
tag: this.updateQuotas.name,
|
|
43
|
+
msg: 'Personals - END'
|
|
44
|
+
});
|
|
45
|
+
this.logger.log({
|
|
46
|
+
tag: this.updateQuotas.name,
|
|
47
|
+
msg: 'Spaces - START'
|
|
48
|
+
});
|
|
41
49
|
try {
|
|
42
50
|
await this.spacesManager.updateSpacesQuota();
|
|
43
51
|
} catch (e) {
|
|
44
|
-
this.logger.error(
|
|
52
|
+
this.logger.error({
|
|
53
|
+
tag: this.updateQuotas.name,
|
|
54
|
+
msg: `Spaces - ${e}`
|
|
55
|
+
});
|
|
45
56
|
}
|
|
46
|
-
this.logger.log(
|
|
47
|
-
|
|
57
|
+
this.logger.log({
|
|
58
|
+
tag: this.updateQuotas.name,
|
|
59
|
+
msg: 'Spaces - END'
|
|
60
|
+
});
|
|
61
|
+
this.logger.log({
|
|
62
|
+
tag: this.updateQuotas.name,
|
|
63
|
+
msg: 'Share External Paths - START'
|
|
64
|
+
});
|
|
48
65
|
try {
|
|
49
66
|
await this.sharesManager.updateSharesExternalPathQuota();
|
|
50
67
|
} catch (e) {
|
|
51
|
-
this.logger.error(
|
|
68
|
+
this.logger.error({
|
|
69
|
+
tag: this.updateQuotas.name,
|
|
70
|
+
msg: `Share External Paths - ${e}`
|
|
71
|
+
});
|
|
52
72
|
}
|
|
53
|
-
this.logger.log(
|
|
73
|
+
this.logger.log({
|
|
74
|
+
tag: this.updateQuotas.name,
|
|
75
|
+
msg: 'Share External Paths - END'
|
|
76
|
+
});
|
|
54
77
|
}
|
|
55
78
|
async deleteExpiredSpaces() {
|
|
56
|
-
/* Removes spaces that have been disabled for more than 30 days */ this.logger.log(
|
|
79
|
+
/* Removes spaces that have been disabled for more than 30 days */ this.logger.log({
|
|
80
|
+
tag: this.deleteExpiredSpaces.name,
|
|
81
|
+
msg: `START`
|
|
82
|
+
});
|
|
57
83
|
try {
|
|
58
84
|
await this.spacesManager.deleteExpiredSpaces();
|
|
59
85
|
} catch (e) {
|
|
60
|
-
this.logger.error(
|
|
86
|
+
this.logger.error({
|
|
87
|
+
tag: this.deleteExpiredSpaces.name,
|
|
88
|
+
msg: `${e}`
|
|
89
|
+
});
|
|
61
90
|
}
|
|
62
|
-
this.logger.log(
|
|
91
|
+
this.logger.log({
|
|
92
|
+
tag: this.deleteExpiredSpaces.name,
|
|
93
|
+
msg: `DONE`
|
|
94
|
+
});
|
|
63
95
|
}
|
|
64
96
|
constructor(spacesManager, sharesManager){
|
|
65
97
|
this.spacesManager = spacesManager;
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"sources":["../../../../../backend/src/applications/spaces/services/spaces-scheduler.service.ts"],"sourcesContent":["
|
|
1
|
+
{"version":3,"sources":["../../../../../backend/src/applications/spaces/services/spaces-scheduler.service.ts"],"sourcesContent":["import { Injectable, Logger } from '@nestjs/common'\nimport { Cron, CronExpression, Timeout } from '@nestjs/schedule'\nimport { SharesManager } from '../../shares/services/shares-manager.service'\nimport { SpacesManager } from './spaces-manager.service'\n\n@Injectable()\nexport class SpacesScheduler {\n private readonly logger = new Logger(SpacesScheduler.name)\n\n constructor(\n private readonly spacesManager: SpacesManager,\n private readonly sharesManager: SharesManager\n ) {}\n\n @Timeout(60_000)\n async onStartup() {\n await this.updateQuotas()\n }\n\n @Cron(CronExpression.EVERY_HOUR)\n async updateQuotas() {\n this.logger.log({ tag: this.updateQuotas.name, msg: 'Personals - START' })\n try {\n await this.spacesManager.updatePersonalSpacesQuota()\n } catch (e) {\n this.logger.error({ tag: this.updateQuotas.name, msg: `Personals} - ${e}` })\n }\n this.logger.log({ tag: this.updateQuotas.name, msg: 'Personals - END' })\n this.logger.log({ tag: this.updateQuotas.name, msg: 'Spaces - START' })\n try {\n await this.spacesManager.updateSpacesQuota()\n } catch (e) {\n this.logger.error({ tag: this.updateQuotas.name, msg: `Spaces - ${e}` })\n }\n this.logger.log({ tag: this.updateQuotas.name, msg: 'Spaces - END' })\n this.logger.log({ tag: this.updateQuotas.name, msg: 'Share External Paths - START' })\n try {\n await this.sharesManager.updateSharesExternalPathQuota()\n } catch (e) {\n this.logger.error({ tag: this.updateQuotas.name, msg: `Share External Paths - ${e}` })\n }\n this.logger.log({ tag: this.updateQuotas.name, msg: 'Share External Paths - END' })\n }\n\n @Cron(CronExpression.EVERY_DAY_AT_2AM)\n async deleteExpiredSpaces() {\n /* Removes spaces that have been disabled for more than 30 days */\n this.logger.log({ tag: this.deleteExpiredSpaces.name, msg: `START` })\n try {\n await this.spacesManager.deleteExpiredSpaces()\n } catch (e) {\n this.logger.error({ tag: this.deleteExpiredSpaces.name, msg: `${e}` })\n }\n this.logger.log({ tag: this.deleteExpiredSpaces.name, msg: `DONE` })\n }\n}\n"],"names":["SpacesScheduler","onStartup","updateQuotas","logger","log","tag","name","msg","spacesManager","updatePersonalSpacesQuota","e","error","updateSpacesQuota","sharesManager","updateSharesExternalPathQuota","deleteExpiredSpaces","Logger","EVERY_HOUR","EVERY_DAY_AT_2AM"],"mappings":";;;;+BAMaA;;;eAAAA;;;wBANsB;0BACW;sCAChB;sCACA;;;;;;;;;;AAGvB,IAAA,AAAMA,kBAAN,MAAMA;IAQX,MACMC,YAAY;QAChB,MAAM,IAAI,CAACC,YAAY;IACzB;IAEA,MACMA,eAAe;QACnB,IAAI,CAACC,MAAM,CAACC,GAAG,CAAC;YAAEC,KAAK,IAAI,CAACH,YAAY,CAACI,IAAI;YAAEC,KAAK;QAAoB;QACxE,IAAI;YACF,MAAM,IAAI,CAACC,aAAa,CAACC,yBAAyB;QACpD,EAAE,OAAOC,GAAG;YACV,IAAI,CAACP,MAAM,CAACQ,KAAK,CAAC;gBAAEN,KAAK,IAAI,CAACH,YAAY,CAACI,IAAI;gBAAEC,KAAK,CAAC,aAAa,EAAEG,GAAG;YAAC;QAC5E;QACA,IAAI,CAACP,MAAM,CAACC,GAAG,CAAC;YAAEC,KAAK,IAAI,CAACH,YAAY,CAACI,IAAI;YAAEC,KAAK;QAAkB;QACtE,IAAI,CAACJ,MAAM,CAACC,GAAG,CAAC;YAAEC,KAAK,IAAI,CAACH,YAAY,CAACI,IAAI;YAAEC,KAAK;QAAiB;QACrE,IAAI;YACF,MAAM,IAAI,CAACC,aAAa,CAACI,iBAAiB;QAC5C,EAAE,OAAOF,GAAG;YACV,IAAI,CAACP,MAAM,CAACQ,KAAK,CAAC;gBAAEN,KAAK,IAAI,CAACH,YAAY,CAACI,IAAI;gBAAEC,KAAK,CAAC,SAAS,EAAEG,GAAG;YAAC;QACxE;QACA,IAAI,CAACP,MAAM,CAACC,GAAG,CAAC;YAAEC,KAAK,IAAI,CAACH,YAAY,CAACI,IAAI;YAAEC,KAAK;QAAe;QACnE,IAAI,CAACJ,MAAM,CAACC,GAAG,CAAC;YAAEC,KAAK,IAAI,CAACH,YAAY,CAACI,IAAI;YAAEC,KAAK;QAA+B;QACnF,IAAI;YACF,MAAM,IAAI,CAACM,aAAa,CAACC,6BAA6B;QACxD,EAAE,OAAOJ,GAAG;YACV,IAAI,CAACP,MAAM,CAACQ,KAAK,CAAC;gBAAEN,KAAK,IAAI,CAACH,YAAY,CAACI,IAAI;gBAAEC,KAAK,CAAC,uBAAuB,EAAEG,GAAG;YAAC;QACtF;QACA,IAAI,CAACP,MAAM,CAACC,GAAG,CAAC;YAAEC,KAAK,IAAI,CAACH,YAAY,CAACI,IAAI;YAAEC,KAAK;QAA6B;IACnF;IAEA,MACMQ,sBAAsB;QAC1B,gEAAgE,GAChE,IAAI,CAACZ,MAAM,CAACC,GAAG,CAAC;YAAEC,KAAK,IAAI,CAACU,mBAAmB,CAACT,IAAI;YAAEC,KAAK,CAAC,KAAK,CAAC;QAAC;QACnE,IAAI;YACF,MAAM,IAAI,CAACC,aAAa,CAACO,mBAAmB;QAC9C,EAAE,OAAOL,GAAG;YACV,IAAI,CAACP,MAAM,CAACQ,KAAK,CAAC;gBAAEN,KAAK,IAAI,CAACU,mBAAmB,CAACT,IAAI;gBAAEC,KAAK,GAAGG,GAAG;YAAC;QACtE;QACA,IAAI,CAACP,MAAM,CAACC,GAAG,CAAC;YAAEC,KAAK,IAAI,CAACU,mBAAmB,CAACT,IAAI;YAAEC,KAAK,CAAC,IAAI,CAAC;QAAC;IACpE;IA7CA,YACE,AAAiBC,aAA4B,EAC7C,AAAiBK,aAA4B,CAC7C;aAFiBL,gBAAAA;aACAK,gBAAAA;aAJFV,SAAS,IAAIa,cAAM,CAAChB,gBAAgBM,IAAI;IAKtD;AA2CL;;;;;;;;iDApCuBW;;;;;;iDAyBAC"}
|