@sync-in/server 1.9.3 → 1.10.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 +41 -4
- package/environment/environment.dist.yaml +15 -5
- package/package.json +18 -19
- package/server/app.bootstrap.js +1 -1
- package/server/app.bootstrap.js.map +1 -1
- package/server/app.constants.js +3 -2
- package/server/app.constants.js.map +1 -1
- package/server/applications/files/constants/cache.js +2 -5
- package/server/applications/files/constants/cache.js.map +1 -1
- package/server/applications/files/constants/files.js +4 -0
- package/server/applications/files/constants/files.js.map +1 -1
- package/server/applications/files/constants/operations.js +4 -0
- package/server/applications/files/constants/operations.js.map +1 -1
- package/server/applications/files/constants/routes.js +1 -26
- package/server/applications/files/constants/routes.js.map +1 -1
- package/server/applications/files/files.config.js +15 -39
- package/server/applications/files/files.config.js.map +1 -1
- package/server/applications/files/files.controller.js +4 -4
- package/server/applications/files/files.controller.js.map +1 -1
- package/server/applications/files/files.module.js +12 -9
- package/server/applications/files/files.module.js.map +1 -1
- package/server/applications/files/interfaces/file-lock.interface.js.map +1 -1
- package/server/applications/files/interfaces/file-props.interface.js.map +1 -1
- package/server/applications/files/modules/collabora-online/collabora-online-environment.decorator.js +32 -0
- package/server/applications/files/modules/collabora-online/collabora-online-environment.decorator.js.map +1 -0
- package/server/applications/files/modules/collabora-online/collabora-online-manager.service.js +280 -0
- package/server/applications/files/modules/collabora-online/collabora-online-manager.service.js.map +1 -0
- package/server/applications/files/modules/collabora-online/collabora-online-manager.service.spec.js +552 -0
- package/server/applications/files/modules/collabora-online/collabora-online-manager.service.spec.js.map +1 -0
- package/server/applications/files/modules/collabora-online/collabora-online.config.js +40 -0
- package/server/applications/files/modules/collabora-online/collabora-online.config.js.map +1 -0
- package/server/applications/files/modules/collabora-online/collabora-online.constants.js +110 -0
- package/server/applications/files/modules/collabora-online/collabora-online.constants.js.map +1 -0
- package/server/applications/files/modules/collabora-online/collabora-online.controller.js +128 -0
- package/server/applications/files/modules/collabora-online/collabora-online.controller.js.map +1 -0
- package/server/applications/files/modules/collabora-online/collabora-online.controller.spec.js +47 -0
- package/server/applications/files/modules/collabora-online/collabora-online.controller.spec.js.map +1 -0
- package/server/applications/files/{interfaces/only-office-config.interface.js → modules/collabora-online/collabora-online.dtos.js} +1 -1
- package/server/applications/files/modules/collabora-online/collabora-online.dtos.js.map +1 -0
- package/server/applications/files/{guards/files-only-office.guard.js → modules/collabora-online/collabora-online.guard.js} +7 -21
- package/server/applications/files/modules/collabora-online/collabora-online.guard.js.map +1 -0
- package/server/applications/files/modules/collabora-online/collabora-online.guard.spec.js +86 -0
- package/server/applications/files/modules/collabora-online/collabora-online.guard.spec.js.map +1 -0
- package/server/applications/files/modules/collabora-online/collabora-online.interface.js +10 -0
- package/server/applications/files/modules/collabora-online/collabora-online.interface.js.map +1 -0
- package/server/applications/files/modules/collabora-online/collabora-online.module.js +41 -0
- package/server/applications/files/modules/collabora-online/collabora-online.module.js.map +1 -0
- package/server/applications/files/modules/collabora-online/collabora-online.routes.js +35 -0
- package/server/applications/files/modules/collabora-online/collabora-online.routes.js.map +1 -0
- package/server/applications/files/modules/collabora-online/collabora-online.strategy.js +59 -0
- package/server/applications/files/modules/collabora-online/collabora-online.strategy.js.map +1 -0
- package/server/applications/files/modules/collabora-online/collabora-online.utils.js +28 -0
- package/server/applications/files/modules/collabora-online/collabora-online.utils.js.map +1 -0
- package/server/applications/files/{decorators → modules/only-office}/only-office-environment.decorator.js +5 -5
- package/server/applications/files/modules/only-office/only-office-environment.decorator.js.map +1 -0
- package/server/applications/files/{services/files-only-office-manager.service.js → modules/only-office/only-office-manager.service.js} +101 -97
- package/server/applications/files/modules/only-office/only-office-manager.service.js.map +1 -0
- package/server/applications/files/modules/only-office/only-office-manager.service.spec.js +477 -0
- package/server/applications/files/modules/only-office/only-office-manager.service.spec.js.map +1 -0
- package/server/applications/files/modules/only-office/only-office.config.js +51 -0
- package/server/applications/files/modules/only-office/only-office.config.js.map +1 -0
- package/server/applications/files/modules/only-office/only-office.constants.js +417 -0
- package/server/applications/files/modules/only-office/only-office.constants.js.map +1 -0
- package/server/applications/files/{files-only-office.controller.js → modules/only-office/only-office.controller.js} +35 -52
- package/server/applications/files/modules/only-office/only-office.controller.js.map +1 -0
- package/server/applications/files/{files-only-office.controller.spec.js → modules/only-office/only-office.controller.spec.js} +24 -21
- package/server/applications/files/modules/only-office/only-office.controller.spec.js.map +1 -0
- package/server/applications/files/modules/only-office/only-office.dtos.js +10 -0
- package/server/applications/files/modules/only-office/only-office.dtos.js.map +1 -0
- package/server/applications/files/modules/only-office/only-office.guard.js +40 -0
- package/server/applications/files/modules/only-office/only-office.guard.js.map +1 -0
- package/server/applications/files/{guards/files-only-office.guard.spec.js → modules/only-office/only-office.guard.spec.js} +15 -21
- package/server/applications/files/modules/only-office/only-office.guard.spec.js.map +1 -0
- package/server/applications/files/modules/only-office/only-office.interface.js +10 -0
- package/server/applications/files/modules/only-office/only-office.interface.js.map +1 -0
- package/server/applications/files/modules/only-office/only-office.module.js +41 -0
- package/server/applications/files/modules/only-office/only-office.module.js.map +1 -0
- package/server/applications/files/modules/only-office/only-office.routes.js +45 -0
- package/server/applications/files/modules/only-office/only-office.routes.js.map +1 -0
- package/server/applications/files/{guards/files-only-office.strategy.js → modules/only-office/only-office.strategy.js} +11 -11
- package/server/applications/files/modules/only-office/only-office.strategy.js.map +1 -0
- package/server/applications/files/services/files-lock-manager.service.js +25 -33
- package/server/applications/files/services/files-lock-manager.service.js.map +1 -1
- package/server/applications/files/services/files-manager.service.js +17 -16
- package/server/applications/files/services/files-manager.service.js.map +1 -1
- package/server/applications/files/services/files-methods.service.js +2 -2
- package/server/applications/files/services/files-methods.service.js.map +1 -1
- package/server/applications/files/services/files-methods.service.spec.js +5 -5
- package/server/applications/files/services/files-methods.service.spec.js.map +1 -1
- package/server/applications/files/services/files-recents.service.js +4 -0
- package/server/applications/files/services/files-recents.service.js.map +1 -1
- package/server/applications/files/services/files-scheduler.service.js +24 -5
- package/server/applications/files/services/files-scheduler.service.js.map +1 -1
- package/server/applications/files/utils/files.js +10 -2
- package/server/applications/files/utils/files.js.map +1 -1
- package/server/applications/links/constants/routes.js +5 -0
- package/server/applications/links/constants/routes.js.map +1 -1
- package/server/applications/links/interfaces/link-space.interface.js.map +1 -1
- package/server/applications/links/links.controller.js +25 -5
- package/server/applications/links/links.controller.js.map +1 -1
- package/server/applications/links/services/links-manager.service.js +43 -21
- package/server/applications/links/services/links-manager.service.js.map +1 -1
- package/server/applications/links/services/links-manager.service.spec.js +4 -3
- package/server/applications/links/services/links-manager.service.spec.js.map +1 -1
- package/server/applications/links/services/links-queries.service.js +9 -2
- package/server/applications/links/services/links-queries.service.js.map +1 -1
- package/server/applications/shares/interfaces/share-link.interface.js.map +1 -1
- package/server/applications/shares/services/shares-manager.service.js +3 -0
- package/server/applications/shares/services/shares-manager.service.js.map +1 -1
- package/server/applications/shares/services/shares-manager.service.spec.js +2 -1
- package/server/applications/shares/services/shares-manager.service.spec.js.map +1 -1
- package/server/applications/shares/services/shares-queries.service.js +1 -0
- package/server/applications/shares/services/shares-queries.service.js.map +1 -1
- package/server/applications/spaces/constants/spaces.js +2 -2
- package/server/applications/spaces/constants/spaces.js.map +1 -1
- package/server/applications/spaces/decorators/space-override-permission.decorator.js +18 -0
- package/server/applications/spaces/decorators/space-override-permission.decorator.js.map +1 -0
- package/server/applications/spaces/guards/space.guard.js +40 -33
- package/server/applications/spaces/guards/space.guard.js.map +1 -1
- package/server/applications/spaces/guards/space.guard.spec.js +10 -15
- package/server/applications/spaces/guards/space.guard.spec.js.map +1 -1
- package/server/applications/spaces/services/spaces-scheduler.service.js +9 -1
- package/server/applications/spaces/services/spaces-scheduler.service.js.map +1 -1
- package/server/applications/webdav/constants/webdav.js +4 -0
- package/server/applications/webdav/constants/webdav.js.map +1 -1
- package/server/applications/webdav/guards/webdav-protocol.guard.js +9 -8
- package/server/applications/webdav/guards/webdav-protocol.guard.js.map +1 -1
- package/server/applications/webdav/guards/webdav-protocol.guard.spec.js +1 -1
- package/server/applications/webdav/guards/webdav-protocol.guard.spec.js.map +1 -1
- package/server/applications/webdav/interfaces/webdav.interface.js.map +1 -1
- package/server/applications/webdav/services/webdav-methods.service.js +40 -17
- package/server/applications/webdav/services/webdav-methods.service.js.map +1 -1
- package/server/applications/webdav/services/webdav-methods.service.spec.js +2157 -1289
- package/server/applications/webdav/services/webdav-methods.service.spec.js.map +1 -1
- package/server/applications/webdav/utils/webdav.js +8 -4
- package/server/applications/webdav/utils/webdav.js.map +1 -1
- package/server/applications/webdav/webdav.controller.js +4 -4
- package/server/applications/webdav/webdav.controller.js.map +1 -1
- package/server/authentication/guards/auth-token-access.guard.js +8 -3
- package/server/authentication/guards/auth-token-access.guard.js.map +1 -1
- package/server/authentication/services/auth-methods/auth-method-two-fa.service.js +1 -1
- package/server/authentication/services/auth-methods/auth-method-two-fa.service.js.map +1 -1
- package/server/authentication/services/auth-methods/auth-method-two-fa.service.spec.js +350 -4
- package/server/authentication/services/auth-methods/auth-method-two-fa.service.spec.js.map +1 -1
- package/server/configuration/config.environment.js +5 -1
- package/server/configuration/config.environment.js.map +1 -1
- package/server/configuration/config.interfaces.js.map +1 -1
- package/static/3rdpartylicenses.txt +507 -507
- package/static/assets/pdfjs/build/pdf.mjs +93 -33
- package/static/assets/pdfjs/build/pdf.mjs.map +1 -1
- package/static/assets/pdfjs/build/pdf.sandbox.mjs +3 -3
- package/static/assets/pdfjs/build/pdf.sandbox.mjs.map +1 -1
- package/static/assets/pdfjs/build/pdf.worker.mjs +166 -54
- package/static/assets/pdfjs/build/pdf.worker.mjs.map +1 -1
- package/static/assets/pdfjs/version +1 -1
- package/static/assets/pdfjs/web/images/checkmark.svg +5 -0
- package/static/assets/pdfjs/web/images/pages_closeButton.svg +3 -0
- package/static/assets/pdfjs/web/images/pages_selected.svg +7 -0
- package/static/assets/pdfjs/web/images/pages_viewArrow.svg +3 -0
- package/static/assets/pdfjs/web/images/pages_viewButton.svg +3 -0
- package/static/assets/pdfjs/web/locale/be/viewer.ftl +0 -2
- package/static/assets/pdfjs/web/locale/bs/viewer.ftl +0 -5
- package/static/assets/pdfjs/web/locale/cs/viewer.ftl +4 -6
- package/static/assets/pdfjs/web/locale/cy/viewer.ftl +0 -2
- package/static/assets/pdfjs/web/locale/da/viewer.ftl +0 -2
- package/static/assets/pdfjs/web/locale/de/viewer.ftl +0 -2
- package/static/assets/pdfjs/web/locale/dsb/viewer.ftl +0 -2
- package/static/assets/pdfjs/web/locale/el/viewer.ftl +0 -2
- package/static/assets/pdfjs/web/locale/en-CA/viewer.ftl +6 -2
- package/static/assets/pdfjs/web/locale/en-GB/viewer.ftl +0 -2
- package/static/assets/pdfjs/web/locale/en-US/viewer.ftl +82 -17
- package/static/assets/pdfjs/web/locale/eo/viewer.ftl +0 -2
- package/static/assets/pdfjs/web/locale/es-AR/viewer.ftl +0 -2
- package/static/assets/pdfjs/web/locale/es-CL/viewer.ftl +0 -2
- package/static/assets/pdfjs/web/locale/es-ES/viewer.ftl +0 -2
- package/static/assets/pdfjs/web/locale/es-MX/viewer.ftl +0 -2
- package/static/assets/pdfjs/web/locale/eu/viewer.ftl +0 -2
- package/static/assets/pdfjs/web/locale/fi/viewer.ftl +0 -2
- package/static/assets/pdfjs/web/locale/fr/viewer.ftl +0 -2
- package/static/assets/pdfjs/web/locale/fur/viewer.ftl +0 -5
- package/static/assets/pdfjs/web/locale/fy-NL/viewer.ftl +3 -5
- package/static/assets/pdfjs/web/locale/gn/viewer.ftl +0 -2
- package/static/assets/pdfjs/web/locale/he/viewer.ftl +0 -2
- package/static/assets/pdfjs/web/locale/hr/viewer.ftl +66 -0
- package/static/assets/pdfjs/web/locale/hsb/viewer.ftl +0 -2
- package/static/assets/pdfjs/web/locale/hu/viewer.ftl +0 -2
- package/static/assets/pdfjs/web/locale/hy-AM/viewer.ftl +3 -8
- package/static/assets/pdfjs/web/locale/ia/viewer.ftl +0 -2
- package/static/assets/pdfjs/web/locale/id/viewer.ftl +0 -5
- package/static/assets/pdfjs/web/locale/is/viewer.ftl +0 -5
- package/static/assets/pdfjs/web/locale/it/viewer.ftl +0 -2
- package/static/assets/pdfjs/web/locale/ja/viewer.ftl +0 -14
- package/static/assets/pdfjs/web/locale/ka/viewer.ftl +4 -6
- package/static/assets/pdfjs/web/locale/kab/viewer.ftl +0 -5
- package/static/assets/pdfjs/web/locale/kk/viewer.ftl +0 -2
- package/static/assets/pdfjs/web/locale/ko/viewer.ftl +0 -2
- package/static/assets/pdfjs/web/locale/nb-NO/viewer.ftl +1 -3
- package/static/assets/pdfjs/web/locale/nl/viewer.ftl +0 -2
- package/static/assets/pdfjs/web/locale/nn-NO/viewer.ftl +4 -2
- package/static/assets/pdfjs/web/locale/pa-IN/viewer.ftl +0 -2
- package/static/assets/pdfjs/web/locale/pl/viewer.ftl +0 -2
- package/static/assets/pdfjs/web/locale/pt-BR/viewer.ftl +0 -2
- package/static/assets/pdfjs/web/locale/pt-PT/viewer.ftl +35 -0
- package/static/assets/pdfjs/web/locale/rm/viewer.ftl +0 -5
- package/static/assets/pdfjs/web/locale/ro/viewer.ftl +4 -6
- package/static/assets/pdfjs/web/locale/ru/viewer.ftl +3 -5
- package/static/assets/pdfjs/web/locale/sk/viewer.ftl +0 -2
- package/static/assets/pdfjs/web/locale/sl/viewer.ftl +0 -2
- package/static/assets/pdfjs/web/locale/sq/viewer.ftl +0 -2
- package/static/assets/pdfjs/web/locale/sv-SE/viewer.ftl +0 -2
- package/static/assets/pdfjs/web/locale/tg/viewer.ftl +0 -2
- package/static/assets/pdfjs/web/locale/th/viewer.ftl +2 -2
- package/static/assets/pdfjs/web/locale/tr/viewer.ftl +0 -2
- package/static/assets/pdfjs/web/locale/vi/viewer.ftl +0 -2
- package/static/assets/pdfjs/web/locale/zh-CN/viewer.ftl +0 -2
- package/static/assets/pdfjs/web/locale/zh-TW/viewer.ftl +0 -2
- package/static/assets/pdfjs/web/viewer.css +1778 -835
- package/static/assets/pdfjs/web/viewer.html +167 -86
- package/static/assets/pdfjs/web/viewer.mjs +1106 -801
- package/static/assets/pdfjs/web/viewer.mjs.map +1 -1
- package/static/chunk-27V66YJV.js +2 -0
- package/static/{chunk-WJYVS27M.js → chunk-27Z3SYRL.js} +1 -1
- package/static/{chunk-NFIES7BC.js → chunk-2RWLNKZH.js} +1 -1
- package/static/chunk-2YQ4SX3A.js +13 -0
- package/static/{chunk-GENTF6JM.js → chunk-3JYMJQYT.js} +1 -1
- package/static/chunk-3QTROEHV.js +1 -0
- package/static/{chunk-ZPI7RQ2S.js → chunk-3RPUQ22U.js} +1 -1
- package/static/{chunk-R6VB3INJ.js → chunk-3WZ6F3LC.js} +1 -1
- package/static/chunk-3ZLBVUCX.js +2 -0
- package/static/{chunk-5HCVWZMA.js → chunk-45AZ6ZML.js} +1 -1
- package/static/chunk-46TJLPJY.js +1 -0
- package/static/chunk-4NIYCYRS.js +2 -0
- package/static/{chunk-XXYMVRSH.js → chunk-4TPFERL6.js} +1 -1
- package/static/{chunk-CAZSNVMS.js → chunk-5O66CLTD.js} +1 -1
- package/static/chunk-6OEOADR6.js +1 -0
- package/static/chunk-6WMXMIE4.js +1 -0
- package/static/{chunk-NK2NMAJI.js → chunk-7VRYTDX4.js} +1 -1
- package/static/{chunk-ASBPYTLT.js → chunk-ARS47O5X.js} +1 -1
- package/static/chunk-B6HQYQYG.js +1 -0
- package/static/chunk-BCN4T5DO.js +2 -0
- package/static/{chunk-PKU4IIIR.js → chunk-CCZWPM7Q.js} +1 -1
- package/static/{chunk-QUSS6SUC.js → chunk-CMNMPG6Z.js} +1 -1
- package/static/{chunk-GDPJRUVU.js → chunk-CSVPAZHK.js} +1 -1
- package/static/{chunk-BJARRIS6.js → chunk-D55YR5X7.js} +4 -4
- package/static/{chunk-Z6RJZIDG.js → chunk-D5FQ72R4.js} +1 -1
- package/static/{chunk-4DF2SQD4.js → chunk-DGCVA6BM.js} +1 -1
- package/static/{chunk-TVJQXN73.js → chunk-DVCN3P7Q.js} +1 -1
- package/static/chunk-E32J777S.js +5 -0
- package/static/{chunk-5NHB7SV3.js → chunk-FIUF2JM4.js} +1 -1
- package/static/{chunk-RJOHDAPM.js → chunk-G3PL6YX3.js} +1 -1
- package/static/chunk-G7RZN7HN.js +1 -0
- package/static/{chunk-DDRGLHOP.js → chunk-GQHXYX6Z.js} +1 -1
- package/static/{chunk-5HYSNQR4.js → chunk-GWRAGN3M.js} +1 -1
- package/static/{chunk-ZC5ZDCDC.js → chunk-GXWGB7WO.js} +1 -1
- package/static/{chunk-25PWAXTJ.js → chunk-HGODIZTV.js} +1 -1
- package/static/{chunk-4KXJ6C4N.js → chunk-HZAB6F4Q.js} +1 -1
- package/static/chunk-I3FR3A45.js +1 -0
- package/static/{chunk-A6J6SOM6.js → chunk-I5SPA4G2.js} +1 -1
- package/static/{chunk-TGHBDJZA.js → chunk-IMFO2MI7.js} +1 -1
- package/static/{chunk-CURVLK7L.js → chunk-JNTNMIUH.js} +1 -1
- package/static/chunk-JRXG43AA.js +2 -0
- package/static/{chunk-XAIOGRBO.js → chunk-KAUCN24H.js} +1 -1
- package/static/chunk-KDUAB76O.js +1 -0
- package/static/chunk-KPOQLDWF.js +1 -0
- package/static/{chunk-HE6EDXWI.js → chunk-KWFELZTM.js} +1 -1
- package/static/{chunk-2CAAJBRO.js → chunk-L3BIP4AA.js} +1 -1
- package/static/{chunk-U75PLYIJ.js → chunk-LGIVVJDD.js} +1 -1
- package/static/{chunk-JEVBUJQ4.js → chunk-LNLBIJZD.js} +1 -1
- package/static/chunk-LTJNLOX2.js +1 -0
- package/static/{chunk-SDR3UG2F.js → chunk-LZUHREOF.js} +1 -1
- package/static/{chunk-VO4WVT6K.js → chunk-NIR4YE2E.js} +1 -1
- package/static/{chunk-S6YKBWJE.js → chunk-NJJURHX4.js} +1 -1
- package/static/chunk-NNZWSNAW.js +1 -0
- package/static/chunk-NWKBB7J4.js +1 -0
- package/static/chunk-O3YLAEVE.js +3 -0
- package/static/chunk-OUHCDDT6.js +1 -0
- package/static/{chunk-ZRBLCAOK.js → chunk-PDG7DOEF.js} +1 -1
- package/static/chunk-POUWUMC4.js +1 -0
- package/static/{chunk-YTBSB2GE.js → chunk-PPJCVBJH.js} +1 -1
- package/static/{chunk-K3MOXDU5.js → chunk-PQZLR4P3.js} +1 -1
- package/static/chunk-PVYVY3GD.js +1 -0
- package/static/chunk-Q5X5TPAG.js +1 -0
- package/static/{chunk-LFAQLJZK.js → chunk-QHJT5H4M.js} +1 -1
- package/static/{chunk-A7DSX7VP.js → chunk-R4VMWCM5.js} +1 -1
- package/static/{chunk-27XEAHMV.js → chunk-R7PLNX75.js} +1 -1
- package/static/chunk-RJULB733.js +1 -0
- package/static/{chunk-MBFMTBVJ.js → chunk-RNVPQQKT.js} +5 -5
- package/static/chunk-RTNEBRKJ.js +1 -0
- package/static/{chunk-FXM7XXWA.js → chunk-S3TTWPQA.js} +1 -1
- package/static/{chunk-6VJI4X2A.js → chunk-SDJNZULP.js} +1 -1
- package/static/chunk-SNOOCDJD.js +1 -0
- package/static/chunk-T42BV6TR.js +1 -0
- package/static/{chunk-4OV3SAUS.js → chunk-TNCKNU6I.js} +1 -1
- package/static/{chunk-2LHHXDD5.js → chunk-ULSPQ3HP.js} +1 -1
- package/static/{chunk-4EUHBTWV.js → chunk-UOK3LKSX.js} +1 -1
- package/static/{chunk-7NI353LS.js → chunk-VD5JHSDS.js} +1 -1
- package/static/{chunk-YXWF2DGF.js → chunk-XBKCQCBI.js} +1 -1
- package/static/{chunk-KBWK65KM.js → chunk-XEWLBWFF.js} +1 -1
- package/static/{chunk-FLPZB3OX.js → chunk-XTVNHFKX.js} +1 -1
- package/static/chunk-ZCSHU3D7.js +1 -0
- package/static/{chunk-FRBTL2ER.js → chunk-ZEJLIGAY.js} +1 -1
- package/static/{chunk-7H5O4BLV.js → chunk-ZHOE5VEY.js} +1 -1
- package/static/chunk-ZOMRIN3G.js +2 -0
- package/static/index.html +2 -2
- package/static/main-YKDNJ7LK.js +11 -0
- package/static/{styles-S5HVK4H5.css → styles-XLLEY5Y3.css} +1 -1
- package/server/applications/files/constants/only-office.js +0 -531
- package/server/applications/files/constants/only-office.js.map +0 -1
- package/server/applications/files/decorators/only-office-environment.decorator.js.map +0 -1
- package/server/applications/files/files-only-office.controller.js.map +0 -1
- package/server/applications/files/files-only-office.controller.spec.js.map +0 -1
- package/server/applications/files/guards/files-only-office.guard.js.map +0 -1
- package/server/applications/files/guards/files-only-office.guard.spec.js.map +0 -1
- package/server/applications/files/guards/files-only-office.strategy.js.map +0 -1
- package/server/applications/files/interfaces/only-office-config.interface.js.map +0 -1
- package/server/applications/files/services/files-only-office-manager.service.js.map +0 -1
- package/server/applications/files/services/files-only-office-manager.service.spec.js +0 -58
- package/server/applications/files/services/files-only-office-manager.service.spec.js.map +0 -1
- package/static/chunk-2XY4PMI5.js +0 -1
- package/static/chunk-33WFRCUP.js +0 -1
- package/static/chunk-3LVFDMTN.js +0 -1
- package/static/chunk-42L6C5MT.js +0 -1
- package/static/chunk-5WCQBTXW.js +0 -1
- package/static/chunk-A7R246NW.js +0 -1
- package/static/chunk-BSB4VROD.js +0 -2
- package/static/chunk-DHFQIFOF.js +0 -1
- package/static/chunk-DRHPEERW.js +0 -2
- package/static/chunk-FCGTI42I.js +0 -1
- package/static/chunk-H4RLHI3Y.js +0 -1
- package/static/chunk-ITVA26X2.js +0 -2
- package/static/chunk-IUJ4IK26.js +0 -1
- package/static/chunk-L3PDWJZ3.js +0 -3
- package/static/chunk-LBXOAKBD.js +0 -1
- package/static/chunk-LZKI5P5T.js +0 -1
- package/static/chunk-MYM43ENO.js +0 -1
- package/static/chunk-MZBO5PAR.js +0 -1
- package/static/chunk-NAH4V2R6.js +0 -2
- package/static/chunk-O7UXVNR2.js +0 -1
- package/static/chunk-PCFH5HCI.js +0 -2
- package/static/chunk-SRBOO7AO.js +0 -1
- package/static/chunk-UUX3M6DC.js +0 -1
- package/static/chunk-VJ2HWQRJ.js +0 -5
- package/static/chunk-VZPCXSRG.js +0 -2
- package/static/chunk-W72JYHOH.js +0 -1
- package/static/chunk-XHQEF2IX.js +0 -1
- package/static/chunk-XKEBQNQJ.js +0 -1
- package/static/chunk-ZERBTNFW.js +0 -13
- package/static/main-FE6GWZXU.js +0 -11
- /package/static/assets/pdfjs/web/images/{toolbarButton-sidebarToggle.svg → toolbarButton-viewsManagerToggle.svg} +0 -0
package/CHANGELOG.md
CHANGED
|
@@ -1,4 +1,45 @@
|
|
|
1
1
|
|
|
2
|
+
## [1.10.0](https://github.com/Sync-in/server/compare/v1.9.6...v1.10.0) (2026-01-07)
|
|
3
|
+
|
|
4
|
+
🔥🚀 Collabora Online integration
|
|
5
|
+
|
|
6
|
+
### Features
|
|
7
|
+
|
|
8
|
+
* **backend/frontend:files:** improve file locking logic, enhance compatibility across apps such as WebDAV and Collabora and OnlyOffice ([9eb5a17](https://github.com/Sync-in/server/commit/9eb5a17b26cc6c0928be6a16c71002e9bd4082de))
|
|
9
|
+
* **files:** add Collabora Online integration to Docker setup ([abe4fa4](https://github.com/Sync-in/server/commit/abe4fa4f89edbb79265d3cdb94aa01725a35ddce))
|
|
10
|
+
* **files:** collabora online integration ([dabeff6](https://github.com/Sync-in/server/commit/dabeff62d522cd2af4acb93c20d287221e0f2c30))
|
|
11
|
+
* **files:** Collabora Online integration, multi-editor support, and improved file locking ([e6bedc1](https://github.com/Sync-in/server/commit/e6bedc1bff837ce477ff4e791f78e66e038209b2))
|
|
12
|
+
* **files:** improve editor selection and add editor preference support ([8fea357](https://github.com/Sync-in/server/commit/8fea357925a6671393d4f02b1ff790134ca87912))
|
|
13
|
+
* **frontend/backend:files:** simplify file opening flow and improve readonly handling ([6563f44](https://github.com/Sync-in/server/commit/6563f445441c755f392508d98caa9ba261e5c2d7))
|
|
14
|
+
* **links:** allow direct access to spaces via public links; add file preview/edit/download; improve password validation ([5102e9a](https://github.com/Sync-in/server/commit/5102e9ae6b17b9924969839c69b7cbdc2421c518))
|
|
15
|
+
|
|
16
|
+
|
|
17
|
+
### Bug Fixes
|
|
18
|
+
|
|
19
|
+
* **backend:files-scheduler:** correct ordering of recent files ([aea6bcd](https://github.com/Sync-in/server/commit/aea6bcdf79763bf392b105e1c806bb70da0f00be))
|
|
20
|
+
* **backend:shares:** clear cached permissions when share link permissions are changed ([95a455b](https://github.com/Sync-in/server/commit/95a455b07d44ac4761e1f9583f8be7d90939e614))
|
|
21
|
+
* **backend:spaces:** apply MODIFY permission for PUT requests on existing files instead of ADD when the resource exists ([e73ae93](https://github.com/Sync-in/server/commit/e73ae93251e090f4f9f4aaf455f5098a3ee47a4b))
|
|
22
|
+
* **backend:webdav:** properly handle HEAD requests on directories, match lock source file when the file is a space root and extend lock owner information ([f1f4836](https://github.com/Sync-in/server/commit/f1f4836d4038eb3960a1f08cc8579176d05d1b55))
|
|
23
|
+
* **docker:collabora:** add capabilities for debian based hosts ([9275df6](https://github.com/Sync-in/server/commit/9275df653acde8a8abfa6dad5c92859a064021be))
|
|
24
|
+
* **frontend:auth:** ensure server config is initialized during authentication to prevent OTP prompt from not appearing on desktop ([e0053ae](https://github.com/Sync-in/server/commit/e0053ae608954be7a1a85b7736e150c03ecb43cb))
|
|
25
|
+
* **frontend:files:** adjust badge styles to use `white-space-normal` for consistent text wrapping ([615ea00](https://github.com/Sync-in/server/commit/615ea00bc79efe0cb3afa4e905dc3e0226336b84))
|
|
26
|
+
* **frontend:files:** correct writeable condition ([288193e](https://github.com/Sync-in/server/commit/288193e3d8f0afb95db9212a33579fb33867bb30))
|
|
27
|
+
* **frontend:files:** load tasks only when a user is logged in to prevent interceptor redirects when refreshing a public link URL ([bda58d6](https://github.com/Sync-in/server/commit/bda58d6094659231ead9c7c51878e57ed13b3d87))
|
|
28
|
+
* **frontend:i18n:** remove explicit 'en' locale definition to prevent bs-datepicker translation conflicts ([13529f1](https://github.com/Sync-in/server/commit/13529f1b7c68e468c3aa195c81c4ce20bcd31c66))
|
|
29
|
+
* **frontend:spaces:** display deactivation date when space is disabled ([7df2535](https://github.com/Sync-in/server/commit/7df2535f3f54e3ec6bced3525b16fb90edf1560b))
|
|
30
|
+
|
|
31
|
+
## [1.9.6](https://github.com/Sync-in/server/compare/v1.9.5...v1.9.6) (2025-12-16)
|
|
32
|
+
|
|
33
|
+
### Bug Fixes
|
|
34
|
+
|
|
35
|
+
* **backend:files:** skip adding recents for trashed files ([c445196](https://github.com/Sync-in/server/commit/c445196914b2d351fba9218698a24496b1d6036c))
|
|
36
|
+
* **backend:schedulers:** resolve scheduled methods being skipped because of @Timeout decorator overlap ([50f4140](https://github.com/Sync-in/server/commit/50f4140a7b0b478e6b499ea8884b43f13595bb71))
|
|
37
|
+
* **frontend:files:** enable autoplay for video in media viewer component ([20fe25f](https://github.com/Sync-in/server/commit/20fe25fba00987994076d09489febd5593e08cef))
|
|
38
|
+
* **frontend:files:** remove hidden class from buttons for consistent visibility across breakpoints ([a60538a](https://github.com/Sync-in/server/commit/a60538ad01c675dacdac7ed4d80ca2bdf5f369ba))
|
|
39
|
+
* **frontend:files:** update file metadata timestamps on save and align OnlyOffice state change handlers ([db768e1](https://github.com/Sync-in/server/commit/db768e14452f4712df9f443350c214e0700b7270))
|
|
40
|
+
* **frontend:search:** improve search input layout and update filter button visibility for responsiveness ([09ebce6](https://github.com/Sync-in/server/commit/09ebce612fa2d72699a4d60bf9896f8e3c0fc4e4))
|
|
41
|
+
* **frontend:spaces:** show disabled space message to space managers ([f8bcdf7](https://github.com/Sync-in/server/commit/f8bcdf7fdd4b25abc2ba4b74715adbb0ae04a3e3))
|
|
42
|
+
|
|
2
43
|
## [1.9.3](https://github.com/Sync-in/server/compare/v1.9.1...v1.9.3) (2025-12-07)
|
|
3
44
|
|
|
4
45
|
### Security Fixes
|
|
@@ -10,10 +51,6 @@
|
|
|
10
51
|
* **frontend:files:** fix DataTransfer usage after async operations and delay overwrite until analysis completes to restore overwrite on dropped files ([d9935e5](https://github.com/Sync-in/server/commit/d9935e5a3887448635c30fd49f22657461177610))
|
|
11
52
|
* **frontend:styles:** add min-width on app-auth background class ([dffd5e5](https://github.com/Sync-in/server/commit/dffd5e5c7a1a65994970bedf33a95dd00827aa94))
|
|
12
53
|
|
|
13
|
-
### Community Highlights ❤️
|
|
14
|
-
|
|
15
|
-
We would like to thank @x0root for reporting this vulnerability and helping improve the security of the project.
|
|
16
|
-
|
|
17
54
|
## [1.9.1](https://github.com/Sync-in/server/compare/v1.8.1...v1.9.1) (2025-11-25)
|
|
18
55
|
|
|
19
56
|
### Features
|
|
@@ -151,16 +151,26 @@ applications:
|
|
|
151
151
|
# enable onlyoffice integration
|
|
152
152
|
# default: false
|
|
153
153
|
enabled: false
|
|
154
|
-
# For an external server (e.g., https://onlyoffice.domain.com), remember the url must be accessible from browser!
|
|
155
|
-
# If externalServer is empty (case of official docker compose), we use the local instance
|
|
156
|
-
# default: null
|
|
157
|
-
externalServer:
|
|
158
154
|
# Secret used for jwt tokens, it must be the same on the onlyoffice server
|
|
159
155
|
# required
|
|
160
156
|
secret: onlyOfficeSecret
|
|
157
|
+
# If no external server is configured, the local Nginx service from the Docker Compose setup is used.
|
|
158
|
+
# If an external server is configured, it will be used instead.
|
|
159
|
+
# Note: when using an external server (e.g. https://onlyoffice.domain.com), make sure it is accessible from the client/browser.
|
|
160
|
+
# default: null
|
|
161
|
+
externalServer:
|
|
161
162
|
# If you use https, set to `true`.
|
|
162
|
-
# default:
|
|
163
|
+
# default: false
|
|
163
164
|
verifySSL: false
|
|
165
|
+
collabora:
|
|
166
|
+
# enable collabora online integration
|
|
167
|
+
# default: false
|
|
168
|
+
enabled: false
|
|
169
|
+
# If no external server is configured, the local Nginx service from the Docker Compose setup is used.
|
|
170
|
+
# If an external server is configured, it will be used instead.
|
|
171
|
+
# Note: when using an external server (e.g. https://collabora.domain.com), make sure it is accessible from the client/browser.
|
|
172
|
+
# default: null
|
|
173
|
+
externalServer:
|
|
164
174
|
appStore:
|
|
165
175
|
# repository: `public` | `local`
|
|
166
176
|
# default: `public`
|
package/package.json
CHANGED
|
@@ -1,6 +1,6 @@
|
|
|
1
1
|
{
|
|
2
2
|
"name": "@sync-in/server",
|
|
3
|
-
"version": "1.
|
|
3
|
+
"version": "1.10.0",
|
|
4
4
|
"description": "The secure, open-source platform for file storage, sharing, collaboration, and sync",
|
|
5
5
|
"author": {
|
|
6
6
|
"name": "Johan Legrand",
|
|
@@ -19,7 +19,7 @@
|
|
|
19
19
|
"!win32"
|
|
20
20
|
],
|
|
21
21
|
"engines": {
|
|
22
|
-
"node": ">=22
|
|
22
|
+
"node": ">= 22"
|
|
23
23
|
},
|
|
24
24
|
"funding": [
|
|
25
25
|
{
|
|
@@ -76,38 +76,37 @@
|
|
|
76
76
|
"@fastify/helmet": "13.0.2",
|
|
77
77
|
"@fastify/multipart": "9.3.0",
|
|
78
78
|
"@fastify/send": "4.1.0",
|
|
79
|
-
"@fastify/static": "
|
|
79
|
+
"@fastify/static": "9.0.0",
|
|
80
80
|
"@knaadh/nestjs-drizzle-mysql2": "1.2.0",
|
|
81
81
|
"@lukeed/ms": "2.0.2",
|
|
82
82
|
"@nestjs/axios": "4.0.1",
|
|
83
|
-
"@nestjs/common": "11.1.
|
|
83
|
+
"@nestjs/common": "11.1.11",
|
|
84
84
|
"@nestjs/config": "4.0.2",
|
|
85
|
-
"@nestjs/core": "11.1.
|
|
86
|
-
"@nestjs/jwt": "11.0.
|
|
85
|
+
"@nestjs/core": "11.1.11",
|
|
86
|
+
"@nestjs/jwt": "11.0.2",
|
|
87
87
|
"@nestjs/passport": "11.0.5",
|
|
88
|
-
"@nestjs/platform-fastify": "11.1.
|
|
89
|
-
"@nestjs/platform-socket.io": "11.1.
|
|
90
|
-
"@nestjs/schedule": "6.0
|
|
91
|
-
"@nestjs/websockets": "11.1.
|
|
88
|
+
"@nestjs/platform-fastify": "11.1.11",
|
|
89
|
+
"@nestjs/platform-socket.io": "11.1.11",
|
|
90
|
+
"@nestjs/schedule": "6.1.0",
|
|
91
|
+
"@nestjs/websockets": "11.1.11",
|
|
92
92
|
"@socket.io/cluster-adapter": "0.3.0",
|
|
93
93
|
"@socket.io/redis-adapter": "8.3.0",
|
|
94
|
-
"@types/text-to-svg": "3.1.4",
|
|
95
94
|
"archiver": "7.0.1",
|
|
96
95
|
"bcryptjs": "3.0.3",
|
|
97
96
|
"class-transformer": "0.5.1",
|
|
98
97
|
"class-validator": "0.14.3",
|
|
99
98
|
"deepmerge": "4.3.1",
|
|
100
|
-
"drizzle-kit": "0.31.
|
|
101
|
-
"drizzle-orm": "0.
|
|
102
|
-
"fast-xml-parser": "5.3.
|
|
103
|
-
"fs-extra": "11.3.
|
|
99
|
+
"drizzle-kit": "0.31.8",
|
|
100
|
+
"drizzle-orm": "0.45.1",
|
|
101
|
+
"fast-xml-parser": "5.3.3",
|
|
102
|
+
"fs-extra": "11.3.3",
|
|
104
103
|
"html-to-text": "9.0.5",
|
|
105
104
|
"js-yaml": "4.1.1",
|
|
106
|
-
"ldapts": "8.
|
|
105
|
+
"ldapts": "8.1.3",
|
|
107
106
|
"mime-types": "3.0.2",
|
|
108
|
-
"mysql2": "3.
|
|
107
|
+
"mysql2": "3.16.0",
|
|
109
108
|
"nestjs-pino": "4.5.0",
|
|
110
|
-
"nodemailer": "7.0.
|
|
109
|
+
"nodemailer": "7.0.12",
|
|
111
110
|
"passport-http": "0.3.0",
|
|
112
111
|
"passport-jwt": "4.0.1",
|
|
113
112
|
"passport-local": "1.0.0",
|
|
@@ -117,7 +116,7 @@
|
|
|
117
116
|
"redis": "5.10.0",
|
|
118
117
|
"sax": "1.4.3",
|
|
119
118
|
"sharp": "0.34.5",
|
|
120
|
-
"socket.io": "4.8.
|
|
119
|
+
"socket.io": "4.8.3",
|
|
121
120
|
"tar": "7.5.2",
|
|
122
121
|
"text-to-svg": "3.1.5",
|
|
123
122
|
"time2fa": "1.4.2",
|
package/server/app.bootstrap.js
CHANGED
|
@@ -86,7 +86,7 @@ async function appBootstrap() {
|
|
|
86
86
|
prefixAvoidTrailingSlash: true
|
|
87
87
|
});
|
|
88
88
|
/* SECURITY */ await app.register(_helmet.default, {
|
|
89
|
-
contentSecurityPolicy: (0, _appconstants.CONTENT_SECURITY_POLICY)(_configenvironment.configuration.applications.files.onlyoffice.externalServer)
|
|
89
|
+
contentSecurityPolicy: (0, _appconstants.CONTENT_SECURITY_POLICY)(_configenvironment.configuration.applications.files.onlyoffice.externalServer, _configenvironment.configuration.applications.files.collabora.externalServer)
|
|
90
90
|
});
|
|
91
91
|
/* COOKIES */ // we use csrf secret to unsign csrf cookie
|
|
92
92
|
await app.register(_cookie.default, {
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"sources":["../../backend/src/app.bootstrap.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 fastifyCookie from '@fastify/cookie'\nimport fastifyHelmet from '@fastify/helmet'\nimport multipart from '@fastify/multipart'\nimport { ClassSerializerInterceptor, ValidationPipe } from '@nestjs/common'\nimport { NestFactory, Reflector } from '@nestjs/core'\nimport { FastifyAdapter, NestFastifyApplication } from '@nestjs/platform-fastify'\nimport { FastifyRequest } from 'fastify'\nimport { Logger, LoggerErrorInterceptor } from 'nestjs-pino'\nimport { CONTENT_SECURITY_POLICY } from './app.constants'\nimport { AppModule } from './app.module'\nimport { HTTP_WEBDAV_METHOD } from './applications/applications.constants'\nimport { WEBDAV_NS, WEBDAV_SPACES } from './applications/webdav/constants/routes'\nimport { IS_TEST_ENV, STATIC_PATH } from './configuration/config.constants'\nimport { configuration } from './configuration/config.environment'\nimport { WebSocketAdapter } from './infrastructure/websocket/adapters/web-socket.adapter'\n\nexport async function appBootstrap(): Promise<NestFastifyApplication> {\n /* APP */\n const fastifyAdapter = new FastifyAdapter({\n logger: false,\n trustProxy: configuration.server.trustProxy,\n routerOptions: {\n ignoreTrailingSlash: true,\n maxParamLength: 256\n },\n bodyLimit: 26214400 /* 25 MB */\n })\n const app: NestFastifyApplication = await NestFactory.create<NestFastifyApplication>(AppModule, fastifyAdapter, {\n bufferLogs: true\n })\n\n /* NestJS starts listening for shutdown hooks */\n app.enableShutdownHooks()\n\n /* Fastify instance */\n const fastifyInstance = fastifyAdapter.getInstance()\n\n /* LOGGER */\n app.useLogger(IS_TEST_ENV ? ['fatal'] : app.get(Logger))\n\n /* PARSER */\n // xml body parser is used for webdav methods\n app.useBodyParser(['application/xml', 'text/xml'])\n // add webdav methods\n for (const method of Object.values(HTTP_WEBDAV_METHOD)) {\n fastifyInstance.addHttpMethod(method, { hasBody: true })\n }\n // '*' body parser allow binary data as stream (unlimited body size)\n fastifyInstance.addContentTypeParser('*', { bodyLimit: 0 }, (_req: FastifyRequest, _payload: FastifyRequest['raw'], done) => done(null))\n\n // Joplin clients send incorrect `Content-Type` headers when syncing over WebDAV (issue: https://github.com/laurent22/joplin/issues/122499)\n // This hook intercepts matching requests and sets `application/octet-stream` to ensure compatibility and successful sync.\n // todo: remove it when fixed on Joplin side\n fastifyInstance.addHook('onRequest', async (req, _reply) => {\n if ((req.headers['user-agent'] || '').indexOf('Joplin') !== -1 && req.originalUrl.startsWith(WEBDAV_SPACES[WEBDAV_NS.WEBDAV].route)) {\n req.headers['content-type'] = 'application/octet-stream'\n }\n })\n\n /* INTERCEPTORS */\n app.useGlobalInterceptors(\n new LoggerErrorInterceptor(),\n new ClassSerializerInterceptor(app.get(Reflector), {\n excludePrefixes: ['_']\n })\n )\n /* VALIDATION */\n app.useGlobalPipes(new ValidationPipe({ transform: true, whitelist: true }))\n\n /* STATIC */\n app.useStaticAssets({ root: STATIC_PATH, prefixAvoidTrailingSlash: true })\n\n /* SECURITY */\n await app.register(fastifyHelmet, {
|
|
1
|
+
{"version":3,"sources":["../../backend/src/app.bootstrap.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 fastifyCookie from '@fastify/cookie'\nimport fastifyHelmet from '@fastify/helmet'\nimport multipart from '@fastify/multipart'\nimport { ClassSerializerInterceptor, ValidationPipe } from '@nestjs/common'\nimport { NestFactory, Reflector } from '@nestjs/core'\nimport { FastifyAdapter, NestFastifyApplication } from '@nestjs/platform-fastify'\nimport { FastifyRequest } from 'fastify'\nimport { Logger, LoggerErrorInterceptor } from 'nestjs-pino'\nimport { CONTENT_SECURITY_POLICY } from './app.constants'\nimport { AppModule } from './app.module'\nimport { HTTP_WEBDAV_METHOD } from './applications/applications.constants'\nimport { WEBDAV_NS, WEBDAV_SPACES } from './applications/webdav/constants/routes'\nimport { IS_TEST_ENV, STATIC_PATH } from './configuration/config.constants'\nimport { configuration } from './configuration/config.environment'\nimport { WebSocketAdapter } from './infrastructure/websocket/adapters/web-socket.adapter'\n\nexport async function appBootstrap(): Promise<NestFastifyApplication> {\n /* APP */\n const fastifyAdapter = new FastifyAdapter({\n logger: false,\n trustProxy: configuration.server.trustProxy,\n routerOptions: {\n ignoreTrailingSlash: true,\n maxParamLength: 256\n },\n bodyLimit: 26214400 /* 25 MB */\n })\n const app: NestFastifyApplication = await NestFactory.create<NestFastifyApplication>(AppModule, fastifyAdapter, {\n bufferLogs: true\n })\n\n /* NestJS starts listening for shutdown hooks */\n app.enableShutdownHooks()\n\n /* Fastify instance */\n const fastifyInstance = fastifyAdapter.getInstance()\n\n /* LOGGER */\n app.useLogger(IS_TEST_ENV ? ['fatal'] : app.get(Logger))\n\n /* PARSER */\n // xml body parser is used for webdav methods\n app.useBodyParser(['application/xml', 'text/xml'])\n // add webdav methods\n for (const method of Object.values(HTTP_WEBDAV_METHOD)) {\n fastifyInstance.addHttpMethod(method, { hasBody: true })\n }\n // '*' body parser allow binary data as stream (unlimited body size)\n fastifyInstance.addContentTypeParser('*', { bodyLimit: 0 }, (_req: FastifyRequest, _payload: FastifyRequest['raw'], done) => done(null))\n\n // Joplin clients send incorrect `Content-Type` headers when syncing over WebDAV (issue: https://github.com/laurent22/joplin/issues/122499)\n // This hook intercepts matching requests and sets `application/octet-stream` to ensure compatibility and successful sync.\n // todo: remove it when fixed on Joplin side\n fastifyInstance.addHook('onRequest', async (req, _reply) => {\n if ((req.headers['user-agent'] || '').indexOf('Joplin') !== -1 && req.originalUrl.startsWith(WEBDAV_SPACES[WEBDAV_NS.WEBDAV].route)) {\n req.headers['content-type'] = 'application/octet-stream'\n }\n })\n\n /* INTERCEPTORS */\n app.useGlobalInterceptors(\n new LoggerErrorInterceptor(),\n new ClassSerializerInterceptor(app.get(Reflector), {\n excludePrefixes: ['_']\n })\n )\n /* VALIDATION */\n app.useGlobalPipes(new ValidationPipe({ transform: true, whitelist: true }))\n\n /* STATIC */\n app.useStaticAssets({ root: STATIC_PATH, prefixAvoidTrailingSlash: true })\n\n /* SECURITY */\n await app.register(fastifyHelmet, {\n contentSecurityPolicy: CONTENT_SECURITY_POLICY(\n configuration.applications.files.onlyoffice.externalServer,\n configuration.applications.files.collabora.externalServer\n )\n })\n\n /* COOKIES */\n // we use csrf secret to unsign csrf cookie\n await app.register(fastifyCookie, {\n secret: configuration.auth.token.csrf.secret,\n parseOptions: {\n secure: 'auto',\n sameSite: configuration.auth.cookieSameSite,\n httpOnly: true\n }\n })\n\n /* UPLOAD */\n await app.register(multipart, {\n preservePath: true,\n limits: { parts: Infinity, fileSize: configuration.applications.files.maxUploadSize }\n })\n\n /* WEBSOCKET */\n if (!IS_TEST_ENV) {\n const webSocketAdapter = new WebSocketAdapter(app)\n await webSocketAdapter.initAdapter()\n app.useWebSocketAdapter(webSocketAdapter)\n }\n\n return app\n}\n"],"names":["appBootstrap","fastifyAdapter","FastifyAdapter","logger","trustProxy","configuration","server","routerOptions","ignoreTrailingSlash","maxParamLength","bodyLimit","app","NestFactory","create","AppModule","bufferLogs","enableShutdownHooks","fastifyInstance","getInstance","useLogger","IS_TEST_ENV","get","Logger","useBodyParser","method","Object","values","HTTP_WEBDAV_METHOD","addHttpMethod","hasBody","addContentTypeParser","_req","_payload","done","addHook","req","_reply","headers","indexOf","originalUrl","startsWith","WEBDAV_SPACES","WEBDAV_NS","WEBDAV","route","useGlobalInterceptors","LoggerErrorInterceptor","ClassSerializerInterceptor","Reflector","excludePrefixes","useGlobalPipes","ValidationPipe","transform","whitelist","useStaticAssets","root","STATIC_PATH","prefixAvoidTrailingSlash","register","fastifyHelmet","contentSecurityPolicy","CONTENT_SECURITY_POLICY","applications","files","onlyoffice","externalServer","collabora","fastifyCookie","secret","auth","token","csrf","parseOptions","secure","sameSite","cookieSameSite","httpOnly","multipart","preservePath","limits","parts","Infinity","fileSize","maxUploadSize","webSocketAdapter","WebSocketAdapter","initAdapter","useWebSocketAdapter"],"mappings":"AAAA;;;;CAIC;;;;+BAkBqBA;;;eAAAA;;;+DAhBI;+DACA;kEACJ;wBACqC;sBACpB;iCACgB;4BAER;8BACP;2BACd;uCACS;wBACM;iCACA;mCACX;kCACG;;;;;;AAE1B,eAAeA;IACpB,OAAO,GACP,MAAMC,iBAAiB,IAAIC,+BAAc,CAAC;QACxCC,QAAQ;QACRC,YAAYC,gCAAa,CAACC,MAAM,CAACF,UAAU;QAC3CG,eAAe;YACbC,qBAAqB;YACrBC,gBAAgB;QAClB;QACAC,WAAW,SAAS,SAAS;IAC/B;IACA,MAAMC,MAA8B,MAAMC,iBAAW,CAACC,MAAM,CAAyBC,oBAAS,EAAEb,gBAAgB;QAC9Gc,YAAY;IACd;IAEA,8CAA8C,GAC9CJ,IAAIK,mBAAmB;IAEvB,oBAAoB,GACpB,MAAMC,kBAAkBhB,eAAeiB,WAAW;IAElD,UAAU,GACVP,IAAIQ,SAAS,CAACC,4BAAW,GAAG;QAAC;KAAQ,GAAGT,IAAIU,GAAG,CAACC,kBAAM;IAEtD,UAAU,GACV,6CAA6C;IAC7CX,IAAIY,aAAa,CAAC;QAAC;QAAmB;KAAW;IACjD,qBAAqB;IACrB,KAAK,MAAMC,UAAUC,OAAOC,MAAM,CAACC,yCAAkB,EAAG;QACtDV,gBAAgBW,aAAa,CAACJ,QAAQ;YAAEK,SAAS;QAAK;IACxD;IACA,oEAAoE;IACpEZ,gBAAgBa,oBAAoB,CAAC,KAAK;QAAEpB,WAAW;IAAE,GAAG,CAACqB,MAAsBC,UAAiCC,OAASA,KAAK;IAElI,2IAA2I;IAC3I,0HAA0H;IAC1H,4CAA4C;IAC5ChB,gBAAgBiB,OAAO,CAAC,aAAa,OAAOC,KAAKC;QAC/C,IAAI,AAACD,CAAAA,IAAIE,OAAO,CAAC,aAAa,IAAI,EAAC,EAAGC,OAAO,CAAC,cAAc,CAAC,KAAKH,IAAII,WAAW,CAACC,UAAU,CAACC,qBAAa,CAACC,iBAAS,CAACC,MAAM,CAAC,CAACC,KAAK,GAAG;YACnIT,IAAIE,OAAO,CAAC,eAAe,GAAG;QAChC;IACF;IAEA,gBAAgB,GAChB1B,IAAIkC,qBAAqB,CACvB,IAAIC,kCAAsB,IAC1B,IAAIC,kCAA0B,CAACpC,IAAIU,GAAG,CAAC2B,eAAS,GAAG;QACjDC,iBAAiB;YAAC;SAAI;IACxB;IAEF,cAAc,GACdtC,IAAIuC,cAAc,CAAC,IAAIC,sBAAc,CAAC;QAAEC,WAAW;QAAMC,WAAW;IAAK;IAEzE,UAAU,GACV1C,IAAI2C,eAAe,CAAC;QAAEC,MAAMC,4BAAW;QAAEC,0BAA0B;IAAK;IAExE,YAAY,GACZ,MAAM9C,IAAI+C,QAAQ,CAACC,eAAa,EAAE;QAChCC,uBAAuBC,IAAAA,qCAAuB,EAC5CxD,gCAAa,CAACyD,YAAY,CAACC,KAAK,CAACC,UAAU,CAACC,cAAc,EAC1D5D,gCAAa,CAACyD,YAAY,CAACC,KAAK,CAACG,SAAS,CAACD,cAAc;IAE7D;IAEA,WAAW,GACX,2CAA2C;IAC3C,MAAMtD,IAAI+C,QAAQ,CAACS,eAAa,EAAE;QAChCC,QAAQ/D,gCAAa,CAACgE,IAAI,CAACC,KAAK,CAACC,IAAI,CAACH,MAAM;QAC5CI,cAAc;YACZC,QAAQ;YACRC,UAAUrE,gCAAa,CAACgE,IAAI,CAACM,cAAc;YAC3CC,UAAU;QACZ;IACF;IAEA,UAAU,GACV,MAAMjE,IAAI+C,QAAQ,CAACmB,kBAAS,EAAE;QAC5BC,cAAc;QACdC,QAAQ;YAAEC,OAAOC;YAAUC,UAAU7E,gCAAa,CAACyD,YAAY,CAACC,KAAK,CAACoB,aAAa;QAAC;IACtF;IAEA,aAAa,GACb,IAAI,CAAC/D,4BAAW,EAAE;QAChB,MAAMgE,mBAAmB,IAAIC,kCAAgB,CAAC1E;QAC9C,MAAMyE,iBAAiBE,WAAW;QAClC3E,IAAI4E,mBAAmB,CAACH;IAC1B;IAEA,OAAOzE;AACT"}
|
package/server/app.constants.js
CHANGED
|
@@ -29,12 +29,13 @@ _export(exports, {
|
|
|
29
29
|
const _appfunctions = require("./app.functions");
|
|
30
30
|
const VERSION = (0, _appfunctions.loadVersion)();
|
|
31
31
|
const USER_AGENT = `sync-in-server/${VERSION}`;
|
|
32
|
-
const CONTENT_SECURITY_POLICY = (onlyOfficeServer)=>({
|
|
32
|
+
const CONTENT_SECURITY_POLICY = (onlyOfficeServer, collaboraServer)=>({
|
|
33
33
|
useDefaults: false,
|
|
34
34
|
directives: {
|
|
35
35
|
defaultSrc: [
|
|
36
36
|
"'self'",
|
|
37
|
-
onlyOfficeServer || ''
|
|
37
|
+
onlyOfficeServer || '',
|
|
38
|
+
collaboraServer || ''
|
|
38
39
|
],
|
|
39
40
|
scriptSrc: [
|
|
40
41
|
"'self'",
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"sources":["../../backend/src/app.constants.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 { loadVersion } from './app.functions'\n\nexport const VERSION = loadVersion()\nexport const USER_AGENT = `sync-in-server/${VERSION}`\nexport const CONTENT_SECURITY_POLICY = (onlyOfficeServer: string) => ({\n useDefaults: false,\n directives: {\n defaultSrc: [\"'self'\", onlyOfficeServer || ''],\n scriptSrc: [\"'self'\", \"'unsafe-inline'\", onlyOfficeServer || ''],\n styleSrc: [\"'self'\", \"'unsafe-inline'\"],\n imgSrc: [\"'self'\", 'data:'],\n fontSrc: [\"'self'\"]\n }\n})\n\nexport const CONNECT_ERROR_CODE = new Set(['ECONNREFUSED', 'ETIMEDOUT', 'ENOTFOUND'])\n"],"names":["CONNECT_ERROR_CODE","CONTENT_SECURITY_POLICY","USER_AGENT","VERSION","loadVersion","onlyOfficeServer","useDefaults","directives","defaultSrc","scriptSrc","styleSrc","imgSrc","fontSrc","Set"],"mappings":"AAAA;;;;CAIC;;;;;;;;;;;QAiBYA;eAAAA;;QAXAC;eAAAA;;QADAC;eAAAA;;QADAC;eAAAA;;;8BAFe;AAErB,MAAMA,UAAUC,IAAAA,yBAAW;AAC3B,MAAMF,aAAa,CAAC,eAAe,EAAEC,SAAS;AAC9C,MAAMF,0BAA0B,CAACI,
|
|
1
|
+
{"version":3,"sources":["../../backend/src/app.constants.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 { loadVersion } from './app.functions'\n\nexport const VERSION = loadVersion()\nexport const USER_AGENT = `sync-in-server/${VERSION}`\nexport const CONTENT_SECURITY_POLICY = (onlyOfficeServer: string, collaboraServer: string) => ({\n useDefaults: false,\n directives: {\n defaultSrc: [\"'self'\", onlyOfficeServer || '', collaboraServer || ''],\n scriptSrc: [\"'self'\", \"'unsafe-inline'\", onlyOfficeServer || ''],\n styleSrc: [\"'self'\", \"'unsafe-inline'\"],\n imgSrc: [\"'self'\", 'data:'],\n fontSrc: [\"'self'\"]\n }\n})\n\nexport const CONNECT_ERROR_CODE = new Set(['ECONNREFUSED', 'ETIMEDOUT', 'ENOTFOUND'])\n"],"names":["CONNECT_ERROR_CODE","CONTENT_SECURITY_POLICY","USER_AGENT","VERSION","loadVersion","onlyOfficeServer","collaboraServer","useDefaults","directives","defaultSrc","scriptSrc","styleSrc","imgSrc","fontSrc","Set"],"mappings":"AAAA;;;;CAIC;;;;;;;;;;;QAiBYA;eAAAA;;QAXAC;eAAAA;;QADAC;eAAAA;;QADAC;eAAAA;;;8BAFe;AAErB,MAAMA,UAAUC,IAAAA,yBAAW;AAC3B,MAAMF,aAAa,CAAC,eAAe,EAAEC,SAAS;AAC9C,MAAMF,0BAA0B,CAACI,kBAA0BC,kBAA6B,CAAA;QAC7FC,aAAa;QACbC,YAAY;YACVC,YAAY;gBAAC;gBAAUJ,oBAAoB;gBAAIC,mBAAmB;aAAG;YACrEI,WAAW;gBAAC;gBAAU;gBAAmBL,oBAAoB;aAAG;YAChEM,UAAU;gBAAC;gBAAU;aAAkB;YACvCC,QAAQ;gBAAC;gBAAU;aAAQ;YAC3BC,SAAS;gBAAC;aAAS;QACrB;IACF,CAAA;AAEO,MAAMb,qBAAqB,IAAIc,IAAI;IAAC;IAAgB;IAAa;CAAY"}
|
|
@@ -23,9 +23,6 @@ _export(exports, {
|
|
|
23
23
|
get CACHE_LOCK_PREFIX () {
|
|
24
24
|
return CACHE_LOCK_PREFIX;
|
|
25
25
|
},
|
|
26
|
-
get CACHE_ONLY_OFFICE () {
|
|
27
|
-
return CACHE_ONLY_OFFICE;
|
|
28
|
-
},
|
|
29
26
|
get CACHE_TASK_PREFIX () {
|
|
30
27
|
return CACHE_TASK_PREFIX;
|
|
31
28
|
},
|
|
@@ -39,7 +36,7 @@ const CACHE_TASK_TTL = 86400// one day
|
|
|
39
36
|
const CACHE_LOCK_PREFIX = 'flock';
|
|
40
37
|
const CACHE_LOCK_DEFAULT_TTL = 28800// 8 hours in seconds
|
|
41
38
|
;
|
|
42
|
-
const CACHE_LOCK_FILE_TTL = 3600
|
|
43
|
-
|
|
39
|
+
const CACHE_LOCK_FILE_TTL = 3600// cache only office = `office|${fileId}` => docKey
|
|
40
|
+
;
|
|
44
41
|
|
|
45
42
|
//# sourceMappingURL=cache.js.map
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"sources":["../../../../../backend/src/applications/files/constants/cache.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\n// cache task key = `ftask-$(userId}-${taskId}` => FileTask\nexport const CACHE_TASK_PREFIX = 'ftask' as const\nexport const CACHE_TASK_TTL = 86400 as const // one day\n// cache token key = `flock|token?:${uuid}|path:${path}|ownerId?:${number}|spaceId?:${number}|...props` => FileLock\nexport const CACHE_LOCK_PREFIX = 'flock' as const\nexport const CACHE_LOCK_DEFAULT_TTL = 28800 as const // 8 hours in seconds\nexport const CACHE_LOCK_FILE_TTL = 3600 as const\n// cache only office = `office|${fileId}` => docKey\
|
|
1
|
+
{"version":3,"sources":["../../../../../backend/src/applications/files/constants/cache.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\n// cache task key = `ftask-$(userId}-${taskId}` => FileTask\nexport const CACHE_TASK_PREFIX = 'ftask' as const\nexport const CACHE_TASK_TTL = 86400 as const // one day\n// cache token key = `flock|token?:${uuid}|path:${path}|ownerId?:${number}|spaceId?:${number}|...props` => FileLock\nexport const CACHE_LOCK_PREFIX = 'flock' as const\nexport const CACHE_LOCK_DEFAULT_TTL = 28800 as const // 8 hours in seconds\nexport const CACHE_LOCK_FILE_TTL = 3600 as const\n// cache only office = `office|${fileId}` => docKey\n"],"names":["CACHE_LOCK_DEFAULT_TTL","CACHE_LOCK_FILE_TTL","CACHE_LOCK_PREFIX","CACHE_TASK_PREFIX","CACHE_TASK_TTL"],"mappings":"AAAA;;;;CAIC,GAED,2DAA2D;;;;;;;;;;;;QAK9CA;eAAAA;;QACAC;eAAAA;;QAFAC;eAAAA;;QAHAC;eAAAA;;QACAC;eAAAA;;;AADN,MAAMD,oBAAoB;AAC1B,MAAMC,iBAAiB,KAAe,UAAU;;AAEhD,MAAMF,oBAAoB;AAC1B,MAAMF,yBAAyB,KAAe,qBAAqB;;AACnE,MAAMC,sBAAsB,IACnC,mDAAmD"}
|
|
@@ -16,6 +16,9 @@ _export(exports, {
|
|
|
16
16
|
get COMPRESSION_EXTENSION () {
|
|
17
17
|
return COMPRESSION_EXTENSION;
|
|
18
18
|
},
|
|
19
|
+
get DEFAULT_CHECKSUM_ALGORITHM () {
|
|
20
|
+
return DEFAULT_CHECKSUM_ALGORITHM;
|
|
21
|
+
},
|
|
19
22
|
get DEFAULT_HIGH_WATER_MARK () {
|
|
20
23
|
return DEFAULT_HIGH_WATER_MARK;
|
|
21
24
|
},
|
|
@@ -26,6 +29,7 @@ _export(exports, {
|
|
|
26
29
|
return EXTRA_MIMES_TYPE;
|
|
27
30
|
}
|
|
28
31
|
});
|
|
32
|
+
const DEFAULT_CHECKSUM_ALGORITHM = 'sha512-256';
|
|
29
33
|
const DEFAULT_HIGH_WATER_MARK = 1024 * 1024;
|
|
30
34
|
const DEFAULT_MIME_TYPE = 'application/octet-stream';
|
|
31
35
|
const EXTRA_MIMES_TYPE = new Map([
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"sources":["../../../../../backend/src/applications/files/constants/files.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\nexport const DEFAULT_HIGH_WATER_MARK = 1024 * 1024\nexport const DEFAULT_MIME_TYPE = 'application/octet-stream'\nexport const EXTRA_MIMES_TYPE = new Map([\n ['.ts', 'text-typescript'],\n ['.py', 'text-x-python'],\n ['.tgz', 'application-gzip'],\n ['.gz', 'application-gzip'],\n ['.gzip', 'application-gzip']\n])\nexport const COMPRESSION_EXTENSION = new Map([\n ['.zip', 'zip'],\n ['.gzip', 'gzip'],\n ['.tgz', 'tgz'],\n ['.gz', 'tgz'],\n ['.tar.gz', 'tgz'],\n ['.tar', 'tar']\n])\n"],"names":["COMPRESSION_EXTENSION","DEFAULT_HIGH_WATER_MARK","DEFAULT_MIME_TYPE","EXTRA_MIMES_TYPE","Map"],"mappings":"AAAA;;;;CAIC;;;;;;;;;;;
|
|
1
|
+
{"version":3,"sources":["../../../../../backend/src/applications/files/constants/files.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\nexport const DEFAULT_CHECKSUM_ALGORITHM = 'sha512-256'\nexport const DEFAULT_HIGH_WATER_MARK = 1024 * 1024\nexport const DEFAULT_MIME_TYPE = 'application/octet-stream'\nexport const EXTRA_MIMES_TYPE = new Map([\n ['.ts', 'text-typescript'],\n ['.py', 'text-x-python'],\n ['.tgz', 'application-gzip'],\n ['.gz', 'application-gzip'],\n ['.gzip', 'application-gzip']\n])\nexport const COMPRESSION_EXTENSION = new Map([\n ['.zip', 'zip'],\n ['.gzip', 'gzip'],\n ['.tgz', 'tgz'],\n ['.gz', 'tgz'],\n ['.tar.gz', 'tgz'],\n ['.tar', 'tar']\n])\n"],"names":["COMPRESSION_EXTENSION","DEFAULT_CHECKSUM_ALGORITHM","DEFAULT_HIGH_WATER_MARK","DEFAULT_MIME_TYPE","EXTRA_MIMES_TYPE","Map"],"mappings":"AAAA;;;;CAIC;;;;;;;;;;;QAYYA;eAAAA;;QAVAC;eAAAA;;QACAC;eAAAA;;QACAC;eAAAA;;QACAC;eAAAA;;;AAHN,MAAMH,6BAA6B;AACnC,MAAMC,0BAA0B,OAAO;AACvC,MAAMC,oBAAoB;AAC1B,MAAMC,mBAAmB,IAAIC,IAAI;IACtC;QAAC;QAAO;KAAkB;IAC1B;QAAC;QAAO;KAAgB;IACxB;QAAC;QAAQ;KAAmB;IAC5B;QAAC;QAAO;KAAmB;IAC3B;QAAC;QAAS;KAAmB;CAC9B;AACM,MAAML,wBAAwB,IAAIK,IAAI;IAC3C;QAAC;QAAQ;KAAM;IACf;QAAC;QAAS;KAAO;IACjB;QAAC;QAAQ;KAAM;IACf;QAAC;QAAO;KAAM;IACd;QAAC;QAAW;KAAM;IAClB;QAAC;QAAQ;KAAM;CAChB"}
|
|
@@ -18,6 +18,9 @@ _export(exports, {
|
|
|
18
18
|
},
|
|
19
19
|
get FILE_OPERATION () {
|
|
20
20
|
return FILE_OPERATION;
|
|
21
|
+
},
|
|
22
|
+
get FORCE_AS_FILE_OWNER () {
|
|
23
|
+
return FORCE_AS_FILE_OWNER;
|
|
21
24
|
}
|
|
22
25
|
});
|
|
23
26
|
var FILE_OPERATION = /*#__PURE__*/ function(FILE_OPERATION) {
|
|
@@ -42,5 +45,6 @@ var FILE_MODE = /*#__PURE__*/ function(FILE_MODE) {
|
|
|
42
45
|
FILE_MODE["EDIT"] = "edit";
|
|
43
46
|
return FILE_MODE;
|
|
44
47
|
}({});
|
|
48
|
+
const FORCE_AS_FILE_OWNER = 'forceAsFileOwner';
|
|
45
49
|
|
|
46
50
|
//# sourceMappingURL=operations.js.map
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"sources":["../../../../../backend/src/applications/files/constants/operations.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\nexport enum FILE_OPERATION {\n MAKE = 'make',\n COPY = 'copy',\n MOVE = 'move',\n DELETE = 'delete',\n COMPRESS = 'compress',\n DECOMPRESS = 'decompress',\n DOWNLOAD = 'download',\n UPLOAD = 'upload',\n TOUCH = 'touch',\n THUMBNAIL = 'thumbnail',\n GET_SIZE = 'getSize',\n LOCK = 'lock',\n UNLOCK = 'unlock',\n UNLOCK_REQUEST = 'unlockRequest'\n}\n\nexport enum FILE_MODE {\n VIEW = 'view',\n EDIT = 'edit'\n}\n"],"names":["FILE_MODE","FILE_OPERATION"],"mappings":"AAAA;;;;CAIC;;;;;;;;;;;QAmBWA;eAAAA;;QAjBAC;eAAAA;;;
|
|
1
|
+
{"version":3,"sources":["../../../../../backend/src/applications/files/constants/operations.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\nexport enum FILE_OPERATION {\n MAKE = 'make',\n COPY = 'copy',\n MOVE = 'move',\n DELETE = 'delete',\n COMPRESS = 'compress',\n DECOMPRESS = 'decompress',\n DOWNLOAD = 'download',\n UPLOAD = 'upload',\n TOUCH = 'touch',\n THUMBNAIL = 'thumbnail',\n GET_SIZE = 'getSize',\n LOCK = 'lock',\n UNLOCK = 'unlock',\n UNLOCK_REQUEST = 'unlockRequest'\n}\n\nexport enum FILE_MODE {\n VIEW = 'view',\n EDIT = 'edit'\n}\n\nexport const FORCE_AS_FILE_OWNER = 'forceAsFileOwner' as const\n"],"names":["FILE_MODE","FILE_OPERATION","FORCE_AS_FILE_OWNER"],"mappings":"AAAA;;;;CAIC;;;;;;;;;;;QAmBWA;eAAAA;;QAjBAC;eAAAA;;QAsBCC;eAAAA;;;AAtBN,IAAA,AAAKD,wCAAAA;;;;;;;;;;;;;;;WAAAA;;AAiBL,IAAA,AAAKD,mCAAAA;;;WAAAA;;AAKL,MAAME,sBAAsB"}
|
|
@@ -13,21 +13,6 @@ function _export(target, all) {
|
|
|
13
13
|
});
|
|
14
14
|
}
|
|
15
15
|
_export(exports, {
|
|
16
|
-
get API_FILES_ONLY_OFFICE () {
|
|
17
|
-
return API_FILES_ONLY_OFFICE;
|
|
18
|
-
},
|
|
19
|
-
get API_FILES_ONLY_OFFICE_CALLBACK () {
|
|
20
|
-
return API_FILES_ONLY_OFFICE_CALLBACK;
|
|
21
|
-
},
|
|
22
|
-
get API_FILES_ONLY_OFFICE_DOCUMENT () {
|
|
23
|
-
return API_FILES_ONLY_OFFICE_DOCUMENT;
|
|
24
|
-
},
|
|
25
|
-
get API_FILES_ONLY_OFFICE_SETTINGS () {
|
|
26
|
-
return API_FILES_ONLY_OFFICE_SETTINGS;
|
|
27
|
-
},
|
|
28
|
-
get API_FILES_ONLY_OFFICE_STATUS () {
|
|
29
|
-
return API_FILES_ONLY_OFFICE_STATUS;
|
|
30
|
-
},
|
|
31
16
|
get API_FILES_OPERATION () {
|
|
32
17
|
return API_FILES_OPERATION;
|
|
33
18
|
},
|
|
@@ -77,12 +62,7 @@ const FILES_ROUTE = {
|
|
|
77
62
|
TASKS: 'tasks',
|
|
78
63
|
TASKS_DOWNLOAD: 'download',
|
|
79
64
|
RECENTS: 'recents',
|
|
80
|
-
SEARCH: 'search'
|
|
81
|
-
ONLY_OFFICE: 'onlyoffice',
|
|
82
|
-
ONLY_OFFICE_SETTINGS: 'settings',
|
|
83
|
-
ONLY_OFFICE_DOCUMENT: 'document',
|
|
84
|
-
ONLY_OFFICE_CALLBACK: 'callback',
|
|
85
|
-
ONLY_OFFICE_STATUS: 'status'
|
|
65
|
+
SEARCH: 'search'
|
|
86
66
|
};
|
|
87
67
|
const API_FILES_OPERATION = `${FILES_ROUTE.BASE}/${FILES_ROUTE.OPERATION}`;
|
|
88
68
|
const API_FILES_OPERATION_THUMBNAIL = `${API_FILES_OPERATION}/${_operations.FILE_OPERATION.THUMBNAIL}`;
|
|
@@ -96,10 +76,5 @@ const API_FILES_TASKS = `${FILES_ROUTE.BASE}/${FILES_ROUTE.TASKS}`;
|
|
|
96
76
|
const API_FILES_TASKS_DOWNLOAD = `${FILES_ROUTE.BASE}/${FILES_ROUTE.TASKS}/${FILES_ROUTE.TASKS_DOWNLOAD}`;
|
|
97
77
|
const API_FILES_RECENTS = `${FILES_ROUTE.BASE}/${FILES_ROUTE.RECENTS}`;
|
|
98
78
|
const API_FILES_SEARCH = `${FILES_ROUTE.BASE}/${FILES_ROUTE.SEARCH}`;
|
|
99
|
-
const API_FILES_ONLY_OFFICE = `${FILES_ROUTE.BASE}/${FILES_ROUTE.ONLY_OFFICE}`;
|
|
100
|
-
const API_FILES_ONLY_OFFICE_SETTINGS = `${API_FILES_ONLY_OFFICE}/${FILES_ROUTE.ONLY_OFFICE_SETTINGS}`;
|
|
101
|
-
const API_FILES_ONLY_OFFICE_DOCUMENT = `${API_FILES_ONLY_OFFICE}/${FILES_ROUTE.ONLY_OFFICE_DOCUMENT}`;
|
|
102
|
-
const API_FILES_ONLY_OFFICE_CALLBACK = `${API_FILES_ONLY_OFFICE}/${FILES_ROUTE.ONLY_OFFICE_CALLBACK}`;
|
|
103
|
-
const API_FILES_ONLY_OFFICE_STATUS = `${API_FILES_ONLY_OFFICE}/${FILES_ROUTE.ONLY_OFFICE_STATUS}`;
|
|
104
79
|
|
|
105
80
|
//# sourceMappingURL=routes.js.map
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"sources":["../../../../../backend/src/applications/files/constants/routes.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 { SPACES_ROUTE } from '../../spaces/constants/routes'\nimport { FILE_OPERATION } from './operations'\n\nexport const FILES_ROUTE = {\n BASE: SPACES_ROUTE.BASE,\n OPERATION: 'operation',\n TASK_OPERATION: 'task/operation',\n TASKS: 'tasks',\n TASKS_DOWNLOAD: 'download',\n RECENTS: 'recents',\n SEARCH: 'search'
|
|
1
|
+
{"version":3,"sources":["../../../../../backend/src/applications/files/constants/routes.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 { SPACES_ROUTE } from '../../spaces/constants/routes'\nimport { FILE_OPERATION } from './operations'\n\nexport const FILES_ROUTE = {\n BASE: SPACES_ROUTE.BASE,\n OPERATION: 'operation',\n TASK_OPERATION: 'task/operation',\n TASKS: 'tasks',\n TASKS_DOWNLOAD: 'download',\n RECENTS: 'recents',\n SEARCH: 'search'\n} as const\n\nexport const API_FILES_OPERATION = `${FILES_ROUTE.BASE}/${FILES_ROUTE.OPERATION}`\nexport const API_FILES_OPERATION_THUMBNAIL = `${API_FILES_OPERATION}/${FILE_OPERATION.THUMBNAIL}`\nexport const API_FILES_OPERATION_MAKE = `${API_FILES_OPERATION}/${FILE_OPERATION.MAKE}`\nexport const API_FILES_OPERATION_UPLOAD = `${API_FILES_OPERATION}/${FILE_OPERATION.UPLOAD}`\nexport const API_FILES_TASK_OPERATION = `${FILES_ROUTE.BASE}/${FILES_ROUTE.TASK_OPERATION}`\nexport const API_FILES_TASK_OPERATION_DOWNLOAD = `${API_FILES_TASK_OPERATION}/${FILE_OPERATION.DOWNLOAD}`\nexport const API_FILES_TASK_OPERATION_COMPRESS = `${API_FILES_TASK_OPERATION}/${FILE_OPERATION.COMPRESS}`\nexport const API_FILES_TASK_OPERATION_DECOMPRESS = `${API_FILES_TASK_OPERATION}/${FILE_OPERATION.DECOMPRESS}`\nexport const API_FILES_TASKS = `${FILES_ROUTE.BASE}/${FILES_ROUTE.TASKS}`\nexport const API_FILES_TASKS_DOWNLOAD = `${FILES_ROUTE.BASE}/${FILES_ROUTE.TASKS}/${FILES_ROUTE.TASKS_DOWNLOAD}`\nexport const API_FILES_RECENTS = `${FILES_ROUTE.BASE}/${FILES_ROUTE.RECENTS}`\nexport const API_FILES_SEARCH = `${FILES_ROUTE.BASE}/${FILES_ROUTE.SEARCH}`\n"],"names":["API_FILES_OPERATION","API_FILES_OPERATION_MAKE","API_FILES_OPERATION_THUMBNAIL","API_FILES_OPERATION_UPLOAD","API_FILES_RECENTS","API_FILES_SEARCH","API_FILES_TASKS","API_FILES_TASKS_DOWNLOAD","API_FILES_TASK_OPERATION","API_FILES_TASK_OPERATION_COMPRESS","API_FILES_TASK_OPERATION_DECOMPRESS","API_FILES_TASK_OPERATION_DOWNLOAD","FILES_ROUTE","BASE","SPACES_ROUTE","OPERATION","TASK_OPERATION","TASKS","TASKS_DOWNLOAD","RECENTS","SEARCH","FILE_OPERATION","THUMBNAIL","MAKE","UPLOAD","DOWNLOAD","COMPRESS","DECOMPRESS"],"mappings":"AAAA;;;;CAIC;;;;;;;;;;;QAeYA;eAAAA;;QAEAC;eAAAA;;QADAC;eAAAA;;QAEAC;eAAAA;;QAOAC;eAAAA;;QACAC;eAAAA;;QAHAC;eAAAA;;QACAC;eAAAA;;QALAC;eAAAA;;QAEAC;eAAAA;;QACAC;eAAAA;;QAFAC;eAAAA;;QAfAC;eAAAA;;;wBAHgB;4BACE;AAExB,MAAMA,cAAc;IACzBC,MAAMC,oBAAY,CAACD,IAAI;IACvBE,WAAW;IACXC,gBAAgB;IAChBC,OAAO;IACPC,gBAAgB;IAChBC,SAAS;IACTC,QAAQ;AACV;AAEO,MAAMpB,sBAAsB,GAAGY,YAAYC,IAAI,CAAC,CAAC,EAAED,YAAYG,SAAS,EAAE;AAC1E,MAAMb,gCAAgC,GAAGF,oBAAoB,CAAC,EAAEqB,0BAAc,CAACC,SAAS,EAAE;AAC1F,MAAMrB,2BAA2B,GAAGD,oBAAoB,CAAC,EAAEqB,0BAAc,CAACE,IAAI,EAAE;AAChF,MAAMpB,6BAA6B,GAAGH,oBAAoB,CAAC,EAAEqB,0BAAc,CAACG,MAAM,EAAE;AACpF,MAAMhB,2BAA2B,GAAGI,YAAYC,IAAI,CAAC,CAAC,EAAED,YAAYI,cAAc,EAAE;AACpF,MAAML,oCAAoC,GAAGH,yBAAyB,CAAC,EAAEa,0BAAc,CAACI,QAAQ,EAAE;AAClG,MAAMhB,oCAAoC,GAAGD,yBAAyB,CAAC,EAAEa,0BAAc,CAACK,QAAQ,EAAE;AAClG,MAAMhB,sCAAsC,GAAGF,yBAAyB,CAAC,EAAEa,0BAAc,CAACM,UAAU,EAAE;AACtG,MAAMrB,kBAAkB,GAAGM,YAAYC,IAAI,CAAC,CAAC,EAAED,YAAYK,KAAK,EAAE;AAClE,MAAMV,2BAA2B,GAAGK,YAAYC,IAAI,CAAC,CAAC,EAAED,YAAYK,KAAK,CAAC,CAAC,EAAEL,YAAYM,cAAc,EAAE;AACzG,MAAMd,oBAAoB,GAAGQ,YAAYC,IAAI,CAAC,CAAC,EAAED,YAAYO,OAAO,EAAE;AACtE,MAAMd,mBAAmB,GAAGO,YAAYC,IAAI,CAAC,CAAC,EAAED,YAAYQ,MAAM,EAAE"}
|
|
@@ -6,22 +6,16 @@
|
|
|
6
6
|
Object.defineProperty(exports, "__esModule", {
|
|
7
7
|
value: true
|
|
8
8
|
});
|
|
9
|
-
|
|
10
|
-
|
|
11
|
-
|
|
12
|
-
get: Object.getOwnPropertyDescriptor(all, name).get
|
|
13
|
-
});
|
|
14
|
-
}
|
|
15
|
-
_export(exports, {
|
|
16
|
-
get FilesConfig () {
|
|
9
|
+
Object.defineProperty(exports, "FilesConfig", {
|
|
10
|
+
enumerable: true,
|
|
11
|
+
get: function() {
|
|
17
12
|
return FilesConfig;
|
|
18
|
-
},
|
|
19
|
-
get FilesOnlyOfficeConfig () {
|
|
20
|
-
return FilesOnlyOfficeConfig;
|
|
21
13
|
}
|
|
22
14
|
});
|
|
23
15
|
const _classtransformer = require("class-transformer");
|
|
24
16
|
const _classvalidator = require("class-validator");
|
|
17
|
+
const _collaboraonlineconfig = require("./modules/collabora-online/collabora-online.config");
|
|
18
|
+
const _onlyofficeconfig = require("./modules/only-office/only-office.config");
|
|
25
19
|
function _ts_decorate(decorators, target, key, desc) {
|
|
26
20
|
var c = arguments.length, r = c < 3 ? target : desc === null ? desc = Object.getOwnPropertyDescriptor(target, key) : desc, d;
|
|
27
21
|
if (typeof Reflect === "object" && typeof Reflect.decorate === "function") r = Reflect.decorate(decorators, target, key, desc);
|
|
@@ -31,37 +25,13 @@ function _ts_decorate(decorators, target, key, desc) {
|
|
|
31
25
|
function _ts_metadata(k, v) {
|
|
32
26
|
if (typeof Reflect === "object" && typeof Reflect.metadata === "function") return Reflect.metadata(k, v);
|
|
33
27
|
}
|
|
34
|
-
let FilesOnlyOfficeConfig = class FilesOnlyOfficeConfig {
|
|
35
|
-
constructor(){
|
|
36
|
-
this.enabled = false;
|
|
37
|
-
this.externalServer = null;
|
|
38
|
-
this.verifySSL = false;
|
|
39
|
-
}
|
|
40
|
-
};
|
|
41
|
-
_ts_decorate([
|
|
42
|
-
(0, _classvalidator.IsBoolean)()
|
|
43
|
-
], FilesOnlyOfficeConfig.prototype, "enabled", void 0);
|
|
44
|
-
_ts_decorate([
|
|
45
|
-
(0, _classvalidator.IsOptional)(),
|
|
46
|
-
(0, _classvalidator.IsString)(),
|
|
47
|
-
_ts_metadata("design:type", String)
|
|
48
|
-
], FilesOnlyOfficeConfig.prototype, "externalServer", void 0);
|
|
49
|
-
_ts_decorate([
|
|
50
|
-
(0, _classvalidator.ValidateIf)((o)=>o.enabled),
|
|
51
|
-
(0, _classvalidator.IsString)(),
|
|
52
|
-
(0, _classvalidator.IsNotEmpty)(),
|
|
53
|
-
_ts_metadata("design:type", String)
|
|
54
|
-
], FilesOnlyOfficeConfig.prototype, "secret", void 0);
|
|
55
|
-
_ts_decorate([
|
|
56
|
-
(0, _classvalidator.IsBoolean)(),
|
|
57
|
-
_ts_metadata("design:type", Boolean)
|
|
58
|
-
], FilesOnlyOfficeConfig.prototype, "verifySSL", void 0);
|
|
59
28
|
let FilesConfig = class FilesConfig {
|
|
60
29
|
constructor(){
|
|
61
30
|
this.maxUploadSize = 5368709120; // 5 GB
|
|
62
31
|
this.contentIndexing = true;
|
|
63
32
|
this.showHiddenFiles = false;
|
|
64
|
-
this.onlyoffice = new
|
|
33
|
+
this.onlyoffice = new _onlyofficeconfig.OnlyOfficeConfig();
|
|
34
|
+
this.collabora = new _collaboraonlineconfig.CollaboraOnlineConfig();
|
|
65
35
|
}
|
|
66
36
|
};
|
|
67
37
|
_ts_decorate([
|
|
@@ -99,8 +69,14 @@ _ts_decorate([
|
|
|
99
69
|
_ts_decorate([
|
|
100
70
|
(0, _classvalidator.IsNotEmptyObject)(),
|
|
101
71
|
(0, _classvalidator.ValidateNested)(),
|
|
102
|
-
(0, _classtransformer.Type)(()=>
|
|
103
|
-
_ts_metadata("design:type", typeof
|
|
72
|
+
(0, _classtransformer.Type)(()=>_onlyofficeconfig.OnlyOfficeConfig),
|
|
73
|
+
_ts_metadata("design:type", typeof _onlyofficeconfig.OnlyOfficeConfig === "undefined" ? Object : _onlyofficeconfig.OnlyOfficeConfig)
|
|
104
74
|
], FilesConfig.prototype, "onlyoffice", void 0);
|
|
75
|
+
_ts_decorate([
|
|
76
|
+
(0, _classvalidator.IsNotEmptyObject)(),
|
|
77
|
+
(0, _classvalidator.ValidateNested)(),
|
|
78
|
+
(0, _classtransformer.Type)(()=>_collaboraonlineconfig.CollaboraOnlineConfig),
|
|
79
|
+
_ts_metadata("design:type", typeof _collaboraonlineconfig.CollaboraOnlineConfig === "undefined" ? Object : _collaboraonlineconfig.CollaboraOnlineConfig)
|
|
80
|
+
], FilesConfig.prototype, "collabora", void 0);
|
|
105
81
|
|
|
106
82
|
//# sourceMappingURL=files.config.js.map
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"sources":["../../../../backend/src/applications/files/files.config.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 { Type } from 'class-transformer'\nimport { IsBoolean, IsInt, IsNotEmpty, IsNotEmptyObject,
|
|
1
|
+
{"version":3,"sources":["../../../../backend/src/applications/files/files.config.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 { Type } from 'class-transformer'\nimport { IsBoolean, IsInt, IsNotEmpty, IsNotEmptyObject, IsString, ValidateNested } from 'class-validator'\nimport { CollaboraOnlineConfig } from './modules/collabora-online/collabora-online.config'\nimport { OnlyOfficeConfig } from './modules/only-office/only-office.config'\n\nexport class FilesConfig {\n @IsNotEmpty()\n @IsString()\n dataPath: string\n\n @IsNotEmpty()\n @IsString()\n usersPath: string\n\n @IsNotEmpty()\n @IsString()\n spacesPath: string\n\n @IsNotEmpty()\n @IsString()\n tmpPath: string\n\n @IsInt()\n maxUploadSize: number = 5368709120 // 5 GB\n\n @IsBoolean()\n contentIndexing: boolean = true\n\n @IsBoolean()\n showHiddenFiles: boolean = false\n\n @IsNotEmptyObject()\n @ValidateNested()\n @Type(() => OnlyOfficeConfig)\n onlyoffice: OnlyOfficeConfig = new OnlyOfficeConfig()\n\n @IsNotEmptyObject()\n @ValidateNested()\n @Type(() => CollaboraOnlineConfig)\n collabora: CollaboraOnlineConfig = new CollaboraOnlineConfig()\n}\n"],"names":["FilesConfig","maxUploadSize","contentIndexing","showHiddenFiles","onlyoffice","OnlyOfficeConfig","collabora","CollaboraOnlineConfig"],"mappings":"AAAA;;;;CAIC;;;;+BAOYA;;;eAAAA;;;kCALQ;gCACoE;uCACnD;kCACL;;;;;;;;;;AAE1B,IAAA,AAAMA,cAAN,MAAMA;;aAkBXC,gBAAwB,YAAW,OAAO;aAG1CC,kBAA2B;aAG3BC,kBAA2B;aAK3BC,aAA+B,IAAIC,kCAAgB;aAKnDC,YAAmC,IAAIC,4CAAqB;;AAC9D;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;oCAPcF,kCAAgB;;;;;;oCAKhBE,4CAAqB"}
|
|
@@ -83,8 +83,8 @@ let FilesController = class FilesController {
|
|
|
83
83
|
async lock(user, space) {
|
|
84
84
|
return this.filesMethods.lock(user, space);
|
|
85
85
|
}
|
|
86
|
-
async unlock(user, space,
|
|
87
|
-
return this.filesMethods.unlock(user, space,
|
|
86
|
+
async unlock(user, space, forceAsFileOwner) {
|
|
87
|
+
return this.filesMethods.unlock(user, space, forceAsFileOwner);
|
|
88
88
|
}
|
|
89
89
|
async unlockRequest(user, space) {
|
|
90
90
|
return this.filesMethods.unlockRequest(user, space);
|
|
@@ -98,7 +98,7 @@ let FilesController = class FilesController {
|
|
|
98
98
|
}
|
|
99
99
|
async compressAsTask(req, compressFileDto) {
|
|
100
100
|
if (compressFileDto.compressInDirectory) {
|
|
101
|
-
_spaceguard.SpaceGuard.checkPermissions(req, this.logger);
|
|
101
|
+
await _spaceguard.SpaceGuard.checkPermissions(req, this.logger);
|
|
102
102
|
}
|
|
103
103
|
return this.filesTasksManager.createTask(_operations.FILE_OPERATION.COMPRESS, req.user, req.space, compressFileDto, this.filesMethods.compress.name);
|
|
104
104
|
}
|
|
@@ -263,7 +263,7 @@ _ts_decorate([
|
|
|
263
263
|
(0, _common.Unlock)(`${_routes.FILES_ROUTE.OPERATION}/*`),
|
|
264
264
|
_ts_param(0, (0, _userdecorator.GetUser)()),
|
|
265
265
|
_ts_param(1, (0, _spacedecorator.GetSpace)()),
|
|
266
|
-
_ts_param(2, (0, _common.Query)(
|
|
266
|
+
_ts_param(2, (0, _common.Query)(_operations.FORCE_AS_FILE_OWNER, new _common.ParseBoolPipe({
|
|
267
267
|
optional: true
|
|
268
268
|
}))),
|
|
269
269
|
_ts_metadata("design:type", Function),
|