@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/files/adapters/files-indexer-mysql.service.spec.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 { Test, TestingModule } from '@nestjs/testing'\nimport { Cache } from '../../../infrastructure/cache/services/cache.service'\nimport { DB_TOKEN_PROVIDER } from '../../../infrastructure/database/constants'\nimport { FilesIndexerMySQL } from './files-indexer-mysql.service'\n\ndescribe(FilesIndexerMySQL.name, () => {\n let module: TestingModule\n let filesIndexerMySQL: FilesIndexerMySQL\n let db: { execute: jest.Mock }\n let cache: { genSlugKey: jest.Mock; get: jest.Mock; set: jest.Mock }\n\n beforeAll(async () => {\n db = { execute: jest.fn() }\n cache = {\n genSlugKey: jest.fn(() => 'cache:indexesList:key'),\n get: jest.fn(),\n set: jest.fn().mockResolvedValue(undefined)\n }\n\n module = await Test.createTestingModule({\n providers: [FilesIndexerMySQL, { provide: DB_TOKEN_PROVIDER, useValue: db }, { provide: Cache, useValue: cache }]\n }).compile()\n\n module.useLogger(['fatal'])\n filesIndexerMySQL = module.get<FilesIndexerMySQL>(FilesIndexerMySQL)\n })\n\n afterAll(async () => {\n await module.close()\n })\n\n beforeEach(() => {\n jest.clearAllMocks()\n })\n\n it('should be defined', () => {\n expect(filesIndexerMySQL).toBeDefined()\n })\n\n describe('indexesList', () => {\n it('should list tables starting with prefix', async () => {\n // Force a cache hit to avoid decorator calling the original method with a bad `this`\n cache.get.mockResolvedValueOnce(['files_content_u_1', 'files_content_s_2'])\n\n const res = await filesIndexerMySQL.indexesList()\n expect(res).toEqual(['files_content_u_1', 'files_content_s_2'])\n expect(cache.genSlugKey).toHaveBeenCalled()\n expect(cache.get).toHaveBeenCalled()\n // DB should not be called on cache hit\n expect(db.execute).not.toHaveBeenCalled()\n })\n })\n\n describe('getIndexName', () => {\n it('should build table name with prefix', () => {\n expect(filesIndexerMySQL.getIndexName('u_123')).toBe('files_content_u_123')\n })\n })\n\n describe('existingIndexes', () => {\n it('should filter suffixes to existing tables', async () => {\n db.execute.mockResolvedValueOnce([[{ t: 'files_content_u_1' }, { t: 'files_content_s_2' }]])\n const res = await filesIndexerMySQL.existingIndexes(['u_1', 's_3', 's_2'])\n expect(res.sort()).toEqual(['files_content_s_2', 'files_content_u_1'].sort())\n })\n })\n\n describe('createIndex', () => {\n it('should return true when creation succeeds', async () => {\n db.execute.mockResolvedValueOnce([{}])\n await expect(filesIndexerMySQL.createIndex('files_content_u_1')).resolves.toBe(true)\n expect(db.execute).toHaveBeenCalledTimes(1)\n })\n\n it('should return false when creation fails', async () => {\n db.execute.mockRejectedValueOnce(new Error('boom'))\n await expect(filesIndexerMySQL.createIndex('files_content_u_1')).resolves.toBe(false)\n })\n })\n\n describe('dropIndex', () => {\n it('should return true when drop succeeds', async () => {\n db.execute.mockResolvedValueOnce([{}])\n await expect(filesIndexerMySQL.dropIndex('files_content_u_1')).resolves.toBe(true)\n expect(db.execute).toHaveBeenCalledTimes(1)\n })\n\n it('should return false when drop fails', async () => {\n db.execute.mockRejectedValueOnce(new Error('boom'))\n await expect(filesIndexerMySQL.dropIndex('files_content_u_1')).resolves.toBe(false)\n })\n })\n\n describe('insertRecord', () => {\n it('should insert or update a record without throwing', async () => {\n db.execute.mockResolvedValueOnce([{}])\n await expect(\n filesIndexerMySQL.insertRecord('files_content_u_1', {\n id: 42,\n path: '/docs',\n name: 'file.txt',\n mime: 'text/plain',\n size: 12,\n mtime: 1730000000000,\n content: 'hello world'\n })\n ).resolves.toBeUndefined()\n expect(db.execute).toHaveBeenCalledTimes(1)\n })\n\n it('should catch and log errors', async () => {\n db.execute.mockRejectedValueOnce(new Error('insert failed'))\n await expect(\n filesIndexerMySQL.insertRecord('files_content_u_1', {\n id: 1,\n path: '/',\n name: 'a',\n mime: 'text/plain',\n size: 1,\n mtime: Date.now(),\n content: 'x'\n })\n ).resolves.toBeUndefined()\n expect(db.execute).toHaveBeenCalledTimes(1)\n })\n })\n\n describe('getRecordStats', () => {\n it('should return a map of id to basic stats without path filter', async () => {\n db.execute.mockResolvedValueOnce([\n [\n { id: 1, path: '/a', name: 'a.txt', size: 10 },\n { id: 2, path: '/b', name: 'b.txt', size: 20 }\n ]\n ])\n\n const map = await filesIndexerMySQL.getRecordStats('files_content_u_1')\n expect(map.get(1)).toEqual({ path: '/a', name: 'a.txt', size: 10 })\n expect(map.get(2)).toEqual({ path: '/b', name: 'b.txt', size: 20 })\n expect(db.execute).toHaveBeenCalledTimes(1)\n })\n\n it('should append WHERE clause when path filter is provided', async () => {\n db.execute.mockResolvedValueOnce([[{ id: 3, path: '/docs', name: 'c.txt', size: 30 }]])\n\n const map = await filesIndexerMySQL.getRecordStats('files_content_u_1', '/docs')\n expect(map.get(3)).toEqual({ path: '/docs', name: 'c.txt', size: 30 })\n expect(db.execute).toHaveBeenCalledTimes(1)\n })\n })\n\n describe('deleteRecords', () => {\n it('should delete ids and warn if affectedRows mismatch', async () => {\n db.execute.mockResolvedValueOnce([{ affectedRows: 1 }]) // ask delete 2 but only 1 deleted\n await filesIndexerMySQL.deleteRecords('files_content_u_1', [1, 2])\n expect(db.execute).toHaveBeenCalledTimes(1)\n })\n\n it('should not warn when all requested ids are deleted', async () => {\n const warnSpy = jest.spyOn(filesIndexerMySQL['logger'], 'warn').mockImplementation(() => undefined)\n db.execute.mockResolvedValueOnce([{ affectedRows: 2 }])\n\n await filesIndexerMySQL.deleteRecords('files_content_u_1', [1, 2])\n\n expect(db.execute).toHaveBeenCalledTimes(1)\n expect(warnSpy).not.toHaveBeenCalled()\n warnSpy.mockRestore()\n })\n\n it('should catch errors', async () => {\n db.execute.mockRejectedValueOnce(new Error('delete failed'))\n await filesIndexerMySQL.deleteRecords('files_content_u_1', [1])\n expect(db.execute).toHaveBeenCalledTimes(1)\n })\n })\n\n describe('searchRecords', () => {\n it('should return empty array when no terms', async () => {\n const res = await filesIndexerMySQL.searchRecords(['files_content_u_1'], ' ', 10)\n expect(res).toEqual([])\n expect(db.execute).toHaveBeenCalledTimes(0)\n })\n\n it('should return empty array when DB returns no records', async () => {\n db.execute.mockResolvedValueOnce([[]])\n\n const res = await filesIndexerMySQL.searchRecords(['files_content_u_1'], 'foo', 10)\n\n expect(db.execute).toHaveBeenCalledTimes(1)\n expect(res).toEqual([])\n })\n\n it('should search across tables, sort by score, and highlight matches', async () => {\n // fabricate records returned by DB. Only first array (rows) is used.\n const rows = [\n {\n id: 1,\n path: '/docs',\n name: 'alpha.txt',\n mime: 'text/plain',\n mtime: 1730000000000,\n content: 'Alpha foo bar. Something about Foo again; BAR appears too.',\n score: 10\n },\n {\n id: 2,\n path: '/docs',\n name: 'beta.txt',\n mime: 'text/plain',\n mtime: 1730000000001,\n content: 'Nothing to see here except foo once.',\n score: 5\n }\n ]\n db.execute.mockResolvedValueOnce([rows])\n\n const res = await filesIndexerMySQL.searchRecords(['files_content_u_1', 'files_content_s_2'], 'foo bar', 10)\n\n expect(db.execute).toHaveBeenCalledTimes(1)\n expect(res.length).toBe(2)\n // content must be cleared\n expect(res[0].content).toBeUndefined()\n expect(Array.isArray(res[0].matches)).toBe(true)\n expect(res[0].matches!.length).toBeGreaterThan(0)\n // highlighted with <mark> tags\n expect(res[0].matches!.join(' ')).toMatch(/<mark>foo<\\/mark>|<mark>bar<\\/mark>/i)\n })\n })\n\n describe('cleanIndexes', () => {\n it('should drop tables that are not in provided suffixes', async () => {\n // existing tables\n db.execute.mockResolvedValueOnce([[{ t: 'files_content_u_1' }, { t: 'files_content_u_2' }, { t: 'files_content_s_1' }]])\n // each drop returns something\n db.execute.mockResolvedValue([{}])\n\n await filesIndexerMySQL.cleanIndexes(['u_1']) // keep only files_content_u_1; drop the others\n\n // 1 call for indexesList + 2 drops expected\n expect(db.execute).toHaveBeenCalledTimes(3)\n })\n\n it('should do nothing when no suffixes provided', async () => {\n await filesIndexerMySQL.cleanIndexes([])\n expect(db.execute).toHaveBeenCalledTimes(0)\n })\n })\n})\n"],"names":["describe","FilesIndexerMySQL","name","module","filesIndexerMySQL","db","cache","beforeAll","execute","jest","fn","genSlugKey","get","set","mockResolvedValue","undefined","Test","createTestingModule","providers","provide","DB_TOKEN_PROVIDER","useValue","Cache","compile","useLogger","afterAll","close","beforeEach","clearAllMocks","it","expect","toBeDefined","mockResolvedValueOnce","res","indexesList","toEqual","toHaveBeenCalled","not","getIndexName","toBe","t","existingIndexes","sort","createIndex","resolves","toHaveBeenCalledTimes","mockRejectedValueOnce","Error","dropIndex","insertRecord","id","path","mime","size","mtime","content","toBeUndefined","Date","now","map","getRecordStats","affectedRows","deleteRecords","warnSpy","spyOn","mockImplementation","mockRestore","searchRecords","rows","score","length","Array","isArray","matches","toBeGreaterThan","join","toMatch","cleanIndexes"],"mappings":"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"}
|
|
1
|
+
{"version":3,"sources":["../../../../../backend/src/applications/files/adapters/files-indexer-mysql.service.spec.ts"],"sourcesContent":["import { Test, TestingModule } from '@nestjs/testing'\nimport { Cache } from '../../../infrastructure/cache/services/cache.service'\nimport { DB_TOKEN_PROVIDER } from '../../../infrastructure/database/constants'\nimport { FilesIndexerMySQL } from './files-indexer-mysql.service'\n\ndescribe(FilesIndexerMySQL.name, () => {\n let module: TestingModule\n let filesIndexerMySQL: FilesIndexerMySQL\n let db: { execute: jest.Mock }\n let cache: { genSlugKey: jest.Mock; get: jest.Mock; set: jest.Mock }\n\n beforeAll(async () => {\n db = { execute: jest.fn() }\n cache = {\n genSlugKey: jest.fn(() => 'cache:indexesList:key'),\n get: jest.fn(),\n set: jest.fn().mockResolvedValue(undefined)\n }\n\n module = await Test.createTestingModule({\n providers: [FilesIndexerMySQL, { provide: DB_TOKEN_PROVIDER, useValue: db }, { provide: Cache, useValue: cache }]\n }).compile()\n\n module.useLogger(['fatal'])\n filesIndexerMySQL = module.get<FilesIndexerMySQL>(FilesIndexerMySQL)\n })\n\n afterAll(async () => {\n await module.close()\n })\n\n beforeEach(() => {\n jest.clearAllMocks()\n })\n\n it('should be defined', () => {\n expect(filesIndexerMySQL).toBeDefined()\n })\n\n describe('indexesList', () => {\n it('should list tables starting with prefix', async () => {\n // Force a cache hit to avoid decorator calling the original method with a bad `this`\n cache.get.mockResolvedValueOnce(['files_content_u_1', 'files_content_s_2'])\n\n const res = await filesIndexerMySQL.indexesList()\n expect(res).toEqual(['files_content_u_1', 'files_content_s_2'])\n expect(cache.genSlugKey).toHaveBeenCalled()\n expect(cache.get).toHaveBeenCalled()\n // DB should not be called on cache hit\n expect(db.execute).not.toHaveBeenCalled()\n })\n })\n\n describe('getIndexName', () => {\n it('should build table name with prefix', () => {\n expect(filesIndexerMySQL.getIndexName('u_123')).toBe('files_content_u_123')\n })\n })\n\n describe('existingIndexes', () => {\n it('should filter suffixes to existing tables', async () => {\n db.execute.mockResolvedValueOnce([[{ t: 'files_content_u_1' }, { t: 'files_content_s_2' }]])\n const res = await filesIndexerMySQL.existingIndexes(['u_1', 's_3', 's_2'])\n expect(res.sort()).toEqual(['files_content_s_2', 'files_content_u_1'].sort())\n })\n })\n\n describe('createIndex', () => {\n it('should return true when creation succeeds', async () => {\n db.execute.mockResolvedValueOnce([{}])\n await expect(filesIndexerMySQL.createIndex('files_content_u_1')).resolves.toBe(true)\n expect(db.execute).toHaveBeenCalledTimes(1)\n })\n\n it('should return false when creation fails', async () => {\n db.execute.mockRejectedValueOnce(new Error('boom'))\n await expect(filesIndexerMySQL.createIndex('files_content_u_1')).resolves.toBe(false)\n })\n })\n\n describe('dropIndex', () => {\n it('should return true when drop succeeds', async () => {\n db.execute.mockResolvedValueOnce([{}])\n await expect(filesIndexerMySQL.dropIndex('files_content_u_1')).resolves.toBe(true)\n expect(db.execute).toHaveBeenCalledTimes(1)\n })\n\n it('should return false when drop fails', async () => {\n db.execute.mockRejectedValueOnce(new Error('boom'))\n await expect(filesIndexerMySQL.dropIndex('files_content_u_1')).resolves.toBe(false)\n })\n })\n\n describe('insertRecord', () => {\n it('should insert or update a record without throwing', async () => {\n db.execute.mockResolvedValueOnce([{}])\n await expect(\n filesIndexerMySQL.insertRecord('files_content_u_1', {\n id: 42,\n path: '/docs',\n name: 'file.txt',\n mime: 'text/plain',\n size: 12,\n mtime: 1730000000000,\n content: 'hello world'\n })\n ).resolves.toBeUndefined()\n expect(db.execute).toHaveBeenCalledTimes(1)\n })\n\n it('should catch and log errors', async () => {\n db.execute.mockRejectedValueOnce(new Error('insert failed'))\n await expect(\n filesIndexerMySQL.insertRecord('files_content_u_1', {\n id: 1,\n path: '/',\n name: 'a',\n mime: 'text/plain',\n size: 1,\n mtime: Date.now(),\n content: 'x'\n })\n ).resolves.toBeUndefined()\n expect(db.execute).toHaveBeenCalledTimes(1)\n })\n })\n\n describe('getRecordStats', () => {\n it('should return a map of id to basic stats without path filter', async () => {\n db.execute.mockResolvedValueOnce([\n [\n { id: 1, path: '/a', name: 'a.txt', size: 10 },\n { id: 2, path: '/b', name: 'b.txt', size: 20 }\n ]\n ])\n\n const map = await filesIndexerMySQL.getRecordStats('files_content_u_1')\n expect(map.get(1)).toEqual({ path: '/a', name: 'a.txt', size: 10 })\n expect(map.get(2)).toEqual({ path: '/b', name: 'b.txt', size: 20 })\n expect(db.execute).toHaveBeenCalledTimes(1)\n })\n\n it('should append WHERE clause when path filter is provided', async () => {\n db.execute.mockResolvedValueOnce([[{ id: 3, path: '/docs', name: 'c.txt', size: 30 }]])\n\n const map = await filesIndexerMySQL.getRecordStats('files_content_u_1', '/docs')\n expect(map.get(3)).toEqual({ path: '/docs', name: 'c.txt', size: 30 })\n expect(db.execute).toHaveBeenCalledTimes(1)\n })\n })\n\n describe('deleteRecords', () => {\n it('should delete ids and warn if affectedRows mismatch', async () => {\n db.execute.mockResolvedValueOnce([{ affectedRows: 1 }]) // ask delete 2 but only 1 deleted\n await filesIndexerMySQL.deleteRecords('files_content_u_1', [1, 2])\n expect(db.execute).toHaveBeenCalledTimes(1)\n })\n\n it('should not warn when all requested ids are deleted', async () => {\n const warnSpy = jest.spyOn(filesIndexerMySQL['logger'], 'warn').mockImplementation(() => undefined)\n db.execute.mockResolvedValueOnce([{ affectedRows: 2 }])\n\n await filesIndexerMySQL.deleteRecords('files_content_u_1', [1, 2])\n\n expect(db.execute).toHaveBeenCalledTimes(1)\n expect(warnSpy).not.toHaveBeenCalled()\n warnSpy.mockRestore()\n })\n\n it('should catch errors', async () => {\n db.execute.mockRejectedValueOnce(new Error('delete failed'))\n await filesIndexerMySQL.deleteRecords('files_content_u_1', [1])\n expect(db.execute).toHaveBeenCalledTimes(1)\n })\n })\n\n describe('searchRecords', () => {\n it('should return empty array when no terms', async () => {\n const res = await filesIndexerMySQL.searchRecords(['files_content_u_1'], ' ', 10)\n expect(res).toEqual([])\n expect(db.execute).toHaveBeenCalledTimes(0)\n })\n\n it('should return empty array when DB returns no records', async () => {\n db.execute.mockResolvedValueOnce([[]])\n\n const res = await filesIndexerMySQL.searchRecords(['files_content_u_1'], 'foo', 10)\n\n expect(db.execute).toHaveBeenCalledTimes(1)\n expect(res).toEqual([])\n })\n\n it('should search across tables, sort by score, and highlight matches', async () => {\n // fabricate records returned by DB. Only first array (rows) is used.\n const rows = [\n {\n id: 1,\n path: '/docs',\n name: 'alpha.txt',\n mime: 'text/plain',\n mtime: 1730000000000,\n content: 'Alpha foo bar. Something about Foo again; BAR appears too.',\n score: 10\n },\n {\n id: 2,\n path: '/docs',\n name: 'beta.txt',\n mime: 'text/plain',\n mtime: 1730000000001,\n content: 'Nothing to see here except foo once.',\n score: 5\n }\n ]\n db.execute.mockResolvedValueOnce([rows])\n\n const res = await filesIndexerMySQL.searchRecords(['files_content_u_1', 'files_content_s_2'], 'foo bar', 10)\n\n expect(db.execute).toHaveBeenCalledTimes(1)\n expect(res.length).toBe(2)\n // content must be cleared\n expect(res[0].content).toBeUndefined()\n expect(Array.isArray(res[0].matches)).toBe(true)\n expect(res[0].matches!.length).toBeGreaterThan(0)\n // highlighted with <mark> tags\n expect(res[0].matches!.join(' ')).toMatch(/<mark>foo<\\/mark>|<mark>bar<\\/mark>/i)\n })\n })\n\n describe('cleanIndexes', () => {\n it('should drop tables that are not in provided suffixes', async () => {\n // existing tables\n db.execute.mockResolvedValueOnce([[{ t: 'files_content_u_1' }, { t: 'files_content_u_2' }, { t: 'files_content_s_1' }]])\n // each drop returns something\n db.execute.mockResolvedValue([{}])\n\n await filesIndexerMySQL.cleanIndexes(['u_1']) // keep only files_content_u_1; drop the others\n\n // 1 call for indexesList + 2 drops expected\n expect(db.execute).toHaveBeenCalledTimes(3)\n })\n\n it('should do nothing when no suffixes provided', async () => {\n await filesIndexerMySQL.cleanIndexes([])\n expect(db.execute).toHaveBeenCalledTimes(0)\n })\n })\n})\n"],"names":["describe","FilesIndexerMySQL","name","module","filesIndexerMySQL","db","cache","beforeAll","execute","jest","fn","genSlugKey","get","set","mockResolvedValue","undefined","Test","createTestingModule","providers","provide","DB_TOKEN_PROVIDER","useValue","Cache","compile","useLogger","afterAll","close","beforeEach","clearAllMocks","it","expect","toBeDefined","mockResolvedValueOnce","res","indexesList","toEqual","toHaveBeenCalled","not","getIndexName","toBe","t","existingIndexes","sort","createIndex","resolves","toHaveBeenCalledTimes","mockRejectedValueOnce","Error","dropIndex","insertRecord","id","path","mime","size","mtime","content","toBeUndefined","Date","now","map","getRecordStats","affectedRows","deleteRecords","warnSpy","spyOn","mockImplementation","mockRestore","searchRecords","rows","score","length","Array","isArray","matches","toBeGreaterThan","join","toMatch","cleanIndexes"],"mappings":";;;;yBAAoC;8BACd;2BACY;0CACA;AAElCA,SAASC,2CAAiB,CAACC,IAAI,EAAE;IAC/B,IAAIC;IACJ,IAAIC;IACJ,IAAIC;IACJ,IAAIC;IAEJC,UAAU;QACRF,KAAK;YAAEG,SAASC,KAAKC,EAAE;QAAG;QAC1BJ,QAAQ;YACNK,YAAYF,KAAKC,EAAE,CAAC,IAAM;YAC1BE,KAAKH,KAAKC,EAAE;YACZG,KAAKJ,KAAKC,EAAE,GAAGI,iBAAiB,CAACC;QACnC;QAEAZ,SAAS,MAAMa,aAAI,CAACC,mBAAmB,CAAC;YACtCC,WAAW;gBAACjB,2CAAiB;gBAAE;oBAAEkB,SAASC,4BAAiB;oBAAEC,UAAUhB;gBAAG;gBAAG;oBAAEc,SAASG,mBAAK;oBAAED,UAAUf;gBAAM;aAAE;QACnH,GAAGiB,OAAO;QAEVpB,OAAOqB,SAAS,CAAC;YAAC;SAAQ;QAC1BpB,oBAAoBD,OAAOS,GAAG,CAAoBX,2CAAiB;IACrE;IAEAwB,SAAS;QACP,MAAMtB,OAAOuB,KAAK;IACpB;IAEAC,WAAW;QACTlB,KAAKmB,aAAa;IACpB;IAEAC,GAAG,qBAAqB;QACtBC,OAAO1B,mBAAmB2B,WAAW;IACvC;IAEA/B,SAAS,eAAe;QACtB6B,GAAG,2CAA2C;YAC5C,qFAAqF;YACrFvB,MAAMM,GAAG,CAACoB,qBAAqB,CAAC;gBAAC;gBAAqB;aAAoB;YAE1E,MAAMC,MAAM,MAAM7B,kBAAkB8B,WAAW;YAC/CJ,OAAOG,KAAKE,OAAO,CAAC;gBAAC;gBAAqB;aAAoB;YAC9DL,OAAOxB,MAAMK,UAAU,EAAEyB,gBAAgB;YACzCN,OAAOxB,MAAMM,GAAG,EAAEwB,gBAAgB;YAClC,uCAAuC;YACvCN,OAAOzB,GAAGG,OAAO,EAAE6B,GAAG,CAACD,gBAAgB;QACzC;IACF;IAEApC,SAAS,gBAAgB;QACvB6B,GAAG,uCAAuC;YACxCC,OAAO1B,kBAAkBkC,YAAY,CAAC,UAAUC,IAAI,CAAC;QACvD;IACF;IAEAvC,SAAS,mBAAmB;QAC1B6B,GAAG,6CAA6C;YAC9CxB,GAAGG,OAAO,CAACwB,qBAAqB,CAAC;gBAAC;oBAAC;wBAAEQ,GAAG;oBAAoB;oBAAG;wBAAEA,GAAG;oBAAoB;iBAAE;aAAC;YAC3F,MAAMP,MAAM,MAAM7B,kBAAkBqC,eAAe,CAAC;gBAAC;gBAAO;gBAAO;aAAM;YACzEX,OAAOG,IAAIS,IAAI,IAAIP,OAAO,CAAC;gBAAC;gBAAqB;aAAoB,CAACO,IAAI;QAC5E;IACF;IAEA1C,SAAS,eAAe;QACtB6B,GAAG,6CAA6C;YAC9CxB,GAAGG,OAAO,CAACwB,qBAAqB,CAAC;gBAAC,CAAC;aAAE;YACrC,MAAMF,OAAO1B,kBAAkBuC,WAAW,CAAC,sBAAsBC,QAAQ,CAACL,IAAI,CAAC;YAC/ET,OAAOzB,GAAGG,OAAO,EAAEqC,qBAAqB,CAAC;QAC3C;QAEAhB,GAAG,2CAA2C;YAC5CxB,GAAGG,OAAO,CAACsC,qBAAqB,CAAC,IAAIC,MAAM;YAC3C,MAAMjB,OAAO1B,kBAAkBuC,WAAW,CAAC,sBAAsBC,QAAQ,CAACL,IAAI,CAAC;QACjF;IACF;IAEAvC,SAAS,aAAa;QACpB6B,GAAG,yCAAyC;YAC1CxB,GAAGG,OAAO,CAACwB,qBAAqB,CAAC;gBAAC,CAAC;aAAE;YACrC,MAAMF,OAAO1B,kBAAkB4C,SAAS,CAAC,sBAAsBJ,QAAQ,CAACL,IAAI,CAAC;YAC7ET,OAAOzB,GAAGG,OAAO,EAAEqC,qBAAqB,CAAC;QAC3C;QAEAhB,GAAG,uCAAuC;YACxCxB,GAAGG,OAAO,CAACsC,qBAAqB,CAAC,IAAIC,MAAM;YAC3C,MAAMjB,OAAO1B,kBAAkB4C,SAAS,CAAC,sBAAsBJ,QAAQ,CAACL,IAAI,CAAC;QAC/E;IACF;IAEAvC,SAAS,gBAAgB;QACvB6B,GAAG,qDAAqD;YACtDxB,GAAGG,OAAO,CAACwB,qBAAqB,CAAC;gBAAC,CAAC;aAAE;YACrC,MAAMF,OACJ1B,kBAAkB6C,YAAY,CAAC,qBAAqB;gBAClDC,IAAI;gBACJC,MAAM;gBACNjD,MAAM;gBACNkD,MAAM;gBACNC,MAAM;gBACNC,OAAO;gBACPC,SAAS;YACX,IACAX,QAAQ,CAACY,aAAa;YACxB1B,OAAOzB,GAAGG,OAAO,EAAEqC,qBAAqB,CAAC;QAC3C;QAEAhB,GAAG,+BAA+B;YAChCxB,GAAGG,OAAO,CAACsC,qBAAqB,CAAC,IAAIC,MAAM;YAC3C,MAAMjB,OACJ1B,kBAAkB6C,YAAY,CAAC,qBAAqB;gBAClDC,IAAI;gBACJC,MAAM;gBACNjD,MAAM;gBACNkD,MAAM;gBACNC,MAAM;gBACNC,OAAOG,KAAKC,GAAG;gBACfH,SAAS;YACX,IACAX,QAAQ,CAACY,aAAa;YACxB1B,OAAOzB,GAAGG,OAAO,EAAEqC,qBAAqB,CAAC;QAC3C;IACF;IAEA7C,SAAS,kBAAkB;QACzB6B,GAAG,gEAAgE;YACjExB,GAAGG,OAAO,CAACwB,qBAAqB,CAAC;gBAC/B;oBACE;wBAAEkB,IAAI;wBAAGC,MAAM;wBAAMjD,MAAM;wBAASmD,MAAM;oBAAG;oBAC7C;wBAAEH,IAAI;wBAAGC,MAAM;wBAAMjD,MAAM;wBAASmD,MAAM;oBAAG;iBAC9C;aACF;YAED,MAAMM,MAAM,MAAMvD,kBAAkBwD,cAAc,CAAC;YACnD9B,OAAO6B,IAAI/C,GAAG,CAAC,IAAIuB,OAAO,CAAC;gBAAEgB,MAAM;gBAAMjD,MAAM;gBAASmD,MAAM;YAAG;YACjEvB,OAAO6B,IAAI/C,GAAG,CAAC,IAAIuB,OAAO,CAAC;gBAAEgB,MAAM;gBAAMjD,MAAM;gBAASmD,MAAM;YAAG;YACjEvB,OAAOzB,GAAGG,OAAO,EAAEqC,qBAAqB,CAAC;QAC3C;QAEAhB,GAAG,2DAA2D;YAC5DxB,GAAGG,OAAO,CAACwB,qBAAqB,CAAC;gBAAC;oBAAC;wBAAEkB,IAAI;wBAAGC,MAAM;wBAASjD,MAAM;wBAASmD,MAAM;oBAAG;iBAAE;aAAC;YAEtF,MAAMM,MAAM,MAAMvD,kBAAkBwD,cAAc,CAAC,qBAAqB;YACxE9B,OAAO6B,IAAI/C,GAAG,CAAC,IAAIuB,OAAO,CAAC;gBAAEgB,MAAM;gBAASjD,MAAM;gBAASmD,MAAM;YAAG;YACpEvB,OAAOzB,GAAGG,OAAO,EAAEqC,qBAAqB,CAAC;QAC3C;IACF;IAEA7C,SAAS,iBAAiB;QACxB6B,GAAG,uDAAuD;YACxDxB,GAAGG,OAAO,CAACwB,qBAAqB,CAAC;gBAAC;oBAAE6B,cAAc;gBAAE;aAAE,GAAE,kCAAkC;YAC1F,MAAMzD,kBAAkB0D,aAAa,CAAC,qBAAqB;gBAAC;gBAAG;aAAE;YACjEhC,OAAOzB,GAAGG,OAAO,EAAEqC,qBAAqB,CAAC;QAC3C;QAEAhB,GAAG,sDAAsD;YACvD,MAAMkC,UAAUtD,KAAKuD,KAAK,CAAC5D,iBAAiB,CAAC,SAAS,EAAE,QAAQ6D,kBAAkB,CAAC,IAAMlD;YACzFV,GAAGG,OAAO,CAACwB,qBAAqB,CAAC;gBAAC;oBAAE6B,cAAc;gBAAE;aAAE;YAEtD,MAAMzD,kBAAkB0D,aAAa,CAAC,qBAAqB;gBAAC;gBAAG;aAAE;YAEjEhC,OAAOzB,GAAGG,OAAO,EAAEqC,qBAAqB,CAAC;YACzCf,OAAOiC,SAAS1B,GAAG,CAACD,gBAAgB;YACpC2B,QAAQG,WAAW;QACrB;QAEArC,GAAG,uBAAuB;YACxBxB,GAAGG,OAAO,CAACsC,qBAAqB,CAAC,IAAIC,MAAM;YAC3C,MAAM3C,kBAAkB0D,aAAa,CAAC,qBAAqB;gBAAC;aAAE;YAC9DhC,OAAOzB,GAAGG,OAAO,EAAEqC,qBAAqB,CAAC;QAC3C;IACF;IAEA7C,SAAS,iBAAiB;QACxB6B,GAAG,2CAA2C;YAC5C,MAAMI,MAAM,MAAM7B,kBAAkB+D,aAAa,CAAC;gBAAC;aAAoB,EAAE,OAAO;YAChFrC,OAAOG,KAAKE,OAAO,CAAC,EAAE;YACtBL,OAAOzB,GAAGG,OAAO,EAAEqC,qBAAqB,CAAC;QAC3C;QAEAhB,GAAG,wDAAwD;YACzDxB,GAAGG,OAAO,CAACwB,qBAAqB,CAAC;gBAAC,EAAE;aAAC;YAErC,MAAMC,MAAM,MAAM7B,kBAAkB+D,aAAa,CAAC;gBAAC;aAAoB,EAAE,OAAO;YAEhFrC,OAAOzB,GAAGG,OAAO,EAAEqC,qBAAqB,CAAC;YACzCf,OAAOG,KAAKE,OAAO,CAAC,EAAE;QACxB;QAEAN,GAAG,qEAAqE;YACtE,qEAAqE;YACrE,MAAMuC,OAAO;gBACX;oBACElB,IAAI;oBACJC,MAAM;oBACNjD,MAAM;oBACNkD,MAAM;oBACNE,OAAO;oBACPC,SAAS;oBACTc,OAAO;gBACT;gBACA;oBACEnB,IAAI;oBACJC,MAAM;oBACNjD,MAAM;oBACNkD,MAAM;oBACNE,OAAO;oBACPC,SAAS;oBACTc,OAAO;gBACT;aACD;YACDhE,GAAGG,OAAO,CAACwB,qBAAqB,CAAC;gBAACoC;aAAK;YAEvC,MAAMnC,MAAM,MAAM7B,kBAAkB+D,aAAa,CAAC;gBAAC;gBAAqB;aAAoB,EAAE,WAAW;YAEzGrC,OAAOzB,GAAGG,OAAO,EAAEqC,qBAAqB,CAAC;YACzCf,OAAOG,IAAIqC,MAAM,EAAE/B,IAAI,CAAC;YACxB,0BAA0B;YAC1BT,OAAOG,GAAG,CAAC,EAAE,CAACsB,OAAO,EAAEC,aAAa;YACpC1B,OAAOyC,MAAMC,OAAO,CAACvC,GAAG,CAAC,EAAE,CAACwC,OAAO,GAAGlC,IAAI,CAAC;YAC3CT,OAAOG,GAAG,CAAC,EAAE,CAACwC,OAAO,CAAEH,MAAM,EAAEI,eAAe,CAAC;YAC/C,+BAA+B;YAC/B5C,OAAOG,GAAG,CAAC,EAAE,CAACwC,OAAO,CAAEE,IAAI,CAAC,MAAMC,OAAO,CAAC;QAC5C;IACF;IAEA5E,SAAS,gBAAgB;QACvB6B,GAAG,wDAAwD;YACzD,kBAAkB;YAClBxB,GAAGG,OAAO,CAACwB,qBAAqB,CAAC;gBAAC;oBAAC;wBAAEQ,GAAG;oBAAoB;oBAAG;wBAAEA,GAAG;oBAAoB;oBAAG;wBAAEA,GAAG;oBAAoB;iBAAE;aAAC;YACvH,8BAA8B;YAC9BnC,GAAGG,OAAO,CAACM,iBAAiB,CAAC;gBAAC,CAAC;aAAE;YAEjC,MAAMV,kBAAkByE,YAAY,CAAC;gBAAC;aAAM,GAAE,+CAA+C;YAE7F,4CAA4C;YAC5C/C,OAAOzB,GAAGG,OAAO,EAAEqC,qBAAqB,CAAC;QAC3C;QAEAhB,GAAG,+CAA+C;YAChD,MAAMzB,kBAAkByE,YAAY,CAAC,EAAE;YACvC/C,OAAOzB,GAAGG,OAAO,EAAEqC,qBAAqB,CAAC;QAC3C;IACF;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
|
-
*/ // cache task key = `ftask-$(userId}-${taskId}` => FileTask
|
|
1
|
+
// cache task key = `ftask-$(userId}-${taskId}` => FileTask
|
|
6
2
|
"use strict";
|
|
7
3
|
Object.defineProperty(exports, "__esModule", {
|
|
8
4
|
value: true
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"sources":["../../../../../backend/src/applications/files/constants/cache.ts"],"sourcesContent":["
|
|
1
|
+
{"version":3,"sources":["../../../../../backend/src/applications/files/constants/cache.ts"],"sourcesContent":["// cache task key = `ftask-$(userId}-${taskId}` => FileTask\nexport const CACHE_TASK_PREFIX = 'ftask' as const\nexport const CACHE_TASK_TTL = 86400 as const // one day\n// cache token key = `flock|token?:${uuid}|path:${path}|ownerId?:${number}|spaceId?:${number}|...props` => FileLock\nexport const CACHE_LOCK_PREFIX = 'flock' as const\nexport const CACHE_LOCK_DEFAULT_TTL = 28800 as const // 8 hours in seconds\nexport const CACHE_LOCK_FILE_TTL = 3600 as const\n// cache only office = `office|${fileId}` => docKey\n"],"names":["CACHE_LOCK_DEFAULT_TTL","CACHE_LOCK_FILE_TTL","CACHE_LOCK_PREFIX","CACHE_TASK_PREFIX","CACHE_TASK_TTL"],"mappings":"AAAA,2DAA2D;;;;;;;;;;;;QAK9CA;eAAAA;;QACAC;eAAAA;;QAFAC;eAAAA;;QAHAC;eAAAA;;QACAC;eAAAA;;;AADN,MAAMD,oBAAoB;AAC1B,MAAMC,iBAAiB,KAAe,UAAU;;AAEhD,MAAMF,oBAAoB;AAC1B,MAAMF,yBAAyB,KAAe,qBAAqB;;AACnE,MAAMC,sBAAsB,IACnC,mDAAmD"}
|
|
@@ -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/files/constants/compress.ts"],"sourcesContent":["
|
|
1
|
+
{"version":3,"sources":["../../../../../backend/src/applications/files/constants/compress.ts"],"sourcesContent":["export const tarExtension = 'tar'\nexport const tarGzExtension = 'tgz'\n"],"names":["tarExtension","tarGzExtension"],"mappings":";;;;;;;;;;;QAAaA;eAAAA;;QACAC;eAAAA;;;AADN,MAAMD,eAAe;AACrB,MAAMC,iBAAiB"}
|
|
@@ -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/files/constants/files.ts"],"sourcesContent":["
|
|
1
|
+
{"version":3,"sources":["../../../../../backend/src/applications/files/constants/files.ts"],"sourcesContent":["export const DEFAULT_CHECKSUM_ALGORITHM = 'sha512-256'\nexport const DEFAULT_HIGH_WATER_MARK = 1024 * 1024\nexport const DEFAULT_MIME_TYPE = 'application/octet-stream'\nexport const EXTRA_MIMES_TYPE = new Map([\n ['.ts', 'text-typescript'],\n ['.py', 'text-x-python'],\n ['.tgz', 'application-gzip'],\n ['.gz', 'application-gzip'],\n ['.gzip', 'application-gzip']\n])\nexport const COMPRESSION_EXTENSION = new Map([\n ['.zip', 'zip'],\n ['.gzip', 'gzip'],\n ['.tgz', 'tgz'],\n ['.gz', 'tgz'],\n ['.tar.gz', 'tgz'],\n ['.tar', 'tar']\n])\n"],"names":["COMPRESSION_EXTENSION","DEFAULT_CHECKSUM_ALGORITHM","DEFAULT_HIGH_WATER_MARK","DEFAULT_MIME_TYPE","EXTRA_MIMES_TYPE","Map"],"mappings":";;;;;;;;;;;QAUaA;eAAAA;;QAVAC;eAAAA;;QACAC;eAAAA;;QACAC;eAAAA;;QACAC;eAAAA;;;AAHN,MAAMH,6BAA6B;AACnC,MAAMC,0BAA0B,OAAO;AACvC,MAAMC,oBAAoB;AAC1B,MAAMC,mBAAmB,IAAIC,IAAI;IACtC;QAAC;QAAO;KAAkB;IAC1B;QAAC;QAAO;KAAgB;IACxB;QAAC;QAAQ;KAAmB;IAC5B;QAAC;QAAO;KAAmB;IAC3B;QAAC;QAAS;KAAmB;CAC9B;AACM,MAAML,wBAAwB,IAAIK,IAAI;IAC3C;QAAC;QAAQ;KAAM;IACf;QAAC;QAAS;KAAO;IACjB;QAAC;QAAQ;KAAM;IACf;QAAC;QAAO;KAAM;IACd;QAAC;QAAW;KAAM;IAClB;QAAC;QAAQ;KAAM;CAChB"}
|
|
@@ -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/files/constants/indexing.ts"],"sourcesContent":["
|
|
1
|
+
{"version":3,"sources":["../../../../../backend/src/applications/files/constants/indexing.ts"],"sourcesContent":["export const userIndexPrefix = 'user_'\nexport const spaceIndexPrefix = 'space_'\nexport const shareIndexPrefix = 'share_'\nexport const minCharsToSearch = 3\nexport const indexableExtensions = new Set(['docx', 'pptx', 'xlsx', 'odt', 'odp', 'ods', 'pdf', 'txt', 'html', 'htm'])\n"],"names":["indexableExtensions","minCharsToSearch","shareIndexPrefix","spaceIndexPrefix","userIndexPrefix","Set"],"mappings":";;;;;;;;;;;QAIaA;eAAAA;;QADAC;eAAAA;;QADAC;eAAAA;;QADAC;eAAAA;;QADAC;eAAAA;;;AAAN,MAAMA,kBAAkB;AACxB,MAAMD,mBAAmB;AACzB,MAAMD,mBAAmB;AACzB,MAAMD,mBAAmB;AACzB,MAAMD,sBAAsB,IAAIK,IAAI;IAAC;IAAQ;IAAQ;IAAQ;IAAO;IAAO;IAAO;IAAO;IAAO;IAAQ;CAAM"}
|
|
@@ -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/files/constants/operations.ts"],"sourcesContent":["
|
|
1
|
+
{"version":3,"sources":["../../../../../backend/src/applications/files/constants/operations.ts"],"sourcesContent":["export enum FILE_OPERATION {\n MAKE = 'make',\n COPY = 'copy',\n MOVE = 'move',\n DELETE = 'delete',\n COMPRESS = 'compress',\n DECOMPRESS = 'decompress',\n DOWNLOAD = 'download',\n UPLOAD = 'upload',\n TOUCH = 'touch',\n THUMBNAIL = 'thumbnail',\n GET_SIZE = 'getSize',\n LOCK = 'lock',\n UNLOCK = 'unlock',\n UNLOCK_REQUEST = 'unlockRequest'\n}\n\nexport enum FILE_MODE {\n VIEW = 'view',\n EDIT = 'edit'\n}\n\nexport const FORCE_AS_FILE_OWNER = 'forceAsFileOwner' as const\n"],"names":["FILE_MODE","FILE_OPERATION","FORCE_AS_FILE_OWNER"],"mappings":";;;;;;;;;;;QAiBYA;eAAAA;;QAjBAC;eAAAA;;QAsBCC;eAAAA;;;AAtBN,IAAA,AAAKD,wCAAAA;;;;;;;;;;;;;;;WAAAA;;AAiBL,IAAA,AAAKD,mCAAAA;;;WAAAA;;AAKL,MAAME,sBAAsB"}
|
|
@@ -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/files/constants/routes.ts"],"sourcesContent":["
|
|
1
|
+
{"version":3,"sources":["../../../../../backend/src/applications/files/constants/routes.ts"],"sourcesContent":["import { SPACES_ROUTE } from '../../spaces/constants/routes'\nimport { FILE_OPERATION } from './operations'\n\nexport const FILES_ROUTE = {\n BASE: SPACES_ROUTE.BASE,\n OPERATION: 'operation',\n TASK_OPERATION: 'task/operation',\n TASKS: 'tasks',\n TASKS_DOWNLOAD: 'download',\n RECENTS: 'recents',\n SEARCH: 'search'\n} as const\n\nexport const API_FILES_OPERATION = `${FILES_ROUTE.BASE}/${FILES_ROUTE.OPERATION}`\nexport const API_FILES_OPERATION_THUMBNAIL = `${API_FILES_OPERATION}/${FILE_OPERATION.THUMBNAIL}`\nexport const API_FILES_OPERATION_MAKE = `${API_FILES_OPERATION}/${FILE_OPERATION.MAKE}`\nexport const API_FILES_OPERATION_UPLOAD = `${API_FILES_OPERATION}/${FILE_OPERATION.UPLOAD}`\nexport const API_FILES_TASK_OPERATION = `${FILES_ROUTE.BASE}/${FILES_ROUTE.TASK_OPERATION}`\nexport const API_FILES_TASK_OPERATION_DOWNLOAD = `${API_FILES_TASK_OPERATION}/${FILE_OPERATION.DOWNLOAD}`\nexport const API_FILES_TASK_OPERATION_COMPRESS = `${API_FILES_TASK_OPERATION}/${FILE_OPERATION.COMPRESS}`\nexport const API_FILES_TASK_OPERATION_DECOMPRESS = `${API_FILES_TASK_OPERATION}/${FILE_OPERATION.DECOMPRESS}`\nexport const API_FILES_TASKS = `${FILES_ROUTE.BASE}/${FILES_ROUTE.TASKS}`\nexport const API_FILES_TASKS_DOWNLOAD = `${FILES_ROUTE.BASE}/${FILES_ROUTE.TASKS}/${FILES_ROUTE.TASKS_DOWNLOAD}`\nexport const API_FILES_RECENTS = `${FILES_ROUTE.BASE}/${FILES_ROUTE.RECENTS}`\nexport const API_FILES_SEARCH = `${FILES_ROUTE.BASE}/${FILES_ROUTE.SEARCH}`\n"],"names":["API_FILES_OPERATION","API_FILES_OPERATION_MAKE","API_FILES_OPERATION_THUMBNAIL","API_FILES_OPERATION_UPLOAD","API_FILES_RECENTS","API_FILES_SEARCH","API_FILES_TASKS","API_FILES_TASKS_DOWNLOAD","API_FILES_TASK_OPERATION","API_FILES_TASK_OPERATION_COMPRESS","API_FILES_TASK_OPERATION_DECOMPRESS","API_FILES_TASK_OPERATION_DOWNLOAD","FILES_ROUTE","BASE","SPACES_ROUTE","OPERATION","TASK_OPERATION","TASKS","TASKS_DOWNLOAD","RECENTS","SEARCH","FILE_OPERATION","THUMBNAIL","MAKE","UPLOAD","DOWNLOAD","COMPRESS","DECOMPRESS"],"mappings":";;;;;;;;;;;QAaaA;eAAAA;;QAEAC;eAAAA;;QADAC;eAAAA;;QAEAC;eAAAA;;QAOAC;eAAAA;;QACAC;eAAAA;;QAHAC;eAAAA;;QACAC;eAAAA;;QALAC;eAAAA;;QAEAC;eAAAA;;QACAC;eAAAA;;QAFAC;eAAAA;;QAfAC;eAAAA;;;wBAHgB;4BACE;AAExB,MAAMA,cAAc;IACzBC,MAAMC,oBAAY,CAACD,IAAI;IACvBE,WAAW;IACXC,gBAAgB;IAChBC,OAAO;IACPC,gBAAgB;IAChBC,SAAS;IACTC,QAAQ;AACV;AAEO,MAAMpB,sBAAsB,GAAGY,YAAYC,IAAI,CAAC,CAAC,EAAED,YAAYG,SAAS,EAAE;AAC1E,MAAMb,gCAAgC,GAAGF,oBAAoB,CAAC,EAAEqB,0BAAc,CAACC,SAAS,EAAE;AAC1F,MAAMrB,2BAA2B,GAAGD,oBAAoB,CAAC,EAAEqB,0BAAc,CAACE,IAAI,EAAE;AAChF,MAAMpB,6BAA6B,GAAGH,oBAAoB,CAAC,EAAEqB,0BAAc,CAACG,MAAM,EAAE;AACpF,MAAMhB,2BAA2B,GAAGI,YAAYC,IAAI,CAAC,CAAC,EAAED,YAAYI,cAAc,EAAE;AACpF,MAAML,oCAAoC,GAAGH,yBAAyB,CAAC,EAAEa,0BAAc,CAACI,QAAQ,EAAE;AAClG,MAAMhB,oCAAoC,GAAGD,yBAAyB,CAAC,EAAEa,0BAAc,CAACK,QAAQ,EAAE;AAClG,MAAMhB,sCAAsC,GAAGF,yBAAyB,CAAC,EAAEa,0BAAc,CAACM,UAAU,EAAE;AACtG,MAAMrB,kBAAkB,GAAGM,YAAYC,IAAI,CAAC,CAAC,EAAED,YAAYK,KAAK,EAAE;AAClE,MAAMV,2BAA2B,GAAGK,YAAYC,IAAI,CAAC,CAAC,EAAED,YAAYK,KAAK,CAAC,CAAC,EAAEL,YAAYM,cAAc,EAAE;AACzG,MAAMd,oBAAoB,GAAGQ,YAAYC,IAAI,CAAC,CAAC,EAAED,YAAYO,OAAO,EAAE;AACtE,MAAMd,mBAAmB,GAAGO,YAAYC,IAAI,CAAC,CAAC,EAAED,YAAYQ,MAAM,EAAE"}
|
|
@@ -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/files/constants/samples.ts"],"sourcesContent":["
|
|
1
|
+
{"version":3,"sources":["../../../../../backend/src/applications/files/constants/samples.ts"],"sourcesContent":["export const SAMPLE_PATH_WITHOUT_EXT = '../assets/samples/sample'\nexport const DOCUMENT_TYPE = {\n 'Microsoft Word': '.docx',\n 'Microsoft Excel': '.xlsx',\n 'Microsoft PowerPoint': '.pptx',\n 'Open Document Text': '.odt',\n 'Open Document Spreadsheet': '.ods',\n 'Open Document Presentation': '.odp',\n 'Rich Text Format': '.rtf',\n Text: '.txt'\n}\n"],"names":["DOCUMENT_TYPE","SAMPLE_PATH_WITHOUT_EXT","Text"],"mappings":";;;;;;;;;;;QACaA;eAAAA;;QADAC;eAAAA;;;AAAN,MAAMA,0BAA0B;AAChC,MAAMD,gBAAgB;IAC3B,kBAAkB;IAClB,mBAAmB;IACnB,wBAAwB;IACxB,sBAAsB;IACtB,6BAA6B;IAC7B,8BAA8B;IAC9B,oBAAoB;IACpBE,MAAM;AACR"}
|
|
@@ -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/files/dto/file-operations.dto.ts"],"sourcesContent":["
|
|
1
|
+
{"version":3,"sources":["../../../../../backend/src/applications/files/dto/file-operations.dto.ts"],"sourcesContent":["import { Transform } from 'class-transformer'\nimport { ArrayMinSize, IsArray, IsBoolean, IsDefined, IsIn, IsInt, IsNotEmpty, IsOptional, IsString, IsUrl } from 'class-validator'\nimport { RejectIfMatch } from '../../../common/decorators'\nimport { regExpInvalidFileName } from '../../../common/shared'\nimport { tarExtension, tarGzExtension } from '../constants/compress'\n\nexport class CopyMoveFileDto {\n @IsNotEmpty()\n @IsString()\n dstDirectory: string\n\n @IsOptional()\n @IsString()\n @RejectIfMatch(regExpInvalidFileName, { message: 'Forbidden characters' })\n // Renaming scenario\n dstName?: string\n\n @IsOptional()\n @IsBoolean()\n overwrite? = false\n}\n\nexport class DownloadFileDto {\n @IsNotEmpty()\n @IsUrl({\n // only allow HTTP(S)\n protocols: ['http', 'https'],\n require_protocol: true,\n require_valid_protocol: true,\n // reject exotic schemes and underscores\n allow_underscores: false,\n allow_trailing_dot: false\n })\n url: string\n}\n\nexport class MakeFileDto {\n @IsNotEmpty()\n @IsString()\n @IsIn(['file', 'directory'])\n type: 'file' | 'directory'\n}\n\nexport class CompressFileDto {\n @IsOptional()\n @IsString()\n @RejectIfMatch(regExpInvalidFileName, { message: 'Forbidden characters' })\n name?: string // only used on frontend\n\n @IsDefined()\n @IsBoolean()\n compressInDirectory: boolean\n\n @IsNotEmpty({ each: true })\n @IsArray()\n @ArrayMinSize(1)\n files: { name: string; rootAlias: string; path?: string }[]\n\n @IsNotEmpty()\n @IsString()\n @IsIn([tarExtension, tarGzExtension])\n extension: typeof tarExtension | typeof tarGzExtension\n}\n\nexport class SearchFilesDto {\n @IsNotEmpty()\n @IsString()\n @Transform(({ value }) => (value ? value.trim() : null))\n content: string\n\n @IsOptional()\n @IsBoolean()\n fullText?: boolean = false\n\n @IsOptional()\n @IsInt()\n limit?: number = 100\n}\n"],"names":["CompressFileDto","CopyMoveFileDto","DownloadFileDto","MakeFileDto","SearchFilesDto","overwrite","message","protocols","require_protocol","require_valid_protocol","allow_underscores","allow_trailing_dot","each","tarExtension","tarGzExtension","fullText","limit","value","trim"],"mappings":";;;;;;;;;;;QA2CaA;eAAAA;;QArCAC;eAAAA;;QAgBAC;eAAAA;;QAcAC;eAAAA;;QA4BAC;eAAAA;;;kCAhEa;gCACwF;4BACpF;wBACQ;0BACO;;;;;;;;;;AAEtC,IAAA,AAAMH,kBAAN,MAAMA;;aAaXI,YAAa;;AACf;;;;;;;;;;QAP0CC,SAAS;;;;;;;;AAS5C,IAAA,AAAMJ,kBAAN,MAAMA;AAYb;;;;QATI,qBAAqB;QACrBK,WAAW;YAAC;YAAQ;SAAQ;QAC5BC,kBAAkB;QAClBC,wBAAwB;QACxB,wCAAwC;QACxCC,mBAAmB;QACnBC,oBAAoB;;;;AAKjB,IAAA,AAAMR,cAAN,MAAMA;AAKb;;;;;QAFS;QAAQ;;;;AAIV,IAAA,AAAMH,kBAAN,MAAMA;AAmBb;;;;;QAhB0CM,SAAS;;;;;;;;;;;QAOnCM,MAAM;;;;;;;;;;QAObC,sBAAY;QAAEC,wBAAc;;;;AAI9B,IAAA,AAAMV,iBAAN,MAAMA;;aAQXW,WAAqB;aAIrBC,QAAiB;;AACnB;;;;sCAVc,EAAEC,KAAK,EAAE,GAAMA,QAAQA,MAAMC,IAAI,KAAK"}
|
|
@@ -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/files/events/file-task-event.ts"],"sourcesContent":["
|
|
1
|
+
{"version":3,"sources":["../../../../../backend/src/applications/files/events/file-task-event.ts"],"sourcesContent":["import EventEmitter from 'node:events'\n\nexport const FileTaskEvent: EventEmitter = new EventEmitter()\n"],"names":["FileTaskEvent","EventEmitter"],"mappings":";;;;+BAEaA;;;eAAAA;;;mEAFY;;;;;;AAElB,MAAMA,gBAA8B,IAAIC,mBAAY"}
|
|
@@ -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/files/files-tasks.controller.ts"],"sourcesContent":["
|
|
1
|
+
{"version":3,"sources":["../../../../backend/src/applications/files/files-tasks.controller.ts"],"sourcesContent":["import { Controller, Delete, Get, Param, Req, Res, StreamableFile } from '@nestjs/common'\nimport { FastifyReply } from 'fastify'\nimport { FastifySpaceRequest } from '../spaces/interfaces/space-request.interface'\nimport { GetUser } from '../users/decorators/user.decorator'\nimport { UserModel } from '../users/models/user.model'\nimport { API_FILES_TASKS, FILES_ROUTE } from './constants/routes'\nimport { FilesTasksManager } from './services/files-tasks-manager.service'\n\n@Controller(API_FILES_TASKS)\nexport class FilesTasksController {\n constructor(private readonly filesTasksManager: FilesTasksManager) {}\n\n @Get(':id?')\n getTasks(@GetUser() user: UserModel, @Param('id') taskId?: string) {\n return this.filesTasksManager.getTasks(user.id, taskId)\n }\n\n @Delete(':id?')\n deleteTasks(@GetUser() user: UserModel, @Param('id') taskId?: string) {\n return this.filesTasksManager.deleteTasks(user, taskId)\n }\n\n @Get(`${FILES_ROUTE.TASKS_DOWNLOAD}/:id`)\n downloadTaskFile(\n @GetUser() user: UserModel,\n @Param('id') taskId: string,\n @Req() req: FastifySpaceRequest,\n @Res({ passthrough: true }) res: FastifyReply\n ): Promise<StreamableFile> {\n return this.filesTasksManager.downloadArchive(user, taskId, req, res)\n }\n}\n"],"names":["FilesTasksController","getTasks","user","taskId","filesTasksManager","id","deleteTasks","downloadTaskFile","req","res","downloadArchive","FILES_ROUTE","TASKS_DOWNLOAD","passthrough"],"mappings":";;;;+BASaA;;;eAAAA;;;wBAT4D;yBAC5C;uCACO;+BACZ;2BACE;wBACmB;0CACX;;;;;;;;;;;;;;;AAG3B,IAAA,AAAMA,uBAAN,MAAMA;IAIXC,SAAS,AAAWC,IAAe,EAAE,AAAaC,MAAe,EAAE;QACjE,OAAO,IAAI,CAACC,iBAAiB,CAACH,QAAQ,CAACC,KAAKG,EAAE,EAAEF;IAClD;IAGAG,YAAY,AAAWJ,IAAe,EAAE,AAAaC,MAAe,EAAE;QACpE,OAAO,IAAI,CAACC,iBAAiB,CAACE,WAAW,CAACJ,MAAMC;IAClD;IAGAI,iBACE,AAAWL,IAAe,EAC1B,AAAaC,MAAc,EAC3B,AAAOK,GAAwB,EAC/B,AAA4BC,GAAiB,EACpB;QACzB,OAAO,IAAI,CAACL,iBAAiB,CAACM,eAAe,CAACR,MAAMC,QAAQK,KAAKC;IACnE;IApBA,YAAY,AAAiBL,iBAAoC,CAAE;aAAtCA,oBAAAA;IAAuC;AAqBtE;;;;;;;;;;;;;;;;;;;;;;;;wBATUO,mBAAW,CAACC,cAAc,CAAC,IAAI;;;;;QAK9BC,aAAa"}
|
|
@@ -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/files/files-tasks.controller.spec.ts"],"sourcesContent":["
|
|
1
|
+
{"version":3,"sources":["../../../../backend/src/applications/files/files-tasks.controller.spec.ts"],"sourcesContent":["import { Test, TestingModule } from '@nestjs/testing'\nimport { Cache } from '../../infrastructure/cache/services/cache.service'\nimport { FilesTasksController } from './files-tasks.controller'\nimport { FilesMethods } from './services/files-methods.service'\nimport { FilesTasksManager } from './services/files-tasks-manager.service'\n\ndescribe(FilesTasksController.name, () => {\n let controller: FilesTasksController\n let filesTasksManager: { getTasks: jest.Mock; deleteTasks: jest.Mock; downloadArchive: jest.Mock }\n\n beforeAll(async () => {\n filesTasksManager = {\n getTasks: jest.fn(),\n deleteTasks: jest.fn(),\n downloadArchive: jest.fn()\n }\n\n const module: TestingModule = await Test.createTestingModule({\n controllers: [FilesTasksController],\n providers: [\n {\n provide: Cache,\n useValue: {}\n },\n { provide: FilesMethods, useValue: {} },\n { provide: FilesTasksManager, useValue: filesTasksManager }\n ]\n }).compile()\n\n controller = module.get<FilesTasksController>(FilesTasksController)\n })\n\n beforeEach(() => {\n jest.clearAllMocks()\n })\n\n it('should be defined', () => {\n expect(controller).toBeDefined()\n })\n\n it('getTasks should call FilesTasksManager.getTasks with user.id and taskId and return the value', () => {\n const user = { id: 'user-1' } as any\n const taskId = 'task-123'\n const expected = [{ id: 'task-123' }]\n\n filesTasksManager.getTasks.mockReturnValueOnce(expected)\n\n const result = controller.getTasks(user, taskId)\n\n expect(filesTasksManager.getTasks).toHaveBeenCalledTimes(1)\n expect(filesTasksManager.getTasks).toHaveBeenCalledWith('user-1', 'task-123')\n expect(result).toBe(expected)\n })\n\n it('getTasks without taskId should pass undefined', () => {\n const user = { id: 'user-2' } as any\n const expected = [{ id: 'task-a' }, { id: 'task-b' }]\n\n filesTasksManager.getTasks.mockReturnValueOnce(expected)\n\n const result = controller.getTasks(user)\n\n expect(filesTasksManager.getTasks).toHaveBeenCalledTimes(1)\n expect(filesTasksManager.getTasks).toHaveBeenCalledWith('user-2', undefined)\n expect(result).toBe(expected)\n })\n\n it('deleteTasks should call FilesTasksManager.deleteTasks with user and taskId and return the value', () => {\n const user = { id: 'user-3', name: 'Alice' } as any\n const taskId = 'task-del-1'\n const expected = { deleted: true }\n\n filesTasksManager.deleteTasks.mockReturnValueOnce(expected)\n\n const result = controller.deleteTasks(user, taskId)\n\n expect(filesTasksManager.deleteTasks).toHaveBeenCalledTimes(1)\n expect(filesTasksManager.deleteTasks).toHaveBeenCalledWith(user, 'task-del-1')\n expect(result).toBe(expected)\n })\n\n it('deleteTasks without taskId must pass undefined', () => {\n const user = { id: 'user-4' } as any\n const expected = { deletedAll: true }\n\n filesTasksManager.deleteTasks.mockReturnValueOnce(expected)\n\n const result = controller.deleteTasks(user)\n\n expect(filesTasksManager.deleteTasks).toHaveBeenCalledTimes(1)\n expect(filesTasksManager.deleteTasks).toHaveBeenCalledWith(user, undefined)\n expect(result).toBe(expected)\n })\n\n it('downloadTaskFile should delegate to FilesTasksManager.downloadArchive and return the StreamableFile', async () => {\n const user = { id: 'user-5' } as any\n const taskId = 'task-dl-42'\n const req = {} as any\n const res = {} as any\n const streamable = { some: 'stream' } as any\n\n filesTasksManager.downloadArchive.mockResolvedValueOnce(streamable)\n\n const result = await controller.downloadTaskFile(user, taskId, req, res)\n\n expect(filesTasksManager.downloadArchive).toHaveBeenCalledTimes(1)\n expect(filesTasksManager.downloadArchive).toHaveBeenCalledWith(user, 'task-dl-42', req, res)\n expect(result).toBe(streamable)\n })\n})\n"],"names":["describe","FilesTasksController","name","controller","filesTasksManager","beforeAll","getTasks","jest","fn","deleteTasks","downloadArchive","module","Test","createTestingModule","controllers","providers","provide","Cache","useValue","FilesMethods","FilesTasksManager","compile","get","beforeEach","clearAllMocks","it","expect","toBeDefined","user","id","taskId","expected","mockReturnValueOnce","result","toHaveBeenCalledTimes","toHaveBeenCalledWith","toBe","undefined","deleted","deletedAll","req","res","streamable","some","mockResolvedValueOnce","downloadTaskFile"],"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/files/files.config.ts"],"sourcesContent":["
|
|
1
|
+
{"version":3,"sources":["../../../../backend/src/applications/files/files.config.ts"],"sourcesContent":["import { Type } from 'class-transformer'\nimport { IsBoolean, IsInt, IsNotEmpty, IsNotEmptyObject, IsString, ValidateNested } from 'class-validator'\nimport { CollaboraOnlineConfig } from './modules/collabora-online/collabora-online.config'\nimport { OnlyOfficeConfig } from './modules/only-office/only-office.config'\n\nexport class FilesConfig {\n @IsNotEmpty()\n @IsString()\n dataPath: string\n\n @IsNotEmpty()\n @IsString()\n usersPath: string\n\n @IsNotEmpty()\n @IsString()\n spacesPath: string\n\n @IsNotEmpty()\n @IsString()\n tmpPath: string\n\n @IsInt()\n maxUploadSize: number = 5368709120 // 5 GB\n\n @IsBoolean()\n contentIndexing: boolean = true\n\n @IsBoolean()\n showHiddenFiles: boolean = false\n\n @IsNotEmptyObject()\n @ValidateNested()\n @Type(() => OnlyOfficeConfig)\n onlyoffice: OnlyOfficeConfig = new OnlyOfficeConfig()\n\n @IsNotEmptyObject()\n @ValidateNested()\n @Type(() => CollaboraOnlineConfig)\n collabora: CollaboraOnlineConfig = new CollaboraOnlineConfig()\n}\n"],"names":["FilesConfig","maxUploadSize","contentIndexing","showHiddenFiles","onlyoffice","OnlyOfficeConfig","collabora","CollaboraOnlineConfig"],"mappings":";;;;+BAKaA;;;eAAAA;;;kCALQ;gCACoE;uCACnD;kCACL;;;;;;;;;;AAE1B,IAAA,AAAMA,cAAN,MAAMA;;aAkBXC,gBAAwB,YAAW,OAAO;aAG1CC,kBAA2B;aAG3BC,kBAA2B;aAK3BC,aAA+B,IAAIC,kCAAgB;aAKnDC,YAAmC,IAAIC,4CAAqB;;AAC9D;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;oCAPcF,kCAAgB;;;;;;oCAKhBE,4CAAqB"}
|
|
@@ -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/files/files.controller.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 {\n Body,\n Controller,\n Copy,\n Delete,\n Get,\n Head,\n Lock,\n Logger,\n Move,\n ParseBoolPipe,\n ParseIntPipe,\n Patch,\n Post,\n Put,\n Query,\n Req,\n Res,\n Search,\n StreamableFile,\n Unlock,\n UseGuards,\n UseInterceptors\n} from '@nestjs/common'\nimport { FastifyReply } from 'fastify'\nimport { webpMimeType } from '../../common/image'\nimport { ContextInterceptor } from '../../infrastructure/context/interceptors/context.interceptor'\nimport { SkipSpaceGuard } from '../spaces/decorators/space-skip-guard.decorator'\nimport { SkipSpacePermissionsCheck } from '../spaces/decorators/space-skip-permissions.decorator'\nimport { GetSpace } from '../spaces/decorators/space.decorator'\nimport { SpaceGuard } from '../spaces/guards/space.guard'\nimport { FastifySpaceRequest } from '../spaces/interfaces/space-request.interface'\nimport { SpaceEnv } from '../spaces/models/space-env.model'\nimport { GetUser } from '../users/decorators/user.decorator'\nimport { UserModel } from '../users/models/user.model'\nimport { FILE_OPERATION, FORCE_AS_FILE_OWNER } from './constants/operations'\nimport { FILES_ROUTE } from './constants/routes'\nimport { CompressFileDto, CopyMoveFileDto, DownloadFileDto, MakeFileDto, SearchFilesDto } from './dto/file-operations.dto'\nimport { FileLockProps } from './interfaces/file-props.interface'\nimport { FileTask } from './models/file-task'\nimport { FileContent } from './schemas/file-content.interface'\nimport { FileRecent } from './schemas/file-recent.interface'\nimport { FilesMethods } from './services/files-methods.service'\nimport { FilesRecents } from './services/files-recents.service'\nimport { FilesSearchManager } from './services/files-search-manager.service'\nimport { FilesTasksManager } from './services/files-tasks-manager.service'\n\n@Controller(FILES_ROUTE.BASE)\n@UseGuards(SpaceGuard)\nexport class FilesController {\n private readonly logger = new Logger(FilesController.name)\n\n constructor(\n private readonly filesMethods: FilesMethods,\n private readonly filesTasksManager: FilesTasksManager,\n private readonly filesRecents: FilesRecents,\n private readonly filesSearch: FilesSearchManager\n ) {}\n\n // OPERATIONS\n\n @Head(`${FILES_ROUTE.OPERATION}/*`)\n async head(@Req() req: FastifySpaceRequest, @Res({ passthrough: true }) res: FastifyReply): Promise<StreamableFile> {\n return this.filesMethods.headOrGet(req, res)\n }\n\n @Get(`${FILES_ROUTE.OPERATION}/*`)\n async download(@Req() req: FastifySpaceRequest, @Res({ passthrough: true }) res: FastifyReply): Promise<StreamableFile> {\n return this.filesMethods.headOrGet(req, res)\n }\n\n @Post(`${FILES_ROUTE.OPERATION}/${FILE_OPERATION.MAKE}/*`)\n async make(@GetUser() user: UserModel, @GetSpace() space: SpaceEnv, @Body() makeFileDto: MakeFileDto): Promise<void> {\n return this.filesMethods.make(user, space, makeFileDto)\n }\n\n @Post(`${FILES_ROUTE.OPERATION}/${FILE_OPERATION.UPLOAD}/*`)\n async uploadCreate(@Req() req: FastifySpaceRequest): Promise<void> {\n return this.filesMethods.upload(req)\n }\n\n @Put(`${FILES_ROUTE.OPERATION}/${FILE_OPERATION.UPLOAD}/*`)\n async uploadOverwrite(@Req() req: FastifySpaceRequest): Promise<void> {\n return this.filesMethods.upload(req)\n }\n\n @Patch(`${FILES_ROUTE.OPERATION}/${FILE_OPERATION.UPLOAD}/*`)\n async uploadContent(@Req() req: FastifySpaceRequest): Promise<void> {\n return this.filesMethods.upload(req)\n }\n\n @Copy(`${FILES_ROUTE.OPERATION}/*`)\n async copy(\n @GetUser() user: UserModel,\n @GetSpace() space: SpaceEnv,\n @Body() copyMoveFileDto: CopyMoveFileDto\n ): Promise<{\n path: string\n name: string\n }> {\n return this.filesMethods.copy(user, space, copyMoveFileDto)\n }\n\n @Move(`${FILES_ROUTE.OPERATION}/*`)\n async move(\n @GetUser() user: UserModel,\n @GetSpace() space: SpaceEnv,\n @Body() copyMoveFileDto: CopyMoveFileDto\n ): Promise<{\n path: string\n name: string\n }> {\n return this.filesMethods.move(user, space, copyMoveFileDto)\n }\n\n @Delete(`${FILES_ROUTE.OPERATION}/*`)\n async delete(@GetUser() user: UserModel, @GetSpace() space: SpaceEnv): Promise<void> {\n return this.filesMethods.delete(user, space)\n }\n\n @Get(`${FILES_ROUTE.OPERATION}/${FILE_OPERATION.THUMBNAIL}/*`)\n async genThumbnail(\n @GetSpace() space: SpaceEnv,\n @Query('size', new ParseIntPipe({ optional: true })) size = 256,\n @Res() res: FastifyReply\n ): Promise<StreamableFile> {\n if (size > 1024) size = 1024\n const thumb = await this.filesMethods.genThumbnail(space, size)\n res.type(webpMimeType)\n return res.send(thumb)\n }\n\n @Lock(`${FILES_ROUTE.OPERATION}/*`)\n async lock(@GetUser() user: UserModel, @GetSpace() space: SpaceEnv): Promise<FileLockProps> {\n return this.filesMethods.lock(user, space)\n }\n\n @Unlock(`${FILES_ROUTE.OPERATION}/*`)\n async unlock(\n @GetUser() user: UserModel,\n @GetSpace() space: SpaceEnv,\n @Query(FORCE_AS_FILE_OWNER, new ParseBoolPipe({ optional: true })) forceAsFileOwner?: boolean\n ): Promise<void> {\n return this.filesMethods.unlock(user, space, forceAsFileOwner)\n }\n\n @Unlock(`${FILES_ROUTE.OPERATION}/${FILE_OPERATION.UNLOCK_REQUEST}/*`)\n @UseInterceptors(ContextInterceptor)\n async unlockRequest(@GetUser() user: UserModel, @GetSpace() space: SpaceEnv): Promise<void> {\n return this.filesMethods.unlockRequest(user, space)\n }\n\n @Get(`${FILES_ROUTE.OPERATION}/${FILE_OPERATION.GET_SIZE}/*`)\n async getSize(@GetSpace() space: SpaceEnv): Promise<{ size: number }> {\n return this.filesMethods.getSize(space)\n }\n\n // TASKS OPERATIONS\n\n @Post(`${FILES_ROUTE.TASK_OPERATION}/${FILE_OPERATION.DOWNLOAD}/*`)\n async downloadFromUrlAsTask(@GetUser() user: UserModel, @GetSpace() space: SpaceEnv, @Body() downloadFileDto: DownloadFileDto): Promise<FileTask> {\n return this.filesTasksManager.createTask(FILE_OPERATION.DOWNLOAD, user, space, downloadFileDto, this.filesMethods.downloadFromUrl.name)\n }\n\n @Post(`${FILES_ROUTE.TASK_OPERATION}/${FILE_OPERATION.COMPRESS}/*`)\n @SkipSpacePermissionsCheck()\n // Can be used to create or download an archive of files; permissions are checked later\n async compressAsTask(@Req() req: FastifySpaceRequest, @Body() compressFileDto: CompressFileDto): Promise<FileTask> {\n if (compressFileDto.compressInDirectory) {\n await SpaceGuard.checkPermissions(req, this.logger)\n }\n return this.filesTasksManager.createTask(FILE_OPERATION.COMPRESS, req.user, req.space, compressFileDto, this.filesMethods.compress.name)\n }\n\n @Post(`${FILES_ROUTE.TASK_OPERATION}/${FILE_OPERATION.DECOMPRESS}/*`)\n async decompressAsTask(@GetUser() user: UserModel, @GetSpace() space: SpaceEnv): Promise<FileTask> {\n return this.filesTasksManager.createTask(FILE_OPERATION.DECOMPRESS, user, space, null, this.filesMethods.decompress.name)\n }\n\n @Copy(`${FILES_ROUTE.TASK_OPERATION}/*`)\n async copyAsTask(@GetUser() user: UserModel, @GetSpace() space: SpaceEnv, @Body() copyMoveFileDto: CopyMoveFileDto): Promise<FileTask> {\n return this.filesTasksManager.createTask(FILE_OPERATION.COPY, user, space, copyMoveFileDto, this.filesMethods.copy.name)\n }\n\n @Move(`${FILES_ROUTE.TASK_OPERATION}/*`)\n async moveAsTask(@GetUser() user: UserModel, @GetSpace() space: SpaceEnv, @Body() copyMoveFileDto: CopyMoveFileDto): Promise<FileTask> {\n return this.filesTasksManager.createTask(FILE_OPERATION.MOVE, user, space, copyMoveFileDto, this.filesMethods.move.name)\n }\n\n @Delete(`${FILES_ROUTE.TASK_OPERATION}/*`)\n async deleteAsTask(@GetUser() user: UserModel, @GetSpace() space: SpaceEnv): Promise<FileTask> {\n return this.filesTasksManager.createTask(FILE_OPERATION.DELETE, user, space, null, this.filesMethods.delete.name)\n }\n\n // RECENT FILES\n\n @Get(FILES_ROUTE.RECENTS)\n @SkipSpaceGuard()\n getRecents(@GetUser() user: UserModel, @Query('limit') limit: number = 10): Promise<FileRecent[]> {\n return this.filesRecents.getRecents(user, limit)\n }\n\n // SEARCH FILES\n\n @Search(FILES_ROUTE.SEARCH)\n @SkipSpaceGuard()\n search(@GetUser() user: UserModel, @Body() search: SearchFilesDto): Promise<FileContent[]> {\n return this.filesSearch.search(user, search)\n }\n}\n"],"names":["FilesController","head","req","res","filesMethods","headOrGet","download","make","user","space","makeFileDto","uploadCreate","upload","uploadOverwrite","uploadContent","copy","copyMoveFileDto","move","delete","genThumbnail","size","thumb","type","webpMimeType","send","lock","unlock","forceAsFileOwner","unlockRequest","getSize","downloadFromUrlAsTask","downloadFileDto","filesTasksManager","createTask","FILE_OPERATION","DOWNLOAD","downloadFromUrl","name","compressAsTask","compressFileDto","compressInDirectory","SpaceGuard","checkPermissions","logger","COMPRESS","compress","decompressAsTask","DECOMPRESS","decompress","copyAsTask","COPY","moveAsTask","MOVE","deleteAsTask","DELETE","getRecents","limit","filesRecents","search","filesSearch","Logger","FILES_ROUTE","OPERATION","passthrough","MAKE","UPLOAD","THUMBNAIL","ParseIntPipe","optional","ParseBoolPipe","UNLOCK_REQUEST","GET_SIZE","TASK_OPERATION","RECENTS","SEARCH","BASE"],"mappings":"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"}
|
|
1
|
+
{"version":3,"sources":["../../../../backend/src/applications/files/files.controller.ts"],"sourcesContent":["import {\n Body,\n Controller,\n Copy,\n Delete,\n Get,\n Head,\n Lock,\n Logger,\n Move,\n ParseBoolPipe,\n ParseIntPipe,\n Patch,\n Post,\n Put,\n Query,\n Req,\n Res,\n Search,\n StreamableFile,\n Unlock,\n UseGuards,\n UseInterceptors\n} from '@nestjs/common'\nimport { FastifyReply } from 'fastify'\nimport { webpMimeType } from '../../common/image'\nimport { ContextInterceptor } from '../../infrastructure/context/interceptors/context.interceptor'\nimport { SkipSpaceGuard } from '../spaces/decorators/space-skip-guard.decorator'\nimport { SkipSpacePermissionsCheck } from '../spaces/decorators/space-skip-permissions.decorator'\nimport { GetSpace } from '../spaces/decorators/space.decorator'\nimport { SpaceGuard } from '../spaces/guards/space.guard'\nimport { FastifySpaceRequest } from '../spaces/interfaces/space-request.interface'\nimport { SpaceEnv } from '../spaces/models/space-env.model'\nimport { GetUser } from '../users/decorators/user.decorator'\nimport { UserModel } from '../users/models/user.model'\nimport { FILE_OPERATION, FORCE_AS_FILE_OWNER } from './constants/operations'\nimport { FILES_ROUTE } from './constants/routes'\nimport { CompressFileDto, CopyMoveFileDto, DownloadFileDto, MakeFileDto, SearchFilesDto } from './dto/file-operations.dto'\nimport { FileLockProps } from './interfaces/file-props.interface'\nimport { FileTask } from './models/file-task'\nimport { FileContent } from './schemas/file-content.interface'\nimport { FileRecent } from './schemas/file-recent.interface'\nimport { FilesMethods } from './services/files-methods.service'\nimport { FilesRecents } from './services/files-recents.service'\nimport { FilesSearchManager } from './services/files-search-manager.service'\nimport { FilesTasksManager } from './services/files-tasks-manager.service'\n\n@Controller(FILES_ROUTE.BASE)\n@UseGuards(SpaceGuard)\nexport class FilesController {\n private readonly logger = new Logger(FilesController.name)\n\n constructor(\n private readonly filesMethods: FilesMethods,\n private readonly filesTasksManager: FilesTasksManager,\n private readonly filesRecents: FilesRecents,\n private readonly filesSearch: FilesSearchManager\n ) {}\n\n // OPERATIONS\n\n @Head(`${FILES_ROUTE.OPERATION}/*`)\n async head(@Req() req: FastifySpaceRequest, @Res({ passthrough: true }) res: FastifyReply): Promise<StreamableFile> {\n return this.filesMethods.headOrGet(req, res)\n }\n\n @Get(`${FILES_ROUTE.OPERATION}/*`)\n async download(@Req() req: FastifySpaceRequest, @Res({ passthrough: true }) res: FastifyReply): Promise<StreamableFile> {\n return this.filesMethods.headOrGet(req, res)\n }\n\n @Post(`${FILES_ROUTE.OPERATION}/${FILE_OPERATION.MAKE}/*`)\n async make(@GetUser() user: UserModel, @GetSpace() space: SpaceEnv, @Body() makeFileDto: MakeFileDto): Promise<void> {\n return this.filesMethods.make(user, space, makeFileDto)\n }\n\n @Post(`${FILES_ROUTE.OPERATION}/${FILE_OPERATION.UPLOAD}/*`)\n async uploadCreate(@Req() req: FastifySpaceRequest): Promise<void> {\n return this.filesMethods.upload(req)\n }\n\n @Put(`${FILES_ROUTE.OPERATION}/${FILE_OPERATION.UPLOAD}/*`)\n async uploadOverwrite(@Req() req: FastifySpaceRequest): Promise<void> {\n return this.filesMethods.upload(req)\n }\n\n @Patch(`${FILES_ROUTE.OPERATION}/${FILE_OPERATION.UPLOAD}/*`)\n async uploadContent(@Req() req: FastifySpaceRequest): Promise<void> {\n return this.filesMethods.upload(req)\n }\n\n @Copy(`${FILES_ROUTE.OPERATION}/*`)\n async copy(\n @GetUser() user: UserModel,\n @GetSpace() space: SpaceEnv,\n @Body() copyMoveFileDto: CopyMoveFileDto\n ): Promise<{\n path: string\n name: string\n }> {\n return this.filesMethods.copy(user, space, copyMoveFileDto)\n }\n\n @Move(`${FILES_ROUTE.OPERATION}/*`)\n async move(\n @GetUser() user: UserModel,\n @GetSpace() space: SpaceEnv,\n @Body() copyMoveFileDto: CopyMoveFileDto\n ): Promise<{\n path: string\n name: string\n }> {\n return this.filesMethods.move(user, space, copyMoveFileDto)\n }\n\n @Delete(`${FILES_ROUTE.OPERATION}/*`)\n async delete(@GetUser() user: UserModel, @GetSpace() space: SpaceEnv): Promise<void> {\n return this.filesMethods.delete(user, space)\n }\n\n @Get(`${FILES_ROUTE.OPERATION}/${FILE_OPERATION.THUMBNAIL}/*`)\n async genThumbnail(\n @GetSpace() space: SpaceEnv,\n @Query('size', new ParseIntPipe({ optional: true })) size = 256,\n @Res() res: FastifyReply\n ): Promise<StreamableFile> {\n if (size > 1024) size = 1024\n const thumb = await this.filesMethods.genThumbnail(space, size)\n res.type(webpMimeType)\n return res.send(thumb)\n }\n\n @Lock(`${FILES_ROUTE.OPERATION}/*`)\n async lock(@GetUser() user: UserModel, @GetSpace() space: SpaceEnv): Promise<FileLockProps> {\n return this.filesMethods.lock(user, space)\n }\n\n @Unlock(`${FILES_ROUTE.OPERATION}/*`)\n async unlock(\n @GetUser() user: UserModel,\n @GetSpace() space: SpaceEnv,\n @Query(FORCE_AS_FILE_OWNER, new ParseBoolPipe({ optional: true })) forceAsFileOwner?: boolean\n ): Promise<void> {\n return this.filesMethods.unlock(user, space, forceAsFileOwner)\n }\n\n @Unlock(`${FILES_ROUTE.OPERATION}/${FILE_OPERATION.UNLOCK_REQUEST}/*`)\n @UseInterceptors(ContextInterceptor)\n async unlockRequest(@GetUser() user: UserModel, @GetSpace() space: SpaceEnv): Promise<void> {\n return this.filesMethods.unlockRequest(user, space)\n }\n\n @Get(`${FILES_ROUTE.OPERATION}/${FILE_OPERATION.GET_SIZE}/*`)\n async getSize(@GetSpace() space: SpaceEnv): Promise<{ size: number }> {\n return this.filesMethods.getSize(space)\n }\n\n // TASKS OPERATIONS\n\n @Post(`${FILES_ROUTE.TASK_OPERATION}/${FILE_OPERATION.DOWNLOAD}/*`)\n async downloadFromUrlAsTask(@GetUser() user: UserModel, @GetSpace() space: SpaceEnv, @Body() downloadFileDto: DownloadFileDto): Promise<FileTask> {\n return this.filesTasksManager.createTask(FILE_OPERATION.DOWNLOAD, user, space, downloadFileDto, this.filesMethods.downloadFromUrl.name)\n }\n\n @Post(`${FILES_ROUTE.TASK_OPERATION}/${FILE_OPERATION.COMPRESS}/*`)\n @SkipSpacePermissionsCheck()\n // Can be used to create or download an archive of files; permissions are checked later\n async compressAsTask(@Req() req: FastifySpaceRequest, @Body() compressFileDto: CompressFileDto): Promise<FileTask> {\n if (compressFileDto.compressInDirectory) {\n await SpaceGuard.checkPermissions(req, this.logger)\n }\n return this.filesTasksManager.createTask(FILE_OPERATION.COMPRESS, req.user, req.space, compressFileDto, this.filesMethods.compress.name)\n }\n\n @Post(`${FILES_ROUTE.TASK_OPERATION}/${FILE_OPERATION.DECOMPRESS}/*`)\n async decompressAsTask(@GetUser() user: UserModel, @GetSpace() space: SpaceEnv): Promise<FileTask> {\n return this.filesTasksManager.createTask(FILE_OPERATION.DECOMPRESS, user, space, null, this.filesMethods.decompress.name)\n }\n\n @Copy(`${FILES_ROUTE.TASK_OPERATION}/*`)\n async copyAsTask(@GetUser() user: UserModel, @GetSpace() space: SpaceEnv, @Body() copyMoveFileDto: CopyMoveFileDto): Promise<FileTask> {\n return this.filesTasksManager.createTask(FILE_OPERATION.COPY, user, space, copyMoveFileDto, this.filesMethods.copy.name)\n }\n\n @Move(`${FILES_ROUTE.TASK_OPERATION}/*`)\n async moveAsTask(@GetUser() user: UserModel, @GetSpace() space: SpaceEnv, @Body() copyMoveFileDto: CopyMoveFileDto): Promise<FileTask> {\n return this.filesTasksManager.createTask(FILE_OPERATION.MOVE, user, space, copyMoveFileDto, this.filesMethods.move.name)\n }\n\n @Delete(`${FILES_ROUTE.TASK_OPERATION}/*`)\n async deleteAsTask(@GetUser() user: UserModel, @GetSpace() space: SpaceEnv): Promise<FileTask> {\n return this.filesTasksManager.createTask(FILE_OPERATION.DELETE, user, space, null, this.filesMethods.delete.name)\n }\n\n // RECENT FILES\n\n @Get(FILES_ROUTE.RECENTS)\n @SkipSpaceGuard()\n getRecents(@GetUser() user: UserModel, @Query('limit') limit: number = 10): Promise<FileRecent[]> {\n return this.filesRecents.getRecents(user, limit)\n }\n\n // SEARCH FILES\n\n @Search(FILES_ROUTE.SEARCH)\n @SkipSpaceGuard()\n search(@GetUser() user: UserModel, @Body() search: SearchFilesDto): Promise<FileContent[]> {\n return this.filesSearch.search(user, search)\n }\n}\n"],"names":["FilesController","head","req","res","filesMethods","headOrGet","download","make","user","space","makeFileDto","uploadCreate","upload","uploadOverwrite","uploadContent","copy","copyMoveFileDto","move","delete","genThumbnail","size","thumb","type","webpMimeType","send","lock","unlock","forceAsFileOwner","unlockRequest","getSize","downloadFromUrlAsTask","downloadFileDto","filesTasksManager","createTask","FILE_OPERATION","DOWNLOAD","downloadFromUrl","name","compressAsTask","compressFileDto","compressInDirectory","SpaceGuard","checkPermissions","logger","COMPRESS","compress","decompressAsTask","DECOMPRESS","decompress","copyAsTask","COPY","moveAsTask","MOVE","deleteAsTask","DELETE","getRecents","limit","filesRecents","search","filesSearch","Logger","FILES_ROUTE","OPERATION","passthrough","MAKE","UPLOAD","THUMBNAIL","ParseIntPipe","optional","ParseBoolPipe","UNLOCK_REQUEST","GET_SIZE","TASK_OPERATION","RECENTS","SEARCH","BASE"],"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
|
});
|