diff --git a/common/config/rush/pnpm-lock.yaml b/common/config/rush/pnpm-lock.yaml index 983c40ffc4c..8e943856d61 100644 --- a/common/config/rush/pnpm-lock.yaml +++ b/common/config/rush/pnpm-lock.yaml @@ -61,10 +61,10 @@ dependencies: version: 1.49.1 '@rush-temp/account': specifier: file:./projects/account.tgz - version: file:projects/account.tgz(@types/node@20.11.19)(esbuild@0.24.2)(ts-node@10.9.2) + version: file:projects/account.tgz(@types/node@20.11.19)(esbuild@0.24.2)(snappy@7.2.2)(ts-node@10.9.2) '@rush-temp/account-service': specifier: file:./projects/account-service.tgz - version: file:projects/account-service.tgz + version: file:projects/account-service.tgz(snappy@7.2.2) '@rush-temp/activity': specifier: file:./projects/activity.tgz version: file:projects/activity.tgz(@types/node@20.11.19)(esbuild@0.24.2)(ts-node@10.9.2) @@ -109,7 +109,7 @@ dependencies: version: file:projects/attachment-resources.tgz(@types/node@20.11.19)(esbuild@0.24.2)(postcss-load-config@4.0.2)(postcss@8.4.35)(ts-node@10.9.2) '@rush-temp/auth-providers': specifier: file:./projects/auth-providers.tgz - version: file:projects/auth-providers.tgz(@types/node@20.11.19)(esbuild@0.24.2)(ts-node@10.9.2) + version: file:projects/auth-providers.tgz(@types/node@20.11.19)(esbuild@0.24.2)(snappy@7.2.2)(ts-node@10.9.2) '@rush-temp/backup-service': specifier: file:./projects/backup-service.tgz version: file:projects/backup-service.tgz(esbuild@0.24.2)(ts-node@10.9.2) @@ -169,7 +169,7 @@ dependencies: version: file:projects/collaboration.tgz(esbuild@0.24.2)(ts-node@10.9.2) '@rush-temp/collaborator': specifier: file:./projects/collaborator.tgz - version: file:projects/collaborator.tgz(@tiptap/pm@2.6.6)(bufferutil@4.0.8)(utf-8-validate@6.0.4)(y-protocols@1.0.6) + version: file:projects/collaborator.tgz(@tiptap/pm@2.6.6)(bufferutil@4.0.8)(snappy@7.2.2)(utf-8-validate@6.0.4)(y-protocols@1.0.6) '@rush-temp/collaborator-client': specifier: file:./projects/collaborator-client.tgz version: file:projects/collaborator-client.tgz(ts-node@10.9.2) @@ -583,7 +583,7 @@ dependencies: version: file:projects/model-workbench.tgz '@rush-temp/mongo': specifier: file:./projects/mongo.tgz - version: file:projects/mongo.tgz(esbuild@0.24.2)(ts-node@10.9.2) + version: file:projects/mongo.tgz(esbuild@0.24.2)(snappy@7.2.2)(ts-node@10.9.2) '@rush-temp/notification': specifier: file:./projects/notification.tgz version: file:projects/notification.tgz(@types/node@20.11.19)(esbuild@0.24.2)(ts-node@10.9.2) @@ -616,19 +616,19 @@ dependencies: version: file:projects/platform-rig.tgz(@typescript-eslint/eslint-plugin@6.21.0)(eslint-plugin-import@2.29.1)(eslint-plugin-n@15.7.0)(eslint-plugin-promise@6.1.1)(svelte@4.2.19) '@rush-temp/pod-account': specifier: file:./projects/pod-account.tgz - version: file:projects/pod-account.tgz + version: file:projects/pod-account.tgz(snappy@7.2.2) '@rush-temp/pod-ai-bot': specifier: file:./projects/pod-ai-bot.tgz - version: file:projects/pod-ai-bot.tgz(bufferutil@4.0.8)(utf-8-validate@6.0.4)(zod@3.23.8) + version: file:projects/pod-ai-bot.tgz(bufferutil@4.0.8)(snappy@7.2.2)(utf-8-validate@6.0.4)(zod@3.23.8) '@rush-temp/pod-analytics-collector': specifier: file:./projects/pod-analytics-collector.tgz - version: file:projects/pod-analytics-collector.tgz(bufferutil@4.0.8)(utf-8-validate@6.0.4) + version: file:projects/pod-analytics-collector.tgz(bufferutil@4.0.8)(snappy@7.2.2)(utf-8-validate@6.0.4) '@rush-temp/pod-backup': specifier: file:./projects/pod-backup.tgz version: file:projects/pod-backup.tgz '@rush-temp/pod-calendar': specifier: file:./projects/pod-calendar.tgz - version: file:projects/pod-calendar.tgz(bufferutil@4.0.8)(ts-node@10.9.2)(utf-8-validate@6.0.4) + version: file:projects/pod-calendar.tgz(bufferutil@4.0.8)(snappy@7.2.2)(ts-node@10.9.2)(utf-8-validate@6.0.4) '@rush-temp/pod-collaborator': specifier: file:./projects/pod-collaborator.tgz version: file:projects/pod-collaborator.tgz @@ -640,10 +640,10 @@ dependencies: version: file:projects/pod-fulltext.tgz '@rush-temp/pod-github': specifier: file:./projects/pod-github.tgz - version: file:projects/pod-github.tgz(bufferutil@4.0.8)(utf-8-validate@6.0.4)(y-prosemirror@1.2.12) + version: file:projects/pod-github.tgz(bufferutil@4.0.8)(snappy@7.2.2)(utf-8-validate@6.0.4)(y-prosemirror@1.2.12) '@rush-temp/pod-gmail': specifier: file:./projects/pod-gmail.tgz - version: file:projects/pod-gmail.tgz(ts-node@10.9.2) + version: file:projects/pod-gmail.tgz(snappy@7.2.2)(ts-node@10.9.2) '@rush-temp/pod-love': specifier: file:./projects/pod-love.tgz version: file:projects/pod-love.tgz(bufferutil@4.0.8)(utf-8-validate@6.0.4) @@ -658,19 +658,19 @@ dependencies: version: file:projects/pod-ses.tgz '@rush-temp/pod-sign': specifier: file:./projects/pod-sign.tgz - version: file:projects/pod-sign.tgz + version: file:projects/pod-sign.tgz(snappy@7.2.2) '@rush-temp/pod-stats': specifier: file:./projects/pod-stats.tgz version: file:projects/pod-stats.tgz '@rush-temp/pod-telegram': specifier: file:./projects/pod-telegram.tgz - version: file:projects/pod-telegram.tgz(bufferutil@4.0.8)(ts-node@10.9.2)(utf-8-validate@6.0.4) + version: file:projects/pod-telegram.tgz(bufferutil@4.0.8)(snappy@7.2.2)(ts-node@10.9.2)(utf-8-validate@6.0.4) '@rush-temp/pod-telegram-bot': specifier: file:./projects/pod-telegram-bot.tgz - version: file:projects/pod-telegram-bot.tgz(bufferutil@4.0.8)(utf-8-validate@6.0.4) + version: file:projects/pod-telegram-bot.tgz(bufferutil@4.0.8)(snappy@7.2.2)(utf-8-validate@6.0.4) '@rush-temp/pod-workspace': specifier: file:./projects/pod-workspace.tgz - version: file:projects/pod-workspace.tgz + version: file:projects/pod-workspace.tgz(snappy@7.2.2) '@rush-temp/postgres': specifier: file:./projects/postgres.tgz version: file:projects/postgres.tgz(esbuild@0.24.2)(ts-node@10.9.2) @@ -961,7 +961,7 @@ dependencies: version: file:projects/server-token.tgz(esbuild@0.24.2)(ts-node@10.9.2) '@rush-temp/server-tool': specifier: file:./projects/server-tool.tgz - version: file:projects/server-tool.tgz(@types/node@20.11.19)(esbuild@0.24.2)(ts-node@10.9.2) + version: file:projects/server-tool.tgz(@types/node@20.11.19)(esbuild@0.24.2)(snappy@7.2.2)(ts-node@10.9.2) '@rush-temp/server-tracker': specifier: file:./projects/server-tracker.tgz version: file:projects/server-tracker.tgz(esbuild@0.24.2)(ts-node@10.9.2) @@ -1093,7 +1093,7 @@ dependencies: version: file:projects/time-resources.tgz(@tiptap/core@2.6.6)(@tiptap/pm@2.6.6)(@types/node@20.11.19)(esbuild@0.24.2)(postcss-load-config@4.0.2)(postcss@8.4.35)(ts-node@10.9.2) '@rush-temp/tool': specifier: file:./projects/tool.tgz - version: file:projects/tool.tgz + version: file:projects/tool.tgz(snappy@7.2.2) '@rush-temp/tracker': specifier: file:./projects/tracker.tgz version: file:projects/tracker.tgz(@types/node@20.11.19)(esbuild@0.24.2)(ts-node@10.9.2) @@ -1373,6 +1373,9 @@ dependencies: '@types/sharp': specifier: ~0.32.0 version: 0.32.0 + '@types/snappyjs': + specifier: ^0.7.1 + version: 0.7.1 '@types/tar-stream': specifier: ^3.1.3 version: 3.1.3 @@ -1634,9 +1637,6 @@ dependencies: googleapis: specifier: ^122.0.0 version: 122.0.0 - got: - specifier: ^11.8.3 - version: 11.8.6 graphql: specifier: ^16.8.0 version: 16.9.0 @@ -1741,7 +1741,7 @@ dependencies: version: 8.0.0 mongodb: specifier: ^6.12.0 - version: 6.12.0 + version: 6.12.0(snappy@7.2.2) morgan: specifier: ^1.10.0 version: 1.10.0 @@ -1850,6 +1850,12 @@ dependencies: smee-client: specifier: ^1.2.3 version: 1.2.5 + snappy: + specifier: ^7.2.2 + version: 7.2.2 + snappyjs: + specifier: ^0.7.0 + version: 0.7.0 style-loader: specifier: ^3.3.1 version: 3.3.4(webpack@5.97.1) @@ -4927,6 +4933,123 @@ packages: dev: false optional: true + /@napi-rs/snappy-android-arm-eabi@7.2.2: + resolution: {integrity: sha512-H7DuVkPCK5BlAr1NfSU8bDEN7gYs+R78pSHhDng83QxRnCLmVIZk33ymmIwurmoA1HrdTxbkbuNl+lMvNqnytw==} + engines: {node: '>= 10'} + cpu: [arm] + os: [android] + requiresBuild: true + dev: false + optional: true + + /@napi-rs/snappy-android-arm64@7.2.2: + resolution: {integrity: sha512-2R/A3qok+nGtpVK8oUMcrIi5OMDckGYNoBLFyli3zp8w6IArPRfg1yOfVUcHvpUDTo9T7LOS1fXgMOoC796eQw==} + engines: {node: '>= 10'} + cpu: [arm64] + os: [android] + requiresBuild: true + dev: false + optional: true + + /@napi-rs/snappy-darwin-arm64@7.2.2: + resolution: {integrity: sha512-USgArHbfrmdbuq33bD5ssbkPIoT7YCXCRLmZpDS6dMDrx+iM7eD2BecNbOOo7/v1eu6TRmQ0xOzeQ6I/9FIi5g==} + engines: {node: '>= 10'} + cpu: [arm64] + os: [darwin] + requiresBuild: true + dev: false + optional: true + + /@napi-rs/snappy-darwin-x64@7.2.2: + resolution: {integrity: sha512-0APDu8iO5iT0IJKblk2lH0VpWSl9zOZndZKnBYIc+ei1npw2L5QvuErFOTeTdHBtzvUHASB+9bvgaWnQo4PvTQ==} + engines: {node: '>= 10'} + cpu: [x64] + os: [darwin] + requiresBuild: true + dev: false + optional: true + + /@napi-rs/snappy-freebsd-x64@7.2.2: + resolution: {integrity: sha512-mRTCJsuzy0o/B0Hnp9CwNB5V6cOJ4wedDTWEthsdKHSsQlO7WU9W1yP7H3Qv3Ccp/ZfMyrmG98Ad7u7lG58WXA==} + engines: {node: '>= 10'} + cpu: [x64] + os: [freebsd] + requiresBuild: true + dev: false + optional: true + + /@napi-rs/snappy-linux-arm-gnueabihf@7.2.2: + resolution: {integrity: sha512-v1uzm8+6uYjasBPcFkv90VLZ+WhLzr/tnfkZ/iD9mHYiULqkqpRuC8zvc3FZaJy5wLQE9zTDkTJN1IvUcZ+Vcg==} + engines: {node: '>= 10'} + cpu: [arm] + os: [linux] + requiresBuild: true + dev: false + optional: true + + /@napi-rs/snappy-linux-arm64-gnu@7.2.2: + resolution: {integrity: sha512-LrEMa5pBScs4GXWOn6ZYXfQ72IzoolZw5txqUHVGs8eK4g1HR9HTHhb2oY5ySNaKakG5sOgMsb1rwaEnjhChmQ==} + engines: {node: '>= 10'} + cpu: [arm64] + os: [linux] + requiresBuild: true + dev: false + optional: true + + /@napi-rs/snappy-linux-arm64-musl@7.2.2: + resolution: {integrity: sha512-3orWZo9hUpGQcB+3aTLW7UFDqNCQfbr0+MvV67x8nMNYj5eAeUtMmUE/HxLznHO4eZ1qSqiTwLbVx05/Socdlw==} + engines: {node: '>= 10'} + cpu: [arm64] + os: [linux] + requiresBuild: true + dev: false + optional: true + + /@napi-rs/snappy-linux-x64-gnu@7.2.2: + resolution: {integrity: sha512-jZt8Jit/HHDcavt80zxEkDpH+R1Ic0ssiVCoueASzMXa7vwPJeF4ZxZyqUw4qeSy7n8UUExomu8G8ZbP6VKhgw==} + engines: {node: '>= 10'} + cpu: [x64] + os: [linux] + requiresBuild: true + dev: false + optional: true + + /@napi-rs/snappy-linux-x64-musl@7.2.2: + resolution: {integrity: sha512-Dh96IXgcZrV39a+Tej/owcd9vr5ihiZ3KRix11rr1v0MWtVb61+H1GXXlz6+Zcx9y8jM1NmOuiIuJwkV4vZ4WA==} + engines: {node: '>= 10'} + cpu: [x64] + os: [linux] + requiresBuild: true + dev: false + optional: true + + /@napi-rs/snappy-win32-arm64-msvc@7.2.2: + resolution: {integrity: sha512-9No0b3xGbHSWv2wtLEn3MO76Yopn1U2TdemZpCaEgOGccz1V+a/1d16Piz3ofSmnA13HGFz3h9NwZH9EOaIgYA==} + engines: {node: '>= 10'} + cpu: [arm64] + os: [win32] + requiresBuild: true + dev: false + optional: true + + /@napi-rs/snappy-win32-ia32-msvc@7.2.2: + resolution: {integrity: sha512-QiGe+0G86J74Qz1JcHtBwM3OYdTni1hX1PFyLRo3HhQUSpmi13Bzc1En7APn+6Pvo7gkrcy81dObGLDSxFAkQQ==} + engines: {node: '>= 10'} + cpu: [ia32] + os: [win32] + requiresBuild: true + dev: false + optional: true + + /@napi-rs/snappy-win32-x64-msvc@7.2.2: + resolution: {integrity: sha512-a43cyx1nK0daw6BZxVcvDEXxKMFLSBSDTAhsFD0VqSKcC7MGUBMaqyoWUcMiI7LBSz4bxUmxDWKfCYzpEmeb3w==} + engines: {node: '>= 10'} + cpu: [x64] + os: [win32] + requiresBuild: true + dev: false + optional: true + /@nodelib/fs.scandir@2.1.5: resolution: {integrity: sha512-vq24Bq3ym5HEQm2NKCr3yXDwjc7vTsEThRDnkp2DK9p1uqLR+DHurm/NOTo0KG7HYHU7eppKZj3MyqYuMBf62g==} engines: {node: '>= 8'} @@ -6910,13 +7033,6 @@ packages: '@types/koa': 2.15.0 dev: false - /@types/koa-morgan@1.0.8: - resolution: {integrity: sha512-2GredUi+iA3V0XrbzdsOAYgwj4F6+FnN+f5YjoKjessIE2lrMkqnc06YQQnzbMG75hRsXjyD+p6d5vlI70s1vg==} - dependencies: - '@types/koa': 2.14.0 - '@types/morgan': 1.9.9 - dev: false - /@types/koa-passport@6.0.3: resolution: {integrity: sha512-9iV8aiSICfBZpqkkzUshqxN2wTuoj4HGRRH0Idv3lHhXV9rZRCOyDdJSg+vZ6RHSQg0ZeBeAdIL4r/l8bR4SPA==} dependencies: @@ -6937,19 +7053,6 @@ packages: '@types/koa': 2.15.0 dev: false - /@types/koa@2.14.0: - resolution: {integrity: sha512-DTDUyznHGNHAl+wd1n0z1jxNajduyTh8R53xoewuerdBzGo6Ogj6F2299BFtrexJw4NtgjsI5SMPCmV9gZwGXA==} - dependencies: - '@types/accepts': 1.3.7 - '@types/content-disposition': 0.5.8 - '@types/cookies': 0.9.0 - '@types/http-assert': 1.5.5 - '@types/http-errors': 2.0.4 - '@types/keygrip': 1.0.6 - '@types/koa-compose': 3.2.8 - '@types/node': 20.11.19 - dev: false - /@types/koa@2.15.0: resolution: {integrity: sha512-7QFsywoE5URbuVnG3loe03QXuGajrnotr3gQkXcEBShORai23MePfFYdhz90FEtBBpkyIYQbVD+evKtloCgX3g==} dependencies: @@ -7184,6 +7287,10 @@ packages: sharp: 0.32.6 dev: false + /@types/snappyjs@0.7.1: + resolution: {integrity: sha512-OxjzJ6cQZstysMh6PEwZWmK9qlKZyezHJKOkcUkZDooSFuog2votUEKkxMaTq51UQF3cJkXKQ+XGlj4FSl8JQQ==} + dev: false + /@types/sockjs@0.3.36: resolution: {integrity: sha512-MK9V6NzAS1+Ud7JV9lJLFqW85VbC9dq3LmwZCuBe4wBDgKC0Kj/jd8Xl+nSviU+Qc3+m7umHHyHg//2KSa0a0Q==} dependencies: @@ -15089,12 +15196,6 @@ packages: koa-compose: 4.1.0 dev: false - /koa-morgan@1.0.1: - resolution: {integrity: sha512-JOUdCNlc21G50afBXfErUrr1RKymbgzlrO5KURY+wmDG1Uvd2jmxUJcHgylb/mYXy2SjiNZyYim/ptUBGsIi3A==} - dependencies: - morgan: 1.10.0 - dev: false - /koa-passport@6.0.0: resolution: {integrity: sha512-bgcrQN7Ylfgi1PVr5l6hHYkr38RHUzx+ty3m7e/xoTte8MR0zbDt6+pvP3/nuF/yXL6Ba7IzX1rSqmCy6OrrIw==} engines: {node: '>= 4'} @@ -16201,7 +16302,7 @@ packages: whatwg-url: 13.0.0 dev: false - /mongodb@6.12.0: + /mongodb@6.12.0(snappy@7.2.2): resolution: {integrity: sha512-RM7AHlvYfS7jv7+BXund/kR64DryVI+cHbVAy9P61fnb1RcWZqOW1/Wj2YhqMCx+MuYhqTRGv7AwHBzmsCKBfA==} engines: {node: '>=16.20.1'} peerDependencies: @@ -16231,6 +16332,7 @@ packages: '@mongodb-js/saslprep': 1.1.9 bson: 6.10.1 mongodb-connection-string-url: 3.0.0 + snappy: 7.2.2 dev: false /mongodb@6.3.0: @@ -19003,6 +19105,29 @@ packages: - supports-color dev: false + /snappy@7.2.2: + resolution: {integrity: sha512-iADMq1kY0v3vJmGTuKcFWSXt15qYUz7wFkArOrsSg0IFfI3nJqIJvK2/ZbEIndg7erIJLtAVX2nSOqPz7DcwbA==} + engines: {node: '>= 10'} + optionalDependencies: + '@napi-rs/snappy-android-arm-eabi': 7.2.2 + '@napi-rs/snappy-android-arm64': 7.2.2 + '@napi-rs/snappy-darwin-arm64': 7.2.2 + '@napi-rs/snappy-darwin-x64': 7.2.2 + '@napi-rs/snappy-freebsd-x64': 7.2.2 + '@napi-rs/snappy-linux-arm-gnueabihf': 7.2.2 + '@napi-rs/snappy-linux-arm64-gnu': 7.2.2 + '@napi-rs/snappy-linux-arm64-musl': 7.2.2 + '@napi-rs/snappy-linux-x64-gnu': 7.2.2 + '@napi-rs/snappy-linux-x64-musl': 7.2.2 + '@napi-rs/snappy-win32-arm64-msvc': 7.2.2 + '@napi-rs/snappy-win32-ia32-msvc': 7.2.2 + '@napi-rs/snappy-win32-x64-msvc': 7.2.2 + dev: false + + /snappyjs@0.7.0: + resolution: {integrity: sha512-u5iEEXkMe2EInQio6Wv9LWHOQYRDbD2O9hzS27GpT/lwfIQhTCnHCTqedqHIHe9ZcvQo+9au6vngQayipz1NYw==} + dev: false + /sockjs@0.3.24: resolution: {integrity: sha512-GJgLTZ7vYb/JtPSSZ10hsOYIvEYsjbNU+zPdIHcUaWVNUEPivzxku31865sSSud0Da0W4lEeOPlmw93zLQchuQ==} dependencies: @@ -21787,8 +21912,9 @@ packages: resolution: {integrity: sha512-XBx9AXhXktjUqnepgTiE5flcKIYWi/rme0Eaj+5Y0lftuGBq+jyRu/md4WnuxqgP1ubdpNCsYEYPxrzVHD8d6g==} dev: false - file:projects/account-service.tgz: + file:projects/account-service.tgz(snappy@7.2.2): resolution: {integrity: sha512-oAW0UD+ThGbtuXdyaoWJoe93XY7bLO0K2uZneePiHsI3KZM3z9st9fjxSbJE4wmC9iE2wmzNYTN6AHrcFxvRrQ==, tarball: file:projects/account-service.tgz} + id: file:projects/account-service.tgz name: '@rush-temp/account-service' version: 0.0.0 dependencies: @@ -21796,7 +21922,6 @@ packages: '@types/jest': 29.5.12 '@types/koa': 2.15.0 '@types/koa-bodyparser': 4.3.12 - '@types/koa-morgan': 1.0.8 '@types/koa-router': 7.4.8 '@types/koa__cors': 5.0.0 '@types/node': 20.11.19 @@ -21812,9 +21937,8 @@ packages: jest: 29.7.0(@types/node@20.11.19)(ts-node@10.9.2) koa: 2.15.3 koa-bodyparser: 4.4.1 - koa-morgan: 1.0.1 koa-router: 12.0.1 - mongodb: 6.12.0 + mongodb: 6.12.0(snappy@7.2.2) prettier: 3.2.5 ts-jest: 29.1.2(esbuild@0.24.2)(jest@29.7.0)(typescript@5.3.3) ts-node: 10.9.2(@types/node@20.11.19)(typescript@5.3.3) @@ -21837,7 +21961,7 @@ packages: - supports-color dev: false - file:projects/account.tgz(@types/node@20.11.19)(esbuild@0.24.2)(ts-node@10.9.2): + file:projects/account.tgz(@types/node@20.11.19)(esbuild@0.24.2)(snappy@7.2.2)(ts-node@10.9.2): resolution: {integrity: sha512-aFUxA1twR0m+7sDVFXyKoeVQtVLMrr973LpLK6LHrRa+PD010X6+AyoOkkyVJKFN0Q6zu2Oqz88PsEt50Z2Mjg==, tarball: file:projects/account.tgz} id: file:projects/account.tgz name: '@rush-temp/account' @@ -21853,7 +21977,7 @@ packages: eslint-plugin-n: 15.7.0(eslint@8.56.0) eslint-plugin-promise: 6.1.1(eslint@8.56.0) jest: 29.7.0(@types/node@20.11.19)(ts-node@10.9.2) - mongodb: 6.12.0 + mongodb: 6.12.0(snappy@7.2.2) otp-generator: 4.0.1 postgres: 3.4.5 prettier: 3.2.5 @@ -22377,7 +22501,7 @@ packages: - ts-node dev: false - file:projects/auth-providers.tgz(@types/node@20.11.19)(esbuild@0.24.2)(ts-node@10.9.2): + file:projects/auth-providers.tgz(@types/node@20.11.19)(esbuild@0.24.2)(snappy@7.2.2)(ts-node@10.9.2): resolution: {integrity: sha512-jUJhz8FiPT3x0ybVjdPysK9HBA/E1UzU+QraBxLurUXjwKzqnob4Jw112MUJzyHjAiAmYQGYq7jEePiav6nnMQ==, tarball: file:projects/auth-providers.tgz} id: file:projects/auth-providers.tgz name: '@rush-temp/auth-providers' @@ -22404,7 +22528,7 @@ packages: koa-passport: 6.0.0 koa-router: 12.0.1 koa-session: 6.4.0 - mongodb: 6.12.0 + mongodb: 6.12.0(snappy@7.2.2) openid-client: 5.7.0 passport-custom: 1.1.1 passport-github2: 0.1.12 @@ -22898,12 +23022,13 @@ packages: dev: false file:projects/client-resources.tgz(@types/node@20.11.19)(esbuild@0.24.2)(ts-node@10.9.2): - resolution: {integrity: sha512-zqTNrWtf8+kFkWdM9yok0EgXP9QsxCFomNW1HWyBp0arKXDQMjgA6UJ5qviDhYPjFzQzJil5DRax82wZfvVSkw==, tarball: file:projects/client-resources.tgz} + resolution: {integrity: sha512-s2VP7YDaXR6VMITb2/kgWe69RxM1XaTdNHQJfliJfFaV88egZSK6JNmB40FoA/QY0Vvf7SmJH/Ld+bvjZqGpWA==, tarball: file:projects/client-resources.tgz} id: file:projects/client-resources.tgz name: '@rush-temp/client-resources' version: 0.0.0 dependencies: '@types/jest': 29.5.12 + '@types/snappyjs': 0.7.1 '@typescript-eslint/eslint-plugin': 6.21.0(@typescript-eslint/parser@6.21.0)(eslint@8.56.0)(typescript@5.3.3) '@typescript-eslint/parser': 6.21.0(eslint@8.56.0)(typescript@5.3.3) eslint: 8.56.0 @@ -22913,6 +23038,7 @@ packages: eslint-plugin-promise: 6.1.1(eslint@8.56.0) jest: 29.7.0(@types/node@20.11.19)(ts-node@10.9.2) prettier: 3.2.5 + snappyjs: 0.7.0 ts-jest: 29.1.2(esbuild@0.24.2)(jest@29.7.0)(typescript@5.3.3) typescript: 5.3.3 transitivePeerDependencies: @@ -23030,13 +23156,14 @@ packages: dev: false file:projects/cloud-transactor.tgz(@types/node@20.11.19)(bufferutil@4.0.8)(ts-node@10.9.2)(utf-8-validate@6.0.4): - resolution: {integrity: sha512-6kBv/3KfTsOvsDrfVXQvQwtLM72ltx4oPHc3cJ9xtG82XLeQLLpeJmCy6CNDVOtXaqnagwF5TKm/zCw4sc/dFQ==, tarball: file:projects/cloud-transactor.tgz} + resolution: {integrity: sha512-sLn0+hzDxI1PlNcx3XiLzwU9xU+mui2QodGtjpn7oS5NWnGWM42fbnwfVP35akfki8kKOZ3pE5CcMKQ6ffjUzg==, tarball: file:projects/cloud-transactor.tgz} id: file:projects/cloud-transactor.tgz name: '@rush-temp/cloud-transactor' version: 0.0.0 dependencies: '@cloudflare/workers-types': 4.20241022.0 '@types/jest': 29.5.12 + '@types/snappyjs': 0.7.1 '@typescript-eslint/eslint-plugin': 6.21.0(@typescript-eslint/parser@6.21.0)(eslint@8.56.0)(typescript@5.6.2) '@typescript-eslint/parser': 6.21.0(eslint@8.56.0)(typescript@5.6.2) esbuild: 0.24.2 @@ -23048,6 +23175,7 @@ packages: itty-router: 5.0.18 jest: 29.7.0(@types/node@20.11.19)(ts-node@10.9.2) prettier: 3.2.5 + snappyjs: 0.7.0 ts-jest: 29.1.2(esbuild@0.24.2)(jest@29.7.0)(typescript@5.6.2) typescript: 5.6.2 wrangler: 3.97.0(@cloudflare/workers-types@4.20241022.0)(bufferutil@4.0.8)(utf-8-validate@6.0.4) @@ -23128,7 +23256,7 @@ packages: - ts-node dev: false - file:projects/collaborator.tgz(@tiptap/pm@2.6.6)(bufferutil@4.0.8)(utf-8-validate@6.0.4)(y-protocols@1.0.6): + file:projects/collaborator.tgz(@tiptap/pm@2.6.6)(bufferutil@4.0.8)(snappy@7.2.2)(utf-8-validate@6.0.4)(y-protocols@1.0.6): resolution: {integrity: sha512-5wz+fFNfftwF7QP2u/dvfT2DYB7xFgplfhalPFYz8sLmXJ0NPVsXcr7qve637Vw8tjwjf4zzk3MJpfeJRcWLXQ==, tarball: file:projects/collaborator.tgz} id: file:projects/collaborator.tgz name: '@rush-temp/collaborator' @@ -23158,7 +23286,7 @@ packages: eslint-plugin-promise: 6.1.1(eslint@8.56.0) express: 4.21.2 jest: 29.7.0(@types/node@20.11.19)(ts-node@10.9.2) - mongodb: 6.12.0 + mongodb: 6.12.0(snappy@7.2.2) prettier: 3.2.5 ts-jest: 29.1.2(esbuild@0.24.2)(jest@29.7.0)(typescript@5.3.3) ts-node: 10.9.2(@types/node@20.11.19)(typescript@5.3.3) @@ -24760,7 +24888,7 @@ packages: dev: false file:projects/importer.tgz(esbuild@0.24.2)(ts-node@10.9.2): - resolution: {integrity: sha512-2BSUFKldNxsA3oJ/xjVKMJc975re0WnY1T24b0yscLWNGfMchaPaHNLBMIpd3d4rXywTX0qqBNPt+aWkp2XVBA==, tarball: file:projects/importer.tgz} + resolution: {integrity: sha512-nd4QEoFM7LFj37X/9PCtKl2HTaQl3xnpCbJL+FBuYPJhimHzG4KTvb3E5vZ31OZxgAzYBBLZb1KsswqqlXAJ9A==, tarball: file:projects/importer.tgz} id: file:projects/importer.tgz name: '@rush-temp/importer' version: 0.0.0 @@ -26852,7 +26980,7 @@ packages: - ts-node dev: false - file:projects/mongo.tgz(esbuild@0.24.2)(ts-node@10.9.2): + file:projects/mongo.tgz(esbuild@0.24.2)(snappy@7.2.2)(ts-node@10.9.2): resolution: {integrity: sha512-aqU57iG6awiTX9qWSrzXMKyHSbt0V8mKAutQjE3uCx9FdPpnGiZjJflWsMS5PaZ4MdNazv2vUg4XPDHKCc4A/A==, tarball: file:projects/mongo.tgz} id: file:projects/mongo.tgz name: '@rush-temp/mongo' @@ -26869,7 +26997,7 @@ packages: eslint-plugin-n: 15.7.0(eslint@8.56.0) eslint-plugin-promise: 6.1.1(eslint@8.56.0) jest: 29.7.0(@types/node@20.11.19)(ts-node@10.9.2) - mongodb: 6.12.0 + mongodb: 6.12.0(snappy@7.2.2) prettier: 3.2.5 ts-jest: 29.1.2(esbuild@0.24.2)(jest@29.7.0)(typescript@5.3.3) typescript: 5.3.3 @@ -27240,8 +27368,9 @@ packages: - ts-node dev: false - file:projects/pod-account.tgz: + file:projects/pod-account.tgz(snappy@7.2.2): resolution: {integrity: sha512-DCZlxY22Z2TNo08v2hcwz+2yg0HfoH2psDkdlVGlzX5KwZt6knEzAUZeb+MiOb7KpGSQoKp4jJDcydUcC+QsVQ==, tarball: file:projects/pod-account.tgz} + id: file:projects/pod-account.tgz name: '@rush-temp/pod-account' version: 0.0.0 dependencies: @@ -27265,9 +27394,8 @@ packages: koa: 2.15.3 koa-bodyparser: 4.4.1 koa-router: 12.0.1 - mongodb: 6.12.0 + mongodb: 6.12.0(snappy@7.2.2) prettier: 3.2.5 - prettier-plugin-svelte: 3.2.1(prettier@3.2.5)(svelte@4.2.11) ts-jest: 29.1.2(esbuild@0.24.2)(jest@29.7.0)(typescript@5.3.3) ts-node: 10.9.2(@types/node@20.11.19)(typescript@5.3.3) typescript: 5.3.3 @@ -27289,7 +27417,7 @@ packages: - supports-color dev: false - file:projects/pod-ai-bot.tgz(bufferutil@4.0.8)(utf-8-validate@6.0.4)(zod@3.23.8): + file:projects/pod-ai-bot.tgz(bufferutil@4.0.8)(snappy@7.2.2)(utf-8-validate@6.0.4)(zod@3.23.8): resolution: {integrity: sha512-zCUFPyseaS/JuRQ5JMtR1n8ybdRgxQzRn2aP528X1x+jOBVEH2L7VjDGBx1jsJGuUKvCJBCoOAQlCHDgfRambQ==, tarball: file:projects/pod-ai-bot.tgz} id: file:projects/pod-ai-bot.tgz name: '@rush-temp/pod-ai-bot' @@ -27300,7 +27428,6 @@ packages: '@types/express': 4.17.21 '@types/jest': 29.5.12 '@types/node': 20.11.19 - '@types/node-fetch': 2.6.11 '@types/ws': 8.5.11 '@typescript-eslint/eslint-plugin': 6.21.0(@typescript-eslint/parser@6.21.0)(eslint@8.56.0)(typescript@5.3.3) '@typescript-eslint/parser': 6.21.0(eslint@8.56.0)(typescript@5.3.3) @@ -27318,8 +27445,7 @@ packages: form-data: 4.0.0 jest: 29.7.0(@types/node@20.11.19)(ts-node@10.9.2) js-tiktoken: 1.0.14 - mongodb: 6.12.0 - node-fetch: 2.7.0 + mongodb: 6.12.0(snappy@7.2.2) openai: 4.56.0(zod@3.23.8) prettier: 3.2.5 ts-jest: 29.1.2(esbuild@0.24.2)(jest@29.7.0)(typescript@5.3.3) @@ -27348,7 +27474,7 @@ packages: - zod dev: false - file:projects/pod-analytics-collector.tgz(bufferutil@4.0.8)(utf-8-validate@6.0.4): + file:projects/pod-analytics-collector.tgz(bufferutil@4.0.8)(snappy@7.2.2)(utf-8-validate@6.0.4): resolution: {integrity: sha512-KuE4/ZuLMoEOqY2QyXv7AD0uPt5J7Uwt6jP70iWXcR2oET1+BhD2QTm/9MNsgOsnfiqp0Tdv06pfu7fb2A2Gcw==, tarball: file:projects/pod-analytics-collector.tgz} id: file:projects/pod-analytics-collector.tgz name: '@rush-temp/pod-analytics-collector' @@ -27359,7 +27485,6 @@ packages: '@types/express': 4.17.21 '@types/jest': 29.5.12 '@types/node': 20.11.19 - '@types/ws': 8.5.11 '@typescript-eslint/eslint-plugin': 6.21.0(@typescript-eslint/parser@6.21.0)(eslint@8.56.0)(typescript@5.3.3) '@typescript-eslint/parser': 6.21.0(eslint@8.56.0)(typescript@5.3.3) cors: 2.8.5 @@ -27373,13 +27498,12 @@ packages: eslint-plugin-promise: 6.1.1(eslint@8.56.0) express: 4.21.2 jest: 29.7.0(@types/node@20.11.19)(ts-node@10.9.2) - mongodb: 6.12.0 + mongodb: 6.12.0(snappy@7.2.2) prettier: 3.2.5 puppeteer: 22.14.0(bufferutil@4.0.8)(typescript@5.3.3)(utf-8-validate@6.0.4) ts-jest: 29.1.2(esbuild@0.24.2)(jest@29.7.0)(typescript@5.3.3) ts-node: 10.9.2(@types/node@20.11.19)(typescript@5.3.3) typescript: 5.3.3 - ws: 8.18.0(bufferutil@4.0.8)(utf-8-validate@6.0.4) transitivePeerDependencies: - '@aws-sdk/credential-providers' - '@babel/core' @@ -27401,7 +27525,7 @@ packages: dev: false file:projects/pod-backup.tgz: - resolution: {integrity: sha512-f8l7TT88HfNQ8lRgFe4lA5Zbzb3nPF+9dBmaOAd1SFLWAnbp959dyN4CxGPWQDu4VeQ50vKe3wg7FxoYpgQRyg==, tarball: file:projects/pod-backup.tgz} + resolution: {integrity: sha512-Ccg90DAJu+vNRMm00Z8W768WT8M6AKzjUFktH9/RBbDGQSF+UYQNm7Ah/cMJnJ0GMOg/dQ//r7Tob7WL4kaBeg==, tarball: file:projects/pod-backup.tgz} name: '@rush-temp/pod-backup' version: 0.0.0 dependencies: @@ -27436,7 +27560,7 @@ packages: - supports-color dev: false - file:projects/pod-calendar.tgz(bufferutil@4.0.8)(ts-node@10.9.2)(utf-8-validate@6.0.4): + file:projects/pod-calendar.tgz(bufferutil@4.0.8)(snappy@7.2.2)(ts-node@10.9.2)(utf-8-validate@6.0.4): resolution: {integrity: sha512-THWVQC4htKDjD5lYArV/wgfiwaIoY+a82QlSzT2zRDoJwCzs0ivWxnl+eeCGMgTwb3YA5sbhu9afg3P1MWjNpQ==, tarball: file:projects/pod-calendar.tgz} id: file:projects/pod-calendar.tgz name: '@rush-temp/pod-calendar' @@ -27466,7 +27590,7 @@ packages: googleapis: 122.0.0 jest: 29.7.0(@types/node@20.11.19)(ts-node@10.9.2) jwt-simple: 0.5.6 - mongodb: 6.12.0 + mongodb: 6.12.0(snappy@7.2.2) prettier: 3.2.5 ts-jest: 29.1.2(esbuild@0.24.2)(jest@29.7.0)(typescript@5.3.3) ts-node-dev: 2.0.0(@types/node@20.11.19)(typescript@5.3.3) @@ -27615,7 +27739,7 @@ packages: - supports-color dev: false - file:projects/pod-github.tgz(bufferutil@4.0.8)(utf-8-validate@6.0.4)(y-prosemirror@1.2.12): + file:projects/pod-github.tgz(bufferutil@4.0.8)(snappy@7.2.2)(utf-8-validate@6.0.4)(y-prosemirror@1.2.12): resolution: {integrity: sha512-VO1ipLvo8rWOvJVHMLOW5Xl6JkxWOw7wKEpGWweoJDdrYUIK+od4eVqaGDy2YgyXfQOxmJFTGOZ0l84+PcS3hw==, tarball: file:projects/pod-github.tgz} id: file:projects/pod-github.tgz name: '@rush-temp/pod-github' @@ -27675,7 +27799,7 @@ packages: graphql-binding: 2.5.2 jest: 29.7.0(@types/node@20.11.19)(ts-node@10.9.2) markdown-it: 14.0.0 - mongodb: 6.12.0 + mongodb: 6.12.0(snappy@7.2.2) octokit: 3.2.1 prettier: 3.2.5 smee-client: 1.2.5 @@ -27704,7 +27828,7 @@ packages: - y-prosemirror dev: false - file:projects/pod-gmail.tgz(ts-node@10.9.2): + file:projects/pod-gmail.tgz(snappy@7.2.2)(ts-node@10.9.2): resolution: {integrity: sha512-/NcwrUow5fptRQxcxnzc5ZT/wtBBdlWQRT+IglOudqZbVoN/aSwAXaKd4BoPTyGOPW0D0M2SLYFXZlPvhV4BjQ==, tarball: file:projects/pod-gmail.tgz} id: file:projects/pod-gmail.tgz name: '@rush-temp/pod-gmail' @@ -27716,7 +27840,6 @@ packages: '@types/jest': 29.5.12 '@types/node': 20.11.19 '@types/uuid': 8.3.4 - '@types/ws': 8.5.11 '@typescript-eslint/eslint-plugin': 6.21.0(@typescript-eslint/parser@6.21.0)(eslint@8.56.0)(typescript@5.3.3) '@typescript-eslint/parser': 6.21.0(eslint@8.56.0)(typescript@5.3.3) cors: 2.8.5 @@ -27736,7 +27859,7 @@ packages: googleapis: 122.0.0 jest: 29.7.0(@types/node@20.11.19)(ts-node@10.9.2) jwt-simple: 0.5.6 - mongodb: 6.12.0 + mongodb: 6.12.0(snappy@7.2.2) prettier: 3.2.5 ts-jest: 29.1.2(esbuild@0.24.2)(jest@29.7.0)(typescript@5.3.3) ts-node-dev: 2.0.0(@types/node@20.11.19)(typescript@5.3.3) @@ -27855,7 +27978,7 @@ packages: dev: false file:projects/pod-server.tgz(utf-8-validate@6.0.4): - resolution: {integrity: sha512-4gQfkwfde44+kJ+YPimPEoDHtgdMRy0+J2xk/Uum9wWjKHCe8tQsQZUJxp6S5BU3DPBMaVsC0h9N0jxHpWK49A==, tarball: file:projects/pod-server.tgz} + resolution: {integrity: sha512-U7wNYw+h8a6hEV6fwXYJFStTk5noW4LAsL1G4JCJjyQ7PVzlmXZqGncFe+bq5EqgYgbOewZ2tR+T8rB8HWi9Cw==, tarball: file:projects/pod-server.tgz} id: file:projects/pod-server.tgz name: '@rush-temp/pod-server' version: 0.0.0 @@ -27878,6 +28001,8 @@ packages: msgpackr: 1.11.2 msgpackr-extract: 3.0.3 prettier: 3.2.5 + snappy: 7.2.2 + snappyjs: 0.7.0 ts-jest: 29.1.2(esbuild@0.24.2)(jest@29.7.0)(typescript@5.3.3) ts-node: 10.9.2(@types/node@20.11.19)(typescript@5.3.3) typescript: 5.3.3 @@ -27895,7 +28020,7 @@ packages: dev: false file:projects/pod-ses.tgz: - resolution: {integrity: sha512-Z+IlSWDXbE1r5gAGoFhvdyRXh8qZUlANdrO4jWmT0HuDHWeDibkjK5/YXnqztHDmMbz3QI60RotnYOdJwkqSLA==, tarball: file:projects/pod-ses.tgz} + resolution: {integrity: sha512-P+HVwQR4SO6F4EXl5ReGR6hbng8CKsl4IK6Ww6u7yhNh1x7YGKzmV7UMRjSUc7qsNu4CzOhF7AYatCB602ANjA==, tarball: file:projects/pod-ses.tgz} name: '@rush-temp/pod-ses' version: 0.0.0 dependencies: @@ -27936,8 +28061,9 @@ packages: - supports-color dev: false - file:projects/pod-sign.tgz: + file:projects/pod-sign.tgz(snappy@7.2.2): resolution: {integrity: sha512-2CvZ6MihYZ/0DXWllTffUrvNyRjLJvvUkcT36EpVmgydo2F4guxAhrnsyaivxNPNwP8NuSy7JJ4uXXOYNeXCQg==, tarball: file:projects/pod-sign.tgz} + id: file:projects/pod-sign.tgz name: '@rush-temp/pod-sign' version: 0.0.0 dependencies: @@ -27950,7 +28076,6 @@ packages: '@types/express': 4.17.21 '@types/jest': 29.5.12 '@types/node': 20.11.19 - '@types/ws': 8.5.11 '@typescript-eslint/eslint-plugin': 6.21.0(@typescript-eslint/parser@6.21.0)(eslint@8.56.0)(typescript@5.3.3) '@typescript-eslint/parser': 6.21.0(eslint@8.56.0)(typescript@5.3.3) cors: 2.8.5 @@ -27964,7 +28089,7 @@ packages: eslint-plugin-promise: 6.1.1(eslint@8.56.0) express: 4.21.2 jest: 29.7.0(@types/node@20.11.19)(ts-node@10.9.2) - mongodb: 6.12.0 + mongodb: 6.12.0(snappy@7.2.2) node-forge: 1.3.1 pdf-lib: 1.17.1 prettier: 3.2.5 @@ -28029,7 +28154,7 @@ packages: - supports-color dev: false - file:projects/pod-telegram-bot.tgz(bufferutil@4.0.8)(utf-8-validate@6.0.4): + file:projects/pod-telegram-bot.tgz(bufferutil@4.0.8)(snappy@7.2.2)(utf-8-validate@6.0.4): resolution: {integrity: sha512-QcNX6QCVKgZ6cV4ZkPBzdPH0Nu1F1sQ7yIMYQ4ikoR/BWWBB2U4E/YWd10I3c34QV3DUbKo3CID8EtkzrXadYQ==, tarball: file:projects/pod-telegram-bot.tgz} id: file:projects/pod-telegram-bot.tgz name: '@rush-temp/pod-telegram-bot' @@ -28041,7 +28166,6 @@ packages: '@types/express': 4.17.21 '@types/jest': 29.5.12 '@types/node': 20.11.19 - '@types/node-fetch': 2.6.11 '@types/otp-generator': 4.0.2 '@types/ws': 8.5.11 '@typescript-eslint/eslint-plugin': 6.21.0(@typescript-eslint/parser@6.21.0)(eslint@8.56.0)(typescript@5.3.3) @@ -28058,8 +28182,7 @@ packages: express: 4.21.2 htmlparser2: 9.1.0 jest: 29.7.0(@types/node@20.11.19)(ts-node@10.9.2) - mongodb: 6.12.0 - node-fetch: 2.7.0 + mongodb: 6.12.0(snappy@7.2.2) otp-generator: 4.0.1 prettier: 3.2.5 telegraf: 4.16.3 @@ -28088,7 +28211,7 @@ packages: - utf-8-validate dev: false - file:projects/pod-telegram.tgz(bufferutil@4.0.8)(ts-node@10.9.2)(utf-8-validate@6.0.4): + file:projects/pod-telegram.tgz(bufferutil@4.0.8)(snappy@7.2.2)(ts-node@10.9.2)(utf-8-validate@6.0.4): resolution: {integrity: sha512-FAYbl5GmRCS3fOR5eUXKNS8KmwnwB+7ZZ68vDi5lfeH4hkJky/VdR5yq4dX5SzOB35e7hz9JWriDGxfjUcx6Wg==, tarball: file:projects/pod-telegram.tgz} id: file:projects/pod-telegram.tgz name: '@rush-temp/pod-telegram' @@ -28119,7 +28242,7 @@ packages: jest: 29.7.0(@types/node@20.11.19)(ts-node@10.9.2) jwt-simple: 0.5.6 mime: 3.0.0 - mongodb: 6.12.0 + mongodb: 6.12.0(snappy@7.2.2) prettier: 3.2.5 telegram: 2.22.2 ts-jest: 29.1.2(esbuild@0.24.2)(jest@29.7.0)(typescript@5.3.3) @@ -28149,8 +28272,9 @@ packages: - utf-8-validate dev: false - file:projects/pod-workspace.tgz: + file:projects/pod-workspace.tgz(snappy@7.2.2): resolution: {integrity: sha512-6wRqrWl0oZUzQ2CZBpPK09doQpYepraNAwCO3OcPDaRnDfQo0WBwLvfWOdDVW3REunCCh/DHMxGpuiLnaQX4KQ==, tarball: file:projects/pod-workspace.tgz} + id: file:projects/pod-workspace.tgz name: '@rush-temp/pod-workspace' version: 0.0.0 dependencies: @@ -28166,7 +28290,7 @@ packages: eslint-plugin-n: 15.7.0(eslint@8.56.0) eslint-plugin-promise: 6.1.1(eslint@8.56.0) jest: 29.7.0(@types/node@20.11.19)(ts-node@10.9.2) - mongodb: 6.12.0 + mongodb: 6.12.0(snappy@7.2.2) prettier: 3.2.5 ts-jest: 29.1.2(esbuild@0.24.2)(jest@29.7.0)(typescript@5.3.3) ts-node: 10.9.2(@types/node@20.11.19)(typescript@5.3.3) @@ -31246,7 +31370,7 @@ packages: - ts-node dev: false - file:projects/server-tool.tgz(@types/node@20.11.19)(esbuild@0.24.2)(ts-node@10.9.2): + file:projects/server-tool.tgz(@types/node@20.11.19)(esbuild@0.24.2)(snappy@7.2.2)(ts-node@10.9.2): resolution: {integrity: sha512-G/gF05AF5jsncB4bMGt9HXus2GLzKjAwYPYPlanY7M4tavCE8gOstoBPgW8I/ETxaRI3oztLV7G5UoCHEGON3g==, tarball: file:projects/server-tool.tgz} id: file:projects/server-tool.tgz name: '@rush-temp/server-tool' @@ -31266,7 +31390,7 @@ packages: fast-equals: 5.0.1 jest: 29.7.0(@types/node@20.11.19)(ts-node@10.9.2) js-yaml: 4.1.0 - mongodb: 6.12.0 + mongodb: 6.12.0(snappy@7.2.2) prettier: 3.2.5 ts-jest: 29.1.2(esbuild@0.24.2)(jest@29.7.0)(typescript@5.3.3) typescript: 5.3.3 @@ -31473,7 +31597,7 @@ packages: dev: false file:projects/server-ws.tgz(esbuild@0.24.2)(ts-node@10.9.2): - resolution: {integrity: sha512-Uw0sIkrmlc+pFs1pavpPYPTUS/SvzBIzXygFUw9PGViypnUo54AYq9QLGEXs1dg2HU8TNcPbgtdRx+4S8fTUMA==, tarball: file:projects/server-ws.tgz} + resolution: {integrity: sha512-9PP7kE8LXoZ+7r6OwLp26KT+JFAQtSwg5QP/awwXjcsV2t3yphDYKbdAJuVG5xlLfHW52Xn4NRbr0wFhfwS0sg==, tarball: file:projects/server-ws.tgz} id: file:projects/server-ws.tgz name: '@rush-temp/server-ws' version: 0.0.0 @@ -31498,6 +31622,7 @@ packages: express: 4.21.2 jest: 29.7.0(@types/node@20.11.19)(ts-node@10.9.2) prettier: 3.2.5 + snappy: 7.2.2 ts-jest: 29.1.2(esbuild@0.24.2)(jest@29.7.0)(typescript@5.3.3) typescript: 5.3.3 utf-8-validate: 6.0.4 @@ -32892,8 +33017,9 @@ packages: - ts-node dev: false - file:projects/tool.tgz: - resolution: {integrity: sha512-nyx2osnJq6th2Ttrw5B2TIHUc2j8nTnB4tvx0jIXQLjiq/FEUxBluKLb2eEoHntQ5TxCWEC9a69jkO/QnNWfwA==, tarball: file:projects/tool.tgz} + file:projects/tool.tgz(snappy@7.2.2): + resolution: {integrity: sha512-Cw36G6uROkPkNIJDl7WeHjhHKmbQth6wmjMu4vBQGz+DfuPf9Eg63SFKq29rOssZ4LlJB1d22Y7XnxilCuXK5g==, tarball: file:projects/tool.tgz} + id: file:projects/tool.tgz name: '@rush-temp/tool' version: 0.0.0 dependencies: @@ -32918,11 +33044,10 @@ packages: eslint-plugin-n: 15.7.0(eslint@8.56.0) eslint-plugin-promise: 6.1.1(eslint@8.56.0) fast-equals: 5.0.1 - got: 11.8.6 jest: 29.7.0(@types/node@20.11.19)(ts-node@10.9.2) libphonenumber-js: 1.10.56 mime-types: 2.1.35 - mongodb: 6.12.0 + mongodb: 6.12.0(snappy@7.2.2) msgpackr: 1.11.2 msgpackr-extract: 3.0.3 postgres: 3.4.5 diff --git a/common/scripts/esbuild.js b/common/scripts/esbuild.js index 440df6c532a..26cba9a4c7c 100644 --- a/common/scripts/esbuild.js +++ b/common/scripts/esbuild.js @@ -13,7 +13,7 @@ const defaultConfig = { keepNames: false, sourcemap: false, logLevel: 'error', - external: [], + external: ['snappy'], define: {}, }; diff --git a/dev/tool/package.json b/dev/tool/package.json index 440618bb89c..ece06d48e70 100644 --- a/dev/tool/package.json +++ b/dev/tool/package.json @@ -14,7 +14,7 @@ "_phase:bundle": "rushx bundle", "_phase:docker-build": "rushx docker:build", "_phase:docker-staging": "rushx docker:staging", - "bundle": "node ../../common/scripts/esbuild.js --entry=src/__start.ts --keep-names=true --sourcemap=external --define:MODEL_VERSION --define:GIT_REVISION", + "bundle": "node ../../common/scripts/esbuild.js --entry=src/__start.ts --keep-names=true --external=snappy --sourcemap=external --define:MODEL_VERSION --define:GIT_REVISION", "docker:build": "../../common/scripts/docker_build.sh hardcoreeng/tool", "docker:tbuild": "docker build -t hardcoreeng/tool . --platform=linux/amd64 && ../../common/scripts/docker_tag_push.sh hardcoreeng/tool", "docker:staging": "../../common/scripts/docker_tag.sh hardcoreeng/tool staging", diff --git a/plugins/client-resources/package.json b/plugins/client-resources/package.json index 33627c63d88..02669b57676 100644 --- a/plugins/client-resources/package.json +++ b/plugins/client-resources/package.json @@ -34,14 +34,16 @@ "typescript": "^5.3.3", "jest": "^29.7.0", "ts-jest": "^29.1.1", - "@types/jest": "^29.5.5" + "@types/jest": "^29.5.5", + "@types/snappyjs": "^0.7.1" }, "dependencies": { "@hcengineering/analytics": "^0.6.0", "@hcengineering/platform": "^0.6.11", "@hcengineering/core": "^0.6.32", "@hcengineering/client": "^0.6.18", - "@hcengineering/rpc": "^0.6.5" + "@hcengineering/rpc": "^0.6.5", + "snappyjs": "^0.7.0" }, "repository": "https://github.com/hcengineering/platform", "publishConfig": { diff --git a/plugins/client-resources/src/connection.ts b/plugins/client-resources/src/connection.ts index 0535c8b126c..b6cf18ed35e 100644 --- a/plugins/client-resources/src/connection.ts +++ b/plugins/client-resources/src/connection.ts @@ -56,6 +56,7 @@ import platform, { broadcastEvent, getMetadata } from '@hcengineering/platform' +import { uncompress } from 'snappyjs' import { HelloRequest, HelloResponse, RPCHandler, ReqId, type Response } from '@hcengineering/rpc' @@ -88,6 +89,7 @@ class RequestPromise { class Connection implements ClientConnection { private websocket: ClientSocket | null = null binaryMode = false + compressionMode = false private readonly requests = new Map() private lastId = 0 private interval: number | undefined @@ -286,9 +288,8 @@ class Connection implements ClientConnection { } if (resp.result === 'hello') { const helloResp = resp as HelloResponse - if (helloResp.binary) { - this.binaryMode = true - } + this.binaryMode = helloResp.binary + this.compressionMode = helloResp.useCompression ?? false // We need to clear dial timer, since we recieve hello response. clearTimeout(this.dialTimer) @@ -436,6 +437,7 @@ class Connection implements ClientConnection { private openConnection (ctx: MeasureContext, socketId: number): void { this.binaryMode = false + this.helloRecieved = false // Use defined factory or browser default one. const clientSocketFactory = this.opt?.socketFactory ?? @@ -500,11 +502,28 @@ class Connection implements ClientConnection { } if (event.data instanceof Blob) { void event.data.arrayBuffer().then((data) => { + if (this.compressionMode && this.helloRecieved) { + try { + data = uncompress(data) + } catch (err: any) { + // Ignore + console.error(err) + } + } const resp = this.rpcHandler.readResponse(data, this.binaryMode) this.handleMsg(socketId, resp) }) } else { - const resp = this.rpcHandler.readResponse(event.data, this.binaryMode) + let data = event.data + if (this.compressionMode && this.helloRecieved) { + try { + data = uncompress(data) + } catch (err: any) { + // Ignore + console.error(err) + } + } + const resp = this.rpcHandler.readResponse(data, this.binaryMode) this.handleMsg(socketId, resp) } } @@ -522,15 +541,14 @@ class Connection implements ClientConnection { return } const useBinary = this.opt?.useBinaryProtocol ?? getMetadata(client.metadata.UseBinaryProtocol) ?? true - const useCompression = + this.compressionMode = this.opt?.useProtocolCompression ?? getMetadata(client.metadata.UseProtocolCompression) ?? false - this.helloRecieved = false const helloRequest: HelloRequest = { method: 'hello', params: [], id: -1, binary: useBinary, - compression: useCompression + compression: this.compressionMode } ctx.withSync('send-hello', {}, () => this.websocket?.send(this.rpcHandler.serialize(helloRequest, false))) } diff --git a/pods/fulltext/package.json b/pods/fulltext/package.json index 5e3c6b1b800..3e4788376f3 100644 --- a/pods/fulltext/package.json +++ b/pods/fulltext/package.json @@ -15,7 +15,7 @@ "_phase:docker-build": "rushx docker:build", "_phase:docker-staging": "rushx docker:staging", "get-model": "node ../../common/scripts/esbuild.js --entry=src/get-model.ts --keep-names=true --bundle=true --define=MODEL_VERSION --define=VERSION --define=GIT_REVISION && node ./bundle/bundle.js > ./bundle/model.json", - "bundle": "rushx get-model && node ../../common/scripts/esbuild.js --keep-names=true --bundle=true --external=*.node --sourcemap=external", + "bundle": "rushx get-model && node ../../common/scripts/esbuild.js --keep-names=true --bundle=true --external=*.node --external=snappy --sourcemap=external", "docker:build": "../../common/scripts/docker_build.sh hardcoreeng/fulltext", "docker:tbuild": "docker build -t hardcoreeng/fulltext . --platform=linux/amd64 && ../../common/scripts/docker_tag_push.sh hardcoreeng/fulltext", "docker:abuild": "docker build -t hardcoreeng/fulltext . --platform=linux/arm64 && ../../common/scripts/docker_tag_push.sh hardcoreeng/fulltext", diff --git a/pods/server/package.json b/pods/server/package.json index a3dc2127fe6..6a927028e2a 100644 --- a/pods/server/package.json +++ b/pods/server/package.json @@ -17,7 +17,7 @@ "_phase:docker-build": "rushx docker:build", "_phase:docker-staging": "rushx docker:staging", "get-model": "node ../../common/scripts/esbuild.js --entry=src/get-model.ts -keep-names=true --define=MODEL_VERSION --define=VERSION --define=GIT_REVISION --bundle=true && node ./bundle/bundle.js > ./bundle/model.json", - "bundle": "rushx get-model && node ../../common/scripts/esbuild.js --entry=src/__start.ts --keep-names=true --bundle=true --sourcemap=external --external=*.node --external=*.node --external=bufferutil --external=snappy --define=MODEL_VERSION --define=VERSION --define=GIT_REVISION --external=utf-8-validate --external=msgpackr-extract", + "bundle": "rushx get-model && node ../../common/scripts/esbuild.js --entry=src/__start.ts --keep-names=true --bundle=true --sourcemap=external --external=*.node --external=bufferutil --external=snappy --define=MODEL_VERSION --define=VERSION --define=GIT_REVISION --external=utf-8-validate --external=msgpackr-extract", "docker:build": "../../common/scripts/docker_build.sh hardcoreeng/transactor", "docker:tbuild": "docker build -t hardcoreeng/transactor . --platform=linux/amd64 && ../../common/scripts/docker_tag_push.sh hardcoreeng/transactor", "docker:abuild": "docker build -t hardcoreeng/transactor . --platform=linux/arm64 && ../../common/scripts/docker_tag_push.sh hardcoreeng/transactor", @@ -51,7 +51,8 @@ "jest": "^29.7.0", "ts-jest": "^29.1.1", "@types/jest": "^29.5.5", - "@hcengineering/model-all": "^0.6.0" + "@hcengineering/model-all": "^0.6.0", + "snappyjs": "^0.7.0" }, "dependencies": { "@hcengineering/core": "^0.6.32", @@ -77,6 +78,8 @@ "bufferutil": "^4.0.8", "msgpackr": "^1.11.2", "msgpackr-extract": "^3.0.3", - "@hcengineering/postgres": "^0.6.0" + "@hcengineering/postgres": "^0.6.0", + "snappy": "^7.2.2", + "@hcengineering/rpc": "^0.6.5" } } diff --git a/pods/server/src/__tests__/comptession.spec.ts b/pods/server/src/__tests__/comptession.spec.ts new file mode 100644 index 00000000000..b20fa3594a9 --- /dev/null +++ b/pods/server/src/__tests__/comptession.spec.ts @@ -0,0 +1,23 @@ +import { readFile } from 'fs/promises' +import { compress } from 'snappy' +import { RPCHandler } from '@hcengineering/rpc' + +describe('compression-tests', () => { + it('check-snappy', async () => { + const modelJSON = (await readFile('./bundle/model.json')).toString() + + const txes = JSON.parse(modelJSON) + + const compressed = await compress(modelJSON) + console.log(modelJSON.length, compressed.length, compressed.length / modelJSON.length) + expect(compressed.length).toBeLessThan(modelJSON.length) + + const rpc = new RPCHandler() + + const jsonData = rpc.serialize(txes, true) + + const compressed2 = await compress(jsonData) + console.log(jsonData.length, compressed2.length, compressed2.length / jsonData.length) + expect(compressed2.length).toBeLessThan(jsonData.length) + }) +}) diff --git a/server/core/src/types.ts b/server/core/src/types.ts index dca17b3c016..a49e29b71e1 100644 --- a/server/core/src/types.ts +++ b/server/core/src/types.ts @@ -709,7 +709,6 @@ export type ServerFactory = ( ctx: MeasureContext, pipelineFactory: PipelineFactory, port: number, - enableCompression: boolean, accountsUrl: string, externalStorage: StorageAdapter ) => () => Promise diff --git a/server/rpc/src/rpc.ts b/server/rpc/src/rpc.ts index ac9022c3899..156ec5eea07 100644 --- a/server/rpc/src/rpc.ts +++ b/server/rpc/src/rpc.ts @@ -48,6 +48,7 @@ export interface HelloResponse extends Response { serverVersion: string lastTx?: string lastHash?: string // Last model hash + useCompression?: boolean } function replacer (key: string, value: any): any { diff --git a/server/server/src/sessionManager.ts b/server/server/src/sessionManager.ts index d551af9721e..29bf7f6a428 100644 --- a/server/server/src/sessionManager.ts +++ b/server/server/src/sessionManager.ts @@ -117,7 +117,8 @@ class TSessionManager implements SessionManager { stop: () => Promise } | undefined, - readonly accountsUrl: string + readonly accountsUrl: string, + readonly enableCompression: boolean ) { this.checkInterval = setInterval(() => { this.handleTick() @@ -1080,7 +1081,7 @@ class TSessionManager implements SessionManager { ): Promise { const hello = request as HelloRequest service.binaryMode = hello.binary ?? false - service.useCompression = hello.compression ?? false + service.useCompression = this.enableCompression ? hello.compression ?? false : false if (LOGGING_ENABLED) { ctx.info('hello happen', { @@ -1106,7 +1107,8 @@ class TSessionManager implements SessionManager { reconnect, serverVersion: this.serverVersion, lastTx: pipeline.context.lastTx, - lastHash: pipeline.context.lastHash + lastHash: pipeline.context.lastHash, + useCompression: service.useCompression } ws.send(requestCtx, helloResponse, false, false) } @@ -1123,9 +1125,10 @@ export function createSessionManager ( stop: () => Promise } | undefined, - accountsUrl: string + accountsUrl: string, + enableCompression: boolean ): SessionManager { - return new TSessionManager(ctx, sessionFactory, timeouts, brandingMap ?? null, profiling, accountsUrl) + return new TSessionManager(ctx, sessionFactory, timeouts, brandingMap ?? null, profiling, accountsUrl, enableCompression) } /** @@ -1157,7 +1160,8 @@ export function startSessionManager ( reconnectTimeout: 500 }, opt.profiling, - opt.accountsUrl + opt.accountsUrl, + opt.enableCompression ?? false ) return { shutdown: opt.serverFactory( @@ -1168,7 +1172,6 @@ export function startSessionManager ( ctx, opt.pipelineFactory, opt.port, - opt.enableCompression ?? false, opt.accountsUrl, opt.externalStorage ), diff --git a/server/ws/package.json b/server/ws/package.json index 242748c49a7..253c6da9e65 100644 --- a/server/ws/package.json +++ b/server/ws/package.json @@ -51,6 +51,7 @@ "express": "^4.21.2", "utf-8-validate": "^6.0.4", "ws": "^8.18.0", - "body-parser": "^1.20.2" + "body-parser": "^1.20.2", + "snappy": "^7.2.2" } } diff --git a/server/ws/src/server_http.ts b/server/ws/src/server_http.ts index 9018a7f4762..5ba1be3b9a2 100644 --- a/server/ws/src/server_http.ts +++ b/server/ws/src/server_http.ts @@ -45,7 +45,9 @@ import os from 'os' import { WebSocketServer, type RawData, type WebSocket } from 'ws' import 'bufferutil' +import { compress } from 'snappy' import 'utf-8-validate' + let profiling = false const rpcHandler = new RPCHandler() /** @@ -60,14 +62,12 @@ export function startHttpServer ( ctx: MeasureContext, pipelineFactory: PipelineFactory, port: number, - enableCompression: boolean, accountsUrl: string, externalStorage: StorageAdapter ): () => Promise { if (LOGGING_ENABLED) { ctx.info('starting server on', { port, - enableCompression, accountsUrl, parallel: os.availableParallelism() }) @@ -324,27 +324,7 @@ export function startHttpServer ( const httpServer = http.createServer(app) const wss = new WebSocketServer({ noServer: true, - perMessageDeflate: enableCompression - ? { - zlibDeflateOptions: { - // See zlib defaults. - chunkSize: 32 * 1024, - memLevel: 1, - level: 1 - }, - zlibInflateOptions: { - chunkSize: 32 * 1024, - level: 1, - memLevel: 1 - }, - serverNoContextTakeover: true, - clientNoContextTakeover: true, - // Below options specified as default values. - concurrencyLimit: Math.max(10, os.availableParallelism()), // Limits zlib concurrency for perf. - threshold: 1024 // Size (in bytes) below which messages - // should not be compressed if context takeover is disabled. - } - : false, + perMessageDeflate: false, skipUTF8Validation: true, maxPayload: 250 * 1024 * 1024, clientTracking: false // We do not need to track clients inside clients. @@ -566,7 +546,7 @@ function createWebsocketClientSocket ( } ws.send(pongConst) }, - send: (ctx: MeasureContext, msg, binary, compression) => { + send: (ctx: MeasureContext, msg, binary, _compression) => { const smsg = rpcHandler.serialize(msg, binary) ctx.measure('send-data', smsg.length) @@ -574,15 +554,24 @@ function createWebsocketClientSocket ( if (ws.readyState !== ws.OPEN || cs.isClosed) { return } - ws.send(smsg, { binary: true, compress: compression }, (err) => { + + const handleErr = (err?: Error): void => { + ctx.measure('msg-send-delta', Date.now() - st) if (err != null) { if (!`${err.message}`.includes('WebSocket is not open')) { ctx.error('send error', { err }) Analytics.handleError(err) } } - ctx.measure('msg-send-delta', Date.now() - st) - }) + } + + if (_compression) { + void compress(smsg).then((msg: any) => { + ws.send(msg, { binary: true }, handleErr) + }) + } else { + ws.send(smsg, { binary: true }, handleErr) + } } } return cs diff --git a/workers/transactor/package.json b/workers/transactor/package.json index 46d7aa89749..8e70e70050f 100644 --- a/workers/transactor/package.json +++ b/workers/transactor/package.json @@ -39,7 +39,8 @@ "ts-jest": "^29.1.1", "typescript": "^5.3.3", "wrangler": "^3.97.0", - "esbuild": "^0.24.2" + "esbuild": "^0.24.2", + "@types/snappyjs": "^0.7.1" }, "dependencies": { "@hcengineering/core": "^0.6.32", @@ -54,6 +55,7 @@ "@hcengineering/server-pipeline": "^0.6.0", "@hcengineering/server-token": "^0.6.11", "@hcengineering/storage": "^0.6.0", - "itty-router": "^5.0.18" + "itty-router": "^5.0.18", + "snappyjs": "^0.7.0" } } diff --git a/workers/transactor/src/transactor.ts b/workers/transactor/src/transactor.ts index d474090da57..b2e37987812 100644 --- a/workers/transactor/src/transactor.ts +++ b/workers/transactor/src/transactor.ts @@ -29,6 +29,7 @@ import serverPlugin, { decodeToken, type Token } from '@hcengineering/server-tok import { DurableObject } from 'cloudflare:workers' import { promisify } from 'util' import { gzip } from 'zlib' +import { compress } from 'snappyjs' // Approach usefull only for separate build, after model-all bundle phase is executed. import { createPostgreeDestroyAdapter, createPostgresAdapter, createPostgresTxAdapter } from '@hcengineering/postgres' @@ -111,7 +112,8 @@ export class Transactor extends DurableObject { reconnectTimeout: 3000 }, undefined, - this.accountsUrl + this.accountsUrl, + env.ENABLE_COMPRESSION === 'true' ) }) } @@ -269,13 +271,18 @@ export class Transactor extends DurableObject { return rpcHandler.readRequest(buffer, binary) }, data: () => data, - send: (ctx: MeasureContext, msg, binary, compression) => { - const smsg = rpcHandler.serialize(msg, binary) + send: (ctx: MeasureContext, msg, binary, _compression) => { + let smsg = rpcHandler.serialize(msg, binary) ctx.measure('send-data', smsg.length) if (ws.readyState !== WebSocket.OPEN || cs.isClosed) { return } + + if (_compression) { + smsg = compress(smsg) + } + ws.send(smsg) }, sendPong: () => { diff --git a/workers/transactor/worker-configuration.d.ts b/workers/transactor/worker-configuration.d.ts index df2ca7ab0ea..4cdf84b101f 100644 --- a/workers/transactor/worker-configuration.d.ts +++ b/workers/transactor/worker-configuration.d.ts @@ -12,4 +12,6 @@ interface Env { DB_URL: string | undefined STATS_URL: string | undefined + + ENABLE_COMPRESSION: string | undefined }