@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 +1 @@
|
|
|
1
|
-
{"version":3,"sources":["../../../../../backend/src/applications/shares/services/shares-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, count, eq, inArray, isNotNull, isNull, ne, or, SelectedFields, SQL, sql } from 'drizzle-orm'\nimport { alias, MySqlSelectDynamic, union } from 'drizzle-orm/mysql-core'\nimport { MySql2PreparedQuery, MySqlQueryResult } from 'drizzle-orm/mysql2'\nimport { ACTION } from '../../../common/constants'\nimport { uniquePermissions } from '../../../common/functions'\nimport { createSlug, 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 type { DBSchema } from '../../../infrastructure/database/interfaces/database.interface'\nimport {\n concatDistinctObjectsInArray,\n convertToWhere,\n dateTimeUTC,\n dbCheckAffectedRows,\n dbGetInsertedId\n} from '../../../infrastructure/database/utils'\nimport { fileHasCommentsSubquerySQL } from '../../comments/schemas/comments.schema'\nimport type { FileProps } from '../../files/interfaces/file-props.interface'\nimport type { FileSpace } from '../../files/interfaces/file-space.interface'\nimport { filePathSQL, files } from '../../files/schemas/files.schema'\nimport { links } from '../../links/schemas/links.schema'\nimport { SpaceEnv } from '../../spaces/models/space-env.model'\nimport { spacesRoots } from '../../spaces/schemas/spaces-roots.schema'\nimport { spaceGroupConcatPermissions, spaces } from '../../spaces/schemas/spaces.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 type { Owner } from '../../users/interfaces/owner.interface'\nimport type { UserModel } from '../../users/models/user.model'\nimport { groups } from '../../users/schemas/groups.schema'\nimport { usersGroups } from '../../users/schemas/users-groups.schema'\nimport { userFullNameSQL, users } from '../../users/schemas/users.schema'\nimport { SHARE_ALL_OPERATIONS, SHARE_TYPE } from '../constants/shares'\nimport type { ShareMemberDto } from '../dto/create-or-update-share.dto'\nimport type { ShareChildMember, ShareChildQuery } from '../interfaces/share-child.interface'\nimport type { ShareEnv } from '../interfaces/share-env.interface'\nimport type { ShareFile } from '../interfaces/share-file.interface'\nimport type { ShareLink } from '../interfaces/share-link.interface'\nimport type { ShareProps } from '../interfaces/share-props.interface'\nimport { ShareChild } from '../models/share-child.model'\nimport type { ShareMembers } from '../schemas/share-members.interface'\nimport type { Share } from '../schemas/share.interface'\nimport { sharesMembers } from '../schemas/shares-members.schema'\nimport { shares } from '../schemas/shares.schema'\n\n@Injectable()\nexport class SharesQueries {\n private readonly logger = new Logger(SharesQueries.name)\n private sharesListQuery: MySql2PreparedQuery<any> = null\n private shareIdsQuery: MySql2PreparedQuery<any> = null\n private shareLinksListQuery: MySql2PreparedQuery<any> = null\n private shareWithMembersQuery: MySql2PreparedQuery<any> = null\n private sharePermissionsQuery: MySql2PreparedQuery<any> = null\n private shareRootFilesQuery: MySql2PreparedQuery<any> = null\n\n constructor(\n @Inject(DB_TOKEN_PROVIDER) private readonly db: DBSchema,\n public readonly cache: Cache\n ) {}\n\n async uniqueShareAlias(name: string): Promise<string> {\n let alias = createSlug(name, true)\n let count = 0\n // Personal space name is reserved\n while (await this.shareExistsForAlias(alias)) {\n count += 1\n alias = `${name}-${count}`\n }\n return alias\n }\n\n shareExistsForOwner(userId: number, shareId: number): any | undefined {\n return this.db.query.shares.findFirst({ columns: { id: true }, where: and(eq(shares.id, shareId), eq(shares.ownerId, userId)) })\n }\n\n async childExistsForShareOwner(userId: number, shareId: number, childId: number, isAdmin: boolean = false): Promise<number> {\n const childShare: any = alias(shares, 'childShare')\n const withChildren: any = sql`\n WITH RECURSIVE child (id, parentId) AS\n (SELECT ${shares.id},\n ${shares.parentId}\n FROM ${shares}\n WHERE ${shares.id} = ${shareId}\n AND (${shares.ownerId} = ${userId} OR (${shares.ownerId} IS NULL AND ${+isAdmin} = 1))\n UNION\n SELECT ${childShare.id},\n ${childShare.parentId}\n FROM ${shares} AS childShare\n INNER JOIN child AS cs ON ${childShare.parentId} = cs.id)\n SELECT child.id\n FROM child\n WHERE child.id = ${childId}\n LIMIT 1\n `\n const [r]: { id: number }[][] = (await this.db.execute(withChildren)) as MySqlQueryResult\n return r.length ? r[0].id : null\n }\n\n async findHighestParentShare(childShareId: number): Promise<number> {\n const parentShare: any = alias(shares, 'parentShare')\n const withParents: any = sql`\n WITH RECURSIVE parent (id, parentId) AS\n (SELECT ${shares.id},\n ${shares.parentId}\n FROM ${shares}\n WHERE ${shares.id} = ${childShareId}\n UNION\n SELECT ${parentShare.id},\n ${parentShare.parentId}\n FROM ${shares} AS parentShare\n INNER JOIN parent AS cs ON ${parentShare.id} = cs.parentId)\n SELECT parent.id\n FROM parent\n WHERE parent.parentId is NULL\n LIMIT 1\n `\n const [r]: { id: number }[][] = (await this.db.execute(withParents)) as MySqlQueryResult\n return r.length ? r[0].id : null\n }\n\n selectShares(props: Partial<Record<keyof Share, any>>): Promise<Partial<Share>[]> {\n const where: SQL[] = convertToWhere(shares, props)\n return this.db\n .select({ id: shares.id, ownerId: shares.ownerId, alias: shares.alias, name: shares.name })\n .from(shares)\n .where(and(...where))\n }\n\n selectParentSharesFromSpaceId(spaceId: number, ownerIds?: number[]): Promise<Partial<Share>[]> {\n const where: SQL[] = [eq(shares.spaceId, spaceId), isNull(shares.spaceRootId), isNull(shares.parentId)]\n if (ownerIds && ownerIds.length) {\n where.push(inArray(shares.ownerId, ownerIds))\n }\n return this.db\n .select({ id: shares.id, ownerId: shares.ownerId })\n .from(shares)\n .where(and(...where))\n }\n\n sharesQuotaExternalPaths(shareId?: number): Promise<Partial<Share>[]> {\n return this.db\n .select({\n id: shares.id,\n alias: shares.alias,\n storageUsage: shares.storageUsage,\n storageQuota: shares.storageQuota,\n externalPath: shares.externalPath\n })\n .from(shares)\n .where(and(isNotNull(shares.externalPath), ...[...(shareId ? [eq(shares.id, shareId)] : [])]))\n }\n\n async listShareLinks(user: UserModel, shareId: number, asAdmin?: boolean): Promise<ShareLink>\n\n async listShareLinks(user: UserModel, shareId?: number, asAdmin?: boolean): Promise<ShareLink[]>\n\n async listShareLinks(user: UserModel, shareId?: number, asAdmin: boolean = false): Promise<ShareLink[] | ShareLink> {\n if (!this.shareLinksListQuery) {\n const [selectFile, shareRootFile, parentShare, parentShareFile, childShareFromRoot, shareMembers] = this.shareFileSelect()\n const linkGuest: any = alias(users, 'linkGuest')\n const select: ShareLink | SelectedFields<any, any> = {\n id: shares.id,\n ownerId: shares.ownerId,\n alias: shares.alias,\n name: shares.name,\n externalPath: sql`IF (${shares.externalPath} IS NOT NULL AND ${shares.ownerId} IS NOT NULL, '.', ${shares.externalPath})`,\n description: shares.description,\n parent: {\n id: parentShare.id,\n ownerId: parentShare.ownerId,\n alias: parentShare.alias,\n name: parentShare.name\n },\n file: selectFile,\n link: {\n id: links.id,\n name: links.name,\n email: links.email,\n uuid: links.uuid,\n requireAuth: links.requireAuth,\n nbAccess: links.nbAccess,\n limitAccess: links.limitAccess,\n permissions: shareMembers.permissions,\n isActive: linkGuest.isActive,\n language: linkGuest.language,\n expiresAt: links.expiresAt,\n createdAt: links.createdAt,\n currentAccess: linkGuest.currentAccess,\n lastAccess: linkGuest.lastAccess,\n currentIp: linkGuest.currentIp,\n lastIp: linkGuest.lastIp\n }\n }\n this.shareLinksListQuery = this.shareFileJoin(select, shareRootFile, parentShare, parentShareFile, childShareFromRoot, shareMembers)\n .innerJoin(links, eq(links.id, shareMembers.linkId))\n .innerJoin(linkGuest, eq(linkGuest.id, links.userId))\n .where(\n and(\n eq(shares.type, SHARE_TYPE.LINK),\n or(eq(sql.placeholder('shareId'), 0), eq(shares.id, sql.placeholder('shareId'))),\n or(\n eq(sql.placeholder('asAdmin'), 1),\n eq(shares.ownerId, sql.placeholder('userId')),\n and(eq(sql.placeholder('isAdmin'), 1), isNull(shares.ownerId))\n )\n )\n )\n .prepare()\n }\n const shareLinks: ShareLink[] = await this.shareLinksListQuery.execute({\n userId: user.id,\n shareId: shareId || 0,\n isAdmin: +user.isAdmin,\n asAdmin: +asAdmin\n })\n if (shareId) {\n return shareLinks.length ? shareLinks[0] : null\n }\n return shareLinks\n }\n\n async getShareWithMembers(user: UserModel, shareId: number, asAdmin = false): Promise<ShareProps> {\n // asAdmin : true if the user is the owner of the parent share or if the share is requested from the administration\n if (!this.shareWithMembersQuery) {\n const [selectFile, shareRootFile, parentShare, parentShareFile, childShareFromRoot, shareMembers] = this.shareFileSelect()\n const linkUsers: any = alias(users, 'linkUsers')\n const select: ShareProps | SelectedFields<any, any> = {\n id: shares.id,\n ownerId: shares.ownerId,\n name: shares.name,\n alias: shares.alias,\n externalPath: sql`IF (${shares.externalPath} IS NOT NULL AND ${shares.ownerId} IS NOT NULL, '.', ${shares.externalPath})`,\n enabled: shares.enabled,\n description: shares.description,\n storageUsage: shares.storageUsage,\n storageQuota: shares.storageQuota,\n storageIndexing: shares.storageIndexing,\n createdAt: shares.createdAt,\n modifiedAt: shares.modifiedAt,\n disabledAt: shares.disabledAt,\n parent: {\n id: parentShare.id,\n ownerId: parentShare.ownerId,\n alias: parentShare.alias,\n name: parentShare.name\n },\n file: selectFile,\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 description: users.email,\n permissions: shareMembers.permissions,\n createdAt: dateTimeUTC(shareMembers.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 description: groups.description,\n permissions: shareMembers.permissions,\n createdAt: dateTimeUTC(shareMembers.createdAt)\n }),\n links: concatDistinctObjectsInArray(linkUsers.id, {\n id: linkUsers.id,\n linkId: links.id,\n login: linkUsers.login,\n name: links.name,\n type: sql.raw(`'${MEMBER_TYPE.USER}'`),\n description: links.email,\n permissions: shareMembers.permissions,\n createdAt: dateTimeUTC(shareMembers.createdAt)\n })\n }\n this.shareWithMembersQuery = this.shareFileJoin(select, shareRootFile, parentShare, parentShareFile, childShareFromRoot, shareMembers)\n .leftJoin(users, and(isNull(shareMembers.linkId), eq(users.id, shareMembers.userId)))\n .leftJoin(groups, eq(groups.id, shareMembers.groupId))\n .leftJoin(linkUsers, and(isNotNull(shareMembers.linkId), eq(linkUsers.id, shareMembers.userId)))\n .leftJoin(links, and(eq(links.userId, linkUsers.id), eq(links.id, shareMembers.linkId)))\n .where(\n and(\n eq(shares.id, sql.placeholder('shareId')),\n or(\n eq(sql.placeholder('asAdmin'), 1),\n eq(shares.ownerId, sql.placeholder('userId')),\n and(eq(sql.placeholder('isAdmin'), 1), isNull(shares.ownerId))\n )\n )\n )\n .groupBy(shares.id)\n .limit(1)\n .prepare()\n }\n const [share] = await this.shareWithMembersQuery.execute({ userId: user.id, shareId, isAdmin: +user.isAdmin, asAdmin: +asAdmin })\n if (!share) return null\n // merge members\n share.members = [...popFromObject('users', share), ...popFromObject('links', share), ...popFromObject('groups', share)]\n return share as ShareProps\n }\n\n async createShare(share: Partial<Share>): Promise<number> {\n return dbGetInsertedId(await this.db.insert(shares).values(share as Share))\n }\n\n async updateShare(id: number, set: Partial<Record<keyof Share, any>>): Promise<boolean> {\n try {\n dbCheckAffectedRows(await this.db.update(shares).set(set).where(eq(shares.id, id)).limit(1), 1)\n this.logger.debug(`${this.updateShare.name} - share (${id}) was updated : ${JSON.stringify(set)}`)\n return true\n } catch (e) {\n this.logger.error(`${this.updateShare.name} - share (${id}) was not updated : ${JSON.stringify(set)} : ${e}`)\n return false\n }\n }\n\n async deleteShare(shareId: number): Promise<boolean> {\n return dbCheckAffectedRows(await this.db.delete(shares).where(eq(shares.id, shareId)), 1)\n }\n\n async updateMember(set: Partial<Record<keyof ShareMembers, any>>, filters: Partial<Record<keyof ShareMembers, any>>): Promise<boolean> {\n const where: SQL[] = convertToWhere(sharesMembers, filters)\n try {\n dbCheckAffectedRows(\n await this.db\n .update(sharesMembers)\n .set(set)\n .where(and(...where))\n .limit(1),\n 1\n )\n this.logger.debug(`${this.updateMember.name} - ${JSON.stringify(filters)} was updated : ${JSON.stringify(set)}`)\n return true\n } catch (e) {\n this.logger.error(`${this.updateMember.name} - ${JSON.stringify(filters)} was not updated : ${JSON.stringify(set)} : ${e}`)\n return false\n }\n }\n\n async updateMembers(\n shareId: number,\n add: ShareMemberDto[],\n update: Record<string | 'object', Partial<ShareMembers> | ShareMemberDto>[],\n remove: ShareMemberDto[]\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(sharesMembers).values({\n shareId: shareId,\n ...(m.type === MEMBER_TYPE.USER || m.type === MEMBER_TYPE.GUEST ? { userId: m.id } : { groupId: m.id }),\n permissions: m.permissions\n } as ShareMembers),\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 share (${shareId})`)\n } catch (e) {\n this.logger.error(`${this.updateMembers.name} - ${m.type} (${m.id}) was not added to the share (${shareId}) -> : ${e}`)\n }\n }\n // update\n for (const props of update) {\n const m: ShareMemberDto = popFromObject('object', props)\n try {\n dbCheckAffectedRows(\n await this.db\n .update(sharesMembers)\n .set(props)\n .where(\n and(\n eq(sharesMembers.shareId, shareId),\n eq(m.type === MEMBER_TYPE.USER || m.type === MEMBER_TYPE.GUEST ? sharesMembers.userId : sharesMembers.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 share (${shareId}) : ${JSON.stringify(props)}`)\n } catch (e) {\n this.logger.error(`${this.updateMembers.name} - ${m.type} (${m.id}) was not updated on share (${shareId}) : ${JSON.stringify(props)} : ${e}`)\n }\n }\n // remove\n for (const m of remove) {\n try {\n dbCheckAffectedRows(\n await this.db\n .delete(sharesMembers)\n .where(\n and(\n eq(sharesMembers.shareId, shareId),\n eq(m.type === MEMBER_TYPE.USER || m.type === MEMBER_TYPE.GUEST ? sharesMembers.userId : sharesMembers.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 share (${shareId})`)\n } catch (e) {\n this.logger.error(`${this.updateMembers.name} - ${m.type} (${m.id}) was not removed from share (${shareId}) : ${e}`)\n }\n }\n return status\n }\n\n async shareEnv(shareId: number): Promise<Partial<ShareEnv>> {\n const shareSpaceRoot: any = alias(spacesRoots, 'shareSpaceRoot')\n const select: ShareEnv | SelectedFields<any, any> = {\n id: shares.id,\n alias: shares.alias,\n enabled: shares.enabled,\n fileId: shares.fileId,\n spaceId: shares.spaceId,\n spaceRootId: shares.spaceRootId,\n inSharesRepository: sql`${1}`.mapWith(Boolean),\n root: {\n id: files.id,\n owner: { id: users.id, login: users.login },\n file: {\n path: sql`IF (${files.id} IS NOT NULL, ${filePathSQL(files)}, NULL)`,\n inTrash: files.inTrash,\n space: { id: spaces.id, alias: spaces.alias },\n root: {\n id: sql`IF (${spacesRoots.id} IS NULL, ${shareSpaceRoot.id}, ${spacesRoots.id})`,\n externalPath: sql`IF (${spacesRoots.externalPath} IS NULL,\n ${shareSpaceRoot.externalPath}, ${spacesRoots.externalPath})`\n }\n },\n externalPath: shares.externalPath\n }\n }\n const [shareEnv] = await this.db\n .select(select)\n .from(shares)\n .leftJoin(shareSpaceRoot, and(isNull(shares.externalPath), isNull(shares.fileId), eq(shareSpaceRoot.id, shares.spaceRootId)))\n .leftJoin(\n files,\n and(\n isNull(shares.externalPath),\n or(and(isNotNull(shares.fileId), eq(files.id, shares.fileId)), and(isNotNull(shareSpaceRoot.fileId), eq(files.id, shareSpaceRoot.fileId)))\n )\n )\n .leftJoin(\n spaces,\n and(\n isNull(shares.externalPath),\n or(\n and(isNotNull(files.spaceId), eq(spaces.id, files.spaceId)),\n and(isNotNull(shareSpaceRoot.spaceId), eq(spaces.id, shareSpaceRoot.spaceId))\n )\n )\n )\n .leftJoin(spacesRoots, and(isNull(shares.externalPath), isNotNull(files.spaceExternalRootId), eq(spacesRoots.id, files.spaceExternalRootId)))\n .leftJoin(users, eq(users.id, files.ownerId))\n .where(eq(shares.id, shareId))\n .execute()\n return shareEnv\n }\n\n @CacheDecorator()\n async shareIds(userId: number, isAdmin: number): Promise<number[]> {\n if (!this.shareIdsQuery) {\n const unionAlias = union(\n this.fromUserQuery({ id: shares.id }),\n this.fromGroupsQuery({ id: shares.id }),\n this.fromAdminSharesQuery({ id: shares.id })\n ).as('unionAlias')\n this.shareIdsQuery = this.db.select({ id: unionAlias.id }).from(unionAlias).groupBy(unionAlias.id).prepare()\n }\n return (await this.shareIdsQuery.execute({ userId: userId, isAdmin: +isAdmin })).map((r: { id: number }) => r.id)\n }\n\n async listShares(user: UserModel): Promise<ShareFile[]> {\n if (!this.sharesListQuery) {\n const [selectFile, shareRootFile, parentShare, parentShareFile, childShareFromRoot, shareMembers] = this.shareFileSelect()\n const select: ShareFile | SelectedFields<any, any> = {\n id: shares.id,\n name: shares.name,\n alias: shares.alias,\n externalPath: sql`IF (${shares.externalPath} IS NOT NULL, 1, 0)`.mapWith(Boolean),\n description: shares.description,\n enabled: shares.enabled,\n createdAt: shares.createdAt,\n modifiedAt: shares.modifiedAt,\n parent: {\n id: isNotNull(parentShare.id),\n alias: parentShare.alias,\n name: parentShare.name\n },\n file: selectFile,\n hasComments: fileHasCommentsSubquerySQL(\n sql`IF (${shares.fileId} IS NULL AND ${shareRootFile.id} IS NOT NULL, ${shareRootFile.id}, ${files.id})`\n ),\n counts: {\n users: count(sql`CASE WHEN ${shareMembers.userId} IS NOT NULL AND ${shareMembers.linkId} IS NULL THEN 1 END`),\n groups: count(shareMembers.groupId),\n links: count(shareMembers.linkId)\n }\n }\n this.sharesListQuery = this.shareFileJoin(select, shareRootFile, parentShare, parentShareFile, childShareFromRoot, shareMembers)\n .where(\n and(\n eq(shares.type, sql.placeholder('shareType')),\n or(eq(shares.ownerId, sql.placeholder('userId')), and(eq(sql.placeholder('isAdmin'), 1), isNull(shares.ownerId)))\n )\n )\n .groupBy(shares.id)\n .prepare()\n }\n const r: ShareFile[] = await this.sharesListQuery.execute({ userId: user.id, shareType: SHARE_TYPE.COMMON, isAdmin: +user.isAdmin })\n await this.setShareCounts(r)\n return r\n }\n\n async listChildShares(userId: number, shareId: number, isAdmin: number): Promise<ShareChild[]> {\n const childShare: any = alias(shares, 'childShare')\n const withChildren: any = sql`\n WITH RECURSIVE child (id, parentId, ownerId, type, name, alias, fileId) AS\n (SELECT ${shares.id},\n ${shares.parentId},\n ${shares.ownerId},\n ${shares.type},\n ${shares.name},\n ${shares.alias},\n ${shares.fileId}\n FROM ${shares}\n WHERE ${shares.id} = ${shareId}\n AND (${shares.ownerId} = ${userId} OR (${isAdmin} = 1 AND ${shares.ownerId} IS NULL))\n UNION\n SELECT ${childShare.id},\n ${childShare.parentId},\n ${childShare.ownerId},\n ${childShare.type},\n ${childShare.name},\n ${childShare.alias},\n ${childShare.fileId}\n FROM ${shares} AS childShare\n INNER JOIN child AS cs ON ${childShare.parentId} = cs.id)\n SELECT child.id,\n child.alias,\n child.name,\n child.type,\n child.parentId,\n ${users.login} AS ownerLogin,\n ${userFullNameSQL(users)} AS ownerFullName,\n ${users.email} AS ownerEmail,\n ${files.mime} AS fileMime\n FROM child\n LEFT JOIN ${users} ON child.ownerId = ${users.id}\n LEFT JOIN ${files} ON child.fileId = ${files.id}\n WHERE child.id != ${shareId}\n `\n const [r]: ShareChildQuery[][] = (await this.db.execute(withChildren)) as MySqlQueryResult\n return r.map((s) => new ShareChild(s))\n }\n\n async listSpaceShares(spaceId: number): Promise<ShareChild[]> {\n const childShare: any = alias(shares, 'childShare')\n const shareSpaceRoot: any = alias(spacesRoots, 'shareSpaceRoot')\n const childShareSpaceRoot: any = alias(spacesRoots, 'childShareSpaceRoot')\n const withChildren: any = sql`\n WITH RECURSIVE child (id, parentId, ownerId, type, name, alias, fileId) AS\n (SELECT ${shares.id},\n ${shares.parentId},\n ${shares.ownerId},\n ${shares.type},\n ${shares.name},\n ${shares.alias},\n COALESCE(${shares.fileId}, ${shareSpaceRoot.fileId}) AS fileId\n FROM ${shares}\n LEFT JOIN ${spacesRoots} AS shareSpaceRoot ON ${shares.spaceRootId} = ${shareSpaceRoot.id}\n WHERE ${shares.spaceId} = ${spaceId}\n UNION\n SELECT ${childShare.id},\n ${childShare.parentId},\n ${childShare.ownerId},\n ${childShare.type},\n ${childShare.name},\n ${childShare.alias},\n COALESCE(${childShare.fileId}, ${childShareSpaceRoot.fileId}) AS fileId\n FROM ${shares} AS childShare\n INNER JOIN child AS cs ON ${childShare.parentId} = cs.id\n LEFT JOIN ${spacesRoots} AS childShareSpaceRoot ON ${childShare.spaceRootId} = ${childShareSpaceRoot.id})\n SELECT child.id,\n child.alias,\n child.name,\n child.type,\n child.parentId,\n ${users.login} AS ownerLogin,\n ${userFullNameSQL(users)} AS ownerFullName,\n ${users.email} AS ownerEmail,\n ${files.mime} AS fileMime\n FROM child\n LEFT JOIN ${users} ON child.ownerId = ${users.id}\n LEFT JOIN ${files} ON child.fileId = ${files.id}\n `\n const [r]: ShareChildQuery[][] = (await this.db.execute(withChildren)) as MySqlQueryResult\n return r.map((s) => new ShareChild(s))\n }\n\n async membersFromChildSharesPermissions(\n shareId: number,\n userIds: number[] | 'all',\n matchPermRegexp?: string,\n asParent: boolean = true\n ): Promise<ShareChildMember[]> {\n const childShare: any = alias(shares, 'childShare')\n const withChildren: any = sql`\n WITH RECURSIVE children (id, alias, name) AS\n (SELECT ${shares.id}, ${shares.alias}, ${shares.name}\n FROM ${shares}\n WHERE ${asParent ? shares.parentId : shares.id} = ${shareId}\n AND ${userIds === 'all' ? 1 : inArray(shares.ownerId, userIds)}\n UNION\n SELECT ${childShare.id}, ${childShare.alias}, ${childShare.name}\n FROM ${shares} AS childShare\n INNER JOIN children AS cs ON ${childShare.parentId} = cs.id)\n SELECT ${sharesMembers.id} as id,\n ${sharesMembers.userId} as userId,\n ${sharesMembers.permissions} as userPermissions,\n ${sharesMembers.shareId},\n children.alias as shareAlias,\n children.name as shareName\n FROM children\n INNER JOIN ${sharesMembers} ON children.id = ${sharesMembers.shareId}\n `\n if (matchPermRegexp) {\n withChildren.append(sql`WHERE ${sharesMembers.permissions} REGEXP ${matchPermRegexp}`)\n }\n const [r]: ShareChildMember[][] = (await this.db.execute(withChildren)) as MySqlQueryResult\n return r\n }\n\n async shareRootFiles(user: UserModel, options: { withShares?: boolean; withHasComments?: boolean; withSyncs?: boolean }): Promise<FileProps[]> {\n if (!this.shareRootFilesQuery) {\n const shareSpaceRoot: any = alias(spacesRoots, 'shareSpaceRoot')\n const originOwner: any = alias(users, 'originOwner')\n const childShare: any = alias(shares, 'childShare')\n const selectUnion: FileProps | SelectedFields<any, any> = {\n id: files.id,\n path: sql`IF (${files.id} IS NOT NULL, ${filePathSQL(files)}, '')`.as('path'),\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 originOwnerId: sql`${originOwner.id}`.as('originOwnerId'),\n originOwnerLogin: sql`${originOwner.login}`.as('originOwnerLogin'),\n originSpaceId: sql`${spaces.id}`.as('originSpaceId'),\n originSpaceAlias: sql`${spaces.alias}`.as('originSpaceAlias'),\n originSpaceExternalRootId: sql`${files.spaceExternalRootId}`.as('originSpaceExternalRootId'),\n originSpaceRootExternalPath: sql`IF (${spacesRoots.externalPath} IS NULL,\n ${shareSpaceRoot.externalPath}, ${spacesRoots.externalPath})`.as('originSpaceRootExternalPath'),\n originShareExternalId: sql`IF (${shares.externalPath} IS NOT NULL, ${shares.parentId}, NULL)`.as('originShareExternalId'),\n rootId: sql`${shares.id}`.as('rootId'),\n rootAlias: shares.alias,\n rootName: shares.name,\n rootDescription: shares.description,\n rootEnabled: shares.enabled,\n rootExternalPath: shares.externalPath,\n rootPermissions: sharesMembers.permissions,\n rootOwnerId: sql`${users.id}`.as('rootOwnerId'),\n rootOwnerLogin: sql`${users.login}`.as('rootOwnerLogin'),\n rootOwnerEmail: sql`${users.email}`.as('rootOwnerEmail'),\n rootOwnerFullName: userFullNameSQL(users).as('rootOwnerFullName'),\n childShareId: sql`${childShare.id}`.as('childShareId'),\n childShareAlias: sql`${childShare.alias}`.as('childShareAlias'),\n childShareName: sql`${childShare.name}`.as('childShareName'),\n childShareType: sql`${childShare.type}`.as('childShareType'),\n syncPathId: sql`${syncPaths.id}`.as('syncPathId'),\n syncPathClientId: sql`${syncClients.id}`.as('syncPathClientId'),\n syncPathClientName: sql`JSON_VALUE(${syncClients.info}, '$.node')`.as('syncPathClientName')\n }\n const filters: SQL[] = [or(isNull(shares.ownerId), ne(shares.ownerId, sql.placeholder('userId')))]\n const fromUser = this.fromUserQuery(selectUnion, filters).$dynamic()\n const fromGroups = this.fromGroupsQuery(selectUnion, filters).$dynamic()\n const fromAdminShares = this.fromAdminSharesQuery({ ...selectUnion, rootPermissions: sql.raw(`'${SHARE_ALL_OPERATIONS}'`) }, filters).$dynamic()\n for (const q of [fromUser, fromGroups, fromAdminShares]) {\n q.leftJoin(shareSpaceRoot, and(isNull(shares.externalPath), isNull(shares.fileId), eq(shareSpaceRoot.id, shares.spaceRootId)))\n .leftJoin(\n files,\n or(\n // if the child share is from a share with an external path, the child share should have an external path and a fileId\n and(isNotNull(shares.fileId), eq(files.id, shares.fileId)),\n and(isNull(shares.externalPath), isNull(shares.fileId), isNotNull(shareSpaceRoot.fileId), eq(files.id, shareSpaceRoot.fileId))\n )\n )\n .leftJoin(spaces, and(isNull(shares.externalPath), isNotNull(files.spaceId), eq(spaces.id, files.spaceId)))\n .leftJoin(spacesRoots, and(isNull(shares.externalPath), eq(spacesRoots.id, files.spaceExternalRootId)))\n .leftJoin(\n childShare,\n and(\n eq(sql.placeholder('withShares'), sql.raw('1')),\n eq(childShare.ownerId, sql.placeholder('userId')),\n eq(childShare.parentId, shares.id),\n or(\n and(isNull(childShare.externalPath), isNotNull(childShare.fileId), eq(childShare.fileId, shares.fileId)),\n and(\n isNull(childShare.externalPath),\n isNull(childShare.fileId),\n eq(childShare.spaceId, shares.spaceId),\n eq(childShare.spaceRootId, shares.spaceRootId)\n ),\n and(isNotNull(childShare.externalPath), isNull(childShare.fileId), eq(shares.externalPath, childShare.externalPath))\n )\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 isNull(syncPaths.fileId),\n eq(syncPaths.shareId, shares.id)\n )\n )\n .leftJoin(users, eq(users.id, shares.ownerId))\n .leftJoin(originOwner, and(isNull(shares.externalPath), eq(originOwner.id, files.ownerId)))\n }\n const unionAlias = union(fromUser, fromGroups, fromAdminShares).as('union_alias')\n const select: FileProps | SelectedFields<any, any> = {\n id: unionAlias.id,\n path: unionAlias.path,\n isDir: unionAlias.isDir,\n inTrash: unionAlias.inTrash,\n size: unionAlias.size,\n ctime: unionAlias.ctime,\n mtime: unionAlias.mtime,\n mime: unionAlias.mime,\n origin: {\n ownerId: unionAlias.originOwnerId,\n ownerLogin: unionAlias.originOwnerLogin,\n spaceId: unionAlias.originSpaceId,\n spaceAlias: unionAlias.originSpaceAlias,\n spaceExternalRootId: unionAlias.originSpaceExternalRootId,\n spaceRootExternalPath: unionAlias.originSpaceRootExternalPath,\n shareExternalId: unionAlias.originShareExternalId\n },\n root: {\n id: unionAlias.rootId,\n alias: unionAlias.rootAlias,\n name: unionAlias.rootName,\n description: unionAlias.rootDescription,\n enabled: unionAlias.rootEnabled,\n externalPath: unionAlias.rootExternalPath,\n permissions: spaceGroupConcatPermissions(unionAlias.rootPermissions),\n owner: {\n id: unionAlias.rootOwnerId,\n login: unionAlias.rootOwnerLogin,\n email: unionAlias.rootOwnerEmail,\n fullName: unionAlias.rootOwnerFullName\n } satisfies Owner\n },\n shares: sql`IF (${sql.placeholder('withShares')}, ${concatDistinctObjectsInArray(unionAlias.childShareId, {\n id: unionAlias.childShareId,\n alias: unionAlias.childShareAlias,\n name: unionAlias.childShareName,\n type: unionAlias.childShareType\n })}, '[]')`.mapWith(JSON.parse),\n syncs: sql`IF (${sql.placeholder('withSyncs')}, ${concatDistinctObjectsInArray(unionAlias.syncPathId, {\n id: unionAlias.syncPathId,\n clientId: unionAlias.syncPathClientId,\n clientName: unionAlias.syncPathClientName\n })}, '[]')`.mapWith(JSON.parse),\n hasComments: sql<boolean>`IF (${sql.placeholder('withHasComments')}, ${fileHasCommentsSubquerySQL(unionAlias.id)}, 0)`.mapWith(Boolean)\n }\n this.shareRootFilesQuery = this.db.select(select).from(unionAlias).groupBy(unionAlias.rootId).prepare()\n }\n const fps: FileProps[] = await this.shareRootFilesQuery.execute({\n userId: user.id,\n isAdmin: +user.isAdmin,\n withHasComments: +!!options.withHasComments,\n withShares: +!!options.withShares,\n withSyncs: +!!options.withSyncs\n })\n for (const f of fps) {\n f.root.permissions = uniquePermissions(f.root.permissions)\n }\n return fps\n }\n\n @CacheDecorator()\n async permissions(userId: number, shareAlias: string, isAdmin: number = 0): Promise<Partial<SpaceEnv>> {\n if (!this.sharePermissionsQuery) {\n const shareSpaceRoot: any = alias(spacesRoots, 'shareSpaceRoot')\n const selectUnion: SpaceEnv | SelectedFields<any, any> = {\n id: shares.id,\n alias: shares.alias,\n name: shares.name,\n enabled: shares.enabled,\n permissions: sharesMembers.permissions,\n rootId: sql`${files.id}`.as('rootId'),\n rootOwnerId: sql`${users.id}`.as('rootOwnerId'),\n rootOwnerLogin: users.login,\n rootSpaceId: sql`${spaces.id}`.as('rootSpaceId'),\n rootSpaceAlias: sql`${spaces.alias}`.as('rootSpaceAlias'),\n rootPath: sql`IF (${files.id} IS NOT NULL, ${filePathSQL(files)}, NULL)`.as('rootPath'),\n rootInTrash: files.inTrash,\n rootExternalPath: shares.externalPath,\n rootExternalParentShareId: sql`IF (${shares.externalPath} IS NOT NULL, ${shares.parentId}, NULL)`.as('rootExternalParentShareId'),\n rootSpaceRootId: sql`IF (${spacesRoots.id} IS NULL, ${shareSpaceRoot.id}, ${spacesRoots.id})`.as('rootSpaceRootId'),\n rootSpaceRootExternalPath: sql`IF (${spacesRoots.externalPath} IS NULL,\n ${shareSpaceRoot.externalPath}, ${spacesRoots.externalPath})`.as('rootSpaceRootExternalPath')\n }\n const filters: SQL[] = [eq(shares.alias, sql.placeholder('shareAlias'))]\n const fromUser = this.fromUserQuery(selectUnion, filters).$dynamic()\n const fromGroups = this.fromGroupsQuery(selectUnion, filters).$dynamic()\n const fromAdminShares = this.fromAdminSharesQuery({ ...selectUnion, permissions: sql.raw(`'${SHARE_ALL_OPERATIONS}'`) }, filters).$dynamic()\n for (const q of [fromUser, fromGroups, fromAdminShares]) {\n q.leftJoin(shareSpaceRoot, and(isNull(shares.externalPath), isNull(shares.fileId), eq(shareSpaceRoot.id, shares.spaceRootId)))\n .leftJoin(\n files,\n or(\n // in case of share child from a share with external path, child share should have an external path and a fileId\n and(isNotNull(shares.fileId), eq(files.id, shares.fileId)),\n and(isNull(shares.externalPath), isNotNull(shareSpaceRoot.fileId), eq(files.id, shareSpaceRoot.fileId))\n )\n )\n .leftJoin(\n spaces,\n and(\n isNull(shares.externalPath),\n or(\n and(isNotNull(files.spaceId), eq(spaces.id, files.spaceId)),\n and(isNotNull(shareSpaceRoot.spaceId), eq(spaces.id, shareSpaceRoot.spaceId))\n )\n )\n )\n .leftJoin(spacesRoots, and(isNull(shares.externalPath), eq(spacesRoots.id, files.spaceExternalRootId)))\n .leftJoin(users, eq(users.id, files.ownerId))\n }\n const unionAlias = union(fromUser, fromGroups, fromAdminShares).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 root: {\n id: unionAlias.rootId,\n owner: { id: unionAlias.rootOwnerId, login: unionAlias.rootOwnerLogin },\n file: {\n path: unionAlias.rootPath,\n inTrash: unionAlias.rootInTrash,\n space: { id: unionAlias.rootSpaceId, alias: unionAlias.rootSpaceAlias },\n root: { id: unionAlias.rootSpaceRootId, externalPath: unionAlias.rootSpaceRootExternalPath }\n },\n externalPath: unionAlias.rootExternalPath,\n externalParentShareId: unionAlias.rootExternalParentShareId\n }\n }\n this.sharePermissionsQuery = this.db.select(select).from(unionAlias).groupBy(unionAlias.id).limit(1).prepare()\n }\n // `userId` is used in `fromUserQuery` and `fromGroupsQuery` function\n // `isAdmin` is used in `fromAdminSharesQuery` function\n const [r]: Partial<SpaceEnv>[] = await this.sharePermissionsQuery.execute({ userId, shareAlias, isAdmin })\n if (r) {\n r.permissions = uniquePermissions(r.permissions)\n }\n return r\n }\n\n @CacheDecorator(900, true)\n async childSharesCount(shareId: number): Promise<number> {\n const childShare: any = alias(shares, 'childShare')\n const withChildren: any = sql`\n WITH RECURSIVE children (id, parentId) AS\n (SELECT ${shares.id}, ${shares.parentId}\n FROM ${shares}\n WHERE ${shares.parentId} IS NOT NULL\n AND ${shares.parentId} = ${shareId}\n UNION\n SELECT ${childShare.id}, cs.parentId\n FROM ${shares} AS childShare\n INNER JOIN children AS cs ON ${childShare.parentId} = cs.id)\n SELECT COUNT(children.id) as count\n FROM children\n GROUP BY parentId\n `\n const [r]: { count: number }[][] = (await this.db.execute(withChildren)) as MySqlQueryResult\n return r.length ? r[0].count : 0\n }\n\n async clearCachePermissions(shareAlias: string, userIds: number[]) {\n // `permissions` argument must match with `this.permissions.name` function\n for (const userId of userIds) {\n const pattern = this.cache.genSlugKey(this.constructor.name, this.permissions.name, userId, shareAlias, '*')\n const keys = await this.cache.keys(pattern)\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 private shareExistsForAlias(alias: string): any | undefined {\n return this.db.query.shares.findFirst({ columns: { id: true }, where: eq(shares.alias, alias) })\n }\n\n private fromUserQuery(select: SelectedFields<any, any>, filters: SQL[] = []) {\n const where: SQL[] = [eq(sharesMembers.userId, sql.placeholder('userId')), ...filters]\n return this.db\n .select(select)\n .from(sharesMembers)\n .innerJoin(shares, eq(sharesMembers.shareId, shares.id))\n .where(and(...where))\n }\n\n private fromGroupsQuery(select: SelectedFields<any, any>, filters: SQL[] = []) {\n const where: SQL[] = [eq(sharesMembers.groupId, usersGroups.groupId), ...filters]\n return this.db\n .select(select)\n .from(sharesMembers)\n .innerJoin(usersGroups, eq(usersGroups.userId, sql.placeholder('userId')))\n .innerJoin(shares, eq(sharesMembers.shareId, shares.id))\n .where(and(...where))\n }\n\n private fromAdminSharesQuery(select: SelectedFields<any, any>, filters: SQL[] = []) {\n const where: SQL[] = [eq(sql.placeholder('isAdmin'), sql.raw('1')), isNull(shares.ownerId), ...filters]\n return this.db\n .select(select)\n .from(shares)\n .where(and(...where))\n }\n\n private shareFileSelect(): any[] {\n const shareRootFile: any = alias(files, 'shareRootFile')\n const parentShare: any = alias(shares, 'parentShare')\n const parentShareFile: any = alias(files, 'parentShareFile')\n const childShareFromRoot: any = alias(spacesRoots, 'childShareFromRoot')\n const shareMembers: any = alias(sharesMembers, 'shareMembers')\n const selectFile: FileSpace | SelectedFields<any, any> = {\n id: sql`IF (${shares.fileId} IS NULL AND ${shareRootFile.id} IS NOT NULL,\n ${shareRootFile.id}, ${files.id})`.as('fileId'),\n ownerId: sql`IF (${shares.spaceId} IS NOT NULL,\n NULL, ${files.ownerId})`.as('fileOwnerId'),\n name: sql`IF (${shares.fileId} IS NULL AND ${spacesRoots.id} IS NOT NULL,\n ${spacesRoots.name},\n IF(${childShareFromRoot.id} IS NOT NULL\n OR ${shares.fileId} = ${parentShare.fileId}, ${parentShare.name}, ${files.name}))`.as('fileName'),\n path: sql`IF (${shareRootFile.id} IS NOT NULL AND ${shares.fileId} IS NOT NULL,\n REGEXP_REPLACE(${filePathSQL(files)}, CONCAT(${filePathSQL(shareRootFile)}, '/'), ''),\n IF(${parentShareFile.id} IS NOT NULL AND ${shares.fileId} IS NOT NULL,\n IF(${parentShareFile.id} = ${shares.fileId}, '.',\n REGEXP_REPLACE(${filePathSQL(files)}, CONCAT(${filePathSQL(parentShareFile)}, '/'), '')),\n IF(${shares.fileId} IS NOT NULL, ${filePathSQL(files)}, '.')))`.as('filePath'),\n isDir: sql`IF (${shares.fileId} IS NULL AND ${shares.spaceRootId} IS NOT NULL,\n ${shareRootFile.isDir}, ${files.isDir})`.as('fileIsDir'),\n inTrash: sql`IF (${shares.fileId} IS NULL AND ${shares.spaceRootId} IS NOT NULL,\n ${shareRootFile.inTrash}, ${files.inTrash})`.as('fileInTrash'),\n mime: sql`IF (${shares.fileId} IS NULL AND ${shares.spaceRootId} IS NOT NULL,\n ${shareRootFile.mime}, ${files.mime})`.as('fileMime'),\n space: {\n alias: spaces.alias,\n name: spaces.name,\n root: {\n alias: sql`IF (${shares.parentId} IS NULL, ${spacesRoots.alias}, NULL)`,\n name: sql`IF (${shares.parentId} IS NULL, ${spacesRoots.name}, NULL)`\n }\n }\n }\n return [selectFile, shareRootFile, parentShare, parentShareFile, childShareFromRoot, shareMembers]\n }\n\n private shareFileJoin(\n select: any,\n shareRootFile: any,\n parentShare: any,\n parentShareFile: any,\n childShareFromRoot: any,\n shareMembers: any\n ): MySqlSelectDynamic<any> {\n return this.db\n .select(select)\n .from(shares)\n .leftJoin(files, and(isNotNull(shares.fileId), eq(files.id, shares.fileId)))\n .leftJoin(spaces, and(isNull(shares.externalPath), isNull(shares.parentId), isNotNull(shares.spaceId), eq(spaces.id, shares.spaceId)))\n .leftJoin(\n spacesRoots,\n and(isNull(shares.externalPath), isNull(shares.parentId), isNotNull(shares.spaceRootId), eq(spacesRoots.id, shares.spaceRootId))\n )\n .leftJoin(\n childShareFromRoot,\n and(\n isNull(shares.externalPath),\n isNotNull(shares.parentId),\n isNull(shares.fileId),\n isNotNull(shares.spaceRootId),\n eq(childShareFromRoot.id, shares.spaceRootId)\n )\n )\n .leftJoin(\n shareRootFile,\n and(\n isNull(shares.externalPath),\n isNotNull(shares.spaceRootId),\n or(\n and(isNull(shares.parentId), eq(shareRootFile.id, spacesRoots.fileId)),\n and(isNotNull(shares.parentId), eq(shareRootFile.id, childShareFromRoot.fileId))\n )\n )\n )\n .leftJoin(parentShare, and(isNotNull(shares.parentId), eq(parentShare.id, shares.parentId)))\n .leftJoin(parentShareFile, and(isNotNull(shares.parentId), isNotNull(parentShare.fileId), eq(parentShareFile.id, parentShare.fileId)))\n .leftJoin(shareMembers, eq(shareMembers.shareId, shares.id))\n .$dynamic()\n }\n\n private async setShareCounts(shares: ShareFile[]) {\n if (!shares.length) return\n for (const share of shares) {\n share.counts.shares = await this.childSharesCount(share.id)\n }\n }\n}\n"],"names":["SharesQueries","uniqueShareAlias","name","alias","createSlug","count","shareExistsForAlias","shareExistsForOwner","userId","shareId","db","query","shares","findFirst","columns","id","where","and","eq","ownerId","childExistsForShareOwner","childId","isAdmin","childShare","withChildren","sql","parentId","r","execute","length","findHighestParentShare","childShareId","parentShare","withParents","selectShares","props","convertToWhere","select","from","selectParentSharesFromSpaceId","spaceId","ownerIds","isNull","spaceRootId","push","inArray","sharesQuotaExternalPaths","storageUsage","storageQuota","externalPath","isNotNull","listShareLinks","user","asAdmin","shareLinksListQuery","selectFile","shareRootFile","parentShareFile","childShareFromRoot","shareMembers","shareFileSelect","linkGuest","users","description","parent","file","link","links","email","uuid","requireAuth","nbAccess","limitAccess","permissions","isActive","language","expiresAt","createdAt","currentAccess","lastAccess","currentIp","lastIp","shareFileJoin","innerJoin","linkId","type","SHARE_TYPE","LINK","or","placeholder","prepare","shareLinks","getShareWithMembers","shareWithMembersQuery","linkUsers","enabled","storageIndexing","modifiedAt","disabledAt","concatDistinctObjectsInArray","login","userFullNameSQL","role","USER_ROLE","GUEST","MEMBER_TYPE","USER","dateTimeUTC","groups","GROUP_TYPE","PERSONAL","PGROUP","GROUP","raw","leftJoin","groupId","groupBy","limit","share","members","popFromObject","createShare","dbGetInsertedId","insert","values","updateShare","set","dbCheckAffectedRows","update","logger","debug","JSON","stringify","e","error","deleteShare","delete","updateMember","filters","sharesMembers","updateMembers","add","remove","status","ACTION","ADD","userIds","groupIds","UPDATE","DELETE","m","shareEnv","shareSpaceRoot","spacesRoots","fileId","inSharesRepository","mapWith","Boolean","root","files","owner","path","filePathSQL","inTrash","space","spaces","spaceExternalRootId","shareIds","shareIdsQuery","unionAlias","union","fromUserQuery","fromGroupsQuery","fromAdminSharesQuery","as","map","listShares","sharesListQuery","hasComments","fileHasCommentsSubquerySQL","counts","shareType","COMMON","setShareCounts","listChildShares","mime","s","ShareChild","listSpaceShares","childShareSpaceRoot","membersFromChildSharesPermissions","matchPermRegexp","asParent","append","shareRootFiles","options","shareRootFilesQuery","originOwner","selectUnion","isDir","size","ctime","mtime","originOwnerId","originOwnerLogin","originSpaceId","originSpaceAlias","originSpaceExternalRootId","originSpaceRootExternalPath","originShareExternalId","rootId","rootAlias","rootName","rootDescription","rootEnabled","rootExternalPath","rootPermissions","rootOwnerId","rootOwnerLogin","rootOwnerEmail","rootOwnerFullName","childShareAlias","childShareName","childShareType","syncPathId","syncPaths","syncPathClientId","syncClients","syncPathClientName","info","ne","fromUser","$dynamic","fromGroups","fromAdminShares","SHARE_ALL_OPERATIONS","q","clientId","origin","ownerLogin","spaceAlias","spaceRootExternalPath","shareExternalId","spaceGroupConcatPermissions","fullName","parse","syncs","clientName","fps","withHasComments","withShares","withSyncs","f","uniquePermissions","shareAlias","sharePermissionsQuery","rootSpaceId","rootSpaceAlias","rootPath","rootInTrash","rootExternalParentShareId","rootSpaceRootId","rootSpaceRootExternalPath","externalParentShareId","childSharesCount","clearCachePermissions","pattern","cache","genSlugKey","keys","verbose","mdel","catch","usersGroups","Logger"],"mappings":"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"}
|
|
1
|
+
{"version":3,"sources":["../../../../../backend/src/applications/shares/services/shares-queries.service.ts"],"sourcesContent":["import { Inject, Injectable, Logger } from '@nestjs/common'\nimport { and, count, eq, inArray, isNotNull, isNull, ne, or, SelectedFields, SQL, sql } from 'drizzle-orm'\nimport { alias, MySqlSelectDynamic, union } from 'drizzle-orm/mysql-core'\nimport { MySql2PreparedQuery, MySqlQueryResult } from 'drizzle-orm/mysql2'\nimport { ACTION } from '../../../common/constants'\nimport { uniquePermissions } from '../../../common/functions'\nimport { createSlug, 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 type { DBSchema } from '../../../infrastructure/database/interfaces/database.interface'\nimport {\n concatDistinctObjectsInArray,\n convertToWhere,\n dateTimeUTC,\n dbCheckAffectedRows,\n dbGetInsertedId\n} from '../../../infrastructure/database/utils'\nimport { fileHasCommentsSubquerySQL } from '../../comments/schemas/comments.schema'\nimport type { FileProps } from '../../files/interfaces/file-props.interface'\nimport type { FileSpace } from '../../files/interfaces/file-space.interface'\nimport { filePathSQL, files } from '../../files/schemas/files.schema'\nimport { links } from '../../links/schemas/links.schema'\nimport { SpaceEnv } from '../../spaces/models/space-env.model'\nimport { spacesRoots } from '../../spaces/schemas/spaces-roots.schema'\nimport { spaceGroupConcatPermissions, spaces } from '../../spaces/schemas/spaces.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 type { Owner } from '../../users/interfaces/owner.interface'\nimport type { UserModel } from '../../users/models/user.model'\nimport { groups } from '../../users/schemas/groups.schema'\nimport { usersGroups } from '../../users/schemas/users-groups.schema'\nimport { userFullNameSQL, users } from '../../users/schemas/users.schema'\nimport { SHARE_ALL_OPERATIONS, SHARE_TYPE } from '../constants/shares'\nimport type { ShareMemberDto } from '../dto/create-or-update-share.dto'\nimport type { ShareChildMember, ShareChildQuery } from '../interfaces/share-child.interface'\nimport type { ShareEnv } from '../interfaces/share-env.interface'\nimport type { ShareFile } from '../interfaces/share-file.interface'\nimport type { ShareLink } from '../interfaces/share-link.interface'\nimport type { ShareProps } from '../interfaces/share-props.interface'\nimport { ShareChild } from '../models/share-child.model'\nimport type { ShareMembers } from '../schemas/share-members.interface'\nimport type { Share } from '../schemas/share.interface'\nimport { sharesMembers } from '../schemas/shares-members.schema'\nimport { shares } from '../schemas/shares.schema'\n\n@Injectable()\nexport class SharesQueries {\n private readonly logger = new Logger(SharesQueries.name)\n private sharesListQuery: MySql2PreparedQuery<any> = null\n private shareIdsQuery: MySql2PreparedQuery<any> = null\n private shareLinksListQuery: MySql2PreparedQuery<any> = null\n private shareWithMembersQuery: MySql2PreparedQuery<any> = null\n private sharePermissionsQuery: MySql2PreparedQuery<any> = null\n private shareRootFilesQuery: MySql2PreparedQuery<any> = null\n\n constructor(\n @Inject(DB_TOKEN_PROVIDER) private readonly db: DBSchema,\n public readonly cache: Cache\n ) {}\n\n async uniqueShareAlias(name: string): Promise<string> {\n let alias = createSlug(name, true)\n let count = 0\n // Personal space name is reserved\n while (await this.shareExistsForAlias(alias)) {\n count += 1\n alias = `${name}-${count}`\n }\n return alias\n }\n\n shareExistsForOwner(userId: number, shareId: number): any | undefined {\n return this.db.query.shares.findFirst({ columns: { id: true }, where: and(eq(shares.id, shareId), eq(shares.ownerId, userId)) })\n }\n\n async childExistsForShareOwner(userId: number, shareId: number, childId: number, isAdmin: boolean = false): Promise<number> {\n const childShare: any = alias(shares, 'childShare')\n const withChildren: any = sql`\n WITH RECURSIVE child (id, parentId) AS\n (SELECT ${shares.id},\n ${shares.parentId}\n FROM ${shares}\n WHERE ${shares.id} = ${shareId}\n AND (${shares.ownerId} = ${userId} OR (${shares.ownerId} IS NULL AND ${+isAdmin} = 1))\n UNION\n SELECT ${childShare.id},\n ${childShare.parentId}\n FROM ${shares} AS childShare\n INNER JOIN child AS cs ON ${childShare.parentId} = cs.id)\n SELECT child.id\n FROM child\n WHERE child.id = ${childId}\n LIMIT 1\n `\n const [r]: { id: number }[][] = (await this.db.execute(withChildren)) as MySqlQueryResult\n return r.length ? r[0].id : null\n }\n\n async findHighestParentShare(childShareId: number): Promise<number> {\n const parentShare: any = alias(shares, 'parentShare')\n const withParents: any = sql`\n WITH RECURSIVE parent (id, parentId) AS\n (SELECT ${shares.id},\n ${shares.parentId}\n FROM ${shares}\n WHERE ${shares.id} = ${childShareId}\n UNION\n SELECT ${parentShare.id},\n ${parentShare.parentId}\n FROM ${shares} AS parentShare\n INNER JOIN parent AS cs ON ${parentShare.id} = cs.parentId)\n SELECT parent.id\n FROM parent\n WHERE parent.parentId is NULL\n LIMIT 1\n `\n const [r]: { id: number }[][] = (await this.db.execute(withParents)) as MySqlQueryResult\n return r.length ? r[0].id : null\n }\n\n selectShares(props: Partial<Record<keyof Share, any>>): Promise<Partial<Share>[]> {\n const where: SQL[] = convertToWhere(shares, props)\n return this.db\n .select({ id: shares.id, ownerId: shares.ownerId, alias: shares.alias, name: shares.name })\n .from(shares)\n .where(and(...where))\n }\n\n selectParentSharesFromSpaceId(spaceId: number, ownerIds?: number[]): Promise<Partial<Share>[]> {\n const where: SQL[] = [eq(shares.spaceId, spaceId), isNull(shares.spaceRootId), isNull(shares.parentId)]\n if (ownerIds && ownerIds.length) {\n where.push(inArray(shares.ownerId, ownerIds))\n }\n return this.db\n .select({ id: shares.id, ownerId: shares.ownerId })\n .from(shares)\n .where(and(...where))\n }\n\n sharesQuotaExternalPaths(shareId?: number): Promise<Partial<Share>[]> {\n return this.db\n .select({\n id: shares.id,\n alias: shares.alias,\n storageUsage: shares.storageUsage,\n storageQuota: shares.storageQuota,\n externalPath: shares.externalPath\n })\n .from(shares)\n .where(and(isNotNull(shares.externalPath), ...[...(shareId ? [eq(shares.id, shareId)] : [])]))\n }\n\n async listShareLinks(user: UserModel, shareId: number, asAdmin?: boolean): Promise<ShareLink>\n\n async listShareLinks(user: UserModel, shareId?: number, asAdmin?: boolean): Promise<ShareLink[]>\n\n async listShareLinks(user: UserModel, shareId?: number, asAdmin: boolean = false): Promise<ShareLink[] | ShareLink> {\n if (!this.shareLinksListQuery) {\n const [selectFile, shareRootFile, parentShare, parentShareFile, childShareFromRoot, shareMembers] = this.shareFileSelect()\n const linkGuest: any = alias(users, 'linkGuest')\n const select: ShareLink | SelectedFields<any, any> = {\n id: shares.id,\n ownerId: shares.ownerId,\n alias: shares.alias,\n name: shares.name,\n externalPath: sql`IF (${shares.externalPath} IS NOT NULL AND ${shares.ownerId} IS NOT NULL, '.', ${shares.externalPath})`,\n description: shares.description,\n parent: {\n id: parentShare.id,\n ownerId: parentShare.ownerId,\n alias: parentShare.alias,\n name: parentShare.name\n },\n file: selectFile,\n link: {\n id: links.id,\n name: links.name,\n email: links.email,\n uuid: links.uuid,\n requireAuth: links.requireAuth,\n nbAccess: links.nbAccess,\n limitAccess: links.limitAccess,\n permissions: shareMembers.permissions,\n isActive: linkGuest.isActive,\n language: linkGuest.language,\n expiresAt: links.expiresAt,\n createdAt: links.createdAt,\n currentAccess: linkGuest.currentAccess,\n lastAccess: linkGuest.lastAccess,\n currentIp: linkGuest.currentIp,\n lastIp: linkGuest.lastIp\n }\n }\n this.shareLinksListQuery = this.shareFileJoin(select, shareRootFile, parentShare, parentShareFile, childShareFromRoot, shareMembers)\n .innerJoin(links, eq(links.id, shareMembers.linkId))\n .innerJoin(linkGuest, eq(linkGuest.id, links.userId))\n .where(\n and(\n eq(shares.type, SHARE_TYPE.LINK),\n or(eq(sql.placeholder('shareId'), 0), eq(shares.id, sql.placeholder('shareId'))),\n or(\n eq(sql.placeholder('asAdmin'), 1),\n eq(shares.ownerId, sql.placeholder('userId')),\n and(eq(sql.placeholder('isAdmin'), 1), isNull(shares.ownerId))\n )\n )\n )\n .prepare()\n }\n const shareLinks: ShareLink[] = await this.shareLinksListQuery.execute({\n userId: user.id,\n shareId: shareId || 0,\n isAdmin: +user.isAdmin,\n asAdmin: +asAdmin\n })\n if (shareId) {\n return shareLinks.length ? shareLinks[0] : null\n }\n return shareLinks\n }\n\n async getShareWithMembers(user: UserModel, shareId: number, asAdmin = false): Promise<ShareProps> {\n // asAdmin : true if the user is the owner of the parent share or if the share is requested from the administration\n if (!this.shareWithMembersQuery) {\n const [selectFile, shareRootFile, parentShare, parentShareFile, childShareFromRoot, shareMembers] = this.shareFileSelect()\n const linkUsers: any = alias(users, 'linkUsers')\n const select: ShareProps | SelectedFields<any, any> = {\n id: shares.id,\n ownerId: shares.ownerId,\n name: shares.name,\n alias: shares.alias,\n externalPath: sql`IF (${shares.externalPath} IS NOT NULL AND ${shares.ownerId} IS NOT NULL, '.', ${shares.externalPath})`,\n enabled: shares.enabled,\n description: shares.description,\n storageUsage: shares.storageUsage,\n storageQuota: shares.storageQuota,\n storageIndexing: shares.storageIndexing,\n createdAt: shares.createdAt,\n modifiedAt: shares.modifiedAt,\n disabledAt: shares.disabledAt,\n parent: {\n id: parentShare.id,\n ownerId: parentShare.ownerId,\n alias: parentShare.alias,\n name: parentShare.name\n },\n file: selectFile,\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 description: users.email,\n permissions: shareMembers.permissions,\n createdAt: dateTimeUTC(shareMembers.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 description: groups.description,\n permissions: shareMembers.permissions,\n createdAt: dateTimeUTC(shareMembers.createdAt)\n }),\n links: concatDistinctObjectsInArray(linkUsers.id, {\n id: linkUsers.id,\n linkId: links.id,\n login: linkUsers.login,\n name: links.name,\n type: sql.raw(`'${MEMBER_TYPE.USER}'`),\n description: links.email,\n permissions: shareMembers.permissions,\n createdAt: dateTimeUTC(shareMembers.createdAt)\n })\n }\n this.shareWithMembersQuery = this.shareFileJoin(select, shareRootFile, parentShare, parentShareFile, childShareFromRoot, shareMembers)\n .leftJoin(users, and(isNull(shareMembers.linkId), eq(users.id, shareMembers.userId)))\n .leftJoin(groups, eq(groups.id, shareMembers.groupId))\n .leftJoin(linkUsers, and(isNotNull(shareMembers.linkId), eq(linkUsers.id, shareMembers.userId)))\n .leftJoin(links, and(eq(links.userId, linkUsers.id), eq(links.id, shareMembers.linkId)))\n .where(\n and(\n eq(shares.id, sql.placeholder('shareId')),\n or(\n eq(sql.placeholder('asAdmin'), 1),\n eq(shares.ownerId, sql.placeholder('userId')),\n and(eq(sql.placeholder('isAdmin'), 1), isNull(shares.ownerId))\n )\n )\n )\n .groupBy(shares.id)\n .limit(1)\n .prepare()\n }\n const [share] = await this.shareWithMembersQuery.execute({ userId: user.id, shareId, isAdmin: +user.isAdmin, asAdmin: +asAdmin })\n if (!share) return null\n // merge members\n share.members = [...popFromObject('users', share), ...popFromObject('links', share), ...popFromObject('groups', share)]\n return share as ShareProps\n }\n\n async createShare(share: Partial<Share>): Promise<number> {\n return dbGetInsertedId(await this.db.insert(shares).values(share as Share))\n }\n\n async updateShare(id: number, set: Partial<Record<keyof Share, any>>): Promise<boolean> {\n try {\n dbCheckAffectedRows(await this.db.update(shares).set(set).where(eq(shares.id, id)).limit(1), 1)\n this.logger.debug({ tag: this.updateShare.name, msg: `share (${id}) was updated : ${JSON.stringify(set)}` })\n return true\n } catch (e) {\n this.logger.error({ tag: this.updateShare.name, msg: `share (${id}) was not updated : ${JSON.stringify(set)} : ${e}` })\n return false\n }\n }\n\n async deleteShare(shareId: number): Promise<boolean> {\n return dbCheckAffectedRows(await this.db.delete(shares).where(eq(shares.id, shareId)), 1)\n }\n\n async updateMember(set: Partial<Record<keyof ShareMembers, any>>, filters: Partial<Record<keyof ShareMembers, any>>): Promise<boolean> {\n const where: SQL[] = convertToWhere(sharesMembers, filters)\n try {\n dbCheckAffectedRows(\n await this.db\n .update(sharesMembers)\n .set(set)\n .where(and(...where))\n .limit(1),\n 1\n )\n this.logger.debug({ tag: this.updateMember.name, msg: `${JSON.stringify(filters)} was updated : ${JSON.stringify(set)}` })\n return true\n } catch (e) {\n this.logger.error({ tag: this.updateMember.name, msg: `${JSON.stringify(filters)} was not updated : ${JSON.stringify(set)} : ${e}` })\n return false\n }\n }\n\n async updateMembers(\n shareId: number,\n add: ShareMemberDto[],\n update: Record<string | 'object', Partial<ShareMembers> | ShareMemberDto>[],\n remove: ShareMemberDto[]\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(sharesMembers).values({\n shareId: shareId,\n ...(m.type === MEMBER_TYPE.USER || m.type === MEMBER_TYPE.GUEST ? { userId: m.id } : { groupId: m.id }),\n permissions: m.permissions\n } as ShareMembers),\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 share (${shareId})` })\n } catch (e) {\n this.logger.error({ tag: this.updateMembers.name, msg: `${m.type} (${m.id}) was not added to the share (${shareId}) -> : ${e}` })\n }\n }\n // update\n for (const props of update) {\n const m: ShareMemberDto = popFromObject('object', props)\n try {\n dbCheckAffectedRows(\n await this.db\n .update(sharesMembers)\n .set(props)\n .where(\n and(\n eq(sharesMembers.shareId, shareId),\n eq(m.type === MEMBER_TYPE.USER || m.type === MEMBER_TYPE.GUEST ? sharesMembers.userId : sharesMembers.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 share (${shareId}) : ${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 share (${shareId}) : ${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(sharesMembers)\n .where(\n and(\n eq(sharesMembers.shareId, shareId),\n eq(m.type === MEMBER_TYPE.USER || m.type === MEMBER_TYPE.GUEST ? sharesMembers.userId : sharesMembers.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 share (${shareId})` })\n } catch (e) {\n this.logger.error({ tag: this.updateMembers.name, msg: `${m.type} (${m.id}) was not removed from share (${shareId}) : ${e}` })\n }\n }\n return status\n }\n\n async shareEnv(shareId: number): Promise<Partial<ShareEnv>> {\n const shareSpaceRoot: any = alias(spacesRoots, 'shareSpaceRoot')\n const select: ShareEnv | SelectedFields<any, any> = {\n id: shares.id,\n alias: shares.alias,\n enabled: shares.enabled,\n fileId: shares.fileId,\n spaceId: shares.spaceId,\n spaceRootId: shares.spaceRootId,\n inSharesRepository: sql`${1}`.mapWith(Boolean),\n root: {\n id: files.id,\n owner: { id: users.id, login: users.login },\n file: {\n path: sql`IF (${files.id} IS NOT NULL, ${filePathSQL(files)}, NULL)`,\n inTrash: files.inTrash,\n space: { id: spaces.id, alias: spaces.alias },\n root: {\n id: sql`IF (${spacesRoots.id} IS NULL, ${shareSpaceRoot.id}, ${spacesRoots.id})`,\n externalPath: sql`IF (${spacesRoots.externalPath} IS NULL,\n ${shareSpaceRoot.externalPath}, ${spacesRoots.externalPath})`\n }\n },\n externalPath: shares.externalPath\n }\n }\n const [shareEnv] = await this.db\n .select(select)\n .from(shares)\n .leftJoin(shareSpaceRoot, and(isNull(shares.externalPath), isNull(shares.fileId), eq(shareSpaceRoot.id, shares.spaceRootId)))\n .leftJoin(\n files,\n and(\n isNull(shares.externalPath),\n or(and(isNotNull(shares.fileId), eq(files.id, shares.fileId)), and(isNotNull(shareSpaceRoot.fileId), eq(files.id, shareSpaceRoot.fileId)))\n )\n )\n .leftJoin(\n spaces,\n and(\n isNull(shares.externalPath),\n or(\n and(isNotNull(files.spaceId), eq(spaces.id, files.spaceId)),\n and(isNotNull(shareSpaceRoot.spaceId), eq(spaces.id, shareSpaceRoot.spaceId))\n )\n )\n )\n .leftJoin(spacesRoots, and(isNull(shares.externalPath), isNotNull(files.spaceExternalRootId), eq(spacesRoots.id, files.spaceExternalRootId)))\n .leftJoin(users, eq(users.id, files.ownerId))\n .where(eq(shares.id, shareId))\n .execute()\n return shareEnv\n }\n\n @CacheDecorator()\n async shareIds(userId: number, isAdmin: number): Promise<number[]> {\n if (!this.shareIdsQuery) {\n const unionAlias = union(\n this.fromUserQuery({ id: shares.id }),\n this.fromGroupsQuery({ id: shares.id }),\n this.fromAdminSharesQuery({ id: shares.id })\n ).as('unionAlias')\n this.shareIdsQuery = this.db.select({ id: unionAlias.id }).from(unionAlias).groupBy(unionAlias.id).prepare()\n }\n return (await this.shareIdsQuery.execute({ userId: userId, isAdmin: +isAdmin })).map((r: { id: number }) => r.id)\n }\n\n async listShares(user: UserModel): Promise<ShareFile[]> {\n if (!this.sharesListQuery) {\n const [selectFile, shareRootFile, parentShare, parentShareFile, childShareFromRoot, shareMembers] = this.shareFileSelect()\n const select: ShareFile | SelectedFields<any, any> = {\n id: shares.id,\n name: shares.name,\n alias: shares.alias,\n externalPath: sql`IF (${shares.externalPath} IS NOT NULL, 1, 0)`.mapWith(Boolean),\n description: shares.description,\n enabled: shares.enabled,\n createdAt: shares.createdAt,\n modifiedAt: shares.modifiedAt,\n parent: {\n id: isNotNull(parentShare.id),\n alias: parentShare.alias,\n name: parentShare.name\n },\n file: selectFile,\n hasComments: fileHasCommentsSubquerySQL(\n sql`IF (${shares.fileId} IS NULL AND ${shareRootFile.id} IS NOT NULL, ${shareRootFile.id}, ${files.id})`\n ),\n counts: {\n users: count(sql`CASE WHEN ${shareMembers.userId} IS NOT NULL AND ${shareMembers.linkId} IS NULL THEN 1 END`),\n groups: count(shareMembers.groupId),\n links: count(shareMembers.linkId)\n }\n }\n this.sharesListQuery = this.shareFileJoin(select, shareRootFile, parentShare, parentShareFile, childShareFromRoot, shareMembers)\n .where(\n and(\n eq(shares.type, sql.placeholder('shareType')),\n or(eq(shares.ownerId, sql.placeholder('userId')), and(eq(sql.placeholder('isAdmin'), 1), isNull(shares.ownerId)))\n )\n )\n .groupBy(shares.id)\n .prepare()\n }\n const r: ShareFile[] = await this.sharesListQuery.execute({ userId: user.id, shareType: SHARE_TYPE.COMMON, isAdmin: +user.isAdmin })\n await this.setShareCounts(r)\n return r\n }\n\n async listChildShares(userId: number, shareId: number, isAdmin: number): Promise<ShareChild[]> {\n const childShare: any = alias(shares, 'childShare')\n const withChildren: any = sql`\n WITH RECURSIVE child (id, parentId, ownerId, type, name, alias, fileId) AS\n (SELECT ${shares.id},\n ${shares.parentId},\n ${shares.ownerId},\n ${shares.type},\n ${shares.name},\n ${shares.alias},\n ${shares.fileId}\n FROM ${shares}\n WHERE ${shares.id} = ${shareId}\n AND (${shares.ownerId} = ${userId} OR (${isAdmin} = 1 AND ${shares.ownerId} IS NULL))\n UNION\n SELECT ${childShare.id},\n ${childShare.parentId},\n ${childShare.ownerId},\n ${childShare.type},\n ${childShare.name},\n ${childShare.alias},\n ${childShare.fileId}\n FROM ${shares} AS childShare\n INNER JOIN child AS cs ON ${childShare.parentId} = cs.id)\n SELECT child.id,\n child.alias,\n child.name,\n child.type,\n child.parentId,\n ${users.login} AS ownerLogin,\n ${userFullNameSQL(users)} AS ownerFullName,\n ${users.email} AS ownerEmail,\n ${files.mime} AS fileMime\n FROM child\n LEFT JOIN ${users} ON child.ownerId = ${users.id}\n LEFT JOIN ${files} ON child.fileId = ${files.id}\n WHERE child.id != ${shareId}\n `\n const [r]: ShareChildQuery[][] = (await this.db.execute(withChildren)) as MySqlQueryResult\n return r.map((s) => new ShareChild(s))\n }\n\n async listSpaceShares(spaceId: number): Promise<ShareChild[]> {\n const childShare: any = alias(shares, 'childShare')\n const shareSpaceRoot: any = alias(spacesRoots, 'shareSpaceRoot')\n const childShareSpaceRoot: any = alias(spacesRoots, 'childShareSpaceRoot')\n const withChildren: any = sql`\n WITH RECURSIVE child (id, parentId, ownerId, type, name, alias, fileId) AS\n (SELECT ${shares.id},\n ${shares.parentId},\n ${shares.ownerId},\n ${shares.type},\n ${shares.name},\n ${shares.alias},\n COALESCE(${shares.fileId}, ${shareSpaceRoot.fileId}) AS fileId\n FROM ${shares}\n LEFT JOIN ${spacesRoots} AS shareSpaceRoot ON ${shares.spaceRootId} = ${shareSpaceRoot.id}\n WHERE ${shares.spaceId} = ${spaceId}\n UNION\n SELECT ${childShare.id},\n ${childShare.parentId},\n ${childShare.ownerId},\n ${childShare.type},\n ${childShare.name},\n ${childShare.alias},\n COALESCE(${childShare.fileId}, ${childShareSpaceRoot.fileId}) AS fileId\n FROM ${shares} AS childShare\n INNER JOIN child AS cs ON ${childShare.parentId} = cs.id\n LEFT JOIN ${spacesRoots} AS childShareSpaceRoot ON ${childShare.spaceRootId} = ${childShareSpaceRoot.id})\n SELECT child.id,\n child.alias,\n child.name,\n child.type,\n child.parentId,\n ${users.login} AS ownerLogin,\n ${userFullNameSQL(users)} AS ownerFullName,\n ${users.email} AS ownerEmail,\n ${files.mime} AS fileMime\n FROM child\n LEFT JOIN ${users} ON child.ownerId = ${users.id}\n LEFT JOIN ${files} ON child.fileId = ${files.id}\n `\n const [r]: ShareChildQuery[][] = (await this.db.execute(withChildren)) as MySqlQueryResult\n return r.map((s) => new ShareChild(s))\n }\n\n async membersFromChildSharesPermissions(\n shareId: number,\n userIds: number[] | 'all',\n matchPermRegexp?: string,\n asParent: boolean = true\n ): Promise<ShareChildMember[]> {\n const childShare: any = alias(shares, 'childShare')\n const withChildren: any = sql`\n WITH RECURSIVE children (id, alias, name) AS\n (SELECT ${shares.id}, ${shares.alias}, ${shares.name}\n FROM ${shares}\n WHERE ${asParent ? shares.parentId : shares.id} = ${shareId}\n AND ${userIds === 'all' ? 1 : inArray(shares.ownerId, userIds)}\n UNION\n SELECT ${childShare.id}, ${childShare.alias}, ${childShare.name}\n FROM ${shares} AS childShare\n INNER JOIN children AS cs ON ${childShare.parentId} = cs.id)\n SELECT ${sharesMembers.id} as id,\n ${sharesMembers.userId} as userId,\n ${sharesMembers.permissions} as userPermissions,\n ${sharesMembers.shareId},\n children.alias as shareAlias,\n children.name as shareName\n FROM children\n INNER JOIN ${sharesMembers} ON children.id = ${sharesMembers.shareId}\n `\n if (matchPermRegexp) {\n withChildren.append(sql`WHERE ${sharesMembers.permissions} REGEXP ${matchPermRegexp}`)\n }\n const [r]: ShareChildMember[][] = (await this.db.execute(withChildren)) as MySqlQueryResult\n return r\n }\n\n async shareRootFiles(user: UserModel, options: { withShares?: boolean; withHasComments?: boolean; withSyncs?: boolean }): Promise<FileProps[]> {\n if (!this.shareRootFilesQuery) {\n const shareSpaceRoot: any = alias(spacesRoots, 'shareSpaceRoot')\n const originOwner: any = alias(users, 'originOwner')\n const childShare: any = alias(shares, 'childShare')\n const selectUnion: FileProps | SelectedFields<any, any> = {\n id: files.id,\n path: sql`IF (${files.id} IS NOT NULL, ${filePathSQL(files)}, '')`.as('path'),\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 originOwnerId: sql`${originOwner.id}`.as('originOwnerId'),\n originOwnerLogin: sql`${originOwner.login}`.as('originOwnerLogin'),\n originSpaceId: sql`${spaces.id}`.as('originSpaceId'),\n originSpaceAlias: sql`${spaces.alias}`.as('originSpaceAlias'),\n originSpaceExternalRootId: sql`${files.spaceExternalRootId}`.as('originSpaceExternalRootId'),\n originSpaceRootExternalPath: sql`IF (${spacesRoots.externalPath} IS NULL,\n ${shareSpaceRoot.externalPath}, ${spacesRoots.externalPath})`.as('originSpaceRootExternalPath'),\n originShareExternalId: sql`IF (${shares.externalPath} IS NOT NULL, ${shares.parentId}, NULL)`.as('originShareExternalId'),\n rootId: sql`${shares.id}`.as('rootId'),\n rootAlias: shares.alias,\n rootName: shares.name,\n rootDescription: shares.description,\n rootEnabled: shares.enabled,\n rootExternalPath: shares.externalPath,\n rootPermissions: sharesMembers.permissions,\n rootOwnerId: sql`${users.id}`.as('rootOwnerId'),\n rootOwnerLogin: sql`${users.login}`.as('rootOwnerLogin'),\n rootOwnerEmail: sql`${users.email}`.as('rootOwnerEmail'),\n rootOwnerFullName: userFullNameSQL(users).as('rootOwnerFullName'),\n childShareId: sql`${childShare.id}`.as('childShareId'),\n childShareAlias: sql`${childShare.alias}`.as('childShareAlias'),\n childShareName: sql`${childShare.name}`.as('childShareName'),\n childShareType: sql`${childShare.type}`.as('childShareType'),\n syncPathId: sql`${syncPaths.id}`.as('syncPathId'),\n syncPathClientId: sql`${syncClients.id}`.as('syncPathClientId'),\n syncPathClientName: sql`JSON_VALUE(${syncClients.info}, '$.node')`.as('syncPathClientName')\n }\n const filters: SQL[] = [or(isNull(shares.ownerId), ne(shares.ownerId, sql.placeholder('userId')))]\n const fromUser = this.fromUserQuery(selectUnion, filters).$dynamic()\n const fromGroups = this.fromGroupsQuery(selectUnion, filters).$dynamic()\n const fromAdminShares = this.fromAdminSharesQuery({ ...selectUnion, rootPermissions: sql.raw(`'${SHARE_ALL_OPERATIONS}'`) }, filters).$dynamic()\n for (const q of [fromUser, fromGroups, fromAdminShares]) {\n q.leftJoin(shareSpaceRoot, and(isNull(shares.externalPath), isNull(shares.fileId), eq(shareSpaceRoot.id, shares.spaceRootId)))\n .leftJoin(\n files,\n or(\n // if the child share is from a share with an external path, the child share should have an external path and a fileId\n and(isNotNull(shares.fileId), eq(files.id, shares.fileId)),\n and(isNull(shares.externalPath), isNull(shares.fileId), isNotNull(shareSpaceRoot.fileId), eq(files.id, shareSpaceRoot.fileId))\n )\n )\n .leftJoin(spaces, and(isNull(shares.externalPath), isNotNull(files.spaceId), eq(spaces.id, files.spaceId)))\n .leftJoin(spacesRoots, and(isNull(shares.externalPath), eq(spacesRoots.id, files.spaceExternalRootId)))\n .leftJoin(\n childShare,\n and(\n eq(sql.placeholder('withShares'), sql.raw('1')),\n eq(childShare.ownerId, sql.placeholder('userId')),\n eq(childShare.parentId, shares.id),\n or(\n and(isNull(childShare.externalPath), isNotNull(childShare.fileId), eq(childShare.fileId, shares.fileId)),\n and(\n isNull(childShare.externalPath),\n isNull(childShare.fileId),\n eq(childShare.spaceId, shares.spaceId),\n eq(childShare.spaceRootId, shares.spaceRootId)\n ),\n and(isNotNull(childShare.externalPath), isNull(childShare.fileId), eq(shares.externalPath, childShare.externalPath))\n )\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 isNull(syncPaths.fileId),\n eq(syncPaths.shareId, shares.id)\n )\n )\n .leftJoin(users, eq(users.id, shares.ownerId))\n .leftJoin(originOwner, and(isNull(shares.externalPath), eq(originOwner.id, files.ownerId)))\n }\n const unionAlias = union(fromUser, fromGroups, fromAdminShares).as('union_alias')\n const select: FileProps | SelectedFields<any, any> = {\n id: unionAlias.id,\n path: unionAlias.path,\n isDir: unionAlias.isDir,\n inTrash: unionAlias.inTrash,\n size: unionAlias.size,\n ctime: unionAlias.ctime,\n mtime: unionAlias.mtime,\n mime: unionAlias.mime,\n origin: {\n ownerId: unionAlias.originOwnerId,\n ownerLogin: unionAlias.originOwnerLogin,\n spaceId: unionAlias.originSpaceId,\n spaceAlias: unionAlias.originSpaceAlias,\n spaceExternalRootId: unionAlias.originSpaceExternalRootId,\n spaceRootExternalPath: unionAlias.originSpaceRootExternalPath,\n shareExternalId: unionAlias.originShareExternalId\n },\n root: {\n id: unionAlias.rootId,\n alias: unionAlias.rootAlias,\n name: unionAlias.rootName,\n description: unionAlias.rootDescription,\n enabled: unionAlias.rootEnabled,\n externalPath: unionAlias.rootExternalPath,\n permissions: spaceGroupConcatPermissions(unionAlias.rootPermissions),\n owner: {\n id: unionAlias.rootOwnerId,\n login: unionAlias.rootOwnerLogin,\n email: unionAlias.rootOwnerEmail,\n fullName: unionAlias.rootOwnerFullName\n } satisfies Owner\n },\n shares: sql`IF (${sql.placeholder('withShares')}, ${concatDistinctObjectsInArray(unionAlias.childShareId, {\n id: unionAlias.childShareId,\n alias: unionAlias.childShareAlias,\n name: unionAlias.childShareName,\n type: unionAlias.childShareType\n })}, '[]')`.mapWith(JSON.parse),\n syncs: sql`IF (${sql.placeholder('withSyncs')}, ${concatDistinctObjectsInArray(unionAlias.syncPathId, {\n id: unionAlias.syncPathId,\n clientId: unionAlias.syncPathClientId,\n clientName: unionAlias.syncPathClientName\n })}, '[]')`.mapWith(JSON.parse),\n hasComments: sql<boolean>`IF (${sql.placeholder('withHasComments')}, ${fileHasCommentsSubquerySQL(unionAlias.id)}, 0)`.mapWith(Boolean)\n }\n this.shareRootFilesQuery = this.db.select(select).from(unionAlias).groupBy(unionAlias.rootId).prepare()\n }\n const fps: FileProps[] = await this.shareRootFilesQuery.execute({\n userId: user.id,\n isAdmin: +user.isAdmin,\n withHasComments: +!!options.withHasComments,\n withShares: +!!options.withShares,\n withSyncs: +!!options.withSyncs\n })\n for (const f of fps) {\n f.root.permissions = uniquePermissions(f.root.permissions)\n }\n return fps\n }\n\n @CacheDecorator()\n async permissions(userId: number, shareAlias: string, isAdmin: number = 0): Promise<Partial<SpaceEnv>> {\n if (!this.sharePermissionsQuery) {\n const shareSpaceRoot: any = alias(spacesRoots, 'shareSpaceRoot')\n const selectUnion: SpaceEnv | SelectedFields<any, any> = {\n id: shares.id,\n alias: shares.alias,\n name: shares.name,\n enabled: shares.enabled,\n permissions: sharesMembers.permissions,\n rootId: sql`${files.id}`.as('rootId'),\n rootOwnerId: sql`${users.id}`.as('rootOwnerId'),\n rootOwnerLogin: users.login,\n rootSpaceId: sql`${spaces.id}`.as('rootSpaceId'),\n rootSpaceAlias: sql`${spaces.alias}`.as('rootSpaceAlias'),\n rootPath: sql`IF (${files.id} IS NOT NULL, ${filePathSQL(files)}, NULL)`.as('rootPath'),\n rootInTrash: files.inTrash,\n rootExternalPath: shares.externalPath,\n rootExternalParentShareId: sql`IF (${shares.externalPath} IS NOT NULL, ${shares.parentId}, NULL)`.as('rootExternalParentShareId'),\n rootSpaceRootId: sql`IF (${spacesRoots.id} IS NULL, ${shareSpaceRoot.id}, ${spacesRoots.id})`.as('rootSpaceRootId'),\n rootSpaceRootExternalPath: sql`IF (${spacesRoots.externalPath} IS NULL,\n ${shareSpaceRoot.externalPath}, ${spacesRoots.externalPath})`.as('rootSpaceRootExternalPath')\n }\n const filters: SQL[] = [eq(shares.alias, sql.placeholder('shareAlias'))]\n const fromUser = this.fromUserQuery(selectUnion, filters).$dynamic()\n const fromGroups = this.fromGroupsQuery(selectUnion, filters).$dynamic()\n const fromAdminShares = this.fromAdminSharesQuery({ ...selectUnion, permissions: sql.raw(`'${SHARE_ALL_OPERATIONS}'`) }, filters).$dynamic()\n for (const q of [fromUser, fromGroups, fromAdminShares]) {\n q.leftJoin(shareSpaceRoot, and(isNull(shares.externalPath), isNull(shares.fileId), eq(shareSpaceRoot.id, shares.spaceRootId)))\n .leftJoin(\n files,\n or(\n // in case of share child from a share with external path, child share should have an external path and a fileId\n and(isNotNull(shares.fileId), eq(files.id, shares.fileId)),\n and(isNull(shares.externalPath), isNotNull(shareSpaceRoot.fileId), eq(files.id, shareSpaceRoot.fileId))\n )\n )\n .leftJoin(\n spaces,\n and(\n isNull(shares.externalPath),\n or(\n and(isNotNull(files.spaceId), eq(spaces.id, files.spaceId)),\n and(isNotNull(shareSpaceRoot.spaceId), eq(spaces.id, shareSpaceRoot.spaceId))\n )\n )\n )\n .leftJoin(spacesRoots, and(isNull(shares.externalPath), eq(spacesRoots.id, files.spaceExternalRootId)))\n .leftJoin(users, eq(users.id, files.ownerId))\n }\n const unionAlias = union(fromUser, fromGroups, fromAdminShares).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 root: {\n id: unionAlias.rootId,\n owner: { id: unionAlias.rootOwnerId, login: unionAlias.rootOwnerLogin },\n file: {\n path: unionAlias.rootPath,\n inTrash: unionAlias.rootInTrash,\n space: { id: unionAlias.rootSpaceId, alias: unionAlias.rootSpaceAlias },\n root: { id: unionAlias.rootSpaceRootId, externalPath: unionAlias.rootSpaceRootExternalPath }\n },\n externalPath: unionAlias.rootExternalPath,\n externalParentShareId: unionAlias.rootExternalParentShareId\n }\n }\n this.sharePermissionsQuery = this.db.select(select).from(unionAlias).groupBy(unionAlias.id).limit(1).prepare()\n }\n // `userId` is used in `fromUserQuery` and `fromGroupsQuery` function\n // `isAdmin` is used in `fromAdminSharesQuery` function\n const [r]: Partial<SpaceEnv>[] = await this.sharePermissionsQuery.execute({ userId, shareAlias, isAdmin })\n if (r) {\n r.permissions = uniquePermissions(r.permissions)\n }\n return r\n }\n\n @CacheDecorator(900, true)\n async childSharesCount(shareId: number): Promise<number> {\n const childShare: any = alias(shares, 'childShare')\n const withChildren: any = sql`\n WITH RECURSIVE children (id, parentId) AS\n (SELECT ${shares.id}, ${shares.parentId}\n FROM ${shares}\n WHERE ${shares.parentId} IS NOT NULL\n AND ${shares.parentId} = ${shareId}\n UNION\n SELECT ${childShare.id}, cs.parentId\n FROM ${shares} AS childShare\n INNER JOIN children AS cs ON ${childShare.parentId} = cs.id)\n SELECT COUNT(children.id) as count\n FROM children\n GROUP BY parentId\n `\n const [r]: { count: number }[][] = (await this.db.execute(withChildren)) as MySqlQueryResult\n return r.length ? r[0].count : 0\n }\n\n async clearCachePermissions(shareAlias: string, userIds: number[]) {\n // `permissions` argument must match with `this.permissions.name` function\n for (const userId of userIds) {\n const pattern = this.cache.genSlugKey(this.constructor.name, this.permissions.name, userId, shareAlias, '*')\n const keys = await this.cache.keys(pattern)\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 private shareExistsForAlias(alias: string): any | undefined {\n return this.db.query.shares.findFirst({ columns: { id: true }, where: eq(shares.alias, alias) })\n }\n\n private fromUserQuery(select: SelectedFields<any, any>, filters: SQL[] = []) {\n const where: SQL[] = [eq(sharesMembers.userId, sql.placeholder('userId')), ...filters]\n return this.db\n .select(select)\n .from(sharesMembers)\n .innerJoin(shares, eq(sharesMembers.shareId, shares.id))\n .where(and(...where))\n }\n\n private fromGroupsQuery(select: SelectedFields<any, any>, filters: SQL[] = []) {\n const where: SQL[] = [eq(sharesMembers.groupId, usersGroups.groupId), ...filters]\n return this.db\n .select(select)\n .from(sharesMembers)\n .innerJoin(usersGroups, eq(usersGroups.userId, sql.placeholder('userId')))\n .innerJoin(shares, eq(sharesMembers.shareId, shares.id))\n .where(and(...where))\n }\n\n private fromAdminSharesQuery(select: SelectedFields<any, any>, filters: SQL[] = []) {\n const where: SQL[] = [eq(sql.placeholder('isAdmin'), sql.raw('1')), isNull(shares.ownerId), ...filters]\n return this.db\n .select(select)\n .from(shares)\n .where(and(...where))\n }\n\n private shareFileSelect(): any[] {\n const shareRootFile: any = alias(files, 'shareRootFile')\n const parentShare: any = alias(shares, 'parentShare')\n const parentShareFile: any = alias(files, 'parentShareFile')\n const childShareFromRoot: any = alias(spacesRoots, 'childShareFromRoot')\n const shareMembers: any = alias(sharesMembers, 'shareMembers')\n const selectFile: FileSpace | SelectedFields<any, any> = {\n id: sql`IF (${shares.fileId} IS NULL AND ${shareRootFile.id} IS NOT NULL,\n ${shareRootFile.id}, ${files.id})`.as('fileId'),\n ownerId: sql`IF (${shares.spaceId} IS NOT NULL,\n NULL, ${files.ownerId})`.as('fileOwnerId'),\n name: sql`IF (${shares.fileId} IS NULL AND ${spacesRoots.id} IS NOT NULL,\n ${spacesRoots.name},\n IF(${childShareFromRoot.id} IS NOT NULL\n OR ${shares.fileId} = ${parentShare.fileId}, ${parentShare.name}, ${files.name}))`.as('fileName'),\n path: sql`IF (${shareRootFile.id} IS NOT NULL AND ${shares.fileId} IS NOT NULL,\n REGEXP_REPLACE(${filePathSQL(files)}, CONCAT(${filePathSQL(shareRootFile)}, '/'), ''),\n IF(${parentShareFile.id} IS NOT NULL AND ${shares.fileId} IS NOT NULL,\n IF(${parentShareFile.id} = ${shares.fileId}, '.',\n REGEXP_REPLACE(${filePathSQL(files)}, CONCAT(${filePathSQL(parentShareFile)}, '/'), '')),\n IF(${shares.fileId} IS NOT NULL, ${filePathSQL(files)}, '.')))`.as('filePath'),\n isDir: sql`IF (${shares.fileId} IS NULL AND ${shares.spaceRootId} IS NOT NULL,\n ${shareRootFile.isDir}, ${files.isDir})`.as('fileIsDir'),\n inTrash: sql`IF (${shares.fileId} IS NULL AND ${shares.spaceRootId} IS NOT NULL,\n ${shareRootFile.inTrash}, ${files.inTrash})`.as('fileInTrash'),\n mime: sql`IF (${shares.fileId} IS NULL AND ${shares.spaceRootId} IS NOT NULL,\n ${shareRootFile.mime}, ${files.mime})`.as('fileMime'),\n space: {\n alias: spaces.alias,\n name: spaces.name,\n root: {\n alias: sql`IF (${shares.parentId} IS NULL, ${spacesRoots.alias}, NULL)`,\n name: sql`IF (${shares.parentId} IS NULL, ${spacesRoots.name}, NULL)`\n }\n }\n }\n return [selectFile, shareRootFile, parentShare, parentShareFile, childShareFromRoot, shareMembers]\n }\n\n private shareFileJoin(\n select: any,\n shareRootFile: any,\n parentShare: any,\n parentShareFile: any,\n childShareFromRoot: any,\n shareMembers: any\n ): MySqlSelectDynamic<any> {\n return this.db\n .select(select)\n .from(shares)\n .leftJoin(files, and(isNotNull(shares.fileId), eq(files.id, shares.fileId)))\n .leftJoin(spaces, and(isNull(shares.externalPath), isNull(shares.parentId), isNotNull(shares.spaceId), eq(spaces.id, shares.spaceId)))\n .leftJoin(\n spacesRoots,\n and(isNull(shares.externalPath), isNull(shares.parentId), isNotNull(shares.spaceRootId), eq(spacesRoots.id, shares.spaceRootId))\n )\n .leftJoin(\n childShareFromRoot,\n and(\n isNull(shares.externalPath),\n isNotNull(shares.parentId),\n isNull(shares.fileId),\n isNotNull(shares.spaceRootId),\n eq(childShareFromRoot.id, shares.spaceRootId)\n )\n )\n .leftJoin(\n shareRootFile,\n and(\n isNull(shares.externalPath),\n isNotNull(shares.spaceRootId),\n or(\n and(isNull(shares.parentId), eq(shareRootFile.id, spacesRoots.fileId)),\n and(isNotNull(shares.parentId), eq(shareRootFile.id, childShareFromRoot.fileId))\n )\n )\n )\n .leftJoin(parentShare, and(isNotNull(shares.parentId), eq(parentShare.id, shares.parentId)))\n .leftJoin(parentShareFile, and(isNotNull(shares.parentId), isNotNull(parentShare.fileId), eq(parentShareFile.id, parentShare.fileId)))\n .leftJoin(shareMembers, eq(shareMembers.shareId, shares.id))\n .$dynamic()\n }\n\n private async setShareCounts(shares: ShareFile[]) {\n if (!shares.length) return\n for (const share of shares) {\n share.counts.shares = await this.childSharesCount(share.id)\n }\n }\n}\n"],"names":["SharesQueries","uniqueShareAlias","name","alias","createSlug","count","shareExistsForAlias","shareExistsForOwner","userId","shareId","db","query","shares","findFirst","columns","id","where","and","eq","ownerId","childExistsForShareOwner","childId","isAdmin","childShare","withChildren","sql","parentId","r","execute","length","findHighestParentShare","childShareId","parentShare","withParents","selectShares","props","convertToWhere","select","from","selectParentSharesFromSpaceId","spaceId","ownerIds","isNull","spaceRootId","push","inArray","sharesQuotaExternalPaths","storageUsage","storageQuota","externalPath","isNotNull","listShareLinks","user","asAdmin","shareLinksListQuery","selectFile","shareRootFile","parentShareFile","childShareFromRoot","shareMembers","shareFileSelect","linkGuest","users","description","parent","file","link","links","email","uuid","requireAuth","nbAccess","limitAccess","permissions","isActive","language","expiresAt","createdAt","currentAccess","lastAccess","currentIp","lastIp","shareFileJoin","innerJoin","linkId","type","SHARE_TYPE","LINK","or","placeholder","prepare","shareLinks","getShareWithMembers","shareWithMembersQuery","linkUsers","enabled","storageIndexing","modifiedAt","disabledAt","concatDistinctObjectsInArray","login","userFullNameSQL","role","USER_ROLE","GUEST","MEMBER_TYPE","USER","dateTimeUTC","groups","GROUP_TYPE","PERSONAL","PGROUP","GROUP","raw","leftJoin","groupId","groupBy","limit","share","members","popFromObject","createShare","dbGetInsertedId","insert","values","updateShare","set","dbCheckAffectedRows","update","logger","debug","tag","msg","JSON","stringify","e","error","deleteShare","delete","updateMember","filters","sharesMembers","updateMembers","add","remove","status","ACTION","ADD","userIds","groupIds","UPDATE","DELETE","m","shareEnv","shareSpaceRoot","spacesRoots","fileId","inSharesRepository","mapWith","Boolean","root","files","owner","path","filePathSQL","inTrash","space","spaces","spaceExternalRootId","shareIds","shareIdsQuery","unionAlias","union","fromUserQuery","fromGroupsQuery","fromAdminSharesQuery","as","map","listShares","sharesListQuery","hasComments","fileHasCommentsSubquerySQL","counts","shareType","COMMON","setShareCounts","listChildShares","mime","s","ShareChild","listSpaceShares","childShareSpaceRoot","membersFromChildSharesPermissions","matchPermRegexp","asParent","append","shareRootFiles","options","shareRootFilesQuery","originOwner","selectUnion","isDir","size","ctime","mtime","originOwnerId","originOwnerLogin","originSpaceId","originSpaceAlias","originSpaceExternalRootId","originSpaceRootExternalPath","originShareExternalId","rootId","rootAlias","rootName","rootDescription","rootEnabled","rootExternalPath","rootPermissions","rootOwnerId","rootOwnerLogin","rootOwnerEmail","rootOwnerFullName","childShareAlias","childShareName","childShareType","syncPathId","syncPaths","syncPathClientId","syncClients","syncPathClientName","info","ne","fromUser","$dynamic","fromGroups","fromAdminShares","SHARE_ALL_OPERATIONS","q","clientId","origin","ownerLogin","spaceAlias","spaceRootExternalPath","shareExternalId","spaceGroupConcatPermissions","fullName","parse","syncs","clientName","fps","withHasComments","withShares","withSyncs","f","uniquePermissions","shareAlias","sharePermissionsQuery","rootSpaceId","rootSpaceAlias","rootPath","rootInTrash","rootExternalParentShareId","rootSpaceRootId","rootSpaceRootExternalPath","externalParentShareId","childSharesCount","clearCachePermissions","pattern","cache","genSlugKey","keys","verbose","mdel","catch","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
|
});
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"sources":["../../../../backend/src/applications/shares/shares.controller.ts"],"sourcesContent":["
|
|
1
|
+
{"version":3,"sources":["../../../../backend/src/applications/shares/shares.controller.ts"],"sourcesContent":["import { Body, Controller, Delete, Get, Param, ParseIntPipe, Post, Put, UseGuards, UseInterceptors } from '@nestjs/common'\nimport { ContextInterceptor } from '../../infrastructure/context/interceptors/context.interceptor'\nimport { LINK_TYPE } from '../links/constants/links'\nimport { CreateOrUpdateLinkDto } from '../links/dto/create-or-update-link.dto'\nimport { LinkGuest } from '../links/interfaces/link-guest.interface'\nimport { USER_PERMISSION, USER_ROLE } from '../users/constants/user'\nimport { UserHavePermission } from '../users/decorators/permissions.decorator'\nimport { UserHaveRole } from '../users/decorators/roles.decorator'\nimport { GetUser } from '../users/decorators/user.decorator'\nimport { UserPermissionsGuard } from '../users/guards/permissions.guard'\nimport { UserRolesGuard } from '../users/guards/roles.guard'\nimport { UserModel } from '../users/models/user.model'\nimport { SHARES_ROUTE } from './constants/routes'\nimport { CreateOrUpdateShareDto } from './dto/create-or-update-share.dto'\nimport type { ShareFile } from './interfaces/share-file.interface'\nimport { ShareLink } from './interfaces/share-link.interface'\nimport type { ShareProps } from './interfaces/share-props.interface'\nimport { ShareChild } from './models/share-child.model'\nimport { SharesManager } from './services/shares-manager.service'\n\n@Controller(SHARES_ROUTE.BASE)\n@UserHaveRole(USER_ROLE.USER)\n@UserHavePermission(USER_PERMISSION.SHARES_ADMIN)\n@UseGuards(UserRolesGuard, UserPermissionsGuard)\n@UseInterceptors(ContextInterceptor)\nexport class SharesController {\n constructor(private readonly sharesManager: SharesManager) {}\n\n /* MANAGE COMMON SHARES */\n\n @Get(SHARES_ROUTE.LIST)\n listShares(@GetUser() user: UserModel): Promise<ShareFile[]> {\n return this.sharesManager.listShares(user)\n }\n\n @Get(':id')\n getShareWithMembers(@GetUser() user: UserModel, @Param('id', ParseIntPipe) shareId: number): Promise<ShareProps> {\n return this.sharesManager.getShareWithMembers(user, shareId)\n }\n\n @Post()\n createShare(@GetUser() user: UserModel, @Body() createOrUpdateShareDto: CreateOrUpdateShareDto): Promise<ShareProps> {\n if (createOrUpdateShareDto.parent?.alias) {\n return this.sharesManager.createChildShare(user, createOrUpdateShareDto)\n }\n return this.sharesManager.createShare(user, createOrUpdateShareDto)\n }\n\n @Put(':id')\n updateShare(\n @GetUser() user: UserModel,\n @Param('id', ParseIntPipe) shareId: number,\n @Body() createOrUpdateShareDto: CreateOrUpdateShareDto\n ): Promise<ShareProps> {\n return this.sharesManager.updateShare(user, shareId, createOrUpdateShareDto)\n }\n\n @Delete(':id')\n deleteShare(@GetUser() user: UserModel, @Param('id', ParseIntPipe) shareId: number): Promise<void> {\n return this.sharesManager.deleteShare(user, shareId)\n }\n\n /* MANAGE CHILD SHARES */\n\n @Get(`:id/${SHARES_ROUTE.CHILDREN}`)\n listChildShares(@GetUser() user: UserModel, @Param('id', ParseIntPipe) shareId: number): Promise<ShareChild[]> {\n return this.sharesManager.listChildShares(user, shareId)\n }\n\n @Get(`:id/${SHARES_ROUTE.CHILDREN}/:cid`)\n getShareChild(\n @GetUser() user: UserModel,\n @Param('id', ParseIntPipe) shareId: number,\n @Param('cid', ParseIntPipe) childId: number\n ): Promise<ShareProps> {\n return this.sharesManager.getChildShare(user, shareId, childId)\n }\n\n @Put(`:id/${SHARES_ROUTE.CHILDREN}/:cid`)\n updateShareChild(\n @GetUser() user: UserModel,\n @Param('id', ParseIntPipe) shareId: number,\n @Param('cid', ParseIntPipe) childId: number,\n @Body() createOrUpdateShareDto: CreateOrUpdateShareDto\n ): Promise<ShareProps> {\n return this.sharesManager.updateChildShare(user, shareId, childId, createOrUpdateShareDto)\n }\n\n @Delete(`:id/${SHARES_ROUTE.CHILDREN}/:cid`)\n deleteShareChild(\n @GetUser() user: UserModel,\n @Param('id', ParseIntPipe) shareId: number,\n @Param('cid', ParseIntPipe) childId: number\n ): Promise<void> {\n return this.sharesManager.deleteChildShare(user, shareId, childId)\n }\n\n /* MANAGE LINK SHARES */\n\n @Get(SHARES_ROUTE.LINKS_UUID)\n @UserHavePermission([USER_PERMISSION.SHARES_ADMIN, USER_PERMISSION.SPACES_ADMIN])\n generateUUID(@GetUser() user: UserModel): Promise<{ uuid: string }> {\n return this.sharesManager.generateLinkUUID(user.id)\n }\n\n @Get(SHARES_ROUTE.LINKS_LIST)\n listShareLinks(@GetUser() user: UserModel): Promise<ShareLink[]> {\n return this.sharesManager.listShareLinks(user)\n }\n\n @Get(`${SHARES_ROUTE.LINKS}/:id`)\n getShareLink(@GetUser() user: UserModel, @Param('id', ParseIntPipe) shareId: number): Promise<ShareLink> {\n return this.sharesManager.getShareLink(user, shareId)\n }\n\n @Get(`${SHARES_ROUTE.LINKS}/:id/${SHARES_ROUTE.CHILDREN}/:cid`)\n getChildShareLink(\n @GetUser() user: UserModel,\n @Param('id', ParseIntPipe) shareId: number,\n @Param('cid', ParseIntPipe) childId: number\n ): Promise<ShareLink> {\n return this.sharesManager.getChildShare(user, shareId, childId, true)\n }\n\n @Get(`${SHARES_ROUTE.LINKS}/:id/:type(space|share)/:typeId`)\n getLinkFromSpaceOrShare(\n @GetUser() user: UserModel,\n @Param('id', ParseIntPipe) linkId: number,\n @Param('type') type: LINK_TYPE,\n @Param('typeId', ParseIntPipe) typeId: number\n ): Promise<LinkGuest> {\n return this.sharesManager.getLinkFromSpaceOrShare(user, linkId, typeId, type)\n }\n\n @Put(`${SHARES_ROUTE.LINKS}/:id/:type(space|share)/:typeId`)\n updateLinkFromSpaceOrShare(\n @GetUser() user: UserModel,\n @Param('id', ParseIntPipe) linkId: number,\n @Param('type') type: LINK_TYPE,\n @Param('typeId', ParseIntPipe) typeId: number,\n @Body() createOrUpdateLinkDto: CreateOrUpdateLinkDto\n ): Promise<LinkGuest> {\n return this.sharesManager.updateLinkFromSpaceOrShare(user, linkId, typeId, type, createOrUpdateLinkDto, true)\n }\n}\n"],"names":["SharesController","listShares","user","sharesManager","getShareWithMembers","shareId","createShare","createOrUpdateShareDto","parent","alias","createChildShare","updateShare","deleteShare","listChildShares","getShareChild","childId","getChildShare","updateShareChild","updateChildShare","deleteShareChild","deleteChildShare","generateUUID","generateLinkUUID","id","listShareLinks","getShareLink","getChildShareLink","getLinkFromSpaceOrShare","linkId","type","typeId","updateLinkFromSpaceOrShare","createOrUpdateLinkDto","LIST","SHARES_ROUTE","CHILDREN","LINKS_UUID","USER_PERMISSION","SHARES_ADMIN","SPACES_ADMIN","LINKS_LIST","LINKS","BASE","USER"],"mappings":";;;;+BAyBaA;;;eAAAA;;;wBAzB6F;oCACvE;uBACT;uCACY;sBAEK;sCACR;gCACN;+BACL;kCACa;4BACN;2BACL;wBACG;wCACU;sCAKT;;;;;;;;;;;;;;;AAOvB,IAAA,AAAMA,mBAAN,MAAMA;IAGX,wBAAwB,GAExB,AACAC,WAAW,AAAWC,IAAe,EAAwB;QAC3D,OAAO,IAAI,CAACC,aAAa,CAACF,UAAU,CAACC;IACvC;IAGAE,oBAAoB,AAAWF,IAAe,EAAE,AAA2BG,OAAe,EAAuB;QAC/G,OAAO,IAAI,CAACF,aAAa,CAACC,mBAAmB,CAACF,MAAMG;IACtD;IAGAC,YAAY,AAAWJ,IAAe,EAAE,AAAQK,sBAA8C,EAAuB;QACnH,IAAIA,uBAAuBC,MAAM,EAAEC,OAAO;YACxC,OAAO,IAAI,CAACN,aAAa,CAACO,gBAAgB,CAACR,MAAMK;QACnD;QACA,OAAO,IAAI,CAACJ,aAAa,CAACG,WAAW,CAACJ,MAAMK;IAC9C;IAGAI,YACE,AAAWT,IAAe,EAC1B,AAA2BG,OAAe,EAC1C,AAAQE,sBAA8C,EACjC;QACrB,OAAO,IAAI,CAACJ,aAAa,CAACQ,WAAW,CAACT,MAAMG,SAASE;IACvD;IAGAK,YAAY,AAAWV,IAAe,EAAE,AAA2BG,OAAe,EAAiB;QACjG,OAAO,IAAI,CAACF,aAAa,CAACS,WAAW,CAACV,MAAMG;IAC9C;IAEA,uBAAuB,GAEvB,AACAQ,gBAAgB,AAAWX,IAAe,EAAE,AAA2BG,OAAe,EAAyB;QAC7G,OAAO,IAAI,CAACF,aAAa,CAACU,eAAe,CAACX,MAAMG;IAClD;IAGAS,cACE,AAAWZ,IAAe,EAC1B,AAA2BG,OAAe,EAC1C,AAA4BU,OAAe,EACtB;QACrB,OAAO,IAAI,CAACZ,aAAa,CAACa,aAAa,CAACd,MAAMG,SAASU;IACzD;IAGAE,iBACE,AAAWf,IAAe,EAC1B,AAA2BG,OAAe,EAC1C,AAA4BU,OAAe,EAC3C,AAAQR,sBAA8C,EACjC;QACrB,OAAO,IAAI,CAACJ,aAAa,CAACe,gBAAgB,CAAChB,MAAMG,SAASU,SAASR;IACrE;IAGAY,iBACE,AAAWjB,IAAe,EAC1B,AAA2BG,OAAe,EAC1C,AAA4BU,OAAe,EAC5B;QACf,OAAO,IAAI,CAACZ,aAAa,CAACiB,gBAAgB,CAAClB,MAAMG,SAASU;IAC5D;IAEA,sBAAsB,GAEtB,AAEAM,aAAa,AAAWnB,IAAe,EAA6B;QAClE,OAAO,IAAI,CAACC,aAAa,CAACmB,gBAAgB,CAACpB,KAAKqB,EAAE;IACpD;IAGAC,eAAe,AAAWtB,IAAe,EAAwB;QAC/D,OAAO,IAAI,CAACC,aAAa,CAACqB,cAAc,CAACtB;IAC3C;IAGAuB,aAAa,AAAWvB,IAAe,EAAE,AAA2BG,OAAe,EAAsB;QACvG,OAAO,IAAI,CAACF,aAAa,CAACsB,YAAY,CAACvB,MAAMG;IAC/C;IAGAqB,kBACE,AAAWxB,IAAe,EAC1B,AAA2BG,OAAe,EAC1C,AAA4BU,OAAe,EACvB;QACpB,OAAO,IAAI,CAACZ,aAAa,CAACa,aAAa,CAACd,MAAMG,SAASU,SAAS;IAClE;IAGAY,wBACE,AAAWzB,IAAe,EAC1B,AAA2B0B,MAAc,EACzC,AAAeC,IAAe,EAC9B,AAA+BC,MAAc,EACzB;QACpB,OAAO,IAAI,CAAC3B,aAAa,CAACwB,uBAAuB,CAACzB,MAAM0B,QAAQE,QAAQD;IAC1E;IAGAE,2BACE,AAAW7B,IAAe,EAC1B,AAA2B0B,MAAc,EACzC,AAAeC,IAAe,EAC9B,AAA+BC,MAAc,EAC7C,AAAQE,qBAA4C,EAChC;QACpB,OAAO,IAAI,CAAC7B,aAAa,CAAC4B,0BAA0B,CAAC7B,MAAM0B,QAAQE,QAAQD,MAAMG,uBAAuB;IAC1G;IArHA,YAAY,AAAiB7B,aAA4B,CAAE;aAA9BA,gBAAAA;IAA+B;AAsH9D;;0CAlHoB8B;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;sBAkCZ,IAAI,EAAEC,oBAAY,CAACC,QAAQ;;;;;;;;;;;sBAK3B,IAAI,EAAED,oBAAY,CAACC,QAAQ,CAAC,KAAK;;;;;;;;;;;;;sBASjC,IAAI,EAAED,oBAAY,CAACC,QAAQ,CAAC,KAAK;;;;;;;;;;;;;;;yBAU9B,IAAI,EAAED,oBAAY,CAACC,QAAQ,CAAC,KAAK;;;;;;;;;;;;;0CAWxBC;;QACGC,qBAAe,CAACC,YAAY;QAAED,qBAAe,CAACE,YAAY;;;;;;;;;;0CAK7DC;;;;;;;;;wBAKVN,oBAAY,CAACO,KAAK,CAAC,IAAI;;;;;;;;;;;wBAKvBP,oBAAY,CAACO,KAAK,CAAC,KAAK,EAAEP,oBAAY,CAACC,QAAQ,CAAC,KAAK;;;;;;;;;;;;;wBASrDD,oBAAY,CAACO,KAAK,CAAC,+BAA+B;;;;;;;;;;;;;;;wBAUlDP,oBAAY,CAACO,KAAK,CAAC,+BAA+B;;;;;;;;;;;;;;;;;iDAlHnCC;sDACDC;wEACYL"}
|
|
@@ -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
|
});
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"sources":["../../../../backend/src/applications/shares/shares.controller.spec.ts"],"sourcesContent":["
|
|
1
|
+
{"version":3,"sources":["../../../../backend/src/applications/shares/shares.controller.spec.ts"],"sourcesContent":["import { Test, TestingModule } from '@nestjs/testing'\nimport { Cache } from '../../infrastructure/cache/services/cache.service'\nimport { ContextManager } from '../../infrastructure/context/services/context-manager.service'\nimport { DB_TOKEN_PROVIDER } from '../../infrastructure/database/constants'\nimport { FilesQueries } from '../files/services/files-queries.service'\nimport { LinksQueries } from '../links/services/links-queries.service'\nimport { NotificationsManager } from '../notifications/services/notifications-manager.service'\nimport { SpacesQueries } from '../spaces/services/spaces-queries.service'\nimport { UsersQueries } from '../users/services/users-queries.service'\nimport { SharesManager } from './services/shares-manager.service'\nimport { SharesQueries } from './services/shares-queries.service'\nimport { SharesController } from './shares.controller'\n\ndescribe(SharesController.name, () => {\n let controller: SharesController\n\n beforeAll(async () => {\n const module: TestingModule = await Test.createTestingModule({\n controllers: [SharesController],\n providers: [\n { provide: DB_TOKEN_PROVIDER, useValue: {} },\n {\n provide: Cache,\n useValue: {}\n },\n { provide: ContextManager, useValue: {} },\n {\n provide: NotificationsManager,\n useValue: {}\n },\n SpacesQueries,\n FilesQueries,\n UsersQueries,\n SharesManager,\n SharesQueries,\n LinksQueries\n ]\n }).compile()\n\n controller = module.get<SharesController>(SharesController)\n })\n\n it('should be defined', () => {\n expect(controller).toBeDefined()\n })\n})\n"],"names":["describe","SharesController","name","controller","beforeAll","module","Test","createTestingModule","controllers","providers","provide","DB_TOKEN_PROVIDER","useValue","Cache","ContextManager","NotificationsManager","SpacesQueries","FilesQueries","UsersQueries","SharesManager","SharesQueries","LinksQueries","compile","get","it","expect","toBeDefined"],"mappings":";;;;yBAAoC;8BACd;uCACS;2BACG;qCACL;qCACA;6CACQ;sCACP;qCACD;sCACC;sCACA;kCACG;AAEjCA,SAASC,kCAAgB,CAACC,IAAI,EAAE;IAC9B,IAAIC;IAEJC,UAAU;QACR,MAAMC,SAAwB,MAAMC,aAAI,CAACC,mBAAmB,CAAC;YAC3DC,aAAa;gBAACP,kCAAgB;aAAC;YAC/BQ,WAAW;gBACT;oBAAEC,SAASC,4BAAiB;oBAAEC,UAAU,CAAC;gBAAE;gBAC3C;oBACEF,SAASG,mBAAK;oBACdD,UAAU,CAAC;gBACb;gBACA;oBAAEF,SAASI,qCAAc;oBAAEF,UAAU,CAAC;gBAAE;gBACxC;oBACEF,SAASK,iDAAoB;oBAC7BH,UAAU,CAAC;gBACb;gBACAI,mCAAa;gBACbC,iCAAY;gBACZC,iCAAY;gBACZC,mCAAa;gBACbC,mCAAa;gBACbC,iCAAY;aACb;QACH,GAAGC,OAAO;QAEVnB,aAAaE,OAAOkB,GAAG,CAAmBtB,kCAAgB;IAC5D;IAEAuB,GAAG,qBAAqB;QACtBC,OAAOtB,YAAYuB,WAAW;IAChC;AACF"}
|
|
@@ -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
|
});
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"sources":["../../../../backend/src/applications/shares/shares.module.ts"],"sourcesContent":["
|
|
1
|
+
{"version":3,"sources":["../../../../backend/src/applications/shares/shares.module.ts"],"sourcesContent":["import { Module } from '@nestjs/common'\nimport { LinksController } from '../links/links.controller'\nimport { LinksManager } from '../links/services/links-manager.service'\nimport { LinksQueries } from '../links/services/links-queries.service'\nimport { SharesManager } from './services/shares-manager.service'\nimport { SharesQueries } from './services/shares-queries.service'\nimport { SharesController } from './shares.controller'\n\n@Module({\n controllers: [SharesController, LinksController],\n providers: [SharesManager, SharesQueries, LinksManager, LinksQueries],\n exports: [SharesManager, SharesQueries]\n})\nexport class SharesModule {}\n"],"names":["SharesModule","controllers","SharesController","LinksController","providers","SharesManager","SharesQueries","LinksManager","LinksQueries","exports"],"mappings":";;;;+BAaaA;;;eAAAA;;;wBAbU;iCACS;qCACH;qCACA;sCACC;sCACA;kCACG;;;;;;;AAO1B,IAAA,AAAMA,eAAN,MAAMA;AAAc;;;QAJzBC,aAAa;YAACC,kCAAgB;YAAEC,gCAAe;SAAC;QAChDC,WAAW;YAACC,mCAAa;YAAEC,mCAAa;YAAEC,iCAAY;YAAEC,iCAAY;SAAC;QACrEC,SAAS;YAACJ,mCAAa;YAAEC,mCAAa;SAAC"}
|
|
@@ -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
|
-
*/ // cache quota key = `(quota-user|quota-space)-${id}` => number
|
|
1
|
+
// cache quota key = `(quota-user|quota-space)-${id}` => number
|
|
6
2
|
"use strict";
|
|
7
3
|
Object.defineProperty(exports, "__esModule", {
|
|
8
4
|
value: true
|