@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/services/files-search-manager.service.ts"],"sourcesContent":["
|
|
1
|
+
{"version":3,"sources":["../../../../../backend/src/applications/files/services/files-search-manager.service.ts"],"sourcesContent":["import { HttpException, HttpStatus, Injectable, Logger } from '@nestjs/common'\nimport fs from 'fs/promises'\nimport { Stats } from 'node:fs'\nimport path from 'node:path'\nimport { configuration } from '../../../configuration/config.environment'\nimport { SharesQueries } from '../../shares/services/shares-queries.service'\nimport { SpacesQueries } from '../../spaces/services/spaces-queries.service'\nimport { UserModel } from '../../users/models/user.model'\nimport { shareIndexPrefix, spaceIndexPrefix, userIndexPrefix } from '../constants/indexing'\nimport { SearchFilesDto } from '../dto/file-operations.dto'\nimport { FilesIndexer } from '../models/files-indexer'\nimport { FileContent } from '../schemas/file-content.interface'\nimport { dirName, fileName, getMimeType } from '../utils/files'\nimport { genRegexPositiveAndNegativeTerms } from '../utils/files-search'\nimport { FilesParser } from './files-parser.service'\n\n@Injectable()\nexport class FilesSearchManager {\n private readonly logger = new Logger(FilesSearchManager.name)\n\n constructor(\n private readonly filesIndexer: FilesIndexer,\n private readonly filesParser: FilesParser,\n private readonly spacesQueries: SpacesQueries,\n private readonly sharesQueries: SharesQueries\n ) {}\n\n async search(user: UserModel, search: SearchFilesDto): Promise<FileContent[]> {\n const [spaceIds, shareIds] = await Promise.all([this.spacesQueries.spaceIds(user.id), this.sharesQueries.shareIds(user.id, +user.isAdmin)])\n if (search.fullText) {\n if (!configuration.applications.files.contentIndexing) {\n throw new HttpException('Full-text search is disabled', HttpStatus.BAD_REQUEST)\n }\n return await this.searchFullText(user.id, spaceIds, shareIds, search.content, search.limit)\n } else {\n return await this.searchFileNames(user.id, spaceIds, shareIds, search.content, search.limit)\n }\n }\n\n private async searchFullText(userId: number, spaceIds: number[], shareIds: number[], search: string, limit: number): Promise<FileContent[]> {\n const indexNames = await this.filesIndexer.existingIndexes([\n `${userIndexPrefix}${userId}`,\n ...spaceIds.map((id) => `${spaceIndexPrefix}${id}`),\n ...shareIds.map((id) => `${shareIndexPrefix}${id}`)\n ])\n if (indexNames.length === 0) {\n return []\n }\n try {\n return await this.filesIndexer.searchRecords(indexNames, search, limit)\n } catch (e) {\n this.logger.error({ tag: this.searchFullText.name, msg: `${JSON.stringify(indexNames)} - ${search} : ${e}` })\n let msg: string\n if (/Invalid regular expression/.test(e.message)) {\n msg = 'SyntaxError (check special characters)'\n } else {\n msg = e.message\n }\n throw new HttpException(msg, HttpStatus.BAD_REQUEST)\n }\n }\n\n private async searchFileNames(userId: number, spaceIds: number[], shareIds: number[], search: string, limit: number): Promise<FileContent[]> {\n const fileContents: FileContent[] = []\n const regexpTerms = genRegexPositiveAndNegativeTerms(search)\n for await (const [_id, _type, paths] of this.filesParser.allPaths(userId, spaceIds, shareIds)) {\n for (const p of paths) {\n const regexBasePath = new RegExp(`^/?${p.realPath}/?`)\n if (!p.isDir) {\n const f = await this.analyzeFile(p.realPath, p.pathPrefix, regexBasePath, regexpTerms)\n if (f !== null) {\n fileContents.push(f)\n }\n continue\n }\n for await (const fileContent of this.parseFileNames(p.realPath, p.pathPrefix, regexBasePath, regexpTerms)) {\n fileContents.push(fileContent)\n if (fileContents.length >= limit) {\n return fileContents\n }\n }\n }\n }\n return fileContents\n }\n\n private async *parseFileNames(dir: string, pathPrefix: string, regexBasePath: RegExp, regexpTerms: RegExp): AsyncGenerator<FileContent> {\n try {\n for (const entry of await fs.readdir(dir, { withFileTypes: true })) {\n const realPath = path.join(entry.parentPath, entry.name)\n const fileContent = await this.analyzeFile(realPath, pathPrefix, regexBasePath, regexpTerms)\n if (fileContent !== null) {\n yield fileContent\n }\n if (entry.isDirectory()) {\n yield* this.parseFileNames(realPath, pathPrefix, regexBasePath, regexpTerms)\n }\n }\n } catch (e) {\n this.logger.warn({ tag: this.parseFileNames.name, msg: `unable to parse: ${dir} (${e})` })\n }\n }\n\n private async analyzeFile(realPath: string, pathPrefix: string, regexBasePath: RegExp, regexpTerms: RegExp): Promise<FileContent> {\n const filePath = realPath.replace(regexBasePath, '')\n if (!regexpTerms.test(filePath)) return null\n const stats: Stats = await fs.stat(realPath)\n return {\n id: stats.ino,\n path: path.join(pathPrefix, dirName(filePath)),\n name: fileName(filePath),\n mime: getMimeType(realPath, stats.isDirectory()),\n size: stats.size,\n mtime: stats.mtime.getTime()\n }\n }\n}\n"],"names":["FilesSearchManager","search","user","spaceIds","shareIds","Promise","all","spacesQueries","id","sharesQueries","isAdmin","fullText","configuration","applications","files","contentIndexing","HttpException","HttpStatus","BAD_REQUEST","searchFullText","content","limit","searchFileNames","userId","indexNames","filesIndexer","existingIndexes","userIndexPrefix","map","spaceIndexPrefix","shareIndexPrefix","length","searchRecords","e","logger","error","tag","name","msg","JSON","stringify","test","message","fileContents","regexpTerms","genRegexPositiveAndNegativeTerms","_id","_type","paths","filesParser","allPaths","p","regexBasePath","RegExp","realPath","isDir","f","analyzeFile","pathPrefix","push","fileContent","parseFileNames","dir","entry","fs","readdir","withFileTypes","path","join","parentPath","isDirectory","warn","filePath","replace","stats","stat","ino","dirName","fileName","mime","getMimeType","size","mtime","getTime","Logger"],"mappings":"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"}
|
|
@@ -1,8 +1,4 @@
|
|
|
1
|
-
|
|
2
|
-
* Copyright (C) 2012-2025 Johan Legrand <johan.legrand@sync-in.com>
|
|
3
|
-
* This file is part of Sync-in | The open source file sync and share solution
|
|
4
|
-
* See the LICENSE file for licensing details
|
|
5
|
-
*/ "use strict";
|
|
1
|
+
"use strict";
|
|
6
2
|
Object.defineProperty(exports, "__esModule", {
|
|
7
3
|
value: true
|
|
8
4
|
});
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"sources":["../../../../../backend/src/applications/files/services/files-search-manager.service.spec.ts"],"sourcesContent":["
|
|
1
|
+
{"version":3,"sources":["../../../../../backend/src/applications/files/services/files-search-manager.service.spec.ts"],"sourcesContent":["import { Test, TestingModule } from '@nestjs/testing'\nimport { SharesQueries } from '../../shares/services/shares-queries.service'\nimport { SpacesQueries } from '../../spaces/services/spaces-queries.service'\nimport { FilesIndexer } from '../models/files-indexer'\nimport { FilesParser } from './files-parser.service'\nimport { FilesSearchManager } from './files-search-manager.service'\n\ndescribe(FilesSearchManager.name, () => {\n let service: FilesSearchManager\n\n beforeAll(async () => {\n const module: TestingModule = await Test.createTestingModule({\n providers: [\n FilesSearchManager,\n { provide: FilesIndexer, useValue: {} },\n { provide: FilesParser, useValue: {} },\n {\n provide: SpacesQueries,\n useValue: {}\n },\n { provide: SharesQueries, useValue: {} }\n ]\n }).compile()\n\n service = module.get<FilesSearchManager>(FilesSearchManager)\n })\n\n it('should be defined', () => {\n expect(service).toBeDefined()\n })\n})\n"],"names":["describe","FilesSearchManager","name","service","beforeAll","module","Test","createTestingModule","providers","provide","FilesIndexer","useValue","FilesParser","SpacesQueries","SharesQueries","compile","get","it","expect","toBeDefined"],"mappings":";;;;yBAAoC;sCACN;sCACA;8BACD;oCACD;2CACO;AAEnCA,SAASC,6CAAkB,CAACC,IAAI,EAAE;IAChC,IAAIC;IAEJC,UAAU;QACR,MAAMC,SAAwB,MAAMC,aAAI,CAACC,mBAAmB,CAAC;YAC3DC,WAAW;gBACTP,6CAAkB;gBAClB;oBAAEQ,SAASC,0BAAY;oBAAEC,UAAU,CAAC;gBAAE;gBACtC;oBAAEF,SAASG,+BAAW;oBAAED,UAAU,CAAC;gBAAE;gBACrC;oBACEF,SAASI,mCAAa;oBACtBF,UAAU,CAAC;gBACb;gBACA;oBAAEF,SAASK,mCAAa;oBAAEH,UAAU,CAAC;gBAAE;aACxC;QACH,GAAGI,OAAO;QAEVZ,UAAUE,OAAOW,GAAG,CAAqBf,6CAAkB;IAC7D;IAEAgB,GAAG,qBAAqB;QACtBC,OAAOf,SAASgB,WAAW;IAC7B;AACF"}
|
|
@@ -1,8 +1,4 @@
|
|
|
1
|
-
|
|
2
|
-
* Copyright (C) 2012-2025 Johan Legrand <johan.legrand@sync-in.com>
|
|
3
|
-
* This file is part of Sync-in | The open source file sync and share solution
|
|
4
|
-
* See the LICENSE file for licensing details
|
|
5
|
-
*/ "use strict";
|
|
1
|
+
"use strict";
|
|
6
2
|
Object.defineProperty(exports, "__esModule", {
|
|
7
3
|
value: true
|
|
8
4
|
});
|
|
@@ -53,11 +49,23 @@ let FilesTasksManager = class FilesTasksManager {
|
|
|
53
49
|
props: {}
|
|
54
50
|
};
|
|
55
51
|
this.filesMethods[method](user, space, dto).then((data)=>{
|
|
56
|
-
this.logger.debug(
|
|
57
|
-
|
|
52
|
+
this.logger.debug({
|
|
53
|
+
tag: this.createTask.name,
|
|
54
|
+
msg: `${newTask.name} : ${method} done`
|
|
55
|
+
});
|
|
56
|
+
this.setTaskDone(cacheKey, _filetask.FileTaskStatus.SUCCESS, data).catch((e)=>this.logger.error({
|
|
57
|
+
tag: this.createTask.name,
|
|
58
|
+
msg: `${e}`
|
|
59
|
+
}));
|
|
58
60
|
}).catch((e)=>{
|
|
59
|
-
this.logger.error(
|
|
60
|
-
|
|
61
|
+
this.logger.error({
|
|
62
|
+
tag: this.createTask.name,
|
|
63
|
+
msg: `${newTask.name} : ${method} : ${e}`
|
|
64
|
+
});
|
|
65
|
+
this.setTaskDone(cacheKey, _filetask.FileTaskStatus.ERROR, e.message).catch((e)=>this.logger.error({
|
|
66
|
+
tag: this.createTask.name,
|
|
67
|
+
msg: `${e}`
|
|
68
|
+
}));
|
|
61
69
|
});
|
|
62
70
|
return newTask;
|
|
63
71
|
}
|
|
@@ -89,12 +97,21 @@ let FilesTasksManager = class FilesTasksManager {
|
|
|
89
97
|
if (task.props.compressInDirectory === false) {
|
|
90
98
|
// delete task file
|
|
91
99
|
const rPath = _nodepath.default.join(user.tasksPath, task.name);
|
|
92
|
-
(0, _files.removeFiles)(rPath).catch((e)=>this.logger.error(
|
|
100
|
+
(0, _files.removeFiles)(rPath).catch((e)=>this.logger.error({
|
|
101
|
+
tag: this.deleteTasks.name,
|
|
102
|
+
msg: `${e}`
|
|
103
|
+
}));
|
|
93
104
|
}
|
|
94
105
|
// clear watcher
|
|
95
|
-
this.stopWatch(key).catch((e)=>this.logger.error(
|
|
106
|
+
this.stopWatch(key).catch((e)=>this.logger.error({
|
|
107
|
+
tag: this.deleteTasks.name,
|
|
108
|
+
msg: `${e}`
|
|
109
|
+
}));
|
|
96
110
|
// remove from cache
|
|
97
|
-
this.cache.del(key).catch((e)=>this.logger.error(
|
|
111
|
+
this.cache.del(key).catch((e)=>this.logger.error({
|
|
112
|
+
tag: this.deleteTasks.name,
|
|
113
|
+
msg: `${e}`
|
|
114
|
+
}));
|
|
98
115
|
}
|
|
99
116
|
}
|
|
100
117
|
async downloadArchive(user, taskId, req, res) {
|
|
@@ -118,7 +135,10 @@ let FilesTasksManager = class FilesTasksManager {
|
|
|
118
135
|
try {
|
|
119
136
|
await this.cache.set(cacheKey, task, _cache.CACHE_TASK_TTL);
|
|
120
137
|
} catch (e) {
|
|
121
|
-
this.logger.error(
|
|
138
|
+
this.logger.error({
|
|
139
|
+
tag: this.storeTask.name,
|
|
140
|
+
msg: `${e}`
|
|
141
|
+
});
|
|
122
142
|
}
|
|
123
143
|
}
|
|
124
144
|
async setTaskDone(cacheKey, status, result) {
|
|
@@ -155,11 +175,17 @@ let FilesTasksManager = class FilesTasksManager {
|
|
|
155
175
|
}
|
|
156
176
|
async startWatch(space, taskType, rPath, taskPath) {
|
|
157
177
|
if (!space.task?.cacheKey || space.task.cacheKey in this.tasksWatcher) return;
|
|
158
|
-
this.logger.verbose(
|
|
178
|
+
this.logger.verbose({
|
|
179
|
+
tag: this.startWatch.name,
|
|
180
|
+
msg: `${space.task.cacheKey}`
|
|
181
|
+
});
|
|
159
182
|
this.updateTask(space.task.cacheKey, space.task?.props, {
|
|
160
183
|
name: (0, _files.fileName)(rPath),
|
|
161
184
|
path: taskPath
|
|
162
|
-
}).catch((e)=>this.logger.error(
|
|
185
|
+
}).catch((e)=>this.logger.error({
|
|
186
|
+
tag: this.startWatch.name,
|
|
187
|
+
msg: `${e}`
|
|
188
|
+
}));
|
|
163
189
|
switch(taskType){
|
|
164
190
|
case _operations.FILE_OPERATION.COMPRESS:
|
|
165
191
|
this.tasksWatcher[space.task.cacheKey] = setInterval(async ()=>this.updateCompressTask(space, rPath), this.watchInterval);
|
|
@@ -175,7 +201,10 @@ let FilesTasksManager = class FilesTasksManager {
|
|
|
175
201
|
this.tasksWatcher[space.task.cacheKey] = setInterval(async ()=>this.updateCopyMoveTask(space, rPath), this.watchInterval);
|
|
176
202
|
return;
|
|
177
203
|
default:
|
|
178
|
-
this.logger.warn(
|
|
204
|
+
this.logger.warn({
|
|
205
|
+
tag: this.startWatch.name,
|
|
206
|
+
msg: `unknown task type ${taskType}`
|
|
207
|
+
});
|
|
179
208
|
return;
|
|
180
209
|
}
|
|
181
210
|
}
|
|
@@ -188,27 +217,45 @@ let FilesTasksManager = class FilesTasksManager {
|
|
|
188
217
|
async updateCompressTask(space, rPath) {
|
|
189
218
|
try {
|
|
190
219
|
space.task.props.size = await (0, _files.fileSize)(rPath);
|
|
191
|
-
await this.updateTask(space.task.cacheKey, space.task.props).catch((e)=>this.logger.error(
|
|
220
|
+
await this.updateTask(space.task.cacheKey, space.task.props).catch((e)=>this.logger.error({
|
|
221
|
+
tag: this.updateCompressTask.name,
|
|
222
|
+
msg: `${e}`
|
|
223
|
+
}));
|
|
192
224
|
} catch (e) {
|
|
193
|
-
this.logger.error(
|
|
225
|
+
this.logger.error({
|
|
226
|
+
tag: this.updateCompressTask.name,
|
|
227
|
+
msg: `${e}`
|
|
228
|
+
});
|
|
194
229
|
await this.stopWatch(space.task.cacheKey);
|
|
195
230
|
}
|
|
196
231
|
}
|
|
197
232
|
async updateDecompressTask(space, rPath) {
|
|
198
233
|
try {
|
|
199
234
|
space.task.props = await (0, _files.countDirEntries)(rPath);
|
|
200
|
-
this.updateTask(space.task.cacheKey, space.task.props).catch((e)=>this.logger.error(
|
|
235
|
+
this.updateTask(space.task.cacheKey, space.task.props).catch((e)=>this.logger.error({
|
|
236
|
+
tag: this.updateDecompressTask.name,
|
|
237
|
+
msg: `${e}`
|
|
238
|
+
}));
|
|
201
239
|
} catch (e) {
|
|
202
|
-
this.logger.error(
|
|
240
|
+
this.logger.error({
|
|
241
|
+
tag: this.updateDecompressTask.name,
|
|
242
|
+
msg: `${e}`
|
|
243
|
+
});
|
|
203
244
|
await this.stopWatch(space.task.cacheKey);
|
|
204
245
|
}
|
|
205
246
|
}
|
|
206
247
|
async updateDownloadTask(space, rPath) {
|
|
207
248
|
try {
|
|
208
249
|
await this.calcSizeAndProgressTask(space, rPath);
|
|
209
|
-
this.updateTask(space.task.cacheKey, space.task.props).catch((e)=>this.logger.error(
|
|
250
|
+
this.updateTask(space.task.cacheKey, space.task.props).catch((e)=>this.logger.error({
|
|
251
|
+
tag: this.updateDownloadTask.name,
|
|
252
|
+
msg: `${e}`
|
|
253
|
+
}));
|
|
210
254
|
} catch (e) {
|
|
211
|
-
this.logger.error(
|
|
255
|
+
this.logger.error({
|
|
256
|
+
tag: this.updateDownloadTask.name,
|
|
257
|
+
msg: `${e}`
|
|
258
|
+
});
|
|
212
259
|
await this.stopWatch(space.task.cacheKey);
|
|
213
260
|
}
|
|
214
261
|
}
|
|
@@ -219,9 +266,15 @@ let FilesTasksManager = class FilesTasksManager {
|
|
|
219
266
|
} else {
|
|
220
267
|
await this.calcSizeAndProgressTask(space, rPath);
|
|
221
268
|
}
|
|
222
|
-
this.updateTask(space.task.cacheKey, space.task.props).catch((e)=>this.logger.error(
|
|
269
|
+
this.updateTask(space.task.cacheKey, space.task.props).catch((e)=>this.logger.error({
|
|
270
|
+
tag: this.updateCopyMoveTask.name,
|
|
271
|
+
msg: `${e}`
|
|
272
|
+
}));
|
|
223
273
|
} catch (e) {
|
|
224
|
-
this.logger.error(
|
|
274
|
+
this.logger.error({
|
|
275
|
+
tag: this.updateCopyMoveTask.name,
|
|
276
|
+
msg: `${e}`
|
|
277
|
+
});
|
|
225
278
|
await this.stopWatch(space.task.cacheKey);
|
|
226
279
|
}
|
|
227
280
|
}
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"sources":["../../../../../backend/src/applications/files/services/files-tasks-manager.service.ts"],"sourcesContent":["/*\n * Copyright (C) 2012-2025 Johan Legrand <johan.legrand@sync-in.com>\n * This file is part of Sync-in | The open source file sync and share solution\n * See the LICENSE file for licensing details\n */\n\nimport { HttpException, HttpStatus, Injectable, Logger, StreamableFile } from '@nestjs/common'\nimport { FastifyReply } from 'fastify'\nimport crypto from 'node:crypto'\nimport path from 'node:path'\nimport { setTimeout } from 'node:timers/promises'\nimport { FastifyAuthenticatedRequest } from '../../../authentication/interfaces/auth-request.interface'\n\nimport { currentTimeStamp } from '../../../common/shared'\nimport { Cache } from '../../../infrastructure/cache/services/cache.service'\nimport { SpaceEnv } from '../../spaces/models/space-env.model'\nimport { UserModel } from '../../users/models/user.model'\nimport { CACHE_TASK_PREFIX, CACHE_TASK_TTL } from '../constants/cache'\nimport { FILE_OPERATION } from '../constants/operations'\nimport { FileTaskEvent } from '../events/file-task-event'\nimport { FileTask, FileTaskProps, FileTaskStatus } from '../models/file-task'\nimport { countDirEntries, dirName, fileName, fileSize, isPathIsDir, removeFiles } from '../utils/files'\nimport { SendFile } from '../utils/send-file'\nimport { FilesMethods } from './files-methods.service'\n\n@Injectable()\nexport class FilesTasksManager {\n // task cache key = `ftask-$(userId}-${taskId}` => FileTask\n private readonly logger = new Logger(FilesTasksManager.name)\n private readonly watchInterval = 1000\n private tasksWatcher: Record<string, any> = {}\n\n constructor(\n private readonly cache: Cache,\n private readonly filesMethods: FilesMethods\n ) {\n FileTaskEvent.on('startWatch', async (space: SpaceEnv, taskType: FILE_OPERATION, rPath: string) =>\n this.startWatch(space, taskType, rPath, dirName(space.url))\n )\n }\n\n static getCacheKey(userId: number, taskId?: string): string {\n return `${CACHE_TASK_PREFIX}-${userId}-${taskId || '*'}`\n }\n\n async createTask(type: FILE_OPERATION, user: UserModel, space: SpaceEnv, dto: any, method: string): Promise<FileTask> {\n const taskId: string = crypto.randomUUID()\n const cacheKey = FilesTasksManager.getCacheKey(user.id, taskId)\n const newTask = new FileTask(taskId, type, dirName(space.url), fileName(space.url))\n await this.storeTask(cacheKey, newTask)\n space.task = { cacheKey: cacheKey, props: {} }\n this.filesMethods[method](user, space, dto)\n .then((data: any) => {\n this.logger.debug(`${this.createTask.name} - ${newTask.name} : ${method} done`)\n this.setTaskDone(cacheKey, FileTaskStatus.SUCCESS, data).catch((e: Error) => this.logger.error(`${this.createTask.name} - ${e}`))\n })\n .catch((e: HttpException | any) => {\n this.logger.error(`${this.createTask.name} - ${newTask.name} : ${method} : ${e}`)\n this.setTaskDone(cacheKey, FileTaskStatus.ERROR, e.message).catch((e: Error) => this.logger.error(`${this.createTask.name} - ${e}`))\n })\n return newTask\n }\n\n async getTasks(userId: number, taskId?: string): Promise<FileTask | FileTask[]> {\n const cacheKey = FilesTasksManager.getCacheKey(userId, taskId)\n if (taskId) {\n const task: FileTask = await this.cache.get(cacheKey)\n if (task) return task\n throw new HttpException('Task not found', HttpStatus.NOT_FOUND)\n } else {\n const keys = await this.cache.keys(cacheKey)\n return keys.length ? await this.cache.mget(keys) : []\n }\n }\n\n async deleteTasks(user: UserModel, taskId?: string): Promise<void> {\n const cacheKey = FilesTasksManager.getCacheKey(user.id, taskId)\n let keys: string[]\n if (taskId) {\n keys = [cacheKey]\n } else {\n keys = await this.cache.keys(cacheKey)\n }\n if (!keys.length) return\n for (const key of keys) {\n const task: FileTask = await this.cache.get(key)\n if (!task || task.status === FileTaskStatus.PENDING) continue\n if (task.props.compressInDirectory === false) {\n // delete task file\n const rPath = path.join(user.tasksPath, task.name)\n removeFiles(rPath).catch((e: Error) => this.logger.error(`${this.deleteTasks.name} - ${e}`))\n }\n // clear watcher\n this.stopWatch(key).catch((e: Error) => this.logger.error(`${this.deleteTasks.name} - ${e}`))\n // remove from cache\n this.cache.del(key).catch((e: Error) => this.logger.error(`${this.deleteTasks.name} - ${e}`))\n }\n }\n\n async downloadArchive(user: UserModel, taskId: string, req: FastifyAuthenticatedRequest, res: FastifyReply): Promise<StreamableFile> {\n const cacheKey = FilesTasksManager.getCacheKey(user.id, taskId)\n const task: FileTask = await this.cache.get(cacheKey)\n if (!task || task.status !== FileTaskStatus.SUCCESS || task.props.compressInDirectory !== false) {\n throw new HttpException('Not applicable', HttpStatus.BAD_REQUEST)\n }\n const rPath = path.join(user.tasksPath, task.name)\n const sendFile = new SendFile(rPath)\n try {\n await sendFile.checks()\n } catch (e) {\n throw new HttpException(e.message, e.httpCode)\n }\n return await sendFile.stream(req, res)\n }\n\n private async storeTask(cacheKey: string, task: FileTask) {\n task.startedAt = currentTimeStamp(null, true)\n task.status = FileTaskStatus.PENDING\n try {\n await this.cache.set(cacheKey, task, CACHE_TASK_TTL)\n } catch (e) {\n this.logger.error(`${this.storeTask.name} - ${e}`)\n }\n }\n\n private async setTaskDone(cacheKey: string, status: FileTaskStatus, result: any): Promise<void> {\n const task: FileTask = await this.cache.get(cacheKey)\n if (task) {\n task.status = status\n task.endedAt = currentTimeStamp(null, true)\n if (result) {\n if (typeof result === 'string') {\n task.result = result\n } else {\n Object.assign(task, result)\n }\n }\n await this.cache.set(cacheKey, task, CACHE_TASK_TTL)\n }\n await this.stopWatch(cacheKey)\n }\n\n private async updateTask(cacheKey: string, props?: FileTaskProps, task?: Partial<FileTask>): Promise<void> {\n let ftask: FileTask = await this.cache.get(cacheKey)\n if (ftask) {\n if (task) ftask = { ...ftask, ...task }\n if (props) ftask.props = { ...ftask.props, ...props }\n await this.cache.set(cacheKey, ftask, CACHE_TASK_TTL)\n } else {\n await this.stopWatch(cacheKey)\n }\n }\n\n private async startWatch(space: SpaceEnv, taskType: FILE_OPERATION, rPath: string, taskPath?: string): Promise<void> {\n if (!space.task?.cacheKey || space.task.cacheKey in this.tasksWatcher) return\n this.logger.verbose(`${this.startWatch.name} - ${space.task.cacheKey}`)\n this.updateTask(space.task.cacheKey, space.task?.props, {\n name: fileName(rPath),\n path: taskPath\n }).catch((e: Error) => this.logger.error(`${this.startWatch.name} - ${e}`))\n switch (taskType) {\n case FILE_OPERATION.COMPRESS:\n this.tasksWatcher[space.task.cacheKey] = setInterval(async () => this.updateCompressTask(space, rPath), this.watchInterval)\n return\n case FILE_OPERATION.DECOMPRESS:\n this.tasksWatcher[space.task.cacheKey] = setInterval(async () => this.updateDecompressTask(space, rPath), this.watchInterval)\n return\n case FILE_OPERATION.DOWNLOAD:\n this.tasksWatcher[space.task.cacheKey] = setInterval(async () => this.updateDownloadTask(space, rPath), this.watchInterval)\n return\n case FILE_OPERATION.COPY:\n case FILE_OPERATION.MOVE:\n this.tasksWatcher[space.task.cacheKey] = setInterval(async () => this.updateCopyMoveTask(space, rPath), this.watchInterval)\n return\n default:\n this.logger.warn(`${this.startWatch.name} - unknown task type ${taskType}`)\n return\n }\n }\n\n private async stopWatch(cacheKey: string): Promise<void> {\n if (!(cacheKey in this.tasksWatcher)) return\n await setTimeout(this.watchInterval)\n clearInterval(this.tasksWatcher[cacheKey])\n delete this.tasksWatcher[cacheKey]\n }\n\n private async updateCompressTask(space: SpaceEnv, rPath: string): Promise<void> {\n try {\n space.task.props.size = await fileSize(rPath)\n await this.updateTask(space.task.cacheKey, space.task.props).catch((e: Error) => this.logger.error(`${this.updateCompressTask.name} - ${e}`))\n } catch (e) {\n this.logger.error(`${this.updateCompressTask.name} - ${e}`)\n await this.stopWatch(space.task.cacheKey)\n }\n }\n\n private async updateDecompressTask(space: SpaceEnv, rPath: string): Promise<void> {\n try {\n space.task.props = await countDirEntries(rPath)\n this.updateTask(space.task.cacheKey, space.task.props).catch((e: Error) => this.logger.error(`${this.updateDecompressTask.name} - ${e}`))\n } catch (e) {\n this.logger.error(`${this.updateDecompressTask.name} - ${e}`)\n await this.stopWatch(space.task.cacheKey)\n }\n }\n\n private async updateDownloadTask(space: SpaceEnv, rPath: string): Promise<void> {\n try {\n await this.calcSizeAndProgressTask(space, rPath)\n this.updateTask(space.task.cacheKey, space.task.props).catch((e: Error) => this.logger.error(`${this.updateDownloadTask.name} - ${e}`))\n } catch (e) {\n this.logger.error(`${this.updateDownloadTask.name} - ${e}`)\n await this.stopWatch(space.task.cacheKey)\n }\n }\n\n private async updateCopyMoveTask(space: SpaceEnv, rPath: string): Promise<void> {\n try {\n if (await isPathIsDir(rPath)) {\n space.task.props = await countDirEntries(rPath)\n } else {\n await this.calcSizeAndProgressTask(space, rPath)\n }\n this.updateTask(space.task.cacheKey, space.task.props).catch((e: Error) => this.logger.error(`${this.updateCopyMoveTask.name} - ${e}`))\n } catch (e) {\n this.logger.error(`${this.updateCopyMoveTask.name} - ${e}`)\n await this.stopWatch(space.task.cacheKey)\n }\n }\n\n private async calcSizeAndProgressTask(space: SpaceEnv, rPath: string) {\n space.task.props.size = await fileSize(rPath)\n if (space.task.props.totalSize) {\n space.task.props.progress = (100 * space.task.props.size) / space.task.props.totalSize\n }\n }\n}\n"],"names":["FilesTasksManager","getCacheKey","userId","taskId","CACHE_TASK_PREFIX","createTask","type","user","space","dto","method","crypto","randomUUID","cacheKey","id","newTask","FileTask","dirName","url","fileName","storeTask","task","props","filesMethods","then","data","logger","debug","name","setTaskDone","FileTaskStatus","SUCCESS","catch","e","error","ERROR","message","getTasks","cache","get","HttpException","HttpStatus","NOT_FOUND","keys","length","mget","deleteTasks","key","status","PENDING","compressInDirectory","rPath","path","join","tasksPath","removeFiles","stopWatch","del","downloadArchive","req","res","BAD_REQUEST","sendFile","SendFile","checks","httpCode","stream","startedAt","currentTimeStamp","set","CACHE_TASK_TTL","result","endedAt","Object","assign","updateTask","ftask","startWatch","taskType","taskPath","tasksWatcher","verbose","FILE_OPERATION","COMPRESS","setInterval","updateCompressTask","watchInterval","DECOMPRESS","updateDecompressTask","DOWNLOAD","updateDownloadTask","COPY","MOVE","updateCopyMoveTask","warn","setTimeout","clearInterval","size","fileSize","countDirEntries","calcSizeAndProgressTask","isPathIsDir","totalSize","progress","Logger","FileTaskEvent","on"],"mappings":"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"}
|
|
1
|
+
{"version":3,"sources":["../../../../../backend/src/applications/files/services/files-tasks-manager.service.ts"],"sourcesContent":["import { HttpException, HttpStatus, Injectable, Logger, StreamableFile } from '@nestjs/common'\nimport { FastifyReply } from 'fastify'\nimport crypto from 'node:crypto'\nimport path from 'node:path'\nimport { setTimeout } from 'node:timers/promises'\nimport { FastifyAuthenticatedRequest } from '../../../authentication/interfaces/auth-request.interface'\n\nimport { currentTimeStamp } from '../../../common/shared'\nimport { Cache } from '../../../infrastructure/cache/services/cache.service'\nimport { SpaceEnv } from '../../spaces/models/space-env.model'\nimport { UserModel } from '../../users/models/user.model'\nimport { CACHE_TASK_PREFIX, CACHE_TASK_TTL } from '../constants/cache'\nimport { FILE_OPERATION } from '../constants/operations'\nimport { FileTaskEvent } from '../events/file-task-event'\nimport { FileTask, FileTaskProps, FileTaskStatus } from '../models/file-task'\nimport { countDirEntries, dirName, fileName, fileSize, isPathIsDir, removeFiles } from '../utils/files'\nimport { SendFile } from '../utils/send-file'\nimport { FilesMethods } from './files-methods.service'\n\n@Injectable()\nexport class FilesTasksManager {\n // task cache key = `ftask-$(userId}-${taskId}` => FileTask\n private readonly logger = new Logger(FilesTasksManager.name)\n private readonly watchInterval = 1000\n private tasksWatcher: Record<string, any> = {}\n\n constructor(\n private readonly cache: Cache,\n private readonly filesMethods: FilesMethods\n ) {\n FileTaskEvent.on('startWatch', async (space: SpaceEnv, taskType: FILE_OPERATION, rPath: string) =>\n this.startWatch(space, taskType, rPath, dirName(space.url))\n )\n }\n\n static getCacheKey(userId: number, taskId?: string): string {\n return `${CACHE_TASK_PREFIX}-${userId}-${taskId || '*'}`\n }\n\n async createTask(type: FILE_OPERATION, user: UserModel, space: SpaceEnv, dto: any, method: string): Promise<FileTask> {\n const taskId: string = crypto.randomUUID()\n const cacheKey = FilesTasksManager.getCacheKey(user.id, taskId)\n const newTask = new FileTask(taskId, type, dirName(space.url), fileName(space.url))\n await this.storeTask(cacheKey, newTask)\n space.task = { cacheKey: cacheKey, props: {} }\n this.filesMethods[method](user, space, dto)\n .then((data: any) => {\n this.logger.debug({ tag: this.createTask.name, msg: `${newTask.name} : ${method} done` })\n this.setTaskDone(cacheKey, FileTaskStatus.SUCCESS, data).catch((e: Error) => this.logger.error({ tag: this.createTask.name, msg: `${e}` }))\n })\n .catch((e: HttpException | any) => {\n this.logger.error({ tag: this.createTask.name, msg: `${newTask.name} : ${method} : ${e}` })\n this.setTaskDone(cacheKey, FileTaskStatus.ERROR, e.message).catch((e: Error) => this.logger.error({ tag: this.createTask.name, msg: `${e}` }))\n })\n return newTask\n }\n\n async getTasks(userId: number, taskId?: string): Promise<FileTask | FileTask[]> {\n const cacheKey = FilesTasksManager.getCacheKey(userId, taskId)\n if (taskId) {\n const task: FileTask = await this.cache.get(cacheKey)\n if (task) return task\n throw new HttpException('Task not found', HttpStatus.NOT_FOUND)\n } else {\n const keys = await this.cache.keys(cacheKey)\n return keys.length ? await this.cache.mget(keys) : []\n }\n }\n\n async deleteTasks(user: UserModel, taskId?: string): Promise<void> {\n const cacheKey = FilesTasksManager.getCacheKey(user.id, taskId)\n let keys: string[]\n if (taskId) {\n keys = [cacheKey]\n } else {\n keys = await this.cache.keys(cacheKey)\n }\n if (!keys.length) return\n for (const key of keys) {\n const task: FileTask = await this.cache.get(key)\n if (!task || task.status === FileTaskStatus.PENDING) continue\n if (task.props.compressInDirectory === false) {\n // delete task file\n const rPath = path.join(user.tasksPath, task.name)\n removeFiles(rPath).catch((e: Error) => this.logger.error({ tag: this.deleteTasks.name, msg: `${e}` }))\n }\n // clear watcher\n this.stopWatch(key).catch((e: Error) => this.logger.error({ tag: this.deleteTasks.name, msg: `${e}` }))\n // remove from cache\n this.cache.del(key).catch((e: Error) => this.logger.error({ tag: this.deleteTasks.name, msg: `${e}` }))\n }\n }\n\n async downloadArchive(user: UserModel, taskId: string, req: FastifyAuthenticatedRequest, res: FastifyReply): Promise<StreamableFile> {\n const cacheKey = FilesTasksManager.getCacheKey(user.id, taskId)\n const task: FileTask = await this.cache.get(cacheKey)\n if (!task || task.status !== FileTaskStatus.SUCCESS || task.props.compressInDirectory !== false) {\n throw new HttpException('Not applicable', HttpStatus.BAD_REQUEST)\n }\n const rPath = path.join(user.tasksPath, task.name)\n const sendFile = new SendFile(rPath)\n try {\n await sendFile.checks()\n } catch (e) {\n throw new HttpException(e.message, e.httpCode)\n }\n return await sendFile.stream(req, res)\n }\n\n private async storeTask(cacheKey: string, task: FileTask) {\n task.startedAt = currentTimeStamp(null, true)\n task.status = FileTaskStatus.PENDING\n try {\n await this.cache.set(cacheKey, task, CACHE_TASK_TTL)\n } catch (e) {\n this.logger.error({ tag: this.storeTask.name, msg: `${e}` })\n }\n }\n\n private async setTaskDone(cacheKey: string, status: FileTaskStatus, result: any): Promise<void> {\n const task: FileTask = await this.cache.get(cacheKey)\n if (task) {\n task.status = status\n task.endedAt = currentTimeStamp(null, true)\n if (result) {\n if (typeof result === 'string') {\n task.result = result\n } else {\n Object.assign(task, result)\n }\n }\n await this.cache.set(cacheKey, task, CACHE_TASK_TTL)\n }\n await this.stopWatch(cacheKey)\n }\n\n private async updateTask(cacheKey: string, props?: FileTaskProps, task?: Partial<FileTask>): Promise<void> {\n let ftask: FileTask = await this.cache.get(cacheKey)\n if (ftask) {\n if (task) ftask = { ...ftask, ...task }\n if (props) ftask.props = { ...ftask.props, ...props }\n await this.cache.set(cacheKey, ftask, CACHE_TASK_TTL)\n } else {\n await this.stopWatch(cacheKey)\n }\n }\n\n private async startWatch(space: SpaceEnv, taskType: FILE_OPERATION, rPath: string, taskPath?: string): Promise<void> {\n if (!space.task?.cacheKey || space.task.cacheKey in this.tasksWatcher) return\n this.logger.verbose({ tag: this.startWatch.name, msg: `${space.task.cacheKey}` })\n this.updateTask(space.task.cacheKey, space.task?.props, {\n name: fileName(rPath),\n path: taskPath\n }).catch((e: Error) => this.logger.error({ tag: this.startWatch.name, msg: `${e}` }))\n switch (taskType) {\n case FILE_OPERATION.COMPRESS:\n this.tasksWatcher[space.task.cacheKey] = setInterval(async () => this.updateCompressTask(space, rPath), this.watchInterval)\n return\n case FILE_OPERATION.DECOMPRESS:\n this.tasksWatcher[space.task.cacheKey] = setInterval(async () => this.updateDecompressTask(space, rPath), this.watchInterval)\n return\n case FILE_OPERATION.DOWNLOAD:\n this.tasksWatcher[space.task.cacheKey] = setInterval(async () => this.updateDownloadTask(space, rPath), this.watchInterval)\n return\n case FILE_OPERATION.COPY:\n case FILE_OPERATION.MOVE:\n this.tasksWatcher[space.task.cacheKey] = setInterval(async () => this.updateCopyMoveTask(space, rPath), this.watchInterval)\n return\n default:\n this.logger.warn({ tag: this.startWatch.name, msg: `unknown task type ${taskType}` })\n return\n }\n }\n\n private async stopWatch(cacheKey: string): Promise<void> {\n if (!(cacheKey in this.tasksWatcher)) return\n await setTimeout(this.watchInterval)\n clearInterval(this.tasksWatcher[cacheKey])\n delete this.tasksWatcher[cacheKey]\n }\n\n private async updateCompressTask(space: SpaceEnv, rPath: string): Promise<void> {\n try {\n space.task.props.size = await fileSize(rPath)\n await this.updateTask(space.task.cacheKey, space.task.props).catch((e: Error) =>\n this.logger.error({ tag: this.updateCompressTask.name, msg: `${e}` })\n )\n } catch (e) {\n this.logger.error({ tag: this.updateCompressTask.name, msg: `${e}` })\n await this.stopWatch(space.task.cacheKey)\n }\n }\n\n private async updateDecompressTask(space: SpaceEnv, rPath: string): Promise<void> {\n try {\n space.task.props = await countDirEntries(rPath)\n this.updateTask(space.task.cacheKey, space.task.props).catch((e: Error) =>\n this.logger.error({ tag: this.updateDecompressTask.name, msg: `${e}` })\n )\n } catch (e) {\n this.logger.error({ tag: this.updateDecompressTask.name, msg: `${e}` })\n await this.stopWatch(space.task.cacheKey)\n }\n }\n\n private async updateDownloadTask(space: SpaceEnv, rPath: string): Promise<void> {\n try {\n await this.calcSizeAndProgressTask(space, rPath)\n this.updateTask(space.task.cacheKey, space.task.props).catch((e: Error) =>\n this.logger.error({ tag: this.updateDownloadTask.name, msg: `${e}` })\n )\n } catch (e) {\n this.logger.error({ tag: this.updateDownloadTask.name, msg: `${e}` })\n await this.stopWatch(space.task.cacheKey)\n }\n }\n\n private async updateCopyMoveTask(space: SpaceEnv, rPath: string): Promise<void> {\n try {\n if (await isPathIsDir(rPath)) {\n space.task.props = await countDirEntries(rPath)\n } else {\n await this.calcSizeAndProgressTask(space, rPath)\n }\n this.updateTask(space.task.cacheKey, space.task.props).catch((e: Error) =>\n this.logger.error({ tag: this.updateCopyMoveTask.name, msg: `${e}` })\n )\n } catch (e) {\n this.logger.error({ tag: this.updateCopyMoveTask.name, msg: `${e}` })\n await this.stopWatch(space.task.cacheKey)\n }\n }\n\n private async calcSizeAndProgressTask(space: SpaceEnv, rPath: string) {\n space.task.props.size = await fileSize(rPath)\n if (space.task.props.totalSize) {\n space.task.props.progress = (100 * space.task.props.size) / space.task.props.totalSize\n }\n }\n}\n"],"names":["FilesTasksManager","getCacheKey","userId","taskId","CACHE_TASK_PREFIX","createTask","type","user","space","dto","method","crypto","randomUUID","cacheKey","id","newTask","FileTask","dirName","url","fileName","storeTask","task","props","filesMethods","then","data","logger","debug","tag","name","msg","setTaskDone","FileTaskStatus","SUCCESS","catch","e","error","ERROR","message","getTasks","cache","get","HttpException","HttpStatus","NOT_FOUND","keys","length","mget","deleteTasks","key","status","PENDING","compressInDirectory","rPath","path","join","tasksPath","removeFiles","stopWatch","del","downloadArchive","req","res","BAD_REQUEST","sendFile","SendFile","checks","httpCode","stream","startedAt","currentTimeStamp","set","CACHE_TASK_TTL","result","endedAt","Object","assign","updateTask","ftask","startWatch","taskType","taskPath","tasksWatcher","verbose","FILE_OPERATION","COMPRESS","setInterval","updateCompressTask","watchInterval","DECOMPRESS","updateDecompressTask","DOWNLOAD","updateDownloadTask","COPY","MOVE","updateCopyMoveTask","warn","setTimeout","clearInterval","size","fileSize","countDirEntries","calcSizeAndProgressTask","isPathIsDir","totalSize","progress","Logger","FileTaskEvent","on"],"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/services/files-tasks-manager.service.spec.ts"],"sourcesContent":["
|
|
1
|
+
{"version":3,"sources":["../../../../../backend/src/applications/files/services/files-tasks-manager.service.spec.ts"],"sourcesContent":["import { Test, TestingModule } from '@nestjs/testing'\nimport { Cache } from '../../../infrastructure/cache/services/cache.service'\nimport { SpacesManager } from '../../spaces/services/spaces-manager.service'\nimport { FilesManager } from './files-manager.service'\nimport { FilesMethods } from './files-methods.service'\nimport { FilesTasksManager } from './files-tasks-manager.service'\n\ndescribe(FilesTasksManager.name, () => {\n let filesTasksManager: FilesTasksManager\n\n beforeAll(async () => {\n const module: TestingModule = await Test.createTestingModule({\n providers: [\n FilesTasksManager,\n { provide: FilesMethods, useValue: {} },\n { provide: FilesManager, useValue: {} },\n { provide: SpacesManager, useValue: {} },\n {\n provide: Cache,\n useValue: {}\n }\n ]\n }).compile()\n\n filesTasksManager = module.get<FilesTasksManager>(FilesTasksManager)\n })\n\n it('should be defined', () => {\n expect(filesTasksManager).toBeDefined()\n })\n})\n"],"names":["describe","FilesTasksManager","name","filesTasksManager","beforeAll","module","Test","createTestingModule","providers","provide","FilesMethods","useValue","FilesManager","SpacesManager","Cache","compile","get","it","expect","toBeDefined"],"mappings":";;;;yBAAoC;8BACd;sCACQ;qCACD;qCACA;0CACK;AAElCA,SAASC,2CAAiB,CAACC,IAAI,EAAE;IAC/B,IAAIC;IAEJC,UAAU;QACR,MAAMC,SAAwB,MAAMC,aAAI,CAACC,mBAAmB,CAAC;YAC3DC,WAAW;gBACTP,2CAAiB;gBACjB;oBAAEQ,SAASC,iCAAY;oBAAEC,UAAU,CAAC;gBAAE;gBACtC;oBAAEF,SAASG,iCAAY;oBAAED,UAAU,CAAC;gBAAE;gBACtC;oBAAEF,SAASI,mCAAa;oBAAEF,UAAU,CAAC;gBAAE;gBACvC;oBACEF,SAASK,mBAAK;oBACdH,UAAU,CAAC;gBACb;aACD;QACH,GAAGI,OAAO;QAEVZ,oBAAoBE,OAAOW,GAAG,CAAoBf,2CAAiB;IACrE;IAEAgB,GAAG,qBAAqB;QACtBC,OAAOf,mBAAmBgB,WAAW;IACvC;AACF"}
|
|
@@ -1,8 +1,4 @@
|
|
|
1
|
-
|
|
2
|
-
* Copyright (C) 2012-2025 Johan Legrand <johan.legrand@sync-in.com>
|
|
3
|
-
* This file is part of Sync-in | The open source file sync and share solution
|
|
4
|
-
* See the LICENSE file for licensing details
|
|
5
|
-
*/ "use strict";
|
|
1
|
+
"use strict";
|
|
6
2
|
Object.defineProperty(exports, "__esModule", {
|
|
7
3
|
value: true
|
|
8
4
|
});
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"sources":["../../../../../../../backend/src/applications/files/utils/doc-textify/adapters/excel.ts"],"sourcesContent":["
|
|
1
|
+
{"version":3,"sources":["../../../../../../../backend/src/applications/files/utils/doc-textify/adapters/excel.ts"],"sourcesContent":["import { promisify } from 'node:util'\nimport sax from 'sax'\nimport { open as openZip, Options, ZipFile } from 'yauzl'\nimport { DocTextifyOptions } from '../interfaces/doc-textify.interfaces'\n\nconst openZipAsync: (path: string, options: Options) => Promise<ZipFile> = promisify(openZip)\n\n/**\n * Parse XLSX files\n */\nexport async function parseExcel(filePath: string, options: DocTextifyOptions): Promise<string> {\n const sheetRegex = /^xl\\/worksheets\\/sheet\\d+\\.xml$/\n const sharedPath = 'xl/sharedStrings.xml'\n const texts: string[] = []\n let hasSheet = false\n\n // Open the ZIP in lazyEntries mode\n const zipFile = await openZipAsync(filePath, { lazyEntries: true })\n\n return new Promise<string>((resolve, reject) => {\n zipFile.readEntry()\n\n zipFile.on('entry', (entry) => {\n const path = entry.fileName\n\n // Only process sheets and sharedStrings\n if (!sheetRegex.test(path) && path !== sharedPath) {\n zipFile.readEntry() // <–– call directly, no unused-expression\n return\n }\n\n if (sheetRegex.test(path)) {\n hasSheet = true\n }\n\n zipFile.openReadStream(entry, (err, readStream) => {\n if (err) {\n zipFile.close()\n return reject(err)\n }\n\n const parser = sax.createStream(true)\n let buffer = ''\n\n parser.on('error', (parseErr) => {\n readStream.destroy()\n zipFile.close()\n reject(parseErr)\n })\n\n parser.on('opentag', (node) => {\n if (node.name === 't') buffer = ''\n })\n parser.on('text', (txt) => {\n buffer += txt\n })\n parser.on('closetag', (name) => {\n if (name === 't') {\n texts.push(buffer)\n }\n })\n\n readStream\n .on('error', (streamErr) => {\n zipFile.close()\n reject(streamErr)\n })\n .on('end', () => {\n zipFile.readEntry()\n })\n .pipe(parser)\n })\n })\n\n zipFile.on('end', () => {\n zipFile.close()\n // No sheets found → corrupted file\n if (!hasSheet) {\n return reject(new Error('file seems to be corrupted'))\n }\n resolve(texts.join(options.newlineDelimiter))\n })\n\n zipFile.on('error', (zipErr) => {\n zipFile.close()\n reject(zipErr)\n })\n })\n}\n"],"names":["parseExcel","openZipAsync","promisify","openZip","filePath","options","sheetRegex","sharedPath","texts","hasSheet","zipFile","lazyEntries","Promise","resolve","reject","readEntry","on","entry","path","fileName","test","openReadStream","err","readStream","close","parser","sax","createStream","buffer","parseErr","destroy","node","name","txt","push","streamErr","pipe","Error","join","newlineDelimiter","zipErr"],"mappings":";;;;+BAUsBA;;;eAAAA;;;0BAVI;4DACV;uBACkC;;;;;;AAGlD,MAAMC,eAAqEC,IAAAA,mBAAS,EAACC,WAAO;AAKrF,eAAeH,WAAWI,QAAgB,EAAEC,OAA0B;IAC3E,MAAMC,aAAa;IACnB,MAAMC,aAAa;IACnB,MAAMC,QAAkB,EAAE;IAC1B,IAAIC,WAAW;IAEf,mCAAmC;IACnC,MAAMC,UAAU,MAAMT,aAAaG,UAAU;QAAEO,aAAa;IAAK;IAEjE,OAAO,IAAIC,QAAgB,CAACC,SAASC;QACnCJ,QAAQK,SAAS;QAEjBL,QAAQM,EAAE,CAAC,SAAS,CAACC;YACnB,MAAMC,OAAOD,MAAME,QAAQ;YAE3B,wCAAwC;YACxC,IAAI,CAACb,WAAWc,IAAI,CAACF,SAASA,SAASX,YAAY;gBACjDG,QAAQK,SAAS,IAAG,0CAA0C;gBAC9D;YACF;YAEA,IAAIT,WAAWc,IAAI,CAACF,OAAO;gBACzBT,WAAW;YACb;YAEAC,QAAQW,cAAc,CAACJ,OAAO,CAACK,KAAKC;gBAClC,IAAID,KAAK;oBACPZ,QAAQc,KAAK;oBACb,OAAOV,OAAOQ;gBAChB;gBAEA,MAAMG,SAASC,YAAG,CAACC,YAAY,CAAC;gBAChC,IAAIC,SAAS;gBAEbH,OAAOT,EAAE,CAAC,SAAS,CAACa;oBAClBN,WAAWO,OAAO;oBAClBpB,QAAQc,KAAK;oBACbV,OAAOe;gBACT;gBAEAJ,OAAOT,EAAE,CAAC,WAAW,CAACe;oBACpB,IAAIA,KAAKC,IAAI,KAAK,KAAKJ,SAAS;gBAClC;gBACAH,OAAOT,EAAE,CAAC,QAAQ,CAACiB;oBACjBL,UAAUK;gBACZ;gBACAR,OAAOT,EAAE,CAAC,YAAY,CAACgB;oBACrB,IAAIA,SAAS,KAAK;wBAChBxB,MAAM0B,IAAI,CAACN;oBACb;gBACF;gBAEAL,WACGP,EAAE,CAAC,SAAS,CAACmB;oBACZzB,QAAQc,KAAK;oBACbV,OAAOqB;gBACT,GACCnB,EAAE,CAAC,OAAO;oBACTN,QAAQK,SAAS;gBACnB,GACCqB,IAAI,CAACX;YACV;QACF;QAEAf,QAAQM,EAAE,CAAC,OAAO;YAChBN,QAAQc,KAAK;YACb,mCAAmC;YACnC,IAAI,CAACf,UAAU;gBACb,OAAOK,OAAO,IAAIuB,MAAM;YAC1B;YACAxB,QAAQL,MAAM8B,IAAI,CAACjC,QAAQkC,gBAAgB;QAC7C;QAEA7B,QAAQM,EAAE,CAAC,SAAS,CAACwB;YACnB9B,QAAQc,KAAK;YACbV,OAAO0B;QACT;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
|
-
*/ "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/utils/doc-textify/adapters/html.ts"],"sourcesContent":["
|
|
1
|
+
{"version":3,"sources":["../../../../../../../backend/src/applications/files/utils/doc-textify/adapters/html.ts"],"sourcesContent":["import fs from 'fs/promises'\nimport { compile } from 'html-to-text'\n\nconst htmlConverter = compile({ wordwrap: false, preserveNewlines: false })\n\nexport async function parseHtml(filePath: string): Promise<string> {\n const content = await fs.readFile(filePath, { encoding: 'utf8' })\n return htmlConverter(content)\n}\n"],"names":["parseHtml","htmlConverter","compile","wordwrap","preserveNewlines","filePath","content","fs","readFile","encoding"],"mappings":";;;;+BAKsBA;;;eAAAA;;;iEALP;4BACS;;;;;;AAExB,MAAMC,gBAAgBC,IAAAA,mBAAO,EAAC;IAAEC,UAAU;IAAOC,kBAAkB;AAAM;AAElE,eAAeJ,UAAUK,QAAgB;IAC9C,MAAMC,UAAU,MAAMC,iBAAE,CAACC,QAAQ,CAACH,UAAU;QAAEI,UAAU;IAAO;IAC/D,OAAOR,cAAcK;AACvB"}
|
|
@@ -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/utils/doc-textify/adapters/open-office.ts"],"sourcesContent":["
|
|
1
|
+
{"version":3,"sources":["../../../../../../../backend/src/applications/files/utils/doc-textify/adapters/open-office.ts"],"sourcesContent":["import { promisify } from 'node:util'\nimport sax from 'sax'\nimport { Entry, open as openZip, Options, ZipFile } from 'yauzl'\nimport { DocTextifyOptions } from '../interfaces/doc-textify.interfaces'\n\nconst openZipAsync: (path: string, options: Options) => Promise<ZipFile> = promisify(openZip)\n\n/**\n * Parses ODT/ODS/ODP\n */\nexport async function parseOpenOffice(filePath: string, options: DocTextifyOptions): Promise<string> {\n // Paths to process: main content and any embedded object content\n const mainPath = /^content\\.xml$/\n const objectPath = /^Object \\d+\\/content\\.xml$/\n\n const texts: string[] = []\n const notes: string[] = []\n let hasMain = false\n\n // Open the package as a ZIP in lazyEntries mode\n const zipFile = await openZipAsync(filePath, { lazyEntries: true })\n\n return new Promise<string>((resolve, reject) => {\n zipFile.readEntry()\n\n zipFile.on('entry', (entry: Entry) => {\n const path = entry.fileName\n\n // Only process content.xml or object/.../content.xml\n const isMain = mainPath.test(path)\n const isObject = objectPath.test(path)\n if (!isMain && !isObject) {\n zipFile.readEntry()\n return\n }\n\n if (isMain) {\n hasMain = true\n }\n\n zipFile.openReadStream(entry, (err, readStream) => {\n if (err) {\n zipFile.close()\n return reject(err)\n }\n\n const parser = sax.createStream(true)\n let buffer = ''\n let reading = false\n\n parser.on('error', (parseErr) => {\n readStream.destroy()\n zipFile.close()\n reject(parseErr)\n })\n\n parser.on('opentag', (node) => {\n // Start buffering when entering a paragraph or header\n if (node.name === 'text:p' || node.name === 'text:h') {\n reading = true\n buffer = ''\n }\n })\n\n parser.on('text', (txt) => {\n if (reading) {\n buffer += txt\n }\n })\n\n parser.on('closetag', (name) => {\n // On closing a paragraph or header, store the text\n if ((name === 'text:p' || name === 'text:h') && reading) {\n if (isMain) {\n texts.push(buffer)\n } else {\n notes.push(buffer)\n }\n reading = false\n }\n })\n\n readStream\n .on('error', (streamErr) => {\n zipFile.close()\n reject(streamErr)\n })\n .on('end', () => {\n zipFile.readEntry()\n })\n .pipe(parser)\n })\n })\n\n zipFile.on('end', () => {\n zipFile.close()\n // Ensure main content was found\n if (!hasMain) {\n return reject(new Error('file seems to be corrupted'))\n }\n // Optionally append notes at the end\n const all = texts.concat(notes)\n resolve(all.join(options.newlineDelimiter))\n })\n\n zipFile.on('error', (zipErr) => {\n zipFile.close()\n reject(zipErr)\n })\n })\n}\n"],"names":["parseOpenOffice","openZipAsync","promisify","openZip","filePath","options","mainPath","objectPath","texts","notes","hasMain","zipFile","lazyEntries","Promise","resolve","reject","readEntry","on","entry","path","fileName","isMain","test","isObject","openReadStream","err","readStream","close","parser","sax","createStream","buffer","reading","parseErr","destroy","node","name","txt","push","streamErr","pipe","Error","all","concat","join","newlineDelimiter","zipErr"],"mappings":";;;;+BAUsBA;;;eAAAA;;;0BAVI;4DACV;uBACyC;;;;;;AAGzD,MAAMC,eAAqEC,IAAAA,mBAAS,EAACC,WAAO;AAKrF,eAAeH,gBAAgBI,QAAgB,EAAEC,OAA0B;IAChF,iEAAiE;IACjE,MAAMC,WAAW;IACjB,MAAMC,aAAa;IAEnB,MAAMC,QAAkB,EAAE;IAC1B,MAAMC,QAAkB,EAAE;IAC1B,IAAIC,UAAU;IAEd,gDAAgD;IAChD,MAAMC,UAAU,MAAMV,aAAaG,UAAU;QAAEQ,aAAa;IAAK;IAEjE,OAAO,IAAIC,QAAgB,CAACC,SAASC;QACnCJ,QAAQK,SAAS;QAEjBL,QAAQM,EAAE,CAAC,SAAS,CAACC;YACnB,MAAMC,OAAOD,MAAME,QAAQ;YAE3B,qDAAqD;YACrD,MAAMC,SAASf,SAASgB,IAAI,CAACH;YAC7B,MAAMI,WAAWhB,WAAWe,IAAI,CAACH;YACjC,IAAI,CAACE,UAAU,CAACE,UAAU;gBACxBZ,QAAQK,SAAS;gBACjB;YACF;YAEA,IAAIK,QAAQ;gBACVX,UAAU;YACZ;YAEAC,QAAQa,cAAc,CAACN,OAAO,CAACO,KAAKC;gBAClC,IAAID,KAAK;oBACPd,QAAQgB,KAAK;oBACb,OAAOZ,OAAOU;gBAChB;gBAEA,MAAMG,SAASC,YAAG,CAACC,YAAY,CAAC;gBAChC,IAAIC,SAAS;gBACb,IAAIC,UAAU;gBAEdJ,OAAOX,EAAE,CAAC,SAAS,CAACgB;oBAClBP,WAAWQ,OAAO;oBAClBvB,QAAQgB,KAAK;oBACbZ,OAAOkB;gBACT;gBAEAL,OAAOX,EAAE,CAAC,WAAW,CAACkB;oBACpB,sDAAsD;oBACtD,IAAIA,KAAKC,IAAI,KAAK,YAAYD,KAAKC,IAAI,KAAK,UAAU;wBACpDJ,UAAU;wBACVD,SAAS;oBACX;gBACF;gBAEAH,OAAOX,EAAE,CAAC,QAAQ,CAACoB;oBACjB,IAAIL,SAAS;wBACXD,UAAUM;oBACZ;gBACF;gBAEAT,OAAOX,EAAE,CAAC,YAAY,CAACmB;oBACrB,mDAAmD;oBACnD,IAAI,AAACA,CAAAA,SAAS,YAAYA,SAAS,QAAO,KAAMJ,SAAS;wBACvD,IAAIX,QAAQ;4BACVb,MAAM8B,IAAI,CAACP;wBACb,OAAO;4BACLtB,MAAM6B,IAAI,CAACP;wBACb;wBACAC,UAAU;oBACZ;gBACF;gBAEAN,WACGT,EAAE,CAAC,SAAS,CAACsB;oBACZ5B,QAAQgB,KAAK;oBACbZ,OAAOwB;gBACT,GACCtB,EAAE,CAAC,OAAO;oBACTN,QAAQK,SAAS;gBACnB,GACCwB,IAAI,CAACZ;YACV;QACF;QAEAjB,QAAQM,EAAE,CAAC,OAAO;YAChBN,QAAQgB,KAAK;YACb,gCAAgC;YAChC,IAAI,CAACjB,SAAS;gBACZ,OAAOK,OAAO,IAAI0B,MAAM;YAC1B;YACA,qCAAqC;YACrC,MAAMC,MAAMlC,MAAMmC,MAAM,CAAClC;YACzBK,QAAQ4B,IAAIE,IAAI,CAACvC,QAAQwC,gBAAgB;QAC3C;QAEAlC,QAAQM,EAAE,CAAC,SAAS,CAAC6B;YACnBnC,QAAQgB,KAAK;YACbZ,OAAO+B;QACT;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
|
-
*/ "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/utils/doc-textify/adapters/pdf.ts"],"sourcesContent":["
|
|
1
|
+
{"version":3,"sources":["../../../../../../../backend/src/applications/files/utils/doc-textify/adapters/pdf.ts"],"sourcesContent":["import { readFile } from 'node:fs/promises'\nimport { getDocumentProxy } from 'unpdf'\nimport type { PDFDocumentProxy } from 'unpdf/pdfjs'\nimport type { DocTextifyOptions } from '../interfaces/doc-textify.interfaces'\n\n// Type guard to filter true text items\ninterface TextItem {\n str: string\n transform: [number, number, number, number, number, number]\n}\nfunction isTextItem(item: any): item is TextItem {\n return typeof item.str === 'string' && Array.isArray(item.transform)\n}\n\nconst ignorePdfBadFormat = new Set([0x0000, 0x0001])\n\n/** Parse PDF files */\nexport async function parsePdf(filePath: string, options: DocTextifyOptions): Promise<string> {\n let doc: PDFDocumentProxy\n const buffer = await readFile(filePath)\n\n try {\n // Load the document, allowing system fonts as fallback\n const doc = await getDocumentProxy(new Uint8Array(buffer), {\n disableFontFace: true,\n verbosity: 0\n })\n const fragments: string[] = []\n let lastY: number | undefined = undefined\n\n for (let pageNum = 1; pageNum <= doc.numPages; pageNum++) {\n const page = await doc.getPage(pageNum)\n const { items } = await page.getTextContent()\n\n for (const item of items) {\n // Skip non-text items\n if (!isTextItem(item)) continue\n\n const currentY = item.transform[5]\n if (lastY !== undefined && currentY !== lastY) {\n fragments.push(options.newlineDelimiter)\n }\n\n fragments.push(item.str)\n lastY = currentY\n }\n page.cleanup()\n }\n\n const content = fragments.join('')\n if (ignorePdfBadFormat.has(content.charCodeAt(0))) {\n return ''\n }\n return content\n } catch (e) {\n if (options.outputErrorToConsole) {\n console.error('Error parsing PDF:', e)\n }\n throw e\n } finally {\n doc?.destroy().catch((e: Error) => console.error(e))\n }\n}\n"],"names":["parsePdf","isTextItem","item","str","Array","isArray","transform","ignorePdfBadFormat","Set","filePath","options","doc","buffer","readFile","getDocumentProxy","Uint8Array","disableFontFace","verbosity","fragments","lastY","undefined","pageNum","numPages","page","getPage","items","getTextContent","currentY","push","newlineDelimiter","cleanup","content","join","has","charCodeAt","e","outputErrorToConsole","console","error","destroy","catch"],"mappings":";;;;+BAiBsBA;;;eAAAA;;;0BAjBG;uBACQ;AASjC,SAASC,WAAWC,IAAS;IAC3B,OAAO,OAAOA,KAAKC,GAAG,KAAK,YAAYC,MAAMC,OAAO,CAACH,KAAKI,SAAS;AACrE;AAEA,MAAMC,qBAAqB,IAAIC,IAAI;IAAC;IAAQ;CAAO;AAG5C,eAAeR,SAASS,QAAgB,EAAEC,OAA0B;IACzE,IAAIC;IACJ,MAAMC,SAAS,MAAMC,IAAAA,kBAAQ,EAACJ;IAE9B,IAAI;QACF,uDAAuD;QACvD,MAAME,MAAM,MAAMG,IAAAA,uBAAgB,EAAC,IAAIC,WAAWH,SAAS;YACzDI,iBAAiB;YACjBC,WAAW;QACb;QACA,MAAMC,YAAsB,EAAE;QAC9B,IAAIC,QAA4BC;QAEhC,IAAK,IAAIC,UAAU,GAAGA,WAAWV,IAAIW,QAAQ,EAAED,UAAW;YACxD,MAAME,OAAO,MAAMZ,IAAIa,OAAO,CAACH;YAC/B,MAAM,EAAEI,KAAK,EAAE,GAAG,MAAMF,KAAKG,cAAc;YAE3C,KAAK,MAAMxB,QAAQuB,MAAO;gBACxB,sBAAsB;gBACtB,IAAI,CAACxB,WAAWC,OAAO;gBAEvB,MAAMyB,WAAWzB,KAAKI,SAAS,CAAC,EAAE;gBAClC,IAAIa,UAAUC,aAAaO,aAAaR,OAAO;oBAC7CD,UAAUU,IAAI,CAAClB,QAAQmB,gBAAgB;gBACzC;gBAEAX,UAAUU,IAAI,CAAC1B,KAAKC,GAAG;gBACvBgB,QAAQQ;YACV;YACAJ,KAAKO,OAAO;QACd;QAEA,MAAMC,UAAUb,UAAUc,IAAI,CAAC;QAC/B,IAAIzB,mBAAmB0B,GAAG,CAACF,QAAQG,UAAU,CAAC,KAAK;YACjD,OAAO;QACT;QACA,OAAOH;IACT,EAAE,OAAOI,GAAG;QACV,IAAIzB,QAAQ0B,oBAAoB,EAAE;YAChCC,QAAQC,KAAK,CAAC,sBAAsBH;QACtC;QACA,MAAMA;IACR,SAAU;QACRxB,KAAK4B,UAAUC,MAAM,CAACL,IAAaE,QAAQC,KAAK,CAACH;IACnD;AACF"}
|
|
@@ -1,8 +1,4 @@
|
|
|
1
|
-
|
|
2
|
-
* Copyright (C) 2012-2025 Johan Legrand <johan.legrand@sync-in.com>
|
|
3
|
-
* This file is part of Sync-in | The open source file sync and share solution
|
|
4
|
-
* See the LICENSE file for licensing details
|
|
5
|
-
*/ "use strict";
|
|
1
|
+
"use strict";
|
|
6
2
|
Object.defineProperty(exports, "__esModule", {
|
|
7
3
|
value: true
|
|
8
4
|
});
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"sources":["../../../../../../../backend/src/applications/files/utils/doc-textify/adapters/power-point.ts"],"sourcesContent":["
|
|
1
|
+
{"version":3,"sources":["../../../../../../../backend/src/applications/files/utils/doc-textify/adapters/power-point.ts"],"sourcesContent":["import { promisify } from 'node:util'\nimport sax from 'sax'\nimport { Entry, open as openZip, Options, ZipFile } from 'yauzl'\nimport { DocTextifyOptions } from '../interfaces/doc-textify.interfaces'\n\nconst openZipAsync: (path: string, options: Options) => Promise<ZipFile> = promisify(openZip)\n\n/**\n * Parses a PPTX file\n */\nexport async function parsePowerPoint(filePath: string, options: DocTextifyOptions): Promise<string> {\n // Regex to match slide and notes XML, capturing the slide index\n const slidesRegex = /^ppt\\/slides\\/slide(\\d+)\\.xml$/\n const notesRegex = /^ppt\\/notesSlides\\/notesSlide(\\d+)\\.xml$|^ppt\\/slides\\/notesSlides\\/slide(\\d+)\\.xml$/\n\n // Map of slide index -> array of text fragments\n const slideTextMap: Record<number, string[]> = {}\n let hasSlide = false\n\n // 1. Open the PPTX (ZIP) in lazyEntries mode\n const zipFile = await openZipAsync(filePath, { lazyEntries: true })\n\n return new Promise<string>((resolve, reject) => {\n zipFile.readEntry()\n\n zipFile.on('entry', (entry: Entry) => {\n const path = entry.fileName\n let match: RegExpExecArray | null\n\n // Skip if not a slide or a note\n const isSlide = slidesRegex.test(path)\n const isNote = notesRegex.test(path)\n if (!isSlide && !isNote) {\n zipFile.readEntry()\n return\n }\n\n // Capture the regex match and flag that we've seen a slide\n if (isSlide) {\n match = slidesRegex.exec(path)!\n hasSlide = true\n } else {\n match = notesRegex.exec(path)!\n }\n\n // parse the slide number from whichever capture is defined\n const slideNum = parseInt(match[1] || match[2]!, 10)\n if (!slideTextMap[slideNum]) slideTextMap[slideNum] = []\n\n // 2. Open a read stream for this entry\n zipFile.openReadStream(entry, (err, readStream) => {\n if (err) {\n zipFile.close()\n return reject(err)\n }\n\n // 3. SAX parser to extract <a:t> text nodes\n const parser = sax.createStream(true)\n let buffer = ''\n\n parser.on('error', (parseErr) => {\n readStream.destroy()\n zipFile.close()\n reject(parseErr)\n })\n\n parser.on('opentag', (node) => {\n if (node.name === 'a:t') {\n buffer = ''\n }\n })\n\n parser.on('text', (txt) => {\n buffer += txt\n })\n\n parser.on('closetag', (name) => {\n if (name === 'a:t') {\n slideTextMap[slideNum].push(buffer)\n }\n })\n\n readStream\n .on('error', (streamErr) => {\n zipFile.close()\n reject(streamErr)\n })\n .on('end', () => {\n // Move on to the next entry\n zipFile.readEntry()\n })\n .pipe(parser)\n })\n })\n\n zipFile.on('end', () => {\n zipFile.close()\n // 4. Ensure at least one slide was found\n if (!hasSlide) {\n return reject(new Error('file seems to be corrupted'))\n }\n\n // 5. Build final output by ascending slide number\n const sortedSlides = Object.keys(slideTextMap)\n .map((n) => parseInt(n, 10))\n .sort((a, b) => a - b)\n\n const result = sortedSlides.map((num) => slideTextMap[num].join(options.newlineDelimiter)).join(options.newlineDelimiter)\n\n resolve(result)\n })\n\n zipFile.on('error', (zipErr) => {\n zipFile.close()\n reject(zipErr)\n })\n })\n}\n"],"names":["parsePowerPoint","openZipAsync","promisify","openZip","filePath","options","slidesRegex","notesRegex","slideTextMap","hasSlide","zipFile","lazyEntries","Promise","resolve","reject","readEntry","on","entry","path","fileName","match","isSlide","test","isNote","exec","slideNum","parseInt","openReadStream","err","readStream","close","parser","sax","createStream","buffer","parseErr","destroy","node","name","txt","push","streamErr","pipe","Error","sortedSlides","Object","keys","map","n","sort","a","b","result","num","join","newlineDelimiter","zipErr"],"mappings":";;;;+BAUsBA;;;eAAAA;;;0BAVI;4DACV;uBACyC;;;;;;AAGzD,MAAMC,eAAqEC,IAAAA,mBAAS,EAACC,WAAO;AAKrF,eAAeH,gBAAgBI,QAAgB,EAAEC,OAA0B;IAChF,gEAAgE;IAChE,MAAMC,cAAc;IACpB,MAAMC,aAAa;IAEnB,gDAAgD;IAChD,MAAMC,eAAyC,CAAC;IAChD,IAAIC,WAAW;IAEf,6CAA6C;IAC7C,MAAMC,UAAU,MAAMT,aAAaG,UAAU;QAAEO,aAAa;IAAK;IAEjE,OAAO,IAAIC,QAAgB,CAACC,SAASC;QACnCJ,QAAQK,SAAS;QAEjBL,QAAQM,EAAE,CAAC,SAAS,CAACC;YACnB,MAAMC,OAAOD,MAAME,QAAQ;YAC3B,IAAIC;YAEJ,gCAAgC;YAChC,MAAMC,UAAUf,YAAYgB,IAAI,CAACJ;YACjC,MAAMK,SAAShB,WAAWe,IAAI,CAACJ;YAC/B,IAAI,CAACG,WAAW,CAACE,QAAQ;gBACvBb,QAAQK,SAAS;gBACjB;YACF;YAEA,2DAA2D;YAC3D,IAAIM,SAAS;gBACXD,QAAQd,YAAYkB,IAAI,CAACN;gBACzBT,WAAW;YACb,OAAO;gBACLW,QAAQb,WAAWiB,IAAI,CAACN;YAC1B;YAEA,2DAA2D;YAC3D,MAAMO,WAAWC,SAASN,KAAK,CAAC,EAAE,IAAIA,KAAK,CAAC,EAAE,EAAG;YACjD,IAAI,CAACZ,YAAY,CAACiB,SAAS,EAAEjB,YAAY,CAACiB,SAAS,GAAG,EAAE;YAExD,uCAAuC;YACvCf,QAAQiB,cAAc,CAACV,OAAO,CAACW,KAAKC;gBAClC,IAAID,KAAK;oBACPlB,QAAQoB,KAAK;oBACb,OAAOhB,OAAOc;gBAChB;gBAEA,4CAA4C;gBAC5C,MAAMG,SAASC,YAAG,CAACC,YAAY,CAAC;gBAChC,IAAIC,SAAS;gBAEbH,OAAOf,EAAE,CAAC,SAAS,CAACmB;oBAClBN,WAAWO,OAAO;oBAClB1B,QAAQoB,KAAK;oBACbhB,OAAOqB;gBACT;gBAEAJ,OAAOf,EAAE,CAAC,WAAW,CAACqB;oBACpB,IAAIA,KAAKC,IAAI,KAAK,OAAO;wBACvBJ,SAAS;oBACX;gBACF;gBAEAH,OAAOf,EAAE,CAAC,QAAQ,CAACuB;oBACjBL,UAAUK;gBACZ;gBAEAR,OAAOf,EAAE,CAAC,YAAY,CAACsB;oBACrB,IAAIA,SAAS,OAAO;wBAClB9B,YAAY,CAACiB,SAAS,CAACe,IAAI,CAACN;oBAC9B;gBACF;gBAEAL,WACGb,EAAE,CAAC,SAAS,CAACyB;oBACZ/B,QAAQoB,KAAK;oBACbhB,OAAO2B;gBACT,GACCzB,EAAE,CAAC,OAAO;oBACT,4BAA4B;oBAC5BN,QAAQK,SAAS;gBACnB,GACC2B,IAAI,CAACX;YACV;QACF;QAEArB,QAAQM,EAAE,CAAC,OAAO;YAChBN,QAAQoB,KAAK;YACb,yCAAyC;YACzC,IAAI,CAACrB,UAAU;gBACb,OAAOK,OAAO,IAAI6B,MAAM;YAC1B;YAEA,kDAAkD;YAClD,MAAMC,eAAeC,OAAOC,IAAI,CAACtC,cAC9BuC,GAAG,CAAC,CAACC,IAAMtB,SAASsB,GAAG,KACvBC,IAAI,CAAC,CAACC,GAAGC,IAAMD,IAAIC;YAEtB,MAAMC,SAASR,aAAaG,GAAG,CAAC,CAACM,MAAQ7C,YAAY,CAAC6C,IAAI,CAACC,IAAI,CAACjD,QAAQkD,gBAAgB,GAAGD,IAAI,CAACjD,QAAQkD,gBAAgB;YAExH1C,QAAQuC;QACV;QAEA1C,QAAQM,EAAE,CAAC,SAAS,CAACwC;YACnB9C,QAAQoB,KAAK;YACbhB,OAAO0C;QACT;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
|
-
*/ "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/utils/doc-textify/adapters/text.ts"],"sourcesContent":["
|
|
1
|
+
{"version":3,"sources":["../../../../../../../backend/src/applications/files/utils/doc-textify/adapters/text.ts"],"sourcesContent":["import fs from 'fs/promises'\n\nexport async function parseText(filePath: string): Promise<string> {\n return await fs.readFile(filePath, { encoding: 'utf8' })\n}\n"],"names":["parseText","filePath","fs","readFile","encoding"],"mappings":";;;;+BAEsBA;;;eAAAA;;;iEAFP;;;;;;AAER,eAAeA,UAAUC,QAAgB;IAC9C,OAAO,MAAMC,iBAAE,CAACC,QAAQ,CAACF,UAAU;QAAEG,UAAU;IAAO;AACxD"}
|
|
@@ -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
|
});
|