diff --git a/.vscode/launch.json b/.vscode/launch.json index 2af048145a..67d1affa86 100644 --- a/.vscode/launch.json +++ b/.vscode/launch.json @@ -54,7 +54,7 @@ "MODEL_JSON": "${workspaceRoot}/models/all/bundle/model.json", // "SERVER_PROVIDER":"uweb" "SERVER_PROVIDER":"ws", - "MODEL_VERSION": "0.6.287", + "MODEL_VERSION": "0.6.382", // "VERSION": "0.6.289", "ELASTIC_INDEX_NAME": "local_storage_index", "UPLOAD_URL": "/files", @@ -165,7 +165,7 @@ "MINIO_ACCESS_KEY": "minioadmin", "MINIO_SECRET_KEY": "minioadmin", "MINIO_ENDPOINT": "localhost", - "MODEL_VERSION": "v0.6.287", + "MODEL_VERSION": "v0.6.382", "WS_OPERATION": "all+backup", "BACKUP_STORAGE": "minio|minio?accessKey=minioadmin&secretKey=minioadmin", "BACKUP_BUCKET": "dev-backups", @@ -197,7 +197,7 @@ "MINIO_ACCESS_KEY": "minioadmin", "MINIO_SECRET_KEY": "minioadmin", "MINIO_ENDPOINT": "localhost", - "MODEL_VERSION": "v0.6.287", + "MODEL_VERSION": "v0.6.382", "WS_OPERATION": "all+backup", "BACKUP_STORAGE": "minio|minio?accessKey=minioadmin&secretKey=minioadmin", "BACKUP_BUCKET": "dev-backups", @@ -325,7 +325,7 @@ "ACCOUNTS_URL": "http://localhost:3000", "TELEGRAM_DATABASE": "telegram-service", "REKONI_URL": "http://localhost:4004", - "MODEL_VERSION": "0.6.287" + "MODEL_VERSION": "0.6.382" }, "runtimeVersion": "20", "runtimeArgs": ["--nolazy", "-r", "ts-node/register"], @@ -352,7 +352,7 @@ "MONGO_URL": "mongodb://localhost:27017", "TELEGRAM_DATABASE": "telegram-service", "REKONI_URL": "http://localhost:4004", - "MODEL_VERSION": "0.6.287" + "MODEL_VERSION": "0.6.382" }, "runtimeArgs": ["--nolazy", "-r", "ts-node/register"], "sourceMaps": true, diff --git a/common/config/rush/pnpm-lock.yaml b/common/config/rush/pnpm-lock.yaml index e344898855..639b6bfc49 100644 --- a/common/config/rush/pnpm-lock.yaml +++ b/common/config/rush/pnpm-lock.yaml @@ -1143,8 +1143,8 @@ dependencies: specifier: file:./projects/workspace-service.tgz version: file:projects/workspace-service.tgz '@sentry/node': - specifier: ^7.103.0 - version: 7.118.0 + specifier: ^8.48.0 + version: 8.48.0 '@sentry/svelte': specifier: ~7.101.0 version: 7.101.1(svelte@4.2.19) @@ -5348,6 +5348,464 @@ packages: aggregate-error: 3.1.0 dev: false + /@opentelemetry/api-logs@0.53.0: + resolution: {integrity: sha512-8HArjKx+RaAI8uEIgcORbZIPklyh1YLjPSBus8hjRmvLi6DeFzgOcdZ7KwPabKj8mXF8dX0hyfAyGfycz0DbFw==} + engines: {node: '>=14'} + dependencies: + '@opentelemetry/api': 1.9.0 + dev: false + + /@opentelemetry/api-logs@0.56.0: + resolution: {integrity: sha512-Wr39+94UNNG3Ei9nv3pHd4AJ63gq5nSemMRpCd8fPwDL9rN3vK26lzxfH27mw16XzOSO+TpyQwBAMaLxaPWG0g==} + engines: {node: '>=14'} + dependencies: + '@opentelemetry/api': 1.9.0 + dev: false + + /@opentelemetry/api@1.9.0: + resolution: {integrity: sha512-3giAOQvZiH5F9bMlMiv8+GSPMeqg0dbaeo58/0SlA9sxSqZhnUtxzX9/2FzyhS9sWQf5S0GJE0AKBrFqjpeYcg==} + engines: {node: '>=8.0.0'} + dev: false + + /@opentelemetry/context-async-hooks@1.30.0(@opentelemetry/api@1.9.0): + resolution: {integrity: sha512-roCetrG/cz0r/gugQm/jFo75UxblVvHaNSRoR0kSSRSzXFAiIBqFCZuH458BHBNRtRe+0yJdIJ21L9t94bw7+g==} + engines: {node: '>=14'} + peerDependencies: + '@opentelemetry/api': '>=1.0.0 <1.10.0' + dependencies: + '@opentelemetry/api': 1.9.0 + dev: false + + /@opentelemetry/core@1.29.0(@opentelemetry/api@1.9.0): + resolution: {integrity: sha512-gmT7vAreXl0DTHD2rVZcw3+l2g84+5XiHIqdBUxXbExymPCvSsGOpiwMmn8nkiJur28STV31wnhIDrzWDPzjfA==} + engines: {node: '>=14'} + peerDependencies: + '@opentelemetry/api': '>=1.0.0 <1.10.0' + dependencies: + '@opentelemetry/api': 1.9.0 + '@opentelemetry/semantic-conventions': 1.28.0 + dev: false + + /@opentelemetry/core@1.30.0(@opentelemetry/api@1.9.0): + resolution: {integrity: sha512-Q/3u/K73KUjTCnFUP97ZY+pBjQ1kPEgjOfXj/bJl8zW7GbXdkw6cwuyZk6ZTXkVgCBsYRYUzx4fvYK1jxdb9MA==} + engines: {node: '>=14'} + peerDependencies: + '@opentelemetry/api': '>=1.0.0 <1.10.0' + dependencies: + '@opentelemetry/api': 1.9.0 + '@opentelemetry/semantic-conventions': 1.28.0 + dev: false + + /@opentelemetry/instrumentation-amqplib@0.45.0(@opentelemetry/api@1.9.0): + resolution: {integrity: sha512-SlKLsOS65NGMIBG1Lh/hLrMDU9WzTUF25apnV6ZmWZB1bBmUwan7qrwwrTu1cL5LzJWCXOdZPuTaxP7pC9qxnQ==} + engines: {node: '>=14'} + peerDependencies: + '@opentelemetry/api': ^1.3.0 + dependencies: + '@opentelemetry/api': 1.9.0 + '@opentelemetry/core': 1.30.0(@opentelemetry/api@1.9.0) + '@opentelemetry/instrumentation': 0.56.0(@opentelemetry/api@1.9.0) + '@opentelemetry/semantic-conventions': 1.28.0 + transitivePeerDependencies: + - supports-color + dev: false + + /@opentelemetry/instrumentation-connect@0.42.0(@opentelemetry/api@1.9.0): + resolution: {integrity: sha512-bOoYHBmbnq/jFaLHmXJ55VQ6jrH5fHDMAPjFM0d3JvR0dvIqW7anEoNC33QqYGFYUfVJ50S0d/eoyF61ALqQuA==} + engines: {node: '>=14'} + peerDependencies: + '@opentelemetry/api': ^1.3.0 + dependencies: + '@opentelemetry/api': 1.9.0 + '@opentelemetry/core': 1.30.0(@opentelemetry/api@1.9.0) + '@opentelemetry/instrumentation': 0.56.0(@opentelemetry/api@1.9.0) + '@opentelemetry/semantic-conventions': 1.28.0 + '@types/connect': 3.4.36 + transitivePeerDependencies: + - supports-color + dev: false + + /@opentelemetry/instrumentation-dataloader@0.15.0(@opentelemetry/api@1.9.0): + resolution: {integrity: sha512-5fP35A2jUPk4SerVcduEkpbRAIoqa2PaP5rWumn01T1uSbavXNccAr3Xvx1N6xFtZxXpLJq4FYqGFnMgDWgVng==} + engines: {node: '>=14'} + peerDependencies: + '@opentelemetry/api': ^1.3.0 + dependencies: + '@opentelemetry/api': 1.9.0 + '@opentelemetry/instrumentation': 0.56.0(@opentelemetry/api@1.9.0) + transitivePeerDependencies: + - supports-color + dev: false + + /@opentelemetry/instrumentation-express@0.46.0(@opentelemetry/api@1.9.0): + resolution: {integrity: sha512-BCEClDj/HPq/1xYRAlOr6z+OUnbp2eFp18DSrgyQz4IT9pkdYk8eWHnMi9oZSqlC6J5mQzkFmaW5RrKb1GLQhg==} + engines: {node: '>=14'} + peerDependencies: + '@opentelemetry/api': ^1.3.0 + dependencies: + '@opentelemetry/api': 1.9.0 + '@opentelemetry/core': 1.30.0(@opentelemetry/api@1.9.0) + '@opentelemetry/instrumentation': 0.56.0(@opentelemetry/api@1.9.0) + '@opentelemetry/semantic-conventions': 1.28.0 + transitivePeerDependencies: + - supports-color + dev: false + + /@opentelemetry/instrumentation-fastify@0.43.0(@opentelemetry/api@1.9.0): + resolution: {integrity: sha512-Lmdsg7tYiV+K3/NKVAQfnnLNGmakUOFdB0PhoTh2aXuSyCmyNnnDvhn2MsArAPTZ68wnD5Llh5HtmiuTkf+DyQ==} + engines: {node: '>=14'} + peerDependencies: + '@opentelemetry/api': ^1.3.0 + dependencies: + '@opentelemetry/api': 1.9.0 + '@opentelemetry/core': 1.30.0(@opentelemetry/api@1.9.0) + '@opentelemetry/instrumentation': 0.56.0(@opentelemetry/api@1.9.0) + '@opentelemetry/semantic-conventions': 1.28.0 + transitivePeerDependencies: + - supports-color + dev: false + + /@opentelemetry/instrumentation-fs@0.18.0(@opentelemetry/api@1.9.0): + resolution: {integrity: sha512-kC40y6CEMONm8/MWwoF5GHWIC7gOdF+g3sgsjfwJaUkgD6bdWV+FgG0XApqSbTQndICKzw3RonVk8i7s6mHqhA==} + engines: {node: '>=14'} + peerDependencies: + '@opentelemetry/api': ^1.3.0 + dependencies: + '@opentelemetry/api': 1.9.0 + '@opentelemetry/core': 1.30.0(@opentelemetry/api@1.9.0) + '@opentelemetry/instrumentation': 0.56.0(@opentelemetry/api@1.9.0) + transitivePeerDependencies: + - supports-color + dev: false + + /@opentelemetry/instrumentation-generic-pool@0.42.0(@opentelemetry/api@1.9.0): + resolution: {integrity: sha512-J4QxqiQ1imtB9ogzsOnHra0g3dmmLAx4JCeoK3o0rFes1OirljNHnO8Hsj4s1jAir8WmWvnEEQO1y8yk6j2tog==} + engines: {node: '>=14'} + peerDependencies: + '@opentelemetry/api': ^1.3.0 + dependencies: + '@opentelemetry/api': 1.9.0 + '@opentelemetry/instrumentation': 0.56.0(@opentelemetry/api@1.9.0) + transitivePeerDependencies: + - supports-color + dev: false + + /@opentelemetry/instrumentation-graphql@0.46.0(@opentelemetry/api@1.9.0): + resolution: {integrity: sha512-tplk0YWINSECcK89PGM7IVtOYenXyoOuhOQlN0X0YrcDUfMS4tZMKkVc0vyhNWYYrexnUHwNry2YNBNugSpjlQ==} + engines: {node: '>=14'} + peerDependencies: + '@opentelemetry/api': ^1.3.0 + dependencies: + '@opentelemetry/api': 1.9.0 + '@opentelemetry/instrumentation': 0.56.0(@opentelemetry/api@1.9.0) + transitivePeerDependencies: + - supports-color + dev: false + + /@opentelemetry/instrumentation-hapi@0.44.0(@opentelemetry/api@1.9.0): + resolution: {integrity: sha512-4HdNIMNXWK1O6nsaQOrACo83QWEVoyNODTdVDbUqtqXiv2peDfD0RAPhSQlSGWLPw3S4d9UoOmrV7s2HYj6T2A==} + engines: {node: '>=14'} + peerDependencies: + '@opentelemetry/api': ^1.3.0 + dependencies: + '@opentelemetry/api': 1.9.0 + '@opentelemetry/core': 1.30.0(@opentelemetry/api@1.9.0) + '@opentelemetry/instrumentation': 0.56.0(@opentelemetry/api@1.9.0) + '@opentelemetry/semantic-conventions': 1.28.0 + transitivePeerDependencies: + - supports-color + dev: false + + /@opentelemetry/instrumentation-http@0.56.0(@opentelemetry/api@1.9.0): + resolution: {integrity: sha512-/bWHBUAq8VoATnH9iLk5w8CE9+gj+RgYSUphe7hry472n6fYl7+4PvuScoQMdmSUTprKq/gyr2kOWL6zrC7FkQ==} + engines: {node: '>=14'} + peerDependencies: + '@opentelemetry/api': ^1.3.0 + dependencies: + '@opentelemetry/api': 1.9.0 + '@opentelemetry/core': 1.29.0(@opentelemetry/api@1.9.0) + '@opentelemetry/instrumentation': 0.56.0(@opentelemetry/api@1.9.0) + '@opentelemetry/semantic-conventions': 1.28.0 + forwarded-parse: 2.1.2 + semver: 7.6.3 + transitivePeerDependencies: + - supports-color + dev: false + + /@opentelemetry/instrumentation-ioredis@0.46.0(@opentelemetry/api@1.9.0): + resolution: {integrity: sha512-sOdsq8oGi29V58p1AkefHvuB3l2ymP1IbxRIX3y4lZesQWKL8fLhBmy8xYjINSQ5gHzWul2yoz7pe7boxhZcqQ==} + engines: {node: '>=14'} + peerDependencies: + '@opentelemetry/api': ^1.3.0 + dependencies: + '@opentelemetry/api': 1.9.0 + '@opentelemetry/instrumentation': 0.56.0(@opentelemetry/api@1.9.0) + '@opentelemetry/redis-common': 0.36.2 + '@opentelemetry/semantic-conventions': 1.28.0 + transitivePeerDependencies: + - supports-color + dev: false + + /@opentelemetry/instrumentation-kafkajs@0.6.0(@opentelemetry/api@1.9.0): + resolution: {integrity: sha512-MGQrzqEUAl0tacKJUFpuNHJesyTi51oUzSVizn7FdvJplkRIdS11FukyZBZJEscofSEdk7Ycmg+kNMLi5QHUFg==} + engines: {node: '>=14'} + peerDependencies: + '@opentelemetry/api': ^1.3.0 + dependencies: + '@opentelemetry/api': 1.9.0 + '@opentelemetry/instrumentation': 0.56.0(@opentelemetry/api@1.9.0) + '@opentelemetry/semantic-conventions': 1.28.0 + transitivePeerDependencies: + - supports-color + dev: false + + /@opentelemetry/instrumentation-knex@0.43.0(@opentelemetry/api@1.9.0): + resolution: {integrity: sha512-mOp0TRQNFFSBj5am0WF67fRO7UZMUmsF3/7HSDja9g3H4pnj+4YNvWWyZn4+q0rGrPtywminAXe0rxtgaGYIqg==} + engines: {node: '>=14'} + peerDependencies: + '@opentelemetry/api': ^1.3.0 + dependencies: + '@opentelemetry/api': 1.9.0 + '@opentelemetry/instrumentation': 0.56.0(@opentelemetry/api@1.9.0) + '@opentelemetry/semantic-conventions': 1.28.0 + transitivePeerDependencies: + - supports-color + dev: false + + /@opentelemetry/instrumentation-koa@0.46.0(@opentelemetry/api@1.9.0): + resolution: {integrity: sha512-RcWXMQdJQANnPUaXbHY5G0Fg6gmleZ/ZtZeSsekWPaZmQq12FGk0L1UwodIgs31OlYfviAZ4yTeytoSUkgo5vQ==} + engines: {node: '>=14'} + peerDependencies: + '@opentelemetry/api': ^1.3.0 + dependencies: + '@opentelemetry/api': 1.9.0 + '@opentelemetry/core': 1.30.0(@opentelemetry/api@1.9.0) + '@opentelemetry/instrumentation': 0.56.0(@opentelemetry/api@1.9.0) + '@opentelemetry/semantic-conventions': 1.28.0 + transitivePeerDependencies: + - supports-color + dev: false + + /@opentelemetry/instrumentation-lru-memoizer@0.43.0(@opentelemetry/api@1.9.0): + resolution: {integrity: sha512-fZc+1eJUV+tFxaB3zkbupiA8SL3vhDUq89HbDNg1asweYrEb9OlHIB+Ot14ZiHUc1qCmmWmZHbPTwa56mVVwzg==} + engines: {node: '>=14'} + peerDependencies: + '@opentelemetry/api': ^1.3.0 + dependencies: + '@opentelemetry/api': 1.9.0 + '@opentelemetry/instrumentation': 0.56.0(@opentelemetry/api@1.9.0) + transitivePeerDependencies: + - supports-color + dev: false + + /@opentelemetry/instrumentation-mongodb@0.50.0(@opentelemetry/api@1.9.0): + resolution: {integrity: sha512-DtwJMjYFXFT5auAvv8aGrBj1h3ciA/dXQom11rxL7B1+Oy3FopSpanvwYxJ+z0qmBrQ1/iMuWELitYqU4LnlkQ==} + engines: {node: '>=14'} + peerDependencies: + '@opentelemetry/api': ^1.3.0 + dependencies: + '@opentelemetry/api': 1.9.0 + '@opentelemetry/instrumentation': 0.56.0(@opentelemetry/api@1.9.0) + '@opentelemetry/semantic-conventions': 1.28.0 + transitivePeerDependencies: + - supports-color + dev: false + + /@opentelemetry/instrumentation-mongoose@0.45.0(@opentelemetry/api@1.9.0): + resolution: {integrity: sha512-zHgNh+A01C5baI2mb5dAGyMC7DWmUpOfwpV8axtC0Hd5Uzqv+oqKgKbVDIVhOaDkPxjgVJwYF9YQZl2pw2qxIA==} + engines: {node: '>=14'} + peerDependencies: + '@opentelemetry/api': ^1.3.0 + dependencies: + '@opentelemetry/api': 1.9.0 + '@opentelemetry/core': 1.30.0(@opentelemetry/api@1.9.0) + '@opentelemetry/instrumentation': 0.56.0(@opentelemetry/api@1.9.0) + '@opentelemetry/semantic-conventions': 1.28.0 + transitivePeerDependencies: + - supports-color + dev: false + + /@opentelemetry/instrumentation-mysql2@0.44.0(@opentelemetry/api@1.9.0): + resolution: {integrity: sha512-e9QY4AGsjGFwmfHd6kBa4yPaQZjAq2FuxMb0BbKlXCAjG+jwqw+sr9xWdJGR60jMsTq52hx3mAlE3dUJ9BipxQ==} + engines: {node: '>=14'} + peerDependencies: + '@opentelemetry/api': ^1.3.0 + dependencies: + '@opentelemetry/api': 1.9.0 + '@opentelemetry/instrumentation': 0.56.0(@opentelemetry/api@1.9.0) + '@opentelemetry/semantic-conventions': 1.28.0 + '@opentelemetry/sql-common': 0.40.1(@opentelemetry/api@1.9.0) + transitivePeerDependencies: + - supports-color + dev: false + + /@opentelemetry/instrumentation-mysql@0.44.0(@opentelemetry/api@1.9.0): + resolution: {integrity: sha512-al7jbXvT/uT1KV8gdNDzaWd5/WXf+mrjrsF0/NtbnqLa0UUFGgQnoK3cyborgny7I+KxWhL8h7YPTf6Zq4nKsg==} + engines: {node: '>=14'} + peerDependencies: + '@opentelemetry/api': ^1.3.0 + dependencies: + '@opentelemetry/api': 1.9.0 + '@opentelemetry/instrumentation': 0.56.0(@opentelemetry/api@1.9.0) + '@opentelemetry/semantic-conventions': 1.28.0 + '@types/mysql': 2.15.26 + transitivePeerDependencies: + - supports-color + dev: false + + /@opentelemetry/instrumentation-nestjs-core@0.43.0(@opentelemetry/api@1.9.0): + resolution: {integrity: sha512-NEo4RU7HTjiaXk3curqXUvCb9alRiFWxQY//+hvDXwWLlADX2vB6QEmVCeEZrKO+6I/tBrI4vNdAnbCY9ldZVg==} + engines: {node: '>=14'} + peerDependencies: + '@opentelemetry/api': ^1.3.0 + dependencies: + '@opentelemetry/api': 1.9.0 + '@opentelemetry/instrumentation': 0.56.0(@opentelemetry/api@1.9.0) + '@opentelemetry/semantic-conventions': 1.28.0 + transitivePeerDependencies: + - supports-color + dev: false + + /@opentelemetry/instrumentation-pg@0.49.0(@opentelemetry/api@1.9.0): + resolution: {integrity: sha512-3alvNNjPXVdAPdY1G7nGRVINbDxRK02+KAugDiEpzw0jFQfU8IzFkSWA4jyU4/GbMxKvHD+XIOEfSjpieSodKw==} + engines: {node: '>=14'} + peerDependencies: + '@opentelemetry/api': ^1.3.0 + dependencies: + '@opentelemetry/api': 1.9.0 + '@opentelemetry/core': 1.30.0(@opentelemetry/api@1.9.0) + '@opentelemetry/instrumentation': 0.56.0(@opentelemetry/api@1.9.0) + '@opentelemetry/semantic-conventions': 1.27.0 + '@opentelemetry/sql-common': 0.40.1(@opentelemetry/api@1.9.0) + '@types/pg': 8.6.1 + '@types/pg-pool': 2.0.6 + transitivePeerDependencies: + - supports-color + dev: false + + /@opentelemetry/instrumentation-redis-4@0.45.0(@opentelemetry/api@1.9.0): + resolution: {integrity: sha512-Sjgym1xn3mdxPRH5CNZtoz+bFd3E3NlGIu7FoYr4YrQouCc9PbnmoBcmSkEdDy5LYgzNildPgsjx9l0EKNjKTQ==} + engines: {node: '>=14'} + peerDependencies: + '@opentelemetry/api': ^1.3.0 + dependencies: + '@opentelemetry/api': 1.9.0 + '@opentelemetry/instrumentation': 0.56.0(@opentelemetry/api@1.9.0) + '@opentelemetry/redis-common': 0.36.2 + '@opentelemetry/semantic-conventions': 1.28.0 + transitivePeerDependencies: + - supports-color + dev: false + + /@opentelemetry/instrumentation-tedious@0.17.0(@opentelemetry/api@1.9.0): + resolution: {integrity: sha512-yRBz2409an03uVd1Q2jWMt3SqwZqRFyKoWYYX3hBAtPDazJ4w5L+1VOij71TKwgZxZZNdDBXImTQjii+VeuzLg==} + engines: {node: '>=14'} + peerDependencies: + '@opentelemetry/api': ^1.3.0 + dependencies: + '@opentelemetry/api': 1.9.0 + '@opentelemetry/instrumentation': 0.56.0(@opentelemetry/api@1.9.0) + '@opentelemetry/semantic-conventions': 1.28.0 + '@types/tedious': 4.0.14 + transitivePeerDependencies: + - supports-color + dev: false + + /@opentelemetry/instrumentation-undici@0.9.0(@opentelemetry/api@1.9.0): + resolution: {integrity: sha512-lxc3cpUZ28CqbrWcUHxGW/ObDpMOYbuxF/ZOzeFZq54P9uJ2Cpa8gcrC9F716mtuiMaekwk8D6n34vg/JtkkxQ==} + engines: {node: '>=14'} + peerDependencies: + '@opentelemetry/api': ^1.7.0 + dependencies: + '@opentelemetry/api': 1.9.0 + '@opentelemetry/core': 1.30.0(@opentelemetry/api@1.9.0) + '@opentelemetry/instrumentation': 0.56.0(@opentelemetry/api@1.9.0) + transitivePeerDependencies: + - supports-color + dev: false + + /@opentelemetry/instrumentation@0.53.0(@opentelemetry/api@1.9.0): + resolution: {integrity: sha512-DMwg0hy4wzf7K73JJtl95m/e0boSoWhH07rfvHvYzQtBD3Bmv0Wc1x733vyZBqmFm8OjJD0/pfiUg1W3JjFX0A==} + engines: {node: '>=14'} + peerDependencies: + '@opentelemetry/api': ^1.3.0 + dependencies: + '@opentelemetry/api': 1.9.0 + '@opentelemetry/api-logs': 0.53.0 + '@types/shimmer': 1.2.0 + import-in-the-middle: 1.12.0 + require-in-the-middle: 7.4.0 + semver: 7.6.3 + shimmer: 1.2.1 + transitivePeerDependencies: + - supports-color + dev: false + + /@opentelemetry/instrumentation@0.56.0(@opentelemetry/api@1.9.0): + resolution: {integrity: sha512-2KkGBKE+FPXU1F0zKww+stnlUxUTlBvLCiWdP63Z9sqXYeNI/ziNzsxAp4LAdUcTQmXjw1IWgvm5CAb/BHy99w==} + engines: {node: '>=14'} + peerDependencies: + '@opentelemetry/api': ^1.3.0 + dependencies: + '@opentelemetry/api': 1.9.0 + '@opentelemetry/api-logs': 0.56.0 + '@types/shimmer': 1.2.0 + import-in-the-middle: 1.12.0 + require-in-the-middle: 7.4.0 + semver: 7.6.3 + shimmer: 1.2.1 + transitivePeerDependencies: + - supports-color + dev: false + + /@opentelemetry/redis-common@0.36.2: + resolution: {integrity: sha512-faYX1N0gpLhej/6nyp6bgRjzAKXn5GOEMYY7YhciSfCoITAktLUtQ36d24QEWNA1/WA1y6qQunCe0OhHRkVl9g==} + engines: {node: '>=14'} + dev: false + + /@opentelemetry/resources@1.30.0(@opentelemetry/api@1.9.0): + resolution: {integrity: sha512-5mGMjL0Uld/99t7/pcd7CuVtJbkARckLVuiOX84nO8RtLtIz0/J6EOHM2TGvPZ6F4K+XjUq13gMx14w80SVCQg==} + engines: {node: '>=14'} + peerDependencies: + '@opentelemetry/api': '>=1.0.0 <1.10.0' + dependencies: + '@opentelemetry/api': 1.9.0 + '@opentelemetry/core': 1.30.0(@opentelemetry/api@1.9.0) + '@opentelemetry/semantic-conventions': 1.28.0 + dev: false + + /@opentelemetry/sdk-trace-base@1.30.0(@opentelemetry/api@1.9.0): + resolution: {integrity: sha512-RKQDaDIkV7PwizmHw+rE/FgfB2a6MBx+AEVVlAHXRG1YYxLiBpPX2KhmoB99R5vA4b72iJrjle68NDWnbrE9Dg==} + engines: {node: '>=14'} + peerDependencies: + '@opentelemetry/api': '>=1.0.0 <1.10.0' + dependencies: + '@opentelemetry/api': 1.9.0 + '@opentelemetry/core': 1.30.0(@opentelemetry/api@1.9.0) + '@opentelemetry/resources': 1.30.0(@opentelemetry/api@1.9.0) + '@opentelemetry/semantic-conventions': 1.28.0 + dev: false + + /@opentelemetry/semantic-conventions@1.27.0: + resolution: {integrity: sha512-sAay1RrB+ONOem0OZanAR1ZI/k7yDpnOQSQmTMuGImUQb2y8EbSaCJ94FQluM74xoU03vlb2d2U90hZluL6nQg==} + engines: {node: '>=14'} + dev: false + + /@opentelemetry/semantic-conventions@1.28.0: + resolution: {integrity: sha512-lp4qAiMTD4sNWW4DbKLBkfiMZ4jbAboJIGOQr5DvciMRI494OapieI9qiODpOt0XBr1LjIDy1xAGAnVs5supTA==} + engines: {node: '>=14'} + dev: false + + /@opentelemetry/sql-common@0.40.1(@opentelemetry/api@1.9.0): + resolution: {integrity: sha512-nSDlnHSqzC3pXn/wZEZVLuAuJ1MYMXPBwtv2qAbCa3847SaHItdE7SzUq/Jtb0KZmh1zfAbNi3AAMjztTT4Ugg==} + engines: {node: '>=14'} + peerDependencies: + '@opentelemetry/api': ^1.1.0 + dependencies: + '@opentelemetry/api': 1.9.0 + '@opentelemetry/core': 1.30.0(@opentelemetry/api@1.9.0) + dev: false + /@pdf-lib/standard-fonts@1.0.0: resolution: {integrity: sha512-hU30BK9IUN/su0Mn9VdlVKsWBS6GyhVfqjwl1FjZN4TxP6cCw0jP2w7V3Hf5uX7M0AZJ16vey9yE0ny7Sa59ZA==} dependencies: @@ -5383,6 +5841,16 @@ packages: resolution: {integrity: sha512-P1st0aksCrn9sGZhp8GMYwBnQsbvAWsZAX44oXNNvLHGqAOcoVxmjZiohstwQ7SqKnbR47akdNi+uleWD8+g6A==} dev: false + /@prisma/instrumentation@5.22.0: + resolution: {integrity: sha512-LxccF392NN37ISGxIurUljZSh1YWnphO34V5a0+T7FVQG2u9bhAXRTJpgmQ3483woVhkraQZFF7cbRrpbw/F4Q==} + dependencies: + '@opentelemetry/api': 1.9.0 + '@opentelemetry/instrumentation': 0.53.0(@opentelemetry/api@1.9.0) + '@opentelemetry/sdk-trace-base': 1.30.0(@opentelemetry/api@1.9.0) + transitivePeerDependencies: + - supports-color + dev: false + /@puppeteer/browsers@2.3.0: resolution: {integrity: sha512-ioXoq9gPxkss4MYhD+SFaU9p1IHFUX0ILAWFPyjGaBdjLsYAlZw6j1iLA0N/m12uVHLFDfSYNF7EQccjinIMDA==} engines: {node: '>=18'} @@ -5439,15 +5907,6 @@ packages: '@sentry/utils': 7.101.1 dev: false - /@sentry-internal/tracing@7.118.0: - resolution: {integrity: sha512-dERAshKlQLrBscHSarhHyUeGsu652bDTUN1FK0m4e3X48M3I5/s+0N880Qjpe5MprNLcINlaIgdQ9jkisvxjfw==} - engines: {node: '>=8'} - dependencies: - '@sentry/core': 7.118.0 - '@sentry/types': 7.118.0 - '@sentry/utils': 7.118.0 - dev: false - /@sentry/browser@7.101.1: resolution: {integrity: sha512-+rIFoWPdO29AHVYsAwq8QEl2Ihv17Xh9Bt2aPFvLTGDA0caHjnx98g2jSOvLIOah6HI7Nwp3Njg2zBEzDtHkNw==} engines: {node: '>=8'} @@ -5469,33 +5928,70 @@ packages: '@sentry/utils': 7.101.1 dev: false - /@sentry/core@7.118.0: - resolution: {integrity: sha512-ol0xBdp3/K11IMAYSQE0FMxBOOH9hMsb/rjxXWe0hfM5c72CqYWL3ol7voPci0GELJ5CZG+9ImEU1V9r6gK64g==} - engines: {node: '>=8'} - dependencies: - '@sentry/types': 7.118.0 - '@sentry/utils': 7.118.0 - dev: false - - /@sentry/integrations@7.118.0: - resolution: {integrity: sha512-C2rR4NvIMjokF8jP5qzSf1o2zxDx7IeYnr8u15Kb2+HdZtX559owALR0hfgwnfeElqMhGlJBaKUWZ48lXJMzCQ==} - engines: {node: '>=8'} - dependencies: - '@sentry/core': 7.118.0 - '@sentry/types': 7.118.0 - '@sentry/utils': 7.118.0 - localforage: 1.10.0 - dev: false - - /@sentry/node@7.118.0: - resolution: {integrity: sha512-79N63DvYKkNPqzmc0cjO+vMZ/nU7+CbE3K3COQNiV7gk58+666G9mRZQJuZVOVebatq5wM5UR0G4LPkwD+J84g==} - engines: {node: '>=8'} - dependencies: - '@sentry-internal/tracing': 7.118.0 - '@sentry/core': 7.118.0 - '@sentry/integrations': 7.118.0 - '@sentry/types': 7.118.0 - '@sentry/utils': 7.118.0 + /@sentry/core@8.48.0: + resolution: {integrity: sha512-VGwYgTfLpvJ5LRO5A+qWo1gpo6SfqaGXL9TOzVgBucAdpzbrYHpZ87sEarDVq/4275uk1b0S293/mfsskFczyw==} + engines: {node: '>=14.18'} + dev: false + + /@sentry/node@8.48.0: + resolution: {integrity: sha512-pnprAuUOc8cxnJdZA09hutHXNsbQZoDgzf3zPyXMNx0ewB/RviFMOgfe7ViX1mIB/oVrcFenXBgO5uvTd7JwPg==} + engines: {node: '>=14.18'} + dependencies: + '@opentelemetry/api': 1.9.0 + '@opentelemetry/context-async-hooks': 1.30.0(@opentelemetry/api@1.9.0) + '@opentelemetry/core': 1.30.0(@opentelemetry/api@1.9.0) + '@opentelemetry/instrumentation': 0.56.0(@opentelemetry/api@1.9.0) + '@opentelemetry/instrumentation-amqplib': 0.45.0(@opentelemetry/api@1.9.0) + '@opentelemetry/instrumentation-connect': 0.42.0(@opentelemetry/api@1.9.0) + '@opentelemetry/instrumentation-dataloader': 0.15.0(@opentelemetry/api@1.9.0) + '@opentelemetry/instrumentation-express': 0.46.0(@opentelemetry/api@1.9.0) + '@opentelemetry/instrumentation-fastify': 0.43.0(@opentelemetry/api@1.9.0) + '@opentelemetry/instrumentation-fs': 0.18.0(@opentelemetry/api@1.9.0) + '@opentelemetry/instrumentation-generic-pool': 0.42.0(@opentelemetry/api@1.9.0) + '@opentelemetry/instrumentation-graphql': 0.46.0(@opentelemetry/api@1.9.0) + '@opentelemetry/instrumentation-hapi': 0.44.0(@opentelemetry/api@1.9.0) + '@opentelemetry/instrumentation-http': 0.56.0(@opentelemetry/api@1.9.0) + '@opentelemetry/instrumentation-ioredis': 0.46.0(@opentelemetry/api@1.9.0) + '@opentelemetry/instrumentation-kafkajs': 0.6.0(@opentelemetry/api@1.9.0) + '@opentelemetry/instrumentation-knex': 0.43.0(@opentelemetry/api@1.9.0) + '@opentelemetry/instrumentation-koa': 0.46.0(@opentelemetry/api@1.9.0) + '@opentelemetry/instrumentation-lru-memoizer': 0.43.0(@opentelemetry/api@1.9.0) + '@opentelemetry/instrumentation-mongodb': 0.50.0(@opentelemetry/api@1.9.0) + '@opentelemetry/instrumentation-mongoose': 0.45.0(@opentelemetry/api@1.9.0) + '@opentelemetry/instrumentation-mysql': 0.44.0(@opentelemetry/api@1.9.0) + '@opentelemetry/instrumentation-mysql2': 0.44.0(@opentelemetry/api@1.9.0) + '@opentelemetry/instrumentation-nestjs-core': 0.43.0(@opentelemetry/api@1.9.0) + '@opentelemetry/instrumentation-pg': 0.49.0(@opentelemetry/api@1.9.0) + '@opentelemetry/instrumentation-redis-4': 0.45.0(@opentelemetry/api@1.9.0) + '@opentelemetry/instrumentation-tedious': 0.17.0(@opentelemetry/api@1.9.0) + '@opentelemetry/instrumentation-undici': 0.9.0(@opentelemetry/api@1.9.0) + '@opentelemetry/resources': 1.30.0(@opentelemetry/api@1.9.0) + '@opentelemetry/sdk-trace-base': 1.30.0(@opentelemetry/api@1.9.0) + '@opentelemetry/semantic-conventions': 1.28.0 + '@prisma/instrumentation': 5.22.0 + '@sentry/core': 8.48.0 + '@sentry/opentelemetry': 8.48.0(@opentelemetry/api@1.9.0)(@opentelemetry/core@1.30.0)(@opentelemetry/instrumentation@0.56.0)(@opentelemetry/sdk-trace-base@1.30.0)(@opentelemetry/semantic-conventions@1.28.0) + import-in-the-middle: 1.12.0 + transitivePeerDependencies: + - supports-color + dev: false + + /@sentry/opentelemetry@8.48.0(@opentelemetry/api@1.9.0)(@opentelemetry/core@1.30.0)(@opentelemetry/instrumentation@0.56.0)(@opentelemetry/sdk-trace-base@1.30.0)(@opentelemetry/semantic-conventions@1.28.0): + resolution: {integrity: sha512-1JLXgmIvD3T7xn9ypwWW0V3GirNy4BN2fOUbZau/nUX/Jj5DttSoPn7x7xTaPSpfaA24PiP93zXmJEfZvCk00Q==} + engines: {node: '>=14.18'} + peerDependencies: + '@opentelemetry/api': ^1.9.0 + '@opentelemetry/core': ^1.29.0 + '@opentelemetry/instrumentation': ^0.56.0 + '@opentelemetry/sdk-trace-base': ^1.29.0 + '@opentelemetry/semantic-conventions': ^1.28.0 + dependencies: + '@opentelemetry/api': 1.9.0 + '@opentelemetry/core': 1.30.0(@opentelemetry/api@1.9.0) + '@opentelemetry/instrumentation': 0.56.0(@opentelemetry/api@1.9.0) + '@opentelemetry/sdk-trace-base': 1.30.0(@opentelemetry/api@1.9.0) + '@opentelemetry/semantic-conventions': 1.28.0 + '@sentry/core': 8.48.0 dev: false /@sentry/replay@7.101.1: @@ -5527,11 +6023,6 @@ packages: engines: {node: '>=8'} dev: false - /@sentry/types@7.118.0: - resolution: {integrity: sha512-2drqrD2+6kgeg+W/ycmiti3G4lJrV3hGjY9PpJ3bJeXrh6T2+LxKPzlgSEnKFaeQWkXdZ4eaUbtTXVebMjb5JA==} - engines: {node: '>=8'} - dev: false - /@sentry/utils@7.101.1: resolution: {integrity: sha512-Nrg0nrEI3nrOCd9SLJ/WGzxS5KMQE4cryLOvrDcHJRWpsSyGBF1hLLerk84Nsw/0myMsn7zTYU+xoq7idNsX5A==} engines: {node: '>=8'} @@ -5539,13 +6030,6 @@ packages: '@sentry/types': 7.101.1 dev: false - /@sentry/utils@7.118.0: - resolution: {integrity: sha512-43qItc/ydxZV1Zb3Kn2M54RwL9XXFa3IAYBO8S82Qvq5YUYmU2AmJ1jgg7DabXlVSWgMA1HntwqnOV3JLaEnTQ==} - engines: {node: '>=8'} - dependencies: - '@sentry/types': 7.118.0 - dev: false - /@signpdf/placeholder-pdf-lib@3.2.4(pdf-lib@1.17.1): resolution: {integrity: sha512-pNYzvLPWiHPir86pDWOK015S0whjNVvItvlTo9kwk1+99l2luIrwmubEvPjxSmDAWQ67UpKxA5lEYQsbZ7Q/og==} engines: {node: '>=12', yarn: '>=1.22.18'} @@ -6610,6 +7094,12 @@ packages: '@types/node': 20.11.19 dev: false + /@types/connect@3.4.36: + resolution: {integrity: sha512-P63Zd/JUGq+PdrM1lv0Wv5SBYeA2+CORvbrXbngriYY0jzLUWfQMQQxOhjONEz/wlHOAxOdY7CY65rgQdTjq2w==} + dependencies: + '@types/node': 20.11.19 + dev: false + /@types/connect@3.4.38: resolution: {integrity: sha512-K6uROf1LD88uDQqJCktA4yzL1YYAK6NgfsI0v/mTgyPKWsX1CnJ0XPSDhViejru1GcRkLWb8RlzFYJRqGUbaug==} dependencies: @@ -7137,6 +7627,12 @@ packages: '@types/node': 20.11.19 dev: false + /@types/mysql@2.15.26: + resolution: {integrity: sha512-DSLCOXhkvfS5WNNPbfn2KdICAmk8lLc+/PNvnPnF7gOdMZCxopXduqv0OQ13y/yA/zXTSikZZqVgybUxOEg6YQ==} + dependencies: + '@types/node': 20.11.19 + dev: false + /@types/node-fetch@2.6.11: resolution: {integrity: sha512-24xFj9R5+rfQJLRyM56qh+wnVSYhyXC2tkoBndtY0U+vubqNsYXGjufB2nn8Q6gt0LrARwL6UBtMCSVCwl4B1g==} dependencies: @@ -7219,6 +7715,20 @@ packages: - worker-loader dev: false + /@types/pg-pool@2.0.6: + resolution: {integrity: sha512-TaAUE5rq2VQYxab5Ts7WZhKNmuN78Q6PiFonTDdpbx8a1H0M1vhy3rhiMjl+e2iHmogyMw7jZF4FrE6eJUy5HQ==} + dependencies: + '@types/pg': 8.6.1 + dev: false + + /@types/pg@8.6.1: + resolution: {integrity: sha512-1Kc4oAGzAl7uqUStZCDvaLFqZrW9qWSjXOmBfdgyBP5La7Us6Mg4GBvRlSoaZMhQF/zSj1C8CtKMBkoiT8eL8w==} + dependencies: + '@types/node': 20.11.19 + pg-protocol: 1.7.0 + pg-types: 2.2.0 + dev: false + /@types/plist@3.0.5: resolution: {integrity: sha512-E6OCaRmAe4WDmWNsL/9RMqdkkzDCY1etutkflWk4c+AcjDU07Pcz1fQwTX0TQz+Pxqn9i4L1TU3UFpjnrcDgxA==} requiresBuild: true @@ -7303,6 +7813,10 @@ packages: sharp: 0.32.6 dev: false + /@types/shimmer@1.2.0: + resolution: {integrity: sha512-UE7oxhQLLd9gub6JKIAhDq06T0F6FnztwMNRvYgjeQSBeMc1ZG/tA47EwfduvkuQS8apbkM/lpLpWsaCeYsXVg==} + dev: false + /@types/snappyjs@0.7.1: resolution: {integrity: sha512-OxjzJ6cQZstysMh6PEwZWmK9qlKZyezHJKOkcUkZDooSFuog2votUEKkxMaTq51UQF3cJkXKQ+XGlj4FSl8JQQ==} dev: false @@ -7331,6 +7845,12 @@ packages: '@types/node': 20.11.19 dev: false + /@types/tedious@4.0.14: + resolution: {integrity: sha512-KHPsfX/FoVbUGbyYvk1q9MMQHLPeRZhRJZdO45Q4YjvFkv4hMNghCWTvy7rdKessBsmtz4euWCWAB6/tVpI1Iw==} + dependencies: + '@types/node': 20.11.19 + dev: false + /@types/toposort@2.0.7: resolution: {integrity: sha512-sQNk65vbC36+UixCkcky+dCr7MlflHcVILg1FVGqlUntsLFv9xd9ToWIVko/gTuin+cVe16t+2YubEFkhnSuPQ==} dev: false @@ -8184,6 +8704,14 @@ packages: acorn-walk: 8.3.2 dev: false + /acorn-import-attributes@1.9.5(acorn@8.14.0): + resolution: {integrity: sha512-n02Vykv5uA3eHGM/Z2dQrcD56kL8TyDb2p1+0P83PClMnC/nc+anbQRhIOWnSq4Ke/KvDPrY3C9hDtC/A3eHnQ==} + peerDependencies: + acorn: ^8 + dependencies: + acorn: 8.14.0 + dev: false + /acorn-jsx@5.3.2(acorn@8.11.3): resolution: {integrity: sha512-rq9s+JNhf0IChjtDXxllJ7g41oZk5SlXtp0LHwyA5cejwn7vKmKp4pPri6YEePv2PU65sAsegbXtIinmDFDXgQ==} peerDependencies: @@ -13848,6 +14376,15 @@ packages: resolve-from: 4.0.0 dev: false + /import-in-the-middle@1.12.0: + resolution: {integrity: sha512-yAgSE7GmtRcu4ZUSFX/4v69UGXwugFFSdIQJ14LHPOPPQrWv8Y7O9PHsw8Ovk7bKCLe4sjXMbZFqGFcLHpZ89w==} + dependencies: + acorn: 8.14.0 + acorn-import-attributes: 1.9.5(acorn@8.14.0) + cjs-module-lexer: 1.2.3 + module-details-from-path: 1.0.3 + dev: false + /import-local@3.1.0: resolution: {integrity: sha512-ASB07uLtnDs1o6EHjKpX34BKYDSqnFerfTOJL2HvMqF70LnxpjkzDB8J44oT9pu4AMPkQwf8jl6szgvNd2tRIg==} engines: {node: '>=8'} @@ -15450,12 +15987,6 @@ packages: resolution: {integrity: sha512-d0GdKshNnyfl5gM7kZ9rXjGiAbxT/zCXp0k+EAzh8H4zrb2R7GXtMCrULrX7UQxtfx6CLy/vz/lomvW79FAFdA==} dev: false - /lie@3.1.1: - resolution: {integrity: sha512-RiNhHysUjhrDQntfYSfY4MU24coXXdEOgw9WGcKHNeEwffDYbF//u87M1EWaMGzuFoSbqW0C9C6lEEhDOAswfw==} - dependencies: - immediate: 3.0.6 - dev: false - /lie@3.3.0: resolution: {integrity: sha512-UaiMJzeWRlEujzAuw5LokY1L5ecNQYZKfmyZ9L7wDHb/p5etKaxXhohBcrw0EYby+G/NA52vRSN4N39dxHAIwQ==} dependencies: @@ -15569,12 +16100,6 @@ packages: pkg-types: 1.2.1 dev: false - /localforage@1.10.0: - resolution: {integrity: sha512-14/H1aX7hzBBmmh7sGPd+AOMkkIrHM3Z1PAyGgZigA1H1p5O5ANnMyWzvpAETtG68/dC4pC0ncy3+PPGzXZHPg==} - dependencies: - lie: 3.1.1 - dev: false - /locate-character@3.0.0: resolution: {integrity: sha512-SW13ws7BjaeJ6p7Q6CO2nchbYEc3X3J6WrmTTDto7yMPqVSZTUyY5Tjbid+Ab8gLnATtygYtiDIJGQRRn2ZOiA==} dev: false @@ -17423,6 +17948,26 @@ packages: is-reference: 3.0.2 dev: false + /pg-int8@1.0.1: + resolution: {integrity: sha512-WCtabS6t3c8SkpDBUlb1kjOs7l66xsGdKpIPZsg4wR+B3+u9UAum2odSsF9tnvxg80h4ZxLWMy4pRjOsFIqQpw==} + engines: {node: '>=4.0.0'} + dev: false + + /pg-protocol@1.7.0: + resolution: {integrity: sha512-hTK/mE36i8fDDhgDFjy6xNOG+LCorxLG3WO17tku+ij6sVHXh1jQUJ8hYAnRhNla4QVD2H8er/FOjc/+EgC6yQ==} + dev: false + + /pg-types@2.2.0: + resolution: {integrity: sha512-qTAAlrEsl8s4OiEQY69wDvcMIdQN6wdz5ojQiOy6YRMuynxenON0O5oCpJI6lshc6scgAY8qvJ2On/p+CXY0GA==} + engines: {node: '>=4'} + dependencies: + pg-int8: 1.0.1 + postgres-array: 2.0.0 + postgres-bytea: 1.0.0 + postgres-date: 1.0.7 + postgres-interval: 1.2.0 + dev: false + /phin@2.9.3: resolution: {integrity: sha512-CzFr90qM24ju5f88quFC/6qohjC144rehe5n6DH900lgXmUe86+xCKc10ev56gRKC4/BkHUoG4uSiQgBiIXwDA==} deprecated: Package no longer supported. Contact Support at https://www.npmjs.com/support for more info. @@ -17710,6 +18255,28 @@ packages: source-map-js: 1.0.2 dev: false + /postgres-array@2.0.0: + resolution: {integrity: sha512-VpZrUqU5A69eQyW2c5CA1jtLecCsN2U/bD6VilrFDWq5+5UIEVO7nazS3TEcHf1zuPYO/sqGvUvW62g86RXZuA==} + engines: {node: '>=4'} + dev: false + + /postgres-bytea@1.0.0: + resolution: {integrity: sha512-xy3pmLuQqRBZBXDULy7KbaitYqLcmxigw14Q5sj8QBVLqEwXfeybIKVWiqAXTlcvdvb0+xkOtDbfQMOf4lST1w==} + engines: {node: '>=0.10.0'} + dev: false + + /postgres-date@1.0.7: + resolution: {integrity: sha512-suDmjLVQg78nMK2UZ454hAG+OAW+HQPZ6n++TNDUX+L0+uUlLywnoxJKDou51Zm+zTCjrCl0Nq6J9C5hP9vK/Q==} + engines: {node: '>=0.10.0'} + dev: false + + /postgres-interval@1.2.0: + resolution: {integrity: sha512-9ZhXKM/rw350N1ovuWHbGxnGh/SNJ4cnxHiM0rxE4VN41wsg8P8zWn9hv/buK00RP4WvlOyr/RBDiptyxVbkZQ==} + engines: {node: '>=0.10.0'} + dependencies: + xtend: 4.0.2 + dev: false + /postgres@3.4.5: resolution: {integrity: sha512-cDWgoah1Gez9rN3H4165peY9qfpEo+SA61oQv65O3cRUE1pOEoJWwddwcqKE8XZYjbblOJlYDlLV4h67HrEVDg==} engines: {node: '>=12'} @@ -18388,6 +18955,17 @@ packages: - supports-color dev: false + /require-in-the-middle@7.4.0: + resolution: {integrity: sha512-X34iHADNbNDfr6OTStIAHWSAvvKQRYgLO6duASaVf7J2VA3lvmNYboAHOuLC2huav1IwgZJtyEcJCKVzFxOSMQ==} + engines: {node: '>=8.6.0'} + dependencies: + debug: 4.4.0 + module-details-from-path: 1.0.3 + resolve: 1.22.8 + transitivePeerDependencies: + - supports-color + dev: false + /require-main-filename@1.0.1: resolution: {integrity: sha512-IqSUtOVP4ksd1C/ej5zeEh/BIP2ajqpn8c5x+q99gvcIG/Qf0cud5raVnE/Dwd0ua9TXYDoDc0RE5hBSdz22Ug==} dev: false @@ -18974,6 +19552,10 @@ packages: resolution: {integrity: sha512-6j1W9l1iAs/4xYBI1SYOVZyFcCis9b4KCLQ8fgAGG07QvzaRLVVRQvAy85yNmmZSjYjg4MWh4gNvlPujU/5LpA==} dev: false + /shimmer@1.2.1: + resolution: {integrity: sha512-sQTKC1Re/rM6XyFM6fIAGHRPVGvyXfgzIDvzoq608vM+jeyVD0Tu1E6Np0Kc2zAIFWIj963V2800iF/9LPieQw==} + dev: false + /side-channel@1.0.5: resolution: {integrity: sha512-QcgiIWV4WV7qWExbN5llt6frQB/lBven9pqliLXfGPB+K9ZYXxDozp0wLkHS24kWCm+6YXH/f0HhnObZnZOBnQ==} engines: {node: '>= 0.4'} @@ -22305,12 +22887,12 @@ packages: dev: false file:projects/analytics-service.tgz(@types/node@20.11.19)(esbuild@0.24.2)(ts-node@10.9.2): - resolution: {integrity: sha512-CNOxEi0TSwyscgxa3iTdWPASgNS0YwNXfS5L52nmlmi+Y2OH7N4wwOXS0BKyEuqYYkSMsEMArPfB5xYaYoNkJw==, tarball: file:projects/analytics-service.tgz} + resolution: {integrity: sha512-kn7RI7Ond+5WgSpbx0UYahB2U8lrtTMZuZPvmvVOfvvXCtbNrNxT1vK1bkUip01jBM+lrdRAi8/z2CmCU65UJw==, tarball: file:projects/analytics-service.tgz} id: file:projects/analytics-service.tgz name: '@rush-temp/analytics-service' version: 0.0.0 dependencies: - '@sentry/node': 7.118.0 + '@sentry/node': 8.48.0 '@types/jest': 29.5.12 '@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) diff --git a/packages/analytics-service/package.json b/packages/analytics-service/package.json index 67e660cf8c..e46bc98ca8 100644 --- a/packages/analytics-service/package.json +++ b/packages/analytics-service/package.json @@ -43,7 +43,7 @@ "@hcengineering/analytics": "^0.6.0", "winston": "^3.11.0", "winston-daily-rotate-file": "^5.0.0", - "@sentry/node": "^7.103.0" + "@sentry/node": "^8.48.0" }, "repository": "https://github.com/hcengineering/platform", "publishConfig": { diff --git a/server/middleware/src/model.ts b/server/middleware/src/model.ts index 5e6ee6736a..2a40ef3613 100644 --- a/server/middleware/src/model.ts +++ b/server/middleware/src/model.ts @@ -34,20 +34,22 @@ import type { import { BaseMiddleware } from '@hcengineering/server-core' import crypto from 'node:crypto' +const isUserTx = (it: Tx): boolean => + it.modifiedBy !== core.account.System || + (it as TxCUD).objectClass === 'contact:class:Person' || + (it as TxCUD).objectClass === 'contact:class:PersonAccount' + /** * @public */ export class ModelMiddleware extends BaseMiddleware implements Middleware { - hashes!: Map // Hash to position lastHash: string = '' lastHashResponse!: Promise - model!: Tx[] constructor ( context: PipelineContext, next: Middleware | undefined, - readonly systemTx: Tx[], - readonly holdModel: boolean = true + readonly systemTx: Tx[] ) { super(context, next) } @@ -57,107 +59,88 @@ export class ModelMiddleware extends BaseMiddleware implements Middleware { ctx: MeasureContext, context: PipelineContext, next: Middleware | undefined, - systemTx: Tx[], - holdModel: boolean = true + systemTx: Tx[] ): Promise { - const middleware = new ModelMiddleware(context, next, systemTx, holdModel) + const middleware = new ModelMiddleware(context, next, systemTx) await middleware.init(ctx) return middleware } - static create (tx: Tx[], holdModel: boolean = true): MiddlewareCreator { + static create (tx: Tx[]): MiddlewareCreator { return (ctx, context, next) => { - return this.doCreate(ctx, context, next, tx, holdModel) + return this.doCreate(ctx, context, next, tx) } } + @withContext('get-model') + async getUserTx (ctx: MeasureContext, txAdapter: TxAdapter): Promise { + const allUserTxes = await ctx.with('fetch-model', {}, (ctx) => txAdapter.getModel(ctx)) + return allUserTxes.filter((it) => isUserTx(it)) + } + async init (ctx: MeasureContext): Promise { if (this.context.adapterManager == null) { throw new PlatformError(unknownError('Adapter manager should be configured')) } const txAdapter = this.context.adapterManager.getAdapter(DOMAIN_TX, true) as TxAdapter - const isUserTx = (it: Tx): boolean => - it.modifiedBy !== core.account.System || - (it as TxCUD).objectClass === 'contact:class:Person' || - (it as TxCUD).objectClass === 'contact:class:PersonAccount' - - this.model = await ctx.with('get-model', {}, async (ctx) => { - const allUserTxes = await ctx.with('fetch-model', {}, (ctx) => txAdapter.getModel(ctx)) - const userTxes = allUserTxes.filter((it) => isUserTx(it)) - const model = this.systemTx.concat(userTxes) - for (const tx of model) { - try { - this.context.hierarchy.tx(tx) - } catch (err: any) { - ctx.warn('failed to apply model transaction, skipping', { tx: JSON.stringify(tx), err }) - } - } - this.context.modelDb.addTxes(ctx, model, true) - if (this.holdModel) { - return model + const userTx = await this.getUserTx(ctx, txAdapter) + const model = this.systemTx.concat(userTx) + for (const tx of model) { + try { + this.context.hierarchy.tx(tx) + } catch (err: any) { + ctx.warn('failed to apply model transaction, skipping', { tx: JSON.stringify(tx), err }) } - return [] - }) + } + this.context.modelDb.addTxes(ctx, model, true) - this.setModel(this.model) + this.setModel(model) } private addModelTx (tx: Tx): void { - if (this.holdModel) { - this.model.push(tx) - const h = crypto.createHash('sha1') - h.update(this.lastHash) - h.update(JSON.stringify(tx)) - const hash = h.digest('hex') - this.hashes.set(hash, this.model.length - 1) - this.setLastHash(hash) - } + const h = crypto.createHash('sha1') + h.update(this.lastHash) + h.update(JSON.stringify(tx)) + const hash = h.digest('hex') + this.setLastHash(hash) } private setLastHash (hash: string): void { this.lastHash = hash this.context.lastHash = this.lastHash - this.lastHashResponse = Promise.resolve({ - full: false, - hash, - transactions: [] - }) } private setModel (model: Tx[]): void { let last = '' - const values: [string, number][] = model.map((it, index) => { + model.map((it, index) => { const h = crypto.createHash('sha1') h.update(last) h.update(JSON.stringify(it)) last = h.digest('hex') return [last, index] }) - this.hashes = new Map(values) this.setLastHash(last) } - loadModel (ctx: MeasureContext, lastModelTx: Timestamp, hash?: string): Promise { + async loadModel (ctx: MeasureContext, lastModelTx: Timestamp, hash?: string): Promise { if (hash !== undefined) { if (hash === this.lastHash) { - return this.lastHashResponse - } - const pos = this.hashes.get(hash) - if (pos != null && pos >= 0) { - return Promise.resolve({ + return { full: false, - hash: this.lastHash, - transactions: this.model.slice(pos + 1) - }) + hash, + transactions: [] + } } - return Promise.resolve({ + const txAdapter = this.context.adapterManager?.getAdapter(DOMAIN_TX, true) as TxAdapter + return { full: true, hash: this.lastHash, - transactions: [...this.model] - }) + transactions: this.systemTx.concat(await this.getUserTx(ctx, txAdapter)) + } } - return Promise.resolve(this.model.filter((it) => it.modifiedOn > lastModelTx)) + const txAdapter = this.context.adapterManager?.getAdapter(DOMAIN_TX, true) as TxAdapter + return this.systemTx.concat(await this.getUserTx(ctx, txAdapter)).filter((it) => it.modifiedOn > lastModelTx) } tx (ctx: MeasureContext, tx: Tx[]): Promise { diff --git a/server/postgres/src/storage.ts b/server/postgres/src/storage.ts index ba02249c4f..949847bcb4 100644 --- a/server/postgres/src/storage.ts +++ b/server/postgres/src/storage.ts @@ -743,6 +743,8 @@ abstract class PostgresAdapterBase implements DbAdapter { if (column === 'createdOn' || column === 'modifiedOn') { const val = Number.parseInt(row[column]) ;(doc as any)[column] = Number.isNaN(val) ? null : val + } else if (column === '%hash%') { + // Ignore } else { ;(doc as any)[column] = row[column] === 'NULL' ? null : row[column] } @@ -1285,6 +1287,22 @@ abstract class PostgresAdapterBase implements DbAdapter { return [] } + stripHash(docs: T | T[]): T | T[] { + if (Array.isArray(docs)) { + docs.forEach((it) => { + if ('%hash%' in it) { + delete it['%hash%'] + } + return it + }) + } else if (typeof docs === 'object' && docs != null) { + if ('%hash%' in docs) { + delete docs['%hash%'] + } + } + return docs + } + strimSize (str?: string): string { if (str == null) { return '' @@ -1841,7 +1859,7 @@ class PostgresTxAdapter extends PostgresAdapterBase implements TxAdapter { const userTx: Tx[] = [] model.forEach((tx) => (tx.modifiedBy === core.account.System && !isPersonAccount(tx) ? systemTx : userTx).push(tx)) - return systemTx.concat(userTx) + return this.stripHash(systemTx.concat(userTx)) as Tx[] } } /** diff --git a/server/postgres/src/utils.ts b/server/postgres/src/utils.ts index 6d190e9d93..8a62c83585 100644 --- a/server/postgres/src/utils.ts +++ b/server/postgres/src/utils.ts @@ -475,7 +475,7 @@ export function parseDocWithProjection ( domain: string, projection?: Projection | undefined ): T { - const { workspaceId, data, ...rest } = doc + const { workspaceId, data, '%hash%': hash, ...rest } = doc const schema = getSchema(domain) for (const key in rest) { if ((rest as any)[key] === 'NULL' || (rest as any)[key] === null) { diff --git a/server/server/src/sessionManager.ts b/server/server/src/sessionManager.ts index 9686203d69..2aa507102e 100644 --- a/server/server/src/sessionManager.ts +++ b/server/server/src/sessionManager.ts @@ -248,6 +248,7 @@ class TSessionManager implements SessionManager { this.ctx.warn('request hang found', { sec, wsId, + total: s[1].session.requests.size, user: s[1].session.getUser(), ...cutObjectArray(r.params) }) @@ -506,7 +507,9 @@ class TSessionManager implements SessionManager { private updateConnectErrorInfo (token: Token): void { this.clientErrors++ - this.lastClients = [token.email, ...this.lastClients.slice(0, 9)] + if (!this.lastClients.includes(token.email)) { + this.lastClients = [token.email, ...this.lastClients.slice(0, 9)] + } } private wsFromToken (token: Token): WorkspaceLoginInfo {